|
#include "math.h"4 \& U( O& Q- }* c& |
#include "stdio.h". |" c& I. [, Y# K( o% S
#define PI 3.1415926! c, a: ~: M- x; W
( l& S% k4 A0 ]1 A5 }+ ydouble D,S,L,ge,n,Ne,gnum,ysb,Hu,Lo,M,R,P_SC,T_SC; . W6 |0 k, P: `# S. }
/*缸径、行程、连杆长、比油耗、转速、功率、气缸数、压缩比、低热值、理论空燃比、Weibe函数常数m、气体常数、进气门关闭时压力和温度 */0 o( U* W6 [# [ p, y: Z I
double m_T[720],m_P[720],m_a[720];2 ~( ?. Y, N" K
/*气缸温度、压力、瞬时过量空气系数 *// x8 L+ }* g+ M" k L6 o
int m_CA[720],A_SC,A_CB,A_CE,A_EO,A_SO,A_EC;
) V4 m6 Z, v. L1 p double Pa,Ta,hs,P,V,T,CA,m,mf,nmd,Pe,mBo,mL,dXY;
' ?" X. t( g/ y S double Cv();+ ?3 v7 R3 P; _0 ]7 R! A |
double dV_dCA();2 k1 \2 B! J9 ?' H
double dQw_dCA(); G- a3 w+ ?" V. K$ @
double dQB_dCA();* [6 A( [8 w4 ?& v% u; }1 u
double U();+ s3 D# m1 O! a1 @7 p
double V_CA();
o$ q8 d& T9 M) ?& [ m7 { double dU_dnmd();5 L0 q! |% a! _! [
double dT_Ys_dCA();/ a+ g. S3 [6 a( X! g
double dT_Pz_dCA();1 v% O' n, c& \: a% v2 X( I
double dT_Rs_dCA();8 f0 {$ a( Y ]: V, d- o
double dT_Hq_dCA();4 I. f6 R/ Y7 ?
double dT_dCA(double an);$ [" c% t ~8 Z* ~
void Calculate();7 G: ?! U6 e- X& u/ ~! {0 t1 [
& E' d- F5 I+ o6 G/* A编写各子函数程序*/% I& a; w2 c/ s ^2 r
double Cv() /*求定容比热*/
, M3 p6 k4 g4 d9 q* p, y{7 I7 v7 R$ B( n5 k! p' d/ T l* f2 H
8 h- C( |1 _4 M5 c! ^}! j+ G/ R" D1 a2 b7 ~9 }! F- Q
# S0 g5 R1 m: O D- |2 _2 N* P
' N" o5 V/ M n6 G
double dV_dCA() /*求dv/dφ*/ L$ k W$ o4 o, S
{
; y5 g" D) ~ r0 g1 m9 Y7 A7 V7 U3 \! ]& X7 X
}3 b9 R5 p$ v2 I+ N7 A
4 l8 h+ _* X) d. L' M: k$ Y6 N* v2 d$ \" W2 G5 u) [( }3 I' m
double V_CA() /*求气缸容积*/' \0 g# u' v* q% d7 b) f
{
$ Z. W4 v |- P- p9 X, | P, I h5 p) Z, Q( F# \
}
1 M& i7 |* y/ P0 P8 z: \
4 _ q3 g4 C3 y( }* \
5 z" ^2 J& z u* U1 d4 b9 |6 Tdouble dQw_dCA() /*求dQw/dφ*/
+ P8 _& j7 }+ n4 G, G8 @! ]{ q1 j/ Y: ^$ X6 V, ]) V; _
7 ~9 w: Z( Y% l
}
7 |& S2 s, C/ |. F9 N ]2 h$ S
$ |* _. i$ _$ u5 A" A
$ A# C/ y, Z, U0 [; p* S/ Pdouble dQB_dCA() /*求dQB/dφ*/
" d7 @0 p9 U6 }% y' R+ }& j{( b. b. M" l; G* n
g8 k C- h9 Z2 i}2 g b& X, B& E3 u& b
( h8 t2 Q* M9 H; K- Z
( Y* ^! \+ K% r5 b
double U() /*求u*/( p% }5 Q9 t4 ?& k" P6 c
{/ w+ I4 p- `* f) _- p) G6 P
3 d3 a: |4 ~, h3 K. x8 N/ L}6 |5 x3 L3 h& s) u. }
& ~$ ?$ H* R$ G2 [& K
0 W5 t! e4 z _5 L
double dU_dnmd() /*求du/dλ*/9 d1 j z6 [( P8 C0 m' F! b
{/ d ?7 ?, V# X1 V' z; O8 U
$ A( w2 X6 W/ `
}3 E4 }5 I6 J" ^. x9 Y# n8 ?
0 p; |+ F# T) I/ Edouble dT_Ys_dCA() /*压缩期*// B4 @ e, L0 g* p, a) m( l
{
, N8 u: ~. O, E" b, `. @2 [3 k# U
" @ j |+ n" I4 x: j. K& @1 p}
; a5 o! z& E+ r/ K8 D+ m G% i. N1 a) Z
0 n1 u V1 d- t
double dT_Pz_dCA() /*膨胀期*/2 z. L' e8 J: M8 p, W& P0 ]
{
6 k& W2 A6 T" X/ a) A
+ ]' Y) g6 X5 K3 b9 p. n# a. O4 r# _}2 r8 t7 N2 r/ T4 z
/ D! d( J- ^* G5 T3 t& n
# S: B! i9 D4 M: u; }2 \) Zdouble dT_Rs_dCA() /*燃烧期*// d& D9 x ^$ D
{1 H- f: W ^) h# Z4 ]" n; M/ R, O
& q( e0 B8 f/ V* G* Y7 [0 u! G4 f}" Y3 A' r5 d3 A) ?- O) G6 S
: f# L; b4 O+ J. j0 W
+ p7 K% t1 Q4 ^8 ]) m" Adouble dT_dCA(double an) /*求dT/dφ*/
8 x6 u# a1 K; [6 X{- l& M% m: C# C; U4 ~$ B
CA=an*PI/180;9 \6 S0 O3 I' `7 J# w
V=V_CA();
$ n& u' M/ u) O3 a$ ~* B, u if(A_SC<an && an<A_CB) return dT_Ys_dCA();9 U; y! g9 Z( e# J% B1 F
if(A_CB<=an && an<=A_CE) return dT_Rs_dCA();: f2 y$ x+ }" y' Q
if(A_CE<an && an<=A_EO) return dT_Pz_dCA();. Y3 i% u: s# k: f+ \
if(A_EO<an && an<=A_SO) /*换气过程不计算,线性赋值,避免零值 */' _+ u4 l+ F+ G8 L- D/ ], @$ G* z
P=110000+(m_P[(int)A_EO]-110000)*(A_SO-an)/(A_SO-A_EO);
) b0 f" g- h8 ?1 D3 d if(A_SO<an || an<A_EC)
5 A% j( D, j* u, ~ P=110000-20000*(an>A_SO?an-A_SO:an-A_SO+720)/(A_EC-A_SO+720);) D. F6 Q7 j! q( O! h4 m1 I
if(A_EC<=an && an<=A_SC) P=90000;
9 a( X, Y$ \( s f: u' u return 0;6 G# Q3 B+ K) K$ d* @( t5 Q/ F( N
}7 E/ P/ V. T5 P0 z( f. J
! z% c/ n! j2 ~% n( Fvoid Calculate(void)& S: u1 z! g. [. G' i
{% [2 b5 W+ m- X& X& `
double Tpre,K1,K2,an;, W2 g: A7 l6 p3 D' I, @
int index;
7 I+ l D/ \0 x1 o. ~7 l Pe=30*4.0*Ne/(gnum*100000*n*S*PI*D*D/4); /*平均有效压力bar*/
% p9 \( c; i/ \: D mBo=Ne*ge/(30000000*n*gnum); /*单缸循环供油量kg */; X$ p- C, |* G; S0 b
CA=A_SC*PI/180; /*进气关闭时的角度转弧度*/
: j! |$ }; J' S4 r V=V_CA();/*进气关闭时角度下的气缸容积*/5 ?- T, E: a! R. K8 a+ D+ y
P=P_SC;
1 \& k; m9 U+ ] T=T_SC;1 `: a0 \1 m$ @8 X2 j- Y
index=(int)A_SC;; U& a0 c3 A9 c5 V% ]4 ]7 y
m_T[index]=T;
) M; r% Z: M: R' N m_P[index]=P;1 t' \1 ~' k. U" X
m=P*V/(R*T);/*进气关闭时角度下的气缸内工质质量*/8 {+ v) r( [2 a0 v1 Y; t; X2 H
mL=m-0.01*mBo;/*进气关闭时角度下的气缸内空气质量*/
0 N( @7 W! _5 S% `, g( Q% C0 f mf=m-mL;
( U! t& U) Q: D% e7 v. ^# _ Tpre=T;& e& `: S. }! c
an=A_SC+1;
! L3 U6 M8 Y% F6 Z& @% T' U6 f }3 @2 T% c t4 O" ?; C: y
do{
# m2 p0 V$ [0 x6 a( @& Z& b9 _% K8 f
, p$ h1 a" A# X: b! b! L( [ H /*B 编写欧拉法求解常微分方程程序 */
1 @! G F4 i2 Q1 S" M6 V: I, `5 ~" A" b. T q6 z
}while(an!=A_SC+1);
" M/ f: J7 Q$ m/ X6 z9 f}" @5 s, ]6 ~* G z: ~* Q
# I" I$ U* w: N/ p) Q/ k) uvoid main(void)
% k- O0 }) D" P; e% o{. M( M, N; d# R7 ]" j
int i;
. w% w' l' X# c t$ T' R' | FILE *fp;
, q2 O! `+ g' p( ~- c D=0.11; /*发动机数据按各自的任务书输入 */
9 P0 E- h) y& X" m7 @ S=0.13;
7 ]4 y, u3 ~- z$ `1 \) o/ A L=0.21;
9 |; ^% _% h0 I ge=236.0;
% d( c; [ x8 O- n; R0 ` n=2400;
: q* g' L/ F \% B( k Ne=101568;: _6 D% Y$ `! O3 M6 D/ ]& ]( V Z" }* A
gnum=6; ysb=17; M=0.7;- G' p, D$ J! \; Y, o( i. d
Hu=41868000;1 ~7 e; z! d2 v- Y' Y
R=287.08;0 E5 h- w* ]0 r
Pa=101000; /*大气压力*/' m: _. {& j# }- w2 N& E. M
Ta=300; /*大气温度*/
1 h4 t( n6 M* ~ hs=(735.0+R)*Ta; /*大气焓值*/( U6 o" X( z2 C9 \7 G- S+ \
P_SC=90000;. A$ h$ O5 w7 ~( _% l
T_SC=313;- n$ f6 R, h4 z0 {
& X2 g/ k, a% F
A_SC=216; /*进气门关闭*/
0 d3 ?' i" g; |1 b# {: B# |! Y4 Y A_CB=350; /*燃烧开始*/$ m4 y' I" m# n% D# c% Y" B, P
A_CE=410; /*燃烧结束*/7 f \& J4 f' e
A_EO=484; /*排气门开启*/
+ L# W8 X+ B& C8 f" { A_SO=705; /*进气门开启*/& y: b. H9 G3 a" }
A_EC=15; /*排气门关闭*/5 J% C7 d/ z" K- b( T
, k1 k. Q1 m6 M1 b0 N, I! F, z/ S3 d9 O Lo=14.4;
- c. {+ f' ^- _
, k4 t! S L) R7 }9 t7 {) j- T( f for(i=0;i<720;i++)( }6 g* j9 ?# Q' P
{$ {& G7 A6 B! n, q# d2 Z* n, `
m_P[i]=0;4 N. u$ ~. d1 G2 E) ]; u: |
m_CA[i]=i;. d w* ~7 j$ {6 S8 T/ T! b: ?5 G
m_T[i]=0;
( W9 t0 ]' Y4 _- T/ x& C }
( G$ F8 D t# }% N
. }# b% ?# B5 C) G6 J Calculate();
; I$ ]* x ?1 F1 c4 G) Q# `4 |% E: N! `% m! {
/*C编写数据输出程序,计算结束后按顺序输出0-720转角的“缸压,温度”数据到outdata.txt文件 */
' R/ ?0 V% j* B+ X' E% I% C# [
0 ?; _" m5 m" U0 |5 b$ Z}
9 S* X1 I" Z6 a3 V, n% M+ x
) \/ g/ v! g3 w$ b4 u; K
6 i& C5 v2 N- M8 R8 B$ a8 `9 C |
|