简易轨道计算程序使用说明
为讨论问题时能更为深入具体,开发了一个简易的轨道计算程序,方便分析火箭性能。
访问方式和界面
+
程序入口,也可拉至页面底部,从“阅读原文”进入
http://www.spaceodyssey.cn:443
后续程序入口将改为:
https://www.spaceodyssey.cn:443
界面如下,由输入区、计算按钮、计算结果显示区组成。
基本用法
+
最基本用法如下:
1) "#"直至行末为注释模式,不进入计算;
2) 分离时刻、火箭配置、程序角为最基本的输入,在配置中不可少;
3) 分离时刻第一个数为起飞时刻,再依次输入存在分离的时间节点,如一级、整流罩、二级分离时刻等;
4) 火箭配置给出火箭信息,为nx7数组,按列一一填写。
[1] 子级总重量m0(kg)
[2] 推进剂总重量mp(kg)
[3] 发动机启动时间t1(s),用于流量积分
[4] 发动机关机时间t2(s),关机时刻发生在分离时或分离前
[5] 发动机总流量dm(kg/s)
[6] 发动机总推力F(N),地面推力。[6]和[7]也可用地面比冲和真空比冲组合代替,输入更为简单,但作者发现使用时总是犯单位错误(s, m/s)
[7] 发动机喷口面积A(m^2),用于计算不同环境大气压处的推力。如确定为高空发动机,则可在推力处填真空推力,此处填0;
5) 程序角给出折线形式飞行程序角,为nx2列,第一列为时刻,第二列为角度(单位°)。
以“先锋号”火箭为例,各参数如下:
[分离时刻] #分离时间
0 144 194 265.5 574
[火箭配置]
# 子级重量(kg) 推进剂重量(kg) 发动机启动时刻(s) 发动机关闭时刻(s) 流量(kg/s) 地面推力(N) 面积(m^2)
# 推力=流量x比冲, 面积=(真空推力-地面推力)/1.01325e5
8000 7150 0 144 48.6159449615540 120130 0.11
15 0 0 194 0 0 0
1975 157 144 265.5 12.7349121466769 33340 0
0 0 265.5 540 0 0 0
200 178 540 574 5.21719858156028 11770 0
21 0 0 574 0 0 0
[程序角]
0 90
10 90
144 36
265.5 28
540 -12.5
574 -12
扩展用法
+
由于火箭配置中有不少参数为组合计算结果,逐一输入数值太过繁琐,因此增加了变量功能,可在变量区对变量进行赋值,并在之后使用。比较了ini, HOCON, yaml, json等格式,均不太顺手,因此编写了一个解析器,这也意味着对于复杂表达式,程序不排除出错可能性,如有bug请大家反馈。
[变量] #变量
TK1=0
[监测时刻] # 增加输出点,在监测时刻不单独插值,而是选择就近时刻,因此输出时可能与此处数值不完全一致
30 40 TK1+3
火箭配置用法
+
火箭配置是输入里变化最多的内容,这里举几个用法。只要把握了分离和发动机工作的总脉络,对于其他用法,都能写出适应性的语句。
两类共用推进剂的发动机工作
将子级分为两行,第一行包括m0、mp,以及其它信息,第二行紧随其后,但m0、mp均填0,如
[火箭配置]
100 90 0 100 1 120 0
0 0 0 130 0.1 12 0 # 前两个0表示与上一行共用推进剂
整流罩分离
将整流罩视为无流量、无推进剂的子级,mp, dm,F均填0,t1为0,t2为抛罩时间。如
[火箭配置]
100 0 0 100 0 0 0 # 推进剂,流量、推力均为0
滑行段
将滑行段视为无流量、无重量、无推进剂的子级,dm,F,m0,mp均填0,其实滑行段完全可以不输入,对计算结果无影响。如
[火箭配置]
0 0 130 200 0 0 0 # 滑行段仅有时间,其实此行可删除
应用案例
+
以电子号火箭为例
[变量] #定义变量,此部分可以为空或直接删除
TK0=0; TK1=152; TKZ=183; TK2q=159; TK2g=457; TK3=3157; TK4=3200; # ; 被替换为回车
mbat=120; msat=37.06; #电池重量和卫星重量
coeff1=0.95; coeff2=0.94; # 一二级结构系数
dm1=61.2243; dm2=6.8027; # 流量
mp1=dm1*(TK1+0.5); mp2=dm2*(TK2g+0.5-TK2q)
[分离时刻] # 存在分离的时间
TK0 TK1 TKZ TK3
[火箭配置]
# 子级重量(kg) 推进剂重量(kg) 发动机启动时刻(s) 发动机关闭时刻(s) 流量(kg/s) 地面推力(N) 面积(m^2)
# 推力=流量x比冲, 面积=(真空推力-地面推力)/1.01325e5。用于计算不同环境大气压处的推力。如确定为高空发动机,则可在推力处填真空推力,此处填0
mp1/coeff1+9*mbat mp1 TK0 TK1 dm1 9*16.8e3*311/303 pi/4*0.207**2
0 0 TK0 TK2q 0 0 0
44 0 TK0 TKZ 0 0 0
mp2/coeff2+mbat+msat mp2 TK2q TK2g dm2 22.2e3*343/333 0
0 0 TK2g TK3 0 0 0
[程序角]
0 90
10 90
TK1 55
TKZ 25.7
TK2g -12.3
TK3 -12.3
[监测时刻] #额外输出点,可以为空或直接删除
79
1) 在时序中增加397s的分离时刻;2) 在火箭配置中声明电池是在397s停止;3) 更新卫星重量,以及程序角(此处未更新)。
修改后仿真,发现运载能力提升了约 80kg。
[变量] #定义变量,此部分可以为空或直接删除
TK0=0; TK1=152; TKZ=183; TK2q=159; TK2g=457; TK3=3157; TK4=3200; # 时序
mbat=120; msat=137.06; #电池重量和卫星重量
coeff1=0.95; coeff2=0.94; # 一二级结构系数
dm1=61.2243; dm2=6.8027; # 流量
mp1=dm1*(TK1+0.5); mp2=dm2*(TK2g+0.5-TK2q)
[分离时刻] # 存在分离的时间
TK0 TK1 TKZ 337 TK3
[火箭配置]
# 子级重量(kg) 推进剂重量(kg) 发动机启动时刻(s) 发动机关闭时刻(s) 流量(kg/s) 地面推力(N) 面积(m^2)
# 推力=流量x比冲, 面积=(真空推力-地面推力)/1.01325e5。用于计算不同环境大气压处的推力。如确定为高空发动机,则可在推力处填真空推力,此处填0
mp1/coeff1+9*mbat mp1 TK0 TK1 dm1 9*16.8e3*311/303 pi/4*0.207**2
0 0 TK0 TK2q 0 0 0
44 0 TK0 TKZ 0 0 0
mp2/coeff2+msat mp2 TK2q TK2g dm2 22.2e3*343/333 0
mbat 0 0 337 0 0 0 # 将mbat单独移为,如果时间还是TK2g,则单独拿出结果和合并一模一样
0 0 TK2g TK3 0 0 0
[程序角]
0 90
10 90
TK1 55
TKZ 25.7
TK2g -12.3
TK3 -12.3
[监测时刻] #额外输出点,可以为空或直接删除
79
往期文章:
《
《
《 》
《 》
《 》
《