|
#include "math.h"+ E, p" |$ U7 Y. S; w8 ?
#include "stdio.h"
; M) a- ]4 ^1 y7 ?6 l( |3 ~#define PI 3.1415926
9 [; g) o1 B' x5 U c4 ?
" b- E7 F1 D" x, E5 C: Kdouble D,S,L,ge,n,Ne,gnum,ysb,Hu,Lo,M,R,P_SC,T_SC; % R0 {$ e% h9 I
/*缸径、行程、连杆长、比油耗、转速、功率、气缸数、压缩比、低热值、理论空燃比、Weibe函数常数m、气体常数、进气门关闭时压力和温度 */: F5 K( O, h3 a; o
double m_T[720],m_P[720],m_a[720];
9 X& K1 C, E) n" Y. S( l" K& R+ V/*气缸温度、压力、瞬时过量空气系数 */5 ^- w9 P! w/ [! j
int m_CA[720],A_SC,A_CB,A_CE,A_EO,A_SO,A_EC;4 |' Q& z7 \( G$ {( ~! ~9 x
double Pa,Ta,hs,P,V,T,CA,m,mf,nmd,Pe,mBo,mL,dXY; o4 `( m+ U& {8 @) P
double Cv();- `6 U/ \+ [8 l
double dV_dCA();2 t; `' @4 D) V7 K8 f- c2 H
double dQw_dCA();+ W; Z' S; T& r: w T) M( H
double dQB_dCA();
; _0 W* D t- m8 P9 D double U();
; c! Z: y8 s* `& v/ G! F double V_CA();
# m- e' M; W# X9 k) g6 C double dU_dnmd();
) M- p. o# m) Y6 _8 `5 v5 |9 m3 E double dT_Ys_dCA();$ x) h/ Y5 t" b9 f* j( S
double dT_Pz_dCA();
% C& Y B3 Y& K9 z3 z double dT_Rs_dCA();" S, L, @ f+ D6 p) R
double dT_Hq_dCA();! t6 i) V1 a+ t5 _
double dT_dCA(double an);
3 Z( |' }7 |9 @* \# g void Calculate();
5 c: X/ Q$ g G1 i- Y& H6 A2 ]/ Z) A& ^6 U
/* A编写各子函数程序*/+ H5 K2 \( w- z a) g
double Cv() /*求定容比热*/
: k2 V! Y. D& u) X9 B$ D( o. Q) ~{$ \1 }, l5 d/ @! b4 z* a
6 ]$ }/ O0 f7 A- D& X2 a% U}
' M- H Y: h) `9 U: `7 c# d: G d y9 s
# I' C- s. q9 edouble dV_dCA() /*求dv/dφ*/' N, q/ b5 d6 E5 ^; D4 y
{; c8 i8 N& Y) l! c8 I h
' a# G% ~ V0 z( o' |1 P/ z- f2 }3 l
}8 c7 D3 `+ v; F& J- m; q9 X
: |' O, Z/ ] b1 k. O$ F
+ F; R: X: A& _( n1 x
double V_CA() /*求气缸容积*/
4 {0 e: V" K& K0 t* X6 U+ d9 F{) I- j' D- I d8 C
& }. d: n# F- Y, j
}# I6 y' S5 M- ~4 K, e8 K0 h
+ G( A1 u8 V% i4 e& [$ X4 X+ x" Y8 T( y' z \5 a
double dQw_dCA() /*求dQw/dφ*/1 ?& {" T5 K! y6 M
{ r, {) H% U ]3 P
- L s' |4 t4 N9 q" p}
2 A: k7 {( g. m4 p& S4 Q7 x# ? v
* V- Z S! \$ I3 d' F. O
double dQB_dCA() /*求dQB/dφ*/1 A1 l% d* l, m+ n. I. e6 i
{
, @( `& r1 Z: d
- W& t6 F: h4 i) b; r$ s+ Y}
* r. O; N! \6 y% D+ @0 p' C
: C" P2 w! ?2 \& k5 J% B& W( X7 t3 b3 I- c+ \% D+ W1 u1 `6 H; {7 N
double U() /*求u*// p4 w2 v% @% L7 g" _
{
1 ^! {+ x6 d: G2 C% p
0 l' {# u) ]3 P, y- O( ~' A. x}
% B1 `6 x8 `2 l- d' ^( n, `$ h$ Y6 p! N6 y' E+ P3 C: X
* v* Q3 n- ^7 ^double dU_dnmd() /*求du/dλ*/7 i n q; @- d( e. n
{
+ ^, {! V, A. i% ^- h
# r1 Y- I3 e! j2 |* h3 z: i}
: T9 ^% g. g1 n, y: Z( @0 A0 O( D6 l( f H
double dT_Ys_dCA() /*压缩期*/) C5 r \( M1 ?
{& R7 s" [2 I, I. G# Z, K! A
M4 R! `4 Y5 Y% B7 S% b}6 t! V* O9 R2 E
# g7 s4 o# D5 C2 a6 R J6 o
' F0 v: A( Y) c
double dT_Pz_dCA() /*膨胀期*/5 q3 C o2 {; p' I* K) o
{
( x) M/ Z. i$ ]/ t' ~5 H% j: S& j* Z& _( {7 w Q
}; ~4 k, F& B! x' \! c4 O
! r, e8 L8 ~$ q9 f# \$ I
( N: U8 i- c Ldouble dT_Rs_dCA() /*燃烧期*/! m6 j, k5 g* @. L ^3 K
{
. N9 O5 w% ^' P; I6 Y# @& U8 X/ [
; F3 G* |( T# T; r0 ?' r}
: J X6 N8 N0 f; @
* L- T% ]. Y3 I! R1 C i4 ^% R8 a: n8 s4 t9 d2 d& g4 p
double dT_dCA(double an) /*求dT/dφ*/
: w' O% d" p5 `. Y# C8 s" V; w{
, j8 M: O8 I7 T# S. f8 C CA=an*PI/180;
' u B, r6 r% U o2 K( C8 | V=V_CA();2 W! i7 O5 J7 K
if(A_SC<an && an<A_CB) return dT_Ys_dCA();
2 P! ?7 \4 W6 C+ ^0 [, D if(A_CB<=an && an<=A_CE) return dT_Rs_dCA();
8 L5 Q2 X' p0 Z' W9 B! c- M3 y5 M if(A_CE<an && an<=A_EO) return dT_Pz_dCA();& C7 Q- Y0 N% D$ e! Y" a: ?
if(A_EO<an && an<=A_SO) /*换气过程不计算,线性赋值,避免零值 */
/ m* }/ X( d: c P=110000+(m_P[(int)A_EO]-110000)*(A_SO-an)/(A_SO-A_EO);4 Z! D5 C; D8 W' P$ |1 J5 l
if(A_SO<an || an<A_EC)
3 }5 W! ^! B' ^/ J- ^8 M P=110000-20000*(an>A_SO?an-A_SO:an-A_SO+720)/(A_EC-A_SO+720);5 k; A O+ l7 q
if(A_EC<=an && an<=A_SC) P=90000;
) X; Z% @$ K3 M' _& e5 }/ Y$ @5 ? return 0;# r* s4 g! \& u6 T2 d1 g
}$ I1 }2 @5 \, B( d3 f
' e2 o! @5 [, L% K
void Calculate(void)
9 _4 o. b: `7 d+ Q# W2 ]3 I{% t9 ~6 ~% u6 {1 q( i
double Tpre,K1,K2,an;2 S' b; C3 M6 c1 V9 K" K% @( u. {
int index;( G: w' y$ f, ]) P/ P7 g7 `% F
Pe=30*4.0*Ne/(gnum*100000*n*S*PI*D*D/4); /*平均有效压力bar*/
* Z: `/ ~& U6 w mBo=Ne*ge/(30000000*n*gnum); /*单缸循环供油量kg */
- ~* R' V/ G3 w& `# k$ o( u CA=A_SC*PI/180; /*进气关闭时的角度转弧度*/
, s1 _5 z9 w6 m/ V8 O- M; g V=V_CA();/*进气关闭时角度下的气缸容积*/" ] l7 F; I! D% N- n* S
P=P_SC;
8 r' m' a5 c; ?* p' s T=T_SC;
& w+ y) m7 C/ k/ A: C7 K index=(int)A_SC;
% J$ ], A: z* E$ E m_T[index]=T;
4 l: }8 ?& X! R. g) o f m_P[index]=P;
2 Q6 G: S) x2 K4 n1 R m=P*V/(R*T);/*进气关闭时角度下的气缸内工质质量*/
4 o! A, e) t) H/ Z* G+ t8 w mL=m-0.01*mBo;/*进气关闭时角度下的气缸内空气质量*// u* O/ f' L$ ^
mf=m-mL; C. w: N$ Q# b& R) D, f9 K
Tpre=T;
6 _. s' |6 C! F9 x2 I+ q an=A_SC+1;
% ]' V& S: x+ Y+ \ x
. Q+ |- g. j4 I& d$ s8 q2 }6 a do{
3 r- H2 g5 q1 S$ U1 s S9 d' X! T, \9 D
/*B 编写欧拉法求解常微分方程程序 */
# P9 ~3 P: ~9 ]2 T: b: N+ z% ~+ Q' M3 q+ Z# u; O& F$ s
}while(an!=A_SC+1);9 _' W# I4 X6 p& A3 g
}
: u# C+ e1 x# C5 y
, x: v, d4 r# c" [1 r+ m$ k# Z8 pvoid main(void)( V/ H( V( s6 t
{
M) x/ M7 E1 e9 n int i;# d9 q! }6 j0 e5 m! p
FILE *fp;
* V; C z' v" U1 I. z" {: @5 @ D=0.11; /*发动机数据按各自的任务书输入 */4 z* |) _" W9 u7 f: h; V
S=0.13;
( a% J: A1 i% k! G0 s2 F2 m# X4 T L=0.21;" k/ c+ y2 \* `; v' ~
ge=236.0;3 M* p( }$ V. [9 T$ k
n=2400;
" \/ m Q* t7 j. y$ S Ne=101568;
- b3 X, q7 z- u/ i' W gnum=6; ysb=17; M=0.7;8 }0 P: m1 @/ q" m
Hu=41868000;
# f0 g3 S* a+ G, V R=287.08;
/ A: r2 m) }; k. O7 Y Pa=101000; /*大气压力*// S$ v" ?' U5 U9 L V# b4 D
Ta=300; /*大气温度*/
2 i( a C4 B: l9 {8 Y; u9 D hs=(735.0+R)*Ta; /*大气焓值*/
4 Z6 K7 ? f2 m8 N P_SC=90000;. }% L) J) v/ k4 g) N; W
T_SC=313;
' L4 l. |" D/ ^7 M3 t0 N
8 q6 j3 F5 ^, |1 M" C% P A_SC=216; /*进气门关闭*/
% G/ p0 W0 H# D6 D! V, W A_CB=350; /*燃烧开始*/
. T t2 \3 w& e; t1 j V5 h: K: r A_CE=410; /*燃烧结束*/
0 _& o' ?4 R k, {- p A_EO=484; /*排气门开启*/# M4 h4 D9 t3 F" [4 W
A_SO=705; /*进气门开启*/2 r; y e. f* P" `- y
A_EC=15; /*排气门关闭*/
' q7 S2 r0 ~2 g R" c$ o# {9 o+ q- ~" q
Lo=14.4;5 u. g/ R; H6 t6 B, {4 `- o
: R/ Y; E! w' L) n! ?$ | for(i=0;i<720;i++)
; d6 g- S5 d3 _9 | {
% g/ g0 e" w' {& _" N8 o) m, W m_P[i]=0;1 R+ _6 A) {0 H( [: `
m_CA[i]=i;
, V1 h- l& V! }0 q+ a& e: \( F m_T[i]=0;3 W. E0 K C% H. E5 n; a6 B. @8 D: @
}
R/ i4 e9 }; y7 k" R: `1 {: k, g+ `1 Z9 F: W g. s' f3 \
Calculate();: Q) [5 e( s) r! j" B
/ s$ D/ u8 z& |: `, ~1 J' c. d
/*C编写数据输出程序,计算结束后按顺序输出0-720转角的“缸压,温度”数据到outdata.txt文件 */6 }- x2 |6 h, e+ r+ Z! n- \
b0 t- P' L2 h5 B
}! U3 ?/ y) o4 N/ s' C3 [
% \) B/ I; p4 ?5 z9 T0 f
6 R" t4 m2 c3 b5 G6 G- \ |
|