xjwang
帖子
-
OpenFOAM libtorch tutorial step by step -
运行pisoFoam的时候,卡住不动了@bestucan 感谢您的回复,抱歉之前不知道为什么没看到。好几年过去了,今天刚看到这个之前问的问题,我那个卡住的原因是:(拿好笔记本记好了,这个问题值100万)我刚开始不会用openfoam,然后硬盘满了,所以算不下去了。
-
reconstructPar合并问题 -
reconstructPar合并问题@dxl 注意你用的是reconstructParMesh 还是reconstructPar.
比如,你可能用60核来用snappyHexMesh画网格:decomposePar mpirun -np 60 snappyHexMesh -overwrite -parallel
下一步可以用
reconstructParMesh -constant
来合并成最终的网格,下一步需要做模拟的时候,你可能用300核做并行计算
decomposePar mpirun -np 300 pisoFoam -parallel
最终你想把某几个时间步的结果画出来,所以你需要合并一下
reconstructPar -time xxx
-
OpenFOAM怎么保存指定不等间距时刻的结果@coolhhh 也许DSRFG方法是说用的能谱,但最终还是用的von karman的频谱,就像你说的:
@coolhhh 在 OpenFOAM怎么保存指定不等间距时刻的结果 中说:
用频谱叠加来表示三维能谱
关于CDRFG方法,他们的code里是对每一个点都生成一组PQK,所以我才说有点鸡肋。
@coolhhh 在 OpenFOAM怎么保存指定不等间距时刻的结果 中说:CDRFG考虑的是频谱,确实没必要类似kraichnan生成球面分布的。非均匀问题感觉是很难解决,不仅RFG系列,其他合成方法也都有类似问题。就如RFG文章所说,如果非均匀变化足够缓慢,近似满足零散度。但从模拟过的工况看,影响更大的是入口质量通量平衡,这决定了流场中是否会产生非物理压力脉动。
关于生成inhomogeneous的inflow,后来我想着试一下vector potential这种思路,貌似也行不通。
-
钝体建筑扰流的大涡模拟@coolhhh 我几天内发给你啊,这两天有点事,还需要整理一下!
-
钝体建筑扰流的大涡模拟@coolhhh 论文发表出了点问题,审了两年了,貌似杂志那边有点变动,然后还有些其他因素,你如果需要的话,我可以私发你一个pdf看看,但我只是用latex写道了我的dissertation里边了,也许需要一两天的时间整理成一个单独的pdf。
-
钝体建筑扰流的大涡模拟我这个模拟就是用的smagorinsky SGS model, 和前边某大佬说的一样,压力松弛是1.
-
钝体建筑扰流的大涡模拟TPU的实验数据是一个小尺度的模型(缩尺比比较大),所以应该是能得到不错的模拟结果的,你可以参考一下Patruno之前发表的文章,有两篇是关于TPU数据的。我做的是NIST数据库的,长度比1:100,速度比1:4,也是个小尺度的模拟,结果还算可以,peak suction pressure 有的地方不太一样。
-
OpenFOAM怎么保存指定不等间距时刻的结果@coolhhh 是,对于谱方法来说,类似于DSRFG方法,这个确实是比较难满足。还有个问题是inhomogeneous的问题,虽然那个CDRFG方法声称能产生inhomogeneous wind filed,但是感觉那个方法很鸡肋,完全没考虑divergence-free,所以他们根本就不需要用kraichnan那个方法。后来看到过Xuesong Bai一篇文章,考虑了inhomogeneous的问题,但是是一个沿三个方向同时变化的,对于做风工程,只有在竖向是变化的。再就是空间相关性的问题,后来我还试着对DSRFG做一些改进,但发现都是徒劳的。Kraichnan方法演变出来的一系列方法,最终看来因为方法过于简单,很难做出一些新的变化。我感觉DSRFG最适合用来做桥梁,因为桥梁高度不高,那一段风场可以看做homogeneous,类似于BARC的那些研究也很适合。
-
OpenFOAM怎么保存指定不等间距时刻的结果@coolhhh 第二条你说的满足NS方程,感觉现在大多数都是满足divergence-free, 不知道有没有同时满足momentum equation的?一个简化的满足momentum equation的方式是满足taylor frozen hypothesis. 之前看patruno有一篇文章说的是这个,大佬有没有其他的推荐?
-
LES定义入口速度的问题(DSRFG方法)@turbulen 没有见过你说的AR线性滤波, RFG 算是一种谐波合成法吧, RFG DSRFG 以及G.T. Bitsuamlak "A divergence-free inflow turbulence generator using spectral representation method for large-eddy simulation of ABL flows"这个方法,都应该算是一类的。做LES还有用Synthetic Eddy Method 和Digital Filter Method的,这两种方法在openfoam.com中有,如果你在用openfoam.org,可以去找一下这个网址:https://github.com/NHERI-SimCenter/TurbulenceInflowTool/tree/master/openFOAM_code/OpenFOAM6/turbulentInflow
-
OpenFOAM 并行计算renumberMesh 报错个人感觉,如果犯了一个不太常见的错误,在cfdonlie这种论坛也搜不到太多类似的帖子,很可能是犯了一些很基本的错误。就好像我一直去搜autoMap 和rmap这两个member function怎么用一样,发现讨论的人特别少,那很可能别人在这两个function都没犯过错误,也意味着,这两个function可能不会出错,虽然最终搞明白了这两个function的用法,但对解决问题完全没有任何帮助。
-
OpenFOAM 并行计算renumberMesh 报错问题解决了,原来是有个constructor写错了,本来这个错误可以避免的,用foamNewBC生成的模版就可以了,但是我的code是根据一个of v2112版本的code改的,我用的是openfoam v6,所以没注意,把一个constructor改了一下,导致出现了这个错误。
-
OpenFOAM 并行计算renumberMesh 报错最近写了一个inlet boundary condition的code, 并行计算的时候一直报错。具体问题是:
我在0文件下定义了:
inlet
{
type DSRFGVelocity;
M 600;
N 100;
uref 22.5091;
alpha 0.1538;
zref 1.3860;
inflowPar pkqomega;
value uniform (0 0 0);
}
如果单核计算没有问题,但是等到并行计算renumberMesh的时候 会报错。我是这么做的,当mesh都处理好以后:
decomposepar
mpirun -np xx renumberMesh -overwrite -parallel
mpirun -np xx pisoFoam -parallel.
报错信息是:
--> FOAM FATAL IO ERROR:[0] compound has already been transferred from token
on line 33 the empty compound of type List<vector>
[0]
[0] file: /ddnA/work/xuwang/DSRFGinflow/processor0/0/U.boundaryField.inlet.value at line 33.
[0]
[0] From function Foam::token::compound& Foam::token::transferCompoundToken(const Foam::Istream&)
[0] in file lnInclude/token.C at line 99.
[0]
FOAM parallel run aborting
然后打开processor0/0/U 文件后,那个inlet是这样的:
inlet
{ type DSRFGVelocity; M 600; N 100; zref 1.386; alpha 0.1538; uref 22.5091; inflowPar pkqomega; value nonuniform List<vector>
1372
(
(27.414161 3.7652743 -1.313935)
我能感觉到的就是,在0文件下U的value被定义成了uniform (0 0 0),但是程序一旦运算,就把inlet 上的速度值给重新计算了一次,导致变成了nonuniform。但是of6中自带的turbulentInlet算例,也是这样做的,不知道为什么我这里出了问题。我自己写的inflow的updateCoeffs()函数如下:
void Foam::DSRFGVelocityFvPatchVectorField::updateCoeffs(){
if (this->updated()) { return; } if (curTimeIndex_ != this->db().time().timeIndex())
{
scalar time = this->db().time().value(); vectorField Uavg(patch().size(),vector::zero); vectorField Uprim(patch().size(),vector::zero); vectorField Utotal(patch().size(),vector::zero);
xxxxxxx 省略中间一些繁琐的步骤
this->operator==(Utotal);curTimeIndex_ = this->db().time().timeIndex();
}
fixedValueFvPatchVectorField::updateCoeffs();
}
请各位高人指点!
-
vanDirest模型及边界条件设置问题@coolhhh 感谢回复!
-
vanDirest模型及边界条件设置问题@coolhhh 请问你这个vandriestCoeffs中的delta是怎么设置的?用的cubeRootVol吗?你在最开始贴的那个代码,应该是复制的Openfoam basic trainning那个文档中的设置吧:
@coolhhh 在 Smagorinsky模型及边界条件设置问题 中说:
vanDriestCoeffs
{
delta cubeRootVol;官方文档中这么是这样的:
@coolhhh 在 Smagorinsky模型及边界条件设置问题 中说:
vanDriestCoeffs
{
delta <geometricDelta>;搜了一下也没找到具体的例子,希望不吝赐教!
如果用van driest的话,是不是nut在你的building表面是不是可以写成fixedvalue 0?还是只能在网格比较精细的时候才能使用fixedvalue 0? -
介绍一种新的大气边界层入口生成方法DFSR@vortex
感谢分享! -
LES定义入口速度的问题(DSRFG方法)@sunss
感谢分享,前年看到他们那个工具包的时候还很简单,最近看了看已经变得很完整了,还有一些算例。你也是做风场模拟的吗? -
LES定义入口速度的问题(DSRFG方法)@霜染丹枫
我做的风场模拟,所以我检察风洞模拟是否正确是通过检察计算域内的风速时程的功率谱是否和目标谱一致,也就是是否和在入口处生成的风速满足同样的能量分布。
不知道你们槽流最关心的是哪一个数值特征。比如,你可以验证turbulence intensity也可以验证power spectra,但不能通过一个瞬态的流场来判断模拟的好坏。一直不清楚你通过离散能量谱得到的脉动速度为什么要通过观察瞬时速度场来判断模拟的好坏,就算有很强的紊流特性也不能保证这个速度场的能量分布就和你目标谱一样。
上文中@sunss 同学说的那个tinf,你可以看一下,其中有dfsem, dfm等方法,特别是对于槽流,openfoam的tutorial中有一个RE395的算例(也许把名字记错了),应用的是DFSEM方法。
如@sunss 同学所说,也许高斯谱更适合你的功率谱,这样的话你可以直接应用fluent自带的那个对应RFG(Smirnov et al,2001)的生成方法,具体名字不记得了,你可以自己去查一下。
在其他回复中我提到过,DSRFG方法虽然理论上来说是无散度的,但如果应用在数值模拟中,就不是严格的无散度了,需要考虑网格尺寸,所以我一开始就问你网格尺寸和紊流积分尺度的数值。我们完成了一篇这样的论文,希望早点可以和你们分享。