请教密度随深度连续变化设置问题
-
@东岳 谢谢版主。您给我的例子中是速度随深度变化U[cell].y() = 0.7 - mag(x - 0.075);,这个我用groovybc实现过。我的问题是一个水池,左侧入口速度恒定,但是密度需要连续分层,并且初始流场密度也要分层,与入口一致。研究流场中的障碍物影响,这个是否有相似的例子可以参考?
-
设置初始场可以用东岳大哥的方法(自己写一个 utility),边界条件则可以使用
codedFixedValue
。
举个例子:wall { type codedFixedValue; value uniform 550; name suibian; code #{ scalarField x = this->patch().Cf().component(0); // Cf 表示此 patch 的所有面心坐标,是一个 vectoeField,component(0) 表示取其第 0 个分量,即 x 坐标。 scalarField T = 550*x; operator==(T); #}; }
-
-
@浪迹天大 您好,我有些疑惑。
初始场密度分布的unity是写在compressibleInterFoam求解器中的‘createFields.H’文件中吗?在Info<< "Reading thermophysical properties\n" << endl; volScalarField& p = mixture.p(); volScalarField& T = mixture.T(); volScalarField& rho1 = mixture.thermo1().rho(); const volScalarField& psi1 = mixture.thermo1().psi(); volScalarField& rho2 = mixture.thermo2().rho(); const volScalarField& psi2 = mixture.thermo2().psi(); volScalarField rho ( IOobject ( "rho", runTime.timeName(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), alpha1*rho1 + alpha2*rho2 );
代码中,我只需要把rho1重新定义成随函数变化就行吗?
边界条件部分,使用codedFixedValue可以按照您的给的例子把T换成密度吗?“0.org”文件夹中就没有rho这个文件呀?
-
@东岳 李老师,compressibleInterFoam求解器该如何设置边界密度随空间变化呢
-
抱歉说漏了,rho、rho.water、rho.air这三个文件都要放进0文件夹。funkySetFields是能够使用函数表达式的,用来设置场内分布;边界上的值可以用funkySetBoundaryField来设置。在system下添加funkySetFieldsDict和funkySetBoundaryDict来使用。里面的内容,随便举个例子:
//funkySetFields expressions ( pressureWater { field p_rgh; //需要设置的物理量 expression "100000 - 99800*pos().y"; //这行写你要的函数 condition "(pos().x <= 5) && (pos().x >= 0)"; //起作用的范围、可以注释掉,不影响使用 keepPatches 1; //填1就好,要不然可能把边界条件改成zeroGradient } ); //funkySetBoundaryField pressureWater { field p_rgh; expressions ( { target value; patchName INLET; //选择边界面 //variables "maxY=max(pts().y);"; //可以注释掉,不影响使用 expression "100000 - 99800*pos().y"; //这行写你要的函数 } //可以再expression下同时写多个边界的设置 { target value; patchName OUTLET; //variables "maxY=max(pts().y);"; expression "100000 - 99800*pos().y"; } ); }
更多细节参考这里链接文本,以及swak4foam的tutorials
另外,你的这个算例里面压力也应当要设置,需要和密度相匹配。