Navigation

    CFD中文网

    CFD中文网

    • Login
    • Search
    • 最新

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

    OpenFOAM
    2
    6
    1978
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Y
      yang山青 last edited by

      如题,在计算时由于重复性工作所以使用数组进行计算比较方便,但是在0文件夹中定义边界条件时却只能为这些数组变量定义相同的边界条件。有没有办法在不改变其数组特性的情况下做到分别赋予其边界条件啊?

      1 Reply Last reply Reply Quote
      • 李东岳
        李东岳 管理员 last edited by

        但是在0文件夹中定义边界条件时却只能为这些数组变量定义相同的边界条件

        边界条件不是你任意给的么?为什么只能定义相同的边界条件?

        CFD课程 改成线上了 http://dyfluid.com/class.html
        CFD高性能服务器 http://dyfluid.com/servers.html

        Y 1 Reply Last reply Reply Quote
        • Y
          yang山青 @李东岳 last edited by

          @东岳 因为需要定义边界的量有T[0]、T[1]、T[2]等。但是在0文件夹中只有一个T文件夹,并没有能够分别为各个数组成员赋予边界条件啊。试过分别建立初始条件但是并不能识别

          1 Reply Last reply Reply Quote
          • 李东岳
            李东岳 管理员 last edited by

            @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等不同的场了。

            CFD课程 改成线上了 http://dyfluid.com/class.html
            CFD高性能服务器 http://dyfluid.com/servers.html

            Y 1 Reply Last reply Reply Quote
            • Y
              yang山青 @李东岳 last edited by

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

              1 Reply Last reply Reply Quote
              • 李东岳
                李东岳 管理员 last edited by 李东岳

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

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

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

                这和上文不是相符的么?

                CFD课程 改成线上了 http://dyfluid.com/class.html
                CFD高性能服务器 http://dyfluid.com/servers.html

                1 Reply Last reply Reply Quote
                • First post
                  Last post

                CFD中文网 | 东岳流体 | 京ICP备15017992号-2