机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3499|回复: 2

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

[复制链接]
发表于 2015-6-28 22:58:34 | 显示全部楼层 |阅读模式
#include "math.h"" k! n6 z5 A6 T$ d
#include "stdio.h"
; J7 s8 o) S" M: k) p5 {#define PI 3.14159268 D$ f& L/ @) P6 k, D# S
  r' T' w2 ~/ n1 K, B& R
double D,S,L,ge,n,Ne,gnum,ysb,Hu,Lo,M,R,P_SC,T_SC; % f3 X- E% L/ ?3 q
/*缸径、行程、连杆长、比油耗、转速、功率、气缸数、压缩比、低热值、理论空燃比、Weibe函数常数m、气体常数、进气门关闭时压力和温度 */. X! l( n4 d, v% k6 Q4 E
        double m_T[720],m_P[720],m_a[720];0 h/ \, P' z$ V2 A; V) C4 J3 D- N
/*气缸温度、压力、瞬时过量空气系数 */
) L" t6 B4 J. L1 e/ j7 h4 w# ~        int m_CA[720],A_SC,A_CB,A_CE,A_EO,A_SO,A_EC;6 o) @! x8 A+ M2 f% R
        double Pa,Ta,hs,P,V,T,CA,m,mf,nmd,Pe,mBo,mL,dXY;
/ C9 {. o3 K* t( p% @/ v        double Cv();
5 O2 k) }  z0 p$ k        double dV_dCA();
6 A  U: K+ i/ h1 C' M, N: e        double dQw_dCA();
5 Q& C& h8 N2 j& D        double dQB_dCA();
# A+ o6 }/ `5 X' s5 p4 Y# s        double U();% B! \5 `  M" j! [& R1 j! |
        double V_CA();
+ V, n( U% \3 {" S9 x2 y        double dU_dnmd();# C, [% Z6 S2 j
        double dT_Ys_dCA();+ m3 H7 d$ c7 b7 c- `3 |3 y* s- c% m
        double dT_Pz_dCA();4 x; E8 O2 Z9 D1 W% V
        double dT_Rs_dCA();$ p9 L+ @$ C% G8 ]8 ]: A# z
        double dT_Hq_dCA();6 }0 _- z' Z2 e
        double dT_dCA(double an);
. c# I! r0 S! g7 `0 G+ X% Z        void Calculate();
  e4 G) p6 M' A* g) @, i+ T
1 W: T: ~- W: s/* A编写各子函数程序*/
3 m* b2 U* v8 f1 T1 a0 }, k        double Cv() /*求定容比热*/8 R2 h6 Y2 m- X) V, Z9 O! H
{/ Z% ?! V! y! Z- Y' N) u

% Z, }, I  ?% X% m1 H}
% H& F' @$ F: C* X, K8 t
$ M; ~+ @! u/ W# C" ]  I- ~- v0 w! l3 w
double  dV_dCA() /*求dv/dφ*/
' t7 [5 \  k. x9 t9 s  o4 P7 {{
( l0 B+ b! s; S/ I* ~+ ^9 O) ^) S1 @6 t$ v0 D" J
}
6 @9 @5 j) }$ n  Q8 z. H. d4 q3 H. U$ C' T; |0 ]& e% _

7 A. y$ o% L) n4 u; ^double V_CA() /*求气缸容积*/
5 H. [* r  O. v4 f, T+ r1 W{7 F, p. X: ]3 d' b& V/ P

$ U6 i9 a; b3 D% r% W7 N}
& Z: u1 K8 H0 e0 r4 C1 n" ^0 Q3 o% J' ~  R: @( h- x

0 |0 G" v1 g9 E3 Y6 hdouble dQw_dCA() /*求dQw/dφ*/
+ l$ \+ ~7 {* y: l: M, d9 }+ x{9 P2 m% Q+ |0 ]

- h2 g; M( G7 {; [; G}' h7 z3 ^+ j1 Z  y4 B8 e* r* ~/ i

/ y3 A0 m) x+ h
6 g& P4 P- U: J" u6 udouble dQB_dCA() /*求dQB/dφ*/% p0 W. m/ w5 X) Q$ m
{# e# ^) E# I1 d; \: d. U
) o' P: ~1 k1 c. S6 i4 k0 Y
}
0 \9 P4 m; ~! ~( \/ ^2 O+ q0 ]+ W' C+ F! s! p, I. N" T: |+ w% T

