|
#include "math.h"3 c- C$ h; Z! T; m. |
#include "stdio.h"/ U6 ?# J7 L3 R* P
#define PI 3.1415926
# g9 \! D- a: k; E) M( s, k
/ M2 M- t2 c: j2 Ldouble D,S,L,ge,n,Ne,gnum,ysb,Hu,Lo,M,R,P_SC,T_SC;
2 i0 Y. q6 @1 a( r4 Y/ V/*缸徑,、行程,、連桿長、比油耗,、轉(zhuǎn)速,、功率、氣缸數(shù),、壓縮比,、低熱值、理論空燃比,、Weibe函數(shù)常數(shù)m,、氣體常數(shù)、進氣門關閉時壓力和溫度 */
- e8 I5 R, }4 b8 Q double m_T[720],m_P[720],m_a[720];% T. y6 ~, a/ [ G# `$ ^, q
/*氣缸溫度,、壓力,、瞬時過量空氣系數(shù) */
" M, J$ |* W) p: [: E( r8 x int m_CA[720],A_SC,A_CB,A_CE,A_EO,A_SO,A_EC;, {% f7 Q0 x! p% K2 r
double Pa,Ta,hs,P,V,T,CA,m,mf,nmd,Pe,mBo,mL,dXY;# i+ u5 g: F4 x; \ I% b/ q
double Cv();
% w- m0 ?$ r! g5 B V! j; d double dV_dCA();
8 n7 q9 |4 o* Z, K# X) [% }2 |9 v double dQw_dCA();3 q" J* v( ^3 Q6 c: {. Q7 g
double dQB_dCA();
6 B" k7 I; p6 V, m: Y double U();, ^* f* t" k) y% T! W" Y! U
double V_CA();
0 f2 n% E3 r$ L1 h double dU_dnmd();
- I `9 C; r, Y" i( }' B double dT_Ys_dCA();& O4 i4 r T& W
double dT_Pz_dCA();
/ v9 F7 [* M8 t/ h double dT_Rs_dCA();+ T. r7 p6 B0 R# N* G5 ?& J' r) f" p
double dT_Hq_dCA();
/ E, t! f7 z1 ?7 G8 ^ double dT_dCA(double an);
/ Y# d( E# |6 Z) I# @. b void Calculate();
$ r6 I1 ~" z2 L4 }' `
1 H6 A! @( ?; E/ i6 i' K& M7 D/* A編寫各子函數(shù)程序*/$ i R5 a% Q' D) Z i" \" E. l% x& n
double Cv() /*求定容比熱*/* I$ s4 ~. G4 Z
{( z8 s) i! _5 X2 }" I w& \
. }5 y+ Q @* F4 c8 r
}3 Q) w4 T* u" F7 y r, l
( m$ {/ ~4 i [( F- |' y$ z
& p! C' \4 n. a" x% odouble dV_dCA() /*求dv/dφ*/
8 m( ]( U! l/ [+ P. c9 b{
! J5 J U; m5 R+ P# D, }+ D5 h" B8 r- R/ A1 V* t3 T) _/ I
}
0 O; g2 X! Q% \. u/ D0 @& E1 G6 `, Q4 u6 ? l
d4 _2 ?# O' R+ e" T. m7 a* Sdouble V_CA() /*求氣缸容積*/
5 C$ F2 ]& i4 d7 t{8 s2 @' Y4 c8 z l
( d' F7 N @- h1 G0 R0 A0 P8 N; N
}6 ] ^2 {5 a2 D3 x$ ~0 R, a
1 k, b p2 Q X0 I& O5 u, ]
) X7 Z+ y; a" ~0 S4 O! V
double dQw_dCA() /*求dQw/dφ*/
7 `$ s- E$ U+ `: k R2 y9 ]6 L{, w& ?1 f) j5 O: l
' y0 H9 X# s" Y7 h( H
}3 a" f' M; E6 z* t2 e
1 i0 r$ \: C" _8 l6 H
0 V$ Y+ g) P0 I2 i$ f8 Edouble dQB_dCA() /*求dQB/dφ*/% t. M9 _7 I. [7 @) `* @% L( F: F; d
{0 G1 } c8 J' l/ F. L6 m
1 L, c+ h* n% V; l3 I' U
}
% [) D }% O l/ H* b& m. u
% r R; {, D; Z! q! z
. P5 L3 @. r u% H) ~1 Ddouble U() /*求u*// v, ~8 H+ x8 }9 ^# g1 [* }* s
{
/ z- G5 R& \8 k( Z1 [) [( u* Q3 v' u" _: |% i7 U7 I# w7 K
}
% [) R! H4 A/ ]! g' D7 e+ p5 e# v4 w! ^0 _ t8 l6 a
. ~2 {) C5 {9 M4 \5 w9 I6 Pdouble dU_dnmd() /*求du/dλ*/5 C9 @: \) c0 @5 t* A/ d
{7 R5 e. F6 c+ k# |6 S
1 A/ @- ~ e2 Q# j. U}# Q, s/ E. y; F6 |+ b
# V- ^; }) k0 X6 {# M
double dT_Ys_dCA() /*壓縮期*/
$ U2 k( b9 Z, u" P- |2 U! t2 c{: x' V/ k1 ?) v& f& ~: S5 n+ S
0 b J$ b! B$ q8 |8 a: G
}1 b* ]; r" T7 w% H3 n0 D
E% \+ E$ [2 w9 }
2 |9 R" U" n) Q7 J: [# u5 O- Ddouble dT_Pz_dCA() /*膨脹期*/
- v, b! I. P. G' d7 y' ]- I{) C, u% r/ l. M' Z. D
" w1 i2 Q8 U& x5 x% U# R}
/ Y/ V1 ~# r: t# o
9 X1 A3 G8 d, U! o* J* |" T' `2 ^' {8 {0 x8 T3 H3 S
double dT_Rs_dCA() /*燃燒期*/
/ x) `' O& q& {) |- {6 {{
; D: f/ H% E* N: K2 p- Q. [
/ f+ L# J5 }$ m}
. S0 ?/ A3 t% d, I4 d
/ \( o% o2 F! J4 b8 c' {% K" ~
( g- q) ?0 ~8 i2 \5 C* p; y6 U9 Hdouble dT_dCA(double an) /*求dT/dφ*/
" \% R$ _# J. M5 k2 ]8 {: T{/ u; {1 T5 r% G# [( m3 |1 G
CA=an*PI/180;5 g. b' D# K3 G( c
V=V_CA();! ?& V- s! L, T+ C! I5 d
if(A_SC<an && an<A_CB) return dT_Ys_dCA();
; I; W$ k7 R. O7 @ if(A_CB<=an && an<=A_CE) return dT_Rs_dCA();) Q, h- h2 u0 I0 _2 ?
if(A_CE<an && an<=A_EO) return dT_Pz_dCA();
" Y# Z1 A* q' c- r0 K$ M. Y if(A_EO<an && an<=A_SO) /*換氣過程不計算,,線性賦值,避免零值 */- t' E% E0 ~0 a, X9 t. u
P=110000+(m_P[(int)A_EO]-110000)*(A_SO-an)/(A_SO-A_EO);
% n R: r& V( l. I8 a if(A_SO<an || an<A_EC)
5 T7 X6 Q5 K6 R8 o7 K- g( |* [, L: n5 y P=110000-20000*(an>A_SO?an-A_SO:an-A_SO+720)/(A_EC-A_SO+720);& L) E$ |! o$ k$ C; J* _
if(A_EC<=an && an<=A_SC) P=90000;
# Q' Q! U9 _& Z/ G, y' | return 0;6 l# `8 q9 F! }* P; Z3 q
}2 ], F- S; d" G E' g# B
/ Q4 z1 I4 \" vvoid Calculate(void)7 I% F5 k6 B6 @/ u; K' Q
{$ n D, K$ S0 c1 W( L% h
double Tpre,K1,K2,an;
( d3 k6 R% j5 D/ }5 Y! R& v9 h int index;) Z4 A; r/ Y! T# ]0 Q4 _6 ^! B
Pe=30*4.0*Ne/(gnum*100000*n*S*PI*D*D/4); /*平均有效壓力bar*/; C0 ]0 Y: ^& X
mBo=Ne*ge/(30000000*n*gnum); /*單缸循環(huán)供油量kg */
: d. K4 Q4 G9 `# e1 _2 { CA=A_SC*PI/180; /*進氣關閉時的角度轉(zhuǎn)弧度*/
7 Q& E- o5 M( j V=V_CA();/*進氣關閉時角度下的氣缸容積*/
/ d0 @5 A4 ?/ R# ^0 L2 Y E P=P_SC;
6 M( g5 ]! h" H4 }! m( ^ T=T_SC;2 v3 z2 Q }7 k$ G8 N4 v
index=(int)A_SC;
( T8 y' T, E; Z+ D% Q2 e$ E7 d6 P m_T[index]=T;+ i+ Z) w- i3 w& X2 }
m_P[index]=P;
# ?. B: j' l! L9 b! E, A& A3 F m=P*V/(R*T);/*進氣關閉時角度下的氣缸內(nèi)工質(zhì)質(zhì)量*/+ Z* M- Y @( d/ w" Z. P3 l
mL=m-0.01*mBo;/*進氣關閉時角度下的氣缸內(nèi)空氣質(zhì)量*/, W' m* Y! ?( S0 V0 W0 I
mf=m-mL;% ]- ]# \& c0 B0 z
Tpre=T;0 p6 F; y. u2 F# t0 h2 {; E
an=A_SC+1;; T& N" E0 ]! n' h$ u
# I* U" s3 O) Q& P9 ]+ y do{
/ y j9 q$ j) {6 X0 X U+ u: x$ Y& x) J2 x+ V4 g
/*B 編寫歐拉法求解常微分方程程序 */9 o* m2 t7 T$ Q
1 i- ?2 n: T. _ }while(an!=A_SC+1);7 Q F- \4 u8 @
}. u9 b% P7 f, h( w
# \& ]+ Z5 s& d4 E* L9 J' [
void main(void)) j7 [4 p! a( d1 ]
{
0 H( ?- S0 A5 _0 | int i;
1 J8 Y5 f8 B) O( d7 z FILE *fp;8 B$ N# N+ ]2 {# i0 B
D=0.11; /*發(fā)動機數(shù)據(jù)按各自的任務書輸入 */
r) z2 s1 |6 s3 M4 G2 o" k S=0.13;2 H5 p+ Q5 H5 n; t/ \' n
L=0.21;9 B c/ ^0 b1 r9 G% ^7 ]
ge=236.0;) e% A! K' v" q n- I0 H" o
n=2400;, R9 Y+ ?! _2 V* R0 x$ f& U
Ne=101568;" M6 ^0 v+ m, M9 I5 \
gnum=6; ysb=17; M=0.7;; K$ Z- {% t, V( y5 v
Hu=41868000;
3 _2 H" W+ ` h8 j6 p R=287.08;3 w: n e0 U. ^* G1 H1 k" x
Pa=101000; /*大氣壓力*/4 a6 w8 O+ K9 n- e, O/ A
Ta=300; /*大氣溫度*/+ a1 l. E% ^3 S: U1 ~
hs=(735.0+R)*Ta; /*大氣焓值*/" T6 H: U& p: s3 p4 \2 c
P_SC=90000;5 H z# ^! x `" P
T_SC=313;
K4 D1 R; C, {& e3 I/ E# P, I
) a; i7 s; l0 { A_SC=216; /*進氣門關閉*/4 n5 }. E4 Y% @. L. p6 C3 Z
A_CB=350; /*燃燒開始*/, s$ U$ W- x" N# r; Q* Q
A_CE=410; /*燃燒結(jié)束*/
) C5 o# W3 C* t w9 Y% C A_EO=484; /*排氣門開啟*/
" Q0 G2 X1 C( V A_SO=705; /*進氣門開啟*/
7 T5 ~8 [. U, a0 P A_EC=15; /*排氣門關閉*/+ k9 x: K! a5 y9 |7 u. f
+ |5 D9 I8 U, g! J5 S7 f: M Lo=14.4;. V& ~* O7 Y5 J
$ m. P% I! y6 Q0 p7 V9 l0 x
for(i=0;i<720;i++)# f0 ^3 l; B( |- v* `: U5 h: t
{
0 Y+ o: R }9 P! X# f m_P[i]=0;
$ m, r& L5 c0 J9 j m_CA[i]=i;
- S+ R1 D% U7 A; j) d6 K m_T[i]=0;
- y( q: x5 t: V9 A' H& j8 G1 H/ L }6 F; c4 |2 c! x* c) ^8 b9 k+ N7 l
; p2 |% n# z, `1 `+ T( J6 s+ u
Calculate();: X% a C( [ H# l5 }) S
( \2 n D W, a; `
/*C編寫數(shù)據(jù)輸出程序,,計算結(jié)束后按順序輸出0-720轉(zhuǎn)角的“缸壓,,溫度”數(shù)據(jù)到outdata.txt文件 */; ], I( {2 k0 y0 U# Q" p- Y" e
2 s9 O/ @& ~; @) v% T2 r, U! S}; o/ F' F( A5 {7 T: m
$ r# s) v9 M: n
; Z% Y0 ]& N$ h |
|