机械必威体育网址

标题: 内燃机热力计算怎么用C语言编程?模板如下,求助。 [打印本页]

作者: 方进小侯爷    时间: 2015-6-28 22:58
标题: 内燃机热力计算怎么用C语言编程?模板如下,求助。
#include "math.h"
5 u+ S& J; v9 E4 C#include "stdio.h"
' P4 ^2 _& @/ J8 I0 g#define PI 3.1415926% h) \% @5 M: s7 M7 {6 k( F

2 p- h1 V9 F: X' \6 n! N+ T+ Cdouble D,S,L,ge,n,Ne,gnum,ysb,Hu,Lo,M,R,P_SC,T_SC;
8 O0 @) V$ r5 _# u9 v/*缸径、行程、连杆长、比油耗、转速、功率、气缸数、压缩比、低热值、理论空燃比、Weibe函数常数m、气体常数、进气门关闭时压力和温度 */5 W9 h7 g+ C  W9 \
        double m_T[720],m_P[720],m_a[720];
5 G. r* f) Q. n; m/*气缸温度、压力、瞬时过量空气系数 */
% X! }. ^) g* Q        int m_CA[720],A_SC,A_CB,A_CE,A_EO,A_SO,A_EC;$ D  y+ J* ^1 M* G% S# g# @6 n
        double Pa,Ta,hs,P,V,T,CA,m,mf,nmd,Pe,mBo,mL,dXY;# b2 I4 o8 i6 u2 P4 p6 D
        double Cv();
, F; p6 Y  y5 ~. Y        double dV_dCA();- I0 q- G. G8 w, r, P! R
        double dQw_dCA();6 _; a1 b1 l$ L# s; X' D
        double dQB_dCA();: t) q$ [) [7 I- g" o8 q
        double U();- }. u$ Z5 T7 ]" K
        double V_CA();5 Z: o7 j6 S. p
        double dU_dnmd();
/ s* m: m- T/ t' b        double dT_Ys_dCA();( t+ i3 K' Z5 O' ~
        double dT_Pz_dCA();) m8 n  Y. Y* ]
        double dT_Rs_dCA();
