Skip to content

OpenFOAM

OpenFOAM交流区

5.3k 主题 31.6k 帖子
  • 自动调节时间步长循环计算某一时间步

    10
    10 帖子
    8k 浏览
    V

    @李东岳 请问老师,可以实现计算一定步数后,时间步倒退,重新计算一遍嘛?我想尝试计算1000时间步,然后从第500步计算到1500步,再从第1000步计算到2000步,这样可以实现嘛?

  • 请教一个检查网格的问题

    4
    4 帖子
    2k 浏览
    J

    @李东岳 李老师,再请教一个问题,在检查网格的时候,cell zones 和 Number of regions的数目必须一样吗?如果不一样的话,请问代表什么问题?

  • 发一个fluent3DMeshToFoam技巧

    9
    9 帖子
    7k 浏览

    @callsy 关于这个问题你看东岳老师发的链接,我之前也试过这个链接,有时候能解决,有时候不行,不行的话就得重新画网格,还有就是切换版本,有时候我用2021R1版本会报错,但是用2019R2就没问题

  • 1 帖子
    680 浏览
    A

    求助各位老师,我试着在sixDoFRigidBodyMotion库中建立一个新的mylinearSpring文件夹(类似于原linearSpring),意图改动其中的锚点anchor的位置。先试着让它z坐标加1,在编译时出错,错误信息如下。

    sixDoFRigidBodyMotion/restraints/mylinearSpring/mylinearSpring.C:error: assignment of read-only location ‘((const Foam::sixDoFRigidBodyMotionRestraints::mylinearSpring*)this)->Foam::sixDoFRigidBodyMotionRestraints::mylinearSpring::anchor_.Foam::Vector<Cmpt>::z<double>()’ anchor_.z()=anchor_.z()+1;

    提示在给只读位置幅值,是不是意味着在这里anchor是不能变动的量,那要怎样才能改动它呢?

  • wallShearStress使用的一些问题

    10
    10 帖子
    9k 浏览

    @李东岳 我试了一下,可以的,是我想要的结果。谢谢东岳老师!

  • 14 帖子
    10k 浏览
    T

    @leeck Q562658790

  • 3 帖子
    2k 浏览
    L

    @李东岳 懂了,谢谢李老师

  • 分散相体积分数增加,报错!

    1
    1 帖子
    1k 浏览
    H

    multiphaseEulerfoam,低离散相分数的时候,没问题,离散相增加到0.35,就报错,尝试修改了边界条件、相间作用力模型、离散格式和网格都无果,差别就是跑的时间长短,最终都发散报错如下:

    [8] #0 Foam::error::printStack(Foam::Ostream&) at ??:? [8] #1 Foam::sigFpe::sigHandler(int) at ??:? [8] #2 ? in "/lib/x86_64-linux-gnu/libc.so.6" [8] #3 Foam::divide(Foam::Field<double>&, Foam::UList<double> const&, Foam::UList<double> const&) at ??:? [8] #4 Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::operator/<Foam::fvPatchField, Foam::volMesh>(Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) in "/home/zhl/OpenFOAM/OpenFOAM-8/platforms/linux64GccDPInt32Opt/bin/multiphaseEulerFoam" [8] #5 Foam::PhaseCompressibleMomentumTransportModel<Foam::phaseModel>::nu() const at ??:? [8] #6 Foam::RASModels::kEpsilon<Foam::PhaseCompressibleMomentumTransportModel<Foam::phaseModel> >::correct() at ??:? [8] #7 Foam::phaseSystem::correctTurbulence() at ??:? [8] #8 ? in "/home/zhl/OpenFOAM/OpenFOAM-8/platforms/linux64GccDPInt32Opt/bin/multiphaseEulerFoam" [8] #9 __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6" [8] #10 ?[ubuntu:09382] *** Process received signal *** 或者这样: [8] #0 Foam::error::printStack(Foam::Ostream&) at ??:? [8] #1 Foam::sigFpe::sigHandler(int) at ??:? [8] #2 ? in "/lib/x86_64-linux-gnu/libc.so.6" [8] #3 Foam::divide(Foam::Field<double>&, Foam::UList<double> const&, Foam::UList<double> const&) at ??:? [8] #4 Foam::operator/(Foam::tmp<Foam::Field<double> > const&, Foam::UList<double> const&) at ??:? [8] #5 Foam::PhaseCompressibleMomentumTransportModel<Foam::phaseModel>::nu(int) const at ??:? [8] #6 Foam::epsilonWallFunctionFvPatchScalarField::calculate(Foam::momentumTransportModel const&, Foam::List<double> const&, Foam::fvPatch const&, Foam::Field<double>&, Foam::Field<double>&) at ??:? [8] #7 Foam::epsilonWallFunctionFvPatchScalarField::calculateTurbulenceFields(Foam::momentumTransportModel const&, Foam::Field<double>&, Foam::Field<double>&) at ??:? [8] #8 Foam::epsilonWallFunctionFvPatchScalarField::updateCoeffs() at ??:? [8] #9 Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>::Boundary::updateCoeffs() at ??:? [8] #10 Foam::RASModels::kEpsilon<Foam::PhaseCompressibleMomentumTransportModel<Foam::phaseModel> >::correct() at ??:? [8] #11 Foam::phaseSystem::correctTurbulence() at ??:? [8] #12 ? in "/home/zhl/OpenFOAM/OpenFOAM-8/platforms/linux64GccDPInt32Opt/bin/multiphaseEulerFoam" [8] #13 __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6" [8] #14 ?[ubuntu:07707] *** Process received signal *** 求大神指点一二!
  • rhel怎么安装OF

    14
    14 帖子
    10k 浏览
    S

    @xpqiu 不是rpm包,是自己编译。

    现在不管了,交给运维了,1000块,自己瞎搞,把同事的监测搞没了,被骂了一顿...

  • icoFoam植入温度方程求助

    2
    2 帖子
    2k 浏览

    @冠竹 在 .h文件中参照nu的形式,把你新加的DT声明一下就好。建议去了解一下C++变量的声明和定义,,

  • OpenFOAM中网格面方向问题

    3
    3 帖子
    2k 浏览

    @李东岳 ::146: 谢谢东岳大神

  • 如何获得线性化的N-S方程雅克比矩阵

    1
    1 帖子
    1k 浏览

    最近在入门流体力学中的线性稳定性分析相关工作,我的理解是通过CFD计算获得的流场作为base flow,对N-S方程进行线性化,获得小扰动特征信息。目前在全网找到了一篇入门相关的文献:https://www.sciencedirect.com/science/article/pii/S1000936116300024
    我现在的问题是论文中提到A是右侧线性化的N-S方程的雅克比矩阵(如图1所示),那么如何在openfoam中获得该雅克比矩阵?
    同时通过查阅另外一篇文献,文献2(https://arxiv.org/abs/2111.07356)给出了矩阵A的相关表达式,如图2所示。
    PS1:通过查阅cfdonline,目前没有发现openfoam中附加线性稳定性分析相关的toolbox,而Nek5000中有相关的后处理模块,但是有限体积法目前刚入门算熟练,实在不想转去谱元法,所以想在openfoam中解决这个问题。
    PS2:希望东岳老师能给点suggestion,最好能赐几行codes

    图片1.png

    @李东岳,另外看东岳老师最近公司在招人,说实话想问下收不收实习生呀,只要能学到技术就很满足!

    图片2.png

  • 以超音速计算机翼时,发散 温度显示为负数

    1
    1 帖子
    997 浏览
    M

    大家好 想请教一个问题 超音速流计算机翼时,算了大概0.7秒发散了,显示好像是温度为负数了,用的rhoCentralFoam,这个有啥解决方法吗?谢谢大家:chouchou: Screenshot from 2022-03-10 21-44-24.png

  • sajbenDiffuser的算例

    6
    6 帖子
    4k 浏览
    T

    @李东岳 好的,谢谢老师,麻烦您了:140:

  • 模拟传热,部分区域温度场不发生变化

    5
    5 帖子
    6k 浏览
    J

    @桥下卧龙 你好,请问一下,你的网格是用ICEM画的吗?

  • 风机叶片攻角如何计算

    2
    2 帖子
    2k 浏览
    S

    可以参考这篇文献:Determination of the Angle of Attack on Rotor Blades

  • Re: dynamicMeshDict CofR

    1
    1 帖子
    962 浏览
    T

    回复: 动网格的旋转运动可以修改旋转轴吗?

    你好 我最近也在研究dynamicMeshDict (https://openfoamwiki.net/index.php/DynamicMeshDict). CofG指的是centre of gravity. 在dynamicMeshDict你可以修改 centre of mass, inertia and etc. CofR是centre of rotation,这个我的算例是在controlDict里修改,我用的是interFoam solver,openfoam version7.

  • 并行边界上网格面心处数值通量(φ_f)的同步

    1
    1 帖子
    1k 浏览

    最近在编写程序的时候遇到并行边界上网格面心处数值通量(φ_f)的同步问题,单核运行不存在并行边界,所以没有这个问题。以下图为例:

    Domain.png

    并行计算时,求解区域分为了4个区域,两个区域之间产生了并行边界面,对于内部网格面元,网格面心处的数值通量(φ_f)的计算跟单核运行时是一样的,但是对于并行边界处的网格面元,数值通量(φ_f)在两个相邻并行边界上应该是一样的,因为并行边界的存在不应该改变原来的解。因此,我用了如下的syncFaceList()函数来进行同步,alpha_f是定义在网格面心上的surfaceScalarField,这个函数在头文件"syncTools.H"中有定义,我用了以下三种同步方式,发现流体穿过并行边界时还是产生了误差,单核运行时误差(数值解与解析解之差)可以达到10E-12次方量级,但是并行运行时流体一穿过并行边界,误差就上升到了10E-4量级,我觉得这是因为并行边界上数据同步没有做好的原因,请问有小伙伴遇到过这个问题嘛?使用syncFaceList()函数的正确方式是什么?如果使用syncFaceList()函数进行同步网格面心处的数值通量(φ_f)还是有问题的话,打算自己写一下同步过程。

    // syncTools::syncFaceList(mesh(), alpha_f, maxEqOp<scalar>(), false); syncTools::syncFaceList(mesh(), alpha_f, plusEqOp<scalar>(), false); // syncTools::syncFaceList(mesh(), alpha_f, eqOp<scalar>(), false);
  • 编译体积力时遇到的小报错

    1
    1 帖子
    1k 浏览
    J

    在学习用openfoam做自航的时候想尝试用体积力模型替代桨模型产生的推力,这需要引入体积力模型。
    在编译时有遇到一点小问题,关于未定义引用,请问要怎么正确引用,解决这个报错提示使得编译成功?
    首先这是wmake出现的提示:

    /usr/bin/ld.bfd: /home/dyfluid/OpenFOAM/OpenFOAM-7/platforms/linux64GccDPInt32Opt/applications/solvers/multiphase/waveProp/waveProp.o: in function `main.cold': waveProp.C:(.text.unlikely+0x49d): undefined reference to `Foam::functionObjects::forces::~forces()' /usr/bin/ld.bfd: /home/dyfluid/OpenFOAM/OpenFOAM-7/platforms/linux64GccDPInt32Opt/applications/solvers/multiphase/waveProp/waveProp.o: in function `main': waveProp.C:(.text.startup+0x8bc9): undefined reference to `Foam::functionObjects::forces::forces(Foam::word const&, Foam::objectRegistry const&, Foam::dictionary const&)' /usr/bin/ld.bfd: waveProp.C:(.text.startup+0x8bed): undefined reference to `Foam::functionObjects::forces::calcForcesMoment()' /usr/bin/ld.bfd: waveProp.C:(.text.startup+0x8bfc): undefined reference to `Foam::functionObjects::forces::forceEff() const' /usr/bin/ld.bfd: waveProp.C:(.text.startup+0xa444): undefined reference to `Foam::functionObjects::forces::~forces()' collect2: error: ld returned 1 exit status make: *** [/home/dyfluid/OpenFOAM/OpenFOAM-7/wmake/makefiles/general:142: /home/dyfluid/OpenFOAM/OpenFOAM-7/platforms/linux64GccDPInt32Opt/bin/waveProp] Error 1

    对应文件bodyForce.H中定义体积力的部分:

    // Define the (cylindrical) region for the body force from dictionary values const scalar yProp (readScalar(bodyForceDict.lookup("yProp"))); const scalar zProp (readScalar(bodyForceDict.lookup("zProp"))); const scalar xPropmin (readScalar(bodyForceDict.lookup("xPropmin"))); const scalar xPropmax (readScalar(bodyForceDict.lookup("xPropmax"))); const scalar tipRadius (readScalar(bodyForceDict.lookup("tipRadius"))); const scalar hubRadius (readScalar(bodyForceDict.lookup("hubRadius"))); Foam::functionObjects::forces F ( "forces", mesh, dragForceDict ); F.calcForcesMoment();//这里未定义引用,该如何修改? vector force =F.forceEff();//这里未定义引用,该如何修改? scalar drag = force.x();//这里未定义,该如何修改? Info << "Thrust = " << drag << endl; scalar thrust = 1.1*drag; //Considering 10% more
  • 除了并行计算,还有什么能够提高运算效率。

    14
    14 帖子
    9k 浏览

    @hurricane007 好的,刚刚才开始学习用户指南,有不懂的就问大佬们了,可能有些问题在大佬们看来有点简单,但就是有些问题指南里没提到怎么解决,我就问您了。