首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UDF的C语言基础

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 ☆

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OyJdWwQvTJrSB3cRQq17oevw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券