@李东岳 谢谢李老师挂念,两次修改后前几天在情人节Accept了
Tens
帖子
-
-
@zhoushan 简单的几何可以用blockMesh直接生成网格,复杂的就要绘制stl文件,用blockMesh搭配snappyHexMesh生成
-
可以采用snappyHexMesh生成网格,可以采用dynamicMeshDict实现自适应加密
-
@kcol 相当于volScalarField,但是只定义内部网格,在边界网格上没有定义
-
楼上说的应该是对的,只需要内部场的话可以用volScalarField::Internal来定义
-
如果是拖拽的方式从虚拟机和主机导入和导出文件,那么会有相应大小缓存文件,在虚拟机的~/.cache/vmware/drag_and_drop文件夹内,可以定期清理这个文件夹
-
@Jasper-0 杨氏模量应该是和材料相关的吧
-
@李东岳 李老师真是太宠粉丝了,爱了
-
@李东岳
虽然相体积分数是一个标量,但是是根据液相的质量守恒推导出来的
对于可压缩流动,最多在加上右边这一项吧 -
气液两相流,RANS
-
@李东岳 4atm 555K的横向射流
-
@李东岳 李老师有时间帮忙解惑吗
-
基本的相体积分数方程为
考虑界面压缩的方程为
最近投一篇文章,用的RANS模型算VOF两相流,审稿人的问题把我难到了。
原话为:I encourage the authors to add all turbulent contributions: for the liquid volume fraction, as it is a scalar, it is possible to add an eddy-diffusivity model to the volume fraction equation(which will certainly remove any need for an artificial compression model required in DNS)
大概是说相体积分数方程是一个标量方程,而我没有考虑湍流模型带来的影响,需要加一个湍流耗散项?我觉得,VOF的本意不是为了得到一个薄而精细的界面,而耗散项不是会把界面变得更模糊吗
求教各位,VOF方法需要添加湍流耗散项吗?如果需要的话,OF里是怎么处理的(我看代码好像没找到这一部分内容),如果不需要,我该怎么委婉的回答审稿人的问题?
-
输入法打错字了...边界层网格
-
网格质量好不代表没问题,边界场网格也要考虑到
-
网格呢?边界场如何
-
试试decomposePar -constant
-
又找到原因了,不是BUG,reconstructParMesh -constant只是重组了基本的网格文件,在这之后还要运行reconstructPar -constant才有加密信息等文件
-
@李东岳 用的v2212的
-
找到原因了,我是并行运行snappyHexMesh生成网格的,在执行reconstructParMesh后,网格文件并没有cellLevel等网格加密信息,而单核运行snappyHexMesh则有
-
不知道是不是版本问题,我就是用的blockMesh生成均匀网格,然后snappyHexMesh加密的,但是在AMR时还是会在这个基础上再加密,我再研究一下
-
@ir77 多谢!我看看
-
在生成网格时,较小尺寸的部分已经加密过了,再加密会导致Co特别小影响计算速度,而后方又需要自适应加密,请问这种情况怎么解决?
如图中,A区域不需要加密,B区域需要加密
-
@李东岳 还是受到李老师的启发想到这种操作
@李东岳 在 reconstructPar 一边组一边删除数据 中说:
最近在算几个LES,我勒个去数据太大了。大算例一般算完了只有几百个G,比如500G,reconstructPar重组的时候并不会删processor的数据,这将导致占据双倍的硬盘,直接干到1T。利用下面这个命令,可以重组一个时间步,删除一个时间步,对于硬盘吃紧的时候非常有用:
#!/bin/bash for i in $(foamListTimes -case processor0); do reconstructPar -time ${i} && rm -r processo*/${i} done
Pretty Simple
-
@vbcwl 可以写一个bash脚本,定期清理流场数据。我粗略写了一个,因为lagrangian场数据在文件夹内,rm可以在不删掉文件夹的同时删掉流场数据。
#!/bin/bash while ((1)); do for i in $(foamListTimes -noZero); do rm ${i}/* done sleep 1m done
-
@李东岳 是一个大文件,不过这样又不好对数据后处理。OF这面如果不需要decomposePar成processor和reconstructPar,并行和单核一样计算就挺好的
-
感觉OpenFOAM的并行计算真的不太友好,decomposePar和reconstructPar速度慢是一方面,并行还会成倍的增加文件数量,经常因为小文件过多被管理员警告
-
MutiComponentPhaseModel.C中有部分用phir对通量进行了修正,我记得alphaEqn中也有这部分,建议看看这项是不是关键
-
@dxl Extract Block 提取出想显示的面就可以了
-
@dxl 在paraview里打开Ensight文件夹中的case文件
-
@lrl3512 太复杂了,后面没再弄了
-
@四季之中的隐星 不太了解multiphaseEulerFoam这个求解器,但是在compressibleInterFoam中,膨胀体积在相体积分数方程中好像是通过源项dgdt,然后MULES修正来处理的。
参考CompressibleInterFoam解析
我看phaseSystemSolve.C文件中好像也这样进行处理了 -
@xpqiu 好像是这样的,但是xxxx是对颗粒的某个值进行统计,类似于求D32。xxxx应该是不同核内取值不一样的数,如果这样的话,那么每个核内是计算自身负责区域内的颗粒,redece则是求和,应该是没问题的
下面是of内求D32的代码:template<class CloudType> inline Foam::scalar Foam::KinematicCloud<CloudType>::Dij ( const label i, const label j ) const { scalar si = 0.0; scalar sj = 0.0; forAllConstIter(typename KinematicCloud<CloudType>, *this, iter) { const parcelType& p = iter(); si += p.nParticle()*pow(p.d(), i); sj += p.nParticle()*pow(p.d(), j); } reduce(si, sumOp<scalar>()); reduce(sj, sumOp<scalar>()); sj = max(sj, vSmall); return si/sj; }
我的代码是仿照写的,不过我要统计的是20个变量,所以直接定义List:
List<scalar> np(20,0.0); for (label i=0;i<20;i++) { forAllIter(typename basicSprayCloud::sprayCloudType,parcels,pIter) { parceltype& p = pIter(); if (p满足条件) { np[i] += xxxx; //每个时间步累加 } } reduce(np[i], sumOp<scalar>()); }
-
@江山不如凉竹
position0是入射点的坐标,颗粒实时坐标在positions里,参考:
请问OF7中如何得到拉格朗日粒子轨迹;
拉格朗日一个bug -
分别为单核和6核计算结果,因为时间步非常小,所以单核的变化很小是合理的,6核变化太大了
这里弄错了,表格上的数据不是6核计算的结果,而是40核,忽然发现每一时间步的data都差不多是上一时间步的40倍,当改成6核运行时,又变成了6倍,是哪里的BUG造成的呢
-
分别为单核和6核计算结果,因为时间步非常小,所以单核的变化很小是合理的,6核变化太大了
-
我猜测并行运算就是将变量拆分成数组,比如定义一个变量n,4核运算,就会生成一个数组n[4],数组的每个元素就在每个核内运算,然后reduce就是把数组求和,那对于本身就是一个数组的np[20],在reduce时就会出现问题?
感觉把20个变量分别单独定义就能解决这个问题,但是这么多变量每个单独定义太麻烦了,有人有解决方法或者思路吗 -
我在程序中定义了一个20个数的数组,在单核运行时结果看着没问题,并行运算时,就出错了,有人知道reduce函数是怎么实现的吗
List<scalar> np(20,0.0); for (label i=0;i<20;i++) { np[i] += xxxx; //每个时间步累加 reduce(np[i], sumOp<scalar>()); }
-
@Rachel0096
找出可能出错的中间量,将这个量改为AUTO_WRITE,或者将这个量的初始值给的更合理一点 -
@Rachel0096
是自己改写的求解器吗,猜测可能是某个中间变量的问题。
从头开始算的话,全场都是初始场,这个变量的初始值计算没问题;而停止后续算,全场都是计算后的结果,只有这个中间变量初始化为初始值,初始值和计算中的值差别较大,可能就会发散。 -
@李东岳 我刚测试了下,看着好像是这样的
在sprayFoam里添加:Info<<"coordinate:"<<endl; forAllIter(typename basicSprayCloud::sprayCloudType,parcels,pIter) { Info<<pIter().position()<<endl; }
输出的结果就有
然后我看上面那个后处理程序好像也是这样调用的
if (os.format() == IOstream::ASCII) { forAllConstIter(typename CloudType, cloud_, iter) { os << iter().position() << " " << iter().cell() << nl; } }
-
@李东岳
这个就是把数据转化成Ensight格式,其他文件应该没有影响的,只不过其中恰好有个文件是存储颗粒笛卡尔坐标的,比如我用sprayCloud就是这样,有点取巧了
-
@Tens 或者用foamToEnsight -ascii转化格式,这样也能得到笛卡尔坐标系下的坐标
-
@疏影横斜水清浅 参考下面帖子
拉格朗日一个bug
可以用这个后处理程序改成笛卡尔坐标
https://github.com/blueCFD/lagrangianExtraFunctionObjects/tree/OF5x -
@vbcwl
codeStream应该可以
codeStream.pdf -
@流体中二少年 报错信息贴出来才好看
-
还有种方法,通过一个工具将OF中颗粒坐标转换成旧版本的格式,然后就能被paraview和tecplot等读取了
https://github.com/blueCFD/lagrangianExtraFunctionObjects -
Data-Create Zone-Rectangular提取出想截取的位置
但是提取出来的Zone没有数据,Data-Interpolate根据原数据对创建的Zone进行插值就可以
这样就得到一个名为Rectangular zone的Zone
-
tecplot应该可以吧?
先提取出来流线,然后对流线积分 -
@wangqi-0
印象中codedFixedValue好像可以
关于VOF模型中相体积分数方程的疑问。
如何解决interFoam两相流中 破碎微小液体 在计算域中的消失问题
如何解决interFoam两相流中 破碎微小液体 在计算域中的消失问题
scalarField和volScalarField
scalarField和volScalarField
虚拟机占用磁盘空间不断增大怎么破?
颗粒沉积为什么全都到了底面一个面上?
关于VOF模型中相体积分数方程的疑问。
关于VOF模型中相体积分数方程的疑问。
关于VOF模型中相体积分数方程的疑问。
关于VOF模型中相体积分数方程的疑问。
关于VOF模型中相体积分数方程的疑问。
关于VOF模型中相体积分数方程的疑问。
水槽的速度变化感觉有错误
水槽的速度变化感觉有错误
水槽的速度变化感觉有错误
非0时间文件开始并行计算的问题
dynamicRefineFvMesh如何加密特定区域(或者保护某块区域不加密)
dynamicRefineFvMesh如何加密特定区域(或者保护某块区域不加密)
dynamicRefineFvMesh如何加密特定区域(或者保护某块区域不加密)
dynamicRefineFvMesh如何加密特定区域(或者保护某块区域不加密)
dynamicRefineFvMesh如何加密特定区域(或者保护某块区域不加密)
dynamicRefineFvMesh如何加密特定区域(或者保护某块区域不加密)
如何单独保存粒子数据
如何单独保存粒子数据
OpenFOAM在并行运算结束后 能否并行reconstructPar?或者有没有其他方法能够加快reconstructPar?
OpenFOAM在并行运算结束后 能否并行reconstructPar?或者有没有其他方法能够加快reconstructPar?
关于在compressibleInterFoam中添加组分方程
请问OF7中如何得到拉格朗日粒子轨迹
请问OF7中如何得到拉格朗日粒子轨迹
VOF方法给气相添加组分方程,液相部分存在组分,怎么解决
关于OpenFOAM中,多相流守恒性与鲁棒性的讨论
关于并行中的reduce函数
如何获取sprayFoam计算结果中颗粒位置信息
关于并行中的reduce函数
关于并行中的reduce函数
关于并行中的reduce函数
关于并行中的reduce函数
超算续算报错
超算续算报错
请问OF7中如何得到拉格朗日粒子轨迹
请问OF7中如何得到拉格朗日粒子轨迹
请问OF7中如何得到拉格朗日粒子轨迹
请问OF7中如何得到拉格朗日粒子轨迹
如何给初始场赋值
移植sprayFoam液相功能
OpenFoam后处理读取颗粒错误
tecplot后处理
CFD计算流线的长度
OpenFoam中是否可以使用一个时间函数作为边界?