数组类型的变量场怎么分别设置边界条件?



  • 如题,在计算时由于重复性工作所以使用数组进行计算比较方便,但是在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
    				)
    			);
    

    这样,你就可以写出T0T1等不同的场了。



  • @东岳 我可能没有懂您的意思。但是我设置数组变量的时候也是您这样设置的,然后这样怎么能够分别设置边界条件呢?比如T1的左边界是定值,右边界是零梯度。而T2左边界是零梯度,右边界是定值呢?而且我要的变量场是因变量,就是需要在0文件中设置初始时刻的边界条件。


  • 管理员

    但是我设置数组变量的时候也是您这样设置的,然后这样怎么能够分别设置边界条件呢?

    我知道了,你要在创建数组的时候,自动给outlet,inlet之类的创建边界条件?这没法实现。只能设定为MUST_READ,然后手动在0文件夹里面设定。或者,就是在求解器内部强制赋值某边界条件。

    而且我要的变量场是因变量,就是需要在0文件中设置初始时刻的边界条件。

    这和上文不是相符的么?


登录后回复
 

与 CFD中文网 的连接断开,我们正在尝试重连,请耐心等待