自定义梯度边界条件
-
上面李老师的方法对于小白同学依然门槛太高,下边是我通过swak4Foam(OpenFOAM-v2306环境下)中的funkySetBoundaryField来实现的:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v2306 | | \\ / A nd | Website: www.openfoam.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object funkySetBoundaryDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // currentDensity { field PotE; expressions ( { target gradient; patchName CATHODE; variables ( "Jcath0=1;" "Rc=1;" "nc=1;" "sigma0=1;" "y=pos().y;" "r=1;" ); expression "-Jcath0*exp(-pow(mag(y) / Rc, nc)) / sigma0"; } ); } // ************************************************************************* //
想要实现速度边界条件为高斯分布的同学可以参考代码修改field和target,想要了解其他信息,可以参见:https://www.cfd-online.com/Forums/openfoam-pre-processing/96280-funkysetboundaryfields-manipulation-existing-field.html
-
@gooseEast 个人理解。因为你定义的是边界的数值的梯度,其梯度方向是固定的,即边界的法向量方向,所以边界数值的梯度是标量。而不是内部场量的三方向的梯度数据。