; t% k" ~* H5 a: L: |/ k) Rdouble U() /*求u*/
; r. z7 _, M: m; `3 \{7 ~/ ]$ l$ k: o+ w: K+ S

8 |' z% O- h0 V! l, r& @; C}& _& \5 A4 W7 ?) ^2 w
  _, T3 v6 V1 L8 p5 Q6 E4 F1 j
) \; X  |* g8 Z$ n& S; H
double dU_dnmd()  /*求du/dλ*/
; q. P  m- f, H$ e{# q2 G3 \5 y/ N" a7 m
: }9 S& s0 M# _9 U
}
% l+ ?: a) E# T* l, _- Z9 B4 p6 w( D, c4 e( }% ~: p5 d
double dT_Ys_dCA() /*压缩期*// \5 _, T& ~: `: v: E3 X9 T
{
& u# @  V- ]( m/ H- B$ ?1 J5 Y: d. b) v- |0 u5 G5 w8 V! ]% r
}7 m1 ^/ G* B# a" `# u8 o& E9 s3 c

+ B+ {4 h$ D0 s* ?
% j5 x+ x8 t8 M* S, T3 z% @double dT_Pz_dCA() /*膨胀期*/
& N3 ~3 Z- v( H5 \' B! X; |4 g5 j+ |; E{
  x$ w; r- N" o1 U' Z( c( g4 s" p+ T6 ^& `/ I
}9 N% G$ D' ]! ^% E( o# u
2 G6 s1 r3 {5 {6 P7 @
* o% T7 N/ V; d
double dT_Rs_dCA() /*燃烧期*/
! [, @/ `8 X# B) S" u5 B{4 V) P8 t; N7 P; V( T
1 e2 t* Q9 c4 r: B' \
}% {/ _" i9 x$ W2 J1 N9 P2 ^

; `& e. o. K0 x- M& `, Y& p- Q) ^) g- O" f* T. ^
double dT_dCA(double an) /*求dT/dφ*/$ ], a8 I9 a+ b
{% Q8 Y) @  K: f8 r7 M: i
        CA=an*PI/180;
