|
#include "math.h"
2 q+ W" J8 ~$ a# Y#include "stdio.h"
5 ~ z+ C. q( ]7 W7 ~#define PI 3.14159268 i/ ~: ]+ C* Q8 s* N8 u
2 F9 H: ^# P0 A2 T6 z$ Udouble D,S,L,ge,n,Ne,gnum,ysb,Hu,Lo,M,R,P_SC,T_SC; H% ?- W4 v) ]) B
/*缸径、行程、连杆长、比油耗、转速、功率、气缸数、压缩比、低热值、理论空燃比、Weibe函数常数m、气体常数、进气门关闭时压力和温度 */* `. A( h1 v1 R
double m_T[720],m_P[720],m_a[720];
+ k: F/ u/ r/ ^, a, M3 a, a/*气缸温度、压力、瞬时过量空气系数 */
5 `3 { ? Y/ Q* Q$ z1 C int m_CA[720],A_SC,A_CB,A_CE,A_EO,A_SO,A_EC;
% N. k9 `6 k {, t$ P: O% O& J W2 ^ double Pa,Ta,hs,P,V,T,CA,m,mf,nmd,Pe,mBo,mL,dXY;
' N9 [+ K$ ` g. ] double Cv();
5 ?8 V5 s9 v9 m! S1 ~ double dV_dCA();6 c' E- x5 `0 T7 h; `; p! f" x9 z# w
double dQw_dCA();- m$ Q" A1 p+ f: C5 W5 `
double dQB_dCA();
6 S- Y+ C- Q2 X0 \ double U();1 x' X7 J6 F& U
double V_CA();! ]# B: V* P7 [/ U. z
double dU_dnmd();
; ^. c/ \. u' R P: V: q double dT_Ys_dCA();. R2 @( M) |2 Y( h8 A/ `5 B" U: ]) C ~- m
double dT_Pz_dCA();
' v7 }! a0 b/ ^( }9 A% F- q" J5 u5 G double dT_Rs_dCA();
8 D, R" g* }, e3 Q( B7 M+ L double dT_Hq_dCA();! k" S5 K x q5 m
double dT_dCA(double an);8 U0 K- A7 P" H
void Calculate();
1 k8 t! E6 E2 C$ u6 A
3 S7 I9 P6 u) v! Q: i! T6 d6 v/* A编写各子函数程序*/2 g0 S1 E3 r+ a3 V4 z
double Cv() /*求定容比热*/
' [" }1 G$ t9 A; z0 u{
) k0 T) y7 H8 v7 P# K5 O8 d6 }7 Y# I; ~8 `! H
}; Z0 p4 S3 [8 J4 s
7 S& A" q& ^( c$ B4 J+ h
) Y. u" | ^% S# `double dV_dCA() /*求dv/dφ*/
' A L/ N5 i& a, s& b, Y' h; |{2 t" t# v- T9 H2 ]0 {
$ o, F- A; p: g2 s" C2 n# C, i7 _* J
}( f n& O5 {( w' E: | j" {# x' m
: y; h% |+ Y" F }" s9 W) b
' {) V/ r5 m: O. _double V_CA() /*求气缸容积*/$ K* l4 f7 Y: Q5 o- y& p q0 r
{ {5 L" h0 `8 D# j; Y$ l, h+ z# J
( z9 N0 j3 w4 ]" o$ H}
4 P y- l9 O+ |! ~
5 K. ~6 T$ A/ e# t
( c/ H. X2 Q9 J" {7 N: z' bdouble dQw_dCA() /*求dQw/dφ*/& ?# v% }0 l; h! ?
{/ A# Y9 E, ]# j6 Y' N3 c
0 F( n) ~2 w1 P# S3 E}, L, y. \4 P3 U" L- F: @( s) X
3 ]4 e+ k Y! O+ s5 L# M! p! y$ N* {
double dQB_dCA() /*求dQB/dφ*/+ k# G0 t8 H' N4 E5 D6 {
{
% [4 \4 X& P2 Y) `0 \& A
$ v2 U0 F: b* ]0 v# F. w- @}- m! S3 i% E0 h7 p
( \8 L7 {- O# F# I
o3 H$ o' v; p5 Q6 b* Vdouble U() /*求u*/
7 v# F1 P% r3 b& k" G; j7 z/ K$ g{
* N; u" p' [6 R$ H( O7 g7 z6 P6 d o4 k: y' U
}* u W0 s9 S, E( L- q1 q
: W1 _1 W7 z. O% s6 j' @9 u. e6 g$ U3 t8 ]$ u( D
double dU_dnmd() /*求du/dλ*/* r1 w2 Z, o K$ U7 e% D! J6 d
{" ~. A2 h$ a* O0 j* H
; R# j! @/ _7 S; H# J8 G, H* I2 I}
# y; ]" @+ M9 s0 a4 w" z$ ^3 \: s& Q3 A
double dT_Ys_dCA() /*压缩期*/
4 Z, N5 @6 ` o6 Z1 K+ H9 t( Q{+ o; Y: F9 @. Q& A4 P4 u/ g
: g. }2 ^) a( G! Y2 g* z. H) k
}
4 c) t+ g1 ~3 W9 V; z8 a1 e' T$ l# k( [; J" k8 A& {
( ? \+ J! p$ ~) o# Zdouble dT_Pz_dCA() /*膨胀期*/
9 h+ i9 m# I- b2 `$ X: p2 A{
( |% K+ _- D0 `1 T& s
5 ~$ I H7 t; X0 f6 r4 [}
& @, u# Y6 [/ _) Q( \! o3 i: X9 _2 Y |$ G2 O- q4 J
# A8 s7 z( j% m) Hdouble dT_Rs_dCA() /*燃烧期*/) B* C5 G5 G" b- ]% X( Q
{6 k4 l7 ^5 k5 t9 O- _8 P
" H0 [: O0 y. C7 a% r}# e4 M( ? [( l: b
/ `0 O7 k7 @' l0 ]4 g1 w
* n- i* s& O! y2 c8 [7 Odouble dT_dCA(double an) /*求dT/dφ*/
# t7 s0 v+ P) Z5 X{
1 n% q8 p8 x- Y CA=an*PI/180;
! T! R# j% F' w6 A5 ]' r* B& z V=V_CA();. ^/ ?! [' [4 U
if(A_SC<an && an<A_CB) return dT_Ys_dCA();6 _1 E# z# y; C. `& P
if(A_CB<=an && an<=A_CE) return dT_Rs_dCA();
Q1 O9 @$ M# r1 k$ o* t1 { if(A_CE<an && an<=A_EO) return dT_Pz_dCA();
% h7 U/ {% s4 U0 q% O if(A_EO<an && an<=A_SO) /*换气过程不计算,线性赋值,避免零值 */
% p! T" N% F" B3 S P=110000+(m_P[(int)A_EO]-110000)*(A_SO-an)/(A_SO-A_EO);
# [8 \3 e2 r; Y1 K1 P& ^+ u% _* K# u if(A_SO<an || an<A_EC) ( |% f6 {$ {/ T& C# n$ w. ~9 A; {& F0 Z
P=110000-20000*(an>A_SO?an-A_SO:an-A_SO+720)/(A_EC-A_SO+720);
4 ^3 W1 @: P% I: X& o* U if(A_EC<=an && an<=A_SC) P=90000;
# q7 R/ B) Z. I0 ^: J, @+ `% n return 0;
, G6 F& t, J' S5 q8 D}: n/ ^2 Q5 {; ?0 T ?+ {
; P ^. W1 S/ S( t5 O* p3 `
void Calculate(void)
: T" J& U+ `4 w( j{( P) `1 m1 N2 q: L
double Tpre,K1,K2,an;2 A0 V! a0 m) C3 Q! |1 a
int index;- F! M; }% Z4 l% A7 U6 u
Pe=30*4.0*Ne/(gnum*100000*n*S*PI*D*D/4); /*平均有效压力bar*/7 g6 Y' d* I, t
mBo=Ne*ge/(30000000*n*gnum); /*单缸循环供油量kg */: \$ L$ z% R5 [+ Q
CA=A_SC*PI/180; /*进气关闭时的角度转弧度*/( B8 I0 k8 A3 V% L: |2 l
V=V_CA();/*进气关闭时角度下的气缸容积*/
: Q. Y! k% r8 ~: W' u2 ?) v, a P=P_SC;
5 [, R! T6 ~& V" A2 ? T: y T=T_SC;+ [( D ]/ n1 \& ^
index=(int)A_SC;
: t- r" J& w3 k9 F9 y m_T[index]=T;
6 f, r3 {" f$ a3 B+ v# C m_P[index]=P;( j0 L6 E" q5 f
m=P*V/(R*T);/*进气关闭时角度下的气缸内工质质量*/
: x+ _, v$ a8 P- Q mL=m-0.01*mBo;/*进气关闭时角度下的气缸内空气质量*/" J+ z! ^ d3 _' ?5 w" h/ n+ @
mf=m-mL;
* L( o7 r" e$ h X/ b& h# a Tpre=T;
( R2 m" E) a+ A0 Y an=A_SC+1;4 @1 ]% C. v+ V1 y) [
& I1 s. X8 j$ t/ B0 M0 p do{0 W* _& l5 x& H# W, b! x. E- ^
- J6 J2 r0 e; q /*B 编写欧拉法求解常微分方程程序 */5 B+ S& R0 d8 F K" S: {+ O9 b6 l
; i t: ?' s9 v2 c6 r4 V }while(an!=A_SC+1);
8 i0 K, f0 P6 T/ Y6 @}
" t; U' [) N9 g" f& v, I" d0 ? ^0 a" L9 f+ e
void main(void)
& s0 P) f& |# O2 Y7 H0 @{3 S/ M& V N2 ?1 I( A9 y
int i;# k2 Z0 d3 |$ A& e, u2 b: v
FILE *fp;% X2 o$ F& a: N% M) Q1 y& \. Y
D=0.11; /*发动机数据按各自的任务书输入 */# ]. V1 E5 e9 o( X: q5 b7 G
S=0.13;1 ]$ R! K* G& ]2 X4 Q. `
L=0.21;/ _$ X( j6 y1 }4 ?0 T
ge=236.0;# P: @1 ]* q: x8 m9 A
n=2400;
h8 u. S& K! W2 S) r Ne=101568;% f+ D% g0 [# z
gnum=6; ysb=17; M=0.7;! F9 c& X3 |8 x- M) P, C# o
Hu=41868000;
8 Q6 N6 X6 z/ o# N. n* a1 r R=287.08;
$ o3 H# p Q' X- o3 u Pa=101000; /*大气压力*/
- N; E+ i! x0 C1 B. O5 c$ V Ta=300; /*大气温度*/
, M7 X, [8 m8 v1 X- L4 H: h hs=(735.0+R)*Ta; /*大气焓值*/
4 g1 e7 L0 b( }) w P_SC=90000;* w0 B# A$ S2 F% \# c& S
T_SC=313;
2 m3 F" z! L: t6 C* E
. t1 c3 A6 W$ |! z% n A_SC=216; /*进气门关闭*/2 S* E9 q4 V/ q& S) E/ S5 O3 `
A_CB=350; /*燃烧开始*/. t. L0 w9 P% F+ Y3 \7 e
A_CE=410; /*燃烧结束*/
6 \7 [5 x5 e3 O9 l {6 W A_EO=484; /*排气门开启*/
, S" x$ d. Z4 q) N8 W A_SO=705; /*进气门开启*/, }- b, {. A2 f q% z3 K
A_EC=15; /*排气门关闭*/; U6 g0 p0 Y+ y& C, X4 N$ U; c
9 _- c% C- ^8 V2 A5 m* a# s" \ Lo=14.4;- v* l' r. T" v6 }1 _% P
6 v/ N7 Z+ N5 r% {+ }+ t0 t" F( i8 j for(i=0;i<720;i++)
# X% m1 _; O3 e V0 A. n& c. r {0 Z% f" S- U d$ O1 d/ O
m_P[i]=0;
% q' N8 b9 |# t% q" x1 R- e8 @ m_CA[i]=i;% h' @0 B" t% z
m_T[i]=0;6 g) a6 j6 O( q, n6 K# n
}7 p6 w) g9 a: r! d( {* H
$ g# w+ ?1 \+ q/ u- B5 L
Calculate();# o' I2 B9 U1 o# s% ^4 e0 L
0 N8 U! {1 X- e r, ?% w1 T
/*C编写数据输出程序,计算结束后按顺序输出0-720转角的“缸压,温度”数据到outdata.txt文件 */$ }! [! a( `4 {& C5 k
0 O; C: j/ V& L7 e' k
}
. a- l* b# L; z" {
5 u# R$ C6 X4 @" ^" B0 t8 d2 v( h' ~: d# ?5 m4 `4 E
|
|