📄 global_var.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 + -