数组类型的变量场怎么分别设置边界条件?
-
如题,在计算时由于重复性工作所以使用数组进行计算比较方便,但是在0文件夹中定义边界条件时却只能为这些数组变量定义相同的边界条件。有没有办法在不改变其数组特性的情况下做到分别赋予其边界条件啊?
-
但是在0文件夹中定义边界条件时却只能为这些数组变量定义相同的边界条件
边界条件不是你任意给的么?为什么只能定义相同的边界条件?
-
@东岳 因为需要定义边界的量有T[0]、T[1]、T[2]等。但是在0文件夹中只有一个T文件夹,并没有能够分别为各个数组成员赋予边界条件啊。试过分别建立初始条件但是并不能识别
-
@yang山青 在 数组类型的变量场怎么分别设置边界条件? 中说:
因为需要定义边界的量有T[0]、T[1]、T[2]等。但是在0文件夹中只有一个T文件夹
你需要声明一个
PtrList<class>
,类似如下(我这个例子是surfaceScalarField
),`//- Moments in the cell faces PtrList<surfaceScalarField> mFlux_;
然后初始化:
mFlux_.set ( kth, new surfaceScalarField ( IOobject ( "mFlux" + name(kth), mesh_.time().timeName(), mesh_, IOobject::NO_READ, IOobject::AUTO_WRITE ), mesh_, dimensionedScalar ( "mFlux" + name(kth), dimensionSet(0,0,0,0,0,0,0), 0.0 ), mFluxTypes ) );
这样,你就可以写出
T0
,T1
等不同的场了。 -
@东岳 我可能没有懂您的意思。但是我设置数组变量的时候也是您这样设置的,然后这样怎么能够分别设置边界条件呢?比如
T1
的左边界是定值,右边界是零梯度。而T2
左边界是零梯度,右边界是定值呢?而且我要的变量场是因变量,就是需要在0文件中设置初始时刻的边界条件。 -
但是我设置数组变量的时候也是您这样设置的,然后这样怎么能够分别设置边界条件呢?
我知道了,你要在创建数组的时候,自动给outlet,inlet之类的创建边界条件?这没法实现。只能设定为
MUST_READ
,然后手动在0文件夹里面设定。或者,就是在求解器内部强制赋值某边界条件。而且我要的变量场是因变量,就是需要在0文件中设置初始时刻的边界条件。
这和上文不是相符的么?