盲猜: 构建面是按照单元号从小到大遍历的,面方向为指向单元外侧。故面肯定是由小编号单元先建立的,指向小编号单元外侧(即从owner向neighbour)
Cp_Zhao
帖子
-
OpenFOAM怎么保证Sf是由owner指向neighbour的? -
请问有并行debug的工具吗?@cfdngu 收费也没办法,我之前找了一圈也没有找到比这个好用的
-
请问有并行debug的工具吗?ArmDDT软件,现在好像叫armforge
-
一个 scalar 等于多少个字节?在
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
-
velocityLaplacian动网格cellMotion是怎么插值到pointMotion的?好像是分内部点(所有面都不是边界)和边界点,内部点根据cell插值(距离倒数分之一),边界点根据face插值。
-
velocityLaplacian动网格cellMotion是怎么插值到pointMotion的?文件路径
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国内就业贴我记得微信有个
CFD招聘
的公众号做的挺不错的 -
correctBoundaryConditions里修正面心梯度的公式没看明白自己翻书找到答案了 ,
《The FVM in CFD(OpenFOAM, Matlab)》
那本书Page 303
有讲到:
-
correctBoundaryConditions里修正面心梯度的公式没看明白代码在
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]) );
-
[分享]《Computational Methods for Fluid Dynamics》4th这几天在看有限体积法的书,大佬的论文、《数值传热学》和 《The FVM inCFD OpenFOAM..Matlab》都看了,逛论坛发现都在推荐
《Computational Methods for Fluid Dynamics》
这本;去SpringerLink一搜正好今年出了新版,网上资源好像还不多,在这里分享一下: 点击下载 -
advection 和convection 的区别正好最近也有这个疑问,感谢大佬的回答~
-
blockMesh生成复杂模型@hy1112006 不会吧;我不太记得了,好像是用的https://openfoam.org/的OpenFOAM7,当初因为是租的服务器算,直接用
sudo apt-get install openfoam
安装的。 -
blockMesh生成复杂模型补个图片,tif格式好像不支持
-
blockMesh生成复杂模型 -
banana method是什么意思把文件里某一个选项的值填为
banana
(任何一个错误的值都行),让错误信息输出该选项所有的正确可选值 -
windows 10下可以跑linux!@东岳 现在出了windows termianal,稍微配置下就很好看了~
-
阿里ECS进行OpenFOAM的计算流程@Cp_Zhao 找到原因了,创建实例公网带宽记得选按按固定带宽,然后适度调节。
虽然贵一点但至少用户体验好一些 -
阿里ECS进行OpenFOAM的计算流程我试了下,注册了账号充了100,然后到最后一步下载openfoam。。。网速只有几k/s,然后就懵逼了。
-
motorbike中SA模型相关设置?结论:
- 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根据计算得来,所以设置成
-
motorbike中SA模型相关设置?@东岳 我弄错了,确实稳态的话不会影响最后结果,差别很大是因为还没收敛(我只改了nut和nutTilda的值但没调endTime)。
但我发现合适的初值设置能够很明显的加快收敛速度:
如airFoil2D
这个例子,默认是$\nu_{t}=\tilde{\nu}=0.14$,313步就收敛了;
而如果我改成$\nu_{t}=\tilde{\nu}=0$ , 需要371步,这都差别不大;
但如果改得大一点:如$\nu_{t}=\tilde{\nu}=14$ ,需要1018步收敛。所以感觉有时候一个合理的初值还是挺重要的。