# T8 E* a: e4 K& D        V=V_CA();
% T6 R- h: U/ J! p: Q0 Q        if(A_SC<an && an<A_CB)   return dT_Ys_dCA();
$ e# ], @& L, C0 |7 j        if(A_CB<=an && an<=A_CE) return dT_Rs_dCA();
7 T- t2 k$ v; _; ?) I! N        if(A_CE<an && an<=A_EO)  return dT_Pz_dCA();4 x+ L( {* _$ h/ x& P# |$ h6 Z8 o9 Z
        if(A_EO<an && an<=A_SO)    /*换气过程不计算,线性赋值,避免零值 */" x5 U* W8 K0 G' @
                P=110000+(m_P[(int)A_EO]-110000)*(A_SO-an)/(A_SO-A_EO);
  W  p# a. E& q- N# n* }    if(A_SO<an || an<A_EC) $ J9 {$ ]) ^+ {8 _
                P=110000-20000*(an>A_SO?an-A_SO:an-A_SO+720)/(A_EC-A_SO+720);% i7 J9 \2 n7 r8 i7 |' J5 X
        if(A_EC<=an && an<=A_SC) P=90000;- A1 c2 [/ q  d7 ?$ T
        return 0;
; n, G6 v$ V7 i# F  g' {}
  b3 I5 c2 y( j6 |
+ E# [; o9 }5 D/ s* o4 ivoid Calculate(void)
1 Y/ ~* k8 u- `) x{5 D: N& F+ O9 k9 o# d$ x! X, Z* h( z$ l
    double Tpre,K1,K2,an;: h0 v- U- N- T
    int index;
" y. F! {4 ^5 ~0 g0 O        Pe=30*4.0*Ne/(gnum*100000*n*S*PI*D*D/4);  /*平均有效压力bar*/0 ~; x  a5 D% k. H: u
        mBo=Ne*ge/(30000000*n*gnum);   /*单缸循环供油量kg */* H; p; V2 z& v) U4 a3 a6 ^
        CA=A_SC*PI/180; /*进气关闭时的角度转弧度*/
# ^5 L8 n9 `$ ]! F3 N        V=V_CA();/*进气关闭时角度下的气缸容积*/
' X; n8 G0 f8 `) Q/ ]( {        P=P_SC;8 {- t4 g" n1 z0 Y  I, }
        T=T_SC;7 {1 X8 k  b4 @' b# K' k6 `( o& M
        index=(int)A_SC;
( S3 Q% Q2 v5 z        m_T[index]=T;  S6 H) X+ V+ g; U2 Z+ f+ V
        m_P[index]=P;
1 w' H$ \  [* z2 @+ Z        m=P*V/(R*T);/*进气关闭时角度下的气缸内工质质量*/
' d9 q$ I+ X: `5 ~' b/ D9 d/ [+ f        mL=m-0.01*mBo;/*进气关闭时角度下的气缸内空气质量*/
6 E# K" n: g! y( y( x& V  b. c    mf=m-mL;- u7 Y6 f$ [. [8 d0 y% A6 r
        Tpre=T;
$ {% {3 I# `4 \1 e) T        an=A_SC+1;8 ~" W* p! b; y2 Y

& E& g5 f; k' ^3 W9 [. w  @        do{$ P" D9 {% P$ C7 E4 F# Q

8 @9 w9 L1 |4 _3 Q  /*B 编写欧拉法求解常微分方程程序 */* j2 d, {, [7 j% ~  l( f
* B! A7 c9 C( H0 X7 r4 s5 C
        }while(an!=A_SC+1);
' Y8 [* v0 N; E7 X/ G$ g}% O7 o! J- r- r; _
1 w9 K' S! c2 s* y0 Y7 P
void main(void)9 ?* L# |$ a" e8 ^* m  O0 m+ }( L$ `
{9 Q5 V2 u% e1 A
        int i;
* S2 r, g; O' ^# z9 X5 x        FILE *fp;# @6 M4 v1 r' R
        D=0.11;   /*发动机数据按各自的任务书输入 */. J) U( U' d4 h4 i; C
        S=0.13;
5 ~( ~  U& c2 _6 ?        L=0.21;6 X% H# m0 r. \" a0 J, _, v& D
        ge=236.0;
: K8 U$ k1 j0 N0 f. X5 b- u        n=2400;
. X" a" Z' u. x+ K" M- `" I        Ne=101568;
$ \; k" e. H6 ]) j* y/ E  |        gnum=6;  ysb=17;   M=0.7;# c( O! e3 X" _2 N: |7 |1 P: O2 i+ ?5 K
        Hu=41868000;
7 A7 w3 _9 u  K2 t; D* _2 n        R=287.08;
( H' H2 z7 h" O* F        Pa=101000; /*大气压力*/
$ s7 H' a% G5 d        Ta=300;    /*大气温度*/" H1 U1 P4 z/ ]3 X  l
        hs=(735.0+R)*Ta;  /*大气焓值*/
, ^% ~+ T6 t' F$ P        P_SC=90000;% ]( d5 _" D1 P- q9 H6 V6 f4 g* \7 @- J
        T_SC=313;
1 p$ C. I2 x6 E; O4 G
- S3 ~8 S) C' P9 B( F* z        A_SC=216; /*进气门关闭*/
' i* _1 e/ C6 Y        A_CB=350; /*燃烧开始*/
5 v% m. W. O! \) m        A_CE=410; /*燃烧结束*/7 T& E' h7 D+ C4 O
        A_EO=484; /*排气门开启*/
! O; X  D3 p# B% E        A_SO=705; /*进气门开启*/
4 n# m( U) ]6 H# V        A_EC=15;  /*排气门关闭*/" G  Y4 i( f6 }' \
6 ^! W& H8 R4 K. j" S! l1 Z
        Lo=14.4;
3 _' v7 X7 U6 ^" I0 D( n6 X! v) V
) Z8 U6 w$ a# h) [7 \  @0 J    for(i=0;i<720;i++)
8 A* X% k* p* t4 Y        {
" y# n) g6 S4 o' U! \- U! f                m_P[i]=0;
' s/ ]" I/ R6 a7 @3 T4 F                m_CA[i]=i;
+ N6 X: x: m) P& p% F3 n- N                m_T[i]=0;
+ T4 y6 C! H, [; `0 t        }( b/ s7 O' l7 X  q) h& Y* C

# R3 o& M. \1 G" {        Calculate();. s7 m1 q. X- F- b1 o8 z
& [4 n: \3 q& C" Q/ J* \
    /*C编写数据输出程序,计算结束后按顺序输出0-720转角的“缸压,温度”数据到outdata.txt文件 */" L$ P5 D% r% n) Z

  @* ]. R& T8 t2 Z  G0 d  F$ ]' \}
# @. D" @0 S/ K1 ?/ a; ?9 k6 |+ t$ f- i' ]
  W+ c) l- t7 A7 M1 ^- o
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 06:21 , Processed in 0.065084 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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