|
#include "math.h"
( Z0 m1 S6 G4 {# h& }) {#include "stdio.h"
! O! ], h4 \' _- Q+ k2 w, J#define PI 3.1415926
4 g/ J6 C$ ~7 m$ h
- x# T/ X* j+ ^double D,S,L,ge,n,Ne,gnum,ysb,Hu,Lo,M,R,P_SC,T_SC; 9 l$ e5 [! O9 Y5 Y$ V# V: g
/*缸徑、行程、連桿長、比油耗、轉速、功率、氣缸數、壓縮比、低熱值、理論空燃比、Weibe函數常數m、氣體常數、進氣門關閉時壓力和溫度 */
; c d8 y7 h& K/ b+ O4 j0 ~+ V0 l double m_T[720],m_P[720],m_a[720];5 Y' s. p1 z/ E
/*氣缸溫度、壓力、瞬時過量空氣系數 */
9 b' U2 C' L1 T* F: U8 f. g int m_CA[720],A_SC,A_CB,A_CE,A_EO,A_SO,A_EC;
. k* s+ C1 F) `8 |$ b: T/ C double Pa,Ta,hs,P,V,T,CA,m,mf,nmd,Pe,mBo,mL,dXY;
2 h3 O% M4 L0 P7 \2 u2 |3 ~ double Cv();
% l% X' b0 b3 w7 R1 Y double dV_dCA();
2 h; E- X5 }2 V1 h5 k4 }3 ?' N double dQw_dCA();2 S8 d& G9 K7 C v* U, U2 }, Z6 S
double dQB_dCA();
, M2 |" ^, W6 ]- q2 D7 M; V& _% N double U();5 G/ ?" ] c8 w$ y! G5 f( I6 I% S# {
double V_CA();
/ b8 G5 I5 T% V/ n/ B double dU_dnmd();
4 Y y& T- x( w/ d double dT_Ys_dCA();
% W4 P2 t3 Y9 X. F7 b double dT_Pz_dCA();; t2 ?$ a# ?' O! R" R- D# H3 j
double dT_Rs_dCA();
3 O# i- `! W, \' @+ |+ w double dT_Hq_dCA();
9 v8 R& J }; K8 r: X1 E/ \$ B double dT_dCA(double an);# P0 |# m) @( i# z. V
void Calculate(); A( L2 j( e% J% N$ ]* R
- U# L1 E: k. }
/* A編寫各子函數程序*/7 `3 l2 }, F. ?
double Cv() /*求定容比熱*/
( v5 m( I! N3 G ?5 T2 ]' m1 G9 j{) N/ L8 R* A) G2 T4 ^
5 `- v/ R' q2 X$ g6 @/ M+ G
}
3 F0 a) v4 B {. o' E
- F$ t, I& D; U: F; d2 \! ]. \' w: t' q
double dV_dCA() /*求dv/dφ*/
- m5 _3 n' v# O2 |7 I{6 F+ `; O/ @1 q- Z& P2 ^; `
! u; i( j1 x; \( X+ T}# _% d6 x l. ?+ H, I. O
$ x2 U) F- c) b; z# x' @$ g1 L
]3 V" O9 B/ P4 Adouble V_CA() /*求氣缸容積*/
+ @4 q: n- E* c; n; D2 i) K4 }- t6 y{
5 p2 M3 I, t, j+ r4 P7 ], a
' o0 n6 i4 U4 k* N \4 b; e}" o) w5 G3 Y Z3 I' ^+ E
; n0 b* z2 Y- K0 D7 J) k* @' E
4 ~& m7 f8 U% b9 e( M
double dQw_dCA() /*求dQw/dφ*/
0 D1 J! s+ \ i9 @{
, W/ J3 Z. ~7 t$ W0 M3 S }$ f" r* c# @) W. ]5 s" k# s8 ]6 q
}
& \" @. B( r4 ?6 V9 _
/ ~% |" x$ S8 b; ?: F" T& n/ B& H$ N# Z
double dQB_dCA() /*求dQB/dφ*/
% e" d" D& o- ~* n{7 b: m" }7 L9 g) F- v+ m
9 F* w1 m/ ]: F* G
}
% p$ p4 Z$ o" v. ^1 F- O' }
4 N( r; K! G1 r5 W: c( U/ }
+ o( [( c" Z1 j/ e# Udouble U() /*求u*/
+ n1 ?; h3 A% z b4 v8 z+ J{
- b) M6 F( j6 [9 r q1 g6 R( T3 l; Y
}3 K; }: y( }1 W7 V/ I- o
+ b+ l0 [- H& [" v8 q
8 W( j' @7 J/ h' X# B" V4 B+ ^
double dU_dnmd() /*求du/dλ*/
2 [2 p* T1 M- n8 i' n{
8 w/ Y$ b( i: z
7 Q5 k( G: `# q* ~}% v% G+ m4 E; a" M% V- t+ k
1 S C- |8 D7 B$ H* s" n) ddouble dT_Ys_dCA() /*壓縮期*/
: P; Y; I8 r9 |( h" H4 V{
`) t5 V" O |1 O9 Z3 G4 ]
& f$ c+ l% o0 g% B1 @& {' Z2 l$ p2 G}
) M5 P1 P) x6 y7 F: U6 {
8 U, W' d3 i' R) U ~0 z9 Z2 N, O" V, l4 v* R
double dT_Pz_dCA() /*膨脹期*/3 M) M/ }1 b' c7 Q- F0 A$ K/ h2 }) E1 V
{" n: k. [% d H
* k0 N' M. K/ y5 i9 c, W- F}
0 g7 j% c8 W! w4 v2 s2 _: T3 H% m3 l# E2 g
7 i$ D7 B' F3 `double dT_Rs_dCA() /*燃燒期*/
6 Q: m7 o/ E% x) i- v3 J P3 E: U{
% i( U0 ^( j6 r* @( ^4 g1 x% P# G' B) r6 K# k4 C `
}
" A% E$ v e) u, k% [1 E! A6 f$ ~; {2 s, _0 S8 _
+ l. @( L3 x0 _
double dT_dCA(double an) /*求dT/dφ*/4 k) {( S- |3 q" X- e
{5 l9 I9 i9 _4 \5 N O6 u
CA=an*PI/180;
! u& n" A% W& B2 u+ H; t$ n2 ^4 A V=V_CA();1 i7 E# Y5 R( | Z6 k& c d) @
if(A_SC<an && an<A_CB) return dT_Ys_dCA();# X0 f% c N+ f1 z
if(A_CB<=an && an<=A_CE) return dT_Rs_dCA();
% k3 |/ Z. H* T if(A_CE<an && an<=A_EO) return dT_Pz_dCA(); N) P% l7 |2 P% N) R, E
if(A_EO<an && an<=A_SO) /*換氣過程不計算,線性賦值,避免零值 */
# R& ~' e1 b3 @8 G+ E ]5 H P=110000+(m_P[(int)A_EO]-110000)*(A_SO-an)/(A_SO-A_EO);
0 m1 v; J0 X3 b9 ]& o: T if(A_SO<an || an<A_EC) . x% g" h/ P" O- f; Y, u4 t
P=110000-20000*(an>A_SO?an-A_SO:an-A_SO+720)/(A_EC-A_SO+720);
& z8 C% f4 M: U2 l! J if(A_EC<=an && an<=A_SC) P=90000;2 ^, @2 ?+ x. N6 n" y7 }8 F8 A1 A4 t. w
return 0;
' Z* Y3 ? X' l}4 G3 Y) T" o- Y+ M" n7 Z3 Q, i
/ ~4 S- }9 p, L
void Calculate(void)
1 s, _* V2 y4 k9 X4 T0 E( V$ V{
! [$ X# P) q( `& H double Tpre,K1,K2,an;) V) l+ R& k6 X, [6 E( Z' X3 E
int index;2 L, T) D$ A# ?4 L+ j7 {& k: [) e
Pe=30*4.0*Ne/(gnum*100000*n*S*PI*D*D/4); /*平均有效壓力bar*/+ f; k0 W- z% H$ i e
mBo=Ne*ge/(30000000*n*gnum); /*單缸循環供油量kg */
" D0 }0 h/ Z8 Y n CA=A_SC*PI/180; /*進氣關閉時的角度轉弧度*/
" S. j) ]3 u( G- R7 H5 z V=V_CA();/*進氣關閉時角度下的氣缸容積*/
" M0 \: O: p3 q' A P=P_SC;
" o0 h9 O2 {) q/ f0 x T=T_SC;' s& s$ c* M' t% Q
index=(int)A_SC;' B) X& W7 w k8 [/ J
m_T[index]=T;- U, a3 F9 C/ ~# D* a, [
m_P[index]=P;1 [7 h C* v' l! e$ N; t
m=P*V/(R*T);/*進氣關閉時角度下的氣缸內工質質量*/. v% [+ j: C$ o; H- h8 n( X
mL=m-0.01*mBo;/*進氣關閉時角度下的氣缸內空氣質量*/, |. W# R( T) N
mf=m-mL;6 P7 E. K7 W% o6 x S \8 R
Tpre=T;
1 j$ c1 x/ _0 W5 k an=A_SC+1;3 d8 r/ B2 r: f2 }
3 a) k% [, _/ _/ \% d, y0 i
do{
" A3 {1 p8 y& f% x: f
" D% i. I/ `: t* B& ?! A( F) S5 i3 } /*B 編寫歐拉法求解常微分方程程序 */# h0 [: h/ F S
" o: j: L- |" _
}while(an!=A_SC+1);% F2 N \% I$ v- T) R# w1 C7 w
}
% z& ]/ a8 B) S1 I- q( e- |& F9 M: i8 Q7 w; z1 g9 d, c/ W
void main(void)* o3 x8 j+ t7 _1 x
{
4 f6 A- c8 {" V9 \. c& G int i;
+ _/ S4 e) ?. Q) N m FILE *fp;. N% N) p) f8 ~" a
D=0.11; /*發動機數據按各自的任務書輸入 */
% E s* c: s q( x+ R U S=0.13;
6 g: r, O$ X3 ^% f# D L=0.21;. h. R k, w2 w# J1 r/ d4 I! v6 t
ge=236.0;
4 M+ {" D" {9 l; T/ ]2 j n=2400;
4 a6 K" x. ]$ ]: v5 g5 M Ne=101568;+ E5 \5 K- n7 `: G6 P
gnum=6; ysb=17; M=0.7;
" a( r2 L& s/ ~! V0 s- V# ^6 n: E# } Hu=41868000;
% S+ r7 t6 C1 ]% `2 ~' a R=287.08; V. G: [% ~$ @ r# z+ T
Pa=101000; /*大氣壓力*/8 C; j: I7 ?4 k* r l
Ta=300; /*大氣溫度*/3 O& D2 @7 h$ F# r9 N3 y
hs=(735.0+R)*Ta; /*大氣焓值*// A3 D+ y$ m& @- ] N- f
P_SC=90000;4 v4 e9 t! f. p& b3 O1 e" J/ r
T_SC=313;
3 N/ \# R; m, Y; c6 x4 Q5 n
v, j1 l p( _! S$ g6 s3 Z A_SC=216; /*進氣門關閉*/: I3 g% G ^4 V0 W
A_CB=350; /*燃燒開始*/; s$ n. X N* o- V1 q4 D
A_CE=410; /*燃燒結束*/
" ^2 p% H v# y. F8 T+ C A_EO=484; /*排氣門開啟*/# x- q3 e2 N1 L9 t/ \
A_SO=705; /*進氣門開啟*/9 o$ v* Z! q5 G1 d9 U5 n( N) D. W
A_EC=15; /*排氣門關閉*/' @* S0 @6 |) B5 ^
5 O o0 r$ y6 P L" E4 H5 u2 U Lo=14.4;
: I' Z' H5 P [* ~0 g3 H
! v; F" V7 s& z; e for(i=0;i<720;i++)9 h0 ?+ F. r2 V U
{6 {4 a4 _4 N7 S6 C& a: x5 k
m_P[i]=0;5 m$ q# l5 G1 i' {$ b! f- z9 j
m_CA[i]=i;
6 I& f& ~! ?5 t' |2 h m_T[i]=0;
4 y* Y$ c1 f3 s$ c7 @+ z e( q4 q }
) p( g& J+ F0 e6 H) L2 a9 N0 c; R9 h* u) E0 Z3 t
Calculate();* [* [0 B1 l& e, m. S3 g* K* ]2 X
6 M* I5 S" _) k; M5 g5 U: W0 C
/*C編寫數據輸出程序,計算結束后按順序輸出0-720轉角的“缸壓,溫度”數據到outdata.txt文件 */
# {6 E5 e' {8 D% e+ ~1 v9 F! Z) R* n6 l% [$ e4 _0 U0 n+ ]
}, q$ u2 I ^: [2 [) T# S$ J
) d2 O% L7 v/ X. D" L; C
4 u0 L$ @0 f# r" l3 C$ r |
|