|
#include "math.h"" k! n6 z5 A6 T$ d
#include "stdio.h"
; J7 s8 o) S" M: k) p5 {#define PI 3.14159268 D$ f& L/ @) P6 k, D# S
r' T' w2 ~/ n1 K, B& R
double D,S,L,ge,n,Ne,gnum,ysb,Hu,Lo,M,R,P_SC,T_SC; % f3 X- E% L/ ?3 q
/*缸径、行程、连杆长、比油耗、转速、功率、气缸数、压缩比、低热值、理论空燃比、Weibe函数常数m、气体常数、进气门关闭时压力和温度 */. X! l( n4 d, v% k6 Q4 E
double m_T[720],m_P[720],m_a[720];0 h/ \, P' z$ V2 A; V) C4 J3 D- N
/*气缸温度、压力、瞬时过量空气系数 */
) L" t6 B4 J. L1 e/ j7 h4 w# ~ int m_CA[720],A_SC,A_CB,A_CE,A_EO,A_SO,A_EC;6 o) @! x8 A+ M2 f% R
double Pa,Ta,hs,P,V,T,CA,m,mf,nmd,Pe,mBo,mL,dXY;
/ C9 {. o3 K* t( p% @/ v double Cv();
5 O2 k) } z0 p$ k double dV_dCA();
6 A U: K+ i/ h1 C' M, N: e double dQw_dCA();
5 Q& C& h8 N2 j& D double dQB_dCA();
# A+ o6 }/ `5 X' s5 p4 Y# s double U();% B! \5 ` M" j! [& R1 j! |
double V_CA();
+ V, n( U% \3 {" S9 x2 y double dU_dnmd();# C, [% Z6 S2 j
double dT_Ys_dCA();+ m3 H7 d$ c7 b7 c- `3 |3 y* s- c% m
double dT_Pz_dCA();4 x; E8 O2 Z9 D1 W% V
double dT_Rs_dCA();$ p9 L+ @$ C% G8 ]8 ]: A# z
double dT_Hq_dCA();6 }0 _- z' Z2 e
double dT_dCA(double an);
. c# I! r0 S! g7 `0 G+ X% Z void Calculate();
e4 G) p6 M' A* g) @, i+ T
1 W: T: ~- W: s/* A编写各子函数程序*/
3 m* b2 U* v8 f1 T1 a0 }, k double Cv() /*求定容比热*/8 R2 h6 Y2 m- X) V, Z9 O! H
{/ Z% ?! V! y! Z- Y' N) u
% Z, }, I ?% X% m1 H}
% H& F' @$ F: C* X, K8 t
$ M; ~+ @! u/ W# C" ] I- ~- v0 w! l3 w
double dV_dCA() /*求dv/dφ*/
' t7 [5 \ k. x9 t9 s o4 P7 {{
( l0 B+ b! s; S/ I* ~+ ^9 O) ^) S1 @6 t$ v0 D" J
}
6 @9 @5 j) }$ n Q8 z. H. d4 q3 H. U$ C' T; |0 ]& e% _
7 A. y$ o% L) n4 u; ^double V_CA() /*求气缸容积*/
5 H. [* r O. v4 f, T+ r1 W{7 F, p. X: ]3 d' b& V/ P
$ U6 i9 a; b3 D% r% W7 N}
& Z: u1 K8 H0 e0 r4 C1 n" ^0 Q3 o% J' ~ R: @( h- x
0 |0 G" v1 g9 E3 Y6 hdouble dQw_dCA() /*求dQw/dφ*/
+ l$ \+ ~7 {* y: l: M, d9 }+ x{9 P2 m% Q+ |0 ]
- h2 g; M( G7 {; [; G}' h7 z3 ^+ j1 Z y4 B8 e* r* ~/ i
/ y3 A0 m) x+ h
6 g& P4 P- U: J" u6 udouble dQB_dCA() /*求dQB/dφ*/% p0 W. m/ w5 X) Q$ m
{# e# ^) E# I1 d; \: d. U
) o' P: ~1 k1 c. S6 i4 k0 Y
}
0 \9 P4 m; ~! ~( \/ ^2 O+ q0 ]+ W' C+ F! s! p, I. N" T: |+ w% T
; t% k" ~* H5 a: L: |/ k) Rdouble U() /*求u*/
; r. z7 _, M: m; `3 \{7 ~/ ]$ l$ k: o+ w: K+ S
8 |' z% O- h0 V! l, r& @; C}& _& \5 A4 W7 ?) ^2 w
_, T3 v6 V1 L8 p5 Q6 E4 F1 j
) \; X |* g8 Z$ n& S; H
double dU_dnmd() /*求du/dλ*/
; q. P m- f, H$ e{# q2 G3 \5 y/ N" a7 m
: }9 S& s0 M# _9 U
}
% l+ ?: a) E# T* l, _- Z9 B4 p6 w( D, c4 e( }% ~: p5 d
double dT_Ys_dCA() /*压缩期*// \5 _, T& ~: `: v: E3 X9 T
{
& u# @ V- ]( m/ H- B$ ?1 J5 Y: d. b) v- |0 u5 G5 w8 V! ]% r
}7 m1 ^/ G* B# a" `# u8 o& E9 s3 c
+ B+ {4 h$ D0 s* ?
% j5 x+ x8 t8 M* S, T3 z% @double dT_Pz_dCA() /*膨胀期*/
& N3 ~3 Z- v( H5 \' B! X; |4 g5 j+ |; E{
x$ w; r- N" o1 U' Z( c( g4 s" p+ T6 ^& `/ I
}9 N% G$ D' ]! ^% E( o# u
2 G6 s1 r3 {5 {6 P7 @
* o% T7 N/ V; d
double dT_Rs_dCA() /*燃烧期*/
! [, @/ `8 X# B) S" u5 B{4 V) P8 t; N7 P; V( T
1 e2 t* Q9 c4 r: B' \
}% {/ _" i9 x$ W2 J1 N9 P2 ^
; `& e. o. K0 x- M& `, Y& p- Q) ^) g- O" f* T. ^
double dT_dCA(double an) /*求dT/dφ*/$ ], a8 I9 a+ b
{% Q8 Y) @ K: f8 r7 M: i
CA=an*PI/180;
# T8 E* a: e4 K& D V=V_CA();
% T6 R- h: U/ J! p: Q0 Q if(A_SC<an && an<A_CB) return dT_Ys_dCA();
$ e# ], @& L, C0 |7 j if(A_CB<=an && an<=A_CE) return dT_Rs_dCA();
7 T- t2 k$ v; _; ?) I! N if(A_CE<an && an<=A_EO) return dT_Pz_dCA();4 x+ L( {* _$ h/ x& P# |$ h6 Z8 o9 Z
if(A_EO<an && an<=A_SO) /*换气过程不计算,线性赋值,避免零值 */" x5 U* W8 K0 G' @
P=110000+(m_P[(int)A_EO]-110000)*(A_SO-an)/(A_SO-A_EO);
W p# a. E& q- N# n* } if(A_SO<an || an<A_EC) $ J9 {$ ]) ^+ {8 _
P=110000-20000*(an>A_SO?an-A_SO:an-A_SO+720)/(A_EC-A_SO+720);% i7 J9 \2 n7 r8 i7 |' J5 X
if(A_EC<=an && an<=A_SC) P=90000;- A1 c2 [/ q d7 ?$ T
return 0;
; n, G6 v$ V7 i# F g' {}
b3 I5 c2 y( j6 |
+ E# [; o9 }5 D/ s* o4 ivoid Calculate(void)
1 Y/ ~* k8 u- `) x{5 D: N& F+ O9 k9 o# d$ x! X, Z* h( z$ l
double Tpre,K1,K2,an;: h0 v- U- N- T
int index;
" y. F! {4 ^5 ~0 g0 O Pe=30*4.0*Ne/(gnum*100000*n*S*PI*D*D/4); /*平均有效压力bar*/0 ~; x a5 D% k. H: u
mBo=Ne*ge/(30000000*n*gnum); /*单缸循环供油量kg */* H; p; V2 z& v) U4 a3 a6 ^
CA=A_SC*PI/180; /*进气关闭时的角度转弧度*/
# ^5 L8 n9 `$ ]! F3 N V=V_CA();/*进气关闭时角度下的气缸容积*/
' X; n8 G0 f8 `) Q/ ]( { P=P_SC;8 {- t4 g" n1 z0 Y I, }
T=T_SC;7 {1 X8 k b4 @' b# K' k6 `( o& M
index=(int)A_SC;
( S3 Q% Q2 v5 z m_T[index]=T; S6 H) X+ V+ g; U2 Z+ f+ V
m_P[index]=P;
1 w' H$ \ [* z2 @+ Z m=P*V/(R*T);/*进气关闭时角度下的气缸内工质质量*/
' d9 q$ I+ X: `5 ~' b/ D9 d/ [+ f mL=m-0.01*mBo;/*进气关闭时角度下的气缸内空气质量*/
6 E# K" n: g! y( y( x& V b. c mf=m-mL;- u7 Y6 f$ [. [8 d0 y% A6 r
Tpre=T;
$ {% {3 I# `4 \1 e) T an=A_SC+1;8 ~" W* p! b; y2 Y
& E& g5 f; k' ^3 W9 [. w @ do{$ P" D9 {% P$ C7 E4 F# Q
8 @9 w9 L1 |4 _3 Q /*B 编写欧拉法求解常微分方程程序 */* j2 d, {, [7 j% ~ l( f
* B! A7 c9 C( H0 X7 r4 s5 C
}while(an!=A_SC+1);
' Y8 [* v0 N; E7 X/ G$ g}% O7 o! J- r- r; _
1 w9 K' S! c2 s* y0 Y7 P
void main(void)9 ?* L# |$ a" e8 ^* m O0 m+ }( L$ `
{9 Q5 V2 u% e1 A
int i;
* S2 r, g; O' ^# z9 X5 x FILE *fp;# @6 M4 v1 r' R
D=0.11; /*发动机数据按各自的任务书输入 */. J) U( U' d4 h4 i; C
S=0.13;
5 ~( ~ U& c2 _6 ? L=0.21;6 X% H# m0 r. \" a0 J, _, v& D
ge=236.0;
: K8 U$ k1 j0 N0 f. X5 b- u n=2400;
. X" a" Z' u. x+ K" M- `" I Ne=101568;
$ \; k" e. H6 ]) j* y/ E | gnum=6; ysb=17; M=0.7;# c( O! e3 X" _2 N: |7 |1 P: O2 i+ ?5 K
Hu=41868000;
7 A7 w3 _9 u K2 t; D* _2 n R=287.08;
( H' H2 z7 h" O* F Pa=101000; /*大气压力*/
$ s7 H' a% G5 d Ta=300; /*大气温度*/" H1 U1 P4 z/ ]3 X l
hs=(735.0+R)*Ta; /*大气焓值*/
, ^% ~+ T6 t' F$ P P_SC=90000;% ]( d5 _" D1 P- q9 H6 V6 f4 g* \7 @- J
T_SC=313;
1 p$ C. I2 x6 E; O4 G
- S3 ~8 S) C' P9 B( F* z A_SC=216; /*进气门关闭*/
' i* _1 e/ C6 Y A_CB=350; /*燃烧开始*/
5 v% m. W. O! \) m A_CE=410; /*燃烧结束*/7 T& E' h7 D+ C4 O
A_EO=484; /*排气门开启*/
! O; X D3 p# B% E A_SO=705; /*进气门开启*/
4 n# m( U) ]6 H# V A_EC=15; /*排气门关闭*/" G Y4 i( f6 }' \
6 ^! W& H8 R4 K. j" S! l1 Z
Lo=14.4;
3 _' v7 X7 U6 ^" I0 D( n6 X! v) V
) Z8 U6 w$ a# h) [7 \ @0 J for(i=0;i<720;i++)
8 A* X% k* p* t4 Y {
" y# n) g6 S4 o' U! \- U! f m_P[i]=0;
' s/ ]" I/ R6 a7 @3 T4 F m_CA[i]=i;
+ N6 X: x: m) P& p% F3 n- N m_T[i]=0;
+ T4 y6 C! H, [; `0 t }( b/ s7 O' l7 X q) h& Y* C
# R3 o& M. \1 G" { Calculate();. s7 m1 q. X- F- b1 o8 z
& [4 n: \3 q& C" Q/ J* \
/*C编写数据输出程序,计算结束后按顺序输出0-720转角的“缸压,温度”数据到outdata.txt文件 */" L$ P5 D% r% n) Z
@* ]. R& T8 t2 Z G0 d F$ ]' \}
# @. D" @0 S/ K1 ?/ a; ?9 k6 |+ t$ f- i' ]
W+ c) l- t7 A7 M1 ^- o
|
|