|
#include "math.h"' X! A1 D, b* L ~& U* n' i+ r
#include "stdio.h"0 z3 K$ m _$ a1 S7 ?: Q: M
#define PI 3.1415926
8 \/ }9 v2 g6 s. d( ]2 Z, L, ]
$ f# X8 l( r# Fdouble D,S,L,ge,n,Ne,gnum,ysb,Hu,Lo,M,R,P_SC,T_SC; % J* j& y% ?0 K* O3 a- P' b
/*缸徑、行程、連桿長、比油耗、轉(zhuǎn)速、功率、氣缸數(shù)、壓縮比、低熱值、理論空燃比、Weibe函數(shù)常數(shù)m、氣體常數(shù)、進氣門關(guān)閉時壓力和溫度 */
! h! U* g& C. d M3 @3 A double m_T[720],m_P[720],m_a[720];; l7 d. T0 P. v5 s: T
/*氣缸溫度、壓力、瞬時過量空氣系數(shù) */6 P. ~, m+ x+ Z0 j0 }6 @
int m_CA[720],A_SC,A_CB,A_CE,A_EO,A_SO,A_EC;7 N9 q: a' d; U) X2 Y( J( o
double Pa,Ta,hs,P,V,T,CA,m,mf,nmd,Pe,mBo,mL,dXY;
& ~% B, g; W; m, d& `! H6 E double Cv();
3 O& u/ o! Y* [; z' Z double dV_dCA();5 F6 ]) Z/ _( Q, Y# R. f4 P6 T
double dQw_dCA();
$ c* z8 C: ~, ~ double dQB_dCA();
1 }- b7 |$ x9 Z' @, A double U();
, V5 o0 ^" j# l X H double V_CA(); d3 t; ]) \5 D7 Q# I& q
double dU_dnmd();1 r2 t5 X/ a2 }, m: _
double dT_Ys_dCA();
2 y% R) R- a ]9 m double dT_Pz_dCA();
4 Z( K1 P W8 S& a1 K& s3 L! ` double dT_Rs_dCA();3 S0 q0 X+ a) X( M
double dT_Hq_dCA();- `4 j4 v/ s. D E' Z
double dT_dCA(double an);
8 ^, L2 U* }. E7 C5 { void Calculate();
3 z, B* O8 u8 w4 e: M" o& o" r0 y
" a: I3 `" R n7 C* ?) I9 m/* A編寫各子函數(shù)程序*/( b# ~! e9 h$ \3 y8 A, N- ?5 h
double Cv() /*求定容比熱*/4 k+ M! ^. _7 H
{
' A# i( i* M- B' B$ P( ^1 u- L8 N
. k5 O" k2 y7 v, q4 W( M) w% l}: S2 e. I4 I# W8 `
/ e" w- X7 G6 c: k( d$ Q' U% a: P( R5 u" u
double dV_dCA() /*求dv/dφ*/
3 Q* o% }- E5 _& @{
; ^% g5 x) V. @! y
; W/ ?0 _/ ]7 Z2 e* e ?% ^6 p}
; @" K, @ l( g: y
6 } ?2 `; K, S
* F$ o' d) G" m8 R( Ndouble V_CA() /*求氣缸容積*/5 L4 {5 D. r0 q
{
6 B; y) A. M( E# k5 N o
4 x5 { F7 _9 K* S}
: s) `) h2 s' F: S: t+ K' h/ u1 T/ L% z4 w
5 K. Q' V& i1 l5 i" j* Y: ~& _# f
double dQw_dCA() /*求dQw/dφ*/! s' y# t& \, k$ q& Q% A
{
7 R: @! {; V: u2 X- d( ~6 o
+ r# E7 H/ [1 m; W}
, e/ w/ j. V$ u U5 u# R8 }+ s7 a
/ Z! ?+ n( A* f+ Ldouble dQB_dCA() /*求dQB/dφ*/' x$ w4 U s0 y$ n+ [1 o
{$ B( l; O3 s6 Y5 I. ?: R1 _
, J ~& J1 W7 O I* a+ q3 x}
# \4 `* H7 H" r; }8 Z1 Z3 R! R% `) f
* x: h3 r( Q1 y' B4 b! B) V7 Y" C
double U() /*求u*/6 e* n4 L+ C+ t, [+ b$ p# [1 x
{7 S( S. @' S$ {5 d8 A7 j
- B2 m2 C) `- J
}' H D2 m0 S( L, J( L
+ x; e7 O9 h2 w: v, ~+ F7 ~
+ s/ Y+ ]% u! y% P5 pdouble dU_dnmd() /*求du/dλ*/9 S4 ~3 B( d6 R
{
7 {% O. t0 ?" R$ ^: \! D, M; \- r* _6 K/ E' s8 ]
}
/ \2 W* E7 ]4 x, o/ b7 |/ R* p" ~1 l
double dT_Ys_dCA() /*壓縮期*/
2 x5 I$ [' A W0 |8 k{- J4 q7 l' J! V% A) P
" E6 s; n6 J2 x
}# p, D5 w# s: w; L: ]" j
& ]2 e. z! f3 ?( C5 v6 l3 m
) Y* e" i6 o5 g4 U$ _4 jdouble dT_Pz_dCA() /*膨脹期*/+ F; O9 l" _6 }; t& w
{
' d$ c/ _+ p3 P! @* D X! ]
1 G) U7 B% N, z6 f}
" p: t$ \ b# ~7 Z0 L0 o2 V$ t( ^; ~3 ?# B) Z
. t& |4 A2 V- D! u5 @8 j% Q
double dT_Rs_dCA() /*燃燒期*/
4 s; F$ Y: F2 G% F6 q. P{
" g3 d1 b: W0 ]% A+ M
8 Y) y/ O/ a0 `% w. Z0 B}
" b$ w2 ~ O; h$ i+ M* I6 F- i$ U; U7 o4 S) R
5 L3 E. N7 L9 d7 O, U, N9 L
double dT_dCA(double an) /*求dT/dφ*/
0 B) H2 j O; D x/ x1 N2 }0 H+ m{
, L: i! P; z! L! g+ f5 ?% @" M& o CA=an*PI/180;( w0 L# ?! X6 M2 p: U6 s7 T5 D$ i& m
V=V_CA();
- ~3 w" n. O) C, T1 N4 ?4 Y+ K7 Q/ W if(A_SC<an && an<A_CB) return dT_Ys_dCA();! g5 R, C7 Q3 E5 B/ X i5 _2 H5 m
if(A_CB<=an && an<=A_CE) return dT_Rs_dCA();
3 y0 F, G6 ]7 @. H; Y if(A_CE<an && an<=A_EO) return dT_Pz_dCA();$ o; U. K7 Q. d" y$ f: M
if(A_EO<an && an<=A_SO) /*換氣過程不計算,線性賦值,避免零值 */
* }. P! N2 o- g2 z5 G" A( w P=110000+(m_P[(int)A_EO]-110000)*(A_SO-an)/(A_SO-A_EO);( @9 ~; l1 c0 y& G7 Q$ v; N7 _( j% e
if(A_SO<an || an<A_EC)
5 x: y; a7 ?/ A* E! N, I# f P=110000-20000*(an>A_SO?an-A_SO:an-A_SO+720)/(A_EC-A_SO+720);
! @: R( H5 m) ~+ ~% m1 c8 h- z# l if(A_EC<=an && an<=A_SC) P=90000;7 u1 |3 e$ Z; ~2 \: v5 h
return 0;0 o' o" K8 Y& E
}* Q1 n1 |8 A5 Y
6 B1 p$ e: }" {3 s: Q
void Calculate(void)# n2 J2 o* ?6 y' L& k
{5 _+ O) S! F+ h8 y$ s* K- S
double Tpre,K1,K2,an;
0 P4 m; n' c& G! }" l+ \ int index;( B6 b2 ]6 b- M) ~
Pe=30*4.0*Ne/(gnum*100000*n*S*PI*D*D/4); /*平均有效壓力bar*/
6 J0 Z+ H) b/ m) H* O mBo=Ne*ge/(30000000*n*gnum); /*單缸循環(huán)供油量kg */
6 Y. Y# P! W. U* Y& s3 e9 a CA=A_SC*PI/180; /*進氣關(guān)閉時的角度轉(zhuǎn)弧度*/0 A& C! Y' Y C; n/ n' ?
V=V_CA();/*進氣關(guān)閉時角度下的氣缸容積*/$ D5 A" _: r1 |
P=P_SC;
# C9 c7 {8 T! O. _. {# }9 \ T=T_SC;
6 o* y' w9 j' J7 E0 w( j index=(int)A_SC;/ c8 C9 h; J2 u
m_T[index]=T;0 N' ]1 q2 ~# ?6 {7 Q1 S
m_P[index]=P;
* Y9 V; f! d5 o0 U m=P*V/(R*T);/*進氣關(guān)閉時角度下的氣缸內(nèi)工質(zhì)質(zhì)量*/' O8 r3 \" X& V b3 a8 L
mL=m-0.01*mBo;/*進氣關(guān)閉時角度下的氣缸內(nèi)空氣質(zhì)量*/. A1 o. N7 d% F( k
mf=m-mL;, d, ?; K% E! j5 @7 K4 E% S f( P
Tpre=T;
' K# s: T9 Z! E5 A an=A_SC+1;
8 e6 t* V+ _% f4 a# z1 V# @! i. @9 e
do{5 T! I Q0 ^, t# \5 P; N
. H( N8 s2 m- a" k
/*B 編寫歐拉法求解常微分方程程序 */
" x: V' E3 V" z3 R1 K4 F
1 W7 S% t; U& }. A+ B9 v }while(an!=A_SC+1);
) R& w& n1 [+ N+ o! M1 o; P0 {2 ]}
, }5 \) Z M! k! l' N* V+ z1 j0 u3 W3 Q3 n8 r6 r) S6 x% \3 k, b
void main(void)7 Q. r: }( e; H2 c- c( j/ h0 k$ A& t
{/ I9 R# Q3 b1 ~/ ], `# I
int i;8 f% Z. ]+ H$ T6 u6 Q' B2 w3 g( k
FILE *fp;4 P: S8 Q) T. G- C- \$ s
D=0.11; /*發(fā)動機數(shù)據(jù)按各自的任務書輸入 */
' j+ m9 v9 d! a: e S=0.13;& H) d* G! N, o9 n
L=0.21;
% ~& e' D- _/ ] ge=236.0;
) c; u6 e+ \& H6 x n=2400;
$ V2 Z6 r+ k/ K2 Q" I8 [ Ne=101568;
- ?) t0 e2 ?. a/ b# a. Z gnum=6; ysb=17; M=0.7;+ Q# y6 k- T) c
Hu=41868000;
; R1 i( x: n& F5 ]; j" D v C R=287.08;8 H& @9 b0 v. ^5 x5 ]6 l
Pa=101000; /*大氣壓力*/: z- a' i% e2 y4 U: c5 \1 Q
Ta=300; /*大氣溫度*/
( l, G8 A+ X: R$ b T+ o# k hs=(735.0+R)*Ta; /*大氣焓值*/
# R7 ~3 ^/ _- f# T* x$ Q P_SC=90000;' r8 y a* T! M% h8 F( N
T_SC=313;0 s6 g- T) D, S
" L4 f! N+ H5 u+ @0 W! y
A_SC=216; /*進氣門關(guān)閉*/5 R8 `2 W( u- w& n7 M; k) ?
A_CB=350; /*燃燒開始*/- v+ O3 N& \1 I( a9 E4 {6 Y0 U
A_CE=410; /*燃燒結(jié)束*/
$ Q2 I ~* }3 H5 f" ~ A_EO=484; /*排氣門開啟*/
4 R: q- p9 j6 i4 E A_SO=705; /*進氣門開啟*/9 G/ {* Y# s; u" l
A_EC=15; /*排氣門關(guān)閉*/
5 j6 R& W) ~) y5 y5 e# n- u/ t* P3 [/ T1 q {
Lo=14.4;1 J# P" u* i8 z" B; {0 d6 J3 L$ l
* K5 {, a! v% O! ?* s for(i=0;i<720;i++)
, v( ?% }& u4 Q. b+ O {
4 i- ~9 ~3 C _' B. q m_P[i]=0;' d# q* S8 N: d" N9 w9 B
m_CA[i]=i;
5 i! @$ D0 V/ n1 y: |* E m_T[i]=0;
2 `) Z% f% B( d3 N7 z1 {$ K }$ z; U1 U% I" U) z l- F4 @
0 g5 l0 y v8 Q6 Y% S2 o
Calculate();
8 n: w. \( h+ y# L; ]7 |
# B+ Q6 E! J, l$ g$ f' V4 w1 R; \ /*C編寫數(shù)據(jù)輸出程序,計算結(jié)束后按順序輸出0-720轉(zhuǎn)角的“缸壓,溫度”數(shù)據(jù)到outdata.txt文件 */$ K5 q, \) h2 G0 m: c
- H4 R7 k* x( l! L' Y7 ^}
( t' I/ j4 J; g7 c4 v
% G5 }3 a7 g" R5 |! w& {' {- Z( R0 U; w7 d, h% b. A* k/ ?
|
|