两个简单的随时间变化的边界条件【转载】

转载自:http://xiaopingqiu.github.io/2015/12/12/timeVaryingBC1/这一篇里介绍OpenFOAM自带的两个简单的随时间变化的边界条件:

uniformFixedValue  flowRateInletVelocity 

1. uniformFixedValue

这个边界属于第一类边界,即直接指定边界上某个量的值。跟 fixedValue 的不同之处在于,这个边界条件允许边界上的值随着时间变化。一般的用法如下:

type         uniformFixedValue;

uniformValue     table

(

(0.000 (0 0 0.002))

(0.010 (0 0 0.002))

(0.011 (0.011 0 0.011))

(0.100 (0.10 0 0.100))

);

上面这一段指定的是速度 U (也可以是其他矢量,或者标量)的边界条件,通过一个 table 来定义边界随时间的变化行为,具体解释如下(假定时间步长等于0.001 s):

 

0.00 <= t <= 0.01 s 时,速度值为 (0 0 0.002);

t = 0.011 s 时,速度变为 (0.011 0 0.011);

0.011 <= t <= 0.100 之间,速度的每个分量均为线性变化的;

t > 0.100 s 以后,速度保持 (0.10 0 0.100) 不变。

除了通过 table 来定义随时间分段线性变化边界条件,还可以定义多项式变化的边界,比如:

type                 uniformFixedValue;

uniformValue     polynomial

(

((1 0 0) (0 0 0))

((2 2 0) (1 2 0))

((3 5 0) (2 4 0))

);

以上这段定义的是这样一个边界:x 分量,Ux=1+2t+3t2y 分量,

需要注意的是, polynomial 这种方式,目前测试在 2.3.x 以及以下版本不能使用,在最新的 3.0.x 版中可以使用。

此外,还有其他的一些定义方式,列举如下(参考http://www.geocities.jp/penguinitis2002/study/OpenFOAM/time_varying_bc.html):

固定值

inlet

{

type uniformFixedValue;

uniformValue constant (10 0 0);

}

这种方式与 fixedValue 效果是一样的。

tableFile

inlet

{

type uniformFixedValue;

uniformValue tableFile;

tableFileCoeffs

{

    fileName "$FOAM_CASE/velocity"

    outOfBounds clamp;

}

}

这个跟 table 那种类似,只不过将上面 table 的内容写到一个文件里了(这里是velocity 文件)。 velocity 文件的格式为

(

(0 (0 0 0))

(0.01 (10 0 0))

);

outOfBounds 的可选项及其含义有:

 

  • clamp:当实际时间超过 tableFile 里的最大时间(比如上述示例文件里,最大时间为0.01s)以后,保持 tableFile 最大时间定义的那个值(对上述示例文件,为(10 0 0))不变;
  • repeat:重复前面的变化模式,比如上上述示例中,0 < t < 0.01 时,,当 t 超过0.01 时,计算方法为
  • errort > 0.01 时,报错退出;
  • warn:给出警告,但是程序继续运行,边界值计算方法同 clamp

csvFile

inlet

{

type uniformFixedValue;

uniformValue csvFile;

csvFileCoeffs

{

    fileName "$FOAM_CASE/velocity.csv"

    outOfBounds clamp;

    nHeaderLine 1;

    mergeSeparators no;

    separator ",";

    refColumn 0;

    componentColumns (1 2 3);

}

}

这种方式是通过一个 csv 格式的文件来定义分段函数,文件格式为

time,velocity-x,velocity-y,velocity-z

0,0,0,0

0.01,10,0,0

2. flowRateInletVelocity

这个边界条件指定的是界面上的体积流量或者质量流量,并根据流量来反推速度。速度的方向为垂直边界并指向区域内部一般的用法如下:

myPatch

{

type flowRateInletVelocity;

volumetricFlowRate 0.2; // 体积流量

value uniform (0 0 0);

}

 

 

myPatch

{

type flowRateInletVelocity;

massFlowRate 0.2; // 质量流量

rho rho; //要指定密度场的名字

rhoInlet 1.0; //如果上述指定的密度场不存在,则使用这里指定的值作为边界上的密度

}

类似的,前面 uniformFixedValue 边界里的那些类型,table tableFilecsvFile polynomial 也都可以使用,而且格式是类似的,这里就不重复了,更多细节可以参考http://www.geocities.jp/penguinitis2002/study/OpenFOAM/time_varying_bc.html

posted @ 2016-07-16 15:33  硫酸亚铜  阅读(1671)  评论(0编辑  收藏  举报