自定义梯度边界条件
-
-
是的,李老师你讲的没错,J_cath = C1 * exp(- (r / C2)^C3),假设是一个垂直X轴的面,C1、C2、C3均为已知参数,r是距X轴的距离。这样就是一个非均匀的fixedGradient。该怎么实现呢?
-
哦哦好的好的,谢谢李老师
-
上面李老师的方法对于小白同学依然门槛太高,下边是我通过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
-
删除掉0文件下CATHODE的gradientOld行代码,即可在paraview里查看0时刻场信息。
-
想请教大家标量的梯度不应该是个矢量吗,为什么设置边界条件的时候fixedGradient是个标量?
-
@gooseEast 个人理解。因为你定义的是边界的数值的梯度,其梯度方向是固定的,即边界的法向量方向,所以边界数值的梯度是标量。而不是内部场量的三方向的梯度数据。
2023年12月5日 03:24
8/10
2023年12月25日 07:33