OpenFORM植入EMMS模型时函数变量不匹配的问题
-
大家好,我需要植入EMMS模型到multiEulerFoam中,其中Hd的系数需要针对液相体积分数的不同而有所改变,因此我需要写入一个分段函数到Scalar.H文件中,函数是这样写的
inline Scalar between(const Scalar s1, const Scalar s2) { return (s1>0 && s2<=0) ?1:0; }
但是我在编译的时候调用between函数会出现数据类型不对的错误
我想知道应该如何定义才能定义出符合需求的数据类型。
另外,我想详细了解openfoam中src/OpenFOAM/primitives中的数据的正确定义、调用的方式,请问有什么资料可以学习,谢谢 -
@东岳 因为我想添加一个能够使用多段液相分布的函数,所以在底层添加了,添加之后编译是可以通过,但是我在调用的时候编译就出现问题。
下面是我需要调用时的文件
就是在这个曳力编译的时候出现的数据类型错误 -
@IO-Turbulent 补充一下错误截图
-
回来填下坑
为了在dragModels中引入一个新的区间判断函数between(),除了需要在\src\OpenFOAM\primitives\Scalar\Scalar.H
中定义函数主题,还需要将函数进行重载,这是因为写入Scalar.H的文件只是单纯意义上的scalar类型,并不是计算所需要的
Foam::tmp<Foam::GeometricField<double, Foam::FvPatchField, Foam::volMesh
类型,为了使函数返回的类型符合所需数据类型需要对函数进行重载操作,具体操作的方法是在下列地方写入重载的定义,分别是
\src\OpenFOAM\dimensionedTypes\dimensionedType.H \src\OpenFOAM\dimensionedTypes\dimensionedScalar.H \src\OpenFOAM\dimensionedSet\dimensionedSet.H \src\OpenFOAM\fields\DimensionedFields\DimensionedFieldFunctions.H \src\OpenFOAM\fields\FieldFields\scalarFieldField.H \src\OpenFOAM\fields\GeometricFields\GeometricField\GeometricFieldsFunctions.H \src\OpenFOAM\fields\GeometricFields\GeometricScalarField\GeometricScalarField.H
重载之后可以使between()函数返回的数值类型为
Foam::tmp<Foam::GeometricField<double, Foam::FvPatchField, Foam::volMesh
之后重新编辑一下就可以运行了