U*sin(t)边界条件
-
我刚开始学OpenFOAM,我没在用户手册里看到怎么样把速度的边界条件设成time dependent的,比如我要wall velocity 是U*sin(t),这个样子的?能麻烦你告诉我一下实现这个的函数吗?
inlet { type codedFixedValue; name dummy; code #{ const scalar& time = this->db().time().value(); operator==(vector(2.0*sin(time),0,0)); #}; value $internalField; }
请参考
-
我直接把这个代码拷进去替换原来的比如fixedValue condition,显示错误,
keyword name is undefined in dictionary "/home/abc/OpenFOAM/abc-4.1/run/cavity/0/U.boundaryField.movingWall"
这应该怎么处理?多谢! -
我先拿一个简单的例子试一下,就把cavity算例里的moving wall边界条件改了,本来U的边界条件是
FoamFile { version 2.0; format ascii; class volVectorField; object U; } dimensions [0 1 -1 0 0 0 0]; internalField uniform (0 0 0); boundaryField { movingWall { type fixedValue; value uniform (1 0 0); } fixedWalls { type noSlip; } frontAndBack { type empty; } }
我改成了
dimensions [0 1 -1 0 0 0 0]; internalField uniform (0 0 0); boundaryField { movingWall { type codedFixedValue; code #{ const scalar& time = this->db().time().value(); operator==(vector(2.0*sin(time),0,0)); #}; value $internalField; } fixedWalls { type noSlip; } frontAndBack { type empty; } }
就出错了
-
你那个movingWall里面忘记了
name dummy;
dimensions [0 1 -1 0 0 0 0]; internalField uniform (0 0 0); boundaryField { movingWall { type codedFixedValue; name dummy; code #{ const scalar& time = this->db().time().value(); operator==(vector(2.0*sin(time),0,0)); #}; value $internalField; } fixedWalls { type noSlip; } frontAndBack { type empty; } }
-
多谢东岳,加上这一行果然就可以了。不知道有没有这方面的资料可以推荐一下,不是很明白name dummy这一行的用法,多谢!
-
@xiaofenger 你把$internalField 直接写成uniform (0 0 0)不就好咯
-
如果我想直接设置速度场(Usin(5),Ucos(5),0),U是一个定值,也必须写成这么复杂的形式吗
-
@东岳 版主您好,我想设置入口速度具有一定的入射角度,修改现有的算例,原始版本:
internalField uniform (25 0 0); left { type freestream; freestreamValue uniform (24.8 3.16 0); }
仿照您给的例子改成:
internalField uniform (25 0 0); left { type freestream; name dummy; code #{ const scalar& angle = 10*3.14/180; //rad const scalar& U_ref = 25; //m/s operator==(vector(U_ref*cos(angle),U_ref*sin(angle),0)); #}; freestreamValue $internalField; }
我设置的角度似乎没有什么影响
-
@chengan-wang
你的最后面的代码有误,这样改:internalField uniform (25 0 0); left { //type freestream; type codedFixedValue; name dummy; code #{ const scalar& angle = 10*3.14/180; //rad const scalar& U_ref = 25; //m/s operator==(vector(U_ref*cos(angle),U_ref*sin(angle),0)); #}; freestreamValue $internalField; }
-
@李东岳 在 U*sin(t)边界条件 中说:
我刚开始学OpenFOAM,我没在用户手册里看到怎么样把速度的边界条件设成time dependent的,比如我要wall velocity 是U*sin(t),这个样子的?能麻烦你告诉我一下实现这个的函数吗?
inlet { type codedFixedValue; name dummy; code #{ const scalar& time = this->db().time().value(); operator==(vector(2.0*sin(time),0,0)); #}; value $internalField; }
请参考
李老师您好,我看过您在另一个帖子提到的“合理调节上部来流速度使浮升气泡保持在一个相对静止的位置”后,我想复现您说的内容,即:求解域的速度进口的速度大小根据上一个时间步的气泡速度自动调节。目前的思路是:采用function在算例文件夹下写出一个气泡速度Ub,再在0/U中采用include将气泡速度Ub引入边界条件中进行操作。但在实际操作过程中发现,include只会在计算第一步加载,并不会在每一个时间步后加载,导致速度进口大小并未实现自动调节。请问李老师您有没有好的思路可以实现边界条件的实时加载和自动调节哇