OpenFOAM怎么保存指定不等间距时刻的结果
-
Class Foam::functionObjects::setWriteIntervalFunctionObject Description Updates the writeInterval as a Function1 of time. Examples of function object specification: \verbatim setWriteInterval { type setWriteInterval; libs ("libutilityFunctionObjects.so"); writeInterval table ( (0 0.005) (0.1 0.005) (0.1001 0.01) (0.2 0.01) (0.2001 0.02) ); } \endverbatim will cause results to be written every 0.005s between 0 and 0.1s, every 0.01s between 0.1 and 0.2s and every 0.02s thereafter.
你试试这个
-
@李东岳
谢谢李老师,测试了下,这个函数在of9之后才有,在of.com版本也没有。
用OpenFOAM-9/tutorials/incompressible/pisoFoam/LES/pitzDaily
进行测试。用了setWriteInterval
,此时writeInterval 0.01;
就失效,但要保留关键字。还有按照of说明,比如设定0.0001s~0.001s
按照0.001s
间隔保存数据,保存的数据不是0.0001+0.001s=0.0011s
,而是以0
时刻作为开始起点,按照落在区间0.0001s~0.001s
的0.001s整数倍时刻
保存。application pisoFoam; startFrom latestTime; startTime 0; stopAt endTime; endTime 0.1; deltaT 1e-05; writeControl runTime; writeInterval 0.01; purgeWrite 0; functions { setWriteInterval { type setWriteInterval; libs ("libutilityFunctionObjects.so"); writeInterval table ( //保存的时刻:0.0001 0.001 0.02 0.025 (0 0.0001) (0.0001 0.0001) (0.00011 0.001) (0.001 0.001) (0.00101 0.02) (0.02 0.02) (0.02001 0.025) ); } }
测试代码对应生成的文件:
-
@李东岳
李老师,我们主要做的风工程领域,是不可压缩领域。风工程模拟建筑绕流,要求达到建筑物位置的湍流风场特性与风洞试验一致,才能得到精度较高的复现结果。生成湍流方法主要分为:预前模拟法和人工合成法。1. 预前模拟法
分为①复现风洞试验法;②回收法。这两种方法主要计算成本高,根据不同目标值需要重新调试生成风场。这两种方法生成的风场,就是您说的可以map到进口情况。
2. 人工合成法
人工合成法的优势就是计算快,且能根据目标湍流特性直接调整。但存在主要问题是:①不满足充分发展状态下的NS方程解,导致发展过程会重构,进而导致发展到建筑物为止的湍流特性发生变化;②与计算域边界条件的相容。③数值格式精度和湍流模型耗散。所以,
(1)首先保证进口风场满足目标湍流特性,是最基本的要求,才能进一步谈能否自保持。
(2) 接着尽可能让生成风场同时能够满足(至少近似)与充分发展状态下的NS方程解一致,则湍流的自保持性能较好,可参考Patruno发表在CMAME的论文。这篇文章主要解决加载入口脉动风产生非物理压力脉动问题,其实就是让生成风场尽可能满足充分发展状态,因为充分发展状态下的流场的压力脉动就基本接近于0。
(3)影响自保持是多因素耦合。目前多大气边界层模拟,个人觉得影响比较大的是数值格式和湍流模型,在有限体积法框架下很难实现高阶精度,因此发展过程中湍流强度仍然会不可避免的衰减。
(4)低雷诺数的经典槽道流,其实可以能更好的用来验证生成方法的有效性,因为此时的数值格式和湍流模型影响都比较小。 -
@李东岳 这个领域研究的文章其实非常多,方法也非常多,可以看综述:Wu X. Inflow turbulence generation methods[J]. Annual Review of Fluid Mechanics, 2017, 49: 23-49.。
对于入口的研究难点是同时兼顾第①和②个问题,例如有些方法对①生成的风场修正满足②的要求,但此时也会对初始的湍流特性调整。第③点不是入口生成方法问题,但第③点对风场的结果影响也是非常大。每种方法的研究出发点不同,能满足的湍流特性指标有多有少,究竟实现怎么样的湍流特性才是真实的风场,也没有很明确。因此简单认为能满足越多湍流特性指标就认为越接近真实风场。
但是目前各种方法模拟结果基本一致:风速谱高频衰减,湍流强度衰减。 从模拟过的建筑看,目前方法计算的脉动风压与实验值值相差能控制在20%以内,这个误差觉得更多还是高频衰减引起的,当然入口的风场也有影响,但影响比例多少还不确定。人工合成法的优势就是计算快,且能根据目标湍流特性直接调整。但存在主要问题是:①不满足充分发展状态下的NS方程解,导致发展过程会重构,进而导致发展到建筑物为止的湍流特性发生变化;②与计算域边界条件的相容。③数值格式精度和湍流模型耗散。
-
@coolhhh 是,对于谱方法来说,类似于DSRFG方法,这个确实是比较难满足。还有个问题是inhomogeneous的问题,虽然那个CDRFG方法声称能产生inhomogeneous wind filed,但是感觉那个方法很鸡肋,完全没考虑divergence-free,所以他们根本就不需要用kraichnan那个方法。后来看到过Xuesong Bai一篇文章,考虑了inhomogeneous的问题,但是是一个沿三个方向同时变化的,对于做风工程,只有在竖向是变化的。再就是空间相关性的问题,后来我还试着对DSRFG做一些改进,但发现都是徒劳的。Kraichnan方法演变出来的一系列方法,最终看来因为方法过于简单,很难做出一些新的变化。我感觉DSRFG最适合用来做桥梁,因为桥梁高度不高,那一段风场可以看做homogeneous,类似于BARC的那些研究也很适合。
-
@xjwang
RFG-based
方法,关键要区分三维能谱
(有的文章英文表示为:shell-summed energy spectrum
或者radial energy spectrum
)和频率功率谱密度
(英文为:frequency power spectral density
或者简称time spectra
)。
现有主要RFG-based
方法分类:
(1)能谱:Kaichnan(1970),RFG(2001),DSRFG(2010),MDSRFG(2013)
(2)频谱:CDRFG(2015),NSRFG(2018)
能谱的积分等于湍动能,而3个脉动分量的频谱的积分和等于2倍的湍动能。 DSRFG方法的$P$系数代入的为能谱$E(k)$,CDRFG方法的$P$系数代入的为频谱$S(f)$,所以CDRFG方法的$P$系数相对DSRFG需要减半,但原论文并没阐述为何要减半,且CDRFG正文中的$P$系数有个笔误,应该按照附录程序修改。这篇文章也对CDRFG的系数进行了更正:《Melaku, A., et al., Synthetic inflow turbulence generation methods for LES study of tall building aerodynamics. 2017.》
CDRFG考虑的是频谱,确实没必要类似kraichnan生成球面分布的$K$。非均匀问题感觉是很难解决,不仅RFG系列,其他合成方法也都有类似问题。就如RFG文章所说,如果非均匀变化足够缓慢,近似满足零散度。但从模拟过的工况看,影响更大的是入口质量通量平衡,这决定了流场中是否会产生非物理压力脉动。
还有个问题是inhomogeneous的问题,虽然那个CDRFG方法声称能产生inhomogeneous wind filed,但是感觉那个方法很鸡肋,完全没考虑divergence-free,所以他们根本就不需要用kraichnan那个方法。
DSRFG方法是比较合适模拟均匀湍流工况。但有个问题是,三维能谱难以测得,特别是非均匀情况,现有文章都用频谱叠加来表示三维能谱,这严格上说是错误的。应该使用von Karman提出的均匀各向同性湍流的三维能谱表达式,而不是三个频谱叠加形式。表达式可见《Durbin, P.A. and B.A. Pettersson Reif, Statistical theory and modeling for turbulent flows. 2011: Wiley. 29-261.》
-
@coolhhh 也许DSRFG方法是说用的能谱,但最终还是用的von karman的频谱,就像你说的:
@coolhhh 在 OpenFOAM怎么保存指定不等间距时刻的结果 中说:
用频谱叠加来表示三维能谱
关于CDRFG方法,他们的code里是对每一个点都生成一组PQK,所以我才说有点鸡肋。
@coolhhh 在 OpenFOAM怎么保存指定不等间距时刻的结果 中说:CDRFG考虑的是频谱,确实没必要类似kraichnan生成球面分布的。非均匀问题感觉是很难解决,不仅RFG系列,其他合成方法也都有类似问题。就如RFG文章所说,如果非均匀变化足够缓慢,近似满足零散度。但从模拟过的工况看,影响更大的是入口质量通量平衡,这决定了流场中是否会产生非物理压力脉动。
关于生成inhomogeneous的inflow,后来我想着试一下vector potential这种思路,貌似也行不通。
-
CFDRFG的附录code还有个问题,求解$K$,不是按照论文中的原理计算的。他先用$PQ$没有代入$S(f)$的值,算了一组$K$,然后所有坐标点都用了同一组$K$。而根据理论,应该是要根据每个坐标点的非均匀$PQ$,求对应该点的$K$。DSRFG如果生成非均匀,理论上也要这么计算。
关于CDRFG方法,他们的code里是对每一个点都生成一组PQK
最近看到一篇JFM文章《Guo, H., et al., An efficient and low-divergence method for generating inhomogeneous and anisotropic turbulence with arbitrary spectra. Journal of Fluid Mechanics, 2023. 970: p. A2.》,用的就是三维能谱,不是频谱,生成非均匀湍流场也是low-divergence。