! ]2 J/ R8 A; t1 a' w/ b        double dT_Hq_dCA();
5 g$ c6 B4 l# L: x        double dT_dCA(double an);
. N1 `) s. _1 l. h6 U& d& p! I2 t        void Calculate();1 M: I7 @$ t& L) D6 N/ C/ W

+ U1 O( }7 [' p; j7 n# {9 [/* A编写各子函数程序*/
: @2 F# x  z$ c! e( F        double Cv() /*求定容比热*/; D- Y# H4 E- h+ I
{- u- R7 p) i! v2 L7 P! S

# v; B; i9 X! k, V# w}
0 L; _1 h4 `6 _& O
$ U3 m( S# _& [  t+ B
3 k" E5 H; {6 V+ ]2 u5 E" Edouble  dV_dCA() /*求dv/dφ*/# h: E$ g; Z. L. f
{
# `9 i; S& X0 @6 y1 Z/ p) g7 C! ^" h. O, u  P9 ?
}
5 r) i# Q  |2 C5 E  U7 B$ m5 T* w  F/ ?7 a% g
! }% ?# a1 J/ O2 a: t
double V_CA() /*求气缸容积*/5 c5 P+ W  o& e
{
7 ^4 T9 z' m+ @: z* i  N' p
2 d' v0 @8 O" P6 B9 L9 F}
- Q/ {: F* K: L( r$ g1 A
! J* k4 F" X* z# z$ d+ l! q' I8 Z% A' E' a1 x
double dQw_dCA() /*求dQw/dφ*/" Y- t& j) e) J+ L
{
- u$ K* Z5 P5 A1 g5 r3 i, F  a: L# Z- w6 R( S, N
}1 Y0 }: }# H- a+ }3 k$ w
) W: i" Q% X0 g! _* N2 r
/ |! V) C2 n4 y
double dQB_dCA() /*求dQB/dφ*/+ ~9 ^4 x; H, [
{( K( l1 z  `' i. F: C6 }" F% l1 c

5 d. D' u4 k9 N: b( }}
& T- }0 a2 S7 G  ]0 I0 b4 ^0 P) y
  A$ q3 {8 k* U/ V& t: g( Z+ ?( t
double U() /*求u*/0 T8 f( e) _$ `; {! }
{
0 Z  D$ y. Q+ E/ s
1 S& m2 y+ k6 B' |/ r( \}6 S) p8 D! J" E" J( F4 a6 m% N
! B8 C- U! H1 J; Q  ^

, y+ \( k! X5 O3 M% a0 [double dU_dnmd()  /*求du/dλ*/
' y, Q0 f5 ^2 `{% \4 {# N) _: j& i$ e! l( L  Y
* \/ G+ Z6 ~& O
}% ]6 H3 f) }8 U
% |, Q2 w: P- o- q& K. b+ j0 j
double dT_Ys_dCA() /*压缩期*/
; G1 ?1 `3 Z# [2 M  x6 v5 c* m{
1 Y: Z4 u  {' ^/ X( [) a6 z( g9 X2 c* `
}# H% d$ J( I% s$ ]3 c5 S" W8 C# O, q

. B0 O1 ^+ v: ]  ~, b) S; M! N+ v3 h
double dT_Pz_dCA() /*膨胀期*/9 w, F. d6 b- b+ b
{: M2 T  {0 ^& ?7 ?! D
3 l6 A, E* ~/ ]4 X( y. E( c
}
9 h$ ?0 L7 ]% Q+ @4 X% k3 F0 O# ]. y2 `
" F' V6 S0 ?1 G, a
double dT_Rs_dCA() /*燃烧期*/
, v: h6 a7 N) @. A{
5 x, c  g1 f% N  y+ R: }9 W* W1 T
}
# ?! I% x+ g  L& b  S* c8 f% M# {$ H7 g' z9 D
4 c' ]& M5 Q2 v: H+ |
double dT_dCA(double an) /*求dT/dφ*/
: ~( A% O8 k7 ^3 x3 q4 {{! R- R- X7 p- f( U6 Y7 @- P
        CA=an*PI/180;, B' }/ K5 ~& z1 A$ p. s
        V=V_CA();
$ Q* y  B6 H( l4 S$ I5 ~        if(A_SC<an && an<A_CB)   return dT_Ys_dCA();' g# V3 o& g6 |5 e* o  V. y2 j
        if(A_CB<=an && an<=A_CE) return dT_Rs_dCA();7 D' }9 m5 f: \$ J
        if(A_CE<an && an<=A_EO)  return dT_Pz_dCA();
$ L9 w; M) Q( f: E        if(A_EO<an && an<=A_SO)    /*换气过程不计算,线性赋值,避免零值 */# q' a0 s4 L) r# a2 x1 s4 p! g) q
                P=110000+(m_P[(int)A_EO]-110000)*(A_SO-an)/(A_SO-A_EO);3 @; L! _% a9 q3 P# Q7 e# E( `& a, Z
    if(A_SO<an || an<A_EC) $ Y2 }( ]7 K) O6 Z# g- {
                P=110000-20000*(an>A_SO?an-A_SO:an-A_SO+720)/(A_EC-A_SO+720);  E) F8 J5 Q, c8 n
        if(A_EC<=an && an<=A_SC) P=90000;
0 B3 Q& e2 q5 F3 L0 V5 m! i4 A        return 0;
- A  {' Y9 t4 P; o}
0 Z' T" i) {8 d# p
2 w6 G1 ^0 A( yvoid Calculate(void)! \3 F1 O% f3 k3 Y: Q
{# |! G& x( c+ r+ g$ f! u; L3 T
    double Tpre,K1,K2,an;
( d6 s9 a( |8 ~- `    int index;
/ T* P6 Y/ x1 X: ?6 w        Pe=30*4.0*Ne/(gnum*100000*n*S*PI*D*D/4);  /*平均有效压力bar*/
- O8 o6 F1 L, m" ~* g        mBo=Ne*ge/(30000000*n*gnum);   /*单缸循环供油量kg */) d) g- M/ ]# V7 ~0 q% s
        CA=A_SC*PI/180; /*进气关闭时的角度转弧度*/
- o( v% \+ K" [+ S+ L" |) V        V=V_CA();/*进气关闭时角度下的气缸容积*/
* O% v# k" v+ Z2 j& Q" l        P=P_SC;9 E; e0 u7 `/ ^) c7 S2 [
        T=T_SC;4 u* Q: ~3 h2 B: i' p, m
        index=(int)A_SC;! _) P% `5 G8 R# ?$ T# Z
        m_T[index]=T;  q1 ?: g, s) ?+ @; }$ \" I  c
        m_P[index]=P;0 G5 B; |9 x0 e3 ]; }3 I: w
        m=P*V/(R*T);/*进气关闭时角度下的气缸内工质质量*/
8 R; ^4 g# ]! D0 D. ]        mL=m-0.01*mBo;/*进气关闭时角度下的气缸内空气质量*/' D5 J# A' G6 _! C+ A5 e
    mf=m-mL;
, i: ?1 G4 F' p5 h; B8 t- Y        Tpre=T;( e6 R' M8 u: {( J* X
        an=A_SC+1;2 b3 l7 x9 W) D2 ]% l5 a! x! E

$ |* V- _. p- p        do{
- i! _8 K- V! J( ^: o: C" e9 [
' k$ Q" N. W& P5 L8 G5 \5 V  n) L1 g8 r  /*B 编写欧拉法求解常微分方程程序 */
! T# G" h4 t* i% o& J% J+ k
; _: s2 V/ \5 S        }while(an!=A_SC+1);
! W+ G) ^7 t8 L6 |: M}2 V' O4 R- l+ i6 r  e1 H

0 m# b0 S, V# w# ~void main(void)
- R( S8 w3 ?* L6 X8 s/ H{) }3 n$ @* y7 ~: l" R8 c3 X
        int i;$ E# h9 {: w6 c7 E1 A; t
        FILE *fp;
: z" j6 F) g# _$ J        D=0.11;   /*发动机数据按各自的任务书输入 */
4 A# k6 c9 {" `" F6 [0 y$ p        S=0.13;: G  W0 K* z: j: e! @' s
        L=0.21;
6 ?5 o1 E' T) q4 D        ge=236.0;
: u* W1 z1 U, ^+ \3 W% d        n=2400;+ V* q2 E4 s* w
        Ne=101568;
) T  `* L$ L1 ~% w5 i4 H        gnum=6;  ysb=17;   M=0.7;
+ v; G% U, E" w+ a        Hu=41868000;
- H1 n0 N: x6 O8 ?$ Z! }8 ]% [$ Q! b1 M        R=287.08;6 i8 n) h  S* @% D+ {
        Pa=101000; /*大气压力*/
! @3 Y) |" y- W: g2 e; w8 V# Q5 P        Ta=300;    /*大气温度*/: \) ~, L- {7 O2 {, r" H
        hs=(735.0+R)*Ta;  /*大气焓值*/
0 p: k4 S1 e% [) R        P_SC=90000;
# e2 Q; [* k4 v0 q  K( o) D) i        T_SC=313;8 W. m& ^; [0 a& S6 C

2 @% K, r) |  _) K' R& ?7 \5 K        A_SC=216; /*进气门关闭*/
  V. f  B5 }% h4 D4 s. ]5 ?        A_CB=350; /*燃烧开始*// o$ g/ j: Q1 {
        A_CE=410; /*燃烧结束*/
9 C9 {% C) r& B& x, j( ?7 ^        A_EO=484; /*排气门开启*/
9 r1 u# p4 l6 Y0 K$ r( P        A_SO=705; /*进气门开启*/( a8 E  T$ h- q
        A_EC=15;  /*排气门关闭*/' W: b; M5 g( p3 N: h
+ e7 v1 u6 b; i1 ^
        Lo=14.4;: v3 I8 }8 x" A& W4 K

4 \- L# S) s; n' O/ L& o2 ]3 b    for(i=0;i<720;i++), Z$ e% ]8 x6 k
        {
$ H1 |7 Z; J! B, P                m_P[i]=0;
1 \8 b) [$ h2 G                m_CA[i]=i;1 c: g2 o- p$ p
                m_T[i]=0;0 J7 I; Y4 X: I; I. W' B0 n3 r3 [, C
        }
4 a: c# Y' u% \; C& |
& s. P/ Q: w6 K" i        Calculate();' W7 Q; R1 o$ A+ p+ x
: q# a: i$ K) B$ H! a1 s  A
    /*C编写数据输出程序,计算结束后按顺序输出0-720转角的“缸压,温度”数据到outdata.txt文件 */
6 Z/ |  o) h* G7 v9 V% @$ X( K$ B2 t
+ b2 X- f; l9 _6 J7 g}; [7 O3 @, m9 N8 r, B9 S! {) P
7 A( M$ Z8 u( J( F7 ?/ p  W: l
) Z( Q! Q- }, Y- h2 f

作者: 祥云飞鱼    时间: 2015-6-28 23:45
不难啊  完全是 把 公司 翻译成 C 又没有用指针跳转的。。。
作者: 一点一点来    时间: 2015-6-29 01:45
这是作业的干活吧……




欢迎光临 机械必威体育网址 (//www.szfco.com/) Powered by Discuz! X3.4