瞬时平衡法计算固体火箭发动机内弹道曲线
固体火箭发动机内弹道性能的仿真研究_刘宝华

2009年10月第10期电 子 测 试ELEC TRONIC T ES TOct.2009No.10固体火箭发动机内弹道性能的仿真研究刘宝华1,杨志菊2(1辽宁葫芦岛市海军飞行学院教研部 葫芦岛 125000,2辽宁葫芦岛92941部队 葫芦岛 125001) 摘 要:研究发动机燃烧室内压强随时间变化的规律,是固体火箭发动机工作过程分析的主要方面,一般采用实验法可以获得直观可靠的数据,但实验法耗资大、周期长,不易操作。
本文根据零维内弹道数学模型,运用龙格库塔法及M A T L A B语言对某型固体导弹发动机内弹道工作过程进行数值仿真,画出燃烧室内压强随时间变化的曲线,并进一步分析得出影响发动机内弹道性能的因素,仿真结果与发动机燃烧室内工作情况相符,影响因素分析与实验相一致,为固体火箭发动机内弹道性能研究提供了参考。
关键词:发动机;内弹道;数值仿真;燃烧室中图分类号:T N957 文献标识码:BSimulate research of solide rocket eng ine inside trajecto ry characteristicLiu Baohua1,Y ang Zhiju2(1T eaching and scientific resea rch ministry,N aval Flying A czdemy,Huludao125001,China;292941U nit,PL A,H uludao125001,China)A bstract:Researching the rule of the pressure with the time changing o f the eng ine's firebox is the m ost aspect of analy zing the process o f the solid missile engine.Co mmo nly,experimenta-tion can achieve the intuitionistic and credible data,but this method consume m uch tim e and money,and not easy to manipulate.According to zero-dimensional inside trajecto ry numerical simulate model,to o ur co untry some ty pe solid missile engine,applacating Lo nger-Kuta me thod and the lang uage of m atlab launches the inside trajecto ry numerical simulate of the w o rking pro cess,and draw ed the burner pressure-time curve,passing further analy sis o uted the influence facto rs of inside trajecto ry characteristic.The result of simulatio n is consistent to the fact in en-gine's firebox and analysis of the influence facto rs is consistent to experim entation.It offer s a new idea to researching the capability o f the ballistic trajecto ry.Keywords:engine;inside trajectory;numerical sim ulate;firebox0 引 言固体火箭发动机内弹道学的核心是研究发动机燃烧室内压强随时间变化的规律,是固体火箭发动机工作过程分析的主要方面。
固体火箭发动机内弹道学 方丁酉

固体火箭发动机内弹道学方丁酉固体火箭发动机内弹道学方丁酉近年来,随着航天事业的蓬勃发展,固体火箭发动机内弹道学成为越来越受关注的领域。
方丁酉,中国工程院院士、火箭技术专家,曾在这一领域做出了卓越的贡献。
本文将从简单到复杂、由浅入深地探讨固体火箭发动机内弹道学,以帮助读者全面、深入地理解这一话题。
一、固体火箭发动机内弹道学的概念固体火箭发动机内弹道学是研究固体火箭发动机内燃烧过程、燃料燃烧特性、燃烧产物排放、工作环境等方面的学科。
方丁酉指出,固体火箭发动机内弹道学是固体火箭技术中的重要基础理论,对于提高固体火箭发动机的性能、可靠性和运载能力具有重要意义。
二、固体火箭发动机内弹道学的理论基础在固体火箭发动机内弹道学的研究中,燃烧动力学是重要的理论基础之一。
燃烧动力学研究了燃料在燃烧过程中的变化规律,以及燃烧反应对火箭发动机内部气体流动和压力变化的影响。
燃烧产物排放和燃烧室内部气体动力学也是固体火箭发动机内弹道学的重要内容之一。
研究这些理论基础可以帮助我们更好地理解固体火箭发动机内部的工作原理和特性。
三、固体火箭发动机内弹道学的关键技术在固体火箭发动机内弹道学研究中,燃烧稳定性和效率是两个关键技术。
燃烧稳定性是指在固体火箭发动机工作过程中保持燃烧的稳定性,避免出现燃烧不均匀或燃烧失稳等问题。
而燃烧效率则是指在燃烧过程中尽可能提高燃料的利用率,减少燃料的浪费。
方丁酉在固体火箭发动机内弹道学的研究中,提出了一系列有效的技术方案,使固体火箭发动机在燃烧稳定性和效率方面取得了显著的进展。
四、固体火箭发动机内弹道学的应用前景固体火箭发动机内弹道学的研究成果已经在我国的航天事业中得到了广泛的应用。
在长征系列火箭、嫦娥探月工程等多个航天工程中,固体火箭发动机内弹道学的研究成果为提高火箭的性能和可靠性做出了重要贡献。
未来,随着我国航天事业的不断发展,固体火箭发动机内弹道学将继续发挥重要作用,推动我国航天事业迈向新的高度。
固体火箭发动机工作末期的内流场数值计算

