Skip to content

OpenFOAM

OpenFOAM交流区

4.5k Topics 26.5k Posts
  • 三角形面积计算公式

    6
    6 Posts
    1k Views
    李东岳

    好像我问的有问题,$A=0.5(\overline{p_1}-\overline{p_0})\times(\overline{p_2}-\overline{p_0})$这个东西看起来是个矢量。但是面积不是矢量啊。我回去对对OpenFOAM的代码。

    我看了下,OpenFOAM里面mesh.Sf()对应的是这个:$0.5(\overline{p_1}-\overline{p_0})\times(\overline{p_2}-\overline{p_0})$,mesh.magSf()对应的是这个:$\left|0.5(\overline{p_1}-\overline{p_0})\times(\overline{p_2}-\overline{p_0})\right|$,后面这个应该就是面积了。

    @evensun $\left|0.5(\overline{p_1}-\overline{p_0})\times(\overline{p_2}-\overline{p_0})\right|$ 这个面积可以理解不

  • 1 Posts
    307 Views
    M

    大家好,我想问下在rhoCentralFoam中想植入一种新的重构格式,文献中以标量守恒律作为控制方程,对其的未知量进行了界面左右值的重构,这个应该在rhoCentralFoam中哪一块进行植入呢,我不太清楚,望解答一下 :yes: ,谢谢!

  • icoFoam 计算不出涡

    6
    6 Posts
    1k Views
    Z

    @冠竹 有可能是入口速度太小了

  • openfoam网格求教

    3
    3 Posts
    792 Views
    H

    @tens 好的!非常感谢您

  • 3 Posts
    841 Views

    @李东岳 可以把日常的流体都看成稀薄流体呀。从各种benchmark来看的话,精度还不错,处于同一个水平。
    现在主要的问题是,显式LBM并行效率特别的高,然后我就寻思着有限体积也可以显式呀,谁怕谁。结果性能卡在了压力泊松方程的求解上:136:

  • 调用实际运算步长

    3
    3 Posts
    724 Views
    疏影横斜水清浅

    @tens 好的,谢谢老师

  • 2 Posts
    239 Views
    L

    已解决,postProcess -func "components“ 应该是双引号:mihu:

  • small常数

    8
    8 Posts
    2k Views
    thegameT

    https://www.cfd-online.com/Forums/openfoam-solving/120990-small-great-rootvsmall-what.html
    里面写了small常数还有这些以及大小

    static const doubleScalar doubleScalarGREAT = 1.0e+15; static const doubleScalar doubleScalarVGREAT = 1.0e+300; static const doubleScalar doubleScalarROOTVGREAT = 1.0e+150; static const doubleScalar doubleScalarSMALL = 1.0e-15; static const doubleScalar doubleScalarVSMALL = 1.0e-300; static const doubleScalar doubleScalarROOTVSMALL = 1.0e-150;

    以及在OpenFOAM-7数值改变了(https://github.com/OpenFOAM/OpenFOAM-7/commit/c902c7a396c43ff733b33294f79acab03d7b92d8#diff-118c1e97b96036fb1f9d7f1ee5912713)
    d8bec1f9-3829-4c38-873f-62207d498415-image.png
    测试了一下OpenFOAM-7的VSMALL结果:
    430638be-f3c0-4d6c-a853-fd82f9b03400-image.png

  • 4 Posts
    1k Views
    T

    @carmelosun 如果流体是理想气体之类,热物性是根据温度和压力计算得到,入口温度低,初始场温度高。其实入口速度还是0.4,但是由于入射的流体密度比初始场内密度大,就会有个加速效果,看起来像是入口速度大

  • 11 Posts
    6k Views
    李东岳

    @evensun 是boundary的patch上的值,不是边界第一层网格的值

  • 关于颗粒碰撞模型的的问题

    3
    3 Posts
    827 Views
    李东岳

    parcel。parcel守恒,然后改变particle数

  • simpleFoam 水压结果计算不准确。

    9
    9 Posts
    2k Views
    Z

    @李子橙 明白了 谢谢

  • openfoam画上亿的网格

    15
    15 Posts
    3k Views
    T

    @李东岳 现在的瓶颈是单个节点内存不足的问题,但优势是节点数够多。我这边一直想通过parallel mesh generation的方法生成上亿网格。步骤跟之前的帖子您提到的差不多,blockMesh->decomposePar->snappyHexMesh...原来以为这种方法,能绕开内存不足的问题,结果发现processor0通讯开销太大导致内存不足。单节点64G内存的话,千万网格大概占20%内存。因此,上亿网格需要100G以上的节点支持。但这个设计是非常浪费的,因为千万网格->亿网格加密过程中,其他processor只占内存0.4%,processor0直接超过100%。不知道东岳老大有没有其他的方法绕开内存不足的问题,多次refine的话,我认为最终refine那一次所占的内存,跟直接blockMesh所需要的内存差别不大

  • 通量表示的区别

    3
    3 Posts
    740 Views
    疏影横斜水清浅

    @dzw05 我是这么使用这个通量的,surfaceScalarField phiVp = fvc::flux(Vp); 计算时是fvm::div(phiVp, C),然后使用求解器时要求我设置div(interpolate(Vp),C)的格式。如果使用surfaceScalarField phiVp = fvc::interpolate(Vp) & mesh.Sf();要求我设置div((interpolate(Vp)&S),C)的格式,所以我想问他们的区别。
    谢谢老师

  • 液滴破碎问题

    7
    7 Posts
    2k Views
    L

    我以前也遇到过,我觉得可能是之前setfields错误的问题,后来我好像是重新删一下相文件,就没了。

  • 怎么看大型算例的结果啊?

    9
    9 Posts
    2k Views
    X

    @氕氘-川
    时间可以接受,支持并行转换。

  • 3 Posts
    817 Views
    袁宝强

    @李东岳 谢谢,我再认真读一下:140:

  • nut壁面函数如何影响湍流模拟

    4
    4 Posts
    2k Views
    C

    @李东岳 非常感谢!我也稍微想通一点了,壁面函数的作用只会出现在边界处的nut上,时间步第n步通过壁面函数的到的patch上的nut,会在第n+1步的动量方程粘性项求解中起作用:146: 所以第一层网格中心上的nut只要通过k求解得到就好了,不需要被壁面函数更新。希望这次没有理解错了

  • 1 Posts
    526 Views
    GarethG

    各位老师好,我最近在尝试定义一个新的边界条件,结合timeVaryingMappedFixedValue和inletOutelt边界。在每个时间步对边界插值赋值之后,再根据边界上的通量判断入流/出流,将出流的区域设置zeroGradient,而入流区域仍采用插值结果。

    下面是我参考inletOutlet边界文件修改的updateCoeffs()函数:

    template<class Type> void Foam::timeVaryingInletOutletFvPatchField<Type>::updateCoeffs() { if (this->updated()) { return; } this->operator==(fieldMapper_.map()); // 拷贝于‘inletOutlet’边界源文件,用于判断方向并对系数赋值 const Field<scalar>& phip = this->patch().template lookupPatchField<surfaceScalarField, scalar> ( phiName_ ); this->valueFraction() = 1.0 - pos0(phip); // fixedValueFvPatchField<Type>::updateCoeffs(); }

    新的边界条件能够成功编译。但在进行测试case(pimpleFoam)时,会在decomposePar分解并行区域步骤报错(直接进行单核计算也会出现相同错误):

    --> FOAM FATAL ERROR: request for surfaceScalarField phi from objectRegistry region0 failed available objects of type surfaceScalarField are 0() From function const Type& Foam::objectRegistry::lookupObject(const Foam::word&) const [with Type = Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh>] in file /home/gareth/OpenFOAM/OpenFOAM-8/src/OpenFOAM/lnInclude/objectRegistryTemplates.C at line 211.

    以下是objectRegistryTemplates.C文件的对应内容:

    FatalErrorInFunction << nl << " request for " << Type::typeName << " " << name << " from objectRegistry " << this->name() << " failed\n available objects of type " << Type::typeName << " are" << nl << names<Type>(); if (cacheTemporaryObject(name)) { FatalErrorInFunction << nl << " request for " << name << " from objectRegistry " << this->name() << " to be cached failed" << nl << " available temporary objects are" << nl << temporaryObjects_; } FatalErrorInFunction // line 211 << abort(FatalError); // line 212 } return NullObjectRef<Type>();

    根据错误信息,似乎是没有找到surfaceScalarField类型的对象phi,但我只是结合inletOutlet边界,对原始的timeVaryingMappedFixedValue边界代码进行修改,并未改变其他源代码部分。并且我检查了求解器createFields.H,包含对通量phi的创建。所以我很困惑这个问题是如何产生的?

    我是刚开始接触OpenFOAM的源代码,可能犯了一些愚蠢的错误。希望各位大佬能对该问题给出一些建议。 谢谢!

  • 编译新边界时报错

    2
    2 Posts
    652 Views
    GarethG

    我已经解决了这个编译错误,主要是自己粗心大意导致的:135: :136: 。
    在***FvPatchFields.C文件中增加了#include surfaceFields.H即能编译通过