⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 global_var.h

📁 数值传热学NHT C语言源代码及解释 陶文铨院士 的经典例题中3个题目的解答
💻 H
字号:

#ifndef GLOBAL_VARIABLE_DECLARE
#define GLOBAL_VARIABLE_DECLARE
#define MAXGRIDSIZE 100
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

void printinfo();
void solve();
void user_could_reset_some_setting_here();
void user_generate_velocity_grid(); 
void default_setting();
void generate_grid();
void setup2();
void diflow();
void user_gamsor();
void user_correct_density();
void user_bound_condition_setup();
void user_output();
void user_initial_grid_value();
void user_plot();
void printdebuginfo();

//本程序为了与原有FORTRAN实现最大的兼容
//数组的第一个元素均没有使用

//变量说明

//第一部分 不同的φ变量
#define u(i,j)    (f[i][j][1])                 //u(i,j)        x方向的速度u;或者θ方向速度uθ
#define v(i,j)    (f[i][j][2])                 //u(i,j)        y方向的速度v;或者径向速度ur
#define pc(i,j)   (f[i][j][3])                 //pc(i,j)       压力修正 p'
#define p(i,j)    (f[i][j][11])                //p(i,j)        压力p
#define rho(i,j)  (f[i][j][12])                //p(i,j)        密度ρ
#define gam(i,j)  (f[i][j][13])                //p(i,j)        扩散系数γ
#define t(i,j)    (f[i][j][4])                 //t(i,j)        温度T
#define ake(i,j)  (f[i][j][5])                 //ake(i,j)        湍流脉动能量k
#define dis(i,j)  (f[i][j][6])                 //dis(i,j)      动能的耗散率ε
#define amut(i,j) (amut[i][j])
#define gen(i,j)  (gen[i][j])

double amut[MAXGRIDSIZE][MAXGRIDSIZE];         //amut(i,j)     湍动扩散系数
double gen[MAXGRIDSIZE][MAXGRIDSIZE];          //gen(i,j)      湍流能量的生成率 
double  f[MAXGRIDSIZE][MAXGRIDSIZE][14];       //f(i,jnf)     不同的φ变量
//第二部分 全局求解策略的变量
int lsolve[10];                                //lsolve(nf)   =1时,求解变量f(i,j,nf)  
int lprint[14];                                //lprint(nf)   =1时,打印变量f(i,j,nf)   
int lblk[10];                                  //lblk(nf)     =1时,对变量f(i,j,nf)应用块修正
int mode;                                      //mode         选择坐标系的变量. 目前只支持mode=1.
                                               //             mode=1 直角坐标系(x~y)
                                               //             mode=2 圆柱坐标系(r~z)
                                               //             mode=3 极坐标(r~θ)   
int ntimes[11];                                //ntimes(nf)   在solve子程序中求解变量f(i,j,nf)的重复扫描次数   
char* title[14];                               //title(nf)    变量f(i,j,nf)的字符性标题  
double relax[14];              
double xl;                                     //xl           计算区域在x方向上的宽度
double yl;                                     //yl           计算区域在y方向上的宽度
int l1;                                        //l1           x方向上主控制体的网格数。也是x方向上压力节点位置的最后一个i值。
int m1;                                        //m1           y方向上主控制体的网格数。也是y方向上压力节点位置的最后一个j值。   
double dt;                                     //dt           时间步长 △t 
//第三部分 网格设定的变量
double  x[MAXGRIDSIZE];                        //x(i)        节点位置的x值
double  xu[MAXGRIDSIZE];                       //xu(i)       主控制容积在x方向的界面位置,即速度u(i,j)所在位置           
double  xdif[MAXGRIDSIZE];                     //xdif(i)     差值 x(i)-x(i-1)
double  xcv[MAXGRIDSIZE];                      //xcv(i)      主控制容积在x方向上的宽度 
double  xcvs[MAXGRIDSIZE];                     //xcvs(i)     速度u(i,j)的控制容积在x方向上的宽度 
double  y[MAXGRIDSIZE];                        //y(j)        节点位置的y值
double  yv[MAXGRIDSIZE];                       //yv(j)       主控制容积在y方向的界面位置,即速度v(i,j)所在位置           
double  ydif[MAXGRIDSIZE];                     //ydif(j)     差值 y(j)-x(j-1)
double  ycv[MAXGRIDSIZE];                      //ycv(j)      主控制容积在y方向上的宽度 
double  ycvs[MAXGRIDSIZE];                     //ycvs(j)     速度v(i,j)的控制容积在y方向上的宽度 
//double  r[MAXGRIDSIZE];                      //r(i,j)      主网络节点的半径r                       
//double  rmn[MAXGRIDSIZE];                    //rmn(j)      在速度v(i,j)所在处的半径r之值           
//double  sx[MAXGRIDSIZE];                     //sx (j)      主网格节点位置y(j)处x方向上的标尺因子   
//double  sxmn[MAXGRIDSIZE];                   //sxmn(j)     在界面位置yv(j)上x方向的尺度因子        
                                               //上面四个变量应用于非直角坐标系的情况