固体火箭发动机工作末期的内流场数值计算张俊; 高天宇; 高璞清; 王刚【期刊名称】《《弹箭与制导学报》》【年(卷),期】2018(038)003【总页数】5页(P58-62)【关键词】固体火箭发动机; 飞行过载; 颗粒轨道模型; 两相流; 燃气射流【作者】张俊; 高天宇; 高璞清; 王刚【作者单位】上海海洋大学工程学院上海201306; 中国航天科工集团第六研究院第41研究所呼和浩特010010【正文语种】中文【中图分类】V2310 引言固体火箭发动机的工作过程按照其燃烧室压强变化可大致分为点火建压期、稳定工作期和工作末期。
在发动机点火使其燃烧室达到一定工作压强后,进入持续时间相对较长的稳定工作期。
随着推进剂燃面的推移、肉厚不断减少,衬层和绝热层在高速高温燃气射流的烧蚀与冲刷作用下可能出现剥离、脱落、烧穿等现象。
尤其对于含金属的复合推进剂而言,产生的高速高温颗粒受到发动机的结构限制和飞行过载等条件的作用,将会使发动机后封头及喷管收敛段等部位的粒子沉积浓度升高明显,进一步加剧了这些部位的烧蚀。
因此,研究SRM的工作末期的多相内流场变化,确定流场中固相颗粒的分布规律、运动轨迹及沉积浓度等是一个必不可少的环节[1-3]。
目前,科研人员主要通过数值模拟研究这一问题,取得了一系列重要的研究成果[4-6]。
文献[7]对发动机的燃烧室进行冷流实验,对径向速度、脉动速度等物理量进行了实验测量;文献[8]将SST k-ω湍流模型及其改进形式用于燃烧室湍流流场的数值模拟,并将计算结果与Wilcox和S-A湍流模型进行了对比,得出SST k-ω计算的燃烧室径向速度分布与实验值一致性最好的结论;文献[9]对凝相粒子加速度进行了理论分析、数值计算及缩比发动机旋转模拟试验,分析了地面模拟过载试验中燃烧室粒子聚集区及旋转试验后的烧蚀部位;文献[10-11]对高含铝固体推进剂低压SRM尾流场复燃进行了数值模拟和实验研究,得到了铝粉引入、粒径和燃烧室压强对羽流温度的影响规律,并与地面试车结果进行了对比。
固体火箭发动机点火瞬时内流场轴对称数值分析_陈军涛

对于增雨防雹火箭发动机 ,在用等效容积法进行 简化后 ,按二维轴对称进行处理 ,网格的划分用 GAM2 B IT 来实现 ,共有 15 660 个单元 (见图 2 和图 3) 。
4 初始条件和边界条件
根据点火药的物性参数及相关的试验数据 ,在保 证总质量流量及总生成热量的前提下对点火器燃气的
析认为 ,堵盖打开后部分能量随燃气的喷出而消失 ,这 与实际情况相符 。图 7 为距发动机头部 0. 3m 处径向 截面上的平均轴向速度随时间的变化曲线 。从图 7 中 可以看出 ,在发动机达到稳定工作前 ,该截面上的速度 变化剧烈 ,在 0~150m/ s 之间进行波动 ,在发动机达 到稳定工作后 ,其速度稳定在 80~90m/ s。
Key words : solid propellant rocket engine ;ignition transient ; in2
terior flow field ; numerical analysis
1 引言
固体火箭发动机点火瞬时是一个非常短暂的过 程 ,但对发动机的正常工作起着极为重要的作用 。因 点火瞬时存在着极大的压强和温度变化 ,并伴随着化 学反应的发生 ,因此是个非常复杂的过程 。对于小型 固体火箭发动机 ,因其结构尺寸小 ,工作时间短 ,点火 药以颗粒状的黑火药居多 (其燃烧的稳定性差) ,因而 此问题显得尤为突出 。文中运用 FL U EN T 软件 ,对 增雨防雹火箭发动机点火瞬时的内流场进行了轴对称 数值模拟 ,内型面用等效容积法[1 ] 进行简化 ,内流场
图 2 发动机前端网格 Fig. 2 Front grids of motor
图 3 发动机后端网格 Fig. 3 Rear grids of motor
固体火箭发动机燃烧室与内弹道计算

