From 281422ccbfab9f68e8fab8782c7697416159de7a Mon Sep 17 00:00:00 2001
From: Henry <Henry>
Date: Fri, 7 Dec 2012 17:52:18 +0000
Subject: [PATCH] interFoam family: added generic sources support in momentum
 equation

---
 .../solvers/multiphase/interFoam/Allwclean         |  1 +
 applications/solvers/multiphase/interFoam/Allwmake |  1 +
 .../interFoam/LTSInterFoam/LTSInterFoam.C          |  1 +
 .../multiphase/interFoam/LTSInterFoam/Make/options | 10 ++++++++--
 .../interFoam/MRFInterFoam/MRFInterFoam.C          |  1 +
 .../multiphase/interFoam/MRFInterFoam/Make/options | 10 ++++++++--
 .../multiphase/interFoam/MRFInterFoam/UEqn.H       |  5 ++++-
 .../multiphase/interFoam/MRFInterFoam/pEqn.H       |  1 +
 .../solvers/multiphase/interFoam/Make/options      | 10 ++++++++--
 .../solvers/multiphase/interFoam/createFields.H    |  2 ++
 .../multiphase/interFoam/interDyMFoam/Make/options | 10 +++++++---
 .../interFoam/interDyMFoam/interDyMFoam.C          |  1 +
 .../multiphase/interFoam/interDyMFoam/pEqn.H       |  1 +
 .../solvers/multiphase/interFoam/interFoam.C       |  1 +
 .../{ => interFoam}/interMixingFoam/Make/files     |  1 -
 .../{ => interFoam}/interMixingFoam/Make/options   | 14 +++++++++-----
 .../interMixingFoam/alphaCourantNo.H               |  0
 .../{ => interFoam}/interMixingFoam/alphaEqns.H    |  0
 .../interMixingFoam/alphaEqnsSubCycle.H            |  0
 .../{ => interFoam}/interMixingFoam/createFields.H |  2 ++
 .../threePhaseMixture.C                            |  0
 .../threePhaseMixture.H                            |  0
 .../interMixingFoam/interMixingFoam.C              |  1 +
 .../threePhaseInterfaceProperties.C                |  0
 .../threePhaseInterfaceProperties.H                |  0
 applications/solvers/multiphase/interFoam/pEqn.H   |  1 +
 .../interFoam/porousInterFoam/Make/options         |  8 ++++++--
 .../multiphase/interFoam/porousInterFoam/UEqn.H    |  4 +++-
 .../interFoam/porousInterFoam/porousInterFoam.C    |  1 +
 29 files changed, 68 insertions(+), 19 deletions(-)
 rename applications/solvers/multiphase/{ => interFoam}/interMixingFoam/Make/files (99%)
 rename applications/solvers/multiphase/{ => interFoam}/interMixingFoam/Make/options (69%)
 rename applications/solvers/multiphase/{ => interFoam}/interMixingFoam/alphaCourantNo.H (100%)
 rename applications/solvers/multiphase/{ => interFoam}/interMixingFoam/alphaEqns.H (100%)
 rename applications/solvers/multiphase/{ => interFoam}/interMixingFoam/alphaEqnsSubCycle.H (100%)
 rename applications/solvers/multiphase/{ => interFoam}/interMixingFoam/createFields.H (98%)
 rename applications/solvers/multiphase/{ => interFoam}/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.C (100%)
 rename applications/solvers/multiphase/{ => interFoam}/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.H (100%)
 rename applications/solvers/multiphase/{ => interFoam}/interMixingFoam/interMixingFoam.C (99%)
 rename applications/solvers/multiphase/{ => interFoam}/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.C (100%)
 rename applications/solvers/multiphase/{ => interFoam}/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.H (100%)

diff --git a/applications/solvers/multiphase/interFoam/Allwclean b/applications/solvers/multiphase/interFoam/Allwclean
index 2c54bfa3218..8b080006674 100755
--- a/applications/solvers/multiphase/interFoam/Allwclean
+++ b/applications/solvers/multiphase/interFoam/Allwclean
@@ -7,5 +7,6 @@ wclean interDyMFoam
 wclean MRFInterFoam
 wclean porousInterFoam
 wclean LTSInterFoam
+wclean interMixingFoam
 
 # ----------------------------------------------------------------- end-of-file
diff --git a/applications/solvers/multiphase/interFoam/Allwmake b/applications/solvers/multiphase/interFoam/Allwmake
index 8044426582e..cc883614b89 100755
--- a/applications/solvers/multiphase/interFoam/Allwmake
+++ b/applications/solvers/multiphase/interFoam/Allwmake
@@ -7,5 +7,6 @@ wmake interDyMFoam
 wmake MRFInterFoam
 wmake porousInterFoam
 wmake LTSInterFoam
+wmake interMixingFoam
 
 # ----------------------------------------------------------------- end-of-file
diff --git a/applications/solvers/multiphase/interFoam/LTSInterFoam/LTSInterFoam.C b/applications/solvers/multiphase/interFoam/LTSInterFoam/LTSInterFoam.C
index 9d221b5ca93..208e1c03b28 100644
--- a/applications/solvers/multiphase/interFoam/LTSInterFoam/LTSInterFoam.C
+++ b/applications/solvers/multiphase/interFoam/LTSInterFoam/LTSInterFoam.C
@@ -45,6 +45,7 @@ Description
 #include "turbulenceModel.H"
 #include "fvcSmooth.H"
 #include "pimpleControl.H"
+#include "IObasicSourceList.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/applications/solvers/multiphase/interFoam/LTSInterFoam/Make/options b/applications/solvers/multiphase/interFoam/LTSInterFoam/Make/options
index 24349f694e0..7eba4b166f8 100644
--- a/applications/solvers/multiphase/interFoam/LTSInterFoam/Make/options
+++ b/applications/solvers/multiphase/interFoam/LTSInterFoam/Make/options
@@ -4,7 +4,10 @@ EXE_INC = \
     -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
     -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
-    -I$(LIB_SRC)/finiteVolume/lnInclude
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/fieldSources/lnInclude \
+    -I$(LIB_SRC)/sampling/lnInclude
 
 EXE_LIBS = \
     -ltwoPhaseInterfaceProperties \
@@ -12,4 +15,7 @@ EXE_LIBS = \
     -lincompressibleTurbulenceModel \
     -lincompressibleRASModels \
     -lincompressibleLESModels \
-    -lfiniteVolume
+    -lfiniteVolume \
+    -lmeshTools \
+    -lfieldSources \
+    -lsampling
diff --git a/applications/solvers/multiphase/interFoam/MRFInterFoam/MRFInterFoam.C b/applications/solvers/multiphase/interFoam/MRFInterFoam/MRFInterFoam.C
index b9db6b25ec1..8950d265b0a 100644
--- a/applications/solvers/multiphase/interFoam/MRFInterFoam/MRFInterFoam.C
+++ b/applications/solvers/multiphase/interFoam/MRFInterFoam/MRFInterFoam.C
@@ -44,6 +44,7 @@ Description
 #include "turbulenceModel.H"
 #include "IOMRFZoneList.H"
 #include "pimpleControl.H"
+#include "IObasicSourceList.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/applications/solvers/multiphase/interFoam/MRFInterFoam/Make/options b/applications/solvers/multiphase/interFoam/MRFInterFoam/Make/options
index 24349f694e0..7eba4b166f8 100644
--- a/applications/solvers/multiphase/interFoam/MRFInterFoam/Make/options
+++ b/applications/solvers/multiphase/interFoam/MRFInterFoam/Make/options
@@ -4,7 +4,10 @@ EXE_INC = \
     -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
     -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
-    -I$(LIB_SRC)/finiteVolume/lnInclude
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/fieldSources/lnInclude \
+    -I$(LIB_SRC)/sampling/lnInclude
 
 EXE_LIBS = \
     -ltwoPhaseInterfaceProperties \
@@ -12,4 +15,7 @@ EXE_LIBS = \
     -lincompressibleTurbulenceModel \
     -lincompressibleRASModels \
     -lincompressibleLESModels \
-    -lfiniteVolume
+    -lfiniteVolume \
+    -lmeshTools \
+    -lfieldSources \
+    -lsampling
diff --git a/applications/solvers/multiphase/interFoam/MRFInterFoam/UEqn.H b/applications/solvers/multiphase/interFoam/MRFInterFoam/UEqn.H
index c26df020198..50f0e4fb91d 100644
--- a/applications/solvers/multiphase/interFoam/MRFInterFoam/UEqn.H
+++ b/applications/solvers/multiphase/interFoam/MRFInterFoam/UEqn.H
@@ -12,10 +12,13 @@
       - fvm::laplacian(muEff, U)
       - (fvc::grad(U) & fvc::grad(muEff))
     //- fvc::div(muEff*(fvc::interpolate(dev(fvc::grad(U))) & mesh.Sf()))
+     ==
+        sources(rho, U)
     );
-    mrfZones.addCoriolis(rho, UEqn);
 
+    mrfZones.addCoriolis(rho, UEqn);
     UEqn.relax();
+    sources.constrain(UEqn);
 
     if (pimple.momentumPredictor())
     {
diff --git a/applications/solvers/multiphase/interFoam/MRFInterFoam/pEqn.H b/applications/solvers/multiphase/interFoam/MRFInterFoam/pEqn.H
index 1f4f0bbbebc..086f39cc3ac 100644
--- a/applications/solvers/multiphase/interFoam/MRFInterFoam/pEqn.H
+++ b/applications/solvers/multiphase/interFoam/MRFInterFoam/pEqn.H
@@ -42,6 +42,7 @@
 
             U = HbyA + rAU*fvc::reconstruct((phig - p_rghEqn.flux())/rAUf);
             U.correctBoundaryConditions();
+            sources.correct(U);
         }
     }
 
diff --git a/applications/solvers/multiphase/interFoam/Make/options b/applications/solvers/multiphase/interFoam/Make/options
index c8ce69c074b..ab0596b7471 100644
--- a/applications/solvers/multiphase/interFoam/Make/options
+++ b/applications/solvers/multiphase/interFoam/Make/options
@@ -3,7 +3,10 @@ EXE_INC = \
     -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
     -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
-    -I$(LIB_SRC)/finiteVolume/lnInclude
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/fieldSources/lnInclude \
+    -I$(LIB_SRC)/sampling/lnInclude
 
 EXE_LIBS = \
     -ltwoPhaseInterfaceProperties \
@@ -11,4 +14,7 @@ EXE_LIBS = \
     -lincompressibleTurbulenceModel \
     -lincompressibleRASModels \
     -lincompressibleLESModels \
-    -lfiniteVolume
+    -lfiniteVolume \
+    -lmeshTools \
+    -lfieldSources \
+    -lsampling
diff --git a/applications/solvers/multiphase/interFoam/createFields.H b/applications/solvers/multiphase/interFoam/createFields.H
index 68765262dba..17f31e6fc64 100644
--- a/applications/solvers/multiphase/interFoam/createFields.H
+++ b/applications/solvers/multiphase/interFoam/createFields.H
@@ -131,3 +131,5 @@
         );
         p_rgh = p - rho*gh;
     }
+
+    IObasicSourceList sources(mesh);
diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options b/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options
index 102475c1ed5..9f9f3862951 100644
--- a/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options
+++ b/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options
@@ -6,8 +6,10 @@ EXE_INC = \
     -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/dynamicMesh/lnInclude \
+    -I$(LIB_SRC)/dynamicFvMesh/lnInclude \
     -I$(LIB_SRC)/meshTools/lnInclude \
-    -I$(LIB_SRC)/dynamicFvMesh/lnInclude
+    -I$(LIB_SRC)/fieldSources/lnInclude \
+    -I$(LIB_SRC)/sampling/lnInclude
 
 EXE_LIBS = \
     -ltwoPhaseInterfaceProperties \
@@ -17,6 +19,8 @@ EXE_LIBS = \
     -lincompressibleLESModels \
     -lfiniteVolume \
     -ldynamicMesh \
-    -lmeshTools \
     -ldynamicFvMesh \
-    -ltopoChangerFvMesh
+    -ltopoChangerFvMesh \
+    -lmeshTools \
+    -lfieldSources \
+    -lsampling
diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C
index ee927345097..7304a7841f6 100644
--- a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C
+++ b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C
@@ -40,6 +40,7 @@ Description
 #include "twoPhaseMixture.H"
 #include "turbulenceModel.H"
 #include "pimpleControl.H"
