如何修改并编译kOmegaSSTBase?
-
大家好,最近的研究中涉及到对kOmegaSST模型的自定义修改,kOmegaSST模型的结构非常特别,它的具体定义并不在kOmegaSST.C,而是在kOmegaSSTBase.C中,我需要修改的部分也在Base中。我希望实现的是从原模型复制一个副本,之后修改副本并编译,这样可以保留原模型。但是我在整个湍流模型的文件夹下的任何一个Make/flies文件中都找不到kOmegaSSTBase的相关信息,因此是不能直接通过在Make/flies中添加一行来编译的。我找到的一个相关的参考资料链接地址也是自定义了一个新的SST模型,但是他并没有修改过kOmegaSSTBase文件,因此我按照他的教程执行后,会遇到:
fatal error: myKOmegaSSTBase.H: 没有那个文件或目录
这应该还是Base文件没有正常编译引起的,似乎是需要先编译Base,有没有前辈可以赐教,十分感谢!
-
@东岳 谢谢老师的回复,我是按照在
turbulentTransportModels.C
加入了#include "kOmegaSST2.H" makeRASModel(kOmegaSST2);
然后在
kOmegaSST2.H
中#include "kOmegaSST2Base.H"
实现这一编译过程,但是还是会报错,似乎要增加一个新的Base需要修改的地方非常多。
我目前暂时采取的解决方案是直接在修改原base,增加了一个Switch,在算例的constant/turbulenceProperties
中设置true
来启动新功能,这样也算保留了原模型,打算后面如果找到更好的方法我再改过来 -
@hyperLDK 您好,我刚刚实现了v2312版本下的编译,参考了这个case
但目前我的makeTurbmodels.C文件会有一些waring还不知道该怎样修改,不过模型可以使用了
makeTurbmodels.C文件为:
/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2013-2016 OpenFOAM Foundation Copyright (C) 2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. \*---------------------------------------------------------------------------*/ #include "IncompressibleTurbulenceModel.H" #include "incompressible/transportModel/transportModel.H" #include "addToRunTimeSelectionTable.H" #include "makeTurbulenceModel.H" #include "laminarModel.H" #include "RASModel.H" //- Define turbulence model typedefs, with EddyDiffusivity #define defineTurbulenceModelTypes( \ Alpha, Rho, baseModel, BaseModel, Transport) \ \ namespace Foam \ { \ typedef TurbulenceModel \ < \ Alpha, \ Rho, \ baseModel, \ Transport \ > Transport##baseModel; \ \ typedef BaseModel<Transport> \ Transport##BaseModel; \ \ typedef RASModel<Transport##BaseModel> \ RAS##Transport##BaseModel; \ } // Legacy name #define makeTurbulenceModelTypes(a, b, c, d, e) \ defineTurbulenceModelTypes(a, b, c, d, e) #define makeBaseTurbulenceModel(Alpha, Rho, baseModel, BaseModel, Transport) \ /* Turbulence typedefs */ \ defineTurbulenceModelTypes(Alpha, Rho, baseModel, BaseModel, Transport) \ \ namespace Foam \ { \ /* Turbulence selection table */ \ defineTemplateRunTimeSelectionTable \ ( \ Transport##baseModel, \ dictionary \ ); \ \ /* RAS models */ \ defineNamedTemplateTypeNameAndDebug(RAS##Transport##BaseModel, 0); \ \ defineTemplateRunTimeSelectionTable \ (RAS##Transport##BaseModel, dictionary); \ \ addToRunTimeSelectionTable \ ( \ Transport##baseModel, \ RAS##Transport##BaseModel, \ dictionary \ ); \ } #define makeTemplatedTurbulenceModel(BaseModel, SType, Type) \ defineNamedTemplateTypeNameAndDebug \ (Foam::SType##Models::Type<Foam::BaseModel>, 0); \ \ namespace Foam \ { \ namespace SType##Models \ { \ typedef Type<BaseModel> Type##SType##BaseModel; \ \ addToRunTimeSelectionTable \ ( \ SType##BaseModel, \ Type##SType##BaseModel, \ dictionary \ ); \ } \ } #define makeTurbulenceModel(BaseModel, SType, Type) \ namespace Foam \ { \ namespace SType##Models \ { \ defineTypeNameAndDebug(Type, 0); \ \ addToRunTimeSelectionTable \ ( \ SType##BaseModel, \ Type, \ dictionary \ ); \ } \ } makeTurbulenceModelTypes ( geometricOneField, geometricOneField, incompressibleTurbulenceModel, IncompressibleTurbulenceModel, transportModel ); #define makeRASModel(Type) \ makeTemplatedTurbulenceModel \ (transportModelIncompressibleTurbulenceModel, RAS, Type) makeBaseTurbulenceModel ( geometricOneField, geometricOneField, incompressibleTurbulenceModel, IncompressibleTurbulenceModel, transportModel ); // -------------------------------------------------------------------------- // // RAS models // -------------------------------------------------------------------------- // #include "kOmegaSSTV.H" makeRASModel(kOmegaSSTV); // **************************************************************************** // // ************************************************************************* //
问题如下:
Making dependencies: makeTurbModel.C g++ -std=c++14 -m64 -pthread -DOPENFOAM=2312 -DWM_DP -DWM_LABEL_SIZE=32 -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof -Wno-attributes -Wno-unknown-pragmas -O3 -DNoRepository -ftemplate-depth-100 -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/TurbulenceModels/turbulenceModels/lnInclude -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/TurbulenceModels/incompressible/lnInclude -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/transportModels -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/fvOptions/Ininclude -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/finiteVolume/lnInclude -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/meshTools/lnInclude -iquote. -IlnInclude -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/OpenFOAM/lnInclude -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/OSspecific/POSIX/lnInclude -fPIC -c makeTurbModel.C -o Make/linux64GccDPInt32Opt/makeTurbModel.o makeTurbModel.C:40:0: warning: "defineTurbulenceModelTypes" redefined #define defineTurbulenceModelTypes( \ In file included from makeTurbModel.C:33:0: /home/ad/OpenFOAM/OpenFOAM-v2312/src/TurbulenceModels/turbulenceModels/lnInclude/makeTurbulenceModel.H:30:0: note: this is the location of the previous definition #define defineTurbulenceModelTypes( \ makeTurbModel.C:65:0: warning: "makeBaseTurbulenceModel" redefined #define makeBaseTurbulenceModel(Alpha, Rho, baseModel, BaseModel, Transport) \ In file included from makeTurbModel.C:33:0: /home/ad/OpenFOAM/OpenFOAM-v2312/src/TurbulenceModels/turbulenceModels/lnInclude/makeTurbulenceModel.H:61:0: note: this is the location of the previous definition #define makeBaseTurbulenceModel(Alpha, Rho, baseModel, BaseModel, Transport) \ g++ -std=c++14 -m64 -pthread -DOPENFOAM=2312 -DWM_DP -DWM_LABEL_SIZE=32 -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof -Wno-attributes -Wno-unknown-pragmas -O3 -DNoRepository -ftemplate-depth-100 -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/TurbulenceModels/turbulenceModels/lnInclude -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/TurbulenceModels/incompressible/lnInclude -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/transportModels -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/fvOptions/Ininclude -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/finiteVolume/lnInclude -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/meshTools/lnInclude -iquote. -IlnInclude -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/OpenFOAM/lnInclude -I/home/ad/OpenFOAM/OpenFOAM-v2312/src/OSspecific/POSIX/lnInclude -fPIC -shared -Xlinker --add-needed -Xlinker --no-as-needed Make/linux64GccDPInt32Opt/makeTurbModel.o -L/home/ad/OpenFOAM/OpenFOAM-v2312/platforms/linux64GccDPInt32Opt/lib \ -lturbulenceModels -lincompressibleTransportModels -lincompressibleTurbulenceModels -lfvOptions -lfiniteVolume -lmeshTools -o /home/ad/OpenFOAM/ad-v2312/platforms/linux64GccDPInt32Opt/lib/libMyIncompressiblenceModels.so
希望对你有帮助!