Skip to content

OpenFOAM

OpenFOAM交流区

5.0k 主题 29.3k 帖子
  • 2 帖子
    4k 浏览
    C

    @gzh3369

    如果公式是这样的话:$x=\frac{\sum V_i x_i}{\sum V_i}$。可以这样:

    forAll(x, celli)//对所有的体x进行计算 { x[celli] = x[celli] *mesh.V()[celli];//此处即为每个网格的x*网格体积 } scalar sumx = gSum(x);//对所有的x*网格体积进行加和 scalar V = gSum(mesh.V());//计算总网格体积 scalar Final = sumx/V;//计算体均湍流动能耗散率 Info << runTime.timeName() <<" volume average x is "<<x<<endl;//输出结果
  • 4 帖子
    4k 浏览
    WayneW

    楼主好人 w-y10@foxmail.com

  • 改写函数变为类之后代码反而变快

    1
    1 帖子
    1k 浏览
    C

    据我所知,在面向对象由于添加了RTTI机制、构造函数机制会使得程序相对于使用一个函数变得稍微慢。当然这个慢我们基本看不到。

    在实际使用中,在我改写一个非常复杂的函数为一个类的时候,反而程序变得更快了。这是什么原因造成的?

    比如我执行这个外挂函数:

    ... A(a, b, c, d, e, f, g, h, e, j, k, m, n, z); ...

    反而不如把他改写为类快:

    ... A B(a, b, c, d, e, f, g, h, e, j, k, m, n, z); B.calculateA(); ...

    目前的认知存在于类要比公式慢一点点。不过这个认知被自身的测试推翻了。

    Any ideas?

    :sunglasses:

  • 怎么理解OpenFoam中的runTimeSelection机制?

    2
    2 帖子
    4k 浏览
    X

    @金石为开 本质上是 hashTable 的使用。在基类里调用宏函数 declareRunTimeSelectionTable 创建了一个 hashTable,其 key 的类型为 “word”,value 类型为函数指针,这个函数指针指向一个返回派生类临时对象的智能指针(autoPtr)。

    在派生类里,每次调用 addToRunTimeSelectionTable 的时候,相当于往 hashTable 里添加一组元素。

    在求解器里,创建的是基类的智能指针,这个指针指向基类中定义的 New 函数的返回值。New 的作用是选择具体的派生类,这里涉及到C++的一个特性,即基类指针可以指向派生类。New 函数根据你在算例里提供的模型的名字(typeName),去 hashTable 里匹配,然后将匹配到的派生类的对象返回。这样,就实现了模型的选择。

    具体参考:http://xiaopingqiu.github.io/2016/03/12/RTS1/

  • 5 帖子
    5k 浏览
    H

    @cfd-china 多谢啦,我试试!

  • 诸如inletOutlet等混合边界条件的inletValue如何给

    3
    3 帖子
    6k 浏览
    C

    @Aeronastro

    在tutorial中,通常如此:

    outlet { type inletOutlet; inletValue uniform (0 0 0); value uniform (20 0 0); }

    这可以有效地防止回流
    如果直接给定zeroGradient,可以出现回流;

    可以拿一个回流特别明显的算例来试试,比如一个涡旋伸展后方的流动。进口速度(1,0,0),出口的inletValue是(-1,0,0)。看是否不可压缩算例能否守恒。

    :kiss:

  • 运行出错..有知道的吗

    7
    7 帖子
    7k 浏览
    W

    @mark 信息量太少,我无法判断问题原因。不过你可以根据截图中的back trace去找错误。

  • 2 帖子
    2k 浏览
    chpjz0391C

    nparticles 是不是就是那个颗粒数量?

  • 压力入口边界条件

    4
    4 帖子
    5k 浏览
    M

    0_1462776631144_QQ截图20160509145537.png

    dimensions [0 1 -1 0 0 0 0];

    internalField uniform (0 0 0);

    boundaryField
    {

    INLET
    {
        type fixedValue;
     
       value uniform (0 0 0);
    }

    WALL { type fixedValue; value uniform (0 0 0); } OUTLET { type pressureInletOutletVelocity; inletValue uniform (0 0 0); value uniform (0 0 0); }

    }

    // ************************************************************************* //
    ```
    这样写对不对?

  • 关于openFoam中非求解量的边界条件的疑问

    4
    4 帖子
    5k 浏览
    WayneW

    知道了。内部场和边界场不是分开的,所以用等号赋值的时候也就更新了边界场。

  • --> FOAM Warning :

    12
    12 帖子
    12k 浏览
    C

    @mark

    那就可以不读取密度:sunglasses:

  • 此主题已被删除!

    7
    7 帖子
    60 浏览
  • [C++] VectorSpace.H

    5
    5 帖子
    18k 浏览
    WayneW

    谢谢回答。现在知道把模板参数 typedef 是为了可以输出模板参数的类型。参见C++ traits

  • 2 帖子
    2k 浏览
    WayneW

    @mark 初始条件不同?用setFields可以

  • constant下多个文件

    10
    10 帖子
    9k 浏览

    @wwzhao 既然大小圆柱要分开画,那么它们之间重叠的边界面应该怎么处理,不是同一个边界面吗?

  • 7 帖子
    6k 浏览
    W

    @mark 能否提供测试代码和算例?

  • 代码问题

    2
    2 帖子
    3k 浏览
    李东岳

    @mark 这个是个构造函数,alpha10进去注册的场,其值为alpha1。:expressionless:

  • 如何使用lookup读取Prt

    2
    2 帖子
    3k 浏览
    C

    @中国轰炸机飞机斯曼

    Try this:

    scalar xxx=readScalar(RASProperties.kOmegaSSTCoeffs.lookup("Prt"));

  • g 重力加速度怎样设置?

    6
    6 帖子
    5k 浏览
    M

    向x轴正方向运动,看来我设置对了:sunglasses: thanks

  • 2 帖子
    2k 浏览
    M

    能否留下联系方式,我也用到interphasechangefoam