对早期的OpenFOAM1.5-1.7,可依据groovyBC软件发布页(http://openfoamwiki.net/index.php/Contrib/groovyBC) 内的说明步骤单独安装groovyBC。对OpenFOAM2.0-2.4,可通过安装swak4Foam(https://openfoamwiki.net/index.php/Contrib/swak4Foam)的方式安装。鉴于swak4Foam只支持到OpenFOAM2.4,对于更新版本的OpenFOAM,可以尝试按以下步骤安装:
mkdir -p $FOAM_RUN // $FOAM_RUN环境变量代表文件夹“~/OpenFOAM/用户名-版本号/run”
cd "$FOAM_RUN/../" //前往$FOAM_RUN的上级目录
hg clone http://hg.code.sf.net/p/openfoam-extend/swak4Foam swak4Foam //hg clone为Mercurial命令,表示从该网址下载文件
cd swak4Foam && hg update develop //升级至最新开发版本
cd swak4Foam
./Allwmake //开始编译
在使用groovyBC前,需要在控制字典文件controlDict末尾添加行:
libs ( "libgroovyBC.so" ); 以调用groovyBC相关的动态库文件。
可将求解变量的边界条件(boundaryField)类型设置为特殊的goovyBC类型,该类型下包含的主要参数为
参数 | 说明 |
---|---|
valueExpression | 字符串,用于设置第一类边界条件的表达式 |
value | 未定义valueExpression时使用,已定义valueExpression的情况下作为初始条件首次计算使用 |
gradientExpression | 字符串,用于设置第二类边界条件的表达式 |
fractionExpression | 取值为1,使用第一类边界条件;取值为2,使用第二类边界条件 |
variables | 定义valueExpression及gradientExpression表达式中使用的变量,以缩短字符串 |
timelines | 设置随时间变化的非稳态边界条件 |
valueExpression和gradientExpression字符串中常用的函数对象包括:
参数 | 说明 |
---|---|
pow,log,exp,sqr,sqrt,sin,cos,tan | 常用数学函数 |
mag | 返回标量的绝对值及向量的模,mag(Sf())可返回边界单元的面积 |
pos | 返回边界单元的中心坐标 |
pts | 返回边界单元的顶点坐标 |
normal | 返回边界单元的单位法向量 |
deltaT | 返回计算时间步长 |
rand | 生成(0,1)之间的随机数 |
time | 返回当前计算时间 |
下面来看一个基于groovyBC实现的脉冲后台阶流动算例(pulsedPitzDaily)该算例是在Tutorials中的pitzDaily算例基础上,采用groovyBC设置随时间脉动并按抛物线分布的速度入口。速度场U的inlet入口边界条件设置如下:
inlet
{
type groovyBC;
variables "yp=pts().y;minY=min(yp);maxY=max(yp);para=-(maxY-pos().y)*(pos().y-minY)/(0.25*pow(maxY-minY,2))*normal();";
valueExpression "10*(1+0.5*sin(500*time()))*para";
value uniform (10 0 0);
}
下图中展示了算例运行过程中速度场随时间的变化,可以看出入口的速度大小是随时间脉动并按抛物线分布的。