Skip to content

OpenFOAM

OpenFOAM交流区

4.5k 主题 26.5k 帖子
  • 用icoFoam求解器过程中库朗数变大问题

    3
    3 帖子
    949 浏览
    W

    @李东岳 好的 谢谢李老师

  • 3 帖子
    747 浏览
    X

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

  • pressureReference

    6
    6 帖子
    1k 浏览
    W

    @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 帖子
    3k 浏览

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

  • const的使用

    4
    4 帖子
    978 浏览

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

  • 删除命令?

    3
    3 帖子
    592 浏览
    T

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

  • 关于reconstructpar重构问题

    3
    3 帖子
    865 浏览
    F

    @李东岳 谢谢老师:146:

  • 关于openfoam2.3.0安装waves2foam的问题

    4
    4 帖子
    833 浏览
    李东岳

    @xdzzzz :146:

  • 3 帖子
    893 浏览
    华鸟

    @李东岳 感谢李老师的解答!老师,我用的也是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;

    感谢李老师指导!

  • mapped边界条件如何实现cyclic边界条件

    1
    1 帖子
    404 浏览
    Z

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

  • ..token, expected <int> or '(', found on line 0: word 'Z'

    1
    1 帖子
    286 浏览
    Z

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

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

  • 计算钝体涡激振动时发散(pimpleDyMFoam)

    21
    21 帖子
    4k 浏览
    W

    @cresendo 在 计算钝体涡激振动时发散(pimpleDyMFoam) 中说:

    songtao.chen@sjtu.edu.cn

    谢谢!非常感谢您的建议!

  • 污染物浓度扩散的边界条件设定?

    3
    3 帖子
    936 浏览
    Z

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

  • 10 帖子
    2k 浏览
    strive_DUTS

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

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

    15
    15 帖子
    3k 浏览
    C

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

  • paraview如何将气泡信息映射到壁面

    1
    1 帖子
    391 浏览

    各位前辈好!

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

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

    图1:
    1111111111.png

    图2:

    2222222.png

    图3:
    3333333.png

  • 5 帖子
    964 浏览
    Z

    @李东岳

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

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

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

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

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

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

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

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

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

    麻烦李老师了~

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

    11
    11 帖子
    5k 浏览
    Z

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

  • 如何将OpenFOAM结果文件整体导入matlab做后处理

    4
    4 帖子
    1k 浏览

    十分感谢两位大佬:140:

  • 1 帖子
    428 浏览
    R

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