|
#include "math.h", ~' C* M6 y4 U #include "stdio.h"9 p. N8 V8 f) o! r; l- n #define PI 3.1415926 D/ r7 J% f5 P( I5 J2 ?, i W2 s$ h, F7 j, n* }: j double D,S,L,ge,n,Ne,gnum,ysb,Hu,Lo,M,R,P_SC,T_SC; 4 p6 D- j6 O1 k/ X. q5 }+ T2 ~ G/*缸径、行程、连杆长、比油耗、转速、功率、气缸数、压缩比、低热值、理论空燃比、Weibe函数常数m、气体常数、进气门关闭时压力和温度 */" F! n' _- x* _! Z. G+ M/ y7 E. m# l+ ] double m_T[720],m_P[720],m_a[720];7 ?/ X3 p8 @$ j' |0 Z# f P- W /*气缸温度、压力、瞬时过量空气系数 */ " ^) N+ i8 ^( j4 W; T/ M' x) ]int m_CA[720],A_SC,A_CB,A_CE,A_EO,A_SO,A_EC; $ B9 t+ ?$ P G7 l0 c Udouble Pa,Ta,hs,P,V,T,CA,m,mf,nmd,Pe,mBo,mL,dXY; ; e+ p0 F3 a1 H4 e9 \& Pdouble Cv();2 t: G" U8 s1 K double dV_dCA();; R4 @" p- P- A double dQw_dCA(); 2 F, J# S* i4 i: O2 X5 [+ |double dQB_dCA(); * F3 r" a1 O+ K0 [; W- Rdouble U(); ! O2 [) h- Z" v) }7 xdouble V_CA();8 ` t, i5 c0 S) y' ^( w+ f' N double dU_dnmd();- K2 {0 t1 b1 i; P/ P; _4 p double dT_Ys_dCA(); , c+ U! Q7 g2 d% H# j! i) ]2 `1 F2 R; vdouble dT_Pz_dCA();; H/ X% E5 U9 f, @/ V1 P double dT_Rs_dCA(); 0 O7 b, Q& W! `$ ~, O& U( ~( u( Y7 wdouble dT_Hq_dCA();: r* m% q/ h9 o/ s! M double dT_dCA(double an);, H0 [# y Q! ?, d void Calculate(); 0 g4 n( _9 a9 z) U% m, i+ Q3 v4 D; e! f$ t/ a+ b/ L" N. e6 a /* A编写各子函数程序*/ 1 p2 Q' z3 i. [" ndouble Cv() /*求定容比热*/ 9 H. O- [$ X& j+ D{ 7 q# y+ }5 c1 F$ { : U! p: s- V, @$ V8 R: O# w: a+ O} 4 B; c' u% u: @8 w* F% v3 M) z8 C* h% P( i $ O" o; z' N; b- q" n double dV_dCA() /*求dv/dφ*/r# R( j- G) k7 D R { 2 C3 L8 `( O* o2 B& `6 l# L- P, M" G( c: M }' N- C) p/ ^' i 8 A0 K- ?& v' ]% k+ ~9 D / ?8 B( b! {0 i! | double V_CA() /*求气缸容积*/ 6 U8 u8 K9 p6 D; o0 J2 l+ j1 N% A{( X# L2 W' [' G* E . }' G& _# n1 ]* j( W }+ W/ |# s) V$ g+ O: a: C0 D5 t4 F 9 F( x' K" ], e/ } 8 w) V7 W r: e5 a double dQw_dCA() /*求dQw/dφ*/ ' ?: { h! j+ f2 m* r{ & d6 [6 V3 Y7 H' _, \ . `% E/ M' n2 u7 z, m* f( p' b. O}6 N9 d( D6 Y0 D, }4 x ) e s. l5 I, n& u) N
9 n, H9 g2 ^5 V3 O. rdouble dQB_dCA() /*求dQB/dφ*/+ N. L6 y' @9 W1 b1 T {- _( c' v0 W( r; w3 B: q* ~ " ^# _' j+ G3 e* l1 T3 p } 0 |7 W' A3 d% }- e! P Z) s$ \( E8 D+ @' n, N1 Y/ ~9 C
: J3 A& |7 k: r$ J/ N) I( idouble U() /*求u*/ 1 x, H0 j5 A7 G{ & V* \1 v! a3 O& d+ ~' w5 G: Q. O' E. e, B, P. C8 k }E8 L* q: L5 \8 p" f6 d
, y# i* b4 R% T ! ]# m2 n" ?/ F% a% b* F( `double dU_dnmd() /*求du/dλ*/8 ?" L2 r8 J' O% H8 N8 R* O. p {( g' {& q8 j& U+ x- ~
# G4 v5 |) m M6 k, e} 5 a, F, T/ Y5 {3 A9 {( ] 5 m. w% @' L' T1 r+ Adouble dT_Ys_dCA() /*压缩期*/; N0 P% S. j% o& r8 u! `4 L- f0 g( S {& x4 t" L& ~2 `* f
" y$ c( p5 I, k5 u}9 G3 u+ d1 k( c2 q7 f 1 T* k7 @' v' j; t& N 9 ?4 H/ e7 p9 ~; G double dT_Pz_dCA() /*膨胀期*/- t3 n% N4 f! [* B+ `7 e1 T { . x4 a% j6 s& n. Z9 s& k( C # w- [3 |+ {4 m x: u2 _ b} - N4 R6 p1 K, N2 }* i _& O6 s& q3 w$ n # `2 L- q1 H* y/ O* [" B3 J double dT_Rs_dCA() /*燃烧期*/ q" b* r& v- ]. s$ N{ S% B7 b; `& R: P# X+ i* P* C 5 o3 }4 d; f% d" J2 g2 A* T" U} + V0 `# ?% H, n- O; t. ^, M1 n& h, `
7 g) q5 k, C6 z$ L1 n& rdouble dT_dCA(double an) /*求dT/dφ*/6 N" N0 U6 `6 D+ \ {5 ^) i+ @/ `6 I: {8 I6 Y CA=an*PI/180; & s" g$ m- _' G- m \# {- CV=V_CA(); ( Z: R! R: `% t% nif(A_SCc! t) A" s; F' b/ [ Z7 d$ ^- d if(A_CB<=an && an<=A_CE) return dT_Rs_dCA();0 P- U( }3 Q, c- o2 @( k7 v5 B7 I: v if(A_CE- m. f7 o) _5 a* R! }' M) U$ }if(A_EO2 [& }. s5 t4 y7 xP=110000+(m_P[(int)A_EO]-110000)*(A_SO-an)/(A_SO-A_EO);& l* Q2 b* X" M0 _) k4 ~, @) ]4 e if(A_SO3 g% @% n0 I& G; Z5 U+ X' h( q& ^ P=110000-20000*(an>A_SO?an-A_SO:an-A_SO+720)/(A_EC-A_SO+720);: c& _& X( B6 L1 u. N if(A_EC<=an && an<=A_SC) P=90000;: ^6 r# |$ h* `) J# P4 e& k7 Z- w return 0; 4 v F+ \) g3 A) M}) ~ _0 ]# G7 R7 r5 r
4 {/ x; \- ~. c9 r% s) e1 ]. wvoid Calculate(void), X% x/ b" _3 t* Z: ~' { { 8 G# ~! C- X( a3 S- ^) E, k5 _double Tpre,K1,K2,an;( p4 {6 O# r z# a$ X int index;5 @4 v* b# c* g8 S( C! S- | Pe=30*4.0*Ne/(gnum*100000*n*S*PI*D*D/4); /*平均有效压力bar*/* l9 U. c) t" q3 N+ x) F# R mBo=Ne*ge/(30000000*n*gnum); /*单缸循环供油量kg */' n7 M8 @4 [1 ], q CA=A_SC*PI/180; /*进气关闭时的角度转弧度*/# T6 F1 f- e$ K V=V_CA();/*进气关闭时角度下的气缸容积*/- M/ U2 U/ t8 G P=P_SC;$ F+ `5 x) H4 h+ b( J T=T_SC; 1 N+ L- T0 j9 @3 Jindex=(int)A_SC;F8 H J) ?% |3 c7 X& z m_T[index]=T;K1 l A+ p" o m_P[index]=P;1 K! U. E1 }. j1 o4 A! Z* {, ^ m=P*V/(R*T);/*进气关闭时角度下的气缸内工质质量*/0 @7 T$ ^+ S; x, [+ l mL=m-0.01*mBo;/*进气关闭时角度下的气缸内空气质量*/4 p( i4 C5 Y2 W1 C mf=m-mL;- {& L1 w' M0 T+ D5 \& o Tpre=T;. J' U$ f) b' r6 i an=A_SC+1;9 G1 t5 t- P; v5 [ Q
- U3 r9 V$ r9 f5 |do{ 6 v. _, K: ^$ V6 O + O5 o! n$ I+ e; j7 Y' t/*B 编写欧拉法求解常微分方程程序 */ ! R, P4 y: t% x5 n0 T ] w% Y3 f& r3 D; {" ^; M}while(an!=A_SC+1);0 F( P$ n/ ] y' q, A: P" ~ }0 u9 M1 e( l% A* c$ A) i+ ? ' ?9 j3 H. ?( v void main(void)" ?8 y5 J7 {+ E& ?" i {, {* p8 v; W9 R, C7 z1 o int i; , g. N/ X& [6 H( e: aFILE *fp;( Y- s3 x; u/ _4 z) R9 G/ t2 k D=0.11; /*发动机数据按各自的任务书输入 */ 0 y" X4 r7 _$ V3 p: S, {4 TS=0.13;/ u$ }) N5 ]# o: y- ]7 d% f L=0.21;, s( f, m- c) ~6 T ge=236.0;0 W6 A; R- ^) D# p n=2400; / f$ V) Z) `: W& G5 Y7 ^0 eNe=101568; 3 s1 @ \$ Q- I9 t+ g8 O6 L+ ?/ x1 ~8 Kgnum=6; ysb=17; M=0.7;4 s. v- w4 Z# |4 F t3 c Hu=41868000;]' }# l8 G9 T/ `# C R=287.08;8 d- O1 J7 ^0 @! ?) N Pa=101000; /*大气压力*/7 W& F4 r7 k9 z Ta=300; /*大气温度*/ 8 s+ H' j* m# Ghs=(735.0+R)*Ta; /*大气焓值*/ 8 g I3 a" k& L- H7 _P_SC=90000;( N Y5 Y: f2 i, m# ?7 Q T_SC=313; * g: T7 P& R) r; r+ n+ ~+ p; C, N3 a8 V! P8 a: `3 c$ W A_SC=216; /*进气门关闭*/ 8 [; r. o" A1 j$ H2 S$ W# qA_CB=350; /*燃烧开始*/. B( }- ?! q# e A_CE=410; /*燃烧结束*/ ; b7 u( c3 x" Z! p5 ?% m9 o5 XA_EO=484; /*排气门开启*/ / w6 R$ g8 ?6 IA_SO=705; /*进气门开启*/7 C2 }6 R' e. Z- ]- R. S* P6 p A_EC=15; /*排气门关闭*// p3 O* b+ R! l # P6 d5 h* T P. N% T Lo=14.4; 3 R! M+ q6 j: V, F, g6 k" V1 w- B for(i=0;i<720;i++): Q2 \9 k- D+ ?5 E {3 }, a- s, |% p4 B4 J m_P[i]=0;- S& k) P' s4 A8 [1 Y0 y3 j m_CA[i]=i;- ^& e3 t% l0 Z, u m_T[i]=0;8 Y& [* K) K0 L o! f1 B; S N& K } 7 r4 [) c2 P1 v5 @+ \ ]( s % s* }8 `- z! y4 t" i8 kCalculate();* {7 z, L R1 D 3 T- T4 e' S4 ~2 f1 m /*C编写数据输出程序,计算结束后按顺序输出0-720转角的“缸压,温度”数据到outdata.txt文件 */ - I, A, n/ U' H* e/ j: T2 a; ^& I3 p1 y9 s } ; t: a3 ]3 s9 ^8 U7 j! I* s6 h2 `& \: J# q8 b1 L9 S, N& n
* a8 {; k# e2 d4 a |
|