double  xcvi[MAXGRIDSIZE];                     //xcvi(i,j)   xcv(i) 中与u(i,j)的控制容积相覆盖的部分 
double  xcvip[MAXGRIDSIZE];                    //xcvi(i,j)   xcv(i) 中与u(i+1,j)的控制容积相覆盖的部分
double ycvr[MAXGRIDSIZE];                      //ycvr(j)     主控制容积垂直于x方向的面的面积
double ycvrs[MAXGRIDSIZE];                     //ycvrs(j)    速度v(i,j)的控制容积垂直于x方向的面的面积
double arx[MAXGRIDSIZE];                       //arx(j)      与x方向相垂直的控制容积的面积
double arxj[MAXGRIDSIZE];                      //arxj(j)     arx(j)中与 速度v(i,j)的控制容积相覆盖的部分
double arxjp[MAXGRIDSIZE];                     //arxjp(j)    arx(j)中与 速度v(i,j+1)的控制容积相覆盖的部分
                                               //arxj与arjxp实际上对应于x方向上的ycvi与ycvip 
										       
//第四部分 差分方程系数设定的变量		       
double  con[MAXGRIDSIZE][MAXGRIDSIZE];         //con(i,j)    离散方程中的常数项b,在子程序gamsor中又作为存储sc的单元
double  aip[MAXGRIDSIZE][MAXGRIDSIZE];         //aip(i,j)    系数ae
double  aim[MAXGRIDSIZE][MAXGRIDSIZE];         //aim(i,j)    系数aw
double  ajp[MAXGRIDSIZE][MAXGRIDSIZE];         //ajp(i,j)    系数an
double  ajm[MAXGRIDSIZE][MAXGRIDSIZE];         //ajm(i,j)    系数as
double  ap[MAXGRIDSIZE][MAXGRIDSIZE];          //ap(i,j)     系数ap,在在子程序gamsor中又作为存储sp的单元
double  flow;                                  //flow         穿过控制容积界面的质量流率
double  diff;                                  //diff         扩散传导性 D 
double  acof;                                  //acof         由DIFLOW子程序计算的量,它给出了对流与扩散作用的联合影响
double fl;
double flm;
double flp;

//第五部分 求解差分方程过程中的变量求解
double  du[MAXGRIDSIZE][MAXGRIDSIZE];             //du(i,j)     影响u(i,j)的de
double  dv[MAXGRIDSIZE][MAXGRIDSIZE];             //dv(i,j)     影响v(i,j)的dn       
double  fv[MAXGRIDSIZE];                          //pv(j)       用于计算主网络节点i,j上的质量流率的ρvr的插值因子:计算式如下: 
                                                  //            fv(j)*ρvr(i,j)+fvp(j)*ρvr(i,j+1)  -=???=-       
double  fvp[MAXGRIDSIZE];                         //fvp(j)      说明同上
double  fx[MAXGRIDSIZE];                          //fx(i)       用于计算主控制容积界面(即速度u(i,j)所在处)的密度
                                                  //            rhom的插值因子,计算式如下:
                                                  //            rhom=fx(i)*rho(i,j)+fxm(i)*rho(i-1,j)
double  fxm[MAXGRIDSIZE];                         //fxm(i)      说明同上
double  fy[MAXGRIDSIZE];                
double  fym[MAXGRIDSIZE];              
double  pt[MAXGRIDSIZE];                          //pt(i)或pt(j) tdma中的转换系数(消元过程中)
double  qt[MAXGRIDSIZE];                          //qt(i)或qt(j) tdma中的转换系数(消元过程中)
//第六部分 index变量
int nf;                                           //nf           标明不同φ变量的下标值
int nfmax;                                        //nfmax        设有存储单元的nf的最大值 
int np;                                           //(nfmax)      p(i,j)实际为f(i,j,nfmax)
int nrho;                                         //(nfmax+1)    rho(i,j)实际为f(i,j,nfmax)
int ngam;                                         //(nfmax+2)    gam(i,j)实际为f(i,j,nfmax+2)
int l2;                                           //l2           (l1-1)  
int l3;                                           //l3           (l1-2) 
int m2;                                           //m2           (m1-1)  
int m3;                                           //m3           (m1-2) 
int ist;                                          //ist          i的第一个内节点值
int jst;                                          //jst          j的第一个内节点值 
int iter;                                         //iter         不稳态问题的步进计数 
int last;                                         //last         用户所规定的最大迭代计数      
int iter1;                                         //iter1        一个时间点求解setup2( )的迭代次数
double time;                                      //time         不稳态问题中的时间t       
int ipref;                                        //ipref        压力参考结点的i值
int jpref;                                        //jpref        压力参考结点的j值

//第七部分 其它变量						   
double rhocon;                                    //rhocon       密度为常数的问题中的ρ 
int lstop;                                        //lstop        =1时,停止计算
double  smax;                                     //smax         p'方程中的“质源”的最大值
double  ssum;                                     //ssum         p'方程中的“质源”的代数和
double arho;
double area;
double apt;
double vol;
double pref;
double amu;
double amup;
double pr;
double cmu;
double c1;
double c2;
double prt;
double prk;
double prd;
double prprt;
double pfn;
double cmu4;

double tref;
double rhot;
double rhoref;
int lprintdebuginfo;

FILE * filehandle8; 
#endif 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -