|
#include "math.h"3 ?2 x/ V, T+ T! W1 H% K+ D
#include "stdio.h"2 R( ^( c. x+ q( [
#define PI 3.1415926
) [% Y( E2 f/ j, J T9 J
% c8 Z: N J$ W0 F+ \7 \3 f- \double D,S,L,ge,n,Ne,gnum,ysb,Hu,Lo,M,R,P_SC,T_SC; $ @; G1 W! t: q* Y( N
/*缸径、行程、连杆长、比油耗、转速、功率、气缸数、压缩比、低热值、理论空燃比、Weibe函数常数m、气体常数、进气门关闭时压力和温度 */
' ^5 @4 U: L3 ` double m_T[720],m_P[720],m_a[720];
# E$ W2 _* O; s7 f$ C, Y/*气缸温度、压力、瞬时过量空气系数 */
* b' {! ?# R. X7 a1 q int m_CA[720],A_SC,A_CB,A_CE,A_EO,A_SO,A_EC;
! ]1 K; E R* q( l& p, g) V5 j double Pa,Ta,hs,P,V,T,CA,m,mf,nmd,Pe,mBo,mL,dXY; M* O- v% S( [# [2 T! @
double Cv();
) K; m: z Z3 K double dV_dCA();
, N. t' e& h! t0 i" s: p double dQw_dCA();
8 `7 ?* R3 m; ?8 { double dQB_dCA();
! s/ r4 ~3 r5 P+ E, | double U();
# h- U! O& F7 X( h c; d double V_CA();
) J5 U) y! {0 C. R) v+ Y3 Z double dU_dnmd();+ t' ^: K% t" Z) G
double dT_Ys_dCA();0 r$ z( L! u; v# b- u- p' p
double dT_Pz_dCA();
, L( C$ W. l r; f5 h4 x( M$ @ double dT_Rs_dCA();% h7 s2 d' i3 d! x' c
double dT_Hq_dCA();3 p$ d# u# P" I; x
double dT_dCA(double an);
' O0 b) p4 N8 b% D& H4 W void Calculate();
, y7 i# l# S. [0 x* }, P( a# m" }9 e
/* A编写各子函数程序*/
; c m; _5 n* K0 m/ n double Cv() /*求定容比热*/
/ O Z. N+ Q, e, E% C b" t{* ~. g/ S) `" M, w7 t, K6 X" i
% J% y, Z, e$ O2 Y
}
" [& M" P) s. M A
8 I. ~& o+ E% S8 Z- V" H" z; Q4 _# n" t, f
double dV_dCA() /*求dv/dφ*/
8 K4 G" S% v( F+ b! g. `: w{
5 c2 v6 ^# z% S+ T h ]( s
8 \2 y% V) k7 k}' Y: c. u! b4 X0 Z/ C* t
7 N6 {! t H4 Y) D# u) v
' ~4 j7 C! A" X8 xdouble V_CA() /*求气缸容积*/
4 F- L3 p7 _7 D6 z{9 W" k$ e# c9 n
) o/ o2 b2 x x4 d, a
}7 {3 [5 `: n' [! d8 H
- c9 W% Q) D; U1 b
: X, p, X; E( Z3 U$ z+ ldouble dQw_dCA() /*求dQw/dφ*/
& K/ o; J5 Y, T5 e{" e, C# z& S. s! U
]& I! @" G0 `5 i& u- Z
}; j3 _9 S4 b/ i. r' J
8 `9 W: N8 i3 m8 O" e8 q
: Q# l W9 u8 W' Fdouble dQB_dCA() /*求dQB/dφ*/
: ]- o6 s4 L9 ?/ i l# b5 p, J{8 J* f; k3 F, E+ j
" l R' ]" ]: j; s2 Y9 H$ u2 L- @8 w) Z}6 l8 D4 s. t( e6 i" L( J
' W w3 J+ Z+ M% q
, G5 d, @5 h' C" @' E
double U() /*求u*/! [$ J" E3 v6 Q, t q. m
{
: ]9 U) p; d7 O. |# U5 y
9 f6 T+ x* s! \9 a0 H, ~}
/ \$ z# {0 X( S1 @; o( j! R$ W1 B* f5 \$ {5 |0 T; m
y' `& D V' S/ r; |6 l" r& t, V
double dU_dnmd() /*求du/dλ*/
) ]* f9 C0 [/ }. j{
0 W: Q( i1 L- T3 c2 i- j; ]
; i. X5 _# n5 M l4 K; i}
7 \7 G3 u! B! I/ Z- U, k$ X8 j+ l8 `" B. Y9 ]- z
double dT_Ys_dCA() /*压缩期*/
& A, l5 J+ [1 {4 r{: d7 E9 {3 P& a7 [2 P9 D
) k" V9 H9 e, ]" b) N; ^( Y2 d9 A% k: X}
* z4 s$ E6 D- e3 C9 `8 M1 S
. F e+ {, e7 h
0 q! X0 h2 n8 g+ u8 adouble dT_Pz_dCA() /*膨胀期*/! E t8 U. B$ S5 Y/ l4 h4 O# k z- b
{6 w3 Y X* O+ G- G
- X/ A9 l) R. A8 ]) b
}9 t4 J1 E' r) z( O* S; b9 i- O
- \7 O! J& ~) Y) {
" S- E% F" M2 o* ?" xdouble dT_Rs_dCA() /*燃烧期*/* v8 h4 N- n/ U4 `2 B0 J, U; H. U
{
8 ^1 m+ P% q8 D5 ^8 c
/ N$ v% q" r* [% Z}$ }! M% i- x; a7 k; `& k4 O
8 B$ H* G; Z4 s) C* Y% N6 z$ p3 S9 c: V
double dT_dCA(double an) /*求dT/dφ*/7 Y; B5 O( G- h; H+ [# Y
{ S; Z0 |% M. W
CA=an*PI/180;
, E+ M% g7 {4 ]* u) t V=V_CA();
) C' g( U! e' Y5 Z if(A_SC<an && an<A_CB) return dT_Ys_dCA();
/ j5 m5 [6 z' J" X) J if(A_CB<=an && an<=A_CE) return dT_Rs_dCA();3 L- A4 { z$ C2 Q! ?
if(A_CE<an && an<=A_EO) return dT_Pz_dCA();
+ n+ s2 ?$ n- I) A/ k) G+ Q if(A_EO<an && an<=A_SO) /*换气过程不计算,线性赋值,避免零值 */
+ N( V: t4 ?: O' O9 b6 j P=110000+(m_P[(int)A_EO]-110000)*(A_SO-an)/(A_SO-A_EO);" E. J; d7 o2 n2 v0 F
if(A_SO<an || an<A_EC) 0 L( u( L6 ~5 f/ O; k5 T
P=110000-20000*(an>A_SO?an-A_SO:an-A_SO+720)/(A_EC-A_SO+720);6 K0 |+ E8 [. K% P& c
if(A_EC<=an && an<=A_SC) P=90000;
; i, }1 P3 z2 H$ n# z& }" a return 0;
c* t6 o8 x1 R( f, w* d: f}
) f8 {( z6 r3 u/ D9 c3 ^
3 l0 G, y8 h; M# l9 Avoid Calculate(void)
9 o' e& ~- Z4 Y- W; t{1 ~2 z5 t4 B: m! q5 U( b( o
double Tpre,K1,K2,an;: c$ M& g! C' m+ g2 h3 f
int index; X* u/ W1 v2 H1 _
Pe=30*4.0*Ne/(gnum*100000*n*S*PI*D*D/4); /*平均有效压力bar*/
$ ?$ y% f \& E mBo=Ne*ge/(30000000*n*gnum); /*单缸循环供油量kg */
3 y* F- h/ I) G. f+ T) g& Q3 }0 { CA=A_SC*PI/180; /*进气关闭时的角度转弧度*/6 n* ^1 P1 o6 I$ g$ ?0 }0 N
V=V_CA();/*进气关闭时角度下的气缸容积*/
7 M% ^2 H$ n0 ]) B* P ?7 D9 {# h P=P_SC;0 W2 Z8 Q. P: F o0 G' |" ?' q# f
T=T_SC;
* r% G9 m) X+ G0 E index=(int)A_SC;
5 ^+ o( p2 D G0 `) j m_T[index]=T;
- O* i4 X: o; r; c% H m_P[index]=P;, Z7 K4 W7 [' y( Q
m=P*V/(R*T);/*进气关闭时角度下的气缸内工质质量*/ B0 s/ j- q4 A
mL=m-0.01*mBo;/*进气关闭时角度下的气缸内空气质量*/
- }0 `# z: }0 h" A mf=m-mL;1 ~$ k2 r# ?; v, ~' b) o; k
Tpre=T;
1 K4 D! X# Y0 L1 `+ { an=A_SC+1;, B5 Y1 d4 Z# A( A M) o: _4 J$ O
& l/ d; Q& |' U+ i: J% S
do{/ w* C& f7 C+ S3 e0 a
) L4 S( C# i Z Y& ?# }3 c /*B 编写欧拉法求解常微分方程程序 */' P3 v$ d2 s5 ~6 Z X& K0 E4 e
! J) ~8 B* m, i
}while(an!=A_SC+1);( e! {1 X& w, X) K3 r
}7 @1 Z! \8 P+ K: ?/ l5 ]
" U: A$ ~! W) a+ g; [8 e& B5 @$ g; bvoid main(void)7 t: Q( v9 v5 b, d8 ]6 X- c5 J
{. w' b6 l5 G5 k
int i;# ~- o* A: ]; z
FILE *fp;
2 m& ^+ O8 R* \1 n! w D=0.11; /*发动机数据按各自的任务书输入 */
' S: s6 J2 v. I" a S=0.13;
. @* k9 g' f" b+ r; z, [ L=0.21;
0 a2 U6 T$ q- s" g ge=236.0;
! J& J' U9 q- G4 `; [9 I n=2400;
^- a; Q L* z" \9 O5 R8 c Ne=101568;$ l' I$ s# T2 m, |" l; w
gnum=6; ysb=17; M=0.7;: O& U; P* R: o) P
Hu=41868000;9 F$ t. Q) x) c& o
R=287.08;% c |; g- d H) I) N
Pa=101000; /*大气压力*/5 l8 M% Y! `+ w8 u# w I6 C0 R' a
Ta=300; /*大气温度*/
" C* K! c1 b. k% E4 C. J+ n hs=(735.0+R)*Ta; /*大气焓值*/
1 D" C- ~! C% W, W: u& Y1 m G P_SC=90000;
1 y3 J4 t1 k D( H. W T_SC=313;
. H5 f- Q- P3 C0 D( V7 a- T3 y5 n) M9 C1 ?
A_SC=216; /*进气门关闭*/) x/ y. v8 I* j, @$ r: `
A_CB=350; /*燃烧开始*/ Z+ u' E, ^( ~3 t4 Q5 A
A_CE=410; /*燃烧结束*/
# N c- [3 d9 W+ ^/ e: x A_EO=484; /*排气门开启*/
* a9 P# ?: d7 h- { A_SO=705; /*进气门开启*/( \3 L8 S7 k! p
A_EC=15; /*排气门关闭*/9 k: I# e, V8 H g" [9 |$ Z
) o* L1 `: ^: ]0 P2 J+ N5 ^ Lo=14.4;0 U% K" O! i3 v" v' h# I4 k1 F$ |
' S7 u8 l2 w2 r- W3 J9 w for(i=0;i<720;i++)
2 ?" i8 l3 X! P3 Z {
, f( U- T! ~, f4 ?; F1 O$ S m_P[i]=0;) W, Q8 T( ~4 b) O2 a
m_CA[i]=i;% O. P: F3 b* y" Q
m_T[i]=0;
9 {5 W8 y" F& q7 t }/ A; S* ?; C) L+ t7 B) @9 R& I
B9 A7 u! i; w- p* M
Calculate();# O6 t' L3 h3 }0 l4 R$ B' f' N5 H1 r
9 z) b% Q8 \) ?' D2 k
/*C编写数据输出程序,计算结束后按顺序输出0-720转角的“缸压,温度”数据到outdata.txt文件 */
& Z7 m G/ o4 v, f3 z& R$ j: j5 i* f; Q
} n+ ?$ a- D8 L- Z$ M1 Q3 `
; r& _- k, c- r& p' Y" H5 e
/ @. p1 S( J" |5 t2 V, m; E, u: U |
|