+#include "IObasicSourceList.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H b/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H
index 5b089550c56..84519dbcdd8 100644
--- a/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H
+++ b/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H
@@ -48,6 +48,7 @@
 
             U = HbyA + rAU*fvc::reconstruct((phig - p_rghEqn.flux())/rAUf);
             U.correctBoundaryConditions();
+            sources.correct(U);
         }
     }
 
diff --git a/applications/solvers/multiphase/interFoam/interFoam.C b/applications/solvers/multiphase/interFoam/interFoam.C
index 69eb0964cea..0cca9e81e5f 100644
--- a/applications/solvers/multiphase/interFoam/interFoam.C
+++ b/applications/solvers/multiphase/interFoam/interFoam.C
@@ -44,6 +44,7 @@ Description
 #include "twoPhaseMixture.H"
 #include "turbulenceModel.H"
 #include "pimpleControl.H"
+#include "IObasicSourceList.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/applications/solvers/multiphase/interMixingFoam/Make/files b/applications/solvers/multiphase/interFoam/interMixingFoam/Make/files
similarity index 99%
rename from applications/solvers/multiphase/interMixingFoam/Make/files
rename to applications/solvers/multiphase/interFoam/interMixingFoam/Make/files
index 488cd77e56d..f179f42761f 100644
--- a/applications/solvers/multiphase/interMixingFoam/Make/files
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/Make/files
@@ -3,4 +3,3 @@ threePhaseInterfaceProperties/threePhaseInterfaceProperties.C
 interMixingFoam.C
 
 EXE = $(FOAM_APPBIN)/interMixingFoam
-
diff --git a/applications/solvers/multiphase/interMixingFoam/Make/options b/applications/solvers/multiphase/interFoam/interMixingFoam/Make/options
similarity index 69%
rename from applications/solvers/multiphase/interMixingFoam/Make/options
rename to applications/solvers/multiphase/interFoam/interMixingFoam/Make/options
index cb135724cf0..aeaf998111e 100644
--- a/applications/solvers/multiphase/interMixingFoam/Make/options
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/Make/options
@@ -1,14 +1,15 @@
-INTERFOAM = $(FOAM_SOLVERS)/multiphase/interFoam
-
 EXE_INC = \
-    -I$(INTERFOAM) \
+    -I.. \
     -IincompressibleThreePhaseMixture \
     -IthreePhaseInterfaceProperties \
     -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
     -I$(LIB_SRC)/transportModels/twoPhaseInterfaceProperties/alphaContactAngle/alphaContactAngle \
     -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
-    -I$(LIB_SRC)/transportModels
+    -I$(LIB_SRC)/transportModels \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/fieldSources/lnInclude \
+    -I$(LIB_SRC)/sampling/lnInclude
 
 EXE_LIBS = \
     -ltwoPhaseInterfaceProperties \
@@ -16,4 +17,7 @@ EXE_LIBS = \
     -lincompressibleTurbulenceModel \
     -lincompressibleRASModels \
     -lincompressibleLESModels \
-    -lfiniteVolume
+    -lfiniteVolume \
+    -lmeshTools \
+    -lfieldSources \
+    -lsampling
diff --git a/applications/solvers/multiphase/interMixingFoam/alphaCourantNo.H b/applications/solvers/multiphase/interFoam/interMixingFoam/alphaCourantNo.H
similarity index 100%
rename from applications/solvers/multiphase/interMixingFoam/alphaCourantNo.H
rename to applications/solvers/multiphase/interFoam/interMixingFoam/alphaCourantNo.H
diff --git a/applications/solvers/multiphase/interMixingFoam/alphaEqns.H b/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqns.H
similarity index 100%
rename from applications/solvers/multiphase/interMixingFoam/alphaEqns.H
rename to applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqns.H
diff --git a/applications/solvers/multiphase/interMixingFoam/alphaEqnsSubCycle.H b/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqnsSubCycle.H
similarity index 100%
rename from applications/solvers/multiphase/interMixingFoam/alphaEqnsSubCycle.H
rename to applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqnsSubCycle.H
diff --git a/applications/solvers/multiphase/interMixingFoam/createFields.H b/applications/solvers/multiphase/interFoam/interMixingFoam/createFields.H
similarity index 98%
rename from applications/solvers/multiphase/interMixingFoam/createFields.H
rename to applications/solvers/multiphase/interFoam/interMixingFoam/createFields.H
index 60543dc8262..ae024d48077 100644
--- a/applications/solvers/multiphase/interMixingFoam/createFields.H
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/createFields.H
@@ -165,3 +165,5 @@
         );
         p_rgh = p - rho*gh;
     }
