@Gordonaero 不好意思,我之前的表达可能并不准确,这个方法的可压缩性并不是通过相变体现,而是通过一种基于经验的粘度修正来体现的。我用的这种方法确实本身是不可压缩,但是你问的这个方法流体力学上叫什么我很难给出名字,应该算是一系列方法的组合。它是认为气液两相之间无滑移,认为混合物的密度、粘性可以由两相质量加权平均得到,气液界面采用VOF方法捕捉,相变的计算是采用基于传质的空化模型(Schnerr-Sauer model, Zwart model等等,大多基于Rayleigh-Plesset方程)关于传热这块我不太懂哈,不过这种方法缺陷就是在压缩性方面,处理得比较粗糙~不知道对你算传热会不会很有影响
相关文献你可以看看这个
Roohi E, Zahiri A P, Passandideh-Fard M. Numerical simulation of cavitation around a two-dimensional hydrofoil using VOF method and LES turbulence model[J]. Applied Mathematical Modelling, 2013, 37(9): 6469-6488.
然后下面这篇是低温空化的,涉及到热效应,可以参考下~
Zhang S, Li X, Hu B, et al. Numerical investigation of attached cavitating flow in thermo-sensitive fluid with special emphasis on thermal effect and shedding dynamics[J]. International Journal of Hydrogen Energy, 2019, 44(5): 3170-3184.
lllwonderliquid
帖子
-
压力修正算法不可避免地导致负压? -
压力修正算法不可避免地导致负压?@东岳 好的,谢谢东岳前辈~
-
压力修正算法不可避免地导致负压?@东岳 东岳前辈,我模拟的时候有非常少量的网格出现负压,但是负得不多。我觉得是空化模型本身的原因,在当地压力小于饱和蒸气压时,空化模型激活,当地液体会大量蒸发,直至压力达到饱和蒸气压,因此,对负压起一个抑制作用,这其实也符合空化本身的物理。OpenFOAM对这方面已经有限制了? 通过什么手段limit的?是在离散格式那块强制限制的吗?求前辈指教~我再翻翻代码 我做的模拟本质上确实为不可压缩,流体的压缩性是通过气相与液相的相互传质体现的,对于独立的两相而言,不考虑压缩性。这是常温非热敏流体空化流模拟中的一种常见手段,是一种简化,模拟效果和实验有较好一致性。
-
压力修正算法不可避免地导致负压?@yfclark 是的,我在模拟里的做法是对计算域的出口边界指定绝对压力,从而全场的压力可以由出口边界的绝对压力计算得出 我拿非常高的绝压只是想举个例子,想说明算出负压应该不是压力修正算法本身的锅?
-
interPhaseChangeFoam能否求解出空泡溃灭时的压力波interPhaseChangeFoam对于空化shock wave无能为力,因为其实际上是个不可压缩求解器。空化中的shock wave实际上和水汽混合相声速的降低相关,水汽混合相声速可以低至几米每秒,导致很可能就超过,从而shock wave可以产生。。
关于空化shock wave的实验研究,推荐 Ganesh H, Mäkiharju S A, Ceccio S L. Bubbly shock propagation as a mechanism for sheet-to-cloud transition of partial cavities[J]. Journal of Fluid Mechanics, 2016, 802: 37-78.
关于其数值模拟,18年慕尼黑工大的这篇论文很好。。B. Budich, S.J. Schmidt, N.A. Adams, Numerical simulation and analysis of condensation shocks in cavitating flow, J. Fluid Mech., 838 (2018) 759-813.
感觉现在大家做空化模拟开始在逐渐转型 -
压力修正算法不可避免地导致负压?大家新年好 最近在回一篇空化数值模拟论文的审稿意见,有一个审稿意见让我十分困惑,关于压力修正算法的,还请各位大神不吝赐教。。
该意见如下:
Is a pressure-correction algorithm used? This methodology will inevitably result to negative pressures. Have the authors experienced such issues? what values have been produced by the CFD code and how do they overcome this?
困惑在于加粗的那句话 "This methodology will inevitably result to negative pressures"。在我的理解中,压力修正算法多用于不可压缩流动的求解,包括我做的工作也是不可压缩流动,按道理该算法中应该只涉及相对压力及压力梯度呀?为什么会有 inevitably result to negative pressures?对于一个不可压缩流动,如果把流场整体的压力调到非常高,流场中就应该不会出现负压呀?还是说我对 negative pressure的概念理解有误?查阅文献也并没有找到相关的描述。。小弟不做算法这一块,在算法方面接触还较少,还请各位大侠前辈指点 -
openfoam新版本湍流模型编译@一颗鸭蛋 可以邮件交流~ lzhforward@whu.edu.cn
-
博士毕业那年我才发了第一篇SCI东岳前辈,私以为这样才是对的,作为一名研究生,看到了周边太多的短平快...... 做的东西有没有意义有没有价值不管,是否正确不管,创新性也不追求,只追求发文章...... 感觉科研在很多人心里开始变味
-
关于OpenFOAM中K-Omega SST模型使用壁面函数时的Y+问题@chaoscfd 你好,我后来的做法是将网格做到y+<1,然后不采用壁面函数,k方程壁面边界条件为kqRwallFuction, omega边界条件为omegaWallFuction, nut边界条件为nutkWallFunction,计算效果还不错。希望可以帮到你~
另外,我觉得将网格做到y+>30,然后指定壁面函数也是可以的 -
OPENFOAM中有些后处理工具是否只能在计算时运行,计算完毕后无法运行?@东岳 东岳前辈,这样貌似没有用,还是之前的错误
-
OPENFOAM中有些后处理工具是否只能在计算时运行,计算完毕后无法运行?今天在一个算例算完之后试图用fieldAverage工具计算UMean,发现openfoam4.x中提供的模板是把它全部写在了controlDict文件下的functions下面了。。由于我已经计算完毕,所以在system下建了一个fieldAverage文件,controlDict下用#includeFunc fieldAverage挂载,如下:
// Type of functionObject type fieldAverage; // Where to load it from (if not already in solver) libs ("libfieldFunctionObjects.so"); // Function object enabled flag enabled true; // When to output the average fields writeControl adjustableRunTime; writeInterval 0.001; // Fields to be averaged - runTime modifiable fields ( U { mean on; prime2Mean off; base time; window 20; // 当设定window为一正整数w时,输出的时均值是当前时间步以及其之前w-1步,这w步内Field的时均值 } );
而此时输入postProcess -func fieldAverage时会报这种错误(PS:采用#includeFunc挂载的方式即使边算边输出也会出现这个错误):
--> FOAM FATAL IO ERROR: wrong token type - expected word, found on line 18 the punctuation token '{' file: /home/dyfluid/tutorials/incompressible/pimpleFoam/pitzDaily/system/fieldAverage.fields at line 18. From function Foam::Istream& Foam::operator>>(Foam::Istream&, Foam::word&) in file primitives/strings/word/wordIO.C at line 74. FOAM exiting
看上去是说U后面不应该是{ ,但事实上,openfoam给出的模板里这个地方就是这么写的,并且我把system下面的fieldAverage文件中的code复制到controlDict下面,边算边处理的话,完美运行。。但是如果再用postProcess -func fieldAverage的方式,这段程序不会被运行,原因是:
--> FOAM Warning : From function static bool Foam::functionObjectList::readFunctionObject(const Foam::string&, Foam::dictionary&, Foam::HashSet<>&, const Foam::word&) in file db/functionObjects/functionObjectList/functionObjectList.C at line 245 Cannot find functionObject file fieldAverage
那么,是否表明这个后处理工具不能在计算完成后运行?
如果可以,那应该怎么做呢。。
跪求大神指教! -
openfoam的fvScheme中是否可以给某个变量指定范围?@youmengtian 感谢指点!
-
openfoam的fvScheme中是否可以给某个变量指定范围?如何bound?搜了很久没搜到,求赐教
-
openfoam的fvScheme中是否可以给某个变量指定范围?如题。。
看到openfoam对某些值在0~1之间的变量可以指定特定的01格式保持其在0~1间严格有界,比如vanLeer01,那对于值不在0~1区间的变量可以指定吗?
比如说想对k指定范围0~100。。 -
openfoam新版本湍流模型编译@wwzhao 非常感谢前辈的指点^-^
-
openfoam新版本湍流模型编译@东岳 前辈,貌似我改写的那几行在3.0之前的版本这么用可以编译成功T-T,看到别人在2.4.0这么用过
const volScalarField& alpha2= mesh_.lookupObject<volScalarField>("alpha.vapour");
-
openfoam新版本湍流模型编译参照@wwzhao 前辈的做法·,果然编译通过了,目前正在测试中,开心^-^。非常感谢!
其实还有问题想问两位前辈,对于一个刚接触openfoam代码改写的人,应该如何去慢慢掌握of中的代码结构、风格,以及各种类的用法?目前的我一打开Of中的某.C文件就有些懵逼。。 -
openfoam新版本湍流模型编译继续求救 最近试图对SST k-w模型做一些修改。。其中有几行代码是试图读入场中的一些变量以及transportProperties文件中设置的一些常量。这几行代码如下:
const volScalarField& alpha1= this->mesh_.lookupObject<volScalarField>("alpha.water"); const volScalarField& alpha2= this->mesh_.lookupObject<volScalarField>("alpha.vapour"); const dictionary& transportProperties= this->mesh_.lookupObject<IOdictionary>("transportProperties"); const dictionary& phase1= transportProperties.subDict("water"); const dictionary& phase2= transportProperties.subDict("vapour"); const dimensionedScalar& rho1 = phase1.lookup("rho"); const dimensionedScalar& rho2 = phase2.lookup("rho");
但是编译的时候却报了这个错误:
lnInclude/modkOmegaSSTBase.C:42:69: error: expected primary-expression before ‘>’ token const volScalarField alpha1= this->mesh_.lookupObject<volScalarField>("alpha.water"); ^ lnInclude/modkOmegaSSTBase.C:43:69: error: expected primary-expression before ‘>’ token const volScalarField alpha2= this->mesh_.lookupObject<volScalarField>("alpha.vapour"); ^ lnInclude/modkOmegaSSTBase.C:59:78: error: expected primary-expression before ‘>’ token const dictionary& transportProperties= this->mesh_.lookupObject<IOdictionary>("transportProperties"); ^ make: *** [Make/linux64GccDPInt32Opt/makeTurbModel.o] 错误 1
error: expected primary-expression before ‘>’ token
这些错误都发生在lookupObject函数上,是否是我这个函数的写法有问题?在网上搜也未得到解释方法,请问各位有碰到类似情况的吗?望各位大神不吝赐教 -
openfoam新版本湍流模型编译已解决。。在GitHub上找到了例子,照着做就ok..GitHub大法好
-
openfoam新版本湍流模型编译openfoam湍流模型的架构貌似和老版本很不一样?最近需要对openFOAM中的湍流模型做一些修改,于是先拿网上的一个修改kEpsilon模型的例子来练手。。将openFOAM4.1版本中的kEpsilon文件夹拷出,目前只对kEpsilon.H和kEpsilon.C文件的文件名和类名进行了修改,得到了DurbinV2F.H和DurbinV2F.C文件。编译的files文件和options文件如下:
filesV2F/DurbinV2F.C LIB = $(FOAM_USER_LIBBIN)/libaddedRASModels
options
EXE_INC = \ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ -I$(LIB_SRC)/transportModels \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ LIB_LIBS = \ -lfiniteVolume \ -lmeshTools
但是,编译器却返回:
g++ -std=c++0x -m64 -Dlinux64 -DWM_ARCH_OPTION=64 -DWM_DP -DWM_LABEL_SIZE=32 -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof -O3 -DNoRepository -ftemplate-depth-100 -I/opt/openfoam4/src/TurbulenceModels/turbulenceModels/lnInclude -I/opt/openfoam4/src/finiteVolume/lnInclude -I/opt/openfoam4/src/meshTools/lnInclude -IlnInclude -I. -I/opt/openfoam4/src/OpenFOAM/lnInclude -I/opt/openfoam4/src/OSspecific/POSIX/lnInclude -fPIC -c V2F/DurbinV2F.C -o Make/linux64GccDPInt32Opt/V2F/DurbinV2F.o V2F/DurbinV2F.C:40:6: error: redefinition of ‘void Foam::RASModels::DurbinV2F<BasicTurbulenceModel>::correctNut()’ void DurbinV2F<BasicTurbulenceModel>::correctNut() ^ In file included from V2F/DurbinV2F.H:212:0, from V2F/DurbinV2F.C:26: V2F/DurbinV2F.C:40:6: error: ‘virtual void Foam::RASModels::DurbinV2F<BasicTurbulenceModel>::correctNut()’ previously declared here void DurbinV2F<BasicTurbulenceModel>::correctNut()
等等 告诉我 redefinition 了。
失败后我想看看kEpsilon原本对应的Make文件夹。。但是奇怪的是发现turbulenceModels这个文件夹下面的files文件里并没有kEpsilon.C,包括常见的RNG、SSTkOmega等也没有,翻了其他文件夹下的files也没发现,老版本的openfoam里turbulenceModels文件夹下面的files是指定了kEpsilon.C的。这就非常疑惑了,新版本openfoam究竟是在哪里编译了这些湍流模型
另外,新版本openfoam中添加湍流模型应该怎么做呢
求各位大神解惑。。