内弹道程序
- 格式:docx
- 大小:14.65 KB
- 文档页数:3
火炮内弹道求解与计算
火炮内弹道是指火炮射击时炮弹在火炮内的运动轨迹。
要解决火炮内弹道问题,需要考虑炮弹在炮管内的运动特性,以及发射药燃烧产生的气体对炮弹的推动力。
本文将从炮弹的运动方程入手,分析火炮内弹道的解法并进行计算。
炮弹的运动方程可以表示为:
ma = F - mg - fd - fL
其中m是炮弹的质量,a是炮弹在炮管内的加速度,F是发射药燃烧产生的推动力,g是重力加速度,fd是炮弹在炮管内受到的阻力,fL是炮弹在炮管内受到的气体偏转力。
在火炮运动方程中,炮弹在炮管内的加速度a是常量,可以通过测量炮弹的初速度和射程得到。
炮弹的初速度可以通过实验或者计算得到。
发射药燃烧产生的推动力F可以通过推进药的燃烧速率和燃烧产物的排放速度进行计算。
通过实验或者模拟可以得到推进药的燃烧速率和燃烧产物的排放速度。
炮弹在炮管内受到的阻力fd可以通过火炮内管壁的摩擦力和火药燃烧产生的气体对炮弹的阻力进行计算。
火炮内管壁的摩擦力可以由实验和数学模型得到。
火药燃烧产生的气体对炮弹的阻力可以通过实验和气体动力学模型计算。
炮弹在炮管内受到的气体偏转力fL可以通过气体对炮弹的作用力和炮弹的偏转角度进行计算。
气体对炮弹的作用力可以由实验和气体动力学模型得到。
炮弹的偏转角度可以由实验或者数学模型计算。
通过解决火炮内弹道问题,可以得到炮弹的运动轨迹和射程。
在实际应用中,可以通过对火炮内弹道进行数值模拟和优化计算,提高火炮的射击精度和射程。
内弹道及枪膛合力Matlab程序clear;close all;format longd=0.0127;S=0.82*0.0127^2;V0=2.04e-5;l_0=V0/S;lg=0.924;f=1000000;alpha=0.001;w=0.017;rou=1600;theta=0.2;phi=1.45;chi=0.79825;lamda=0.1387;mu=-0.043956;e1=0.00052/2;u1=7.5991e-10;Is=e1/u1;chi_s=1.2645;lamda_s=-0.31322;zk=1.4434;%Ik=447000;m=0.048;p0=30e6;delta=800;psi0=(1/delta-1/rou)/(f/p0+alpha-1/rou); sigma0=sqrt(1+4*lamda*psi0/chi);z0=2*psi0/chi/(sigma0+1);%(sigma0-1)/2/lamda; %====赋予初值====%v(1)=0;l(1)=0;p(1)=p0;z(1)=z0;psi(1)=psi0;lpsi(1)=l_0*(1-delta/rou-(alpha-1/rou)*delta*psi(1));t(1)=0;h=0.000001;for i=1:100000z1=p(i)/Is;v1=S*p(i)/m/phi;l1=v(i);psi1=(z(i)>=0&z(i)<=1).*(chi+2*chi*z(i)*lamda+3*chi*mu*z(i)^2)*z1 +(z(i)>1&z(i)<zk).*(chi_s*z1+2*chi_s*z1*lamda_s*z(i))+(z(i)>zk).*0;lpsi1=-l_0*(alpha-1/rou)*delta*psi1;p1=((f*w/S+p(i)*l_0*delta*(alpha-1/rou))*psi1-theta*phi*m*v1*v(i)/S-p(i )*l1)/(l(i)+lpsi(i));z2=(p(i)+h*p1/2)/Is;v2=S*(p(i)+h*p1/2)/m/phi;l2=v(i)+h*v1/2;psi2=(z(i)>=0&z(i)<=1).*(chi*z2+2*chi*(z(i)+h*z1/2)*lamda*z2+3*chi*mu*z 2*(z(i)+h*z1/2)^2)+(z(i)>1&z(i)<=zk).*(chi_s*z2+2*chi_s*z2*lamda_s*(z(i )+h*z1/2))+(z(i)>zk).*0;lpsi2=-l_0*(alpha-1/rou)*delta*psi2;p2=((f*w/S+(p(i)+h*p1/2)*l_0*delta*(alpha-1/rou))*psi2-theta*phi*m*v2*( v(i)+h*v1/2)/S-(p(i)+h*p1/2)*l2)/((l(i)+h*l1/2)+(lpsi(i)+h*lpsi1/2));z3=(p(i)+h*p2/2)/Is;v3=S*(p(i)+h*p2/2)/m/phi;l3=v(i)+h*v2/2;psi3=(z(i)>=0&z(i)<=1).*(chi*z3+2*chi*(z(i)+h*z2/2)*lamda*z3+3*chi*mu*z 3*(z(i)+h*z2/2)^2)+(z(i)>1&z(i)<zk).*(chi_s*z3+2*chi_s*z3*lamda_s*(z(i) +h*z2/2))+(z(i)>zk).*0;lpsi3=-l_0*(alpha-1/rou)*delta*psi3;p3=((f*w/S+(p(i)+h*p2/2)*l_0*delta*(alpha-1/rou))*psi3-theta*phi*m*v3*( v(i)+h*v2/2)/S-(p(i)+h*p2/2)*l3)/((l(i)+h*l2/2)+(lpsi(i)+h*lpsi2/2));z4=(p(i)+h*p3)/Is;l4=v(i)+h*v3;v4=S*(p(i)+h*p3)/m/phi;psi4=(z(i)>=0&z(i)<=1).*(chi*z4+2*chi*(z(i)+h*z3)*lamda*z4+3*chi*mu*z4* (z(i)+h*z3)^2)+(z(i)>1&z(i)<zk).*(chi_s*z4+2*chi_s*z4*lamda_s*(z(i)+h*z 3))+(z(i)>=zk).*0;lpsi4=-l_0*(alpha-1/rou)*delta*psi4;p4=((f*w/S+(p(i)+h*p3)*l_0*delta*(alpha-1/rou))*psi1-theta*phi*m*v1*v(i )/S-(p(i)+h*p3)*l4)/((l(i)+h*l3)+(lpsi(i)+h*lpsi3));z(i+1)=z(i)+h*(z1+2*z2+2*z3+z4)/6;l(i+1)=l(i)+h*(l1+2*l2+2*l3+l4)/6;v(i+1)=v(i)+h*(v1+2*v2+2*v3+v4)/6;psi(i+1)=psi(i)+h*(psi1+2*psi2+2*psi3+psi4)/6;lpsi(i+1)=lpsi(i)+h*(lpsi1+2*lpsi2+2*lpsi3+lpsi4)/6;p(i+1)=p(i)+h*(p1+2*p2+2*p3+p4)/6;t(i+1)=t(i)+h;if l(i)>=lg;T=i;break;endendfigure(1)plot(t*10^3,p/1e6,'linewidth',1.5);hold ongrid ontitle('\fontsize{12}\bf(t-p曲线)');xlabel('\fontsize{12}\bf时间 t 单位:ms');ylabel('\fontsize{12}\bf膛内压力 p 单位:Mpa');figure(2)plot(t*1e3,v,'linewidth',1.5);grid ontitle('\fontsize{12}\bf(v-t曲线)');xlabel('\fontsize{12}bf时间 t 单位:ms');ylabel('\fontsize{12}\bf弹丸速度 v 单位:m/s');figure(3)plot(l*1e1,v,'linewidth',1.5);grid ontitle('\fontsize{12}\bf(l-v曲线)');xlabel('\fontsize{12}\bf弹丸行程 l 单位:mm');ylabel('\fontsize{12}\bf弹丸速度 v 单位:m/s');figure(4)plot(l*10,p/1e6,'linewidth',1.5);grid ontitle('\fontsize{12}\bf(l-p曲线)');xlabel('\fontsize{12}\bf弹丸行程 l 单位:mm');ylabel('\fontsize{12}\bf膛内压力 p 单位:Mpa');%弹丸膛内时期膛底合力 F_pt 单位:NF_pt=1.34*10^(-4)*p;%后效期膛底合力 F_pt1 单位:Nt1=0.002288:0.000001:0.006537;F_pt1=12231.10*exp(-(t1-0.002288)/0.00107);figure(5)plot(t*10^3,F_pt,t1*10^3,F_pt1,':','linewidth',1.5);legend('F_pt','F_pt1');grid ontitle('\fontsize{12}\bf(t-F_pt曲线)');xlabel('\fontsize{12}\bf时间 t 单位:ms');ylabel('\fontsize{12}\bf膛底合力 F_pt 单位:N');tspan=length(t)/30;tspan=1:ceil(tspan):length(t);tspan(end)=length(t);fprintf('t(ms) p(Mpa) v(m/s) l(dm) z psi ');format short g;Result=[t(tspan)' (p(tspan)/1e6)' v(tspan)' l(tspan)' z(tspan)' psi(tspan)']。
内弹道计算程序%内弹道计算程序function nddclc;clear;%构造与装填条件------------------------------------S =1.681; %枪(炮)膛横断面积 dm^2q = 10.24; %弹重 kgW_0 = 10.35; %药室容积 dm^3l_g = 62.25; %身管行程 dm%进程的进行条件-------------------------------------P_0 = 45000; %起动压力 kpatheta = 0.25; %火药热力系数K = 1.222; %次要功系数%装填条件--------------------------------------------delta =1.6; %火药密度 kg/dm^3f = 948000; %火药力 kg*dm/kgalpha =1 %余容 dm^3/kgomega = 10.35; %药量 kgV = 0.9627; %烧速指数u =0.0000088; %烧速系数 dm^3/(s*kg)%火药特征(仅适用于多孔火药)-----------------------------e_1 = 0.0088; %厚度(肉厚)/2 dmd_0 = 0.022; %孔道直径 dmD_0 = 0.1364; %药粒直径(梅花形不用管此项) dmc = 1.3 %药粒长度/2 dmn = 7; %孔数flag = 1; %1:圆柱形多孔火药 2:梅花形七孔火药 3:梅花形十四孔火药 4:梅花形十九孔火药%形状函数 ------Flag = [ 1 n 0 D_0 0 0.2956;2 8 65.2968 d_0+4*e_1 d_0+2*e_1 0.1547;8/3 47/3 141.4764 d_0+4*e_1 d_0+2*e_1 0.1547;3 21 195.8903 d_0+4*e_1 d_0+2*e_1 0.1547];F1 = Flag(flag,1);F2 = Flag(flag,2);F3 = Flag(flag,3);F4 = Flag(flag,4);F5 = Flag(flag,5);F6 = Flag(flag,6);Pi_1 = ( F1*F4 + F2*d_0 )/(2*c);Q_1 = ( F3*F5*F5 + F1*F4*F4 - F2*d_0^2 )/( 4*c^2 );beta = e_1/c;chi = ( Q_1 + 2*Pi_1 )*beta/Q_1;lambda = ( n - 1 - 2*Pi_1 )*beta/( Q_1 + 2*Pi_1 );mu = ( 1 - n )*beta^2/( Q_1 + 2*Pi_1 );psi_s = chi*( 1 + lambda + mu );rho = F6*( d_0/2 + e_1 );Z_s = 1 + rho/e_1;chi_s = ( psi_s*Z_s^2 - 1 )/( Z_s^2 - Z_s );lambda_s = psi_s/chi_s - 1;%常数与初值计算-------------------------------------------------------l_0 = W_0/S;Delta = omega/W_0;phi = K + omega/(3*q);v_j = 196*f*omega/(phi*theta*q);v_j = sqrt(v_j);B = 98*(e_1*S)^2/( u*u*f*omega*phi*q );B = B*(f*Delta)^(2-2*V);p_0 = P_0/(f*Delta);psi_0 = (1/Delta - 1/delta)/(f/P_0 + alpha - 1/delta);Z_0 = (sqrt(1+4*psi_0*lambda/chi) - 1)/(2*lambda);C = zeros(1,11);C(1)=chi;C(2)=lambda;C(3)=lambda_s;C(4)=chi_s;C(5)=Z_s;C(12 )=mu;C(6)=theta;C(7)=B;C(8)=V;C(9)=Delta;C(10)=delta;C(11)=alpha;%解算子-------------------------------------------------------------------options = odeset('outputfcn','odeplot');[t,y] = ode45(@ndd_fun,0:100,[Z_0;0;0],options,C);l = y(:,2);l = l*l_0;fl = find(l>=l_g);fl = min(fl);[t,y] = ode45(@ndd_fun,0:0.005:fl,[Z_0;0;0],options,C);Z = y(:,1);l = y(:,2); v = y(:,3);psi = (Z>=0&Z<1).*( chi*Z.*(1 + lambda*Z + mu*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;p = ( psi - v.*v )./( l + l_psi );p = p*f*Delta/98.0665;v = v*v_j/10;l = l*l_0;t = t*l_0*1000/v_j;fl = find(l>=l_g);fl = min(fl)+1;p(fl:end)=[];v(fl:end)=[];l(fl:end)=[];t(fl:end)=[];subplot(2,2,1);plot(t,p,'linewidth',2);grid on;xlabel('\fontsize{8}\bft (ms)');ylabel('\fontsize{8}\bfp (kg/cm^{2})');title('\fontsize{8}\bfp-t曲线');subplot(2,2,2)plot(t,v,'linewidth',2);grid on;xlabel('\fontsize{8}\bft (ms)');ylabel('\fontsize{8}\bfv (m/s)');title('\fontsize{8}\bfv-t曲线');subplot(2,2,3)plot(l,p,'linewidth',2);grid on;xlabel('\fontsize{8}\bfl (dm)');ylabel('\fontsize{8}\bfp (kg/cm^{2})');title('\fontsize{8}\bfp-l曲线');subplot(2,2,4)plot(l,v,'linewidth',2);grid on;xlabel('\fontsize{8}\bfl (dm)');ylabel('\fontsize{8}\bfv (m/s)');title('\fontsize{8}\bfv-l曲线');tspan = length(t)/20;tspan = 1:ceil(tspan):length(t);tspan(end) = length(t);fprintf(' t(ms) p(kg/cm^2) v(m/s) l(dm)'); format short g;Result = [t(tspan) p(tspan) v(tspan) l(tspan)] format;。
枪弹沈阳理工大学胡世裕内弹道:内弹道学是研究弹丸在枪膛内的运动规律以及火药燃烧规律的科学弹丸在内弹道运动过程:1.点火过程点火是射击的开始,此时枪手瞄准目标并锁定目标,扣动枪扳机,击针冲击弹丸底火,使得底火药点燃,底火药的火焰又进一步使底火中的点火药燃烧,产生高温高压气体和灼热的小粒子(未燃尽的火药燃烧产物),并进一步点燃药室的火药,这就是所谓的点火过程。
2.挤进膛线的过程在完成点火过程后,火药燃烧,产生大量的高温高压气体,并推动弹丸运动,弹带逐渐挤进膛线,阻力不断增加,在弹带全部挤进膛线之后,阻力达到了最大值,这时弹带被划出沟槽并与膛线完全吻合。
3.膛内运动弹丸的弹带全部挤进膛线之后,随着火药的继续燃烧,不断产生具有很大作功能力的高温高压气体。
在这作用之下,弹丸一方面沿着枪管轴线方向向前运动,另一方面又沿着膛线做旋转运动。
在弹丸运动的同时,正在燃烧的火药气体也随同弹丸一起向前运动,而枪管本身则向后运动,在这过程中子弹作用部也与战斗部发生分离,前者被枪管内部挂钩反弹处了枪管,称为弹壳。
这个过程中膛内气体压力先增加到最大值而后开始下降,而战斗部的速度是一直增加,战斗部到达到达枪口瞬间,战斗部速度称为枪口速度(注意这仍不是最大速度),以后,战斗部离开枪管而在空中飞行。
4.火药气体对弹丸后效作用过程战斗部飞出枪管之后,在后面的火药气体也随之喷出。
这时,气体的运动速度将大于弹丸的运动速度,对于弹丸仍然起到了推动作用,使得弹丸继续加速,但是,由于气体流出后迅速向四周扩散,在枪口一段距离之后,气体运动速度就小于了战斗部的运动速度,使得火药气体不再对战斗部起到推动作用,此时战斗部的速度达到了最大值。
外弹道:外弹道学是研究各种弹丸在空气中运动规律及相关问题的科学稳定飞行原理陀螺稳定原理:利用高速旋转所产生的陀螺效应来改变弹轴的运动规律,以达到飞行稳定的目的。
气体炮一维内弹道程序【摘要】气体炮一维内弹道程序是一种重要的仿真工具,能够帮助研究人员对气体炮系统进行分析和优化。
本文从研究背景和研究意义入手,介绍了气体炮一维内弹道程序的基本原理和模拟方法,探讨了其在军事、航天等领域的应用潜力。
总结了该程序的发展现状并展望未来的研究方向,指出其在未来的发展中具有重要意义。
气体炮一维内弹道程序的研究成果对于提升气体炮系统的性能和效率具有重要意义,对于军事和民用领域都有着广泛的应用前景。
通过本文的研究,有望为气体炮领域的进一步发展提供有力支持。
【关键词】气体炮、一维内弹道程序、基本原理、模拟方法、应用领域、发展现状、未来展望、总结、展望、研究成果、研究意义1. 引言1.1 研究背景气体炮是一种利用高压气体驱动的武器系统,具有高射速、高射程和高杀伤力的特点,广泛应用于军事领域。
随着科技的发展,气体炮的内弹道模拟成为了一个重要的研究方向。
通过建立一维内弹道程序,可以模拟气体炮发射过程中的各项参数变化,为设计和优化气体炮系统提供了重要依据。
一维内弹道程序也可以用于分析气体炮的性能和特性,为气体炮的改进和进一步研究提供支持。
研究气体炮一维内弹道程序具有重要的理论意义和实际应用价值。
在现有的研究基础上,本文将对气体炮一维内弹道程序的基本原理、模拟方法、应用领域、发展现状及未来展望进行深入探讨,旨在为相关研究提供参考和借鉴。
1.2 研究意义气体炮是一种利用高压气体推动弹丸的武器系统,其内弹道程序的研究对于提高武器系统的精度和性能具有重要意义。
气体炮一维内弹道程序的研究意义主要体现在以下几个方面:1. 提高武器系统的精度和命中率:通过建立合理的内弹道程序,可以准确控制弹丸的发射参数和飞行轨迹,从而提高武器系统的精度和命中率,增强作战效果。
2. 降低武器系统的成本和维护难度:通过优化内弹道程序,可以降低武器系统的能耗和弹药消耗,减少装备维护的工作量和成本,提高武器系统的可靠性和稳定性。
#include"stdio.h"
#include"math.h"
#include"stdlib.h"
#define roup 1600
#define w 14.72
#define f 950000
#define sita 0.2
#define alpha 0.001
#define u1 1.14*10^-8
#define n1 0.8275
#define e1 0.000893
#define x1 1.06
#define lamada -0.0566
#define miu 0.0
#define m 46
#define s 0.01905
#define V0 0.020027
#define lg 7.3206
#define fai 1.12667
#define P0 3*10^7
#define deda 735
#define L0 1.0513
#define Vj 1642.38
#define B 3.4559
#define lgpingjun 6.96
double Y[6],Z[4];
FILE *fo;
int main()//主函数
{
Y[0]=0,Y[1]=0,Y[2]=0.04296,Y[3]=0,Y[4]=0.0223,Y[5]=0.021,Z[0]=0,Z[1]=0,Z[2]=3*pow(10,7
),Z[3]=0; //依次分别给相对时间,相对速度,相对压强,炮弹相对位移,,相对燃烧量
//相对燃烧厚度,时间,速度,压强,炮弹位移。
void rk(int n,double h);
void result();
fo=fopen("output.txt","w");
fprintf(fo,"%s"," 相对时间绝对时间炮弹位移速度压强相对燃烧量相对燃烧厚度\n");
fprintf(fo," s m m/s pa \n");
do{
result();
rk(6,0.001);
}
while (Z[3]<lg);//Z[3]表示炮弹位移,截止条件
fclose(fo);
}
//龙格库塔算法
void rk(int n,double h)
{
externvoid dery(int n,double dy[],double Y[]);
double a[4],old_Y[6],*dy,Y1[6];
int i,j;
dy =(double*) calloc(n, sizeof(double));
a[0]=a[1]=h/2;
a[2]=a[3]=h;
dery(n,dy,Y);
for(i=0;i<n;i++)
old_Y[i]=Y[i] ;
for(j=0;j<3;j++)
{
for(i=0;i<n;i++)
{
Y1[i]=old_Y[i]+a[j]*dy[i];
Y[i]=Y[i]+a[j+1]*dy[i]/3;
}
dery(n,dy,Y1);
}
for(i=0;i<n;i++)
Y[i]=Y[i]+a[0]*dy[i]/3;
free(dy);
return;
}
//右端子式
void dery(int n,double dy[],double Y[])
{
dy[0]=1;
if(Y[5]<1 )
{
dy[4]=x1*(1+2*lamada*Y[5]+3*miu*pow(Y[5],2))*sqrt(sita/(2*B))*pow(Y[2],n1) ;
}
elseif(Y[5]>=1)
{
dy[4]=0;
}
if(Y[5]<1)
{
dy[5]=sqrt(sita/(2*B))*pow(Y[2],n1) ;
}
else
{
dy[5]=0;
}
dy[3]=Y[1];
dy[1]=sita/2*Y[2];
dy[2]=1/(Y[3]+0.541-0.2756*Y[4])*(1+deda*(alpha-1/1600)*Y[2])*dy[4]-(1+sita)/(Y[3]+0.5 41-0.2756*Y[4])*Y[2]*Y[1];
Z[0]=L0/Vj*Y[0];
Z[1]=Vj*Y[1];
Z[2]=f*deda*Y[2];
Z[3]=L0*Y[3];
return;
}
//显示结果
void result()
{
staticint i=1;
{
fprintf(fo,"%13.3f",Y[0]);//相对时间
fprintf(fo,"%13.6f",Z[0]);//绝对时间
fprintf(fo,"%13.6f",Z[3]);//炮弹位移
fprintf(fo,"%13.3f",Z[1]);//速度
fprintf(fo,"%20.3f",Z[2]);//压力
fprintf(fo,"%13.6f",Y[4]);//相对燃烧量
fprintf(fo,"%13.6f",Y[5]);//相对燃烧厚度
fprintf(fo,"\n");
i++;
}
return;
}。