邮箱域名和网站域名昆明做网站的公司有哪些
web/
2025/10/8 9:27:28/
文章来源:
邮箱域名和网站域名,昆明做网站的公司有哪些,制作网站推广码,手机怎么自己做网站Fluent UDF利用的是C语言#xff0c;本文简单介绍在UDF中经常会用到的C语言常识。 本文部分内容来自UDF手册。 1 C语言中的注释 C语言中的注释利用/*及*/来实现。例如: /*这是一个注释*/ 注释也可以跨行实现#xff0c;如: /*这是一个
跨行注释*/ 注意:在编写UDF的过程中本文简单介绍在UDF中经常会用到的C语言常识。 本文部分内容来自UDF手册。 1 C语言中的注释 C语言中的注释利用/*及*/来实现。例如: /*这是一个注释*/ 注释也可以跨行实现如: /*这是一个
跨行注释*/ 注意:在编写UDF的过程中不能把DEFINE宏(如DEFINE_PROFILE)放置在注释中否则会引起编译错误 2 基本数据类型 Fluent UDF解释器支持的标准C数据类型包括: int。整形存储形如1,2,3之类的整数。long。长整形。存储数据与int类似但范围更广。float。浮点型。存储小数如1.234等double。双精度浮点型。与float类似。char。字符型如a,b,c等。 Fluent UDF中还有real型其实这是Fluent自定义的数据类型在双精度求解器中real类型与double类型相同而在单精度求解器中real类型等同于float类型。UDF自动进行转换因此在需要浮点数时可以全部采用real类型。3 常数 在C语言中可以利用#define来定义常数。需要注意的是定义为常数类型后该变量的值不能改变。如: #define WALL_ID 5
#define YMIN 0.0
#define YMAX 0.4 这样定义完毕后WALL_ID的值不能再发生改变因此如下的语句会引发编译错误: WALL_ID WALL_ID 1 ; 4 变量 变量用于存储数据。所有变量都包含类型、名称以及值有时候还包含存储标记如静态变量和外部变量。C语言中所有的变量在使用之前都必须声明这样C编译器才会知道该如何为此变量分配内存。 4.1 全局变量和局部变量 C语言中的全局变量定义在函数的外部该变量可以被源文件中所有的函数引用。全局变量如果未被声明为静态变量的话还可以被外部函数引用。如下例中的全局变量声明 #include udf.h
real volume; /*此处定义的是全局变量*/
DEFINE_ADJUST(vol,domain)
{/*此处可以访问变量volume*/
} 局部变量一般定义在函数体内其只在函数体内起作用在函数体外无法被访问到。如下程序中的局部变量定义。 DEFINE_PROPERTY(cell_viscosity, cell, thread)
{real mu_lam; /*局部变量 */real temp C_T(cell, thread); /* 局部变量 */if (temp 288.)mu_lam 5.5e-3;else if (temp 286.)mu_lam 143.2135 - 0.49725 * temp;elsemu_lam 1.;return mu_lam;
} 4.2 外部变量 当在某个源文件中定义了一个未加static的全局变量后若想在另一个源文件中调用此变量此时可以使用外部变量声明来实现。采用如下声明 extern real volume; 注意extern声明只能用于编译型UDF中。 以下是一个利用extern的案例。 假设在源文件file1.c中定义了全局变量 #include udf.h
real volume;
DEFINE_ADJUST(compute_volume, domain)
{volume ....
} 若其他的的源文件想要利用此全局变量volume 此时可以创建头文件并将变量volume声明为extern变量如创建头文件extfile.h写入内容 extern real volume; 之后就可以在其他的源文件中使用此变量volume了如在源文件file2.c中 #include udf.h
#include extfile.h
DEFINE_SOURCE(heat_source,c,t,ds,eqn)
{real total_source ...;real source;source total_source/volume;return source;
} 温馨提示外部变量使用起来很麻烦也很容易出错如果对其不甚了解的话建议不要使用。 4.3 静态变量 静态变量声明时添加static关键字在用于局部变量或全局变量时具有不同的作用。局部变量被声明为static时当函数返回后变量并不销毁变量的值依旧被保留。 全局变量被声明为static时该变量能够被此源文件中的所有函数调用但不能被其他源文件中的函数调用。实际上是变量被隐藏了。 例如在文件mysource.c中有如下代码 #include udf.h
static real abs_coeff 1.0; /*静态全局变量*//* 此变量只能被本文件中的其他函数调用 */DEFINE_SOURCE(energy_source, c, t, dS, eqn)
{real source; /* 局部变量*/int P1 ....; /* 局部变量*/
/*变量只能被当前函数调用但在函数返回时变量并不释放 */dS[eqn] -16.* abs_coeff;source -abs_coeff *(4.* SIGMA_SBC );return source;
}DEFINE_SOURCE(p1_source, c, t, dS, eqn)
{real source;int P1 ...;dS[eqn] -abs_coeff;source abs_coeff *(4.* SIGMA_SBC);return source;
} 更多关于static的描述可参见文章[www.cnblogs.com/stoneJin/archive/2011/09/21/2183313.html] (www.cnblogs.com/stoneJin/archive/2011/09/21/2183313.html)温馨提示与全局变量类似静态变量也尽量少用容易造成不必要的麻烦。 5 用户自定义数据类型 C语言允许用户自己定义数据类型通过使用结构体及typedef关键字。如定义类型 typedef struct list
{int a;real b;int c;
}mylist;
mylist x,y,z; 上例定义了一个结构体类型mylist并定义了三个结构体变量x,y,z。 6 强制转换 在C语言中有时需要对类型进行强制转换如将浮点型强制转换为整形如下例中。 int x 1;
real y3.1415926;
int zx(int)y; 计算完毕后z4。 7 函数 C语言中的函数执行独立的任务。函数能够被同一源文件中的其他函数调用也可以由源文件之外的函数调用。 函数定义包含函数名以及被传递给函数的零个或多个参数列表。函数包含一个包含在大括号内的主体主体中包含执行任务的指令。 函数可以返回特定类型的值。 函数返回特定数据类型的值例如实数如果类型为void则不返回任何值。 要确定DEFINE宏的返回数据类型可查看udf.h文件中宏的相应#define语句。 8 数组 C语言中数组变量定义为name[size]其中name为数组变量的名称size为数组中存储的单元数量。C语言中数组索引从0开始。 int a[10], b[10][10];
/*a
real rad[5];
a[0] 1;
rad[4] 3.14159265;
b[10][10] 4; 9 指针 指针是一种存储变量内存地址的变量。换句话说指针是一个变量这个变量指向另外一个变量的内存地址。指针变量的声明: int *ip;/*定义指针变量ip*/ 定义了指针变量后可以利用取址运算符将其他变量的地址赋予指针变量如: int *ip;
ip a; 也可以为指针变量赋值如: *ip 4; 当指针作为函数的参数此时为传址调用在函数体内修改指针参数的值会改变调用函数时传递的参数的值。此功能可以实现一个函数返回多个值。 如下的C程序: #include stdio.h
int add(int *a,int b)
{int sum 0;sum *a b;*a 5;return sum;
}int main() {int *ip;int a 1;int b 2;int sum 0;ip a;sum add(ip,b);printf(sum%d,a%d\n,sum,a);return 0;
} 输出结果: sum3,a5 传递的参数值被函数体内的程序改变。 10 流程控制 C语言中可以用逻辑判断和循环来进行流程控制。 10.1 if语句 if语句用于逻辑判断。可写成: if(逻辑判断表达式)
{语句块;
} 例如: if(q!1)
{a0;b1;
} 若逻辑判断存在多个分支可以采用if-else结构。如: if(x0)
{y x/50;
}
else(x0 x3)
{x-x;y x/25;
}
else
{x 0;y 0;
} 10.2 for循环 for语句常用于循环表达。 int i,j,n10;
for(i1;in;i)
{j i*i;printf(%d%d\n,i,j)
} 11 操作符 常用的代数操作符: 赋值操作加法计算
- 减法计算
* 乘法运算
/ 除法运算
% 求模运算累加
-- 累减 常用的逻辑操作符: 小于小于等于 大于 大于等于 等于! 不等于 12 C库函数 常用的三角函数: double acos (double x);
double asin (double x);
double atan (double x);
double atan2 (double x, double y);
double cos (double x);
double sin (double x);
double tan (double x);
double cosh (double x);
double sinh (double x);
double tanh (double x); 常用的数学函数: double sqrt (double x);
double pow(double x, double y);
double exp (double x);
double log (double x);
double log10 (double x);
double fabs (double x);
double ceil (double x);
double floor (double x); 一些常用的标准输入输出函数: FILE *fopen(char *filename, char *mode);
int fclose(FILE *fp);
int printf(char *format,...);
int fscanf(FILE *fp, char *format,...);
int fscanf(FILE *fp, char *format,...); 更多的内容可参阅C语言教程。 更多CFD资料可微信扫描下方二维码关注微信公众号。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88978.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!