OpenFOAM_如何设置随空间位置变化的参数
请教各位,问题如标题所述。
模拟的问题是“裂隙中的两相流”,方程是二维的,裂隙面的开度是二维面的参数,其开度分布如图所示。在不同的位置,裂隙拥有不同的开度。
开度的值是有数据的,给出确定的x、y坐标,就可以确定任何一点的开度值。
开度是方程中的关键参数。
应该怎样在程序中设置该参数?如果tutorials当中有类似的案例(即某个参数是空间位置的函数),如能告知也非常感谢。
返回小木虫查看更多
今日热帖
请教各位,问题如标题所述。
模拟的问题是“裂隙中的两相流”,方程是二维的,裂隙面的开度是二维面的参数,其开度分布如图所示。在不同的位置,裂隙拥有不同的开度。
开度的值是有数据的,给出确定的x、y坐标,就可以确定任何一点的开度值。
开度是方程中的关键参数。
应该怎样在程序中设置该参数?如果tutorials当中有类似的案例(即某个参数是空间位置的函数),如能告知也非常感谢。
返回小木虫查看更多
不了解OPENF,但知道FLUENT 和COMSOL,应该是自定义变量,构造其传递方程。
如果会C++编程的话,在OpenFOAM上直接修改代码是最简单的。mesh.point()可以获得空间位置,然后可以直接对参数进行修改。
const vectorField& cellCentres = mesh.C(); //这一句可以获取网格的cellCentre的坐标
//假定你要设定的量为U
forAll(cellCentres, cellIndex)
{
vector cellPos = cellCentres[cellIndex]; //获取一个cell的坐标
scalar pos_x = cellPos.component(0);
scalar pos_y = cellPos.component(1);
//根据坐标设定U的值
if( (pos_x > 1 && pos_x < 2) && (pos_y > 1 && pos_y < 2))
{
U[cellIndex] = 1.0; // U 为标量
U[cellIndex] = vector(1, 0, 0); // U 为vector
}
}
,
。