机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3226|回复: 2

内燃机热力计算怎么用C语言编程?模板如下,求助。

[复制链接]
发表于 2015-6-28 22:58:34 | 显示全部楼层 |阅读模式
#include "math.h"
$ n/ r$ y6 z  h2 y' o$ X) x' G( ~- o& Y#include "stdio.h"' t$ J; N! t6 |6 h7 W
#define PI 3.1415926! O1 m$ I. A* g9 Z( d$ U  s% Y
/ R! [2 h8 _$ v  l2 g/ H# w0 H
double D,S,L,ge,n,Ne,gnum,ysb,Hu,Lo,M,R,P_SC,T_SC;
! U" W3 s8 I& X: E# E' G/*缸径、行程、连杆长、比油耗、转速、功率、气缸数、压缩比、低热值、理论空燃比、Weibe函数常数m、气体常数、进气门关闭时压力和温度 */
( j' G5 ^& ?% J        double m_T[720],m_P[720],m_a[720];- q5 v. e" D5 Z6 s9 }" n. _
/*气缸温度、压力、瞬时过量空气系数 */" ^* R" s' T5 q- O; d  q0 q
        int m_CA[720],A_SC,A_CB,A_CE,A_EO,A_SO,A_EC;
- J* T! X# Q) D$ G! m" O* `        double Pa,Ta,hs,P,V,T,CA,m,mf,nmd,Pe,mBo,mL,dXY;
) @4 z6 F# R; S2 f/ `        double Cv();
, Q6 n5 q0 S3 o: f* U$ [        double dV_dCA();
0 m; x5 P; n3 p- Y5 w2 }        double dQw_dCA();
6 F0 D# ^; _  M        double dQB_dCA();7 e) K" O. }3 [0 t
        double U();
+ \# Z# B; V( ?! B$ |9 i        double V_CA();
4 |% L8 u: ?9 {; n! v; z        double dU_dnmd();
. @& B/ e( a/ {% j4 M- _- B& |' T        double dT_Ys_dCA();
* v0 X) {  _$ ?7 e        double dT_Pz_dCA();- D% |. C( p: |! H+ E8 N
        double dT_Rs_dCA();
" T6 C1 X1 A" v        double dT_Hq_dCA();8 \! N4 Q- m" {! r/ b9 d$ T/ I5 c9 U
        double dT_dCA(double an);
) o% }, I% Q- ^- Q' Q( c$ ^9 v6 R        void Calculate();
7 e( F2 G; W% |0 H9 _8 r- _5 V4 E& r
1 C' P6 m5 g0 K  h9 v/* A编写各子函数程序*/- j- }; r/ c; w1 }. c7 M
        double Cv() /*求定容比热*/" Z5 v( s7 C' d
{; s; l+ l. F) P, O

) f; t6 m3 \  I. Y}
+ u: p8 @0 l, C  H' C& ]$ H& o* d  g5 D
( g/ W1 I' ]7 C
double  dV_dCA() /*求dv/dφ*/
, @0 W  E4 A8 T$ D" u{# Q, I% `' a# _  g# Z/ h

# a0 a) r' X- \) l0 ]  `}5 Z/ U# [% V9 R
' O: S+ ^, v' _+ I0 n0 E9 a- E
9 \3 R# c8 _4 }! P9 \, m2 N
double V_CA() /*求气缸容积*/
* L4 s' Y+ {# U% I. V* y! ^{
: V: c) i: w  M+ L. t" [8 F, W; G9 z; X! h  f$ s' j+ M% t
}8 f, _( h+ n/ l( m
3 v  U& e! V* J% r2 Y, m+ B6 u

2 l2 Q9 E3 w/ L  Cdouble dQw_dCA() /*求dQw/dφ*/
& }( \) X! k+ K! G( j{
* A3 y. ~# i& z
& L$ H9 @6 I" w4 a6 J' Q: Q}
1 x0 S9 l- Q5 G1 `8 |% z
. e; o& p9 ~5 Z* Y! f  B
* Q( ~9 x9 i( A. k! s/ H- B+ B  y+ Idouble dQB_dCA() /*求dQB/dφ*/
- M; C9 i/ ~) H- J2 H# Q{
( Q/ Y: \: M8 B+ V+ }  u6 Z9 l" V
2 q" y/ t, n. _% e% \}
" t/ ^9 K, ^! @0 A
( }. p5 H! b; d$ T, }; A# [
2 w' X1 [7 M" j, p( G6 [double U() /*求u*/) A3 m( ^( j2 W3 R. e, j0 m6 G
{
7 g+ e8 ~7 y9 n
7 q5 D; k/ T' @3 D' m}6 a" _' \2 c) q3 w$ G9 R: r
8 G# Q" |8 v3 L

( v  D/ z& \- U+ u; M, w# cdouble dU_dnmd()  /*求du/dλ*/% t- _) L5 I# _% E# [) u1 P: r
{
8 N  f: P# \+ N5 P6 a7 h" g  B) u8 u" N* ]! G- d0 ?8 H$ l4 X
}- @1 A. G5 m0 ^; P

. R2 X9 O$ L7 G0 @; l' p; O6 Sdouble dT_Ys_dCA() /*压缩期*/: t) f1 F, e& o4 O- D$ R
{5 R3 Z6 I3 v" [! ?

8 p0 }6 p; h# k- k% H+ Z7 R" i( P  M}
2 d: H6 N# Y; \9 O7 `7 d) W1 U4 L! |* I9 O0 P7 L  f( m, j9 s' J
. X  L# X0 ?$ b6 W8 o2 m% _
double dT_Pz_dCA() /*膨胀期*/0 K$ }1 y3 l6 G) o
{
3 H7 N1 U6 F5 u- I5 d
3 _8 Y) T; N' j}
. o% v8 N- t; Z" e6 f4 S# M, u1 K: u1 _+ ]" h1 F
( N: g  q' K2 q5 Z
double dT_Rs_dCA() /*燃烧期*/
" ^4 |3 N% u  S{; x3 s6 \0 U% l& T, I9 ^1 C' ?

$ N1 Q% z! f) e1 T6 v}  z! h  ~# e; C. a; R7 @4 U* {

2 z- X# w- Y6 j  }. k' s) Q
& f+ {/ D+ W3 y" K" X2 }5 n5 \double dT_dCA(double an) /*求dT/dφ*// o, m5 `8 d5 u" w! ^2 G
{  L/ f# M5 e  e& _4 M; O$ V2 {
        CA=an*PI/180;% Z6 g. F) h0 U2 Z7 s
        V=V_CA();; W4 m+ _3 ]. |. I6 O( t# J7 c$ v
        if(A_SC<an && an<A_CB)   return dT_Ys_dCA();# c9 D2 D. M3 C0 e" J+ h/ W1 j
        if(A_CB<=an && an<=A_CE) return dT_Rs_dCA();
) i' |6 s0 B. V5 \/ j! a) e        if(A_CE<an && an<=A_EO)  return dT_Pz_dCA();! `6 [& D- G0 E% g- f( H
        if(A_EO<an && an<=A_SO)    /*换气过程不计算,线性赋值,避免零值 */. y- ]4 i! {- J" @6 o: m  I* [
                P=110000+(m_P[(int)A_EO]-110000)*(A_SO-an)/(A_SO-A_EO);- x2 C$ Q3 V, K9 S
    if(A_SO<an || an<A_EC)
& |7 `3 F9 E" R$ i* F6 I% K9 X" M; v                P=110000-20000*(an>A_SO?an-A_SO:an-A_SO+720)/(A_EC-A_SO+720);
$ Z3 W3 t) H& G+ p1 I9 n' S% T        if(A_EC<=an && an<=A_SC) P=90000;7 ^/ k5 N' @% \
        return 0;4 Y9 }( s/ J" y/ ]+ i8 D! E
}$ G3 V& {1 C5 u/ U
! k: h, R3 u* W; k  w: c
void Calculate(void)0 w$ x- v: R1 C/ m  P  |
{
& P8 I1 d: @# |+ |2 F    double Tpre,K1,K2,an;
5 _4 I  L: O/ ^; M& `& P    int index;& A% W3 E) o8 l6 v! v% j
        Pe=30*4.0*Ne/(gnum*100000*n*S*PI*D*D/4);  /*平均有效压力bar*/
) x+ i( O0 H5 Y' \9 `        mBo=Ne*ge/(30000000*n*gnum);   /*单缸循环供油量kg */. r( B/ [$ X% w8 R
        CA=A_SC*PI/180; /*进气关闭时的角度转弧度*/
: U5 B$ s. c  o3 F1 c% Z        V=V_CA();/*进气关闭时角度下的气缸容积*/
3 l% {! Z4 |. _        P=P_SC;
8 B1 e! a) m( m1 e        T=T_SC;
, E% A4 z+ {" H1 o8 k        index=(int)A_SC;- R, Q; E3 q* E8 n2 e. g
        m_T[index]=T;5 S$ `# x' D& V- X
        m_P[index]=P;& Y& k4 h* s' g7 m. @
        m=P*V/(R*T);/*进气关闭时角度下的气缸内工质质量*/
) K5 x7 M2 f! R* P# Q, v        mL=m-0.01*mBo;/*进气关闭时角度下的气缸内空气质量*/4 T; ]) X# t5 @5 j
    mf=m-mL;* U! t8 y0 u- |, U
        Tpre=T;. B- s! G/ B# S) u3 q0 j
        an=A_SC+1;
3 w4 C: }  s- z6 Y( C$ L5 J" m0 m6 p8 n8 F! s0 v! ^  T4 Z! w
        do{
1 N: ~9 T; h; I) a6 S* i/ `, I
& ?! h/ Z% T: I" J0 {  /*B 编写欧拉法求解常微分方程程序 */
# C+ I2 H5 v' s4 @
1 W5 C5 @( v# p8 Q) f0 E' Q        }while(an!=A_SC+1);
: \/ \0 t' x2 m* W" }* Z}
; h2 ]# y2 g% e/ H
! q4 W6 s( }- n; B$ ^void main(void)
- y3 M- Y" Z# \: B4 k{# j4 |& L0 R) m  D) a* y. H: g5 A
        int i;! W! y$ K: ]8 D) ?; d
        FILE *fp;# j& S3 [  H3 V6 ^& \5 T+ \7 n
        D=0.11;   /*发动机数据按各自的任务书输入 */
* \, q9 q7 Q: P0 F        S=0.13;- l7 t( E5 T- b
        L=0.21;
5 f+ c( `! ~* o9 [# D' o        ge=236.0;
3 D; ]* {" V* x        n=2400;
5 `0 R( c6 _+ Y7 X        Ne=101568;5 s! ^3 J6 _5 C, D8 N
        gnum=6;  ysb=17;   M=0.7;
4 ~% D$ n# g1 f+ X$ {# _; f        Hu=41868000;- [9 P* f; n1 N% E
        R=287.08;
1 ?- ~( D+ L2 h        Pa=101000; /*大气压力*/
8 c9 B3 j  l3 A5 n# |1 p8 O$ i9 n) H8 F( v        Ta=300;    /*大气温度*/: i: K( i+ D6 L, R) Q
        hs=(735.0+R)*Ta;  /*大气焓值*/
! q) I* c3 J! i7 v( F  ]/ z        P_SC=90000;# T1 C# o0 R7 ], Z" H
        T_SC=313;; w$ Y' c2 j& [! s1 y$ v+ ]

* E8 P6 N# X8 S        A_SC=216; /*进气门关闭*/
8 s- Z" U% e" B% C% h/ S$ d        A_CB=350; /*燃烧开始*/- Y, n( D  ~5 I5 B$ |( |4 c
        A_CE=410; /*燃烧结束*/
/ F1 ~  K2 \* @1 y        A_EO=484; /*排气门开启*/
5 o9 ?6 ~3 \6 d        A_SO=705; /*进气门开启*/
9 r: v% y) |2 s. B  K        A_EC=15;  /*排气门关闭*/
* C) s/ F, C( a4 c+ t3 k/ T6 F" R1 ~: ^$ g* B. x1 y: m. G: H6 C
        Lo=14.4;6 s: q/ t. W7 N, d  L% c! b" E

6 `/ r  Q% ^( }" N    for(i=0;i<720;i++)
8 m, W0 f% z& s0 \! {- u        {
5 e* f; z4 H: C0 P2 |' c                m_P[i]=0;
. g* i, G0 {! K. w' I                m_CA[i]=i;
( f' E0 A9 t; @. C6 m- C                m_T[i]=0;6 b( X, N# H; c' a' K" m  |& G
        }. d- s' M# h* ]; s
& Q: Q5 L  [5 B# D  _2 F
        Calculate();
( D& [  y' B! l& a6 \
3 Y& Y. G9 l7 A' `    /*C编写数据输出程序,计算结束后按顺序输出0-720转角的“缸压,温度”数据到outdata.txt文件 */5 }; |1 f; y, E3 Q0 J& |$ M

, N3 M' Z0 g, w% {  y& c}8 l4 |4 F- y- h/ i1 |: W& d& l* I
( b" U. }9 y9 W
9 o  E2 H" w  B& X1 j
回复

使用道具 举报

发表于 2015-6-28 23:45:10 | 显示全部楼层
不难啊  完全是 把 公司 翻译成 C 又没有用指针跳转的。。。
回复 支持 反对

使用道具 举报

发表于 2015-6-29 01:45:20 | 显示全部楼层
这是作业的干活吧……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-6-28 09:10 , Processed in 0.056049 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表