UDF常用的C语言
注释的每一行以“/*”开始,后面的是注释的文本行,然后是“*/”结尾
◆ 如:/* This is how I put a comment in my C program */
FLUENT的C数据类型
◆ Int:整型
◆ Long:长整型
◆ Real:实数
◆ Float:浮点型
◆ Double:双精度
◆ Char:字符型
常数在C程序中用语句#define来定义
◆ 如:#define WALL_ID 5
变量或者对象保存在可以存储数值的内存中。每一个变量都有类型、名字和值
◆ 声明变量
首先是数据类型,然后是具有相应类型的一个或多个变量的名字
int n; /*声明变量n为整型*/
int i1, i2; /*声明变量i1和i2为整型*/
float tmax = 0.; /* tmax为浮点型实数,初值为0 */
real average_temp = 0.1; /* average_temp为实数,赋初值为0.1*/
局部变量
◆ 局部变量只用于单一的函数中,当函数调用时,就被创建了,函数返回之后,这个变量就不存在了
DEFINE_PROPERTY(cell_viscosity, cell, thread)
{
real mu_lam;
real temp = C_T(cell, thread);
if (temp > 288.)
mu_lam = 5.5e-3;
elseif (temp > 286.)
mu_lam = 143.2135 - 0.49725 * temp;
else
mu_lam = 1.;
return mu_lam;
}
全局变量
◆ 全局变量在你的UDF源文件中是对所有的函数都起作用的
外部变量
◆ 如果全局变量在某一源代码文件中声明,但是另一个源代码的某一文件需要用到它,那么必须在另一个文件中声明它是外部变量。
◆ 外部变量的声明很简单,只需要在变量声明的最前面加上extern即可
◆ 最方便的处理方法就是在头文件(.h)中加上extern的定义
/* filea.h */
/*包含外部定义的头文件*/
extern real volume;
/* filea.c */
/*调用头文件filea.h中声明的volumn的C函数*/
#include"udf.h"
#include"filea.h"
DEFINE_ADJUST(compute_volume, domain)
{
/*计算某些区域volumn的代码*/
volume = ....
}
自定义数据类型
◆ C还允许用结构和typedef创建自定义数据类型
typedefstructlist
{
int a;
real b;
int c;
}
mylist; /* mylist为类型结构列表*/
mylist x,y,z; /* x,y,z为类型结构列表*/
数组:名字[数组元素个数],C数组的下标是从零开始的。
int a[10], b[10][10];
real radii[5];
a[0] = 1; /* 变量a为一个一维数组*/
radii[4] = 3.14159265; /*变量radii为一个一维数组*/
b[10][10] = 4; /*变量b为一个二维数组*/
指针:指针变量的数值是其它变量存储于内存中的地址值。
◆ 例如:int *ip;
◆ ip = &a; /*分配给指针ip变量a的地址值*/
◆ *ip 指针变量所指向的单元的值
在FLUENT中,线程和域指针是UDF常用的自变量
FLUENT解算器会自动将指针所指向的数据传送给UDF,从而使你的函数可以存取解算器的数据
int a = 1;
int *ip;
ip = &a; /* &a返回了变量a的地址值*/
printf("content of address pointed to by ip = %d\n", *ip);
*ip = 4; /* a = 4 */
printf("now a = %d\n", a);
控制语句
◆ if语句
if (q != 1)
{a = 0; b = 1;}
if-else语句
if (x < 0.)
y = x/50.;
else
{
x = -x;
y = x/25.;
}
for语句
/* 输出整数1-10及它们的平方*/
int i, j, n = 10;
for (i = 1 ; i <= n ; i++)
{
j = i*i;
printf("%d %d\n",i,j);
}
☆ END ☆
领取专属 10元无门槛券
私享最新 技术干货