+
+    IObasicSourceList sources(mesh);
diff --git a/applications/solvers/multiphase/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.C b/applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.C
similarity index 100%
rename from applications/solvers/multiphase/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.C
rename to applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.C
diff --git a/applications/solvers/multiphase/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.H b/applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.H
similarity index 100%
rename from applications/solvers/multiphase/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.H
rename to applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.H
diff --git a/applications/solvers/multiphase/interMixingFoam/interMixingFoam.C b/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C
similarity index 99%
rename from applications/solvers/multiphase/interMixingFoam/interMixingFoam.C
rename to applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C
index 33647cd28d1..dcb314025df 100644
--- a/applications/solvers/multiphase/interMixingFoam/interMixingFoam.C
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C
@@ -37,6 +37,7 @@ Description
 #include "threePhaseInterfaceProperties.H"
 #include "turbulenceModel.H"
 #include "pimpleControl.H"
+#include "IObasicSourceList.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/applications/solvers/multiphase/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.C b/applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.C
similarity index 100%
rename from applications/solvers/multiphase/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.C
rename to applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.C
diff --git a/applications/solvers/multiphase/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.H b/applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.H
similarity index 100%
rename from applications/solvers/multiphase/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.H
rename to applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.H
diff --git a/applications/solvers/multiphase/interFoam/pEqn.H b/applications/solvers/multiphase/interFoam/pEqn.H
index 53c2161f978..83341e02469 100644
--- a/applications/solvers/multiphase/interFoam/pEqn.H
+++ b/applications/solvers/multiphase/interFoam/pEqn.H
@@ -42,6 +42,7 @@
 
             U = HbyA + rAU*fvc::reconstruct((phig - p_rghEqn.flux())/rAUf);
             U.correctBoundaryConditions();
+            sources.correct(U);
         }
     }
 
diff --git a/applications/solvers/multiphase/interFoam/porousInterFoam/Make/options b/applications/solvers/multiphase/interFoam/porousInterFoam/Make/options
index a33b9c82be9..7eba4b166f8 100644
--- a/applications/solvers/multiphase/interFoam/porousInterFoam/Make/options
+++ b/applications/solvers/multiphase/interFoam/porousInterFoam/Make/options
@@ -5,7 +5,9 @@ EXE_INC = \
     -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
-    -I$(LIB_SRC)/meshTools/lnInclude
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/fieldSources/lnInclude \
+    -I$(LIB_SRC)/sampling/lnInclude
 
 EXE_LIBS = \
     -ltwoPhaseInterfaceProperties \
@@ -14,4 +16,6 @@ EXE_LIBS = \
     -lincompressibleRASModels \
     -lincompressibleLESModels \
     -lfiniteVolume \
-    -lmeshTools
+    -lmeshTools \
+    -lfieldSources \
+    -lsampling
diff --git a/applications/solvers/multiphase/interFoam/porousInterFoam/UEqn.H b/applications/solvers/multiphase/interFoam/porousInterFoam/UEqn.H
index 155c0527b73..e6e58b35e3c 100644
--- a/applications/solvers/multiphase/interFoam/porousInterFoam/UEqn.H
+++ b/applications/solvers/multiphase/interFoam/porousInterFoam/UEqn.H
@@ -16,11 +16,13 @@
       - fvm::laplacian(muEff, U)
       - (fvc::grad(U) & fvc::grad(muEff))
     //- fvc::div(muEff*(fvc::interpolate(dev(fvc::grad(U))) & mesh.Sf()))
+     ==
+        sources(rho, U)
     );
 
     UEqn.relax();
-
     pZones.addResistance(UEqn);
+    sources.constrain(UEqn);
 
     if (pimple.momentumPredictor())
     {
diff --git a/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C b/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C
index 795b7c14a1f..f32d6f3e6d9 100644
--- a/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C
+++ b/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C
@@ -46,6 +46,7 @@ Description
 #include "turbulenceModel.H"
 #include "IOporosityModelList.H"
 #include "pimpleControl.H"
+#include "IObasicSourceList.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-- 
GitLab