こんにちは,お読みいただきありがとうございます.
以下のようにfvOptionsにソース項を追加しました.
- /*--------------------------------*- C++ -*----------------------------------*\
- | ========= | |
- | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
- | \\ / O peration | Version: 2.3.0 |
- | \\ / A nd | Web: www.OpenFOAM.org |
- | \\/ M anipulation | |
- \*---------------------------------------------------------------------------*/
- FoamFile
- {
- version 2.0;
- format ascii;
- class dictionary;
- location "system";
- object fvOptions;
- }
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- air1Source
- {
- type scalarCodedSource;
- active true;
- name air1source;
- scalarCodedSourceCoeffs
- {
- selectionMode all;
- name air1source;
- fields (thermo:rho.air1);
- codeOptions
- #{
- -I$(LIB_SRC)/phaseSystemModels/reactingEulerFoam/phaseSystems/lnInclude \
- -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
- -I$(LIB_SRC)/transportModels/compressible/lnInclude \
- -I$(MPI_ROOT)/include \
- -I$(FOAM_RUN)/20221218/Include
- #};
- codeInclude
- #{
- #include "fvCFD.H"
- #include "phaseSystem.H"
- #include "electrode.H"
- #include <mpi.h>
- #};
- codeCorrect
- #{
- Pout << "**codeCorrect**" << endl;
- #};
-
- codeAddSup
- #{
- word phasename_ = ".air1";
- #include "codeAddSup_Electrode_model2_o2_mpi.H"
- #include "codeAddSup_Electrode_2.H"
- scalar sumMass = 0.0;
- forAll(Su,i)
- {
- Su[i] = source[i]*0.25;
- Sp[i] = 0.0/psi[i];
-
- sumMass += Su[i]*mesh_.V()[i];
- }
- reduce(sumMass, sumOp<scalar>());
- Pout << sumMass << endl;
- eqn += Su + fvm::SuSp(Sp, psi);
- #};
- codeConstrain
- #{
- Pout << "**codeConstrain**" << endl;
- #};
- }
- }
これを【reactingMultiphaseEulerFoam】として実行したところ,以下のようなエラーが生じました.
jessica@jessica-VirtualBox:~/OpenFOAM/jessica-v2006/run/20221219$ Could not load "/home/jessica/OpenFOAM/jessica-v2006/run/20221219/dynamicCode/platforms/linux64GccDPInt32Opt/lib/libair1source_b243dd1e6407ebb2e014574026a16a935f01d9a4.so"
/home/jessica/OpenFOAM/jessica-v2006/run/20221219/dynamicCode/platforms/linux64GccDPInt32Opt/lib/libair1source_b243dd1e6407ebb2e014574026a16a935f01d9a4.so: cannot open shared object file: No such file or directory
ln: ./lnInclude
/home/jessica/OpenFOAM/jessica-v2006/run/20221219/system/fvOptions.air1Source.scalarCodedSourceCoeffs:45:10: fatal error: mpi.h: No such file or directory
compilation terminated.
make: *** [/home/jessica/OpenFOAM/OpenFOAM-v2006/wmake/rules/General/transform:35: Make/linux64GccDPInt32Opt/codedFvOptionTemplate.o] Error 1
--> FOAM FATAL IO ERROR:
Failed wmake "dynamicCode/air1source/platforms/linux64GccDPInt32Opt/lib/libair1source_b243dd1e6407ebb2e014574026a16a935f01d9a4.so"
file: /home/jessica/OpenFOAM/jessica-v2006/run/20221219/system/fvOptions.air1Source.scalarCodedSourceCoeffs at line 26 to 73.
From void Foam::codedBase::createLibrary(Foam::dynamicCode&, const Foam::dynamicCodeContext&) const
in file db/dynamicLibrary/codedBase/codedBase.C at line 237.
FOAM exiting
これに対して,/home/jessica/OpenFOAM/OpenFOAM-v2006/etc ディレクトリ下のconfig.cshとconfig.shのテキストファイル"mpi"に記述されている$MPI_ROOTを,include/mpi.hが存在するディレクトリである"/usr/lib/x86_64-linux-gnu/openmpi"に書き換えましたが,エラーは解決しませんでした.
また,実行したケースディレクトリに生成されたdynamicCodeディレクトリの階層構造は以下のようになっています.
├── dynamicCode
│ └── air1source
│ ├── codedFvOptionTemplate.C
│ ├── codedFvOptionTemplate.H
│ ├── lnInclude
│ │ ├── codedFvOptionTemplate.C -> ../codedFvOptionTemplate.C
│ │ └── codedFvOptionTemplate.H -> ../codedFvOptionTemplate.H
│ └── Make
│ ├── files
│ ├── linux64GccDPInt32Opt
│ │ ├── codedFvOptionTemplate.C.dep
│ │ ├── options
│ │ ├── sourceFiles
│ │ └── variables
│ ├── options
│ └── SHA1Digest
このように,エラーメッセージで表示されているdynamicCode直下のplatformsというディレクトリは生成されていません.
どなたか原因がお分かりになる方,ご教示いただけると大変助かります.