|
#include "math.h"
J5 f3 d+ ]& {# q1 H#include "stdio.h"
' e0 o3 V0 ^/ i9 @ o#define PI 3.1415926
+ `1 Q/ c% c/ m. y
' E9 J9 [2 x4 z" W& A, Y0 Wdouble D,S,L,ge,n,Ne,gnum,ysb,Hu,Lo,M,R,P_SC,T_SC; ; o5 j/ u2 ?" q v \" ?
/*缸径、行程、连杆长、比油耗、转速、功率、气缸数、压缩比、低热值、理论空燃比、Weibe函数常数m、气体常数、进气门关闭时压力和温度 */! m6 e+ z! @. O0 Q0 l
double m_T[720],m_P[720],m_a[720];8 ?: w; l, E. J1 N! j
/*气缸温度、压力、瞬时过量空气系数 */
4 F* D3 C8 @ p( w4 i6 M3 [ v int m_CA[720],A_SC,A_CB,A_CE,A_EO,A_SO,A_EC;7 O4 L& K' y Q8 Y1 z5 C8 Q$ ?
double Pa,Ta,hs,P,V,T,CA,m,mf,nmd,Pe,mBo,mL,dXY;0 j4 n; l l' k8 z) B- U
double Cv();
* B+ f5 S1 j! ]5 G# M double dV_dCA();
" d, r$ n7 B) v. _5 l$ @: B1 j+ g double dQw_dCA();
2 _" t5 K, g+ q4 \9 e" F double dQB_dCA();* m- L* N: R+ m
double U();; i8 h& _: B j9 P* W
double V_CA(); B/ V j: k' \- [# L
double dU_dnmd();
) X5 Y$ h% ?% j# j* _ z double dT_Ys_dCA();! [5 P( p; f' k* I$ {3 E$ |
double dT_Pz_dCA();
7 x, w0 `: Z2 P8 Y, k double dT_Rs_dCA();
* _/ r0 K& K8 a5 d+ j" j double dT_Hq_dCA();, }0 x6 q7 M# _$ Y8 j% \, A9 i
double dT_dCA(double an);
8 U H" I. C/ ] J! v void Calculate();' @" D. e( g0 u8 ~ Q8 x3 }4 @1 K
2 B. {# \/ ^( V6 Z% Z/ V: Q" b/* A编写各子函数程序*// [7 r8 G0 ]' `
double Cv() /*求定容比热*/ H( i( K1 `6 b& m; B
{
& @$ Z8 H7 H4 G
9 S! O, O; ]' N& d* \0 Y}
4 X/ I: l7 Y4 ^5 ?, y/ ~: b2 w6 p: ~9 j: M0 ]
* P3 V% w8 {5 u! h q* l
double dV_dCA() /*求dv/dφ*/! R# B$ U/ ]' A7 ?6 `* Z
{
9 r8 w0 Q1 j: [3 n: S2 k. ]+ M9 q+ E- V$ Y! R$ h
}; s9 ?6 S4 c8 p0 B8 @- p
- r H& b' Y! t- w9 n$ k% Z9 H# X" I, K3 {! i
double V_CA() /*求气缸容积*/
* R% }& |: o- x5 @2 g6 M4 k{
& @ e' x' j) N8 n' @% P7 T" d6 [3 T/ h' z1 `# K
}
. [5 s: i+ Z8 ]9 c2 N
4 Y0 v% {: j b% ~) ?% g* O! s
" b7 T/ J9 Y/ b5 y0 X+ ]double dQw_dCA() /*求dQw/dφ*/
D, V# b3 j0 K' y* X9 E1 u) n& T{% n5 c- N" F- }7 b) o) b
i7 L# t( O a* N1 s3 C: v2 V
}
6 o7 v! w0 j5 m; q7 e9 E# ~
2 o. M! {+ S4 z$ K F. F& p* d: P
$ o. I: q7 E5 M+ ~6 a h, Fdouble dQB_dCA() /*求dQB/dφ*/2 g6 F3 X/ p c
{& Z8 m$ @$ W( I4 z9 U! g
: Y. E% x, C; e0 n9 A
}+ V! o5 x; b0 }8 p. }
9 V8 N; @/ h" l
9 j' H1 Q- L3 T" ^1 ^double U() /*求u*/
% a7 ~2 {2 G* Z8 P3 h& f. d" n T{
5 h& h3 g# y! x( J; V- J% a. X$ s$ m H2 u, S3 F, q
}
1 }# z/ r# j3 R. |" C2 W
, g$ w2 c& W+ a) ]1 X" E* c! J
6 ^* S3 e5 B* F z6 a+ kdouble dU_dnmd() /*求du/dλ*/$ G+ e! Z9 r% d2 T* n4 u& {- Y' o" ?
{
4 q: w+ ^; s0 ^6 [" [8 s& m9 {
9 Z$ V6 w4 A8 ~* N* i}
7 @9 e# U. Q1 M) t8 i; N6 B
! b+ l2 J l5 a$ a2 W1 w6 x! B" bdouble dT_Ys_dCA() /*压缩期*/# Q& G0 R: ^/ d7 `& \3 T
{
: W0 B7 }+ R" ?+ r. E/ g
# J$ n" |" A2 Q1 p}% u; [) \" a6 _' R
' t& \- e, p) O4 n
' E: N8 w5 q+ \( {double dT_Pz_dCA() /*膨胀期*/
& ~# e1 O; h. G; ^{
$ S. t; D) X0 z- Z& m( f$ u6 h) A' ]: J& V! i
}
4 [" t0 O" D8 Q4 Y2 F: z: J2 Q4 C5 q1 l, m: z2 G6 {" i
& x3 _; W8 h$ e; @double dT_Rs_dCA() /*燃烧期*/
1 s! L o* D+ D* d- T{+ ]% b1 ?+ Y) w5 T; s1 {. o( E
/ ^) S3 o; z3 @% D* _- J9 F$ D
}
" x! W6 h3 _9 n& j f5 d
7 C9 \1 Z8 W" s7 n2 ?7 m& _; F" ]
double dT_dCA(double an) /*求dT/dφ*/
0 v) _8 k- T$ X{8 `6 |( J2 f f; _; {/ M
CA=an*PI/180;$ C$ s9 x% j5 B W$ x! I8 T
V=V_CA();
# ^8 s$ X$ ~2 Q+ v0 T if(A_SC<an && an<A_CB) return dT_Ys_dCA();
3 M) T! [ v( M" T* [6 [; { if(A_CB<=an && an<=A_CE) return dT_Rs_dCA();$ ?4 ~/ M6 n* A+ ]# m5 B5 D/ y
if(A_CE<an && an<=A_EO) return dT_Pz_dCA();
8 j) _8 Z9 C. `' ?/ F- x9 t if(A_EO<an && an<=A_SO) /*换气过程不计算,线性赋值,避免零值 */9 o& [; _# W: P G' T' g2 b$ t3 d9 ~
P=110000+(m_P[(int)A_EO]-110000)*(A_SO-an)/(A_SO-A_EO);
, x" v5 U& K; u' u3 I6 u if(A_SO<an || an<A_EC) . B7 p( x9 \/ V) }7 ~0 Y7 i( |% I9 U
P=110000-20000*(an>A_SO?an-A_SO:an-A_SO+720)/(A_EC-A_SO+720);
* @* z6 P- H7 m4 ^ if(A_EC<=an && an<=A_SC) P=90000;0 j; D7 m0 g- L
return 0;
% g# O9 a0 \: F" P5 i; c}
! ?9 V# v: I: |& r' \
r+ ^* x* N# J0 Gvoid Calculate(void)
* V1 U0 X3 w- T/ k/ T{
2 j- L% k/ P8 I double Tpre,K1,K2,an;6 r, ?' C T4 b: V' \0 v' ?
int index;
1 g) P: m; W; u$ H* R# l! P) [0 Z5 s Pe=30*4.0*Ne/(gnum*100000*n*S*PI*D*D/4); /*平均有效压力bar*/: K7 l8 ]$ ?2 [
mBo=Ne*ge/(30000000*n*gnum); /*单缸循环供油量kg */$ i9 @+ h4 x( d
CA=A_SC*PI/180; /*进气关闭时的角度转弧度*/$ {: `( R) U p9 k: d! C
V=V_CA();/*进气关闭时角度下的气缸容积*/& n1 l6 D1 h* |: u' j1 h
P=P_SC;3 G3 C/ C3 X, Q9 I- T: N
T=T_SC;
, i6 p; T# ^1 m Q: E3 T index=(int)A_SC;5 V1 U3 i9 V6 F0 V% b
m_T[index]=T;
6 G* i& D! G: |2 L$ u: |# m m_P[index]=P;9 A6 q" n* e3 q5 Y- q
m=P*V/(R*T);/*进气关闭时角度下的气缸内工质质量*/: b _ U: |( d: b
mL=m-0.01*mBo;/*进气关闭时角度下的气缸内空气质量*/
. z. ]3 z) S3 o7 k0 T mf=m-mL;
) s: Q( |( e2 B9 }. S9 ? p Tpre=T;+ m/ [- d* q% R1 g2 |
an=A_SC+1;5 P8 f! o5 Y+ E; D/ C J
, Z4 C$ K0 y' A# W$ U do{; |9 f6 B' p" d% Y/ g& h! q& L
2 i- t7 g+ d% O6 O. o* {# ] /*B 编写欧拉法求解常微分方程程序 */! h$ I/ j0 g# ?- [1 w: E
5 } L( h a; k% v5 V
}while(an!=A_SC+1);
" V n, s: |4 l0 d}
2 u( G. z( X! w2 Z3 E, d) s1 Y9 n2 Z1 J4 F4 f
void main(void)
- i( a$ f: J% {{
) X4 V; i' S: I5 {9 D int i;" W: N7 Q8 z- l# n
FILE *fp;) l. f" ~& T# H( x
D=0.11; /*发动机数据按各自的任务书输入 */
4 }) o' s' |& X7 R S=0.13;1 P7 d, x" d" i6 |2 A: |
L=0.21;
8 r8 s7 s) g0 e ge=236.0;+ y: R6 m( s1 g" _; |4 s, C8 N
n=2400;
/ o: L1 K. j- X- Z. U4 U* s Ne=101568;8 P. |# A3 E* T
gnum=6; ysb=17; M=0.7;5 p% |* T% h, _/ w( r/ @7 m
Hu=41868000;4 ], S+ F v% J6 x! T& K5 l+ [
R=287.08;
; s0 |/ s9 l& m$ k Pa=101000; /*大气压力*/' A0 r# g+ @! W+ F
Ta=300; /*大气温度*/
0 q7 \, d5 H0 o$ k$ l( Y8 o, A hs=(735.0+R)*Ta; /*大气焓值*/9 i+ r* ]. o4 }$ N8 n% S, H( u
P_SC=90000;
/ P5 T6 }% S. \ T_SC=313;& r8 e8 B" p7 B# G/ C
" W0 u$ A7 \ ^& u4 B4 Y4 {. O; w
A_SC=216; /*进气门关闭*/. E R9 {" ?8 X/ X! s
A_CB=350; /*燃烧开始*/- {4 f/ P' x2 Y( q1 S& k$ m! d/ }
A_CE=410; /*燃烧结束*/
7 { L1 F4 [8 t6 K5 K& b) s5 y' j A_EO=484; /*排气门开启*/' G( g; C$ w% L6 O
A_SO=705; /*进气门开启*/4 a: R3 T, t8 z- l4 ^9 i
A_EC=15; /*排气门关闭*/) \$ Y g: r: u6 w k" z( M
* l% s! ]7 Z: F
Lo=14.4;5 X |- z& k! Z8 U
) E) w5 i6 Y9 C, Y8 `0 s9 C! ?
for(i=0;i<720;i++)
# j3 u/ L3 |; K, }/ v {) f# i- H) G6 E1 J
m_P[i]=0;5 K- E6 k1 u! A2 ]
m_CA[i]=i;; _2 ~2 I3 x/ m3 W4 b* L% ]
m_T[i]=0;) N. D: d# l; f
}
. ?4 Y/ G# x* q
9 z& P m% G$ l Calculate();
. z% @$ a) ]) b/ L4 @. E3 I, U( p) C- k$ I. U: R% r; @2 [0 l3 E/ P
/*C编写数据输出程序,计算结束后按顺序输出0-720转角的“缸压,温度”数据到outdata.txt文件 */
3 x* |3 g7 y9 X) w; ^
+ G$ u9 K# N) E- s+ U$ O}; T& B( U' h8 E1 R
* P: P1 u) M! e+ q, @$ d
8 P: I: Z. O. h& s
|
|