@cfdngu 收费也没办法,我之前找了一圈也没有找到比这个好用的
Cp_Zhao
帖子
-
-
ArmDDT软件,现在好像叫armforge
-
在
OpenFOAM/primitives/Scalar/scalar/scalarFwd.H
中://- A typedef for float typedef float floatScalar; //- A typedef for double typedef double doubleScalar; #if defined(WM_SP) typedef floatScalar scalar; typedef floatScalar solveScalar; #elif defined(WM_SPDP) typedef floatScalar scalar; typedef doubleScalar solveScalar; #elif defined(WM_DP) typedef doubleScalar scalar; typedef doubleScalar solveScalar; #else // #error "PRECISION must be set to WM_SP, WM_SPDP or WM_DP" #endif
-
好像是分内部点(所有面都不是边界)和边界点,内部点根据cell插值(距离倒数分之一),边界点根据face插值。
-
文件路径
OpenFOAM-7/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C
Foam::tmp<Foam::pointField> Foam::velocityLaplacianFvMotionSolver::curPoints() const { volPointInterpolation::New(fvMesh_).interpolate //就是这里 ( cellMotionU_, pointMotionU_ ); tmp<pointField> tcurPoints ( fvMesh_.points() + fvMesh_.time().deltaTValue()*pointMotionU_.primitiveField() ); twoDCorrectPoints(tcurPoints.ref()); return tcurPoints; }
有没有具体的数学公式,我看了一些书也都没说这些细节的东西。
-
我记得微信有个
CFD招聘
的公众号做的挺不错的 -
自己翻书找到答案了 ,
《The FVM in CFD(OpenFOAM, Matlab)》
那本书Page 303
有讲到:
-
代码在
src/finiteVolume/finiteVolume/gradSchemes/gaussGrad/gaussGrad.C
144行:template<class Type> void Foam::fv::gaussGrad<Type>::correctBoundaryConditions ( const GeometricField<Type, fvPatchField, volMesh>& vsf, GeometricField < typename outerProduct<vector, Type>::type, fvPatchField, volMesh >& gGrad ) { typename GeometricField < typename outerProduct<vector, Type>::type, fvPatchField, volMesh >::Boundary& gGradbf = gGrad.boundaryFieldRef(); forAll(vsf.boundaryField(), patchi) { if (!vsf.boundaryField()[patchi].coupled()) { const vectorField n ( vsf.mesh().Sf().boundaryField()[patchi] / vsf.mesh().magSf().boundaryField()[patchi] ); gGradbf[patchi] += n * ( vsf.boundaryField()[patchi].snGrad() - (n & gGradbf[patchi]) ); } } }
里面
vsf
应该是待求梯度的场吧、然后gGradbf
是根据体心梯度插值得到的面心梯度、n
是面单位法向、.snGrad()
是$\frac{\phi_{f}-\phi_{C}}{d_{Cf}}$ ?
这个面心梯度的修正公式怎么来的我还是没看懂:gGradbf[patchi] += n * ( vsf.boundaryField()[patchi].snGrad() - (n & gGradbf[patchi]) );
-
这几天在看有限体积法的书,大佬的论文、《数值传热学》和 《The FVM inCFD OpenFOAM..Matlab》都看了,逛论坛发现都在推荐
《Computational Methods for Fluid Dynamics》
这本;去SpringerLink一搜正好今年出了新版,网上资源好像还不多,在这里分享一下: 点击下载 -
忽然想发个帖结果老用户没币,难受一波。
-
正好最近也有这个疑问,感谢大佬的回答~
-
@hy1112006 不会吧;我不太记得了,好像是用的https://openfoam.org/的OpenFOAM7,当初因为是租的服务器算,直接用
sudo apt-get install openfoam
安装的。 -
补个图片,tif格式好像不支持
-
把文件里某一个选项的值填为
banana
(任何一个错误的值都行),让错误信息输出该选项所有的正确可选值 -
@东岳 现在出了windows termianal,稍微配置下就很好看了~
-
@Cp_Zhao 找到原因了,创建实例公网带宽记得选按按固定带宽,然后适度调节。
虽然贵一点但至少用户体验好一些 -
我试了下,注册了账号充了100,然后到最后一步下载openfoam。。。网速只有几k/s,然后就懵逼了。
-
结论:
- nut根据计算得来,所以设置成
type calculated;
然后随便给个值都行。 - 不同模型间的公式尽量不混着瞎用,老老实实参考NASA里给的建议和https://turbmodels.larc.nasa.gov/ChangesToOpenFOAM.pdf的说明
- Try not to follow the tutorial values as some (maybe most) of them are not validated per se but more for case file reference only(来自reddit yourstru1y的建议)
不知是否还有需要纠正的地方,感谢~
- nut根据计算得来,所以设置成
-
@东岳 我弄错了,确实稳态的话不会影响最后结果,差别很大是因为还没收敛(我只改了nut和nutTilda的值但没调endTime)。
但我发现合适的初值设置能够很明显的加快收敛速度:
如airFoil2D
这个例子,默认是$\nu_{t}=\tilde{\nu}=0.14$,313步就收敛了;
而如果我改成$\nu_{t}=\tilde{\nu}=0$ , 需要371步,这都差别不大;
但如果改得大一点:如$\nu_{t}=\tilde{\nu}=14$ ,需要1018步收敛。所以感觉有时候一个合理的初值还是挺重要的。
-
$I=2\%$
湍流强度I=2%,为了表明%不代表单行注释我还特地输入了转义符号为啥没显示出来
看来是渲染方式和mathjax有点冲突 - - -
新人,今天刚注册完,第一次发帖;最近在学习OpenFOAM和湍流相关知识,还比较辣鸡,可能有些问题显得比较低级但也请大家多多包涵。
关于如何设置湍流模型很多参数的初值,还是不太清楚。
最开始看了József Nagy的教学视频,学到了很多他设置初值的方法,但是:
最主要的问题是当我试着用学到的方法来解释tutorial里一些参数值的设置时,有些地方怎么也解释不出来
在cfd-online上也看了很多篇帖子,始终没有解决我的疑问,我的问题和这位hulli很相似,他发的帖子也一直没有人回复...首先来看下motorbike的文件
从blockMesh中得出模型y方向的尺寸 $L=8m$ , turbulence length scale可以取:
$$
l=0.07L=0.56m
\tag{1-1}$$
查看0/U
得出Freestream velocity: $U_{\infty}=20m/s$.
假设Medium-turbulence case, Turbulence intensity $I=2%$
查看constant/transportProperties
, $\nu=1.5e-5m^{2}/s$ ,是空气的典型值。
然后,先估算Turbulence kinetic energy $k$ :$$
k=\frac{3}{2}\left(UI\right)^{2}=1.5\times\left(20*0.02\right)^{2}=0.24
\tag{1-2}$$
好的,这个和它的设置一模一样,没啥问题(虽然k在这里好像并没啥用)
Turbulence dissipation :
$$
\epsilon=C_{\mu}^{\frac{3}{4}}\cdot \frac{k^{\frac{3}{2}}}{l}=0.09^{0.75}\times0.24^{1.5}/0.56\approx 0.0345
\tag{1-3}$$Specific turbulence dissipation:
$$
\omega=\frac{\epsilon}{C_{\mu}k}\approx 1.60
\tag{1-4}$$
和0/U
文件中的turbulentOmega 1.78;
也差不了多少。
问题在于nut和nuTilda的设置:
首先给出计算公式:$$
\nu_{t}=C_{u}\frac{k^{2}}{\epsilon}
\tag{1-5}$$$$
\nu_{t}=\tilde{\nu}\cdot f_{v_1} , 其中 f_{v_1}=\frac{X^{3}}{X^{3}+c_{v_{1}}^{3}}
\tag{1-6}$$
且 $X=\frac{\tilde{\nu}}{\nu}$ , $c_{v_1}=7.1$最让我不解的是motorbike里将nut设为0,而将nuTilda设为0.05
如果按照这篇帖子里所说的,计算出 $\nu_{t}$,其初始值应该为:
$$
\nu_{t}=C_{u}\frac{k^{2}}{\epsilon}=0.09\times \frac{0.24^{2}}{0.0345}\approx 0.15
\tag{1-7}$$
此时,带入(1-6)可以求出正实根为 $\tilde{\nu}\approx0.15$
如果是我,肯定会将nut和nuTilda都设成0.15。
帖子里给出的意见是:按照东岳老师所说nuTilda为带求变量设成0也行,或者根据NASA The Spalart-Allmaras Turbulence Model设置。
另一篇帖子中random_ran也谈到类似的设置。但无论哪种好像都不能解释为什么motorbike里的设置,以及我和hulli的疑问。
其他类似的问题
tutorials/incompressible/simpleFoam/airFoil2D
的设置我也有点没搞明白,其中nut和nuTilda设置成相等倒是很容易理解,但是值为0.14我怎么算都和它相差很大,不知道是怎么的出来的。并且我试着改变这两者的值进行计算发现计算结果也差别很大,有点不知道怎么办了- -附:https://www.cfd-online.com/Tools/turbulence.php这个网页小工具可以参考一下,感觉还蛮有用的。
请问有并行debug的工具吗?
请问有并行debug的工具吗?
一个 scalar 等于多少个字节?
velocityLaplacian动网格cellMotion是怎么插值到pointMotion的?
velocityLaplacian动网格cellMotion是怎么插值到pointMotion的?
CFD国内就业贴
correctBoundaryConditions里修正面心梯度的公式没看明白
correctBoundaryConditions里修正面心梯度的公式没看明白
[分享]《Computational Methods for Fluid Dynamics》4th
C币运行机制测试
advection 和convection 的区别
blockMesh生成复杂模型
blockMesh生成复杂模型
blockMesh生成复杂模型
banana method是什么意思
windows 10下可以跑linux!
阿里ECS进行OpenFOAM的计算流程
阿里ECS进行OpenFOAM的计算流程
motorbike中SA模型相关设置?
motorbike中SA模型相关设置?
motorbike中SA模型相关设置?
motorbike中SA模型相关设置?