t
x
x
.
(V
V x
dx)dt
pr
Ab x
dxdt
m
整理后有:
t
(
A)
x
(
AV
)
pr
Ab x
燃烧面积
.. m+dm
. dm
dm
p
r
Ab x
dx
(2)动量方程
根据动量守恒:在dt时间内,微元体中动量的变化量=燃气 流动迁移在微元体内产生的动量增量+作用于两截面上的总压力 冲量+作用于微元体侧表面上压力冲量在x轴上的分量,即
x
(Ec
V2 2
)dx
dt
x
(
pAV
)dxdt
pr
Ab x
dxdt
Ip
整理后有:
t
A(Ec
V2 2
)
x
AV
(Ic
V2 2
)
prI
p
Ab x
Ec : 单位质量燃烧产物的内能(化学内能+热内能) Ic : 单位质量燃烧产物的总焓
1. 流动特点
燃烧室中的燃气流动具有以下特点: 燃烧室中推进剂装药不断燃烧,产生新的燃气加入主流,因此燃 气在燃烧室中的流动是一个有质量加入的流动过程; 在推进剂装药燃烧过程中,燃气的通道面积不断增大,故燃气的 流动参数是位置与时间的函数,因而是非定常流动; 燃气流过形状复杂的通道或流线变化剧烈时,将产生一定的能量 损失; 燃气的流动特性与推进剂的燃烧特性密切相关。例如燃气的压强 和流速影响推进剂的燃速,而燃速又反过来影响燃气压强和流速; 由此可见,在发动机工作过程中,燃气在燃烧室中的流动中极其 复杂的。为了研究方便,特作如下假设: 推进剂燃烧在装药燃烧表面上瞬时完成,燃气的化学组分和热力 性质均匀一致,并沿燃烧表面的外法线方向注入通道。 燃气为完全气体,服从完全气体状态方程,而且比热不变。 燃气在装药通道中作一维流动。 燃气与外界无热和功的交换。
基于Pro/E软件进行固体火箭发动机内弹道计算的方法初探

基于Pro/E软件进行固体火箭发动机内弹道计算的方法初探作者:王磊代义李宏来源:《中国新技术新产品》2009年第10期摘要:固体火箭发动机内弹道计算给出的推力、质量流量随时间变化的曲线一直是导弹或卫星外弹道设计的计算依据。
为适应需求,固体火箭发动机装药的几何形状需要反复调整,复杂的几何形状使内弹道计算成为一项繁琐的工作。
本文利用Pro/E软件强大的三维建模能力,通过参数化设计模拟发动机燃烧的全过程,编制简单程序实现发动机零维内弹道计算,为繁琐的计算提供了一条便捷的途径。
关键词:固体火箭发动机;内弹道计算;Pro/E软件1 引言固体火箭发动机是一种采用固体推进剂的化学火箭动力装置,在航天技术中有着广泛的应用。
内弹道计算是固体火箭发动机设计的一项重要内容,它提供的推力、流量等性能参数是导弹总体进行射程计算、散布分析及导弹姿态控制的重要依据[1]。
在满足内弹道特性和保证药柱结构完整性的前提下,设计出具有较高装填分数的药柱对于提高发动机性能具有重要的意义。
药柱几何形状的演变过程,是从简单管状药柱演变到贴壁浇注内孔(星形、车轮形等)燃烧药柱,再到具有较高装填特性的翼柱、锥柱等三维药柱。
内弹道计算的关键在于得出药柱燃面随时间的变化曲线。
有着简单几何形状的药柱,计算燃面都有较为成熟的方法。
为了探索三维药柱燃面的计算方法,国内外有关学者开展了许多工作。
目前,国外内弹道计算最为著名的方法是美国NASA的SPP法,国内较常用的是通用坐标法、有限元素法和边界坐标法。
国内的这三种方法均为数值法,由于使用原函数对复杂药柱进行精确定义很困难,通常难以精确表示燃烧过程中十分复杂的图形,以及连接各部分药柱圆角的复杂变化,所以内弹道计算的精度较差。
同时,它们的计算结果对药柱网格划分的依赖性很强,网格划分不合适,所得结果也不正确[2]。
这些方法计算得到的燃面波动性也较大,药柱初始设计的修改很复杂,数据前后处理也抽象复杂。
这些因素导致内弹道的计算成为一项繁琐复杂的工作。
固体火箭发动机点火过程内弹道计算

因素 对 性 能 的 影 响 。 发 动 机 内弹 道 性 能 计算 及火 箭 发 动 机 工 程 设 计 提 供 了一 套 更 实 用 的 工 具 。 为
关 键 词 : 体 火 箭 发 动 机 ; 火 瞬态 ; 固 点 内弹 道 计 算
中 图分 类 号 : 3 V4 0 文 献 标 志码 : A
2 1 基 本 假 设 .
建 立控制 方 程 时 , 略 彻 体 力 和 外 功 , 用 忽 采 完全 气 体和 推进 剂燃 烧 的一 般假 设 , 假设 点 火燃
气 的性 质 , 定压 比 热 、 即 比热 比、 均 分子 量 、 平 气 体 常数 与 主装药 参数 相 同且 数值保 持 不变 。
NE T.Th u e ia x m pe h w h ti c n b sc l e h e u r me t ft e d sg r cso n p l a in e n m r le a l ss o t a t a a ial me tt er q ie n s o h e i n p e i in a d a p i t . c y c o
( h o fAs r n u is Sc o lo to a tc ,No t we t r o y e h ia ie st r h s e n P l t c n c lUn v r i y,Xi a 1 0 2,Ch n ) ’n7 0 7 ia Ab t a t Th t o fi n t n t a se ti t ro al t a c lt n o oi o k tmo o ( RM )wa r s n e .M a y sr c : e me h d o i o r n i n e i rb l s i c l u a i fs l r c e t r S g i n i c o d sp ee td n
固体火箭发动机零维两相内弹道研究

