Skip to content

OpenFOAM

OpenFOAM交流区

5.3k 主题 31.1k 帖子
  • 虚拟机双版本OpenFOAM怎么切换使用

    3
    3 帖子
    2k 浏览
    U

    @李东岳谢谢东岳老师,已经搞定了在求解器窗口输入 of2106 就切换回V2106版本了:high:

  • 后处理输出Qdot

    2
    2 帖子
    2k 浏览
    C

    @adcpk 您好,请问这个问题后面解决了嘛,请教一下

  • 15 帖子
    9k 浏览
    I

    大家好,我来更新这个问题的相关进展。最近两天我查了些资料,基本上解决了这个问题,感谢大家的帮助,尤其是bestucan大佬。
    参考帖子关于相邻cell我写了个遍历进行暴力求解。
    (1)代码思路:对所有网格做遍历,找到气液界面网格,针对每一个气液界面网格都对所有网格再做一次遍历,计算两网格之间的距离,对满足距离要求的网格在markRegionNearInterface这个场上+1。最后,可以利用markRegionNearInterface>=1来筛选出所有满足条件的网格。
    (2)这段代码计算起来实在是费时间,因为我的需求(见贴名)不需要每一个时间步都运行这段代码,所以我在代码最外层套了一个时间步判断,可以实现多个时间步运行一次该代码。
    (3)我从其他地方抄了点代码写了两个接口,分别从transportProperties读取 加密时间步间隔 和 加密范围,其中加密范围是依据气泡半径写的无量纲范围,所以需要配合前面代码(未在本段代码中给出)求出的气泡半径radius.value()定义标记区域。

    代码如下

    //read timestep interval required for the following code, as the following code is very time consuming so I needn't it run for every timestep. const label calculateTimestepInterval = transportProperties.get<label>("calculateTimestepInterval"); //read information from transportProperties so that we can modify the size of marked region easily. scalar markRegionNearInterfaceSize = transportProperties.get<scalar>("markRegionNearInterfaceSize"); if (mesh.time().timeIndex() % calculateTimestepInterval == 0)//judge whether the timestep satisfy the timestep interval criterion. { markRegionNearInterface.field()=0;//reset the field to be zero first. Of course such field is claimed in createFields.H first. forAll(mesh.C(), i)//Cycle all meshes { if (alpha1[i]>0.0001&&alpha1[i]<0.9999)//judge whether the cell contains gas-liquid interface { vector centerOfSurfacePoint = mesh.C()[i];//store center information of such a interface cell forAll(mesh.C(), cellI)//Cycle all meshes again { scalar offset = mag(centerOfSurfacePoint - mesh.C()[cellI]);//distance between any cells and the interface cell if (offset <= markRegionNearInterfaceSize*radius.value())//judge the criterion, note the radius is calculated before with code which is not shown here { markRegionNearInterface.field()[cellI] += 1;//any cells which meet the criterion will be marked with value>0 } } } } }

    运行结果如下
    10652d23-2e1a-470d-a7ef-a8637883685a-image.png

    BTW
    (1) 因为我是个beginner,代码是东抄抄西抄抄弄出来的,上述代码可能有些冗余,如果大佬们有时间,想麻烦大佬们帮我看看我这些代码能从哪些角度优化优化。代码中的变量类型scalar vector label之类都是我一次次试错试出来的,也不知道这些变量类型用的合理不合理。
    (2)我在代码中写了两个链接到transportProperties的接口读取 加密时间步间隔 和 加密范围,测试中发现程序只会在刚开始运行时读取这些常量。请问各位大佬,有没有什么办法能否让程序运行中也能读取这些常量呢?因为假设运行过程中我想改动这两个常量,目前只能把计算停下来改了后重新继续算,不能边算边改。

  • 模型尺寸与计算域尺寸之间的关系

    5
    5 帖子
    3k 浏览
    疏影横斜水清浅

    @田畔的风 好的,谢谢

  • 3 帖子
    2k 浏览

    @李东岳 谢谢李老师!:xiezuoye:

  • 颗粒液固两相流的界面怎么确定呢?

    2
    2 帖子
    1k 浏览
    李东岳

    那个有alpha场,可以用来定义界面。类似interFoam

  • 网格如何划分问题

    6
    6 帖子
    4k 浏览
    疏影横斜水清浅

    老师,我刚刚使用pimpleFoam算了,没有问题,加入拉格朗日颗粒场(使用pimple算法改的)导致的发散

  • InterFoam设置壁面Wall上不同的润湿性

    7
    7 帖子
    4k 浏览
    D

    @wsxfyy 谢谢,我试一下

  • 求解颗粒沉降的方法选择问题

    6
    6 帖子
    4k 浏览

    @hurricane007 好的,非常感谢

  • 7 帖子
    4k 浏览
    chengan.wangC

    @星星星星晴 感觉nSector不能设为1,最后输出的sum(total mass),sum(average mass flow rate)是nSector>1的4倍左右。

    if (nSector_ > 1) { refDir = this->coeffDict().lookup("refDir"); refDir -= normal_[0]*(normal_[0] & refDir); refDir /= mag(refDir); } else { // set 4 quadrants for single sector cases nS = 4; vector tangent = vector::zero; scalar magTangent = 0.0; Random rnd(1234); while (magTangent < SMALL) { vector v = rnd.vector01(); tangent = v - (v & normal_[0])*normal_[0]; magTangent = mag(tangent); } refDir = tangent/magTangent; }

    可能跟源代码中nS = 4;有关系

  • 1 帖子
    933 浏览
    thegameT

    00d4f1b7-3cbe-4541-8fc1-e899bf8ec13a-image.png
    代码路径:
    channelIndex.H
    channelIndexTemplates.C

    想请教各位,他在channelIndex.H这里传的是const bool asymmetric = false,但是在模板实现channelIndexTemplates.C中又是const bool asymmetric。那么在初始化的时候,到底是用的哪个呢?

  • 变化的probes点的位置

    1
    1 帖子
    935 浏览

    想提取一下运动物体后面的速度,也就是探测点的位置也是随时间变化的,有没有大佬知道怎么做

  • 请问一下如何使用硬球模型

    1
    1 帖子
    769 浏览
    vbcwlV

    请教一下研究过粒子的前辈,在openFoam里如何调用硬球模型?跟parcelTypeId有关么?自带的算例没找到相关的

  • 如何输出某一个面上所有网格节点的坐标

    3
    3 帖子
    2k 浏览
    李东岳

    有些网格面还不一定有网格点的定义 :chitang:

  • 如何获得流域中等值面的最小流向坐标?

    4
    4 帖子
    3k 浏览
    I

    @香柏树 好的,多谢楼主分享

  • 2 帖子
    2k 浏览
    李东岳

    https://www.cfd-china.com/topic/2808 你可以去这里问问,我对这个turbulentDFSEMInlet还不太熟悉,那个帖子大佬很多

  • OpenFOAM inconsistent三维几何结构map方法?

    1
    1 帖子
    986 浏览
    香柏树

    目前计算一个喷雾燃烧场时,想改变下燃油喷射位置,因此把几何模型的喷嘴结构(5mm圆孔)向上游移动了10mm, map前在system文件夹下创建了mapFieldsDict文件,具体信息如图1所示;然后在对应时刻文件夹下建立了和原始计算场相同时刻的文件(共125个)。在map时使用了1)mapFields /OF6/P25;2)mapFields /OF6/P25 -sourceTime 0.116555 -mapMethod mapNearest -targetRegion region0两种方式均出现phi未能成功map,同时PaSR_kappa和PaSR_Qdot,sprayCloud类文件除了sprayCloudTheta文件,其余均未能map过来,如图2所示。另外在现有map结果基础上试算了下,log和err文件如图3所示,在读取化学反应机理时浮点溢出了,尝试了foamChemistryReader和new format均未能解决。请问这俩问题大家有什么方法解决么?万分感谢!
    771f0b91-f3ee-41db-83b0-01decf0d55ac-图片.png
    f30a09d4-20a4-45cc-9750-171e698d5778-图片.png

  • openfoam后处理按照网格信息提取数据

    16
    16 帖子
    12k 浏览
    thegameT

    @fangyuanaza 我也遇到这个问题了,貌似是工具里面判定网格中心点距离的问题,太小的网格就提取不到值

  • 5 帖子
    4k 浏览
    yunoY

    你把斜坡做成STL,用snappyHexMesh抠,应该就行了

  • 并行运算报错:attempt to run parallel on 1 processor

    9
    9 帖子
    6k 浏览
    李东岳

    @myheart 懂的懂的。我这面也经常是,一个bug卡好几天,有个都是几个月,还有按年算的。。。就比如你这个回帖,3行搞定一个问题,其实背后肯定debug好久。辛苦辛苦。