|
#include "math.h"3 h7 r ]4 C7 Y9 x& l
#include "stdio.h"; x9 X' J8 e3 D7 i [ S
#define PI 3.1415926
) x. j, n' D( I5 ~: i" @. Z# g' q- M; {2 E: `
double D,S,L,ge,n,Ne,gnum,ysb,Hu,Lo,M,R,P_SC,T_SC; # ]1 M" v0 I7 ~" z, |
/*缸径、行程、连杆长、比油耗、转速、功率、气缸数、压缩比、低热值、理论空燃比、Weibe函数常数m、气体常数、进气门关闭时压力和温度 */8 S- \4 ^' q4 a6 P8 F! @2 w
double m_T[720],m_P[720],m_a[720];/ W( \3 f9 ^. F9 w5 Q1 Z1 r
/*气缸温度、压力、瞬时过量空气系数 */4 f0 t) O9 w5 B7 L
int m_CA[720],A_SC,A_CB,A_CE,A_EO,A_SO,A_EC;
* |; r) c* L+ @& t+ p. Z double Pa,Ta,hs,P,V,T,CA,m,mf,nmd,Pe,mBo,mL,dXY;
$ z" W' L ~2 Y, G double Cv();
, C$ X, q1 ^" h, K7 C: N- R double dV_dCA();# a5 t" I( z! K9 ], `( o
double dQw_dCA();
# e) k: I" O" H4 ~6 u) G$ j double dQB_dCA();6 g) u% J! a/ ~* }0 N. Q4 P0 e. h0 I
double U();2 l) W' w8 _) \" y) i
double V_CA();$ q9 E1 k, m9 ]' d& B% b5 x
double dU_dnmd();% y! M+ D: D. ^0 E% e8 T
double dT_Ys_dCA();
$ {. y; j- A" z- n3 Y0 ` double dT_Pz_dCA();
2 S5 X& b4 w. Y& _, S1 I double dT_Rs_dCA();
0 C5 W, z3 p1 P2 s1 n9 \% Z double dT_Hq_dCA();
1 {( D: y" s, f+ a. e7 ^ double dT_dCA(double an);
6 R. M& D& i A7 {3 d M void Calculate();2 e9 \9 `) O. r2 E
% S( n2 \0 T- M$ j0 D" V2 m/* A编写各子函数程序*/
* E) u3 A) j: P double Cv() /*求定容比热*/7 V* X( C1 X( G- t% X3 n# [* E
{
/ _ T V- T# m8 p6 l
6 n/ {5 o1 _' W# Z. l}6 m0 z- t* V4 w
; S+ M: Z( W o' C
, K$ B% ]6 z1 N6 Qdouble dV_dCA() /*求dv/dφ*/
4 n( l. I$ K" h{
6 O5 n' P) b% D$ }, @; A- M
! _+ F2 p1 n& r3 k- ]! z}
$ N# ^: v3 U1 s, V/ Y
- N- i2 B! |0 P- L; J4 `9 d
. a' d% B: x: [+ j& {. M! ddouble V_CA() /*求气缸容积*/" [0 [. \7 W! d
{2 j; ]9 o: ^4 ~* b8 Y8 W
9 Y2 F8 W) t- F$ U$ X! x4 W# M0 w
}. B4 T" D- E0 P
8 E; @8 V! n6 j/ i7 ]% z
/ I3 _2 R7 W1 c( ~. W! K% }' \double dQw_dCA() /*求dQw/dφ*/
' z! g/ Y# m4 u7 Z) u' @' X6 N: U{
9 ~$ I/ T) c3 ^& W ]5 M: ?5 }( h$ o7 p5 `: a* n4 F
}& D m" g- w3 E8 s- v# o0 h/ z
7 I. r& f- T- {' g. L! V3 x1 O2 ^2 B r# ^* v
double dQB_dCA() /*求dQB/dφ*/' |2 K _1 E) E M# f& f
{4 B& q A( i) w3 {- j, J1 T3 m
m2 O* i- a' T P3 C}6 ^) }- O/ w2 w3 i; [3 n
2 V* I" ?3 l2 a4 r P
; G4 b4 v0 ]' ^" W7 N
double U() /*求u*/
2 R+ k1 t3 e% I6 _" V. c# q X1 {+ k{
+ L& j' G6 }) I, g' X5 v8 }: M- y7 o6 W3 i$ K# N6 y* n
}
2 @! b' Y" l6 x. J1 D- l$ |( R6 \3 T3 h. |3 u: \/ I
Z! X9 _9 g# x( U# A# mdouble dU_dnmd() /*求du/dλ*/
~! Q& Z3 R! Q5 e: T{, p) K) z, k! U2 B) d2 S. `, ]
3 B" F7 J+ J5 c- H}
. g( Q: Z; \; ]5 `9 Z. | ?. V+ K; k4 n3 w' n
double dT_Ys_dCA() /*压缩期*/
: Q5 g% Y$ a4 V% S8 \2 H{
" Z8 Y& l8 b y+ m6 m7 X; g/ i2 G l7 s* n1 p$ i8 q) v' I, y
}! h& p- ]4 O# _6 h# W( {# {
* t+ X9 J" p, P, ~
# u* l. R% X% Ldouble dT_Pz_dCA() /*膨胀期*/5 Z4 r1 W4 u4 v: I0 H" B3 u. l
{; S. r0 O$ g8 p) Q9 ?
* W( c* G9 N3 A: X}
8 d6 x. c/ i; E: P$ ]; N- v' W% s) H) d) I$ N
4 [( b/ C# }; d: I2 vdouble dT_Rs_dCA() /*燃烧期*/( T1 ?" i. |% D7 z
{5 a9 _5 Y2 F! _) T* Q6 n, A8 _
7 d6 s. E- Q0 w2 @2 B7 f( L
}; N4 B1 x1 T$ x5 U6 N6 m
6 |% n% t1 n& y% ]" y7 K. p
" C {8 Z( U8 z8 [& ndouble dT_dCA(double an) /*求dT/dφ*/
f: O" J9 J' P% u) ~/ `' Y{! _2 Q3 u8 `; r; W) z, x. `0 n) w
CA=an*PI/180;
6 m' d- O+ S! w6 V( q V=V_CA();
$ ?* c+ w1 M, y! x if(A_SC<an && an<A_CB) return dT_Ys_dCA();
7 j7 B: D) P* r8 n* S0 p/ f if(A_CB<=an && an<=A_CE) return dT_Rs_dCA();
# `1 {6 \5 c6 ~ if(A_CE<an && an<=A_EO) return dT_Pz_dCA();
# u( s- y) @# U1 N+ b! s if(A_EO<an && an<=A_SO) /*换气过程不计算,线性赋值,避免零值 */, }* l/ r: H/ j; a6 k" G, T
P=110000+(m_P[(int)A_EO]-110000)*(A_SO-an)/(A_SO-A_EO);7 H* Y0 D, V, o8 `9 u
if(A_SO<an || an<A_EC) , g5 V ]* n. E: R) S9 f" e2 E- K
P=110000-20000*(an>A_SO?an-A_SO:an-A_SO+720)/(A_EC-A_SO+720);! R1 L& ^5 [; b3 D( @
if(A_EC<=an && an<=A_SC) P=90000;$ V: t% n- S# a$ y4 o: p8 u
return 0;. o9 p+ y3 E7 k. h% w
}, _4 Z5 z% w8 @# b
# H6 O2 P- O% r; N0 I
void Calculate(void)9 k8 N. [, D+ G' ^, {3 |1 w
{" I8 Z( I8 ]" K9 e" }; C
double Tpre,K1,K2,an; D5 L5 {/ i# `
int index;
* r! r% n7 J6 ` Pe=30*4.0*Ne/(gnum*100000*n*S*PI*D*D/4); /*平均有效压力bar*/
7 P) ]; e/ L* _+ c: T mBo=Ne*ge/(30000000*n*gnum); /*单缸循环供油量kg */4 p6 g1 G, W: b- X% ]
CA=A_SC*PI/180; /*进气关闭时的角度转弧度*/) }9 d& \8 b3 I% D0 l
V=V_CA();/*进气关闭时角度下的气缸容积*/
/ }) [# X: D8 m% O6 L( H P=P_SC;7 q- S. |: z7 Y4 }* D6 g' ~" e. N' c; o
T=T_SC;
; z/ v+ B0 Z2 N index=(int)A_SC;4 }; W$ Z5 X; W: D7 u$ j7 `
m_T[index]=T;1 J7 [, F$ U3 ^" P9 H/ ~/ r
m_P[index]=P;$ u1 u" T, q4 O9 ?; v: i) @, s
m=P*V/(R*T);/*进气关闭时角度下的气缸内工质质量*/' Q4 o( N7 D# K: c
mL=m-0.01*mBo;/*进气关闭时角度下的气缸内空气质量*/# Q0 J9 x1 ^& D/ N- U1 ?
mf=m-mL;9 B. v0 _3 x. A; u* I6 P% z x8 Q
Tpre=T;3 S8 T6 z+ T" D2 l4 P
an=A_SC+1;- u9 Z% g; H1 ^
. E g! ]3 q% t, K3 C: Y5 ]
do{5 s3 U5 ]5 J& P3 p8 M9 ~7 R
! S; v" o5 ]0 O) T7 ] /*B 编写欧拉法求解常微分方程程序 */7 K( z- s9 [5 q) ^- L, i, Q
5 K$ y8 A; u. W! Y( ^- x2 j3 o& G }while(an!=A_SC+1);5 h; j4 n- Q0 W; ~1 m' ^
}$ p* T3 k) l0 W" m# |* N1 H
- l0 ? h- `# V0 o# gvoid main(void)
9 \" H+ h1 K6 O{$ Q F& ^4 p4 \2 X% t* I: a0 x
int i;8 D+ X4 P- t Y% j w1 |$ H6 T9 [
FILE *fp;
; s6 D& _; I+ }5 G' }4 O. d v. v D=0.11; /*发动机数据按各自的任务书输入 */: @, F/ J# r, s1 }% \
S=0.13;7 v# M5 |; P9 r! ? u* V
L=0.21;
( }+ l9 m& U" Q. i# j3 R f- C ge=236.0;4 a9 }( c% P6 S* s7 N
n=2400;+ M( y7 A7 C, n9 D
Ne=101568;
" _4 }0 \) C9 I6 e2 l H* A gnum=6; ysb=17; M=0.7;6 x6 e+ i* Y9 o% i' q
Hu=41868000;
, o2 ~0 e/ v# s, V5 h0 w R=287.08;
7 p* q1 r. p; }# j3 K% s2 T Pa=101000; /*大气压力*/7 X7 f6 u' q6 e/ t4 h
Ta=300; /*大气温度*/
7 |0 Y& w4 E% n n3 e hs=(735.0+R)*Ta; /*大气焓值*/. C/ d1 \5 `5 e$ x
P_SC=90000;
5 R/ }& f0 {2 T3 k+ m+ K( W1 c T_SC=313;- j7 B, u3 u3 h8 z+ F
/ q' T( S4 }/ k8 x. F- j
A_SC=216; /*进气门关闭*/
- l- |( m- A6 @6 J A_CB=350; /*燃烧开始*/
: X6 I `+ }+ _0 I+ f& r% }+ ` A_CE=410; /*燃烧结束*/
' a( M) Q' g$ L, |$ L3 m' Z u2 f A_EO=484; /*排气门开启*/
! w! E4 `. o# s9 C5 u! K2 c' W A_SO=705; /*进气门开启*// V! `" Y5 Q, q- r+ C% z/ k& N: Q
A_EC=15; /*排气门关闭*/
, W1 l$ Q( N' h" E' v7 D% T
. P4 R% Q3 M8 ^' c Lo=14.4;
7 S& E0 G4 l0 }: G
$ }7 d; P: D) f; Y; O7 @ for(i=0;i<720;i++)
9 ]: U5 P2 z# ` {
, v7 A0 A2 _; m+ V! K m_P[i]=0;. G# E' K4 W, |2 q* ~ t) b
m_CA[i]=i;
" m& J) ^' x8 E4 Y; M0 G3 i m_T[i]=0;# @9 Z( M6 T1 n& _$ i2 X7 P
}
: T8 G7 D" h! Q+ b3 X
: c) u2 a, E3 z2 [, z Calculate();
6 x7 K( D7 y, N/ B1 q& X1 X+ Z+ O! {( d( u8 i0 q
/*C编写数据输出程序,计算结束后按顺序输出0-720转角的“缸压,温度”数据到outdata.txt文件 */
: ^, @& B7 a' b0 U5 k, f+ {% U4 t, y/ z# u3 q
}# n1 N9 ^ f4 D9 m
. ~# O4 Q: B, J% F
I1 \6 l* `- E$ g( A6 i- f: x& N |
|