j_n_j_60shots.html
Jet-not-Jet
Программа для расчета положения и скоростей
объектов при реактивном и "нереактивном" разделении компонентов.
Для 60-и элементов!!!
Полный расчет можно
скачать здесь
Опорный
чертеж:
>
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:=60;
>
>
>
"оцифровка" переменных.
Необходима для построения графиков
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);
Сайт создан в системе
uCoz