OpenFOAM

4.5k Topics 26.4k Posts
  • openfoam数据处理

    5 Posts
    1k Views

    @bestucan 谢谢老师:146:

  • 7 Posts
    2k Views

    @cresendo 嗯呐,回头试试,你把湍流粘度比调大之后,nut的边界条件就可以不使用粗糙度边界条件了吧?我现在觉得DTCHull的nut边界条件使用粗糙度边界条件可能是为了在一定程度上修正粘性阻力被低估的问题......:chouchou:

  • 自定义Foam找不到求助

    10 Posts
    2k Views

    @tens 感谢您的指导,加入求解器名字之后报错解决了,非常感谢 :huahua: :huahua:

  • 2 Posts
    575 Views

    并且我发现就算我没有最终安装of8,只执行之前的sudo apt update一系列命令,也会出现该问题。。。

  • 约束器constrain的实现

    1 Posts
    462 Views

    在约束器Foam::fvConstraints::constrain的定义中有:

    (这里以输入为eqn的定义为例)

    template<class Type> bool Foam::fvConstraints::constrain(fvMatrix<Type>& eqn) const { checkApplied(); const PtrListDictionary<fvConstraint>& constraintList(*this); bool constrained = false; forAll(constraintList, i) { const fvConstraint& constraint = constraintList[i];//对象constraint源于类fvConstraint if (constraint.constrainsField(eqn.psi().name())) { constrainedFields_[i].insert(eqn.psi().name()); if (debug) { Info<< "Applying constraint " << constraint.name() << " to field " << eqn.psi().name() << endl; } constrained =//这里调用了对象constraint的constrain方法 constraint.constrain(eqn, eqn.psi().name()) || constrained; } } return constrained; }

    注意到,其中constrain方法所引用的是对象constraint,而对象constraint​源于​类fvConstraint​。但是,我目前在类fvConstraint​没有找到关于​constrain方法的定义,
    实际上,我对整个代码进行了搜索遍历,寻找包含两个输入对象的constrain方法,与类fvConstraint有关的,仅有fvConstraint头文件中定义的​​fvConstraintM.H​。
    但是其如何被类fvConstraint​继承无法看得出来,因为该类没有父类。为因此想请教一下大家这个方法的定义及其由来,以及其是如何在代码里实现的。​

  • 2 Posts
    703 Views

    @guohuiqun
    大致步骤:

    random waves 都用波谱描述。谱很多,所以先确定用什么谱 确定后,找描述谱的数学函数 这样就可根句函数写code算谱值,或用现成的
    最后算出各个对应(从小到大)频率的谱值,频率和谱值换算成periods and heights 就输入到你上面那文件里了
    (要写个小code是因为,你例子中是3个,但如要300个,用计算器就不现实了)

    只知些皮毛,以上不保证正确。。。还请有经验的老师给你建议或你纠正以上不正确的地方

  • CPU超线程关闭

    11 Posts
    4k Views

    @袁宝强 windows为了平衡负载,开启的线程数和实际调用的线程并不一致。

  • 2 Posts
    717 Views

    用的什么求解器呢,一般在creatFields文件里面创建一个变量,让他自动输出,然后令这个变量等于你要输出的量

  • codedfixedvalue设置问题

    2 Posts
    717 Views

    你看的是哪里的差异,你看下进口的patch的值?

  • 关于重叠网格的疑问

    14 Posts
    5k Views

    @秋山结月 背景网格使用sanppy加密部分区域好像真的会发散,而且p_rgh的求解矩阵也会变为对称,不加密是非对称的,请问您最终怎么解决的这个问题

  • 5 Posts
    1k Views

    @yingdong 明白了,谢谢老师。

  • 9 Posts
    2k Views

    @李东岳求并行生成网格以及划分网格的方法 中说:

    @number44

    那scotch和metis可以并行decompose吗?

    不能。

    不过我想到一个曲线救国的方案就是用snappyHexMesh生成网格。这个可以并行。只不过仅仅进行refineMesh处理而已。应该也可以。

    如果这样的话,分别在各processor去refineMesh,reconstructPar会报错吧

  • simpleFoam质量流出口出现奇点

    4 Posts
    856 Views

    问题解决了,之前是没发现 flowRateOutletVelocity ,把 flowRateInletVelocity 换成 flowRateOutletVelocity 即可:mianmo:

  • 关于C++ Source Code Guide的提问

    3 Posts
    781 Views

    @bestucan 非常感谢:huahua:

  • multiphaseEuler中湍流模型

    2 Posts
    722 Views

    @henry-zhou 多给你一个选择,如果算les,直接改simulationType就可以

  • interThermalPhaseFoam

    5 Posts
    1k Views

    @李东岳 好的,了解了,谢谢老师
    :ok:

  • 7 Posts
    2k Views

    @李东岳 因为本身那个就不应该存在面,我旋转的时候merge nodes了 其实是流通的,整个区域都是流体域。我是一个圆柱型的几何,360°旋转后就是一个环形桶。

  • 11 Posts
    2k Views

    @五好青年 源文件确实是被注释掉的,但是我去掉#号,source之后,编译报错的时候代码会高亮

  • 3 Posts
    599 Views

    @李东岳 :142: 感谢

  • openfoam中是否有discreteAdjointSolver

    3 Posts
    736 Views

    @xpqiu 感谢

  • 相变模型报错

    3 Posts
    887 Views

    @李东岳 解决了,谢谢李老师:ok3: :ok2:

  • turbulent kinetic energy

    3 Posts
    796 Views

    @李东岳 感谢东岳老师,俺也找到了一个视频https://www.bilibili.com/video/av928136801/

    9e7e101f-b3f8-4695-a81f-107923a6a23f-图片.png

  • 11 Posts
    2k Views

    @tens 多谢老师!!

  • nParticle数值为什么可以是小数

    7 Posts
    1k Views

    @李东岳 在做液体燃料的雾化方面,主要用compressibleInterFoam和sprayCloud这部分

  • 5 Posts
    1k Views

    @好好科研用rhoPimpleFoam计算飞机外流,为什么iteration为0 中说:

    @number44 我这个p和U的tolerance分别设置的是1e-8和1e-9,感觉挺小的,还要调的更小嘛

    通常来讲,够有多了,我一般就是1E-6到1E-8而已。

  • 4 Posts
    913 Views

    @henry-zhou Class method那面可以给定log粒径分布,平均直径满足文献值即可

  • 3 Posts
    920 Views

    @李东岳 好的 谢谢李老师

  • 3 Posts
    713 Views

    @李东岳 非常感谢,最近一直卡在这个问题上

  • pressureReference

    6 Posts
    1k Views

    @evensun

    我猜你的疑问应该是,为什么类似下面这段代码编译器会报错?

    1 pressureReference pressureReference(p, simple.dict()); 2 pressureReference pressureReference(pf, simple.dict());

    这两条语句有4个pressureReference,我分别编号为1, 2, 3和4号。

    编译器运行到第一行代码时,假设当前函数体内没有声明pressureReference,编译器就会首先去全局域(global )里寻找pressureReference是什么,当找到pressureReference的声明,发现是个类时,编译器把它(1号)解析为一个类(class)。 编译器继续运行,遇到2号pressureReference,编译器主动构造类型为pressureReference(1号)的对象pressureReference(2号)。
    注意:这两个名称一样,编译器会怎么做?当前作用域里的pressureReference(2号)会把全局域(global)里的pressureReference(1号)隐藏掉,1号就发挥不了作用了。也就是说,在此后的作用域里pressureReference只是个对象,只发挥2号pressureReference的作用。 编译器继续运行,遇到第二行的3号pressureReference,此时编译器将这个pressureReference解析为一个对象(2号)。 编译器最后发现4号pressureReference,这是什么,3号对象后面一个4号对象,蜜汁操作,编译器理解不了,编译就失败了。

    那如果我一定要让3号pressureReference发挥类(class)的作用(像1号pressureReference一样),有没有办法?
    有的。在第二行代码的3号前加作用域解析运算符(::),编译器就会去找全局(global)的pressureReference声明了,像上面的第一步一样,然后把3号解析为类(class),再把4号理解为对象。编译就能通过了。
    有兴趣可以试试。

    1 pressureReference pressureReference(p, simple.dict()); 2 ::pressureReference pressureReference(pf, simple.dict());
  • 9 Posts
    3k Views

    可以请问一下楼主你的体渲染在paraview的哪个里面吗

  • const的使用

    4 Posts
    920 Views

    感谢二位前辈的回复,我差不多理解这个意思了:xinxin:

  • 删除命令?

    3 Posts
    558 Views

    @李东岳 解决了,谢谢您:142:

  • 关于reconstructpar重构问题

    3 Posts
    829 Views

    @李东岳 谢谢老师:146:

  • 4 Posts
    793 Views

    @xdzzzz :146:

  • 3 Posts
    866 Views

    @李东岳 感谢李老师的解答!老师,我用的也是openfoam8,截取代码的时候没全截取给您带来误解了,抱歉。我是将代码添加在了writePositions()函数的最前面,如下:

    void Foam::functionObjects::movingInterfaceHeight::writePositions() { scalar time = time_.value(); locations_[0][0] = 0.5 + 0.001*sin(5.3*time); locations_[0][1] = 0; locations_[0][2] = 0.5; const uniformDimensionedVectorField& g = mesh_.lookupObject<uniformDimensionedVectorField>("g"); const vector gHat = g.value()/mag(g.value()); const volScalarField& alpha = mesh_.lookupObject<volScalarField>(alphaName_); autoPtr<interpolation<scalar>> interpolator ( interpolation<scalar>::New(interpolationScheme_, alpha) );

    writePositions()函数下,最前面的两行即为添加的代码,后来我将整个interfaceHeight工具的代码复制了重新构建了一个“movingInterfaceHeight”工具,重新编译后问题解决了。

    按照老师您说的,将其添加在const point p = locations_[li] - gHat*hIL的定义中存在一定的问题:

    // Position of the interface const point p = locations_[li] - gHat*hIL;

    其中的locations_[li]为三维坐标点,point p = locations_[li] - gHat*hIL对xyz坐标均进行了计算,按照我的简谐运动规律$\lambda=0.001sin(5.0498t)$,仅x坐标发生改变,y与z应在坐标不变的情况下完成```point p``的计算,是否可以修改成以下代码:

    // Position of the interface const point p = locations_[li]; //首先定义一个point p scalar time = time_.value(); //分别对p的xyz坐标进行计算 p.x() = 0.5 + 0.001*sin(5.0498*time) - gHat*hIL; p.y() = 0 - gHat*hIL; p.z() = 0.5 - gHat*hIL;

    感谢李老师指导!

  • 1 Posts
    386 Views

    最近想利用mapped边界条件来实现周期性边界条件,但mapped边界条件在blockMesh和U中的诸多参数,例如:samplepatch setAverage offset该如何设置呢。希望知道的大佬能够不吝赐教,谢谢。

  • 1 Posts
    280 Views

    老铁们,一般报这种错怎么解决?
    a01bec9b-dbe4-484b-a741-3611893c01d3-image.png

    在本地可以多算几步,但是超算就出问题了

  • 21 Posts
    4k Views
  • 3 Posts
    881 Views

    @李东岳 好的,谢谢李老师

  • 10 Posts
    1k Views

    谢谢李老师的建议!问题已解决,更新一下!
    出现上述未定义的引用(undefined reference)错误提示,是因为我在编译自己的库specie时没有改名,编译后出现libspecie.o,可能是与官方的重复了,在我手动删除该文件后,求解器可以正常使用。
    参考bestucan 版主的回复!链接文本
    不过我有一个疑问,我的编译路径是FOAM_USER_LIBBIN,为什么还会导致这样的错误呢?

  • 如何模拟气体溶解到水中?

    15 Posts
    3k Views

    @zousiyu 如果能够构造出一个量,它既能表征不同相,又是连续的,本身还守恒(没有源项),你这个问题是不是就好解决了?

  • 1 Posts
    368 Views

    各位前辈好!

    如图1 ,我现在流场中有一些气泡,想将每一个气泡的内部压力映射到底部壁面上,效果图如图2,我应该如何在paraview中进行映射/投影呢?我自己试验了pointDatasetInterpolator好像不太对(图3)。

    哪位前辈能够指点一个思路呢?谢谢

    图1:
    1111111111.png

    图2:

    2222222.png

    图3:
    3333333.png

  • 5 Posts
    921 Views

    @李东岳

    @李东岳OF中在有限的计算域中怎么消去边界对气泡的影响 中说:

    既用小的计算域同时又能消除边界的强影响,从而达到使用cyclic边界条件

    算法上倒是有一些。比如那些advection边界条件。但是扩大计算域是最稳妥的方法。你这个是空炮么?可以设置非均匀网格处理。外围网格非常非常稀疏,里面足够细,也不会太多的网格。

    锯齿网格可能开始会有,但随着计算,表面张力的作用会变平

    李老师你好,算例的确是计算空泡的;

    扩大计算域的话,可能没办法满足我的需求,原因如下:

    气泡的间距是算例的一个主要变量,很需要近距离的情况 如果足够远的话,循环边界条件可能就没有作用了 非均匀网格的话,一方面无法确保在流体中的压力、速度的正确捕捉;其次在网格密-疏位置处,是不是会使得结果误差比较大呢? 如果一开始就是锯齿网格的话,那后续的计算精度感觉不能保证。原因是在高的内压驱动下,初始泡的大小决定之后的每步计算结果,所以一开始的边界捕捉及其重要

    所以还是想咨询下,能不能一开始在0文件中就能很好的捕捉相分数场,粗的背景网格+细气泡边界网格,之后就用自适应网格计算。

    其次还问下advection边界条件的使用方法或相关链接

    麻烦李老师了~

  • 对流扩散方程中的源项设置

    11 Posts
    5k Views

    @李东岳 您好,李老师,请问"c0"是我所设定的cellZone的名字吗,然后"s"是所设定的源的值。我本来是想先通过toposet选定一个cellZone,然后在fvoption里面对所选cellZone进行源的赋值,但是不清楚浓度源应该选择哪种type。

  • 4 Posts
    1k Views

    十分感谢两位大佬:140:

  • 1 Posts
    419 Views

    PISO算法中的对流项fvm::div(phi,U)是如何迭代求解的呢?

  • Cyclic周期性边界条件

    38 Posts
    12k Views

    @李东岳 李老师,对于周期边界下的压力场,piso循环中有pEqn.setReference(pRefCell,pRefValue);用来确定压力场。那在计算周期边界下的被动标量时,应该用什么来对温度场进行修正呢?
    :135:

  • 关于残差的请教

    1 Posts
    464 Views

    ff12dfb1-d78b-4f7d-812d-db36e6749698-图片.png
    请问各位老师,根据参差图 --Initial residual , Final residual
    这个能判定收敛吗?
    初始残差没到设定的值,且计算到后边开始波动,红色方框所示;
    Final residual虽然可以到设定值,但是在一部分计算中波动很大,红色圆圈所示。
    请问是什么原因呢。
    期待大佬回答解惑。

  • 请教关于网盘的问题

    2 Posts
    639 Views

    @五好青年 可以,就是easycae的网盘,你注册个用户应该就有,

  • 关于MRF的疑问

    12 Posts
    8k Views

    @李东岳 哈哈哈,物理隔绝了:mihu: