alpha.water越界了?你看最小值都负零点零几了,可能是边界条件没设置好,其它物理量的边界条件也会影响。
讲师
帖子
-
-
那我不知道咋办了,要不你用apt删了重装一下,或者编译源代码安装。
或者你电脑提前改变了apt的安装路径,安装到了其它地方?
下面这个里面安装的openfoam9就是在/opt目录下面。
https://blog.csdn.net/sagjhdj/article/details/123435344 -
apt这种安装方式应该会安装到/opt目录下面吧,你看看那里。
-
编程。
// 先创建一个场 volVectorField source_Vector ( IOobject ( "source_Vector", mesh.time().timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE ), mesh, dimensionedVector(dimensionSet(1,-2,-2,0,0,0,0), Zero) ); // 根据你的需要进行赋值 forAll(mesh,cellid) { source_Vector[cellid]=........; } // 添加方案一,添加到UEqn.H当中的动量方程中 fvVectorMatrix UEqn ( fvm::ddt(rho, U) + fvm::div(rhoPhi, U) + MRF.DDt(rho, U) + turbulence->divDevRhoReff(rho, U) == fvOptions(rho, U) + source_Vector // Add the source field ); // 添加方案二,添加到泊松方程里面,需要先插值为surfaceScalarField surfaceScalarField source_phig=-fvc::interpolate(source_Vector ); // 然后添加到pEqn的phig surfaceScalarField phig ( ( mixture.surfaceTensionForce() + source_phig // Add the source field - ghf*fvc::snGrad(rho) )*rAUf*mesh.magSf() );
我这个是改的interFoam,你类比一下就行,量纲应该不会一样。
-
以我对C++编程三脚猫程度的理解,应该是basicThermo.C没有被编译,因为在solidThermo.H/C中只包含了头文件basicThermo.H。
你可以试试在solidThermo的Make/files中这样写basicPorousThermo.C porousThermo.C LIB = $(FOAM_USER_LIBBIN)/libporousThermo
这样应该不需要你复制代码吧,也许(很没有信心)。
-
看报错信息是porousThermo没有找到basicPorousThermo,你在options中把basicPorousThermo链接上试试?
-
@Lee-scut-wind 入口进来的几层粗网格基本把高频就衰减完了
-
可以从边界上的face返回这个face属于的cell
const Foam::fvBoundaryMesh &procBoundary = mesh.boundary(); forAll(procBoundary, patch) { forAll(procBoundary[patch], facei) { const label bcell = boundaryMesh[patch].faceCells()[facei]; } }
你可以得到所有的边界单元编号,然后做你其它向做的事就应该比较方便了
-
@csj1246957849
因为提取等值面的时候进行了插值。
可以提取xz截面,显示网格线,然后你用我黄色画出来的看界面附近的网格,OpenFOAM用的有限体积法用到的是cell中心值,当你用setFields赋值的时候,z=0这条线和赋到的cell有各种关系。具体情况我这里表述很麻烦,你实际看一眼应该就能理解。
你上面图片显示的都是point的值,是paraview插值出来的,cell值前面是一个小方块,你可以看看cell值,就没有红色和蓝色的过渡。
interFoam吐核
openfoam9安装失败
如何在流场中加入体积力场
openfoam9安装失败
如何在流场中加入体积力场
关于编译动态库后在求解器中使用报错
关于编译动态库后在求解器中使用报错
NSRFG在OF里面计算出现的问题
在OpenFOAM中如何判断一个单元是否为边界单元?
overinterdymfoam的一些疑问