|
#include "math.h"+ c% w: x" ~8 H' ~4 w
#include "stdio.h"
1 N6 o& M8 w9 M8 q9 R#define PI 3.14159266 Y+ `2 u3 s# D4 r
& q' o! X% U' K5 Adouble D,S,L,ge,n,Ne,gnum,ysb,Hu,Lo,M,R,P_SC,T_SC; $ H0 ]7 j8 c! p4 h) U% _7 M5 d' Y
/*缸径、行程、连杆长、比油耗、转速、功率、气缸数、压缩比、低热值、理论空燃比、Weibe函数常数m、气体常数、进气门关闭时压力和温度 */: x6 `0 f/ i# N7 H/ \0 l
double m_T[720],m_P[720],m_a[720];
' ]- W; C+ E( _/*气缸温度、压力、瞬时过量空气系数 */
+ n) x9 _/ M+ w3 A! H7 Z int m_CA[720],A_SC,A_CB,A_CE,A_EO,A_SO,A_EC;5 h$ A% z2 P( {* d+ a7 k
double Pa,Ta,hs,P,V,T,CA,m,mf,nmd,Pe,mBo,mL,dXY;9 h7 Z3 _# O% p% F
double Cv();
8 |- k% \2 K6 E8 x; n% V double dV_dCA();
# S( Q, x+ J6 p8 @& ]7 D2 F double dQw_dCA();
+ Z" Q. @) C" d: g double dQB_dCA();
4 h7 s7 Y/ z5 @ double U();
8 A0 C+ ~1 S- A double V_CA();
+ c! I- n }! }8 \" j5 ~9 c; d double dU_dnmd();7 R0 W7 m3 S: D3 V
double dT_Ys_dCA();: H. V8 p X4 S- [" I3 y! H6 e. ?1 E
double dT_Pz_dCA();
" r- y" J2 L. y2 \) S# l) X8 ?: z double dT_Rs_dCA();
) o; H4 Z m0 d; g double dT_Hq_dCA();+ g+ l! G3 R/ c) Q5 ]+ ~
double dT_dCA(double an);
) U4 s E6 h6 L1 T. b void Calculate();% I0 h8 U3 d$ ~
3 @8 V% t+ N: V1 W. y8 {# [) j7 E
/* A编写各子函数程序*/. k- W) ^. h: ?6 M7 d% z
double Cv() /*求定容比热*/$ M' u5 X1 F* d: Q+ ~" N9 X* B ^
{
- V5 K& f# [8 |
F! l2 Y3 M6 V}
( w* A7 @& [$ `) s
' N* S3 ?/ g, f3 f- i$ _4 S0 Z
) i. Y& m+ U# l8 J9 h, U9 u3 Qdouble dV_dCA() /*求dv/dφ*/: U/ Y( n$ B1 V% |; n; A4 {
{7 t; r2 \- p5 k2 A: W' }
. K; I' T0 g6 b' z- q. v
}% Y, n4 u4 K- @* {& f. j# L/ A
. ^9 X1 P) M) ^
. h+ C: b9 r* m; jdouble V_CA() /*求气缸容积*/
- q% o7 u9 ?/ ], _' P. e* g{
) u$ J' P- y7 g
3 A( l8 e/ H0 c}# E- x6 K/ D; r# x( ]+ y
; v9 J# R5 F4 y
) V" l9 f- b. a& q5 I/ H; I
double dQw_dCA() /*求dQw/dφ*/8 @( C. ~: ]7 z
{
0 J+ S6 u# h7 R6 v8 f
9 z7 J' D7 l1 W1 t& w/ S" M1 r}
: N5 L$ C8 T3 P; D/ H
. Y3 P u- k& Y8 Z" O, O
6 e7 F# ~( N: l: i/ Vdouble dQB_dCA() /*求dQB/dφ*/! z3 s! i2 L% u+ x
{ K4 Y5 a; f5 a6 R1 m: u
5 S; B5 H/ I+ W% ] j4 ^
}& C( q4 L+ T2 g* [0 F
( P6 y ?9 L' ?% x# I) P) R$ ^, L
- |$ ~+ W$ {3 J1 I0 D; ydouble U() /*求u*/
" I% B7 z. q% f) F{
# R' B2 B- @ K$ p% Q" C/ r! S7 }! W v o
}, `7 t" k% p! ?/ P0 y
% m) d) `2 c* L5 J2 Y+ g' Z' g
5 v( p% b$ i' _( `: d$ odouble dU_dnmd() /*求du/dλ*/" V' A* P+ Y5 e+ u3 V8 S
{
9 ~ r, S+ Z& m8 |7 z4 m/ z8 x- {" p- b1 L4 s1 `4 G" d
}
7 e6 b1 I+ ?* W9 A, D% l2 x
4 |0 v8 P, ?0 G+ s* ^- vdouble dT_Ys_dCA() /*压缩期*/
4 l1 E5 M/ _& v2 K2 A+ Q; y{ f: U; K( M, G' |9 c, F* G. v. f
( _3 y8 |$ U4 E+ [
}; G) v' m/ E7 C% V: r
1 c- K8 ^% Q* D- s
Q5 i, r% _# l# i2 jdouble dT_Pz_dCA() /*膨胀期*/
4 p6 ]) M, e5 Q8 L{
, D8 P" \2 W/ r2 T3 b4 H
( G$ N3 {0 O1 o& A6 Y* n6 y G}) q9 J9 w6 F( u) q6 u& F l
' A$ F( X$ ~! M: a1 N
9 O( B( L2 M& ~) b/ y% [, Z. z
double dT_Rs_dCA() /*燃烧期*/
5 W) ~3 a- y2 |3 Z- ^/ o$ R9 k1 H3 j{
) H, S* o0 }4 ]$ H* d
9 E" e/ x i1 @; Y9 D1 s( V}
7 S$ P. O2 r7 L! c3 w3 J) v2 w; Z, o( i/ W
, X; o A* W B. r$ z+ j. L
double dT_dCA(double an) /*求dT/dφ*/% a: f0 O W6 K
{6 {+ I# N7 u6 r" c( b& r
CA=an*PI/180;; v5 C5 ]6 ~: D* X' U2 c0 R% V" y4 s
V=V_CA();9 i# u. A" T) Z* h' T0 h7 b- y
if(A_SC<an && an<A_CB) return dT_Ys_dCA();$ a$ u& M5 F7 _& d: p/ c: n
if(A_CB<=an && an<=A_CE) return dT_Rs_dCA();
' B3 T! @5 C& @ B4 @ if(A_CE<an && an<=A_EO) return dT_Pz_dCA();# j+ _3 J D; f* K: m
if(A_EO<an && an<=A_SO) /*换气过程不计算,线性赋值,避免零值 */! f2 Y) V& X+ f( D
P=110000+(m_P[(int)A_EO]-110000)*(A_SO-an)/(A_SO-A_EO);
' F* z6 F. w) N if(A_SO<an || an<A_EC) ) T0 \' I- v7 X r) U
P=110000-20000*(an>A_SO?an-A_SO:an-A_SO+720)/(A_EC-A_SO+720);
) ~, Z# |. a# d7 v if(A_EC<=an && an<=A_SC) P=90000;
: M+ k7 U3 }4 }. p3 y$ |- n) j( {5 F' X return 0;
" z1 n, ~/ v; H: Y. ~7 y}# J- W$ Z4 @" z* I7 b( o
( w, ?5 L8 D) r' _7 s e3 Z5 o& n6 _+ avoid Calculate(void)3 P' W# g) E4 O9 b* [' M2 v# {
{
$ n* t' i6 x7 I0 b4 i3 B double Tpre,K1,K2,an;* y3 {& h1 O, X1 _9 y/ q
int index;
+ q; k& e5 O9 }8 [ Pe=30*4.0*Ne/(gnum*100000*n*S*PI*D*D/4); /*平均有效压力bar*/( [9 H4 T# ^+ J" P/ }5 }
mBo=Ne*ge/(30000000*n*gnum); /*单缸循环供油量kg */" S# I$ H( w+ D2 U8 ~- O
CA=A_SC*PI/180; /*进气关闭时的角度转弧度*/
' A; i8 L( o: y9 k ]9 ^1 p! a0 x% w V=V_CA();/*进气关闭时角度下的气缸容积*/% v: ~4 u( h! F; }: S, w! h
P=P_SC;
2 S# x, H' P- A& a T=T_SC;3 B" p( Q5 W: y& G5 F1 ^. P+ e1 B
index=(int)A_SC;
3 D9 G- Z; s# a) N5 `+ J+ p, E m_T[index]=T;$ [3 `, l5 I! u9 c- z; }) r5 M
m_P[index]=P;* R1 f2 L/ j9 _& A
m=P*V/(R*T);/*进气关闭时角度下的气缸内工质质量*/
' P; C9 H& T: d1 m. g/ c6 k mL=m-0.01*mBo;/*进气关闭时角度下的气缸内空气质量*/7 T# F" Q) \: l5 n# z* B% I1 a
mf=m-mL;6 Z$ @/ e( B$ ^2 H- V+ y5 n
Tpre=T;( V' D9 w6 d% ?! _- t% b1 A
an=A_SC+1;
* }2 l1 G, B' i/ c( {% f3 S' T. F5 @+ ?& @6 j
do{
8 V a& z: @ N1 `# y' r" a1 Z! T0 r) F
/*B 编写欧拉法求解常微分方程程序 */
4 @% n. F. A9 A5 t
1 ^0 W3 a" N& ]! C* T1 r }while(an!=A_SC+1);
8 n7 i3 P" m$ ] T2 b7 H}4 d: d1 i5 b! ^7 y; F6 Q! c
! { B" u' J" E' R$ o& a8 svoid main(void)
0 B9 t+ w, W3 R% H. c. e. I K& I. f{
" m7 R4 d0 }! v' c7 ^' Y+ D" U+ q int i;
; M8 y' g7 h! ~# i9 }8 J1 A FILE *fp;; k3 ?+ R' z, R0 R3 m p' n
D=0.11; /*发动机数据按各自的任务书输入 */
) t$ J# a. J6 z, q2 U0 G! ]' z, } S=0.13;
3 @# `5 S1 O( V3 P, D4 P L=0.21;0 w$ Y4 k7 D; W" ~
ge=236.0;6 r" x! v- b3 C
n=2400;0 j0 j8 q, M5 F( d9 t9 Z
Ne=101568;
' R# x& u) c4 ~4 v+ { gnum=6; ysb=17; M=0.7;
/ P7 {# m6 ]) e4 p$ o Hu=41868000;
$ D2 }8 S) f1 [& |( B+ t. |6 s R=287.08;
4 ]9 g V' U0 k+ F+ o) c% D) Q( k& B Pa=101000; /*大气压力*/
7 f; Z; }2 F% `$ U; N Ta=300; /*大气温度*/& w T0 ~" {+ E+ r; G% |$ t
hs=(735.0+R)*Ta; /*大气焓值*/
+ X( k; t0 j0 p4 G6 Q P_SC=90000; _3 a/ K' c2 ~
T_SC=313;
' [1 j; {8 N; ]1 Y, ^3 P3 w$ v( S- ?$ X& P3 v8 Z
A_SC=216; /*进气门关闭*/& [/ M' A* q7 ~' G$ U( S# ]0 M
A_CB=350; /*燃烧开始*/
' c3 N- E" T* o9 J* ] A_CE=410; /*燃烧结束*/
! a9 @ d E1 K" E) ~ A_EO=484; /*排气门开启*/: H+ {' g: k" j# u' o1 U' j6 U/ F! w- R
A_SO=705; /*进气门开启*/
4 O$ O4 Q, G0 w8 y U1 F A_EC=15; /*排气门关闭*/
6 }' G+ x! V; J& q7 D+ i7 o# `1 F
Lo=14.4;
1 ~% g9 M1 Y8 _) L& }8 A2 }4 F! q' | u& t) w0 [6 h
for(i=0;i<720;i++)/ Q9 j9 k- B% i' L. O6 X
{" M3 y Y0 I( a9 Q U* ~( t7 {) V
m_P[i]=0;( ]; S1 [, x7 } }
m_CA[i]=i;
2 Z; T& u$ w; Q6 M9 ~# T m_T[i]=0;0 L& k! L1 g. U p4 A2 p& Z' L
}
/ Q3 R) Z; G {# C% v# S9 B8 y
( o: E% B1 }$ _1 q( f6 `% Q7 \ Calculate();
" c2 |- c# D5 G% |7 \0 D# \' W+ c3 U% w3 U7 v
/*C编写数据输出程序,计算结束后按顺序输出0-720转角的“缸压,温度”数据到outdata.txt文件 */
( o# B: s0 ]/ ^/ _2 b; j$ [- W
}2 i3 i5 A; q- Y: X+ {3 H$ j: c* G
' z4 M7 p- n$ O2 y8 E9 ?; x; c' U6 R7 [. g& w5 L; C
|
|