Jet-not-Jet
Программа для расчета положения и скоростей объектов при реактивном и "нереактивном" разделении компонентов.
Полный расчет можно скачать здесь
| > | restart; |
| > | with(plots): |
Warning, the name changecoords has been redefined
| > |
Объявление процедуры.
Параметр n - количество "дробинок"
Процедура для системы с центрифугой
| > | Non_jet:=proc(n) # |
Объявление глобальных переменных.
| > | global w,r,V,S,Vc,Sc,DD,DS,VDS,f,dt,Time,CMc,CM,MVc1,MVc2; |
w - угловая скорость вращения, const;
r - радиус, по которому движутся элементы системы;
V - таблица значений абсолютных скоростей отдельных дробинок после отделения;
S -таблица значений расстояний: от начала координат до положения дробинки по завершении всего цикла.
Vc -таблица значений скоростей ЦМ остатка.
Sc -таблица значений расстояний: от начала координат до ЦМ остатка.
DS -таблица значений расстояний: от ЦМ остатка до оси вращения, т.е до точки отделения частицы, так называемая величина "Delta";
DD -таблица значений "дельта дельты": отскок ЦМ остатка при отделении одной элементарной частицы;
VDS -таблица значений скоростей. Относительная скорость смещения оси вращения (т.е точки отделения частицы), относительно ЦМ остатка .;
f -таблица значений углов;
dt -интервал времени между отделениями частиц
Time -таблица значений времен. Совершенно простая и необязательная, но удобна при организации графика;
CMc -таблица значений положения ЦМ всей системы;
CM -таблица значений ЦМ "цепочки" отделившихся частиц в каждый момент времени;
MVc1 и MVc2 -таблицы значений импульсов "остатка" до отделения элементарной частицы и после.
Разница между этими значениями аналогична величине DD. Только это "скачок" импульса остатка, т.е. та величина, что и заставляет двигаться остаток.
dt -интервал времени между отделениями частиц.
Определяется, как деление всего времени (2Pi/w) на число элементарных частиц (n)
| > | dt:=2*Pi/(w*n); |
| > | m1:=M1c/n; |
| > |
| > |
Заполнение Time -таблицы значений времен. Совершенно простая и необязательная, но удобна при организации графика;
| > | for i from 0 to n do |
| > | Time[i]:=dt*i; |
| > | end do; |
Заполнение f -таблицы значений углов
| > | f[0]:=0; |
| > | df:=2*Pi/n; |
| > | for i from 1 to n do |
| > | f[i]:=i*df; |
| > | end do; |
| > |
Таблица суммарного импульса остатка до отделения
| > | MVc1[0]:=0; |
| > | for i from 1 to n do |
| > | MVc1[i]:=(m1*w*r*sum(cos(f[k]),k=i..n)); |
| > | end do; |
| > |
Таблица суммарного импульса остатка после отделения
| > | MVc2[0]:=0; |
| > | for i from 1 to n do |
| > | MVc2[i]:=(m1*w*r*sum(cos(f[k]),k=i..n-1)); |
| > | end do; |
| > |
Заполнение DS -таблицы значений расстояний: от ЦМ остатка до оси вращения M0, т.е до точки отделения частицы
| > | DS[0]:=0; |
| > | for i from 1 to n do |
| > | DS[i]:=-r*m1*sum(sin(f[k]),k=i..n)/(M0+m1*(n-i)); |
| > | end do; |
| > |
Скорость изменения величины DS в момент предшествующий отделению i-ой дробинки
| > | VDS[0]:=0; |
| > | for i from 1 to n do |
| > | VDS[i]:=-r*m1*w*sum(cos(f[k]),k=i..n)/(M0+m1*(n-i)); |
| > | end do; |
Дельта дельты :)
| > | DD[0]:=0; |
| > | for i from 1 to n do |
| > | DD[i]:=-r*m1*sum(sin(f[k]),k=i..n-1)/(M0+m1*(n-i))+r*m1*sum(sin(f[k]),k=i..n)/(M0+m1*(n-i+1)); |
| > | end do; |
| > |
| > |
Стартовые значения
| > |
| > | V[0]:=0;Vc[0]:=0;Sc[0]:=0;S[0]:=0; CMc[0]:=0; CM[0]:=0; |
| > |
Цикл заполнения V[i],S[i],Vc[i],Sc[i],CM[i],CMc[i]
| > | for i from 1 to n do |
| > |
Скорость дробинки.
| > | V[i]:=Vc[i-1]+VDS[i-1]+w*r; |
Расстояние, пройденное дробинкой
| > | S[i]:=Sc[i-1]+DS[i-1]+V[i]*(n-i)*dt; |
Скорость остатка.
| > | Vc[i]:=(Vc[i-1]*(M0+m1*(n-i+1))-m1*V[i])/(M0+m1*(n-i)); |
| > |
Координаты центра масс остатка!
| > | Sc[i]:=Sc[i-1]+DD[i-1]+Vc[i]*dt; |
| > |
Координаты центра масс дробинок!
Вычисление должно быть похоже на вычисление S[i]
| > | CM[i]:=sum(Sc[k-1]+DS[k-1]+V[k]*(i-k+1)*dt,k=1..i)/i; |
Координаты центра масс всей системы!
| > | CMc[i]:=(m1*i*CM[i]+(M0+m1*(n-i))*Sc[i])/(M0+m1*n); |
| > | end; |
| > |
конец процедуры
| > | end: |
| > |
| > |
Warning, `m1` is implicitly declared local to procedure `Non_jet`
Warning, `i` is implicitly declared local to procedure `Non_jet`
Warning, `df` is implicitly declared local to procedure `Non_jet`
| > |
| > |
| > |
| > |
Объявление процедуры Jet - расчет для системы с реактивным отделением
Здесь все, практически, то же самое.
Величины такие же, помечены буквой "j".
Разумеется, отсутствуют величины: DD, DS, VDS.
| > | Jet:=proc(n) |
| > | global Vj,Sj,Vcj,Scj,dt,CMcj,CMj; |
| > |
| > |
| > | dt:=2*Pi/(w*n); |
| > | m1:=M1c/n; |
| > |
| > | Vj[0]:=0;Vcj[0]:=0;Scj[0]:=0;Sj[0]:=0;CMcj[0]:=0; CMj[0]:=0; |
| > |
Цикл заполнения Vj[i],Sj[i],Vcj[i],Scj[i],CMj[i],CMcj[i]
| > | for i from 1 to n do |
Скорость дробинки.
| > | Vj[i]:=Vcj[i-1]+w*r; |
Расстояние, пройденное дробинкой
| > | Sj[i]:=Scj[i-1]+Vj[i]*(n-i)*dt; |
Скорость ЦМ остатка .
Я просто беру суммарный импульс летящих дробинок. Импульс остатка равен этой величине.
Делим на массу - получаем скорость!
| > | Vcj[i]:=-(m1*sum(Vj[k],k=1..i))/(M0+m1*(n-i)); |
| > |
Координаты Центра Масс остатка!
| > | Scj[i]:=Scj[i-1]+Vcj[i]*dt; |
Координаты Центра Масс дробинок!
| > | CMj[i]:=sum(Scj[k-1]+Vj[k]*dt*(i-k+1),k=1..i)/i; |
Центр масс всей системы!
| > | CMcj[i]:=(m1*i*CMj[i]+(M0+m1*(n-i))*Scj[i])/(M0+m1*n); |
| > | end; |
| > |
| > | end:#конец процедуры Jet |
Warning, `m1` is implicitly declared local to procedure `Jet`
Warning, `i` is implicitly declared local to procedure `Jet`
| > |
| > |
Начало расчета
| > |
| > |
| > |
Количество "дробинок"
| > | n:=4; |
| > |
| > |
| > | Non_jet(n): |
| > |
| > |
| > | Time[j] $j=0..n: |
| > | f[j] $j=0..n: |
| > | DS[j] $j=0..n: |
| > | VDS[j] $j=0..n: |
| > | DD[j] $j=0..n: |
| > | V[j] $j=0..n: |
| > | S[j] $j=0..n: |
| > | Vc[j] $j=0..n: |
| > | Sc[j] $j=0..n: |
| > | CM[j] $j=0..n: |
| > | CMc[j] $j=0..n: |
| > |
| > | Jet(n): |
| > | Vj[j] $j=0..n: |
| > | Sj[j] $j=0..n: |
| > | Vcj[j] $j=0..n: |
| > | Scj[j] $j=0..n: |
| > | CMj[j] $j=0..n: |
| > | CMcj[j] $j=0..n: |
"оцифровка" переменных.
Необходима для построения графиков
r -радиус центрифуги
w -угловая скорость вращения центрифуги
M1c -суммарная масса дробинок, находящихся в каждой системе
M0 -масса пустого корпуса каждой системы
| > | w:=w;M1c:=4; M0:=M1c/n; |
| > |
| > | Time[j] $j=0..n; |
| > | f[j] $j=0..n; |
| > | DS[j] $j=0..n; |
| > | VDS[j] $j=0..n; |
| > | DD[j] $j=0..n; |
| > | V[j] $j=0..n; |
| > | S[j] $j=0..n; |
| > | Vc[j] $j=0..n; |
| > | Sc[j] $j=0..n; |
| > | CM[j] $j=0..n; |
| > | CMc[j] $j=0..n; |
| > |
Реактивное:
| > | Vj[j] $j=0..n; |
| > | Sj[j] $j=0..n; |
| > | Vcj[j] $j=0..n; |
| > | Scj[j] $j=0..n; |
| > | CMj[j] $j=0..n; |
| > | CMcj[j] $j=0..n; |
| > |
Десятикратное:::
| > | w:=w;M1c:=4; M0:=10*M1c/n; |
| > |
| > | DS[j] $j=0..n; |
| > | VDS[j] $j=0..n; |
| > | DD[j] $j=0..n; |
| > | V[j] $j=0..n; |
| > | S[j] $j=0..n; |
| > | Vc[j] $j=0..n; |
| > | Sc[j] $j=0..n; |
| > | CM[j] $j=0..n; |
| > | CMc[j] $j=0..n; |
| > |
Реактивное:
| > | Vj[j] $j=0..n; |
| > | Sj[j] $j=0..n; |
| > | Vcj[j] $j=0..n; |
| > | Scj[j] $j=0..n; |
| > | CMj[j] $j=0..n; |
| > | CMcj[j] $j=0..n; |
| > |
Продолжение оцифровки: :)
| > | w:=1;r:=1; |
| > |
Результаты расчетов :
| > |
| > | #================================================================================================= |
Графики относительных смещений "Дельта" и "Дельта-дельты"
| > | PDD:=[[Time[i],DD[i]] $i=0..n]: # набор для графика DD (дельта дельты) |
| > | PDS:=[[Time[i],DS[i]] $i=0..n]:# набор для графика DS (дельты) |
| > | plot(PDD,x=0..2*Pi/w,title="Дельта дельты"); |
| > | plot([PDS,PDD],x=0..2*Pi/w,title="Большая кривая - смещение 'дельта', малая - 'дельта дельты', ",axes=frame,legend=["дельта DS","дельта дельты DD"]); |
В первом полупериоде, расстояние DS положительно и возрастает.
| > |
| > |
| > |
| > | #================================================================================================= |
График относительной скорости перемещения оси вращения (точки отделения дробинок) относительно ЦМ остатка .
| > | PVDS:=[[Time[i],VDS[i]] $i=0..n]:# набор для графика относительной скорости VDS |
| > | plot(PVDS,t=0..2*Pi/w); |
| > |
В первом полупериоде, скорость VDS положительна.
И направление совпадает с направлением движения оторвавшейся дробинки!
| > |
| > |
| > |
| > | #================================================================================================= |
Sc и Scj - координаты ЦМ "остатка". Данный график иллюстрирует изменение этих координат со временем.
| > | PScj:=[[Time[i],Scj[i]] $i=0..n]:# набор для графика положения ЦМ остатка при реактивном движ. |
| > | PSc:=[[Time[i],Sc[i]] $i=0..n]:# набор для графика того же самого для центрифуги. |
| > | plot([PSc,PScj],t=0..2*Pi/w,title="Перемещение ЦМ остатков",legend=["ЦМ остатка центриф","ЦМ остатка реактив"]); |
Графики совпадают
| > |
| > |
| > | #================================================================================================ |
График "цепочек" дробинок, т.е. положение дробинок в момент окончания цикла.
| > | PSj:=[[Sj[n-j],j] $j=0..n-1]:# набор для графика положения дробинок (реактивное движ) |
| > | PS:=[[S[n-j],j] $j=0..n-1]:# набор для графика положения дробинок (центрифуга) |
| > | plot([PS,PSj,PS,PSj],s=S[n]..S[1],title="Положение дробинок в момент окончания цикла.( Временной срез)", labels=["расстояние от точки старта в момент времени t=2Pi/w","Номер дробинки"],legend=["цепочка от центрифуги","цепочка от реактив"," "," "],style=[line,line,point,point],color=[red,blue,red,blue],symbol=circle,symbolsize=5); |
| > |
| > |
| > |
| > |
На графике виден явный "горб".
| > |
| > |
| > | #================================================================================================ |
Графики перемещения Центров масс всех компонентов систем
| > |
| > | PCMj:=[[Time[j],CMj[j]] $j=0..n]:# набор для графика Центра масс цепочек дробинок при "обычном" реактивном. |
| > | PCM:=[[Time[j],CM[j]] $j=0..n]:# набор для графика того же самого для центрифуги |
| > |
| > | plot([PSc,PScj,PCM,PCMj],t=0..2*Pi/w,title="Нижняя часть графика-перемещение ЦМ остатка,верхняя- перемещение ЦМ цепочки дробинок",legend=["ЦМ остатка центрифуги","ЦМ остатка реактив","ЦМ шлейфа центриф","ЦМ шлейфа реактив"],color=[red,green,brown,blue]); |
Две кривые в нижней части графика совпадают.
Это графики перемещения Центров Масс корпусов с остатками груза.
| > |
| > | #================================================================================================ |
| > |
Этот график - "верхняя часть" предыдущего графика, где собраны 4 кривые.
| > |
Подчеркну: CM и CMj - это именно центры масс цепочек дробинок в каждый момент времени.
| > | plot([PCM,PCMj],t=0..2*Pi/w,title="Перемещения ЦМ дробинок в течение рабочего периода",legend=["ЦМ шлейфа выброса центрифуги","ЦМ шлейфа выброса реактив"]); |
| > |
| > | #================================================================================================ |
Специальное построение графика,на котором видно изменение плотности распределения частиц груза в цепочках выброса.
| > | PSj:=[[Sj[n-j],0] $j=0..n-1]:# набор для условного графика реактив. |
| > | PS:=[[S[n-j],0.1] $j=0..n-1]:# набор для условного графика центриф. |
| > | plot([PS,PSj,[[0,1],[S[1],1]],[[0,-1],[S[1],-1]]],S=0..S[1],title="Визуализация распределения дробинок в цепочке",style=point,axes=none,scaling=unconstrained,legend=["центрифуга","реактив","_","_"],color=[red,blue,white,white],symbol=circle,symbolsize=5);# |
| > |
| > | #================================================================================================ |
График траекторий дробинок
DS[0] DS -таблицы значений расстояний: от ЦМ остатка до оси вращения M0, т.е до точки отделения частицы
Sc[i] Координаты центра масс остатка!
S[i] Расстояние, пройденное дробинкой
| > | PScDs:=[[[Sc[j]+DS[j],n-j],[S[j],0]] $j=1..n ]:#набор для графика движения дробинок not_jet. |
| > | Pl1:=plot(PScDs,s=S[1]..S[n],color=red): |
| > |
| > | PScDsj:=[[[Scj[j],n-j],[Sj[j],0]] $j=1..n ]:#набор для графика движения дробинок jet. |
| > | Pl2:=plot(PScDsj,s=Sj[0]..Sj[n],color=blue,linestyle=DASH): |
| > | Pl_axe_X0:=plot([[0,n],[0,0]],color=green): |
| > | display([Pl1,Pl2,Pl_axe_X0],axes=frame);#,legend=["центрифуга","реактив"] |
| > |
| > | #================================================================================================ |
График абсолютных скоростей дробинок в цепочках выбросов.
| > | PVj:=[[j,Vj[j]] $j=1..n]:# набор для графика изменения скоростей реактив. |
| > | PV:=[[j,V[j]] $j=1..n]:# набор для графика изменения скоростей центриф. |
| > | plot([PV,PVj],number=1..n,title="Абсолютные скорости дробинок", legend=["центрифуга","реактив"],color=[red,blue]);# |
| > |
| > | #================================================================================================ |
График, иллюстрирующий изменение скоростей дробинок в цепочке выброса.
Т.е. разница в скоростях последующей "дробинки" от предыдущей.
| > | PDVj:=[[j,evalf(Vj[j+1]-Vj[j])] $j=2..n-1]:# набор для графика изменения скоростей реактив. |
| > | PDV:=[[j,V[j+1]-V[j]] $j=2..n-1]:# набор для графика изменения скоростей центриф. |
| > | plot([PDV,PDVj],t=2..n-1,title="Изменение скоростей дробинок",legend=["центрифуга","реактив"],color=[red,blue]);# |
| > |
| > | #================================================================================================ |
| > |
График, иллюстрирующий изменение скоростей Центров масс цепочек дробинок и ЦМ остатков [корпус+остаток груза]
| > |
| > | PVCMj:=[[Time[j],(CMj[j+1]-CMj[j])/dt] $j=1..n-1]:# набор для графика изменения скоростей реактив. |
| > | PVCMcj:=[[Time[j],(CMcj[j+1]-CMcj[j])/dt] $j=1..n-1]:# набор для графика изменения скоростей реактив. |
| > | PVCM:=[[Time[j],(CM[j+1]-CM[j])/dt] $j=1..n-1]:# набор для графика изменения скоростей центриф. |
| > | PVCMc:=[[Time[j],(CMc[j+1]-CMc[j])/dt] $j=1..n-1]:# набор для графика изменения скоростей центриф. |
| > |
| > | plot([PVCM,PVCMj],t=dt..2*Pi/w,title="Изменение скоростей ЦМ дробинок",legend=["шлейф центрифуга","шлейф реактив"],color=[red,blue]);# |
| > | plot([PVCMc,PVCMcj],t=dt..2*Pi/w,title="Изменение скоростей ЦМ остатков",legend=["остаток центриф","остаток реактив"],color=[red,blue],axes=frame);# |
| > | #================================================================================================ |
| > |
Здесь представлена разность двух кривых с графика "Изменение скоростей ЦМ дробинок"
| > | PDCM:=[[Time[j],CM[j]-CMj[j]] $j=0..n]:# набор для графика разницы в положении ЦМ цепочек дробинок. |
| > | plot(PDCM,t=0..2*Pi/w,axes=frame,title="Разница в положении ЦМ цепочек дробинок с течением времени"); |
| > |
| > | #=============================================================================================== |
График координат ЦЕНТРОВ МАСС систем за рабочий период
| > |
| > |
| > |
| > |
| > |
| > | PCMcj:=[[Time[j],CMcj[j]] $j=0..n]:# набор для графика ЦМ всей реактивной системы |
| > | PCMc:=[[Time[j],CMc[j]] $j=0..n]: # набор для графика ЦМ системы с центрифугой |
| > | plot([PCMc,PCMcj],t=0..2*Pi/w,axes=frame,title="Положение ЦМ всех систем",legend=["ЦМ Центрифуга","ЦМ реактив"],style=[line,line]); |
| > |
| > |
| > | #============================================================================================== |
Проверка!
Проверка заключается в вычислении суммарного импульса системы с центрифугой.
Рассчитывается импульс "остатка" через скорость ЦМ, и импульс, как сумма импульсов всех компонентов, входящих в "остаток".
Эти величины сравниваются с суммарным импульсом цепочки "дробинок".
| > |
| > |
| > | m1:=M1c/n: |
Абсолютная скорость оси центрифуги:
| > | for i from 0 to n do |
| > | Vos[i]:=Vc[i]+VDS[i]; |
| > | end do: |
| > |
| > |
Импульс остатка, как сумма импульсов компонентов системы:
| > | for i from 0 to n do |
| > | Qost[i]:=MVc1[i]+Vos[i]*((n-i)*m1+M0); |
| > | end do: |
Количество движения цепочки дробинок:
| > | for i from 0 to n do |
| > | Qdr[i]:=m1*sum(V[k],k=0..i); |
| > | end do: |
| > |
Импульс остатка через скорость ЦМ:
| > | for i from 0 to n do |
| > | Qcm[i]:=Vc[i]*(M0+m1*(n-i)); |
| > | end do: |
| > |
| > | PQost:=[[Time[j],Qost[j]] $j=0..n]: |
| > | PQdr:=[[Time[j],Qdr[j]] $j=0..n]: |
| > | PQcm:=[[Time[j],Qcm[j]] $j=0..n]: |
| > | Psumm:=[[Time[j],Qost[j]+Qdr[j]] $j=0..n]: |
| > | plot([PQost,PQdr,PQcm,Psumm],t=0..2*Pi/w,title="Импульсы компонентов системы с центрифугой",legend=["Импульс остатка через сумму импульсов компонентов","Импульс летящих дробинок","Импульс остатка через скорость ЦМ","сумма"],color=[red,green,brown,blue],style=[line,line,point,line],symbol=circle,symbolsize=5); |
| > |
График суммарного импульса системы
| > |
| > |
| > | plot(Psumm,x=0..2*Pi/w,title="Сумма",color=blue,axes=boxed); |