固体火箭发动机零维两相内弹道研究陈军【摘要】为方便应用两相内弹道流动模型对火箭发动机进行性能预示以及提高性能预示精度,利用火箭喷管内的两相流动性能计算公式,建立了零维两相内弹道模型,包括零维两相内弹道微分方程和平衡压强公式,给出了模型中涉及到的两相特性参数的计算方法.相比于一维两相内弹道模型,该零维内弹道模型简单且满足必要的精度,适于工程应用的快速估算.利用该模型对某远程火箭发动机进行了内弹道计算与分析,计算结果与实验数据吻合良好,表明该两相内弹道模型可以有效地降低纯气相模型引起的理论与实际之间的模型偏差,有利于快速计算固体推进剂火箭发动机的两相内弹道参数以及提高预示精度.%To predict internal ballistic properties with two-phase flow for convenience and to improve prediction precision of internal ballistics in solid rocket motor(SRM),a model of zero-dimensional two-phase internal ballistics was built.The model includes internal ballistic differential equation and corresponding equilibrium pressure formula,and the computational methods of twophase property parameters in the model were pared with one-dimensional twophase internal ballistic model,the model is very simple and more suitable to quick computation in project applications,and more accurate.Based on the model,an internal ballistic computation and analysis for a long-range solid rocket engine were carried out.The computed results accord well with experimental data.The zero-dimensional two-phase internal ballistic model can availably reduce theoretical error caused by single-gas-phase model.By the model,two-phase internal ballisticproperties can be quickly computed,and the prediction precision of internal ballistics in SRM can be improved.【期刊名称】《弹道学报》【年(卷),期】2013(025)002【总页数】5页(P39-43)【关键词】内弹道;两相流;固体火箭发动机;固体推进剂【作者】陈军【作者单位】南京理工大学机械工程学院,南京210094【正文语种】中文【中图分类】V435随着高能推进剂在火箭发动机中的普遍应用,两相流动对发动机性能的影响越来越受到重视。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
!计?算?星?型æ装痢?药?的?几?何?尺?寸?!参?数簓符?号?说μ明é!-----------------------------------------------------------------------------------!n表括?示?星?角?数簓,num表括?示?将?推?进?剂á沿?肉╝厚?方?向ç分?为a几?等台?分?,m表括?示?选?择?压1力 值μ大洙?小?!d表括?示?外猘径?,len表括?示?长¤度â,thet表括?示?星?边?夹D角?,epsilon表括?示?角?度â系μ数簓!r表括?示?过y度â圆2弧?半?径?,r1表括?示?星?角?圆2弧?半?径?,R0表括?示?通 ?用?气?体?常£数簓!l表括?示?药?柱ê的?特?征é长¤度â,y0表括?示?初?始?特?征é参?数簓,y1表括?示?燃?尽?特?征é参?数簓!I0表括?示?总哩?冲?,F表括?示?推?力 ,Poc表括?示?燃?烧?室酣?的?工¤作痢?压1力!Isp表括?示?比括?冲?,density_p表括?示?密ì度â,k表括?示?比括?热â?比括?rspeed表括?示?燃?速ê,?pn表括?示?压1力 指?数簓!mpeff表括?示?有瓺效§装痢?药?量?,Cf表括?示?推?力 系μ数簓,Ctz表括?示?特?征é速ê度â,At表括?示?喉æ部?面?积y,a表括?示?燃?速ê系μ数簓!S表括?示?平?均ê燃?烧?面?积y,e1表括?示?平?均ê肉╝厚?,epsilon1表括?示?减?面?比括?epsilon2表括?示?增?面?比括?!foresmax表括?示?前©段?最?大洙?相à对?周ì边?长¤,backsmax表括?示?后è段?最?大洙?相à对?周ì边?长¤!smin表括?示?最?小?相à对?周ì边?长¤,thet1表括?示?周ì边?长¤取?得?最?小?值μ时骸?的?星?边?夹D角?!Ap表括?示?初?始?通 ?气?面?积y,J表括?示?初?始?通 ?气?参?量?,eta表括?示?装痢?填?系μ数簓,Af表括?示?剩骸?药?面?积y,etaf表括?示?剩骸?药?系μ数簓!de表括?示?每?一?份 肉╝厚?的?长¤度â,Sa表括?示?燃?烧?面?积y数簓组哩?Apa表括?示?通 ?气?面?积y数簓组哩?!------------------------------------------------------------------------------------program mainimplicit nonereal(kind=8),parameter :: Pi=3.14integer :: n,num,i,mreal(kind=8) :: d,len,thet,epsilon,r,r1real(kind=8) :: l,y0,y1real(kind=8) :: I0,F,Poc,Pe,R0real(kind=8) :: Isp,density_p,k,rspeed,Pnreal(kind=8) :: mpeff,Cf,Ctz,At,areal(kind=8) :: S,e1,epsilon1,epsilon2real(kind=8) :: foresmax,backsmax,smin,thet1real(kind=8) :: Ap,J,eta,Af,etafreal(kind=8) :: error,dereal(kind=8),allocatable :: Sa(:),Apa(:)!读á入?所ê需â要癮所ê用?参?数簓值μopen(3,file="design_parameter.dat")read(3,*) I0 !总哩?冲?read(3,*) F !推?力read(3,*) Poc !燃?烧?室酣?压1力read(3,*) Isp !比括?冲?read(3,*) density_p !推?进?剂á的?密ì度âread(3,*) k !比括?热â?比括?read(3,*) a !燃?速ê系μ数簓read(3,*) Ctz !读á取?特?征é速ê度âCtzread(3,*) Pn !压1力 指?数簓read(3,*) Pe !读á取?喷?管ì出?口ë的?压1力 Peread(3,*) R0 !读á取?通 ?用?气?体?常£数簓R0read(3,*) d,r !读á取?装痢?药?直ª径?d和æ过y度â圆2弧?半?径?rread(3,*) epsilon2 !读á取?增?面?比括╡psilon2read(3,*) r1 !读á取?星?角?圆2弧?半?径?r1read(3,*) thet1 !试?取?周ì边?长¤取?得?最?小?值μ时骸?的?星?边?夹D角?thet1read(3,*) thet !试?取?初?始?时骸?的?星?边?夹D角?thetread(3,*) n !读á取?星?角?数簓n(辍?,4,5,6,7,8)?read(3,*) epsilon !试?取?角?度â系μ数簓epsilonread(3,*) num !读á取?等台?分?肉╝厚?的?等台?分?数簓numread(3,*) m !m=1表括?示?最?小?压1力 给?定¨,m=2表括?示?最?大洙?压1力 给?定¨,m=0表括?示?平?均ê压1力 给?定¨close(3)allocate(Sa(0:num),Apa(0:num))!根ê据Y规?定¨的?总哩?冲?计?算?有瓺效§装痢?药?量?mpeffmpeff=1.02*I0/Isp!计?算?推?力 系μ数簓和æ喉æ部?面?积yCf=sqrt(k)*(2/(k+1))**((k+1)/(k-1)/2)*&sqrt(2*k*(1-(Pe/Poc)**((k-1)/k))/(k-1))At=F/Cf/(Poc*101325.0)!计?算?平?均ê肉╝厚?e1和æ计?算?特?征é长¤度â和æ平?均ê燃?烧?面?积yS!若?给?定¨的?是?最?大洙?压1力 则ç需â根ê据Y增?面?比括?计?算?最?小?燃?面?再ê计?算?平?均ê燃?面?值μ!y1一?般?取?值μ在ë1附?近ì,(0.8-1.2)if(m==0) then!平?均ê压1力 给?定¨S=At*(Poc*101325.0)**(1-Pn)/(Ctz*density_p*a)e1=mpeff/(density_p*S)else if(m==1) then!最?小?压1力 给?定¨S=At*(Poc*101325.0)**(1-Pn)/(Ctz*density_p*a)S=(epsilon2+1.0)*S/2.0e1=mpeff/(density_p*S)else!最?大洙?压1力 给?定¨S=At*(Poc*101325.0)**(1-Pn)/(Ctz*density_p*a)S=(1.0/epsilon2+1.0)*S/2.0e1=mpeff/(density_p*S)end ifl=d/2-e1-ry0=r/ly1=(e1+r)/l!根ê据Yepsilon2选?择?角?度â系μ数簓epsilon!计?算?取?得?最?小?周ì长¤时骸?的?thet1do while(.true.)error=thet1/2+cotan(thet1/2)-Pi/n-Pi/2if(error>=0.0001) thenthet1=thet1+0.00001else if(error<=-0.0001) thenthet1=thet1-0.00001elseexitend ifend do!计?算?角?度â系μ数簓epsilon的?准?确í?值μdo while(.true.)backsmax=2*n*((1-epsilon)*Pi/n+y1*(Pi/n+asin(sin(epsilon*Pi/n)/y1))) smin=2*n*(sin(epsilon*Pi/n)/sin(thet1/2)+(1-epsilon)*Pi/n) if(backSmax/Smin>epsilon2) thenepsilon=epsilon+0.001elseexitend ifend do!根ê据Y减?面?比括╡psilon1,?计?算?thetepsilon1=1/epsilon2foresmax=smin/epsilon1do while(.true.)error=2*n*(sin(epsilon*Pi/n)/sin(thet/2)+(1-epsilon)*Pi/n+&(r1+r)*(Pi/n+Pi/2-thet/2-cos(thet/2)/sin(thet/2))/l)-foresmax if(error>=0.0001) thenthet=thet+0.00001else if(error<=-0.0001) thenthet=thet-0.00001elseexitend ifend do!计?算?初?始?通 ?气?面?积y,?通 ?气?参?量?,?装痢?填?系μ数簓,药?柱ê长¤度âAp=(n*((1-epsilon)*Pi/n+sin(epsilon*Pi/n)*(cos(epsilon*Pi/n)-&sin(epsilon*Pi/n)*cotan(thet/2)))+2*n*r*(sin(epsilon*Pi/n)/sin(thet/2)+&(1-epsilon)*Pi/n)/l+n*r**2*(Pi/n+Pi/2-thet/2-cotan(thet/2))/l**2+&n*r1**2*(thet/2+cotan(thet/2)-Pi/2)/l**2)*l**2J=At/Apeta=4*(Pi*d**2/4-Ap)/(Pi*d**2)Af=(epsilon*Pi*(1+y1)**2-n*(sin(epsilon*Pi/n)*(sqrt(y1**2-sin(epsilon*Pi/n)**2)+& cos(epsilon*Pi/n)))-n*y1**2*(epsilon*Pi/n+asin(sin(epsilon*Pi/n)/y1)))*l**2etaf=4*Af/(pi*d**2)len=mpeff/density_p/(Pi*d**2/4-Ap-Af)!计?算?推?进?剂á的?燃?面?变?化ˉ规?律ã并¢输?出?结á果?de=e1/numopen(10,file="export_burnS.dat")open(20,file="export_Ap.dat")do i=0,num,1if((i*de)<=r1) thenSa(i)=2*n*(sin(epsilon*Pi/n)/sin(thet/2)+(1-epsilon)*Pi/n+&(r1+r)*(Pi/n+Pi/2-thet/2-cotan(thet/2))/l-(r1-i*de)*Pi/n/l)*l*len Apa(i)=(n*((1-epsilon)*Pi/n+sin(epsilon*Pi/n)*(cos(epsilon*Pi/n)-sin(epsilon*Pi/n)* cotan(thet/2)))+&2*n*(r+i*de)*(sin(epsilon*Pi/n)/sin(thet/2)+(1-epsilon)*Pi/n)/l+&n*(r+i*de)**2*(Pi/n+Pi/2-thet/2-cotan(thet/2))/l**2+n*(r1-i*de)**2*(thet/2+cotan(thet/2 )-Pi/2)/l**2)*l**2else if((i*de)>r1.and.(i*de)<=(l*sin(epsilon*Pi/n)/cos(thet/2)-r)) thenSa(i)=2*n*(sin(epsilon*Pi/n)/sin(thet/2)+(1-epsilon)*Pi/n+&(i*de+r)*(Pi/n+Pi/2-thet/2-cotan(thet/2))/l)*l*lenApa(i)=(n*((1-epsilon)*Pi/n+sin(epsilon*Pi/n)*(cos(epsilon*Pi/n)-sin(epsilon*Pi/n)* cotan(thet/2)))+&2*n*(r+i*de)*(sin(epsilon*Pi/n)/sin(thet/2)+(1-epsilon)*Pi/n)/l+&n*(r+i*de)**2*(Pi/n+Pi/2-thet/2-cotan(thet/2))/l**2)*l**2else if((i*de)>(l*sin(epsilon*Pi/n)/cos(thet/2)-r).and.(i*de)<=e1) thenSa(i)=2*n*((1-epsilon)*Pi/n+(r+i*de)*(Pi/n+asin(l*sin(epsilon*Pi/n)/(i*de+r)))/l)*l *lenApa(i)=n*((1-epsilon)*Pi*(1+(r+i*de)/l)**2/n+sin(epsilon*Pi/n)*(sqrt((r+i*de)**2/l* *2-&sin(epsilon*Pi/n)**2)+cos(epsilon*Pi/n))+(r+i*de)**2*(epsilon*Pi/n+&asin(l*sin(epsilon*Pi/n)/(r+i*de)))/l**2)*l**2end ifwrite(10,"(f10.5,2X,f15.5)") i*de,Sa(i)write(20,"(f10.5,2X,f15.5)") i*de,Apa(i)end doclose(10)close(20)!调獭?用?子哩?程å序ç计?算?装痢?药?内ë弹獭?道台?曲ë线?call internal_ballistics0(num,de,Sa,Apa,len,a,pn,Ctz,At,k,density_p,Isp,Pe)!输?出?星?型æ装痢?药?的?几?何?参?数簓open(30,file="export_star_geometry.dat")write(30,"(A6,f11.5,A2)") "mpeff=",mpeff,"Kg"write(30,"(A2,f8.5,A2)") "D=",d,"m"write(30,"(A2,f8.5,A2)") "L=",len,"m"write(30,"(A2,I2)") "n=",nwrite(30,"(A3,f8.5)") "θâ=",thetwrite(30,"(A3,f7.5)") "ε?=",epsilonwrite(30,"(A2,f7.5,A2)") "r=",r,"m"write(30,"(A3,f7.5,A2)") "r1=",r1,"m"write(30,"(A3,f8.5,A2)") "e1=",e1,"m"write(30,"(A3,f10.5,A2)") "Ap=",Ap,"㎡O"write(30,"(A2,f10.5)") "J=",Jwrite(30,"(A3,f7.5)") "η?=",etawrite(30,"(A3,f10.5,A2)") "Af=",Af,"㎡O"write(30,"(A4,f10.5)") "η?f=",etafwrite(30,"(A2,f10.5)") "l=",lwrite(30,"(A3,f10.5)") "y0=",y0write(30,"(A3,f10.5)") "y1=",y1close(30)stopend!该?子哩?程å序ç用?于 ?计?算?零?维?变?截?面?燃?烧?装痢?药?的?内ë弹獭?道台?!该?子哩?程å序ç利?用?瞬2时骸?平?衡a法ぁ?计?算?内ë弹獭?道台?!同?时骸?可ã以?计?算?侵?蚀骸?燃?烧?的?影 ?响å!--------------------------------------------------------------------------!Pc_eq表括?示?工¤作痢?段?的?平?衡a压1力 值μ,dPc_eq表括?示?压1力 修T正y值μ,rspeed表括?示?燃?速ê!time表括?示?工¤作痢?段?的?时骸?间?,Toc表括?示?燃?气?温?度â,Roc表括?示?燃?气?气?体?常£数簓,Pig表括?示?点?火e压1力!P1_eq表括?示?起e始?段?的?压1力 值μ,P2_eq表括?示?拖?尾2段?的?压1力 值μ,Cf表括?示?推?力 系μ数簓!time1表括?示?起e始?段?的?时骸?间?,time2表括?示?拖?尾2段?的?时骸?间?,Isp表括?示?理え?论?比括?冲?值μ!Feq表括?示?工¤作痢?段?的?推?力 值μ,F1表括?示?起e始?段?的?推?力 值μ,F2表括?示?拖?尾2段?的?推?力 值μ!Poc表括?示?燃?烧?室酣?压1力 值μ,Pe表括?示?喷?管ì出?口ë压1力!--------------------------------------------------------------------------subroutine internal_ballistics0(num,de,Sa,Apa,len,a,pn,Ctz,At,k,density_p,Isp,Pe) implicit noneinteger,parameter :: n=10integer :: num,i,keyreal(kind=8),intent(in) :: de,len,a,pn,Ctz,At,k,density_preal(kind=8),intent(in) :: Sa(0:num),Apa(0:num),Isp,Pereal(kind=8) :: Pc_eq(0:num),dPc_eq(0:num),rspeed(0:num)real(kind=8) :: time(0:num),Toc,Roc,Feq(0:num),Cfreal(kind=8),allocatable :: P1_eq(:),P2_eq(:),F1(:)real(kind=8),allocatable :: time1(:),time2(:),F2(:)real(kind=8) :: ga,Pigreal(kind=8),external :: funopen(3,file="inter_parameter.dat")read(3,*) key !读á入?key的?值μread(3,*) Pig !读á入?点?火e压1强?值μread(3,*) Toc !读á入?绝?热â?燃?烧?温?度â值μread(3,*) Roc !读á入?燃?气?的?气?体?常£数簓值μallocate(P1_eq(n),F1(n),time1(n))allocate(P2_eq(0:n-1),F2(0:n-1),time2(0:n-1))ga=sqrt(k)*(2/(k+1))**((k+1)/(k-1)/2)Pig=Pig*101325.0!-------------------------------------------------!计?算?工¤作痢?段?的?压1力 和æ时骸?间?值μ!-------------------------------------------------!计?算?各é燃?层?时骸?燃?烧?室酣?的?平?衡a压1力 Pc_eqdo i=0,num,1Pc_eq(i)=(density_p*Ctz*fun(Sa(i),Apa(i),key)*&a*Sa(i)/At)**(1/(1-pn))end do!计?算?各é燃?层?时骸?平?衡a压1力 的?修T正y值μdPc_eqdPc_eq=0.0do i=1,num,1dPc_eq(i)=Pc_eq(i)*(Sa(i)-Sa(i-1))/(Sa(i)*(1-pn))end do!计?算?各é燃?层?的?实害?际ä平?衡a压1力 值μdo i=0,num,1Pc_eq(i)=Pc_eq(i)-Apa(i)*len*fun(Sa(i),Apa(i),key)*&a*dPc_eq(i)/(de*Ctz*ga*ga*At)end do!计?算?各é燃?层?时骸?的?推?进?剂á燃?速ê值μrspeeddo i=0,num,1rspeed(i)=fun(Sa(i),Apa(i),key)*a*Pc_eq(i)**pnend do!计?算?各é燃?层?时骸?的?推?进?剂á的?推?力 值μFeqdo i=0,num,1Cf=0.0Cf=ga*sqrt(2*k*(1-(101325.0*Pe/Pc_eq(i))**((k-1)/k))/(k-1))Feq(i)=Cf*Pc_eq(i)*Atend do!计?算?燃?到?各é层?需â要癮的?时骸?间?值μtimetime=0.0do i=1,num,1time(i)=time(i-1)+de*2.0/(rspeed(i)+rspeed(i-1))end do!-----------------------------------------------------------!计?算?起e始?段?的?压1力 值μ、¢推?力 和æ时骸?间?!-----------------------------------------------------------do i=1,n,1P1_eq(i)=((Pc_eq(0)-Pig)/n)*(i-1)+Pigend dodo i=1,n,1Cf=0.0Cf=ga*sqrt(2*k*(1-(101325.0*Pe/P1_eq(i))**((k-1)/k))/(k-1))F1(i)=Cf*P1_eq(i)*Atend dodo i=1,n,1time1(i)=Apa(0)*len/(Ctz*ga*ga*At*(1-pn))*&log((Pc_eq(0)-Pig)/(Pc_eq(0)-P1_eq(i)))end do!-----------------------------------------------------------!计?算?加è上?起e始?段?时骸?工¤作痢?段?的?时骸?间?timedo i=0,num,1time(i)=time1(n)+time(i)end do!-----------------------------------------------------------!计?算?拖?尾2段?的?压1力 和æ时骸?间?值μ(按恪?照?绝?热â?膨ç胀æ过y程å计?算?,不?考?虑?有瓺剩骸?药?作痢?用?)!-----------------------------------------------------------do i=0,n-1,1P2_eq(i)=Pc_eq(num)-i*(Pc_eq(num)-101325.0)/(n-1) end dodo i=0,n-1,1Cf=0.0Cf=ga*sqrt(2*k*(1-(101325.0*Pe/P2_eq(i))**((k-1)/k))/(k-1)) F2(i)=Cf*P2_eq(i)*Atend dodo i=0,n-1,1time2(i)=time(num)+2.0*Apa(num)*len*&((P2_eq(i)/Pc_eq(num))**((1-k)/(2.0*k))-1.0)/&((k-1)*ga*At*sqrt(Roc*Toc))end do!将?平?衡a压1力 转羇化ˉ为a物?理え?大洙?气?压1的?形?式?do i=1,n,1P1_eq(i)=P1_eq(i)/101325.0end dodo i=0,num,1Pc_eq(i)=Pc_eq(i)/101325.0end dodo i=0,n-1,1P2_eq(i)=P2_eq(i)/101325.0end do!输?出?压1力 值μopen(10,file="export_inter_P.dat")do i=1,num+n+n-1,1if(i<=n-1) thenwrite(10,"(f15.5,2x,f15.5)") time1(i),P1_eq(i)else if(i>=n.and.i<num+n) thenwrite(10,"(f15.5,2x,f15.5)") time(i-n),Pc_eq(i-n) elsewrite(10,"(f15.5,2x,f15.5)") time2(i-num-n),P2_eq(i-num-n) end ifend doclose(10)!输?出?推?力 值μopen(20,file="export_inter_F.dat")do i=1,num+n+n-1,1if(i<=n-1) thenwrite(20,"(f15.5,2x,f15.5)") time1(i),F1(i)else if(i>=n.and.i<num+n) thenwrite(20,"(f15.5,2x,f15.5)") time(i-n),Feq(i-n)elsewrite(20,"(f15.5,2x,f15.5)") time2(i-num-n),F2(i-num-n) end ifend doclose(20)returnend subroutine!计?算?侵?蚀骸?比括?的?子哩?函ˉ数簓function fun(Sa,Apa,key)implicit noneinteger :: keyreal(kind=8) :: Sa,Apareal(kind=8) :: funif(key==1) thenif(Sa/Apa<=72.9) thenfun=1.0elsefun=1.3128-1.3249e-2*Sa/Apa+&1.5527e-4*(Sa/Apa)**2-4.3868e-7*(Sa/Apa)**3end ifelsefun=1.0end ifreturnend。