Jet-not-Jet
Программа для расчета положения и скоростей объектов при реактивном и "нереактивном" разделении компонентов.
Для 24-х элементов!!!
Полный расчет можно скачать здесь
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:=24; |
"оцифровка" переменных.
Необходима для построения графиков
r -радиус центрифуги
w -угловая скорость вращения центрифуги
M1c -суммарная масса дробинок, находящихся в каждой системе
M0 -масса пустого корпуса каждой системы
w:=w; M1c:=1; M0:=10;w:=1;r:=1; |
Non_jet(n): |
Jet(n): |
Результаты расчетов :
#================================================================================================= |
Графики относительных смещений "Дельта" и "Дельта-дельты"
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); |