【物理应用】内弹道【Matlab 313期】

一、源代码

%%
%69式双联30mm舰炮
clc
clear all
A=0.0737;         %()膛横断面积A  dm^2
G=0.354;           %弹重  kg
W0=0.22;        %药室容积  dm^3
l_g=19.54;       %身管行程  dm
P_0 =30000;       %起动压力  30kpa
fai1=1.1947834;        %次要功系数
K=1.02;        %运动阻力系数φ1
theta =0.2;       %火药热力系数 k-1
f=950000;          %火药力  kg*dm/kg 硝化棉
alpha=1;         %余容 气体分子作用修正量 dm^3/kg
delta=1.6;         %火药密度γ kg/dm^3
ome=0.175;      %第一种装药量  kg
u1=5.3752*10^-5;        %第一种装药烧速系数  dm^3/(s*kg)
n1=0.85;         %第一种装药的压力指数n1
lambda=0.3311631;     %第一种装药形状特征量λ1
lambda_s=-0.3685706;     %第一种装药分裂点形状特征量λ1s   -0.3885706
chi=0.72347956;          %第一种装药形状特征量χ1
chi_s=1.4872194;          %第一种装药分裂点形状特征量χ1s
mu=-0.033166463;            %第一种装药形状特征量μ1
et1=0.39*10^-2;            %第一种装药药厚δ01,燃烧完的厚度
d1=0.38*10^-2;             %第一种装药火药内径d1
Ro1=0.1547;             %药型系数α1    花边型药粒
%%
%常数与初值计算-----------------------------------------------------------------
l_0=W0/A;%相等体积长度l_0
Delta=ome/W0;%火药装填密度
phi=K + ome/(3*G);%忽略了后座运动能量的次要功计算系数
v_j0=196*f*ome/(phi*theta*G);
v_j=sqrt(v_j0); %假设极限速度
B0 = 98*(et1*A)^2/( u1*u1*f*ome*phi*G );
B=B0*(f*Delta)^(2-2*n1);%中间计算量
Z_s=1+Ro1*(d1/2+et1)/et1;%多孔火药燃烧分裂时截面内的相当内切圆半径,碎粒全部燃烧完时的燃去相对相随度。
psi_0=(1/Delta - 1/delta)/(f/P_0 + alpha - 1/delta);%火药燃烧百分比,已燃去相对重量
Z_0=(sqrt(1+4*psi_0*lambda/chi) - 1)/(2*lambda);%火药的已燃相对厚度z0
%%
%解算子-----------------------------------------------------------------------
C = zeros(1,12);
C(1)=chi;C(2)=lambda;C(3)=lambda_s;C(4)=chi_s;C(5)=Z_s;
C(6)=theta;C(7)=B;C(8)=n1;C(9)=Delta;C(10)=delta;C(11)=alpha;C(12)=mu;
C;
y0=[Z_0;0;0;psi_0];%相对燃烧表面积  l弹丸行程   弹丸速度    火药燃烧百分比
options = odeset('outputfcn','odeplot');%积分参数设定   输出函数时间轨迹图
[tt,y] = ode45(@ndd_fun,0:100,[Z_0;0;0],options,C);%4阶龙格库塔函数
%%
l = y(:,2);%弹丸行程
l = l*l_0;
fl = find(l>=l_g);
fl = min(fl);
[tt,y] = ode45(@ndd_fun,0:0.0001:fl,[Z_0;0;0],options,C);
 
Z = y(:,1);
lx = y(:,2);%弹丸行程
vx = y(:,3);%弹丸速度
 
psi=(Z>=0&Z<1).*(chi*Z.*(1+lambda*Z+mu*Z.*Z))+(Z>=1&Z<Z_s).*((chi_s*Z).*(1+lambda_s*Z))+(Z>=Z_s)*1;%火药燃烧百分比
l_psi=1-(Delta/delta)*(1-psi)-alpha*Delta*psi;
px=(psi-vx.*vx )./(lx+l_psi);%膛底压力
 
 
 
format;

二、运行结果

在这里插入图片描述

三、备注

完整代码或者代写添加QQ912100926
往期回顾>>>>>>
【物理应用】杨氏双缝干涉实验【Matlab 310期】
【物理应用】井筒多相流【Matlab 311期】
【物理应用】二维对流扩散温度场【Matlab 312期】

猜你喜欢

转载自blog.csdn.net/m0_54742769/article/details/114382527