background image

UDF。
例子:
/* filea.h  */
/*包含外部定义的头文件*/
extern real volume;
/* filea.c  */
/*调用头文件 filea.h 中声明的 volumn 的 C 函数*/
#include "udf.h"
#include "filea.h"
real volume;
DEFINE_ADJUST(compute_volume, domain)
{
   /*计算某些区域 volumn 的代码*/
   volume = ....
}
/* fileb.c  */
/*调用头文件 filea.h 中声明的 volumn 的另一个 C 函数*/
#include "udf.h"
#include "filea.h"
DEFINE_SOURCE(heat_source,c,t,ds,eqn)
{
   /* 用总数来计算每个单位体积的源项的代码*/
   /*fliea.c 的 compute_volum 计算出的 volume*/
   real total_source = ...;
   real source;
   source = total_source/volume;
   return source;
}
2.5.5 静态变量
  static 声明对于全局变量和局部变量的影响是不一样的。静态局部变量在函数调用返
回之后,该变量不会被破坏。静态全局变量则在定义该变量的.c 源文件之外对任何函数保
持不可见。静态声明也可以用于函数,使该函数只对定义它的.c 源文件保持可见。下面是
静态全局变量声明的例子。注意:extern 只用于编译过的 UDF。
例子:
#include "udf.h"
static real abs_coeff = 1.0;   /* 吸收系数*/
real source;
DEFINE_SOURCE(energy_source, c, t, dS, eqn)
{
 int P1 = ....;
 dS[eqn] = -16.* abs_coeff * SIGMA_SBC * pow(C_T(c,t),3.);
 source =-abs_coeff *(4.* SIGMA_SBC * pow(C_T(c,t),4.) - C_UDSI(c,t,P1));
 return source;
}