diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/EaEqn.H b/applications/solvers/combustion/PDRFoam/EaEqn.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/EaEqn.H
rename to applications/solvers/combustion/PDRFoam/EaEqn.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/EauEqn.H b/applications/solvers/combustion/PDRFoam/EauEqn.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/EauEqn.H
rename to applications/solvers/combustion/PDRFoam/EauEqn.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/Make/files b/applications/solvers/combustion/PDRFoam/Make/files
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/Make/files
rename to applications/solvers/combustion/PDRFoam/Make/files
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/Make/options b/applications/solvers/combustion/PDRFoam/Make/options
similarity index 96%
rename from applications/solvers/combustion/XiFoam/PDRFoam/Make/options
rename to applications/solvers/combustion/PDRFoam/Make/options
index 9528af0e4d..18e1534b9f 100644
--- a/applications/solvers/combustion/XiFoam/PDRFoam/Make/options
+++ b/applications/solvers/combustion/PDRFoam/Make/options
@@ -1,6 +1,4 @@
EXE_INC = \
- -I.. \
- -I../ignition/lnInclude \
-IXiModels/transport \
-IXiModels/fixed \
-IXiModels/algebraic \
@@ -26,6 +24,7 @@ EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/multicomponentThermo/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/laminarFlameSpeed/lnInclude \
+ -I$(LIB_SRC)/thermophysicalModels/ignition/lnInclude \
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
-I$(LIB_SRC)/ThermophysicalTransportModels/thermophysicalTransportModel/lnInclude \
@@ -36,7 +35,6 @@ EXE_INC = \
-I$(LIB_SRC)/triSurface/lnInclude \
EXE_LIBS = \
- -lXiIgnition \
-lmeshTools \
-lfluidThermophysicalModels \
-lmulticomponentThermophysicalModels \
@@ -45,6 +43,7 @@ EXE_LIBS = \
-lcompressibleMomentumTransportModels \
-lcoupledThermophysicalTransportModels \
-llaminarFlameSpeedModels \
+ -lXiIgnition \
-lfiniteVolume \
-lfvModels \
-lfvConstraints
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/PDRFoam.C b/applications/solvers/combustion/PDRFoam/PDRFoam.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/PDRFoam.C
rename to applications/solvers/combustion/PDRFoam/PDRFoam.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/PDRFoamAutoRefine.C b/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/PDRFoamAutoRefine.C
rename to applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.C b/applications/solvers/combustion/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.C
rename to applications/solvers/combustion/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.H b/applications/solvers/combustion/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.H
rename to applications/solvers/combustion/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.C b/applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.C
rename to applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.H b/applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.H
rename to applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C
similarity index 97%
rename from applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C
rename to applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C
index ede45c71b9..3ed09bd9b9 100644
--- a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C
+++ b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H
rename to applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModelNew.C b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModelNew.C
similarity index 97%
rename from applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModelNew.C
rename to applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModelNew.C
index 9fc3c64556..c33caf232e 100644
--- a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModelNew.C
+++ b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModelNew.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/dragModels/basic/basic.C b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.C
similarity index 98%
rename from applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/dragModels/basic/basic.C
rename to applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.C
index 6e72f4e038..e090a220d7 100644
--- a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/dragModels/basic/basic.C
+++ b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/dragModels/basic/basic.H b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.H
similarity index 98%
rename from applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/dragModels/basic/basic.H
rename to applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.H
index a095f511b3..fb767f7c76 100644
--- a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/dragModels/basic/basic.H
+++ b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C
similarity index 98%
rename from applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C
rename to applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C
index c05533a103..56058fac54 100644
--- a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C
+++ b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H
similarity index 98%
rename from applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H
rename to applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H
index 0c958e9500..7db8b1f2c4 100644
--- a/applications/solvers/combustion/XiFoam/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H
+++ b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
diff --git a/applications/solvers/combustion/XiFoam/StCorr.H b/applications/solvers/combustion/PDRFoam/StCorr.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/StCorr.H
rename to applications/solvers/combustion/PDRFoam/StCorr.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/StCourantNo.H b/applications/solvers/combustion/PDRFoam/StCourantNo.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/StCourantNo.H
rename to applications/solvers/combustion/PDRFoam/StCourantNo.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/UEqn.H b/applications/solvers/combustion/PDRFoam/UEqn.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/UEqn.H
rename to applications/solvers/combustion/PDRFoam/UEqn.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.C b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.C
rename to applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.H b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.H
rename to applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.C b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.C
rename to applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H
rename to applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.C b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.C
rename to applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.H b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.H
rename to applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.C b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.C
rename to applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.H b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.H
rename to applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModelNew.C b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModelNew.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModelNew.C
rename to applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModelNew.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C
rename to applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H
rename to applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiGModels/KTS/KTS.C b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/KTS/KTS.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiGModels/KTS/KTS.C
rename to applications/solvers/combustion/PDRFoam/XiModels/XiGModels/KTS/KTS.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiGModels/KTS/KTS.H b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/KTS/KTS.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiGModels/KTS/KTS.H
rename to applications/solvers/combustion/PDRFoam/XiModels/XiGModels/KTS/KTS.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.C b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.C
rename to applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.H b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.H
rename to applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiGModels/XiGModel/XiGModelNew.C b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModelNew.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiGModels/XiGModel/XiGModelNew.C
rename to applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModelNew.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.C b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.C
rename to applications/solvers/combustion/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.H b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.H
rename to applications/solvers/combustion/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiModel/XiModel.C b/applications/solvers/combustion/PDRFoam/XiModels/XiModel/XiModel.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiModel/XiModel.C
rename to applications/solvers/combustion/PDRFoam/XiModels/XiModel/XiModel.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiModel/XiModel.H b/applications/solvers/combustion/PDRFoam/XiModels/XiModel/XiModel.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiModel/XiModel.H
rename to applications/solvers/combustion/PDRFoam/XiModels/XiModel/XiModel.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiModel/XiModelNew.C b/applications/solvers/combustion/PDRFoam/XiModels/XiModel/XiModelNew.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/XiModel/XiModelNew.C
rename to applications/solvers/combustion/PDRFoam/XiModels/XiModel/XiModelNew.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/algebraic/algebraic.C b/applications/solvers/combustion/PDRFoam/XiModels/algebraic/algebraic.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/algebraic/algebraic.C
rename to applications/solvers/combustion/PDRFoam/XiModels/algebraic/algebraic.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/algebraic/algebraic.H b/applications/solvers/combustion/PDRFoam/XiModels/algebraic/algebraic.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/algebraic/algebraic.H
rename to applications/solvers/combustion/PDRFoam/XiModels/algebraic/algebraic.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/fixed/fixed.C b/applications/solvers/combustion/PDRFoam/XiModels/fixed/fixed.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/fixed/fixed.C
rename to applications/solvers/combustion/PDRFoam/XiModels/fixed/fixed.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/fixed/fixed.H b/applications/solvers/combustion/PDRFoam/XiModels/fixed/fixed.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/fixed/fixed.H
rename to applications/solvers/combustion/PDRFoam/XiModels/fixed/fixed.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/transport/transport.C b/applications/solvers/combustion/PDRFoam/XiModels/transport/transport.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/transport/transport.C
rename to applications/solvers/combustion/PDRFoam/XiModels/transport/transport.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/XiModels/transport/transport.H b/applications/solvers/combustion/PDRFoam/XiModels/transport/transport.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/XiModels/transport/transport.H
rename to applications/solvers/combustion/PDRFoam/XiModels/transport/transport.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/bEqn.H b/applications/solvers/combustion/PDRFoam/bEqn.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/bEqn.H
rename to applications/solvers/combustion/PDRFoam/bEqn.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/createFieldRefs.H b/applications/solvers/combustion/PDRFoam/createFieldRefs.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/createFieldRefs.H
rename to applications/solvers/combustion/PDRFoam/createFieldRefs.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/createFields.H b/applications/solvers/combustion/PDRFoam/createFields.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/createFields.H
rename to applications/solvers/combustion/PDRFoam/createFields.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/ftEqn.H b/applications/solvers/combustion/PDRFoam/ftEqn.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/ftEqn.H
rename to applications/solvers/combustion/PDRFoam/ftEqn.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.C b/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.C
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.C
rename to applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.C
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H b/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H
rename to applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/pEqn.H b/applications/solvers/combustion/PDRFoam/pEqn.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/pEqn.H
rename to applications/solvers/combustion/PDRFoam/pEqn.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/readCombustionProperties.H b/applications/solvers/combustion/PDRFoam/readCombustionProperties.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/readCombustionProperties.H
rename to applications/solvers/combustion/PDRFoam/readCombustionProperties.H
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/rhoEqn.H b/applications/solvers/combustion/PDRFoam/rhoEqn.H
similarity index 95%
rename from applications/solvers/combustion/XiFoam/PDRFoam/rhoEqn.H
rename to applications/solvers/combustion/PDRFoam/rhoEqn.H
index aa88c47cbb..c7bb3a7de9 100644
--- a/applications/solvers/combustion/XiFoam/PDRFoam/rhoEqn.H
+++ b/applications/solvers/combustion/PDRFoam/rhoEqn.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
diff --git a/applications/solvers/combustion/XiFoam/PDRFoam/setDeltaT.H b/applications/solvers/combustion/PDRFoam/setDeltaT.H
similarity index 100%
rename from applications/solvers/combustion/XiFoam/PDRFoam/setDeltaT.H
rename to applications/solvers/combustion/PDRFoam/setDeltaT.H
diff --git a/applications/solvers/combustion/XiFoam/Allwclean b/applications/solvers/combustion/XiFoam/Allwclean
deleted file mode 100755
index 5f2ac20eb8..0000000000
--- a/applications/solvers/combustion/XiFoam/Allwclean
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-cd ${0%/*} || exit 1 # Run from this directory
-
-wclean libso ignition
-
-wclean
-wclean PDRFoam
-
-#------------------------------------------------------------------------------
diff --git a/applications/solvers/combustion/XiFoam/Allwmake b/applications/solvers/combustion/XiFoam/Allwmake
deleted file mode 100755
index 4f5fb28001..0000000000
--- a/applications/solvers/combustion/XiFoam/Allwmake
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-cd ${0%/*} || exit 1 # Run from this directory
-
-# Parse arguments for library compilation
-. $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
-
-wmake $targetType ignition
-
-wmake $targetType
-wmake $targetType PDRFoam
-
-#------------------------------------------------------------------------------
diff --git a/applications/solvers/combustion/XiFoam/EaEqn.H b/applications/solvers/combustion/XiFoam/EaEqn.H
deleted file mode 100644
index 3c7917ddbd..0000000000
--- a/applications/solvers/combustion/XiFoam/EaEqn.H
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- volScalarField& hea = thermo.he();
-
- fvScalarMatrix EaEqn
- (
- fvm::ddt(rho, hea) + mvConvection->fvmDiv(phi, hea)
- + fvc::ddt(rho, K) + fvc::div(phi, K)
- + (
- hea.name() == "ea"
- ? fvc::div(fvc::absolute(phi, rho, U), p/rho)
- : -dpdt
- )
- + thermophysicalTransport.divq(hea)
- + fvModels.source(rho, hea)
- );
-
- EaEqn.relax();
-
- fvConstraints.constrain(EaEqn);
-
- EaEqn.solve();
-
- fvConstraints.constrain(hea);
-
- thermo.correct();
-}
diff --git a/applications/solvers/combustion/XiFoam/EauEqn.H b/applications/solvers/combustion/XiFoam/EauEqn.H
deleted file mode 100644
index 23066e356c..0000000000
--- a/applications/solvers/combustion/XiFoam/EauEqn.H
+++ /dev/null
@@ -1,32 +0,0 @@
-if (ign.ignited())
-{
- volScalarField& heau = thermo.heu();
-
- fvScalarMatrix heauEqn
- (
- fvm::ddt(rho, heau) + mvConvection->fvmDiv(phi, heau)
- + (fvc::ddt(rho, K) + fvc::div(phi, K))*rho/thermo.rhou()
- + (
- heau.name() == "eau"
- ? fvc::div(fvc::absolute(phi, rho, U), p/rho)
- *rho/thermo.rhou()
- : -dpdt*rho/thermo.rhou()
- )
- + thermophysicalTransport.divq(heau)
-
- // These terms cannot be used in partially-premixed combustion due to
- // the resultant inconsistency between ft and heau transport.
- // A possible solution would be to solve for ftu as well as ft.
- //- fvm::div(muEff*fvc::grad(b)/(b + 0.001), heau)
- //+ fvm::Sp(fvc::div(muEff*fvc::grad(b)/(b + 0.001)), heau)
-
- ==
- fvModels.source(rho, heau)
- );
-
- fvConstraints.constrain(heauEqn);
-
- heauEqn.solve();
-
- fvConstraints.constrain(heau);
-}
diff --git a/applications/solvers/combustion/XiFoam/Make/files b/applications/solvers/combustion/XiFoam/Make/files
deleted file mode 100644
index a249e80d66..0000000000
--- a/applications/solvers/combustion/XiFoam/Make/files
+++ /dev/null
@@ -1,3 +0,0 @@
-XiFoam.C
-
-EXE = $(FOAM_APPBIN)/XiFoam
diff --git a/applications/solvers/combustion/XiFoam/UEqn.H b/applications/solvers/combustion/XiFoam/UEqn.H
deleted file mode 100644
index a26acd7134..0000000000
--- a/applications/solvers/combustion/XiFoam/UEqn.H
+++ /dev/null
@@ -1,20 +0,0 @@
- fvVectorMatrix UEqn
- (
- fvm::ddt(rho, U) + fvm::div(phi, U)
- + MRF.DDt(rho, U)
- + turbulence->divDevTau(U)
- ==
- fvModels.source(rho, U)
- );
-
- UEqn.relax();
-
- fvConstraints.constrain(UEqn);
-
- if (pimple.momentumPredictor())
- {
- solve(UEqn == -fvc::grad(p));
-
- fvConstraints.constrain(U);
- K = 0.5*magSqr(U);
- }
diff --git a/applications/solvers/combustion/XiFoam/XiFoam.C b/applications/solvers/combustion/XiFoam/XiFoam.C
deleted file mode 100644
index a4e4765ff0..0000000000
--- a/applications/solvers/combustion/XiFoam/XiFoam.C
+++ /dev/null
@@ -1,206 +0,0 @@
-/*---------------------------------------------------------------------------*\
- ========= |
- \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
- \\ / O peration | Website: https://openfoam.org
- \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
- \\/ M anipulation |
--------------------------------------------------------------------------------
-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 .
-
-Application
- XiFoam
-
-Description
- Solver for compressible premixed/partially-premixed combustion with
- turbulence modelling.
-
- Combusting RANS code using the b-Xi two-equation model.
- Xi may be obtained by either the solution of the Xi transport
- equation or from an algebraic expression. Both approaches are
- based on Gulder's flame speed correlation which has been shown
- to be appropriate by comparison with the results from the
- spectral model.
-
- Strain effects are encorporated directly into the Xi equation
- but not in the algebraic approximation. Further work need to be
- done on this issue, particularly regarding the enhanced removal rate
- caused by flame compression. Analysis using results of the spectral
- model will be required.
-
- For cases involving very lean Propane flames or other flames which are
- very strain-sensitive, a transport equation for the laminar flame
- speed is present. This equation is derived using heuristic arguments
- involving the strain time scale and the strain-rate at extinction.
- the transport velocity is the same as that for the Xi equation.
-
-\*---------------------------------------------------------------------------*/
-
-#include "fvCFD.H"
-#include "psiuMulticomponentThermo.H"
-#include "compressibleMomentumTransportModels.H"
-#include "RASThermophysicalTransportModel.H"
-#include "unityLewisEddyDiffusivity.H"
-#include "laminarFlameSpeed.H"
-#include "ignition.H"
-#include "Switch.H"
-#include "pimpleControl.H"
-#include "CorrectPhi.H"
-#include "fvModels.H"
-#include "fvConstraints.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-int main(int argc, char *argv[])
-{
- #include "postProcess.H"
-
- #include "setRootCaseLists.H"
- #include "createTime.H"
- #include "createMesh.H"
- #include "createDyMControls.H"
- #include "initContinuityErrs.H"
- #include "readCombustionProperties.H"
- #include "createFields.H"
- #include "createFieldRefs.H"
- #include "createRhoUfIfPresent.H"
-
- turbulence->validate();
-
- #include "compressibleCourantNo.H"
- #include "setInitialDeltaT.H"
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- Info<< "\nStarting time loop\n" << endl;
-
- while (pimple.run(runTime))
- {
- #include "readDyMControls.H"
-
- // Store divrhoU from the previous mesh so that it can be mapped
- // and used in correctPhi to ensure the corrected phi has the
- // same divergence
- autoPtr divrhoU;
- if (correctPhi)
- {
- divrhoU = new volScalarField
- (
- "divrhoU",
- fvc::div(fvc::absolute(phi, rho, U))
- );
- }
-
- #include "compressibleCourantNo.H"
- #include "setDeltaT.H"
-
- fvModels.preUpdateMesh();
-
- // Store momentum to set rhoUf for introduced faces.
- autoPtr rhoU;
- if (rhoUf.valid())
- {
- rhoU = new volVectorField("rhoU", rho*U);
- }
-
- // Update the mesh for topology change, mesh to mesh mapping
- mesh.update();
-
- runTime++;
-
- Info<< "Time = " << runTime.userTimeName() << nl << endl;
-
- // --- Pressure-velocity PIMPLE corrector loop
- while (pimple.loop())
- {
- if (pimple.firstPimpleIter() || pimple.moveMeshOuterCorrectors())
- {
- // Move the mesh
- mesh.move();
-
- if (mesh.changing())
- {
- MRF.update();
-
- if (correctPhi)
- {
- #include "correctPhi.H"
- }
-
- if (checkMeshCourantNo)
- {
- #include "meshCourantNo.H"
- }
- }
- }
-
- if
- (
- !pimple.simpleRho()
- && pimple.firstPimpleIter()
- )
- {
- #include "rhoEqn.H"
- }
-
- fvModels.correct();
-
- if (pimple.predictTransport())
- {
- turbulence->predict();
- thermophysicalTransport.predict();
- }
-
- #include "UEqn.H"
- #include "ftEqn.H"
- #include "bEqn.H"
- #include "EauEqn.H"
- #include "EaEqn.H"
-
- if (!ign.ignited())
- {
- thermo.heu() == thermo.he();
- }
-
- // --- Pressure corrector loop
- while (pimple.correct())
- {
- #include "pEqn.H"
- }
-
- if (pimple.correctTransport())
- {
- turbulence->correct();
- thermophysicalTransport.correct();
- }
- }
-
- rho = thermo.rho();
-
- runTime.write();
-
- Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
- << " ClockTime = " << runTime.elapsedClockTime() << " s"
- << nl << endl;
- }
-
- Info<< "End\n" << endl;
-
- return 0;
-}
-
-
-// ************************************************************************* //
diff --git a/applications/solvers/combustion/XiFoam/bEqn.H b/applications/solvers/combustion/XiFoam/bEqn.H
deleted file mode 100644
index 9e08594cdb..0000000000
--- a/applications/solvers/combustion/XiFoam/bEqn.H
+++ /dev/null
@@ -1,282 +0,0 @@
-if (ign.ignited())
-{
- // progress variable
- // ~~~~~~~~~~~~~~~~~
- volScalarField c("c", scalar(1) - b);
-
- // Unburnt gas density
- // ~~~~~~~~~~~~~~~~~~~
- volScalarField rhou(thermo.rhou());
-
- // Calculate flame normal etc.
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- volVectorField n("n", fvc::grad(b));
-
- volScalarField mgb(mag(n));
-
- dimensionedScalar dMgb = 1.0e-3*
- (b*c*mgb)().weightedAverage(mesh.V())
- /((b*c)().weightedAverage(mesh.V()) + small)
- + dimensionedScalar(mgb.dimensions(), small);
-
- mgb += dMgb;
-
- surfaceVectorField SfHat(mesh.Sf()/mesh.magSf());
- surfaceVectorField nfVec(fvc::interpolate(n));
- nfVec += SfHat*(fvc::snGrad(b) - (SfHat & nfVec));
- nfVec /= (mag(nfVec) + dMgb);
- surfaceScalarField nf((mesh.Sf() & nfVec));
- n /= mgb;
-
-
- #include "StCorr.H"
-
- // Calculate turbulent flame speed flux
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- surfaceScalarField phiSt("phiSt", fvc::interpolate(rhou*StCorr*Su*Xi)*nf);
-
- scalar StCoNum = max
- (
- mesh.surfaceInterpolation::deltaCoeffs()
- *mag(phiSt)/(fvc::interpolate(rho)*mesh.magSf())
- ).value()*runTime.deltaTValue();
-
- Info<< "Max St-Courant Number = " << StCoNum << endl;
-
- // Create b equation
- // ~~~~~~~~~~~~~~~~~
- fvScalarMatrix bEqn
- (
- fvm::ddt(rho, b)
- + mvConvection->fvmDiv(phi, b)
- + fvm::div(phiSt, b)
- - fvm::Sp(fvc::div(phiSt), b)
- - fvm::laplacian(thermophysicalTransport.DEff(b), b)
- ==
- fvModels.source(rho, b)
- );
-
-
- // Add ignition cell contribution to b-equation
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- #include "ignite.H"
-
-
- // Solve for b
- // ~~~~~~~~~~~
- bEqn.relax();
-
- fvConstraints.constrain(bEqn);
-
- bEqn.solve();
-
- fvConstraints.constrain(b);
-
- Info<< "min(b) = " << min(b).value() << endl;
-
-
- // Calculate coefficients for Gulder's flame speed correlation
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- volScalarField up(uPrimeCoef*sqrt((2.0/3.0)*turbulence->k()));
- // volScalarField up(sqrt(mag(diag(n * n) & diag(turbulence->r()))));
-
- volScalarField epsilon(pow(uPrimeCoef, 3)*turbulence->epsilon());
-
- volScalarField tauEta(sqrt(thermo.muu()/(rhou*epsilon)));
-
- volScalarField Reta
- (
- up
- / (
- sqrt(epsilon*tauEta)
- + dimensionedScalar(up.dimensions(), 1e-8)
- )
- );
-
- // volScalarField l = 0.337*k*sqrt(k)/epsilon;
- // Reta *= max((l - dimensionedScalar(dimLength, 1.5e-3))/l, 0);
-
- // Calculate Xi flux
- // ~~~~~~~~~~~~~~~~~
- surfaceScalarField phiXi
- (
- phiSt
- - fvc::interpolate
- (
- fvc::laplacian(thermophysicalTransport.DEff(b), b)/mgb
- )*nf
- + fvc::interpolate(rho)*fvc::interpolate(Su*(1.0/Xi - Xi))*nf
- );
-
-
- // Calculate mean and turbulent strain rates
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- volVectorField Ut(U + Su*Xi*n);
- volScalarField sigmat((n & n)*fvc::div(Ut) - (n & fvc::grad(Ut) & n));
-
- volScalarField sigmas
- (
- ((n & n)*fvc::div(U) - (n & fvc::grad(U) & n))/Xi
- + (
- (n & n)*fvc::div(Su*n)
- - (n & fvc::grad(Su*n) & n)
- )*(Xi + scalar(1))/(2*Xi)
- );
-
-
- // Calculate the unstrained laminar flame speed
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- volScalarField Su0(unstrainedLaminarFlameSpeed()());
-
-
- // Calculate the laminar flame speed in equilibrium with the applied strain
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- volScalarField SuInf(Su0*max(scalar(1) - sigmas/sigmaExt, scalar(0.01)));
-
- if (SuModel == "unstrained")
- {
- Su == Su0;
- }
- else if (SuModel == "equilibrium")
- {
- Su == SuInf;
- }
- else if (SuModel == "transport")
- {
- // Solve for the strained laminar flame speed
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- volScalarField Rc
- (
- (sigmas*SuInf*(Su0 - SuInf) + sqr(SuMin)*sigmaExt)
- /(sqr(Su0 - SuInf) + sqr(SuMin))
- );
-
- fvScalarMatrix SuEqn
- (
- fvm::ddt(rho, Su)
- + fvm::div(phi + phiXi, Su, "div(phiXi,Su)")
- - fvm::Sp(fvc::div(phiXi), Su)
- ==
- - fvm::SuSp(-rho*Rc*Su0/Su, Su)
- - fvm::SuSp(rho*(sigmas + Rc), Su)
- + fvModels.source(rho, Su)
- );
-
- SuEqn.relax();
-
- fvConstraints.constrain(SuEqn);
-
- SuEqn.solve();
-
- fvConstraints.constrain(Su);
-
- // Limit the maximum Su
- // ~~~~~~~~~~~~~~~~~~~~
- Su.min(SuMax);
- Su.max(SuMin);
- }
- else
- {
- FatalError
- << args.executable() << " : Unknown Su model " << SuModel
- << abort(FatalError);
- }
-
-
- // Calculate Xi according to the selected flame wrinkling model
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- if (XiModel == "fixed")
- {
- // Do nothing, Xi is fixed!
- }
- else if (XiModel == "algebraic")
- {
- // Simple algebraic model for Xi based on Gulders correlation
- // with a linear correction function to give a plausible profile for Xi
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Xi == scalar(1) +
- (scalar(1) + (2*XiShapeCoef)*(scalar(0.5) - b))
- *XiCoef*sqrt(up/(Su + SuMin))*Reta;
- }
- else if (XiModel == "transport")
- {
- // Calculate Xi transport coefficients based on Gulders correlation
- // and DNS data for the rate of generation
- // with a linear correction function to give a plausible profile for Xi
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- volScalarField XiEqStar
- (
- scalar(1.001) + XiCoef*sqrt(up/(Su + SuMin))*Reta
- );
-
- volScalarField XiEq
- (
- scalar(1.001)
- + (
- scalar(1)
- + (2*XiShapeCoef)
- *(scalar(0.5) - min(max(b, scalar(0)), scalar(1)))
- )*(XiEqStar - scalar(1.001))
- );
-
- volScalarField Gstar(0.28/tauEta);
- volScalarField R(Gstar*XiEqStar/(XiEqStar - scalar(1)));
- volScalarField G(R*(XiEq - scalar(1.001))/XiEq);
-
- // R *= (Gstar + 2*mag(dev(symm(fvc::grad(U)))))/Gstar;
-
- // Solve for the flame wrinkling
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- fvScalarMatrix XiEqn
- (
- fvm::ddt(rho, Xi)
- + fvm::div(phi + phiXi, Xi, "div(phiXi,Xi)")
- - fvm::Sp(fvc::div(phiXi), Xi)
- ==
- rho*R
- - fvm::Sp(rho*(R - G), Xi)
- - fvm::Sp
- (
- rho*max
- (
- sigmat - sigmas,
- dimensionedScalar(sigmat.dimensions(), 0)
- ),
- Xi
- )
- + fvModels.source(rho, Xi)
- );
-
- XiEqn.relax();
-
- fvConstraints.constrain(XiEqn);
-
- XiEqn.solve();
-
- fvConstraints.constrain(Xi);
-
- // Correct boundedness of Xi
- // ~~~~~~~~~~~~~~~~~~~~~~~~~
- Xi.max(1.0);
- Info<< "max(Xi) = " << max(Xi).value() << endl;
- Info<< "max(XiEq) = " << max(XiEq).value() << endl;
- }
- else
- {
- FatalError
- << args.executable() << " : Unknown Xi model " << XiModel
- << abort(FatalError);
- }
-
- Info<< "Combustion progress = "
- << 100*(scalar(1) - b)().weightedAverage(mesh.V()).value() << "%"
- << endl;
-
- St = Xi*Su;
-}
diff --git a/applications/solvers/combustion/XiFoam/correctPhi.H b/applications/solvers/combustion/XiFoam/correctPhi.H
deleted file mode 100644
index d9c9d641fb..0000000000
--- a/applications/solvers/combustion/XiFoam/correctPhi.H
+++ /dev/null
@@ -1,19 +0,0 @@
-// Calculate absolute flux
-// from the mapped surface velocity
-phi = mesh.Sf() & rhoUf();
-
-correctUphiBCs(rho, U, phi, true);
-
-CorrectPhi
-(
- phi,
- p,
- rho,
- psi,
- dimensionedScalar("rAUf", dimTime, 1),
- divrhoU(),
- pimple
-);
-
-// Make the fluxes relative to the mesh-motion
-fvc::makeRelative(phi, rho, U);
diff --git a/applications/solvers/combustion/XiFoam/createFieldRefs.H b/applications/solvers/combustion/XiFoam/createFieldRefs.H
deleted file mode 100644
index 502b3b4230..0000000000
--- a/applications/solvers/combustion/XiFoam/createFieldRefs.H
+++ /dev/null
@@ -1 +0,0 @@
-const volScalarField& psi = thermo.psi();
diff --git a/applications/solvers/combustion/XiFoam/createFields.H b/applications/solvers/combustion/XiFoam/createFields.H
deleted file mode 100644
index 002e662d19..0000000000
--- a/applications/solvers/combustion/XiFoam/createFields.H
+++ /dev/null
@@ -1,157 +0,0 @@
-Info<< "Reading thermophysical properties\n" << endl;
-
-autoPtr pThermo
-(
- psiuMulticomponentThermo::New(mesh)
-);
-psiuMulticomponentThermo& thermo = pThermo();
-thermo.validate(args.executable(), "ha", "ea");
-
-basicCombustionMixture& composition = thermo.composition();
-
-volScalarField rho
-(
- IOobject
- (
- "rho",
- runTime.name(),
- mesh,
- IOobject::NO_READ,
- IOobject::AUTO_WRITE
- ),
- thermo.renameRho()
-);
-
-volScalarField& p = thermo.p();
-
-volScalarField& b = composition.Y("b");
-Info<< "min(b) = " << min(b).value() << endl;
-
-
-Info<< "\nReading field U\n" << endl;
-volVectorField U
-(
- IOobject
- (
- "U",
- runTime.name(),
- mesh,
- IOobject::MUST_READ,
- IOobject::AUTO_WRITE
- ),
- mesh
-);
-
-#include "compressibleCreatePhi.H"
-
-mesh.schemes().setFluxRequired(p.name());
-
-Info<< "Creating turbulence model\n" << endl;
-autoPtr turbulence
-(
- compressible::momentumTransportModel::New
- (
- rho,
- U,
- phi,
- thermo
- )
-);
-
-Info<< "Creating thermophysical transport model\n" << endl;
-turbulenceThermophysicalTransportModels::unityLewisEddyDiffusivity
-<
- RASThermophysicalTransportModel
- <
- ThermophysicalTransportModel
- <
- compressibleMomentumTransportModel,
- fluidThermo
- >
- >
-> thermophysicalTransport(turbulence(), thermo, true);
-
-Info<< "Creating field dpdt\n" << endl;
-volScalarField dpdt
-(
- IOobject
- (
- "dpdt",
- runTime.name(),
- mesh
- ),
- mesh,
- dimensionedScalar(p.dimensions()/dimTime, 0)
-);
-
-Info<< "Creating field kinetic energy K\n" << endl;
-volScalarField K("K", 0.5*magSqr(U));
-
-Info<< "Creating field Xi\n" << endl;
-volScalarField Xi
-(
- IOobject
- (
- "Xi",
- runTime.name(),
- mesh,
- IOobject::MUST_READ,
- IOobject::AUTO_WRITE
- ),
- mesh
-);
-
-
-Info<< "Creating the unstrained laminar flame speed\n" << endl;
-autoPtr unstrainedLaminarFlameSpeed
-(
- laminarFlameSpeed::New(thermo)
-);
-
-
-Info<< "Reading strained laminar flame speed field Su\n" << endl;
-volScalarField Su
-(
- IOobject
- (
- "Su",
- runTime.name(),
- mesh,
- IOobject::MUST_READ,
- IOobject::AUTO_WRITE
- ),
- mesh
-);
-
-dimensionedScalar SuMin = 0.01*Su.average();
-dimensionedScalar SuMax = 4*Su.average();
-
-Info<< "Calculating turbulent flame speed field St\n" << endl;
-volScalarField St
-(
- IOobject
- (
- "St",
- runTime.name(),
- mesh,
- IOobject::NO_READ,
- IOobject::AUTO_WRITE
- ),
- Xi*Su
-);
-
-
-multivariateSurfaceInterpolationScheme::fieldTable fields;
-
-if (composition.contains("ft"))
-{
- fields.add(composition.Y("ft"));
-}
-
-fields.add(b);
-fields.add(thermo.he());
-fields.add(thermo.heu());
-
-#include "createMRF.H"
-#include "createFvModels.H"
-#include "createFvConstraints.H"
diff --git a/applications/solvers/combustion/XiFoam/ftEqn.H b/applications/solvers/combustion/XiFoam/ftEqn.H
deleted file mode 100644
index 117995c258..0000000000
--- a/applications/solvers/combustion/XiFoam/ftEqn.H
+++ /dev/null
@@ -1,30 +0,0 @@
-tmp> mvConvection
-(
- fv::convectionScheme::New
- (
- mesh,
- fields,
- phi,
- mesh.schemes().div("div(phi,ft_b_ha_hau)")
- )
-);
-
-if (composition.contains("ft"))
-{
- volScalarField& ft = composition.Y("ft");
-
- fvScalarMatrix ftEqn
- (
- fvm::ddt(rho, ft)
- + mvConvection->fvmDiv(phi, ft)
- - fvm::laplacian(thermophysicalTransport.DEff(ft), ft)
- ==
- fvModels.source(rho, ft)
- );
-
- fvConstraints.constrain(ftEqn);
-
- ftEqn.solve();
-
- fvConstraints.constrain(ft);
-}
diff --git a/applications/solvers/combustion/XiFoam/ignition/Make/options b/applications/solvers/combustion/XiFoam/ignition/Make/options
deleted file mode 100644
index 0929e2bc8f..0000000000
--- a/applications/solvers/combustion/XiFoam/ignition/Make/options
+++ /dev/null
@@ -1,11 +0,0 @@
-EXE_INC = \
- -I$(LIB_SRC)/finiteVolume/lnInclude \
- -I$(LIB_SRC)/meshTools/lnInclude \
- -I$(LIB_SRC)/dynamicMesh/lnInclude \
- -I$(LIB_SRC)/fvMotionSolver/lnInclude
-
-LIB_LIBS = \
- -lfiniteVolume \
- -lmeshTools \
- -ldynamicMesh \
- -lfvMotionSolvers
diff --git a/applications/solvers/combustion/XiFoam/pEqn.H b/applications/solvers/combustion/XiFoam/pEqn.H
deleted file mode 100644
index e7a445dab2..0000000000
--- a/applications/solvers/combustion/XiFoam/pEqn.H
+++ /dev/null
@@ -1,89 +0,0 @@
-rho = thermo.rho();
-
-volScalarField rAU(1.0/UEqn.A());
-surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
-volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p));
-
-surfaceScalarField phiHbyA
-(
- "phiHbyA",
- fvc::interpolate(rho)*fvc::flux(HbyA)
- + MRF.zeroFilter(rhorAUf*fvc::ddtCorr(rho, U, phi, rhoUf))
-);
-
-MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
-
-// Update the pressure BCs to ensure flux consistency
-constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
-
-fvc::makeRelative(phiHbyA, rho, U);
-
-if (pimple.transonic())
-{
- const surfaceScalarField phid
- (
- "phid",
- (fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA
- );
-
- while (pimple.correctNonOrthogonal())
- {
- fvScalarMatrix pEqn
- (
- fvm::ddt(psi, p)
- + fvm::div(phid, p)
- - fvm::laplacian(rhorAUf, p)
- ==
- fvModels.source(psi, p, rho.name())
- );
-
- pEqn.solve();
-
- if (pimple.finalNonOrthogonalIter())
- {
- phi == pEqn.flux();
- }
- }
-}
-else
-{
- while (pimple.correctNonOrthogonal())
- {
- fvScalarMatrix pEqn
- (
- fvm::ddt(psi, p)
- + fvc::div(phiHbyA)
- - fvm::laplacian(rhorAUf, p)
- ==
- fvModels.source(psi, p, rho.name())
- );
-
- pEqn.solve();
-
- if (pimple.finalNonOrthogonalIter())
- {
- phi = phiHbyA + pEqn.flux();
- }
- }
-}
-
-#include "rhoEqn.H"
-#include "compressibleContinuityErrs.H"
-
-U = HbyA - rAU*fvc::grad(p);
-U.correctBoundaryConditions();
-fvConstraints.constrain(U);
-K = 0.5*magSqr(U);
-
-// Correct rhoUf if the mesh is moving
-fvc::correctRhoUf(rhoUf, rho, U, phi, MRF);
-
-if (thermo.dpdt())
-{
- dpdt = fvc::ddt(p);
-
- if (mesh.moving())
- {
- dpdt -= fvc::div(fvc::meshPhi(rho, U), p);
- }
-}
diff --git a/applications/solvers/combustion/XiFoam/readCombustionProperties.H b/applications/solvers/combustion/XiFoam/readCombustionProperties.H
deleted file mode 100644
index 58b0626fb4..0000000000
--- a/applications/solvers/combustion/XiFoam/readCombustionProperties.H
+++ /dev/null
@@ -1,45 +0,0 @@
- Info<< "Reading combustion properties\n" << endl;
-
- IOdictionary combustionProperties
- (
- IOobject
- (
- "combustionProperties",
- runTime.constant(),
- mesh,
- IOobject::MUST_READ_IF_MODIFIED,
- IOobject::NO_WRITE
- )
- );
-
- word SuModel
- (
- combustionProperties.lookup("SuModel")
- );
-
- dimensionedScalar sigmaExt
- (
- combustionProperties.lookup("sigmaExt")
- );
-
- word XiModel
- (
- combustionProperties.lookup("XiModel")
- );
-
- dimensionedScalar XiCoef
- (
- combustionProperties.lookup("XiCoef")
- );
-
- dimensionedScalar XiShapeCoef
- (
- combustionProperties.lookup("XiShapeCoef")
- );
-
- dimensionedScalar uPrimeCoef
- (
- combustionProperties.lookup("uPrimeCoef")
- );
-
- ignition ign(combustionProperties, runTime, mesh);
diff --git a/applications/solvers/modules/Allwmake b/applications/solvers/modules/Allwmake
index 133d8c9f99..f08b4c7e28 100755
--- a/applications/solvers/modules/Allwmake
+++ b/applications/solvers/modules/Allwmake
@@ -9,6 +9,7 @@ wmake $targetType incompressibleFluid
wmake $targetType isothermalFluid
wmake $targetType fluid
wmake $targetType multicomponentFluid
+wmake $targetType XiFluid
wmake $targetType VoFSolver
incompressibleVoF/Allwmake $targetType $*
compressibleVoF/Allwmake $targetType $*
diff --git a/applications/solvers/modules/XiFluid/Make/files b/applications/solvers/modules/XiFluid/Make/files
new file mode 100644
index 0000000000..80b9dc16c1
--- /dev/null
+++ b/applications/solvers/modules/XiFluid/Make/files
@@ -0,0 +1,4 @@
+XiFluid.C
+thermophysicalPredictor.C
+
+LIB = $(FOAM_LIBBIN)/libXiFluid
diff --git a/applications/solvers/combustion/XiFoam/Make/options b/applications/solvers/modules/XiFluid/Make/options
similarity index 76%
rename from applications/solvers/combustion/XiFoam/Make/options
rename to applications/solvers/modules/XiFluid/Make/options
index 51d632001a..2247441851 100644
--- a/applications/solvers/combustion/XiFoam/Make/options
+++ b/applications/solvers/modules/XiFluid/Make/options
@@ -1,21 +1,25 @@
EXE_INC = \
- -Iignition/lnInclude \
- -I$(LIB_SRC)/physicalProperties/lnInclude \
- -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
- -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
- -I$(LIB_SRC)/thermophysicalModels/multicomponentThermo/lnInclude \
+ -I$(FOAM_SOLVERS)/modules/fluidSolver/lnInclude \
+ -I$(FOAM_SOLVERS)/modules/isothermalFluid/lnInclude \
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
-I$(LIB_SRC)/ThermophysicalTransportModels/thermophysicalTransportModel/lnInclude \
-I$(LIB_SRC)/ThermophysicalTransportModels/fluid/lnInclude \
-I$(LIB_SRC)/ThermophysicalTransportModels/fluidThermo/lnInclude \
+ -I$(LIB_SRC)/physicalProperties/lnInclude \
+ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
+ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+ -I$(LIB_SRC)/thermophysicalModels/multicomponentThermo/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/laminarFlameSpeed/lnInclude \
+ -I$(LIB_SRC)/thermophysicalModels/ignition/lnInclude \
+ -I$(LIB_SRC)/finiteVolume/cfdTools \
-I$(LIB_SRC)/finiteVolume/lnInclude \
- -I$(LIB_SRC)/sampling/lnInclude \
- -I$(LIB_SRC)/meshTools/lnInclude
+ -I$(LIB_SRC)/meshTools/lnInclude \
+ -I$(LIB_SRC)/sampling/lnInclude
-EXE_LIBS = \
- -lXiIgnition \
+LIB_LIBS = \
+ -lfluidSolver \
+ -lisothermalFluid \
-lmomentumTransportModels \
-lcompressibleMomentumTransportModels \
-lfluidThermoThermophysicalTransportModels \
@@ -23,6 +27,7 @@ EXE_LIBS = \
-lmulticomponentThermophysicalModels \
-lspecie \
-llaminarFlameSpeedModels \
+ -lXiIgnition \
-lfiniteVolume \
-lfvModels \
-lfvConstraints \
diff --git a/applications/solvers/modules/XiFluid/XiFluid.C b/applications/solvers/modules/XiFluid/XiFluid.C
new file mode 100644
index 0000000000..7e0de95229
--- /dev/null
+++ b/applications/solvers/modules/XiFluid/XiFluid.C
@@ -0,0 +1,199 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration | Website: https://openfoam.org
+ \\ / A nd | Copyright (C) 2022 OpenFOAM Foundation
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+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 .
+
+\*---------------------------------------------------------------------------*/
+
+#include "XiFluid.H"
+#include "localEulerDdtScheme.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace solvers
+{
+ defineTypeNameAndDebug(XiFluid, 0);
+ addToRunTimeSelectionTable(solver, XiFluid, fvMesh);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::solvers::XiFluid::XiFluid(fvMesh& mesh)
+:
+ isothermalFluid
+ (
+ mesh,
+ autoPtr(psiuMulticomponentThermo::New(mesh).ptr())
+ ),
+
+ thermo(refCast(isothermalFluid::thermo)),
+
+ composition(thermo.composition()),
+
+ b(composition.Y("b")),
+
+ unstrainedLaminarFlameSpeed
+ (
+ laminarFlameSpeed::New(thermo)
+ ),
+
+ Su
+ (
+ IOobject
+ (
+ "Su",
+ runTime.name(),
+ mesh,
+ IOobject::MUST_READ,
+ IOobject::AUTO_WRITE
+ ),
+ mesh
+ ),
+
+ SuMin(0.01*Su.average()),
+ SuMax(4*Su.average()),
+
+ Xi
+ (
+ IOobject
+ (
+ "Xi",
+ runTime.name(),
+ mesh,
+ IOobject::MUST_READ,
+ IOobject::AUTO_WRITE
+ ),
+ mesh
+ ),
+
+ St
+ (
+ IOobject
+ (
+ "St",
+ runTime.name(),
+ mesh,
+ IOobject::NO_READ,
+ IOobject::AUTO_WRITE
+ ),
+ Xi*Su
+ ),
+
+ combustionProperties
+ (
+ IOobject
+ (
+ "combustionProperties",
+ runTime.constant(),
+ mesh,
+ IOobject::MUST_READ_IF_MODIFIED,
+ IOobject::NO_WRITE
+ )
+ ),
+
+ SuModel
+ (
+ combustionProperties.lookup("SuModel")
+ ),
+
+ sigmaExt
+ (
+ combustionProperties.lookup("sigmaExt")
+ ),
+
+ XiModel
+ (
+ combustionProperties.lookup("XiModel")
+ ),
+
+ XiCoef
+ (
+ combustionProperties.lookup("XiCoef")
+ ),
+
+ XiShapeCoef
+ (
+ combustionProperties.lookup("XiShapeCoef")
+ ),
+
+ uPrimeCoef
+ (
+ combustionProperties.lookup("uPrimeCoef")
+ ),
+
+ ign(combustionProperties, runTime, mesh),
+
+ thermophysicalTransport
+ (
+ momentumTransport(),
+ thermo,
+ true
+ )
+{
+ thermo.validate(type(), "ha", "ea");
+
+ if (composition.contains("ft"))
+ {
+ fields.add(composition.Y("ft"));
+ }
+
+ fields.add(b);
+ fields.add(thermo.he());
+ fields.add(thermo.heu());
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+Foam::solvers::XiFluid::~XiFluid()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
+
+void Foam::solvers::XiFluid::prePredictor()
+{
+ isothermalFluid::prePredictor();
+
+ if (pimple.predictTransport())
+ {
+ thermophysicalTransport.predict();
+ }
+}
+
+
+void Foam::solvers::XiFluid::postCorrector()
+{
+ isothermalFluid::postCorrector();
+
+ if (pimple.correctTransport())
+ {
+ thermophysicalTransport.correct();
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/modules/XiFluid/XiFluid.H b/applications/solvers/modules/XiFluid/XiFluid.H
new file mode 100644
index 0000000000..cfd5b96105
--- /dev/null
+++ b/applications/solvers/modules/XiFluid/XiFluid.H
@@ -0,0 +1,264 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration | Website: https://openfoam.org
+ \\ / A nd | Copyright (C) 2022 OpenFOAM Foundation
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+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 .
+
+Class
+ Foam::solvers::XiFluid
+
+Description
+ Solver module for compressible premixed/partially-premixed combustion with
+ turbulence modelling.
+
+ Combusting RANS code using the b-Xi two-equation model.
+ Xi may be obtained by either the solution of the Xi transport
+ equation or from an algebraic expression. Both approaches are
+ based on Gulder's flame speed correlation which has been shown
+ to be appropriate by comparison with the results from the
+ spectral model.
+
+ Strain effects are encorporated directly into the Xi equation
+ but not in the algebraic approximation. Further work need to be
+ done on this issue, particularly regarding the enhanced removal rate
+ caused by flame compression. Analysis using results of the spectral
+ model will be required.
+
+ For cases involving very lean Propane flames or other flames which are
+ very strain-sensitive, a transport equation for the laminar flame
+ speed is present. This equation is derived using heuristic arguments
+ involving the strain time scale and the strain-rate at extinction.
+ the transport velocity is the same as that for the Xi equation.
+
+ Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and
+ pseudo-transient and steady simulations.
+
+ Optional fvModels and fvConstraints are provided to enhance the simulation
+ in many ways including adding various sources, chemical reactions,
+ combustion, Lagrangian particles, radiation, surface film etc. and
+ constraining or limiting the solution.
+
+ Reference:
+ \verbatim
+ Greenshields, C. J., & Weller, H. G. (2022).
+ Notes on Computational Fluid Dynamics: General Principles.
+ CFD Direct Ltd.: Reading, UK.
+ \endverbatim
+
+SourceFiles
+ XiFluid.C
+
+See also
+ Foam::solvers::fluidSolver
+ Foam::solvers::isothermalFluid
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef XiFluid_H
+#define XiFluid_H
+
+#include "isothermalFluid.H"
+#include "psiuMulticomponentThermo.H"
+#include "RASThermophysicalTransportModel.H"
+#include "unityLewisEddyDiffusivity.H"
+#include "laminarFlameSpeed.H"
+#include "ignition.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace solvers
+{
+
+/*---------------------------------------------------------------------------*\
+ Class XiFluid Declaration
+\*---------------------------------------------------------------------------*/
+
+class XiFluid
+:
+ public isothermalFluid
+{
+
+protected:
+
+ // Thermophysical properties
+
+ psiuMulticomponentThermo& thermo;
+
+
+ // Composition
+
+ //- Reference to the combustion mixture
+ basicCombustionMixture& composition;
+
+ //- Reference to the combustion regress variable
+ // obtained from the combustion mixture
+ volScalarField& b;
+
+ //- Set of fields used for the multivariate convection scheme
+ multivariateSurfaceInterpolationScheme::fieldTable fields;
+
+
+ // Reactions
+
+ //- Laminar flame-speed model
+ autoPtr unstrainedLaminarFlameSpeed;
+
+ //- Laminar flame-speed field
+ volScalarField Su;
+
+ //- Minimum laminar flame-speed allowed for numerical stability
+ dimensionedScalar SuMin;
+
+ //- Maximum laminar flame-speed allowed for numerical stability
+ dimensionedScalar SuMax;
+
+ //- Flame wrinkling coefficient field
+ volScalarField Xi;
+
+ //- Turbulent flame-speed field
+ volScalarField St;
+
+ //- Dictionary of combustion model coefficients
+ IOdictionary combustionProperties;
+
+ //- Name of the strained laminar flame-speed model
+ word SuModel;
+
+ //- Laminar flame extinction strain-rate
+ dimensionedScalar sigmaExt;
+
+ //- Name of the flame wrinkling model
+ word XiModel;
+
+ //- Flame wrinkling model coefficient
+ dimensionedScalar XiCoef;
+
+ //- Flame wrinkling model shape coefficient
+ dimensionedScalar XiShapeCoef;
+
+ //- Flame wrinkling model u' coefficient
+ dimensionedScalar uPrimeCoef;
+
+ //- Ignition model
+ ignition ign;
+
+
+ // Thermophysical transport
+
+ turbulenceThermophysicalTransportModels::unityLewisEddyDiffusivity
+ <
+ RASThermophysicalTransportModel
+ <
+ ThermophysicalTransportModel
+ <
+ compressibleMomentumTransportModel,
+ fluidThermo
+ >
+ >
+ > thermophysicalTransport;
+
+
+ // Protected member functions
+
+ //- Solve the ft equation for partially-premixed mixtures
+ void ftSolve
+ (
+ const fv::convectionScheme& mvConvection
+ );
+
+ //- Calculate and return the turbulent flame-speed kernel correction
+ dimensionedScalar StCorr
+ (
+ const volScalarField& c,
+ const surfaceScalarField& nf,
+ const dimensionedScalar& dMgb
+ ) const;
+
+ //- Solve the Xi and regress variable equations
+ void bSolve
+ (
+ const fv::convectionScheme& mvConvection
+ );
+
+ //- Solve the unburnt energy equation
+ void EauSolve
+ (
+ const fv::convectionScheme& mvConvection
+ );
+
+ //- Solve the energy equation
+ void EaSolve
+ (
+ const fv::convectionScheme& mvConvection
+ );
+
+
+public:
+
+ //- Runtime type information
+ TypeName("XiFluid");
+
+
+ // Constructors
+
+ //- Construct from region mesh
+ XiFluid(fvMesh& mesh);
+
+ //- Disallow default bitwise copy construction
+ XiFluid(const XiFluid&) = delete;
+
+
+ //- Destructor
+ virtual ~XiFluid();
+
+
+ // Member Functions
+
+ //- Called at the start of the PIMPLE loop
+ virtual void prePredictor();
+
+ //- Construct and solve the energy equation,
+ // convert to temperature
+ // and update thermophysical and transport properties
+ virtual void thermophysicalPredictor();
+
+ //- Correct the momentum and thermophysical transport modelling
+ virtual void postCorrector();
+
+
+ // Member Operators
+
+ //- Disallow default bitwise assignment
+ void operator=(const XiFluid&) = delete;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace solvers
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/modules/XiFluid/thermophysicalPredictor.C b/applications/solvers/modules/XiFluid/thermophysicalPredictor.C
new file mode 100644
index 0000000000..5e036ed6e3
--- /dev/null
+++ b/applications/solvers/modules/XiFluid/thermophysicalPredictor.C
@@ -0,0 +1,591 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration | Website: https://openfoam.org
+ \\ / A nd | Copyright (C) 2022 OpenFOAM Foundation
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+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 .
+
+\*---------------------------------------------------------------------------*/
+
+#include "XiFluid.H"
+#include "fvcSnGrad.H"
+#include "fvcLaplacian.H"
+#include "fvcDdt.H"
+#include "fvcMeshPhi.H"
+#include "fvmDiv.H"
+#include "fvmSup.H"
+
+// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
+
+void Foam::solvers::XiFluid::ftSolve
+(
+ const fv::convectionScheme& mvConvection
+)
+{
+ volScalarField& ft = composition.Y("ft");
+
+ fvScalarMatrix ftEqn
+ (
+ fvm::ddt(rho, ft)
+ + mvConvection.fvmDiv(phi, ft)
+ - fvm::laplacian(thermophysicalTransport.DEff(ft), ft)
+ ==
+ fvModels().source(rho, ft)
+ );
+
+ fvConstraints().constrain(ftEqn);
+
+ ftEqn.solve();
+
+ fvConstraints().constrain(ft);
+}
+
+
+Foam::dimensionedScalar Foam::solvers::XiFluid::StCorr
+(
+ const volScalarField& c,
+ const surfaceScalarField& nf,
+ const dimensionedScalar& dMgb
+) const
+{
+ dimensionedScalar StCorr("StCorr", dimless, 1.0);
+
+ if (ign.igniting())
+ {
+ // Calculate volume of ignition kernel
+ const dimensionedScalar Vk("Vk", dimVolume, gSum(c*mesh.V().field()));
+ dimensionedScalar Ak("Ak", dimArea, 0.0);
+
+ if (Vk.value() > small)
+ {
+ // Calculate kernel area from its volume
+ // and the dimensionality of the case
+
+ switch(mesh.nGeometricD())
+ {
+ case 3:
+ {
+ // Assume it is part-spherical
+ const scalar sphereFraction
+ (
+ combustionProperties.lookup
+ (
+ "ignitionSphereFraction"
+ )
+ );
+
+ Ak = sphereFraction*4.0*constant::mathematical::pi
+ *pow
+ (
+ 3.0*Vk
+ /(sphereFraction*4.0*constant::mathematical::pi),
+ 2.0/3.0
+ );
+ }
+ break;
+
+ case 2:
+ {
+ // Assume it is part-circular
+ const dimensionedScalar thickness
+ (
+ combustionProperties.lookup("ignitionThickness")
+ );
+
+ const scalar circleFraction
+ (
+ combustionProperties.lookup
+ (
+ "ignitionCircleFraction"
+ )
+ );
+
+ Ak = circleFraction*constant::mathematical::pi*thickness
+ *sqrt
+ (
+ 4.0*Vk
+ /(
+ circleFraction
+ *thickness
+ *constant::mathematical::pi
+ )
+ );
+ }
+ break;
+
+ case 1:
+ // Assume it is plane or two planes
+ Ak = dimensionedScalar
+ (
+ combustionProperties.lookup("ignitionKernelArea")
+ );
+ break;
+ }
+
+ // Calculate kernel area from b field consistent with the
+ // discretisation of the b equation.
+ const volScalarField mgb
+ (
+ fvc::div(nf, b, "div(phiSt,b)") - b*fvc::div(nf) + dMgb
+ );
+ const dimensionedScalar AkEst = gSum(mgb*mesh.V().field());
+
+ StCorr.value() = max(min((Ak/AkEst).value(), 10.0), 1.0);
+
+ Info<< "StCorr = " << StCorr.value() << endl;
+ }
+ }
+
+ return StCorr;
+}
+
+
+void Foam::solvers::XiFluid::bSolve
+(
+ const fv::convectionScheme& mvConvection
+)
+{
+ // progress variable
+ // ~~~~~~~~~~~~~~~~~
+ const volScalarField c("c", scalar(1) - b);
+
+ // Unburnt gas density
+ // ~~~~~~~~~~~~~~~~~~~
+ const volScalarField rhou(thermo.rhou());
+
+ // Calculate flame normal etc.
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ volVectorField n("n", fvc::grad(b));
+
+ volScalarField mgb(mag(n));
+
+ const dimensionedScalar dMgb = 1.0e-3*
+ (b*c*mgb)().weightedAverage(mesh.V())
+ /((b*c)().weightedAverage(mesh.V()) + small)
+ + dimensionedScalar(mgb.dimensions(), small);
+
+ mgb += dMgb;
+
+ const surfaceVectorField SfHat(mesh.Sf()/mesh.magSf());
+ surfaceVectorField nfVec(fvc::interpolate(n));
+ nfVec += SfHat*(fvc::snGrad(b) - (SfHat & nfVec));
+ nfVec /= (mag(nfVec) + dMgb);
+ surfaceScalarField nf((mesh.Sf() & nfVec));
+ n /= mgb;
+
+ // Calculate turbulent flame speed flux
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ const surfaceScalarField phiSt
+ (
+ "phiSt",
+ fvc::interpolate(rhou*StCorr(c, nf, dMgb)*Su*Xi)*nf
+ );
+
+ const scalar StCoNum = max
+ (
+ mesh.surfaceInterpolation::deltaCoeffs()
+ *mag(phiSt)/(fvc::interpolate(rho)*mesh.magSf())
+ ).value()*runTime.deltaTValue();
+
+ Info<< "Max St-Courant Number = " << StCoNum << endl;
+
+ // Create b equation
+ // ~~~~~~~~~~~~~~~~~
+ fvScalarMatrix bEqn
+ (
+ fvm::ddt(rho, b)
+ + mvConvection.fvmDiv(phi, b)
+ + fvm::div(phiSt, b)
+ - fvm::Sp(fvc::div(phiSt), b)
+ - fvm::laplacian(thermophysicalTransport.DEff(b), b)
+ ==
+ fvModels().source(rho, b)
+ );
+
+
+ // Add ignition cell contribution to b-equation
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ forAll(ign.sites(), i)
+ {
+ const ignitionSite& ignSite = ign.sites()[i];
+
+ if (ignSite.igniting())
+ {
+ forAll(ignSite.cells(), icelli)
+ {
+ label ignCell = ignSite.cells()[icelli];
+ Info<< "Igniting cell " << ignCell;
+
+ Info<< " state :"
+ << ' ' << b[ignCell]
+ << ' ' << Xi[ignCell]
+ << ' ' << Su[ignCell]
+ << ' ' << mgb[ignCell]
+ << endl;
+
+ bEqn.diag()[ignSite.cells()[icelli]] +=
+ (
+ ignSite.strength()*ignSite.cellVolumes()[icelli]
+ *rhou[ignSite.cells()[icelli]]/ignSite.duration()
+ )/(b[ignSite.cells()[icelli]] + 0.001);
+ }
+ }
+ }
+
+
+ // Solve for b
+ // ~~~~~~~~~~~
+ bEqn.relax();
+
+ fvConstraints().constrain(bEqn);
+
+ bEqn.solve();
+
+ fvConstraints().constrain(b);
+
+ Info<< "min(b) = " << min(b).value() << endl;
+
+
+ // Calculate coefficients for Gulder's flame speed correlation
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ const volScalarField up(uPrimeCoef*sqrt((2.0/3.0)*momentumTransport->k()));
+ // volScalarField up(sqrt(mag(diag(n * n) & diag(momentumTransport->r()))));
+
+ const volScalarField epsilon
+ (
+ pow(uPrimeCoef, 3)*momentumTransport->epsilon()
+ );
+
+ const volScalarField tauEta(sqrt(thermo.muu()/(rhou*epsilon)));
+
+ const volScalarField Reta
+ (
+ up
+ / (
+ sqrt(epsilon*tauEta)
+ + dimensionedScalar(up.dimensions(), 1e-8)
+ )
+ );
+
+ // volScalarField l = 0.337*k*sqrt(k)/epsilon;
+ // Reta *= max((l - dimensionedScalar(dimLength, 1.5e-3))/l, 0);
+
+ // Calculate Xi flux
+ // ~~~~~~~~~~~~~~~~~
+ const surfaceScalarField phiXi
+ (
+ phiSt
+ - fvc::interpolate
+ (
+ fvc::laplacian(thermophysicalTransport.DEff(b), b)/mgb
+ )*nf
+ + fvc::interpolate(rho)*fvc::interpolate(Su*(1.0/Xi - Xi))*nf
+ );
+
+
+ // Calculate mean and turbulent strain rates
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ const volVectorField Ut(U + Su*Xi*n);
+ const volScalarField sigmat((n & n)*fvc::div(Ut) - (n & fvc::grad(Ut) & n));
+
+ const volScalarField sigmas
+ (
+ ((n & n)*fvc::div(U) - (n & fvc::grad(U) & n))/Xi
+ + (
+ (n & n)*fvc::div(Su*n)
+ - (n & fvc::grad(Su*n) & n)
+ )*(Xi + scalar(1))/(2*Xi)
+ );
+
+
+ // Calculate the unstrained laminar flame speed
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ const volScalarField Su0(unstrainedLaminarFlameSpeed()());
+
+
+ // Calculate the laminar flame speed in equilibrium with the applied strain
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ const volScalarField SuInf
+ (
+ Su0*max(scalar(1) - sigmas/sigmaExt, scalar(0.01))
+ );
+
+ if (SuModel == "unstrained")
+ {
+ Su == Su0;
+ }
+ else if (SuModel == "equilibrium")
+ {
+ Su == SuInf;
+ }
+ else if (SuModel == "transport")
+ {
+ // Solve for the strained laminar flame speed
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ const volScalarField Rc
+ (
+ (sigmas*SuInf*(Su0 - SuInf) + sqr(SuMin)*sigmaExt)
+ /(sqr(Su0 - SuInf) + sqr(SuMin))
+ );
+
+ fvScalarMatrix SuEqn
+ (
+ fvm::ddt(rho, Su)
+ + fvm::div(phi + phiXi, Su, "div(phiXi,Su)")
+ - fvm::Sp(fvc::div(phiXi), Su)
+ ==
+ - fvm::SuSp(-rho*Rc*Su0/Su, Su)
+ - fvm::SuSp(rho*(sigmas + Rc), Su)
+ + fvModels().source(rho, Su)
+ );
+
+ SuEqn.relax();
+
+ fvConstraints().constrain(SuEqn);
+
+ SuEqn.solve();
+
+ fvConstraints().constrain(Su);
+
+ // Limit the maximum Su
+ // ~~~~~~~~~~~~~~~~~~~~
+ Su.min(SuMax);
+ Su.max(SuMin);
+ }
+ else
+ {
+ FatalErrorInFunction
+ << "Unknown Su model " << SuModel
+ << abort(FatalError);
+ }
+
+
+ // Calculate Xi according to the selected flame wrinkling model
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ if (XiModel == "fixed")
+ {
+ // Do nothing, Xi is fixed!
+ }
+ else if (XiModel == "algebraic")
+ {
+ // Simple algebraic model for Xi based on Gulders correlation
+ // with a linear correction function to give a plausible profile for Xi
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Xi == scalar(1) +
+ (scalar(1) + (2*XiShapeCoef)*(scalar(0.5) - b))
+ *XiCoef*sqrt(up/(Su + SuMin))*Reta;
+ }
+ else if (XiModel == "transport")
+ {
+ // Calculate Xi transport coefficients based on Gulders correlation
+ // and DNS data for the rate of generation
+ // with a linear correction function to give a plausible profile for Xi
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ const volScalarField XiEqStar
+ (
+ scalar(1.001) + XiCoef*sqrt(up/(Su + SuMin))*Reta
+ );
+
+ const volScalarField XiEq
+ (
+ scalar(1.001)
+ + (
+ scalar(1)
+ + (2*XiShapeCoef)
+ *(scalar(0.5) - min(max(b, scalar(0)), scalar(1)))
+ )*(XiEqStar - scalar(1.001))
+ );
+
+ const volScalarField Gstar(0.28/tauEta);
+ const volScalarField R(Gstar*XiEqStar/(XiEqStar - scalar(1)));
+ const volScalarField G(R*(XiEq - scalar(1.001))/XiEq);
+
+ // R *= (Gstar + 2*mag(dev(symm(fvc::grad(U)))))/Gstar;
+
+ // Solve for the flame wrinkling
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ fvScalarMatrix XiEqn
+ (
+ fvm::ddt(rho, Xi)
+ + fvm::div(phi + phiXi, Xi, "div(phiXi,Xi)")
+ - fvm::Sp(fvc::div(phiXi), Xi)
+ ==
+ rho*R
+ - fvm::Sp(rho*(R - G), Xi)
+ - fvm::Sp
+ (
+ rho*max
+ (
+ sigmat - sigmas,
+ dimensionedScalar(sigmat.dimensions(), 0)
+ ),
+ Xi
+ )
+ + fvModels().source(rho, Xi)
+ );
+
+ XiEqn.relax();
+
+ fvConstraints().constrain(XiEqn);
+
+ XiEqn.solve();
+
+ fvConstraints().constrain(Xi);
+
+ // Correct boundedness of Xi
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~
+ Xi.max(1.0);
+ Info<< "max(Xi) = " << max(Xi).value() << endl;
+ Info<< "max(XiEq) = " << max(XiEq).value() << endl;
+ }
+ else
+ {
+ FatalErrorInFunction
+ << "Unknown Xi model " << XiModel
+ << abort(FatalError);
+ }
+
+ Info<< "Combustion progress = "
+ << 100*(scalar(1) - b)().weightedAverage(mesh.V()).value() << "%"
+ << endl;
+
+ St = Xi*Su;
+}
+
+
+void Foam::solvers::XiFluid::EauSolve
+(
+ const fv::convectionScheme& mvConvection
+)
+{
+ volScalarField& heau = thermo.heu();
+
+ const volScalarField::Internal rhoByRhou(rho()/thermo.rhou()());
+
+ fvScalarMatrix heauEqn
+ (
+ fvm::ddt(rho, heau) + mvConvection.fvmDiv(phi, heau)
+ + rhoByRhou
+ *(
+ (fvc::ddt(rho, K) + fvc::div(phi, K))()
+ + pressureWork
+ (
+ heau.name() == "eau"
+ ? mvConvection.fvcDiv(phi, p/rho)()
+ : -dpdt
+ )
+ )
+ + thermophysicalTransport.divq(heau)
+
+ // These terms cannot be used in partially-premixed combustion due to
+ // the resultant inconsistency between ft and heau transport.
+ // A possible solution would be to solve for ftu as well as ft.
+ //- fvm::div(muEff*fvc::grad(b)/(b + 0.001), heau)
+ //+ fvm::Sp(fvc::div(muEff*fvc::grad(b)/(b + 0.001)), heau)
+
+ ==
+ fvModels().source(rho, heau)
+ );
+
+ fvConstraints().constrain(heauEqn);
+
+ heauEqn.solve();
+
+ fvConstraints().constrain(heau);
+}
+
+
+void Foam::solvers::XiFluid::EaSolve
+(
+ const fv::convectionScheme& mvConvection
+)
+{
+ volScalarField& hea = thermo.he();
+
+ fvScalarMatrix EaEqn
+ (
+ fvm::ddt(rho, hea) + mvConvection.fvmDiv(phi, hea)
+ + fvc::ddt(rho, K) + fvc::div(phi, K)
+ + pressureWork
+ (
+ hea.name() == "ea"
+ ? mvConvection.fvcDiv(phi, p/rho)()
+ : -dpdt
+ )
+ + thermophysicalTransport.divq(hea)
+ ==
+ (
+ buoyancy.valid()
+ ? fvModels().source(rho, hea) + rho*(U & buoyancy->g)
+ : fvModels().source(rho, hea)
+ )
+ );
+
+ EaEqn.relax();
+
+ fvConstraints().constrain(EaEqn);
+
+ EaEqn.solve();
+
+ fvConstraints().constrain(hea);
+}
+
+
+void Foam::solvers::XiFluid::thermophysicalPredictor()
+{
+ tmp> mvConvection
+ (
+ fv::convectionScheme::New
+ (
+ mesh,
+ fields,
+ phi,
+ mesh.schemes().div("div(phi,ft_b_ha_hau)")
+ )
+ );
+
+ if (composition.contains("ft"))
+ {
+ ftSolve(mvConvection());
+ }
+
+ if (ign.ignited())
+ {
+ bSolve(mvConvection());
+ EauSolve(mvConvection());
+ }
+
+ EaSolve(mvConvection());
+
+ if (!ign.ignited())
+ {
+ thermo.heu() == thermo.he();
+ }
+
+ thermo.correct();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/modules/compressibleVoF/compressibleInterPhaseThermophysicalTransportModel/compressibleInterPhaseThermophysicalTransportModel.C b/applications/solvers/modules/compressibleVoF/compressibleInterPhaseThermophysicalTransportModel/compressibleInterPhaseThermophysicalTransportModel.C
index 1edc8f2956..b7d54c842c 100644
--- a/applications/solvers/modules/compressibleVoF/compressibleInterPhaseThermophysicalTransportModel/compressibleInterPhaseThermophysicalTransportModel.C
+++ b/applications/solvers/modules/compressibleVoF/compressibleInterPhaseThermophysicalTransportModel/compressibleInterPhaseThermophysicalTransportModel.C
@@ -25,6 +25,7 @@ License
#include "compressibleInterPhaseThermophysicalTransportModel.H"
#include "compressibleInterPhaseTransportModel.H"
+#include "fvcSnGrad.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/compressibleVoF/compressibleVoF.C b/applications/solvers/modules/compressibleVoF/compressibleVoF.C
index 8259c63bfe..61c8c2d395 100644
--- a/applications/solvers/modules/compressibleVoF/compressibleVoF.C
+++ b/applications/solvers/modules/compressibleVoF/compressibleVoF.C
@@ -25,6 +25,7 @@ License
#include "compressibleVoF.H"
#include "localEulerDdtScheme.H"
+#include "fvcDdt.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/compressibleVoF/compressibleVoF.H b/applications/solvers/modules/compressibleVoF/compressibleVoF.H
index e4132504ad..13ee50af75 100644
--- a/applications/solvers/modules/compressibleVoF/compressibleVoF.H
+++ b/applications/solvers/modules/compressibleVoF/compressibleVoF.H
@@ -63,6 +63,7 @@ See also
#include "compressibleInterPhaseThermophysicalTransportModel.H"
#include "buoyancy.H"
#include "pressureReference.H"
+#include "fvmSup.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/compressibleVoF/pressureCorrector.C b/applications/solvers/modules/compressibleVoF/pressureCorrector.C
index e56fc24039..cfab605fda 100644
--- a/applications/solvers/modules/compressibleVoF/pressureCorrector.C
+++ b/applications/solvers/modules/compressibleVoF/pressureCorrector.C
@@ -27,6 +27,12 @@ License
#include "constrainHbyA.H"
#include "constrainPressure.H"
#include "adjustPhi.H"
+#include "fvcMeshPhi.H"
+#include "fvcFlux.H"
+#include "fvcDdt.H"
+#include "fvcSnGrad.H"
+#include "fvcReconstruct.H"
+#include "fvmDiv.H"
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/compressibleVoF/thermophysicalPredictor.C b/applications/solvers/modules/compressibleVoF/thermophysicalPredictor.C
index 21c24a9c99..9dc98b197e 100644
--- a/applications/solvers/modules/compressibleVoF/thermophysicalPredictor.C
+++ b/applications/solvers/modules/compressibleVoF/thermophysicalPredictor.C
@@ -24,6 +24,9 @@ License
\*---------------------------------------------------------------------------*/
#include "compressibleVoF.H"
+#include "fvcMeshPhi.H"
+#include "fvcDdt.H"
+#include "fvmDiv.H"
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/fluid/fluid.C b/applications/solvers/modules/fluid/fluid.C
index 33ce723d80..1a5f2f698c 100644
--- a/applications/solvers/modules/fluid/fluid.C
+++ b/applications/solvers/modules/fluid/fluid.C
@@ -52,7 +52,9 @@ Foam::solvers::fluid::fluid(fvMesh& mesh)
thermo
)
)
-{}
+{
+ thermo.validate(type(), "h", "e");
+}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/fluid/thermophysicalPredictor.C b/applications/solvers/modules/fluid/thermophysicalPredictor.C
index 40a80ffa83..aa3b6b873e 100644
--- a/applications/solvers/modules/fluid/thermophysicalPredictor.C
+++ b/applications/solvers/modules/fluid/thermophysicalPredictor.C
@@ -24,6 +24,8 @@ License
\*---------------------------------------------------------------------------*/
#include "fluid.H"
+#include "fvcDdt.H"
+#include "fvmDiv.H"
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
@@ -38,7 +40,7 @@ void Foam::solvers::fluid::thermophysicalPredictor()
+ pressureWork
(
he.name() == "e"
- ? fvc::div(phi, p/rho)
+ ? fvc::div(phi, p/rho)()
: -dpdt
)
+ thermophysicalTransport->divq(he)
diff --git a/applications/solvers/modules/incompressibleFluid/correctPressure.C b/applications/solvers/modules/incompressibleFluid/correctPressure.C
index 1ca3ca3e66..07d3b744b2 100644
--- a/applications/solvers/modules/incompressibleFluid/correctPressure.C
+++ b/applications/solvers/modules/incompressibleFluid/correctPressure.C
@@ -27,6 +27,10 @@ License
#include "constrainHbyA.H"
#include "constrainPressure.H"
#include "adjustPhi.H"
+#include "fvcMeshPhi.H"
+#include "fvcFlux.H"
+#include "fvcDdt.H"
+#include "fvcSnGrad.H"
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/incompressibleFluid/incompressibleFluid.H b/applications/solvers/modules/incompressibleFluid/incompressibleFluid.H
index 7cd938886c..61cb5f18fb 100644
--- a/applications/solvers/modules/incompressibleFluid/incompressibleFluid.H
+++ b/applications/solvers/modules/incompressibleFluid/incompressibleFluid.H
@@ -58,6 +58,7 @@ See also
#include "viscosityModel.H"
#include "incompressibleMomentumTransportModels.H"
#include "pressureReference.H"
+#include "IOMRFZoneList.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/incompressibleFluid/momentumPredictor.C b/applications/solvers/modules/incompressibleFluid/momentumPredictor.C
index a003c422fb..bcdd556927 100644
--- a/applications/solvers/modules/incompressibleFluid/momentumPredictor.C
+++ b/applications/solvers/modules/incompressibleFluid/momentumPredictor.C
@@ -24,6 +24,7 @@ License
\*---------------------------------------------------------------------------*/
#include "incompressibleFluid.H"
+#include "fvmDiv.H"
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/incompressibleFluid/moveMesh.C b/applications/solvers/modules/incompressibleFluid/moveMesh.C
index 0357e321e6..830f677589 100644
--- a/applications/solvers/modules/incompressibleFluid/moveMesh.C
+++ b/applications/solvers/modules/incompressibleFluid/moveMesh.C
@@ -25,6 +25,7 @@ License
#include "incompressibleFluid.H"
#include "CorrectPhi.H"
+#include "geometricZeroField.H"
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/incompressibleVoF/incompressibleVoF.C b/applications/solvers/modules/incompressibleVoF/incompressibleVoF.C
index dee68cae70..7a4a2e5bd5 100644
--- a/applications/solvers/modules/incompressibleVoF/incompressibleVoF.C
+++ b/applications/solvers/modules/incompressibleVoF/incompressibleVoF.C
@@ -26,6 +26,7 @@ License
#include "incompressibleVoF.H"
#include "localEulerDdtScheme.H"
#include "CorrectPhi.H"
+#include "geometricZeroField.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/incompressibleVoF/pressureCorrector.C b/applications/solvers/modules/incompressibleVoF/pressureCorrector.C
index a43f406c82..288e5a67aa 100644
--- a/applications/solvers/modules/incompressibleVoF/pressureCorrector.C
+++ b/applications/solvers/modules/incompressibleVoF/pressureCorrector.C
@@ -28,6 +28,11 @@ License
#include "constrainPressure.H"
#include "adjustPhi.H"
#include "findRefCell.H"
+#include "fvcMeshPhi.H"
+#include "fvcFlux.H"
+#include "fvcDdt.H"
+#include "fvcSnGrad.H"
+#include "fvcReconstruct.H"
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/isothermalFluid/correctBuoyantPressure.C b/applications/solvers/modules/isothermalFluid/correctBuoyantPressure.C
index d7f550b014..207dafee8f 100644
--- a/applications/solvers/modules/isothermalFluid/correctBuoyantPressure.C
+++ b/applications/solvers/modules/isothermalFluid/correctBuoyantPressure.C
@@ -27,6 +27,13 @@ License
#include "constrainHbyA.H"
#include "constrainPressure.H"
#include "adjustPhi.H"
+#include "fvcMeshPhi.H"
+#include "fvcFlux.H"
+#include "fvcDdt.H"
+#include "fvcSnGrad.H"
+#include "fvcReconstruct.H"
+#include "fvcVolumeIntegrate.H"
+#include "fvmDiv.H"
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/isothermalFluid/correctPressure.C b/applications/solvers/modules/isothermalFluid/correctPressure.C
index a40fee3a4a..e0a7691085 100644
--- a/applications/solvers/modules/isothermalFluid/correctPressure.C
+++ b/applications/solvers/modules/isothermalFluid/correctPressure.C
@@ -27,6 +27,13 @@ License
#include "constrainHbyA.H"
#include "constrainPressure.H"
#include "adjustPhi.H"
+#include "fvcMeshPhi.H"
+#include "fvcFlux.H"
+#include "fvcDdt.H"
+#include "fvcSnGrad.H"
+#include "fvcReconstruct.H"
+#include "fvcVolumeIntegrate.H"
+#include "fvmDiv.H"
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/isothermalFluid/isothermalFluid.C b/applications/solvers/modules/isothermalFluid/isothermalFluid.C
index c41e6262e1..a658249215 100644
--- a/applications/solvers/modules/isothermalFluid/isothermalFluid.C
+++ b/applications/solvers/modules/isothermalFluid/isothermalFluid.C
@@ -26,6 +26,10 @@ License
#include "isothermalFluid.H"
#include "localEulerDdtScheme.H"
#include "hydrostaticInitialisation.H"
+#include "fvcMeshPhi.H"
+#include "fvcVolumeIntegrate.H"
+#include "fvcReconstruct.H"
+#include "fvcSnGrad.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@@ -56,10 +60,10 @@ void Foam::solvers::isothermalFluid::continuityErrors()
// * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * //
-Foam::tmp
+Foam::tmp
Foam::solvers::isothermalFluid::pressureWork
(
- const tmp& work
+ const tmp& work
) const
{
if (mesh.moving())
@@ -71,11 +75,11 @@ Foam::solvers::isothermalFluid::pressureWork
fvc::interpolate(rho)*fvc::meshPhi(rho, U),
p/rho,
"div(phi,(p|rho))"
- );
+ )();
}
else
{
- return work;
+ return move(work);
}
}
@@ -178,7 +182,6 @@ Foam::solvers::isothermalFluid::isothermalFluid
// Read the controls
read();
- thermo.validate("isothermalFluid", "h", "e");
mesh.schemes().setFluxRequired(p.name());
momentumTransport->validate();
diff --git a/applications/solvers/modules/isothermalFluid/isothermalFluid.H b/applications/solvers/modules/isothermalFluid/isothermalFluid.H
index f4b406f96f..95d6a0ad7d 100644
--- a/applications/solvers/modules/isothermalFluid/isothermalFluid.H
+++ b/applications/solvers/modules/isothermalFluid/isothermalFluid.H
@@ -59,6 +59,7 @@ See also
#include "compressibleMomentumTransportModels.H"
#include "buoyancy.H"
#include "pressureReference.H"
+#include "IOMRFZoneList.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -94,7 +95,7 @@ protected:
//- Rate of change of the pressure
// Used in the enthalpy equation
- volScalarField dpdt;
+ volScalarField::Internal dpdt;
// Optional buoyancy
@@ -204,7 +205,10 @@ private:
protected:
//- Adds the mesh-motion work to the pressure work term provided
- tmp pressureWork(const tmp&) const;
+ tmp pressureWork
+ (
+ const tmp&
+ ) const;
public:
diff --git a/applications/solvers/modules/isothermalFluid/momentumPredictor.C b/applications/solvers/modules/isothermalFluid/momentumPredictor.C
index b55d9dcaee..206f5dafb5 100644
--- a/applications/solvers/modules/isothermalFluid/momentumPredictor.C
+++ b/applications/solvers/modules/isothermalFluid/momentumPredictor.C
@@ -24,6 +24,7 @@ License
\*---------------------------------------------------------------------------*/
#include "isothermalFluid.H"
+#include "fvmDiv.H"
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/isothermalFluid/setRDeltaT.C b/applications/solvers/modules/isothermalFluid/setRDeltaT.C
index d73082b835..7998fedd0f 100644
--- a/applications/solvers/modules/isothermalFluid/setRDeltaT.C
+++ b/applications/solvers/modules/isothermalFluid/setRDeltaT.C
@@ -24,6 +24,7 @@ License
\*---------------------------------------------------------------------------*/
#include "isothermalFluid.H"
+#include "fvcFlux.H"
#include "fvcSmooth.H"
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
diff --git a/applications/solvers/modules/multicomponentFluid/multicomponentFluid.C b/applications/solvers/modules/multicomponentFluid/multicomponentFluid.C
index e7bc0ba203..92f8723a52 100644
--- a/applications/solvers/modules/multicomponentFluid/multicomponentFluid.C
+++ b/applications/solvers/modules/multicomponentFluid/multicomponentFluid.C
@@ -66,6 +66,8 @@ Foam::solvers::multicomponentFluid::multicomponentFluid(fvMesh& mesh)
)
)
{
+ thermo.validate(type(), "h", "e");
+
forAll(Y, i)
{
fields.add(Y[i]);
diff --git a/applications/solvers/modules/multicomponentFluid/thermophysicalPredictor.C b/applications/solvers/modules/multicomponentFluid/thermophysicalPredictor.C
index 39bf185e65..d7c37806f2 100644
--- a/applications/solvers/modules/multicomponentFluid/thermophysicalPredictor.C
+++ b/applications/solvers/modules/multicomponentFluid/thermophysicalPredictor.C
@@ -24,6 +24,7 @@ License
\*---------------------------------------------------------------------------*/
#include "multicomponentFluid.H"
+#include "fvcDdt.H"
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
@@ -80,7 +81,7 @@ void Foam::solvers::multicomponentFluid::thermophysicalPredictor()
+ pressureWork
(
he.name() == "e"
- ? mvConvection->fvcDiv(phi, p/rho)
+ ? mvConvection->fvcDiv(phi, p/rho)()
: -dpdt
)
+ thermophysicalTransport->divq(he)
diff --git a/applications/solvers/modules/multiphaseEuler/interfacialModels/phaseTransferModels/cavitation/cavitation.C b/applications/solvers/modules/multiphaseEuler/interfacialModels/phaseTransferModels/cavitation/cavitation.C
index 44ab933a1d..6575e29251 100644
--- a/applications/solvers/modules/multiphaseEuler/interfacialModels/phaseTransferModels/cavitation/cavitation.C
+++ b/applications/solvers/modules/multiphaseEuler/interfacialModels/phaseTransferModels/cavitation/cavitation.C
@@ -25,8 +25,8 @@ License
#include "cavitation.H"
#include "phaseSystem.H"
+#include "zeroGradientFvPatchFields.H"
#include "addToRunTimeSelectionTable.H"
-#include "fvCFD.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/multiphaseEuler/multiphaseCompressibleMomentumTransportModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C b/applications/solvers/modules/multiphaseEuler/multiphaseCompressibleMomentumTransportModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
index f22de22bcb..33f824a750 100644
--- a/applications/solvers/modules/multiphaseEuler/multiphaseCompressibleMomentumTransportModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
+++ b/applications/solvers/modules/multiphaseEuler/multiphaseCompressibleMomentumTransportModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
@@ -26,6 +26,8 @@ License
#include "kineticTheoryModel.H"
#include "mathematicalConstants.H"
#include "phaseSystem.H"
+#include "fvcDdt.H"
+#include "fvcSup.H"
#include "fvModels.H"
#include "fvConstraints.H"
diff --git a/applications/solvers/modules/multiphaseEuler/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C b/applications/solvers/modules/multiphaseEuler/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C
index 5fb7b640d3..af79063c4d 100644
--- a/applications/solvers/modules/multiphaseEuler/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C
+++ b/applications/solvers/modules/multiphaseEuler/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C
@@ -25,6 +25,10 @@ License
#include "AnisothermalPhaseModel.H"
#include "phaseSystem.H"
+#include "fvcMeshPhi.H"
+#include "fvcDdt.H"
+#include "fvmDiv.H"
+#include "fvmSup.H"
// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * //
diff --git a/applications/solvers/modules/multiphaseEuler/phaseSystems/phaseModel/StationaryPhaseModel/StationaryPhaseModel.C b/applications/solvers/modules/multiphaseEuler/phaseSystems/phaseModel/StationaryPhaseModel/StationaryPhaseModel.C
index 257f2451af..fbef4be716 100644
--- a/applications/solvers/modules/multiphaseEuler/phaseSystems/phaseModel/StationaryPhaseModel/StationaryPhaseModel.C
+++ b/applications/solvers/modules/multiphaseEuler/phaseSystems/phaseModel/StationaryPhaseModel/StationaryPhaseModel.C
@@ -24,6 +24,7 @@ License
\*---------------------------------------------------------------------------*/
#include "StationaryPhaseModel.H"
+#include "fvcLaplacian.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
diff --git a/bin/XiFoam b/bin/XiFoam
new file mode 100755
index 0000000000..b09b8f2116
--- /dev/null
+++ b/bin/XiFoam
@@ -0,0 +1,46 @@
+#!/bin/sh
+#------------------------------------------------------------------------------
+# ========= |
+# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+# \\ / O peration | Website: https://openfoam.org
+# \\ / A nd | Copyright (C) 2022 OpenFOAM Foundation
+# \\/ M anipulation |
+#------------------------------------------------------------------------------
+# 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 .
+#
+# Script
+# XiFoam
+#
+# Description
+# Script to inform the user that XiFoam has been superseded
+# and replaced by the more general XiFluid solver module
+# executed by the foamRun application.
+#
+#------------------------------------------------------------------------------
+
+cat <