diff --git a/applications/solvers/combustion/XiFoam/EaEqn.H b/applications/solvers/combustion/XiFoam/EaEqn.H
index 5493722c9375cd8e1e9d0120877768ea1828d32c..2565e3f9e3aa4c6a7ac0ba6ee18c0311a2d6f32e 100644
--- a/applications/solvers/combustion/XiFoam/EaEqn.H
+++ b/applications/solvers/combustion/XiFoam/EaEqn.H
@@ -25,5 +25,7 @@
 
     EaEqn.solve();
 
+    sources.correct(hea);
+
     thermo.correct();
 }
diff --git a/applications/solvers/combustion/XiFoam/EauEqn.H b/applications/solvers/combustion/XiFoam/EauEqn.H
index b13a63bb60b0c0bc852df6c7413021764adced61..092cdc2a6d8546e54e3a1299a6e79887da1e9720 100644
--- a/applications/solvers/combustion/XiFoam/EauEqn.H
+++ b/applications/solvers/combustion/XiFoam/EauEqn.H
@@ -2,7 +2,7 @@ if (ign.ignited())
 {
     volScalarField& heau = thermo.heu();
 
-    solve
+    fvScalarMatrix heauEqn
     (
         fvm::ddt(rho, heau) + mvConvection->fvmDiv(phi, heau)
       + (fvc::ddt(rho, K) + fvc::div(phi, K))*rho/thermo.rhou()
@@ -23,5 +23,14 @@ if (ign.ignited())
         // 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)
+
+     ==
+        sources(rho, heau)
     );
+
+    sources.constrain(heauEqn);
+
+    heauEqn.solve();
+
+    sources.correct(heau);
 }
diff --git a/applications/solvers/combustion/XiFoam/UEqn.H b/applications/solvers/combustion/XiFoam/UEqn.H
index 643a99f1343e40fa58ea6aa4f1060718c61eac9f..95f10bfcc9673d3908bffe5ea6355185c9f9838f 100644
--- a/applications/solvers/combustion/XiFoam/UEqn.H
+++ b/applications/solvers/combustion/XiFoam/UEqn.H
@@ -15,5 +15,7 @@
     if (pimple.momentumPredictor())
     {
         solve(UEqn == -fvc::grad(p));
+
+        sources.correct(U);
         K = 0.5*magSqr(U);
     }
diff --git a/applications/solvers/combustion/XiFoam/XiFoam.C b/applications/solvers/combustion/XiFoam/XiFoam.C
index a3e90f7169cebba8ff2fbea060f78db1c54b1e32..bebbd49266f42eb1c839e5126799d5e6aa225e46 100644
--- a/applications/solvers/combustion/XiFoam/XiFoam.C
+++ b/applications/solvers/combustion/XiFoam/XiFoam.C
@@ -69,6 +69,7 @@ int main(int argc, char *argv[])
     #include "readCombustionProperties.H"
     #include "readGravitationalAcceleration.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
     #include "readTimeControls.H"
     #include "compressibleCourantNo.H"
diff --git a/applications/solvers/combustion/XiFoam/bEqn.H b/applications/solvers/combustion/XiFoam/bEqn.H
index 49c2c63ae7c76c5eda0ce14cc52b8461e1da9924..e10be7b6dfae01f3e551c6f2c30bb0db68a6a01d 100644
--- a/applications/solvers/combustion/XiFoam/bEqn.H
+++ b/applications/solvers/combustion/XiFoam/bEqn.H
@@ -71,6 +71,8 @@ if (ign.ignited())
 
     bEqn.solve();
 
+    sources.correct(b);
+
     Info<< "min(b) = " << min(b).value() << endl;
 
 
@@ -167,6 +169,8 @@ if (ign.ignited())
 
         SuEqn.solve();
 
+        sources.correct(Su);
+
         // Limit the maximum Su
         // ~~~~~~~~~~~~~~~~~~~~
         Su.min(SuMax);
@@ -252,6 +256,8 @@ if (ign.ignited())
 
         XiEqn.solve();
 
+        sources.correct(Xi);
+
         // Correct boundedness of Xi
         // ~~~~~~~~~~~~~~~~~~~~~~~~~
         Xi.max(1.0);
diff --git a/applications/solvers/combustion/XiFoam/createFields.H b/applications/solvers/combustion/XiFoam/createFields.H
index 3b7cd9b7aef85cd4936c039ffa7daedc8e685f22..17103885e5e2249ae704a0c6606101aa29d85afd 100644
--- a/applications/solvers/combustion/XiFoam/createFields.H
+++ b/applications/solvers/combustion/XiFoam/createFields.H
@@ -138,5 +138,3 @@
     fields.add(b);
     fields.add(thermo.he());
     fields.add(thermo.heu());
-
-    IObasicSourceList sources(mesh);
diff --git a/applications/solvers/combustion/XiFoam/ftEqn.H b/applications/solvers/combustion/XiFoam/ftEqn.H
index da1d76fe6902296060729b214b42e46170cee931..013e8b3180fa2f44ea2668ea12ed07b0a3d289c2 100644
--- a/applications/solvers/combustion/XiFoam/ftEqn.H
+++ b/applications/solvers/combustion/XiFoam/ftEqn.H
@@ -25,4 +25,6 @@ if (composition.contains("ft"))
     sources.constrain(ftEqn);
 
     ftEqn.solve();
+
+    sources.correct(ft);
 }
diff --git a/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C b/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C
index 401690c3e49a263443da462ebca49c6a11863329..3b229ded146743f05850756199267cd92a9d1c3b 100644
--- a/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C
+++ b/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C
@@ -47,6 +47,7 @@ int main(int argc, char *argv[])
     #include "createEngineTime.H"
     #include "createEngineMesh.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
     #include "readEngineTimeControls.H"
     #include "compressibleCourantNo.H"
diff --git a/applications/solvers/combustion/coldEngineFoam/createFields.H b/applications/solvers/combustion/coldEngineFoam/createFields.H
index 72e88435aceacbf2d6fa546b068157dc7caf0de3..f78e5bde2969cd6935e3bccec61887da6f9a2905 100644
--- a/applications/solvers/combustion/coldEngineFoam/createFields.H
+++ b/applications/solvers/combustion/coldEngineFoam/createFields.H
@@ -69,6 +69,3 @@
 
     Info<< "Creating field kinetic energy K\n" << endl;
     volScalarField K("K", 0.5*magSqr(U));
-
-    Info<< "Creating sources\n" << endl;
-    IObasicSourceList sources(mesh);
diff --git a/applications/solvers/combustion/engineFoam/UEqn.H b/applications/solvers/combustion/engineFoam/UEqn.H
index de3dc757ccf53d5f2dee00a4b8406bfb73afefd1..a8b0207225579307ad9985248ca386f51b992ff7 100644
--- a/applications/solvers/combustion/engineFoam/UEqn.H
+++ b/applications/solvers/combustion/engineFoam/UEqn.H
@@ -10,5 +10,7 @@
     if (pimple.momentumPredictor())
     {
         solve(UEqn == -fvc::grad(p));
+
+        sources.correct(U);
         K = 0.5*magSqr(U);
     }
diff --git a/applications/solvers/combustion/engineFoam/engineFoam.C b/applications/solvers/combustion/engineFoam/engineFoam.C
index 65cd0356ed3dd3d64769a2000222213199807e2a..f11f677398e14e057c04e685bf052073b24f0acc 100644
--- a/applications/solvers/combustion/engineFoam/engineFoam.C
+++ b/applications/solvers/combustion/engineFoam/engineFoam.C
@@ -71,6 +71,7 @@ int main(int argc, char *argv[])
     #include "createEngineMesh.H"
     #include "readCombustionProperties.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
     #include "readEngineTimeControls.H"
     #include "compressibleCourantNo.H"
diff --git a/applications/solvers/combustion/fireFoam/UEqn.H b/applications/solvers/combustion/fireFoam/UEqn.H
index 90e633fc36617153e8fa0001e2631adb4d40daaf..81d90bd695e912277c83e1744a9814f5b8cca7ec 100644
--- a/applications/solvers/combustion/fireFoam/UEqn.H
+++ b/applications/solvers/combustion/fireFoam/UEqn.H
@@ -27,5 +27,6 @@
             )
         );
 
+        sources.correct(U);
         K = 0.5*magSqr(U);
     }
diff --git a/applications/solvers/combustion/fireFoam/YEEqn.H b/applications/solvers/combustion/fireFoam/YEEqn.H
index a23f99dab7461aa6fe1df5450eb8f9bd1a01b4d8..358e4953d1a274be55da723bf6c0ebabf68c4ed5 100644
--- a/applications/solvers/combustion/fireFoam/YEEqn.H
+++ b/applications/solvers/combustion/fireFoam/YEEqn.H
@@ -39,6 +39,8 @@ tmp<fv::convectionScheme<scalar> > mvConvection
 
             YiEqn.solve(mesh.solver("Yi"));
 
+            sources.correct(Yi);
+
             Yi.max(0.0);
             Yt += Yi;
         }
@@ -82,6 +84,8 @@ tmp<fv::convectionScheme<scalar> > mvConvection
 
     EEqn.solve();
 
+    sources.correct(he);
+
     thermo.correct();
 
     Info<< "min/max(T) = "
diff --git a/applications/solvers/combustion/fireFoam/createFields.H b/applications/solvers/combustion/fireFoam/createFields.H
index 9ebd05196ce96441119c3bd6edda09ac4b95bf98..8159ee73aa67906e0c54937a76f12cb3cea3562e 100644
--- a/applications/solvers/combustion/fireFoam/createFields.H
+++ b/applications/solvers/combustion/fireFoam/createFields.H
@@ -146,6 +146,3 @@
     (
         additionalControlsDict.lookup("solvePrimaryRegion")
     );
-
-    IObasicSourceList sources(mesh);
-
diff --git a/applications/solvers/combustion/fireFoam/fireFoam.C b/applications/solvers/combustion/fireFoam/fireFoam.C
index 3f30495a99676979dfb9b92c7953e80f8ce1364b..afe1b815e5eee7938ff0ad94f6caeb3ed4419850 100644
--- a/applications/solvers/combustion/fireFoam/fireFoam.C
+++ b/applications/solvers/combustion/fireFoam/fireFoam.C
@@ -52,6 +52,7 @@ int main(int argc, char *argv[])
     #include "createMesh.H"
     #include "readGravitationalAcceleration.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "createClouds.H"
     #include "createSurfaceFilmModel.H"
     #include "createPyrolysisModel.H"
diff --git a/applications/solvers/combustion/fireFoam/rhoEqn.H b/applications/solvers/combustion/fireFoam/rhoEqn.H
index c465309edbc49266dec7ab2f10d721253a6dc858..5cc780abb1d02bd1621841aa52186429eb140d6f 100644
--- a/applications/solvers/combustion/fireFoam/rhoEqn.H
+++ b/applications/solvers/combustion/fireFoam/rhoEqn.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,6 +43,8 @@ Description
     sources.constrain(rhoEqn);
 
     rhoEqn.solve();
+
+    sources.correct(rho);
 }
 
 // ************************************************************************* //
diff --git a/applications/solvers/combustion/reactingFoam/EEqn.H b/applications/solvers/combustion/reactingFoam/EEqn.H
index 5568c7e5be798761e24e635a4849d22d5b851f69..c3f25da17d40f26ee0f1da68f02252c5ee7428cb 100644
--- a/applications/solvers/combustion/reactingFoam/EEqn.H
+++ b/applications/solvers/combustion/reactingFoam/EEqn.H
@@ -28,6 +28,8 @@
 
     EEqn.solve();
 
+    sources.correct(he);
+
     thermo.correct();
 
     Info<< "min/max(T) = "
diff --git a/applications/solvers/combustion/reactingFoam/UEqn.H b/applications/solvers/combustion/reactingFoam/UEqn.H
index 643a99f1343e40fa58ea6aa4f1060718c61eac9f..95f10bfcc9673d3908bffe5ea6355185c9f9838f 100644
--- a/applications/solvers/combustion/reactingFoam/UEqn.H
+++ b/applications/solvers/combustion/reactingFoam/UEqn.H
@@ -15,5 +15,7 @@
     if (pimple.momentumPredictor())
     {
         solve(UEqn == -fvc::grad(p));
+
+        sources.correct(U);
         K = 0.5*magSqr(U);
     }
diff --git a/applications/solvers/combustion/reactingFoam/YEqn.H b/applications/solvers/combustion/reactingFoam/YEqn.H
index 2f0d29fd8495f080d5e401eda2058af600571a73..c9b4942a5bad3278266c334a9b8982059bcd741f 100644
--- a/applications/solvers/combustion/reactingFoam/YEqn.H
+++ b/applications/solvers/combustion/reactingFoam/YEqn.H
@@ -37,6 +37,8 @@ tmp<fv::convectionScheme<scalar> > mvConvection
 
             YiEqn.solve(mesh.solver("Yi"));
 
+            sources.correct(Yi);
+
             Yi.max(0.0);
             Yt += Yi;
         }
diff --git a/applications/solvers/combustion/reactingFoam/createFields.H b/applications/solvers/combustion/reactingFoam/createFields.H
index 21769875eadcfc5dee1d9dd5a509b5eaabed6d48..32bdd372ee9318986c9fc26635ab6b9dc2f9801b 100644
--- a/applications/solvers/combustion/reactingFoam/createFields.H
+++ b/applications/solvers/combustion/reactingFoam/createFields.H
@@ -99,5 +99,3 @@ volScalarField dQ
     mesh,
     dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
 );
-
-IObasicSourceList sources(mesh);
diff --git a/applications/solvers/combustion/reactingFoam/reactingFoam.C b/applications/solvers/combustion/reactingFoam/reactingFoam.C
index c68f94ebf7ff1c70b5734b1318b9ddba9ceea409..5ebd3573a89484de800eed6b27dff907df4c5ee8 100644
--- a/applications/solvers/combustion/reactingFoam/reactingFoam.C
+++ b/applications/solvers/combustion/reactingFoam/reactingFoam.C
@@ -45,6 +45,7 @@ int main(int argc, char *argv[])
     #include "createMesh.H"
     #include "readGravitationalAcceleration.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
     #include "readTimeControls.H"
     #include "compressibleCourantNo.H"
diff --git a/applications/solvers/combustion/rhoReactingFoam/createFields.H b/applications/solvers/combustion/rhoReactingFoam/createFields.H
index 4c517fb646de239362429f3f6b90794d4ee05954..e99639e18971bf81674fbabcbbeffb47d8dcaed2 100644
--- a/applications/solvers/combustion/rhoReactingFoam/createFields.H
+++ b/applications/solvers/combustion/rhoReactingFoam/createFields.H
@@ -101,5 +101,3 @@ volScalarField dQ
     mesh,
     dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
 );
-
-IObasicSourceList sources(mesh);
diff --git a/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C b/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C
index 0a91aa4b03bdde86034f3730b0ba3287bc98b08a..fffbf485d8f92c4eb5c5ade28159edfd9987829e 100644
--- a/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C
+++ b/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C
@@ -46,6 +46,7 @@ int main(int argc, char *argv[])
     #include "createMesh.H"
     #include "readGravitationalAcceleration.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
     #include "readTimeControls.H"
     #include "compressibleCourantNo.H"
diff --git a/applications/solvers/compressible/rhoPimpleFoam/EEqn.H b/applications/solvers/compressible/rhoPimpleFoam/EEqn.H
index 1cc6ed584c6c3806864cc0a0f461182796b9799a..712a3a9ab4d4a8885f0b3bc05aa0623eaddbbc1d 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/EEqn.H
+++ b/applications/solvers/compressible/rhoPimpleFoam/EEqn.H
@@ -21,8 +21,12 @@
     );
 
     EEqn.relax();
+
     sources.constrain(EEqn);
+
     EEqn.solve();
 
+    sources.correct(he);
+
     thermo.correct();
 }
diff --git a/applications/solvers/compressible/rhoPimpleFoam/UEqn.H b/applications/solvers/compressible/rhoPimpleFoam/UEqn.H
index e4fa5cd6b389b241b34ddc5966be6dbce90fa8bc..daa25ac316bcfabeb0ae347c86dd244385cf9491 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/UEqn.H
+++ b/applications/solvers/compressible/rhoPimpleFoam/UEqn.H
@@ -16,5 +16,7 @@ sources.constrain(UEqn());
 if (pimple.momentumPredictor())
 {
     solve(UEqn() == -fvc::grad(p));
+
+    sources.correct(U);
     K = 0.5*magSqr(U);
 }
diff --git a/applications/solvers/compressible/rhoPimpleFoam/createFields.H b/applications/solvers/compressible/rhoPimpleFoam/createFields.H
index 8b3cfd10b9a1180d574c1610ccec487b3ab5ae68..67cc0c3e456573e71fe9f4937a5fd5d3e9253692 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/createFields.H
+++ b/applications/solvers/compressible/rhoPimpleFoam/createFields.H
@@ -69,6 +69,3 @@
 
     Info<< "Creating field kinetic energy K\n" << endl;
     volScalarField K("K", 0.5*magSqr(U));
-
-    Info<< "Creating sources\n" << endl;
-    IObasicSourceList sources(mesh);
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/rhoLTSPimpleFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/rhoLTSPimpleFoam.C
index ccbba350c265c534fdb0d30c8c6aa1258036d2b5..f3d088b4d627302c1f7092d129588dea020f18f1 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/rhoLTSPimpleFoam.C
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/rhoLTSPimpleFoam.C
@@ -54,6 +54,7 @@ int main(int argc, char *argv[])
 
     #include "setInitialrDeltaT.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C
index f9b8a901f721265fe10cd8c478651f8334ba8497..a2b951de7c28bf0ad045d843df2bae96054849db 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C
@@ -51,6 +51,7 @@ int main(int argc, char *argv[])
     pimpleControl pimple(mesh);
 
     #include "createFields.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/rhoPimplecFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/rhoPimplecFoam.C
index 7e1664dbeac745cf8a24e634cfd72b87e4f41213..c1c323e7abe1dbd2e221abef3033d465f37cdc17 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/rhoPimplecFoam.C
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/rhoPimplecFoam.C
@@ -51,6 +51,7 @@ int main(int argc, char *argv[])
     pimpleControl pimple(mesh);
 
     #include "createFields.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/compressible/rhoSimpleFoam/Allwclean b/applications/solvers/compressible/rhoSimpleFoam/Allwclean
index 49e4b694825e9af88024f4e4857c6ca246477bde..a1fd479e12700c0e98e56ad1df4d6e0a7616e545 100755
--- a/applications/solvers/compressible/rhoSimpleFoam/Allwclean
+++ b/applications/solvers/compressible/rhoSimpleFoam/Allwclean
@@ -3,7 +3,7 @@ cd ${0%/*} || exit 1    # run from this directory
 set -x
 
 wclean
-wclean rhoPorousMRFSimpleFoam
+wclean rhoPorousSimpleFoam
 wclean rhoSimplecFoam
 
 # ----------------------------------------------------------------- end-of-file
diff --git a/applications/solvers/compressible/rhoSimpleFoam/Allwmake b/applications/solvers/compressible/rhoSimpleFoam/Allwmake
index e0b621c2530e21c1221271c0afa24a67fa3e2dac..dc0fd648f5ec8c8581720dce6c1a74643d256faf 100755
--- a/applications/solvers/compressible/rhoSimpleFoam/Allwmake
+++ b/applications/solvers/compressible/rhoSimpleFoam/Allwmake
@@ -3,7 +3,7 @@ cd ${0%/*} || exit 1    # run from this directory
 set -x
 
 wmake
-wmake rhoPorousMRFSimpleFoam
+wmake rhoPorousSimpleFoam
 wmake rhoSimplecFoam
 
 # ----------------------------------------------------------------- end-of-file
diff --git a/applications/solvers/compressible/rhoSimpleFoam/EEqn.H b/applications/solvers/compressible/rhoSimpleFoam/EEqn.H
index e496906d082b96a7e2dc8a9aa731dba5372608aa..7adacc8fd1bbae9cd71919fdeaac619d03790708 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/EEqn.H
+++ b/applications/solvers/compressible/rhoSimpleFoam/EEqn.H
@@ -15,8 +15,12 @@
     );
 
     EEqn.relax();
+
     sources.constrain(EEqn);
+
     EEqn.solve();
 
+    sources.correct(he);
+
     thermo.correct();
 }
diff --git a/applications/solvers/compressible/rhoSimpleFoam/UEqn.H b/applications/solvers/compressible/rhoSimpleFoam/UEqn.H
index 8bbd96028194b6ecd1742e993bb3cb914c152acb..c01b4d7984e18b52c5f06460d89941e9628e8a59 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/UEqn.H
+++ b/applications/solvers/compressible/rhoSimpleFoam/UEqn.H
@@ -10,4 +10,8 @@
 
     UEqn().relax();
 
+    sources.constrain(UEqn());
+
     solve(UEqn() == -fvc::grad(p));
+
+    sources.correct(U);
diff --git a/applications/solvers/compressible/rhoSimpleFoam/createFields.H b/applications/solvers/compressible/rhoSimpleFoam/createFields.H
index 3f4b2fd0217cb800ae9c25793630f8266ca4d8d4..dea35b76575477e953c521d77f6bb12cf28c3dc0 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/createFields.H
+++ b/applications/solvers/compressible/rhoSimpleFoam/createFields.H
@@ -60,6 +60,3 @@
     );
 
     dimensionedScalar initialMass = fvc::domainIntegrate(rho);
-    
-    Info<< "Creating sources\n" << endl;
-    IObasicSourceList sources(mesh);
diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/EEqn.H b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/EEqn.H
index e496906d082b96a7e2dc8a9aa731dba5372608aa..7adacc8fd1bbae9cd71919fdeaac619d03790708 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/EEqn.H
+++ b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/EEqn.H
@@ -15,8 +15,12 @@
     );
 
     EEqn.relax();
+
     sources.constrain(EEqn);
+
     EEqn.solve();
 
+    sources.correct(he);
+
     thermo.correct();
 }
diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/UEqn.H b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/UEqn.H
index 52e15e07b5143f0e078cec89c9d1e57ebf04108a..e1c964a1793dc838cd23c1e954f55f1b7065b3e9 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/UEqn.H
+++ b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/UEqn.H
@@ -33,6 +33,8 @@
             U = trTU() & ((UEqn() == sources(rho, U))().H() - gradp);
         }
         U.correctBoundaryConditions();
+
+        sources.correct(U);
     }
     else
     {
@@ -42,6 +44,8 @@
 
         solve(UEqn() == -fvc::grad(p) + sources(rho, U));
 
+        sources.correct(U);
+
         trAU = 1.0/UEqn().A();
         trAU().rename("rAU");
     }
diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/createFields.H b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/createFields.H
index ad924283eef67e97e6fcb193e0a12a6ce834ce9d..4fff74d224cadb920dec4f6c42b936dff55f0452 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/createFields.H
+++ b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/createFields.H
@@ -59,6 +59,3 @@
     );
 
     dimensionedScalar initialMass = fvc::domainIntegrate(rho);
-
-    Info<< "Creating sources\n" << endl;
-    IObasicSourceList sources(mesh);
diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/rhoPorousSimpleFoam.C b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/rhoPorousSimpleFoam.C
index e906c56f808727774ae5c17d29631f2afbbf6fab..55169f14419694b6189650c2ab559155c60e11f2 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/rhoPorousSimpleFoam.C
+++ b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/rhoPorousSimpleFoam.C
@@ -50,6 +50,7 @@ int main(int argc, char *argv[])
     simpleControl simple(mesh);
 
     #include "createFields.H"
+    #include "createSources.H"
     #include "createZones.H"
     #include "initContinuityErrs.H"
 
diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoSimpleFoam.C b/applications/solvers/compressible/rhoSimpleFoam/rhoSimpleFoam.C
index efc1067db233ca92b1a286fad6f799a6c77ea6c7..e0adb91773aba04a666bcb2c483eb6a049d8b69c 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/rhoSimpleFoam.C
+++ b/applications/solvers/compressible/rhoSimpleFoam/rhoSimpleFoam.C
@@ -47,6 +47,7 @@ int main(int argc, char *argv[])
     simpleControl simple(mesh);
 
     #include "createFields.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoSimplecFoam/rhoSimplecFoam.C b/applications/solvers/compressible/rhoSimpleFoam/rhoSimplecFoam/rhoSimplecFoam.C
index 41e15dbfa842e5c8b75228e95c37edf5cc3d2234..be186ff319d8b1e91f6cce94e09746308dc7353e 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/rhoSimplecFoam/rhoSimplecFoam.C
+++ b/applications/solvers/compressible/rhoSimpleFoam/rhoSimplecFoam/rhoSimplecFoam.C
@@ -49,6 +49,7 @@ int main(int argc, char *argv[])
     simpleControl simple(mesh);
 
     #include "createFields.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/EEqn.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/EEqn.H
index 1cc6ed584c6c3806864cc0a0f461182796b9799a..712a3a9ab4d4a8885f0b3bc05aa0623eaddbbc1d 100644
--- a/applications/solvers/heatTransfer/buoyantPimpleFoam/EEqn.H
+++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/EEqn.H
@@ -21,8 +21,12 @@
     );
 
     EEqn.relax();
+
     sources.constrain(EEqn);
+
     EEqn.solve();
 
+    sources.correct(he);
+
     thermo.correct();
 }
diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/UEqn.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/UEqn.H
index e12724ed69716582c3b683aa1907ac9cb9a89171..892de138bffdcf71b60214f1ee1944bc8456b662 100644
--- a/applications/solvers/heatTransfer/buoyantPimpleFoam/UEqn.H
+++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/UEqn.H
@@ -27,5 +27,7 @@
                 )*mesh.magSf()
             )
         );
+
+        sources.correct(U);
         K = 0.5*magSqr(U);
     }
diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C b/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C
index 62fcf33c04c861e5204ad10ffd8c963254c9513a..bac6d8d03e98cd7620e282a18995f02a8bc849dc 100644
--- a/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C
+++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C
@@ -49,6 +49,7 @@ int main(int argc, char *argv[])
     #include "createMesh.H"
     #include "readGravitationalAcceleration.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "createRadiationModel.H"
     #include "initContinuityErrs.H"
     #include "readTimeControls.H"
diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H
index b606339627d2b97b590deecec5d30159ba678f87..eaa078c6ad6ad439d5bc0c74a3188cff234f9490 100644
--- a/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H
+++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H
@@ -86,6 +86,3 @@
 
     Info<< "Creating field kinetic energy K\n" << endl;
     volScalarField K("K", 0.5*magSqr(U));
-
-    Info<< "Creating sources\n" << endl;
-    IObasicSourceList sources(mesh);
diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H
index 094b50cb3eec079b73160ce77e34ef5a8d055327..f84961f181120c012dc105fb9e641e5e219d770d 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H
+++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H
@@ -21,6 +21,8 @@
 
     EEqn.solve();
 
+    sources.correct(he);
+
     thermo.correct();
     radiation->correct();
 }
diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/UEqn.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/UEqn.H
index 860cef45470a74ded924459b3c3e7f86ce445405..82e85ca563cba050802eba2ff17264a140494436 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleFoam/UEqn.H
+++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/UEqn.H
@@ -26,4 +26,6 @@
                 )*mesh.magSf()
             )
         );
+
+        sources.correct(U);
     }
diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C b/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C
index bbd6f77773c2777d9962c9d392090b60f30023b2..0b401c974c3d95b48b4144e936af5552316e683f 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C
+++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C
@@ -46,6 +46,7 @@ int main(int argc, char *argv[])
     #include "createMesh.H"
     #include "readGravitationalAcceleration.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "createRadiationModel.H"
     #include "initContinuityErrs.H"
 
diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H
index 704bf32d505598f57d2869c66d267970e3f4e84b..bb7a65cb1d28ac920674974f91563447637874e1 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H
+++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H
@@ -87,5 +87,3 @@
 
     dimensionedScalar initialMass = fvc::domainIntegrate(rho);
     dimensionedScalar totalVolume = sum(mesh.V());
-
-    IObasicSourceList sources(mesh);
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
index a0bd72c3b4b73d2d0a28a80acb40f7a95d7ec863..7805adf8d76f7f4753a89aa5115aef2437c479c4 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
@@ -45,7 +45,6 @@ Description
 #include "solidRegionDiffNo.H"
 #include "solidThermo.H"
 #include "radiationModel.H"
-#include "IOporosityModelList.H"
 #include "IObasicSourceList.H"
 
 
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H
index 3e3157de72c8b313724703aa5c54747f7df6d873..01f2d3223382941b96c86b0bf99e950dda153399 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H
@@ -21,6 +21,8 @@
 
     EEqn.solve();
 
+    sources.correct(he);
+
     thermo.correct();
     rad.correct();
 
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/UEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/UEqn.H
index 8df8cd47840968a70df672ef61f39ede626142ce..e5ab958f1098be0db9d7891fd826691f735e57a9 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/UEqn.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/UEqn.H
@@ -23,3 +23,5 @@
             )*mesh.magSf()
         )
     );
+
+    sources.correct(U);
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H
index d30848804e830b517accca121df2e741be4f1dcf..cc5eda691d9e2779a037f950e4cb93b0f183accd 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H
@@ -17,7 +17,7 @@
     PtrList<dimensionedScalar> rhoMax(fluidRegions.size());
     PtrList<dimensionedScalar> rhoMin(fluidRegions.size());
 
-    PtrList<IObasicSourceList> heatSources(fluidRegions.size());
+    PtrList<IObasicSourceList> fluidSources(fluidRegions.size());
 
     // Populate fluid field pointer lists
     forAll(fluidRegions, i)
@@ -194,7 +194,7 @@
         );
 
         Info<< "    Adding sources\n" << endl;
-        heatSources.set
+        fluidSources.set
         (
             i,
             new IObasicSourceList(fluidRegions[i])
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H
index ee005e0d22964bab19e15fb14ef680bdeeaf8371..935b27d57ce1bc83e40aa8113f66fba0bad8ddd2 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H
@@ -12,7 +12,7 @@
     volScalarField& p = thermo.p();
     const volScalarField& psi = thermo.psi();
 
-    IObasicSourceList& sources = heatSources[i];
+    IObasicSourceList& sources = fluidSources[i];
 
     const dimensionedScalar initialMass
     (
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H
index a0905d3e4fd9802351c800ae4b96ae52d70885c1..d0f5dbc656a8200148df5e50be0f97ffa9081765 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H
@@ -6,8 +6,14 @@
            - fvm::laplacian(betav*alpha, h, "laplacian(alpha,h)")
            + sources(rho, h)
         );
+
         hEqn.relax();
+
+        sources.constrain(hEqn);
+
         hEqn.solve();
+
+        sources.correct(h);
     }
 }
 
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H
index 9f41c9eb37517366bdf4a00913ac440557c73917..143ca3a7425b80fc79a6083d3d7d19eab9472498 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H
@@ -22,8 +22,13 @@
     );
 
     EEqn.relax();
+
+    sources.constrain(EEqn);
+
     EEqn.solve(mesh.solver(he.select(finalIter)));
 
+    sources.correct(he);
+
     thermo.correct();
     rad.correct();
 
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/UEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/UEqn.H
index 87bd5924f49f92897561eec47e965d2749b05b80..9c32ec054e1e9537fb01b020dd153003f82ce984 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/UEqn.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/UEqn.H
@@ -9,8 +9,7 @@
 
     UEqn().relax();
 
-    // Add porous resistance
-    pZones.addResistance(UEqn());
+    sources.constrain(UEqn());
 
     if (momentumPredictor)
     {
@@ -21,11 +20,13 @@
             fvc::reconstruct
             (
                 (
-                    - ghf*fvc::snGrad(rho)
-                    - fvc::snGrad(p_rgh)
+                  - ghf*fvc::snGrad(rho)
+                  - fvc::snGrad(p_rgh)
                 )*mesh.magSf()
             ),
             mesh.solver(U.select(finalIter))
         );
+
+        sources.correct(U);
         K = 0.5*magSqr(U);
     }
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
index a2021a5edc66f83255886fc86c18535c4c2e689d..fbc39c85569d6e478ab99659512b2493d9dbf89c 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
@@ -14,8 +14,7 @@
 
     List<scalar> initialMassFluid(fluidRegions.size());
 
-    PtrList<IObasicSourceList> heatSources(fluidRegions.size());
-    PtrList<IOporosityModelList> porousZonesFluid(fluidRegions.size());
+    PtrList<IObasicSourceList> fluidSources(fluidRegions.size());
 
     // Populate fluid field pointer lists
     forAll(fluidRegions, i)
@@ -192,16 +191,9 @@
         );
 
         Info<< "    Adding sources\n" << endl;
-        heatSources.set
+        fluidSources.set
         (
             i,
             new IObasicSourceList(fluidRegions[i])
         );
-
-        Info<< "    Adding porous zones\n" << endl;
-        porousZonesFluid.set
-        (
-            i,
-            new IOporosityModelList(fluidRegions[i])
-        );
     }
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H
index 28f0ea96834746cf0dfafaea0951bbd8a5b5503c..84a22048e422f86bf48d47b9e2c2891981495e38 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H
@@ -20,9 +20,7 @@
 
     radiation::radiationModel& rad = radiation[i];
 
-    IObasicSourceList& sources = heatSources[i];
-
-    const IOporosityModelList& pZones = porousZonesFluid[i];
+    IObasicSourceList& sources = fluidSources[i];
 
     const dimensionedScalar initialMass
     (
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H
index c281ccc1971a0499c81115683d71d47e4083b1a6..be24cc2ba08d3bd53b0efa960847153065789614 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H
@@ -19,6 +19,8 @@ if (finalIter)
         sources.constrain(hEqn());
 
         hEqn().solve(mesh.solver(h.select(finalIter)));
+
+        sources.correct(h);
     }
 }
 
diff --git a/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/SRFPimpleFoam.C b/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/SRFPimpleFoam.C
index 7085c5bd351f4957836ef768b7497630abe6112c..19b42eb4d53321b3bac32caeb083efbde9eba69f 100644
--- a/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/SRFPimpleFoam.C
+++ b/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/SRFPimpleFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -47,6 +47,7 @@ int main(int argc, char *argv[])
     #include "createTime.H"
     #include "createMesh.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
 
     pimpleControl pimple(mesh);
diff --git a/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/UrelEqn.H b/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/UrelEqn.H
index 8b496a6aed5f73765f5156be78af592d1c97e65d..4c5ec3c9a9c0a6303648d4babfcb87051e226c60 100644
--- a/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/UrelEqn.H
+++ b/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/UrelEqn.H
@@ -12,3 +12,5 @@
     sources.constrain(UrelEqn());
 
     solve(UrelEqn() == -fvc::grad(p) + sources(Urel));
+
+    sources.correct(Urel);
diff --git a/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/createFields.H b/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/createFields.H
index 5895a554429ea70e9f2aac70596632952c50cce5..a6cff20e14249006eca5ae86f7c20745b90e68d0 100644
--- a/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/createFields.H
+++ b/applications/solvers/incompressible/pimpleFoam/SRFPimpleFoam/createFields.H
@@ -70,6 +70,3 @@ volVectorField U
     ),
     Urel + SRF->U()
 );
-
-
-IObasicSourceList sources(mesh);
diff --git a/applications/solvers/incompressible/pimpleFoam/UEqn.H b/applications/solvers/incompressible/pimpleFoam/UEqn.H
index 84a404654abc2741e3c1db12204b609b3ed63bc9..94913478a606ba4990c313f81bdccc5d9f6e9482 100644
--- a/applications/solvers/incompressible/pimpleFoam/UEqn.H
+++ b/applications/solvers/incompressible/pimpleFoam/UEqn.H
@@ -18,4 +18,6 @@ volScalarField rAU(1.0/UEqn().A());
 if (pimple.momentumPredictor())
 {
     solve(UEqn() == -fvc::grad(p));
+
+    sources.correct(U);
 }
diff --git a/applications/solvers/incompressible/pimpleFoam/createFields.H b/applications/solvers/incompressible/pimpleFoam/createFields.H
index bb4366cdd79583acb0121b50362d881431b3e850..e4127150c0d8f3ffba6326ab3edd187434f94c98 100644
--- a/applications/solvers/incompressible/pimpleFoam/createFields.H
+++ b/applications/solvers/incompressible/pimpleFoam/createFields.H
@@ -40,6 +40,3 @@ autoPtr<incompressible::turbulenceModel> turbulence
 (
     incompressible::turbulenceModel::New(U, phi, laminarTransport)
 );
-
-
-IObasicSourceList sources(mesh);
diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/UEqn.H b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/UEqn.H
index 618816f5fe1e3a54d658632ab07d43f12920e9f0..c125d2ac2aee303e75d3dd2ea23f71ca4523344d 100644
--- a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/UEqn.H
+++ b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/UEqn.H
@@ -16,4 +16,6 @@ rAU = 1.0/UEqn().A();
 if (pimple.momentumPredictor())
 {
     solve(UEqn() == -fvc::grad(p) + sources(U));
+
+    sources.correct(U);
 }
diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/createFields.H b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/createFields.H
index 701a3ff7330bdb62b8a2faedf2e017cd6d6f5daa..16b3bd977d07b6979d2cb84e5f12100cc8910921 100644
--- a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/createFields.H
+++ b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/createFields.H
@@ -56,6 +56,3 @@
         runTime.deltaT(),
         zeroGradientFvPatchScalarField::typeName
     );
-
-
-    IObasicSourceList sources(mesh);
diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C
index 03299b71bb767c1b6eb0ac2033145451bd224133..27fc93f341a608605efedc9d1acfb9c7eb467c16 100644
--- a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C
+++ b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -49,6 +49,7 @@ int main(int argc, char *argv[])
     #include "createDynamicFvMesh.H"
     #include "initContinuityErrs.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "readTimeControls.H"
 
     pimpleControl pimple(mesh);
diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C b/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C
index 8b0f240e4d6c75bc720a4a38ad7d0c74cc17e75a..ceb186cdbf42bdfc6270115e0d280bbfc333b6a3 100644
--- a/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C
+++ b/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C
@@ -50,6 +50,7 @@ int main(int argc, char *argv[])
     #include "createTime.H"
     #include "createMesh.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
 
     pimpleControl pimple(mesh);
diff --git a/applications/solvers/incompressible/potentialFreeSurfaceFoam/UEqn.H b/applications/solvers/incompressible/potentialFreeSurfaceFoam/UEqn.H
index 74e84d9bfc9a9c41ce65b7f570ece27c735bcdb8..123eaf7ac63e67fc65279a7109f2dfa1ec4e2671 100644
--- a/applications/solvers/incompressible/potentialFreeSurfaceFoam/UEqn.H
+++ b/applications/solvers/incompressible/potentialFreeSurfaceFoam/UEqn.H
@@ -13,4 +13,6 @@ sources.constrain(UEqn());
 if (pimple.momentumPredictor())
 {
     solve(UEqn() == -fvc::grad(p_gh) + sources(U));
+
+    sources.correct(U);
 }
diff --git a/applications/solvers/incompressible/potentialFreeSurfaceFoam/createFields.H b/applications/solvers/incompressible/potentialFreeSurfaceFoam/createFields.H
index 27af553b77c244e11577f5b95be826a02a0c98e2..9e1c7aa9ad9a746d5d1d37dc46e4257dc6f35979 100644
--- a/applications/solvers/incompressible/potentialFreeSurfaceFoam/createFields.H
+++ b/applications/solvers/incompressible/potentialFreeSurfaceFoam/createFields.H
@@ -74,6 +74,3 @@
     label p_ghRefCell = 0;
     scalar p_ghRefValue = 0.0;
     setRefCell(p_gh, pimple.dict(), p_ghRefCell, p_ghRefValue);
-
-
-    IObasicSourceList sources(mesh);
diff --git a/applications/solvers/incompressible/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C b/applications/solvers/incompressible/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C
index 35a787e97b989883a91c04c0145823fef9ff215a..114c183c4c47a6892c73548fdaa2a687d8e110a0 100644
--- a/applications/solvers/incompressible/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C
+++ b/applications/solvers/incompressible/potentialFreeSurfaceFoam/potentialFreeSurfaceFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -52,6 +52,7 @@ int main(int argc, char *argv[])
     pimpleControl pimple(mesh);
 
     #include "createFields.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/SRFSimpleFoam.C b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/SRFSimpleFoam.C
index 3631b154a6fa19a8f968fe9d247ff52dbacbbe45..eab6907e8da0dc355f34211373f12f2d98cef851 100644
--- a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/SRFSimpleFoam.C
+++ b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/SRFSimpleFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,6 +45,7 @@ int main(int argc, char *argv[])
     #include "createTime.H"
     #include "createMesh.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
 
     simpleControl simple(mesh);
diff --git a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H
index fb605fffd363507c4007333e16afecbb81a5c6da..265a731269581fd04789f21eb537444b4f0baa69 100644
--- a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H
+++ b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H
@@ -14,3 +14,5 @@
     sources.constrain(UrelEqn());
 
     solve(UrelEqn() == -fvc::grad(p));
+
+    sources.correct(Urel);
diff --git a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/createFields.H b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/createFields.H
index 0df5760babce6bd52ddb0fc41a60480df6e09ab8..78eea98cf3315af16542dcbb8b647f9e4e201f86 100644
--- a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/createFields.H
+++ b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/createFields.H
@@ -52,9 +52,4 @@
     );
 
     Info<< "Creating SRF model\n" << endl;
-    autoPtr<SRF::SRFModel> SRF
-    (
-        SRF::SRFModel::New(Urel)
-    );
-
-    IObasicSourceList sources(mesh);
+    autoPtr<SRF::SRFModel> SRF(SRF::SRFModel::New(Urel));
diff --git a/applications/solvers/incompressible/simpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/UEqn.H
index 786c4f59196305bf0362c6e733165ad8c8cf1525..719e294a08167fa92d68092466b3019fb6e59a1a 100644
--- a/applications/solvers/incompressible/simpleFoam/UEqn.H
+++ b/applications/solvers/incompressible/simpleFoam/UEqn.H
@@ -13,3 +13,5 @@
     sources.constrain(UEqn());
 
     solve(UEqn() == -fvc::grad(p));
+
+    sources.correct(U);
diff --git a/applications/solvers/incompressible/simpleFoam/createFields.H b/applications/solvers/incompressible/simpleFoam/createFields.H
index 97d40c3f0735ee9e3604f2d46ff79f685391d683..947da10c9d357a84850c37b2ae13f21ae9ab9499 100644
--- a/applications/solvers/incompressible/simpleFoam/createFields.H
+++ b/applications/solvers/incompressible/simpleFoam/createFields.H
@@ -39,5 +39,3 @@
     (
         incompressible::RASModel::New(U, phi, laminarTransport)
     );
-
-    IObasicSourceList sources(mesh);
diff --git a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H
index 101c16d827afa0936982d2b62ceb17c38afbdce2..3ce7e2f533d792b57167d27e0c8a3fa4fea26e35 100644
--- a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H
+++ b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H
@@ -12,8 +12,6 @@
 
     UEqn().relax();
 
-    sources.constrain(UEqn());
-
     // Include the porous media resistance and solve the momentum equation
     // either implicit in the tensorial resistance or transport using by
     // including the spherical part of the resistance in the momentum diagonal
@@ -28,6 +26,8 @@
         trTU = inv(tTU());
         trTU().rename("rAU");
 
+        sources.constrain(UEqn());
+
         volVectorField gradp(fvc::grad(p));
 
         for (int UCorr=0; UCorr<nUCorr; UCorr++)
@@ -35,13 +35,19 @@
             U = trTU() & (UEqn().H() - gradp);
         }
         U.correctBoundaryConditions();
+
+        sources.correct(U);
     }
     else
     {
         pZones.addResistance(UEqn());
 
+        sources.constrain(UEqn());
+
         solve(UEqn() == -fvc::grad(p));
 
+        sources.correct(U);
+
         trAU = 1.0/UEqn().A();
         trAU().rename("rAU");
     }
diff --git a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/porousSimpleFoam.C b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/porousSimpleFoam.C
index e7128f8c1f08b040774375cf4596bb0ca76f3324..4c3563ac8f14cae5db4cc696001b877f29c36ce6 100644
--- a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/porousSimpleFoam.C
+++ b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/porousSimpleFoam.C
@@ -50,6 +50,7 @@ int main(int argc, char *argv[])
     simpleControl simple(mesh);
 
     #include "createFields.H"
+    #include "createSources.H"
     #include "createZones.H"
     #include "initContinuityErrs.H"
 
diff --git a/applications/solvers/incompressible/simpleFoam/simpleFoam.C b/applications/solvers/incompressible/simpleFoam/simpleFoam.C
index 3b3d57998d12084811d267880803dea8fca0201d..80bca738bdc3d0241fb84fe9e9e64c0890f9ac6f 100644
--- a/applications/solvers/incompressible/simpleFoam/simpleFoam.C
+++ b/applications/solvers/incompressible/simpleFoam/simpleFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,6 +43,7 @@ int main(int argc, char *argv[])
     #include "createTime.H"
     #include "createMesh.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
 
     simpleControl simple(mesh);
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/EEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/EEqn.H
index 92219b9879f0bd5d21b5a3b52217051dea48ee41..37ca5e82a48b82b15ac95fb1e72c0ac32e62f40f 100644
--- a/applications/solvers/lagrangian/coalChemistryFoam/EEqn.H
+++ b/applications/solvers/lagrangian/coalChemistryFoam/EEqn.H
@@ -25,9 +25,13 @@
     );
 
     EEqn.relax();
+
     sources.constrain(EEqn);
+
     EEqn.solve();
 
+    sources.correct(he);
+
     thermo.correct();
     radiation->correct();
 
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H
index fe7b047d9a24e41d4baa7f54324f75e3cc08f160..3dee99c1c7731e3f375d6394b8e2942f2ed43a92 100644
--- a/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H
+++ b/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H
@@ -17,5 +17,7 @@
     if (pimple.momentumPredictor())
     {
         solve(UEqn == -fvc::grad(p));
+
+        sources.correct(U);
         K = 0.5*magSqr(U);
     }
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H
index f07208909c9f0fca775d3c5d9cd8db66ee5d885b..a5c39e84736ca4e883c88dd1f98a53ee7ccae863 100644
--- a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H
+++ b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H
@@ -39,6 +39,8 @@ tmp<fv::convectionScheme<scalar> > mvConvection
 
             YiEqn.solve(mesh.solver("Yi"));
 
+            sources.correct(Yi);
+
             Yi.max(0.0);
             Yt += Yi;
         }
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
index 6832d01458abe358cf1fdfab87d8b139aad58f00..2197ae8d52577cd1023feefe22cc0438cc7d0969 100644
--- a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
+++ b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
@@ -55,6 +55,7 @@ int main(int argc, char *argv[])
     #include "createMesh.H"
     #include "readGravitationalAcceleration.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "createClouds.H"
     #include "createRadiationModel.H"
     #include "initContinuityErrs.H"
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/createFields.H b/applications/solvers/lagrangian/coalChemistryFoam/createFields.H
index d76805c25a1f3a441cf2765082b5e1a98fba1cba..1a45776ed4d5eb2acb7ce1dec21fc76e348044f7 100644
--- a/applications/solvers/lagrangian/coalChemistryFoam/createFields.H
+++ b/applications/solvers/lagrangian/coalChemistryFoam/createFields.H
@@ -126,9 +126,6 @@
     Info<< "Creating field kinetic energy K\n" << endl;
     volScalarField K("K", 0.5*magSqr(U));
 
-    Info<< "\nConstructing sources" << endl;
-    IObasicSourceList sources(mesh);
-
     volScalarField dQ
     (
         IOobject
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H
index c8e8193eb2c7c8eb95c248b472f37c194d14ef25..5c37255fefda07355b4b68bf93f8ca8eecf52090 100644
--- a/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H
+++ b/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -42,6 +42,8 @@ Description
     sources.constrain(rhoEqn);
 
     rhoEqn.solve();
+
+    sources.correct(rho);
 }
 
 // ************************************************************************* //
diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H
index 2c327a1099ab82a4a1e5b6791a913a8c142292df..4abcdcf4414326767ed2525d60abfecbac1c02ba 100644
--- a/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H
+++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H
@@ -25,9 +25,13 @@
     );
 
     EEqn.relax();
+
     sources.constrain(EEqn);
+
     EEqn.solve();
 
+    sources.correct(he);
+
     thermo.correct();
     radiation->correct();
 
diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/UEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/UEqn.H
index 5884abe0c1f3f416c5db964fcf1e35055434cad8..81d90bd695e912277c83e1744a9814f5b8cca7ec 100644
--- a/applications/solvers/lagrangian/reactingParcelFilmFoam/UEqn.H
+++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/UEqn.H
@@ -26,5 +26,7 @@
                 )*mesh.magSf()
             )
         );
+
+        sources.correct(U);
         K = 0.5*magSqr(U);
     }
diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H
index e05dcdef6ab53038c91a52cf06c6ca2e0335ae4b..615342c436419383bccbc1513093c756b7c32e83 100644
--- a/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H
+++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H
@@ -40,6 +40,8 @@ tmp<fv::convectionScheme<scalar> > mvConvection
 
             YEqn.solve(mesh.solver("Yi"));
 
+            sources.correct(Yi);
+
             Yi.max(0.0);
             Yt += Yi;
         }
diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H
index 1a15b1b2abfa2cee780794ed266582f6d491ff12..057978c8f893796cf9e57b64497b7e6612249629 100644
--- a/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H
+++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H
@@ -139,5 +139,3 @@
         mesh,
         dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
     );
-
-    IObasicSourceList sources(mesh);
diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C b/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C
index 203ee0ecd8afd0e8b2df0f9202fc6844034618e0..80add60630f630f39c358e3ba64106f8436ab052 100644
--- a/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C
+++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C
@@ -50,6 +50,7 @@ int main(int argc, char *argv[])
     #include "createMesh.H"
     #include "readGravitationalAcceleration.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "createClouds.H"
     #include "createRadiationModel.H"
     #include "createSurfaceFilmModel.H"
diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/rhoEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/rhoEqn.H
index 282acfe91eee30d8bef14ed85a2468fec1bb7c2a..5cc780abb1d02bd1621841aa52186429eb140d6f 100644
--- a/applications/solvers/lagrangian/reactingParcelFilmFoam/rhoEqn.H
+++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/rhoEqn.H
@@ -30,7 +30,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 {
-    solve
+    fvScalarMatrix rhoEqn
     (
         fvm::ddt(rho)
       + fvc::div(phi)
@@ -39,6 +39,12 @@ Description
       + surfaceFilm.Srho()
       + sources(rho)
     );
+
+    sources.constrain(rhoEqn);
+
+    rhoEqn.solve();
+
+    sources.correct(rho);
 }
 
 // ************************************************************************* //
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/EEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/EEqn.H
index c8ef9bf84e3b51d6c1b8d1fe1e706184e34220ac..57456fe791ccbbeba99d488fbeb27aed4dba949b 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/EEqn.H
+++ b/applications/solvers/lagrangian/reactingParcelFoam/EEqn.H
@@ -24,9 +24,13 @@
     );
 
     EEqn.relax();
+
     sources.constrain(EEqn);
+
     EEqn.solve();
 
+    sources.correct(he);
+
     thermo.correct();
     radiation->correct();
 
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/LTSReactingParcelFoam/LTSReactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/LTSReactingParcelFoam/LTSReactingParcelFoam.C
index 4ea17727d9e6cc9088a8952cf6c2175841fd6cf5..c0b75196073ed6890c2b59de3d38f1de0c1b842e 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/LTSReactingParcelFoam/LTSReactingParcelFoam.C
+++ b/applications/solvers/lagrangian/reactingParcelFoam/LTSReactingParcelFoam/LTSReactingParcelFoam.C
@@ -60,11 +60,10 @@ int main(int argc, char *argv[])
 
     #include "readTimeControls.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "createRDeltaT.H"
     #include "createRadiationModel.H"
     #include "createClouds.H"
-    #include "createExplicitSources.H"
-    #include "createPorousZones.H"
     #include "initContinuityErrs.H"
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/UEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/UEqn.H
index 612e582c54270b7b888f4b402ec2d5f47c43ffb0..11d4b27ef8e137f9ed31df7d740588a450dcc739 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/UEqn.H
+++ b/applications/solvers/lagrangian/reactingParcelFoam/UEqn.H
@@ -1,6 +1,5 @@
     fvVectorMatrix UEqn
     (
-        //pZones.ddt(rho, U)
         fvm::ddt(rho, U)
       + fvm::div(phi, U)
       + turbulence->divDevRhoReff(U)
@@ -14,10 +13,10 @@
 
     sources.constrain(UEqn);
 
-    pZones.addResistance(UEqn);
-
     if (pimple.momentumPredictor())
     {
         solve(UEqn == -fvc::grad(p));
+
+        sources.correct(U);
         K = 0.5*magSqr(U);
     }
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H
index a22267d9be2706d4bcc01fc2562436e41b567c64..b7e40dcc59f616b40e4a9b18dbe5c5d280995ba1 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H
+++ b/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H
@@ -38,6 +38,8 @@ tmp<fv::convectionScheme<scalar> > mvConvection
 
             YEqn.solve(mesh.solver("Yi"));
 
+            sources.correct(Yi);
+
             Yi.max(0.0);
             Yt += Yi;
         }
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/createExplicitSources.H b/applications/solvers/lagrangian/reactingParcelFoam/createExplicitSources.H
deleted file mode 100644
index b2e5775e589ba78bb004f3469fcc52b6aec2384f..0000000000000000000000000000000000000000
--- a/applications/solvers/lagrangian/reactingParcelFoam/createExplicitSources.H
+++ /dev/null
@@ -1,2 +0,0 @@
-Info<< "Creating sources\n" << endl;
-IObasicSourceList sources(mesh);
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/createPorousZones.H b/applications/solvers/lagrangian/reactingParcelFoam/createPorousZones.H
deleted file mode 100644
index 05f0f044ce4314fc37f7c64f0a8808099199a213..0000000000000000000000000000000000000000
--- a/applications/solvers/lagrangian/reactingParcelFoam/createPorousZones.H
+++ /dev/null
@@ -1,3 +0,0 @@
-    Info<< "Creating porous zones" << nl << endl;
-
-    IOporosityModelList pZones(mesh);
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
index a8f43285433a4494c275f66cd556c65fddbc7f4d..c273f71856c525c2d7a84f5472cbbebd95dc424c 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
+++ b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
@@ -64,8 +64,7 @@ int main(int argc, char *argv[])
     #include "createFields.H"
     #include "createRadiationModel.H"
     #include "createClouds.H"
-    #include "createExplicitSources.H"
-    #include "createPorousZones.H"
+    #include "createSources.H"
     #include "initContinuityErrs.H"
     #include "readTimeControls.H"
     #include "compressibleCourantNo.H"
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/rhoEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/rhoEqn.H
index f142f620bee4ebacc444681d4b529776a408780f..6ad34d56c7e082a4733f0dfd91a53ec0fd5e9abc 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/rhoEqn.H
+++ b/applications/solvers/lagrangian/reactingParcelFoam/rhoEqn.H
@@ -43,6 +43,8 @@ Description
 
     rhoEqn.solve();
 
+    sources.correct(rho);
+
     Info<< "rho min/max = " << min(rho).value() << ", " << max(rho).value()
         << endl;
 }
diff --git a/applications/solvers/lagrangian/sprayFoam/UEqn.H b/applications/solvers/lagrangian/sprayFoam/UEqn.H
index 3723f7f79db5b06860fbd9405b20d4dcce5624b9..11d4b27ef8e137f9ed31df7d740588a450dcc739 100644
--- a/applications/solvers/lagrangian/sprayFoam/UEqn.H
+++ b/applications/solvers/lagrangian/sprayFoam/UEqn.H
@@ -16,5 +16,7 @@
     if (pimple.momentumPredictor())
     {
         solve(UEqn == -fvc::grad(p));
+
+        sources.correct(U);
         K = 0.5*magSqr(U);
     }
diff --git a/applications/solvers/lagrangian/sprayFoam/createFields.H b/applications/solvers/lagrangian/sprayFoam/createFields.H
index 612ea4f3c9314da5aa9c0d9c1fc71dc472c0b2a8..4aa21b506fbbb0e7eb8d8d07fe55aa966389d86e 100644
--- a/applications/solvers/lagrangian/sprayFoam/createFields.H
+++ b/applications/solvers/lagrangian/sprayFoam/createFields.H
@@ -107,6 +107,3 @@
         mesh,
         dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
     );
-
-    Info<< "Creating sources\n" << endl;
-    IObasicSourceList sources(mesh);
diff --git a/applications/solvers/lagrangian/sprayFoam/rhoEqn.H b/applications/solvers/lagrangian/sprayFoam/rhoEqn.H
index b6293f2c1f08f8da4c8e2711158c5034147da285..ecda54ee8337cac84c1f3c3b56226cfcc4ebc26c 100644
--- a/applications/solvers/lagrangian/sprayFoam/rhoEqn.H
+++ b/applications/solvers/lagrangian/sprayFoam/rhoEqn.H
@@ -42,6 +42,8 @@ Description
     sources.constrain(rhoEqn);
 
     rhoEqn.solve();
+
+    sources.correct(rho);
 }
 
 // ************************************************************************* //
diff --git a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/sprayEngineFoam.C b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/sprayEngineFoam.C
index 1b4f46289fc47944ded482c15f62e95ed66f06c7..fd2df8b2ac2b498a603de038291fbc664e29a7d8 100644
--- a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/sprayEngineFoam.C
+++ b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/sprayEngineFoam.C
@@ -51,6 +51,7 @@ int main(int argc, char *argv[])
     #include "createEngineMesh.H"
     #include "readGravitationalAcceleration.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "createClouds.H"
     #include "createRadiationModel.H"
     #include "initContinuityErrs.H"
diff --git a/applications/solvers/lagrangian/sprayFoam/sprayFoam.C b/applications/solvers/lagrangian/sprayFoam/sprayFoam.C
index 02739bda71d304101f85f9336aa05d17124a0c05..243c9a6058678ec3baaf017d1ec9d22510b2d81a 100644
--- a/applications/solvers/lagrangian/sprayFoam/sprayFoam.C
+++ b/applications/solvers/lagrangian/sprayFoam/sprayFoam.C
@@ -49,6 +49,7 @@ int main(int argc, char *argv[])
     #include "createMesh.H"
     #include "readGravitationalAcceleration.H"
     #include "createFields.H"
+    #include "createSources.H"
     #include "createClouds.H"
     #include "createRadiationModel.H"
     #include "initContinuityErrs.H"
diff --git a/src/dynamicFvMesh/dynamicRefineFvMesh/dynamicRefineFvMesh.C b/src/dynamicFvMesh/dynamicRefineFvMesh/dynamicRefineFvMesh.C
index b0f22f5f7ee0df3488cad38356329b60e97814f0..c8819904ea461809cb4ce1e4a6d400dddea04801 100644
--- a/src/dynamicFvMesh/dynamicRefineFvMesh/dynamicRefineFvMesh.C
+++ b/src/dynamicFvMesh/dynamicRefineFvMesh/dynamicRefineFvMesh.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -299,8 +299,7 @@ Foam::dynamicRefineFvMesh::refine
         }
         if (debug)
         {
-            Info<< "Found " << returnReduce(masterFaces.size(), sumOp<label>())
-                << " split faces " << endl;
+            Pout<< "Found " << masterFaces.size() << " split faces " << endl;
         }
 
         HashTable<const surfaceScalarField*> fluxes
@@ -332,7 +331,7 @@ Foam::dynamicRefineFvMesh::refine
 
             if (debug)
             {
-                Info<< "Mapping flux " << iter.key()
+                Pout<< "Mapping flux " << iter.key()
                     << " using interpolated flux " << UName
                     << endl;
             }
diff --git a/src/fieldSources/Make/files b/src/fieldSources/Make/files
index a81d39f8f2fe3a2e94bd7c38082a3b79a6d8d618..5d7aa03a43706b735bc0aed31af3cb9d4dd64678 100644
--- a/src/fieldSources/Make/files
+++ b/src/fieldSources/Make/files
@@ -3,33 +3,46 @@ basicSource/basicSourceIO.C
 basicSource/basicSourceList.C
 basicSource/IObasicSourceList.C
 
-general/codedSource/codedSource.C
-general/explicitSetValue/explicitSetValue.C
-general/semiImplicitSource/semiImplicitSource.C
-
-derived/actuationDiskSource/actuationDiskSource.C
-derived/explicitPorositySource/explicitPorositySource.C
-derived/fixedTemperatureSource/fixedTemperatureSource.C
-derived/MRFSource/MRFSource.C
-derived/pressureGradientExplicitSource/pressureGradientExplicitSource.C
-derived/pressureGradientExplicitSource/pressureGradientExplicitSourceIO.C
-derived/radialActuationDiskSource/radialActuationDiskSource.C
-derived/rotorDiskSource/rotorDiskSource.C
-derived/rotorDiskSource/bladeModel/bladeModel.C
-derived/rotorDiskSource/profileModel/profileModel.C
-derived/rotorDiskSource/profileModel/profileModelList.C
-derived/rotorDiskSource/profileModel/lookup/lookupProfile.C
-derived/rotorDiskSource/profileModel/series/seriesProfile.C
-derived/rotorDiskSource/trimModel/trimModel/trimModel.C
-derived/rotorDiskSource/trimModel/trimModel/trimModelNew.C
-derived/rotorDiskSource/trimModel/fixed/fixedTrim.C
-derived/rotorDiskSource/trimModel/targetCoeff/targetCoeffTrim.C
-
-interRegion = derived/interRegionHeatTransferModel
+
+/* sources */
+
+generalSources=sources/general
+$(generalSources)/codedSource/codedSource.C
+$(generalSources)/semiImplicitSource/semiImplicitSource.C
+
+derivedSources=sources/derived
+$(derivedSources)/actuationDiskSource/actuationDiskSource.C
+$(derivedSources)/explicitPorositySource/explicitPorositySource.C
+$(derivedSources)/MRFSource/MRFSource.C
+$(derivedSources)/pressureGradientExplicitSource/pressureGradientExplicitSource.C
+$(derivedSources)/pressureGradientExplicitSource/pressureGradientExplicitSourceIO.C
+$(derivedSources)/radialActuationDiskSource/radialActuationDiskSource.C
+$(derivedSources)/rotorDiskSource/rotorDiskSource.C
+$(derivedSources)/rotorDiskSource/bladeModel/bladeModel.C
+$(derivedSources)/rotorDiskSource/profileModel/profileModel.C
+$(derivedSources)/rotorDiskSource/profileModel/profileModelList.C
+$(derivedSources)/rotorDiskSource/profileModel/lookup/lookupProfile.C
+$(derivedSources)/rotorDiskSource/profileModel/series/seriesProfile.C
+$(derivedSources)/rotorDiskSource/trimModel/trimModel/trimModel.C
+$(derivedSources)/rotorDiskSource/trimModel/trimModel/trimModelNew.C
+$(derivedSources)/rotorDiskSource/trimModel/fixed/fixedTrim.C
+$(derivedSources)/rotorDiskSource/trimModel/targetCoeff/targetCoeffTrim.C
+
+interRegion = $(derivedSources)/interRegionHeatTransferModel
 $(interRegion)/constantHeatTransfer/constantHeatTransfer.C
 $(interRegion)/interRegionHeatTransferModel/interRegionHeatTransferModel.C
 $(interRegion)/tabulatedHeatTransfer/tabulatedHeatTransfer.C
 $(interRegion)/variableHeatTransfer/variableHeatTransfer.C
 
 
+/* constraints */
+
+generalConstraints=constraints/general
+$(generalConstraints)/explicitSetValue/explicitSetValue.C
+
+derivedConstraints=constraints/derived
+$(derivedConstraints)/fixedTemperatureConstraint/fixedTemperatureConstraint.C
+$(derivedConstraints)/temperatureLimitsConstraint/temperatureLimitsConstraint.C
+
+
 LIB = $(FOAM_LIBBIN)/libfieldSources
diff --git a/src/fieldSources/derived/fixedTemperatureSource/fixedTemperatureSource.C b/src/fieldSources/constraints/derived/fixedTemperatureConstraint/fixedTemperatureConstraint.C
similarity index 85%
rename from src/fieldSources/derived/fixedTemperatureSource/fixedTemperatureSource.C
rename to src/fieldSources/constraints/derived/fixedTemperatureConstraint/fixedTemperatureConstraint.C
index 26dff507d3bdc07cd1bc447c096b9f6008973b57..9f26a261edcb9615c6f2884968ad8f703f2ad882 100644
--- a/src/fieldSources/derived/fixedTemperatureSource/fixedTemperatureSource.C
+++ b/src/fieldSources/constraints/derived/fixedTemperatureConstraint/fixedTemperatureConstraint.C
@@ -24,7 +24,7 @@ License
 
 \*----------------------------------------------------------------------------*/
 
-#include "fixedTemperatureSource.H"
+#include "fixedTemperatureConstraint.H"
 #include "fvMesh.H"
 #include "fvMatrices.H"
 #include "basicThermo.H"
@@ -34,29 +34,30 @@ License
 
 namespace Foam
 {
-    defineTypeNameAndDebug(fixedTemperatureSource, 0);
+    defineTypeNameAndDebug(fixedTemperatureConstraint, 0);
     addToRunTimeSelectionTable
     (
         basicSource,
-        fixedTemperatureSource,
+        fixedTemperatureConstraint,
         dictionary
     );
 
     template<>
-    const char* NamedEnum<fixedTemperatureSource::temperatureMode, 2>::names[] =
+    const char* NamedEnum<fixedTemperatureConstraint::temperatureMode, 2>::
+    names[] =
     {
         "uniform",
         "lookup"
     };
 }
 
-const Foam::NamedEnum<Foam::fixedTemperatureSource::temperatureMode, 2>
-    Foam::fixedTemperatureSource::temperatureModeNames_;
+const Foam::NamedEnum<Foam::fixedTemperatureConstraint::temperatureMode, 2>
+    Foam::fixedTemperatureConstraint::temperatureModeNames_;
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::fixedTemperatureSource::fixedTemperatureSource
+Foam::fixedTemperatureConstraint::fixedTemperatureConstraint
 (
     const word& name,
     const word& modelType,
@@ -98,13 +99,13 @@ Foam::fixedTemperatureSource::fixedTemperatureSource
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-bool Foam::fixedTemperatureSource::alwaysApply() const
+bool Foam::fixedTemperatureConstraint::alwaysApply() const
 {
     return true;
 }
 
 
-void Foam::fixedTemperatureSource::setValue
+void Foam::fixedTemperatureConstraint::setValue
 (
     fvMatrix<scalar>& eqn,
     const label
@@ -145,14 +146,14 @@ void Foam::fixedTemperatureSource::setValue
 }
 
 
-void Foam::fixedTemperatureSource::writeData(Ostream& os) const
+void Foam::fixedTemperatureConstraint::writeData(Ostream& os) const
 {
     os  << indent << name_ << endl;
     dict_.write(os);
 }
 
 
-bool Foam::fixedTemperatureSource::read(const dictionary& dict)
+bool Foam::fixedTemperatureConstraint::read(const dictionary& dict)
 {
     if (basicSource::read(dict))
     {
diff --git a/src/fieldSources/derived/fixedTemperatureSource/fixedTemperatureSource.H b/src/fieldSources/constraints/derived/fixedTemperatureConstraint/fixedTemperatureConstraint.H
similarity index 88%
rename from src/fieldSources/derived/fixedTemperatureSource/fixedTemperatureSource.H
rename to src/fieldSources/constraints/derived/fixedTemperatureConstraint/fixedTemperatureConstraint.H
index 05789b808dfb1757109ee948be51a34d2ee74f3f..33066b61df1f4365a328ce892e5aac4860482c61 100644
--- a/src/fieldSources/derived/fixedTemperatureSource/fixedTemperatureSource.H
+++ b/src/fieldSources/constraints/derived/fixedTemperatureConstraint/fixedTemperatureConstraint.H
@@ -23,14 +23,14 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::fixedTemperatureSource
+    Foam::fixedTemperatureConstraint
 
 Description
     Fixed temperature equation constraint
 
     Sources described by:
 
-        fixedTemperatureSourceCoeffs
+        fixedTemperatureConstraintCoeffs
         {
             mode            uniform;    // uniform or lookup
 
@@ -50,8 +50,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef fixedTemperatureSource_H
-#define fixedTemperatureSource_H
+#ifndef fixedTemperatureConstraint_H
+#define fixedTemperatureConstraint_H
 
 #include "basicSource.H"
 #include "NamedEnum.H"
@@ -63,10 +63,10 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                   Class fixedTemperatureSource Declaration
+                 Class fixedTemperatureConstraint Declaration
 \*---------------------------------------------------------------------------*/
 
-class fixedTemperatureSource
+class fixedTemperatureConstraint
 :
     public basicSource
 {
@@ -104,22 +104,22 @@ private:
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        fixedTemperatureSource(const fixedTemperatureSource&);
+        fixedTemperatureConstraint(const fixedTemperatureConstraint&);
 
         //- Disallow default bitwise assignment
-        void operator=(const fixedTemperatureSource&);
+        void operator=(const fixedTemperatureConstraint&);
 
 
 public:
 
     //- Runtime type information
-    TypeName("fixedTemperatureSource");
+    TypeName("fixedTemperatureConstraint");
 
 
     // Constructors
 
         //- Construct from components
-        fixedTemperatureSource
+        fixedTemperatureConstraint
         (
             const word& name,
             const word& modelType,
@@ -129,7 +129,7 @@ public:
 
 
     //- Destructor
-    virtual ~fixedTemperatureSource()
+    virtual ~fixedTemperatureConstraint()
     {}
 
 
diff --git a/src/fieldSources/constraints/derived/temperatureLimitsConstraint/temperatureLimitsConstraint.C b/src/fieldSources/constraints/derived/temperatureLimitsConstraint/temperatureLimitsConstraint.C
new file mode 100644
index 0000000000000000000000000000000000000000..5f4723702130bb41f1135dc007af1aa087020074
--- /dev/null
+++ b/src/fieldSources/constraints/derived/temperatureLimitsConstraint/temperatureLimitsConstraint.C
@@ -0,0 +1,149 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*----------------------------------------------------------------------------*/
+
+#include "temperatureLimitsConstraint.H"
+#include "fvMesh.H"
+#include "basicThermo.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(temperatureLimitsConstraint, 0);
+    addToRunTimeSelectionTable
+    (
+        basicSource,
+        temperatureLimitsConstraint,
+        dictionary
+    );
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::temperatureLimitsConstraint::temperatureLimitsConstraint
+(
+    const word& name,
+    const word& modelType,
+    const dictionary& dict,
+    const fvMesh& mesh
+)
+:
+    basicSource(name, modelType, dict, mesh),
+    Tmin_(readScalar(coeffs_.lookup("Tmin"))),
+    Tmax_(readScalar(coeffs_.lookup("Tmax")))
+{
+    fieldNames_.setSize(1, "energy");
+    applied_.setSize(1, false);
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+bool Foam::temperatureLimitsConstraint::alwaysApply() const
+{
+    return true;
+}
+
+
+void Foam::temperatureLimitsConstraint::correct(volScalarField& he)
+{
+    const basicThermo& thermo =
+        mesh_.lookupObject<basicThermo>("thermophysicalProperties");
+
+    if (he.name() == thermo.he().name())
+    {
+        scalarField Tmin(cells_.size(), Tmin_);
+        scalarField Tmax(cells_.size(), Tmax_);
+
+        scalarField heMin(thermo.he(thermo.p(), Tmin, cells_));
+        scalarField heMax(thermo.he(thermo.p(), Tmax, cells_));
+
+        scalarField& hec = he.internalField();
+
+        forAll(cells_, i)
+        {
+            label cellI = cells_[i];
+            hec[cellI]= max(min(hec[cellI], heMax[i]), heMin[i]);
+        }
+
+        // handle boundaries in the case of 'all'
+        if (selectionMode_ == smAll)
+        {
+            volScalarField::GeometricBoundaryField& bf = he.boundaryField();
+
+            forAll(bf, patchI)
+            {
+                fvPatchScalarField& hep = bf[patchI];
+                if (hep.fixesValue())
+                {
+                    // not over-riding fixed conditions
+                    continue;
+                }
+
+                const scalarField& pp = thermo.p().boundaryField()[patchI];
+
+                scalarField Tminp(pp.size(), Tmin_);
+                scalarField Tmaxp(pp.size(), Tmax_);
+
+                scalarField heMinp(thermo.he(pp, Tminp, patchI));
+                scalarField heMaxp(thermo.he(pp, Tmaxp, patchI));
+
+                forAll(hep, faceI)
+                {
+                    hep[faceI] =
+                        max(min(hep[faceI], heMaxp[faceI]), heMinp[faceI]);
+                }
+            }
+        }
+    }
+}
+
+
+void Foam::temperatureLimitsConstraint::writeData(Ostream& os) const
+{
+    os  << indent << name_ << endl;
+    dict_.write(os);
+}
+
+
+bool Foam::temperatureLimitsConstraint::read(const dictionary& dict)
+{
+    if (basicSource::read(dict))
+    {
+        coeffs_.readIfPresent("Tmin", Tmin_);
+        coeffs_.readIfPresent("Tmax", Tmax_);
+
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/src/fieldSources/constraints/derived/temperatureLimitsConstraint/temperatureLimitsConstraint.H b/src/fieldSources/constraints/derived/temperatureLimitsConstraint/temperatureLimitsConstraint.H
new file mode 100644
index 0000000000000000000000000000000000000000..52a25564f471dd886471aaadce23a52243f511bc
--- /dev/null
+++ b/src/fieldSources/constraints/derived/temperatureLimitsConstraint/temperatureLimitsConstraint.H
@@ -0,0 +1,139 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::temperatureLimitsConstraint
+
+Description
+    Constraint for temperature to apply limits between minimum and maximum
+    values
+
+    Constraint described by:
+
+        temperatureLimitsConstraintCoeffs
+        {
+            minimum     200;
+            maximum     500;
+        }
+
+
+SourceFiles
+    basicSource.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef temperatureLimitsConstraint_H
+#define temperatureLimitsConstraint_H
+
+#include "basicSource.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                 Class temperatureLimitsConstraint Declaration
+\*---------------------------------------------------------------------------*/
+
+class temperatureLimitsConstraint
+:
+    public basicSource
+{
+
+protected:
+
+    // Protected data
+
+        //- Minimum temperature limit [K]
+        scalar Tmin_;
+
+        //- Maximum temperature limit [K]
+        scalar Tmax_;
+
+
+private:
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        temperatureLimitsConstraint(const temperatureLimitsConstraint&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const temperatureLimitsConstraint&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("temperatureLimitsConstraint");
+
+
+    // Constructors
+
+        //- Construct from components
+        temperatureLimitsConstraint
+        (
+            const word& name,
+            const word& modelType,
+            const dictionary& dict,
+            const fvMesh& mesh
+        );
+
+
+    //- Destructor
+    virtual ~temperatureLimitsConstraint()
+    {}
+
+
+    // Member Functions
+
+        virtual bool alwaysApply() const;
+
+
+        // Evaluate
+
+            //- Correct the energy field
+            virtual void correct(volScalarField& he);
+
+
+        // I-O
+
+            //- Write data
+            virtual void writeData(Ostream&) const;
+
+            //- Read dictionary
+            virtual bool read(const dictionary& dict);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/fieldSources/general/explicitSetValue/ExplicitSetValue.C b/src/fieldSources/constraints/general/explicitSetValue/ExplicitSetValue.C
similarity index 97%
rename from src/fieldSources/general/explicitSetValue/ExplicitSetValue.C
rename to src/fieldSources/constraints/general/explicitSetValue/ExplicitSetValue.C
index 7285e80305e2dd6f927b35d065153319902c3f80..eb67c707e35bcca66f9cde25fc4b689958f40f65 100644
--- a/src/fieldSources/general/explicitSetValue/ExplicitSetValue.C
+++ b/src/fieldSources/constraints/general/explicitSetValue/ExplicitSetValue.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/general/explicitSetValue/ExplicitSetValue.H b/src/fieldSources/constraints/general/explicitSetValue/ExplicitSetValue.H
similarity index 100%
rename from src/fieldSources/general/explicitSetValue/ExplicitSetValue.H
rename to src/fieldSources/constraints/general/explicitSetValue/ExplicitSetValue.H
diff --git a/src/fieldSources/general/explicitSetValue/ExplicitSetValueIO.C b/src/fieldSources/constraints/general/explicitSetValue/ExplicitSetValueIO.C
similarity index 95%
rename from src/fieldSources/general/explicitSetValue/ExplicitSetValueIO.C
rename to src/fieldSources/constraints/general/explicitSetValue/ExplicitSetValueIO.C
index a27190ea49cb7de06d7637a5fc83fc1d1a69bfdd..f5c14c2fcc9301165f57506ab0bb6ea739acd35d 100644
--- a/src/fieldSources/general/explicitSetValue/ExplicitSetValueIO.C
+++ b/src/fieldSources/constraints/general/explicitSetValue/ExplicitSetValueIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/general/explicitSetValue/explicitSetValue.C b/src/fieldSources/constraints/general/explicitSetValue/explicitSetValue.C
similarity index 95%
rename from src/fieldSources/general/explicitSetValue/explicitSetValue.C
rename to src/fieldSources/constraints/general/explicitSetValue/explicitSetValue.C
index 78bb54bcb3489d44312914342f1c679abcf90fa3..e968c127ef768ba49692c719992af70b09776c2d 100644
--- a/src/fieldSources/general/explicitSetValue/explicitSetValue.C
+++ b/src/fieldSources/constraints/general/explicitSetValue/explicitSetValue.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/include/createSources.H b/src/fieldSources/include/createSources.H
new file mode 100644
index 0000000000000000000000000000000000000000..53bac8179731219a372e14acedef25820744c62f
--- /dev/null
+++ b/src/fieldSources/include/createSources.H
@@ -0,0 +1,2 @@
+Info<< "Creating sources" << endl;
+IObasicSourceList sources(mesh);
diff --git a/src/fieldSources/derived/MRFSource/MRFSource.C b/src/fieldSources/sources/derived/MRFSource/MRFSource.C
similarity index 100%
rename from src/fieldSources/derived/MRFSource/MRFSource.C
rename to src/fieldSources/sources/derived/MRFSource/MRFSource.C
diff --git a/src/fieldSources/derived/MRFSource/MRFSource.H b/src/fieldSources/sources/derived/MRFSource/MRFSource.H
similarity index 100%
rename from src/fieldSources/derived/MRFSource/MRFSource.H
rename to src/fieldSources/sources/derived/MRFSource/MRFSource.H
diff --git a/src/fieldSources/derived/actuationDiskSource/actuationDiskSource.C b/src/fieldSources/sources/derived/actuationDiskSource/actuationDiskSource.C
similarity index 98%
rename from src/fieldSources/derived/actuationDiskSource/actuationDiskSource.C
rename to src/fieldSources/sources/derived/actuationDiskSource/actuationDiskSource.C
index 878398220ef20ce73d72a8a7c823a6d71b2c525b..d20266d7cc3592267049efc919720105af9655c8 100644
--- a/src/fieldSources/derived/actuationDiskSource/actuationDiskSource.C
+++ b/src/fieldSources/sources/derived/actuationDiskSource/actuationDiskSource.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/actuationDiskSource/actuationDiskSource.H b/src/fieldSources/sources/derived/actuationDiskSource/actuationDiskSource.H
similarity index 98%
rename from src/fieldSources/derived/actuationDiskSource/actuationDiskSource.H
rename to src/fieldSources/sources/derived/actuationDiskSource/actuationDiskSource.H
index 80cd7bd54a88c2da40b4580de14b90308cdf3b48..d7609fa093106a743b5f8336943956068fe98ce2 100644
--- a/src/fieldSources/derived/actuationDiskSource/actuationDiskSource.H
+++ b/src/fieldSources/sources/derived/actuationDiskSource/actuationDiskSource.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/actuationDiskSource/actuationDiskSourceTemplates.C b/src/fieldSources/sources/derived/actuationDiskSource/actuationDiskSourceTemplates.C
similarity index 96%
rename from src/fieldSources/derived/actuationDiskSource/actuationDiskSourceTemplates.C
rename to src/fieldSources/sources/derived/actuationDiskSource/actuationDiskSourceTemplates.C
index 959e86f5b3fedf05088ef1ee7bcb739e13605add..1efb261c68d9354ad7f0d3d67f87323719330cfa 100644
--- a/src/fieldSources/derived/actuationDiskSource/actuationDiskSourceTemplates.C
+++ b/src/fieldSources/sources/derived/actuationDiskSource/actuationDiskSourceTemplates.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/explicitPorositySource/explicitPorositySource.C b/src/fieldSources/sources/derived/explicitPorositySource/explicitPorositySource.C
similarity index 100%
rename from src/fieldSources/derived/explicitPorositySource/explicitPorositySource.C
rename to src/fieldSources/sources/derived/explicitPorositySource/explicitPorositySource.C
diff --git a/src/fieldSources/derived/explicitPorositySource/explicitPorositySource.H b/src/fieldSources/sources/derived/explicitPorositySource/explicitPorositySource.H
similarity index 100%
rename from src/fieldSources/derived/explicitPorositySource/explicitPorositySource.H
rename to src/fieldSources/sources/derived/explicitPorositySource/explicitPorositySource.H
diff --git a/src/fieldSources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.C b/src/fieldSources/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.C
similarity index 97%
rename from src/fieldSources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.C
rename to src/fieldSources/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.C
index eb49266305cc4e51b2aa6bee8b424210657eb607..d81e32adbe958e1b6b0433575fd903c9db469bf4 100644
--- a/src/fieldSources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.C
+++ b/src/fieldSources/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.H b/src/fieldSources/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.H
similarity index 97%
rename from src/fieldSources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.H
rename to src/fieldSources/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.H
index 375d00ae8b205773f18036affbca85bce19e0216..d2383496b21d4a35a08864d88c6171e1b86f5847 100644
--- a/src/fieldSources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.H
+++ b/src/fieldSources/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.C b/src/fieldSources/sources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.C
similarity index 100%
rename from src/fieldSources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.C
rename to src/fieldSources/sources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.C
diff --git a/src/fieldSources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.H b/src/fieldSources/sources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.H
similarity index 100%
rename from src/fieldSources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.H
rename to src/fieldSources/sources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.H
diff --git a/src/fieldSources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.C b/src/fieldSources/sources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.C
similarity index 98%
rename from src/fieldSources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.C
rename to src/fieldSources/sources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.C
index 5a6a22d295b24bf7d735fde573ca7cdc1a9477f1..b06ff1aaabb92cabbbeb47135e34617561228384 100644
--- a/src/fieldSources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.C
+++ b/src/fieldSources/sources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.H b/src/fieldSources/sources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.H
similarity index 97%
rename from src/fieldSources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.H
rename to src/fieldSources/sources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.H
index e5c37fdf3b94629bc911f952b240ae2b93f6e112..b792a2f4bf2cb805ffa55420a7e671fd79c15c07 100644
--- a/src/fieldSources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.H
+++ b/src/fieldSources/sources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.C b/src/fieldSources/sources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.C
similarity index 100%
rename from src/fieldSources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.C
rename to src/fieldSources/sources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.C
diff --git a/src/fieldSources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.H b/src/fieldSources/sources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.H
similarity index 97%
rename from src/fieldSources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.H
rename to src/fieldSources/sources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.H
index 1d8f25caadca2518bed348a1675bc31619396bf6..491264155696b7d802095ca490d31ffe14d9308c 100644
--- a/src/fieldSources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.H
+++ b/src/fieldSources/sources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/pressureGradientExplicitSource/pressureGradientExplicitSource.C b/src/fieldSources/sources/derived/pressureGradientExplicitSource/pressureGradientExplicitSource.C
similarity index 88%
rename from src/fieldSources/derived/pressureGradientExplicitSource/pressureGradientExplicitSource.C
rename to src/fieldSources/sources/derived/pressureGradientExplicitSource/pressureGradientExplicitSource.C
index 790fac2c8bf91838b34235fc70b469a3db006995..d506bdb19ee391d1bc253262c6ecbf3778579e15 100644
--- a/src/fieldSources/derived/pressureGradientExplicitSource/pressureGradientExplicitSource.C
+++ b/src/fieldSources/sources/derived/pressureGradientExplicitSource/pressureGradientExplicitSource.C
@@ -46,7 +46,7 @@ namespace Foam
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-void Foam::pressureGradientExplicitSource::writeGradP() const
+void Foam::pressureGradientExplicitSource::writeProps(const scalar gradP) const
 {
     // Only write on output time
     if (mesh_.time().outputTime())
@@ -63,7 +63,7 @@ void Foam::pressureGradientExplicitSource::writeGradP() const
                 IOobject::NO_WRITE
             )
         );
-        propsDict.add("gradient", gradP_);
+        propsDict.add("gradient", gradP);
         propsDict.regIOobject::write();
     }
 }
@@ -81,8 +81,8 @@ Foam::pressureGradientExplicitSource::pressureGradientExplicitSource
 :
     basicSource(sourceName, modelType, dict, mesh),
     Ubar_(coeffs_.lookup("Ubar")),
-    gradPini_(coeffs_.lookup("gradPini")),
-    gradP_(gradPini_),
+    gradP0_(0.0),
+    dGradP_(0.0),
     flowDir_(Ubar_/mag(Ubar_)),
     invAPtr_(NULL)
 {
@@ -95,7 +95,7 @@ Foam::pressureGradientExplicitSource::pressureGradientExplicitSource
             "Foam::pressureGradientExplicitSource::"
             "pressureGradientExplicitSource"
             "("
-                "onst word&, "
+                "const word&, "
                 "const word&, "
                 "const dictionary&, "
                 "const fvMesh&"
@@ -116,10 +116,10 @@ Foam::pressureGradientExplicitSource::pressureGradientExplicitSource
     {
         Info<< "    Reading pressure gradient from file" << endl;
         dictionary propsDict(dictionary::null, propsFile);
-        propsDict.lookup("gradient") >> gradP_;
+        propsDict.lookup("gradient") >> gradP0_;
     }
 
-    Info<< "    Initial pressure gradient = " << gradP_ << nl << endl;
+    Info<< "    Initial pressure gradient = " << gradP0_ << nl << endl;
 }
 
 
@@ -151,22 +151,21 @@ void Foam::pressureGradientExplicitSource::correct(volVectorField& U)
 
     // Calculate the pressure gradient increment needed to adjust the average
     // flow-rate to the desired value
-    scalar gradPplus = (mag(Ubar_) - magUbarAve)/rAUave;
+    dGradP_ = (mag(Ubar_) - magUbarAve)/rAUave;
 
     // Apply correction to velocity field
     forAll(cells_, i)
     {
         label cellI = cells_[i];
-        U[cellI] += flowDir_*rAU[cellI]*gradPplus;
+        U[cellI] += flowDir_*rAU[cellI]*dGradP_;
     }
 
-    // Update pressure gradient
-    gradP_.value() += gradPplus;
+    scalar gradP = gradP0_ + dGradP_;
 
     Info<< "Pressure gradient source: uncorrected Ubar = " << magUbarAve
-        << ", pressure gradient = " << gradP_.value() << endl;
+        << ", pressure gradient = " << gradP << endl;
 
-    writeGradP();
+    writeProps(gradP);
 }
 
 
@@ -187,10 +186,12 @@ void Foam::pressureGradientExplicitSource::addSup
             IOobject::NO_WRITE
         ),
         mesh_,
-        dimensionedVector("zero", gradP_.dimensions(), vector::zero)
+        dimensionedVector("zero", eqn.dimensions()/dimVolume, vector::zero)
     );
 
-    UIndirectList<vector>(Su, cells_) = flowDir_*gradP_.value();
+    scalar gradP = gradP0_ + dGradP_;
+
+    UIndirectList<vector>(Su, cells_) = flowDir_*gradP;
 
     eqn += Su;
 }
@@ -224,6 +225,9 @@ void Foam::pressureGradientExplicitSource::setValue
     {
         invAPtr_() = 1.0/eqn.A();
     }
+
+    gradP0_ += dGradP_;
+    dGradP_ = 0.0;
 }
 
 
diff --git a/src/fieldSources/derived/pressureGradientExplicitSource/pressureGradientExplicitSource.H b/src/fieldSources/sources/derived/pressureGradientExplicitSource/pressureGradientExplicitSource.H
similarity index 95%
rename from src/fieldSources/derived/pressureGradientExplicitSource/pressureGradientExplicitSource.H
rename to src/fieldSources/sources/derived/pressureGradientExplicitSource/pressureGradientExplicitSource.H
index a45a7927de90e9267a0c534d53783ed4d7405ad5..72ed2d7cf5635d34256fcc6ec9a4c9af14ba0e7b 100644
--- a/src/fieldSources/derived/pressureGradientExplicitSource/pressureGradientExplicitSource.H
+++ b/src/fieldSources/sources/derived/pressureGradientExplicitSource/pressureGradientExplicitSource.H
@@ -73,11 +73,11 @@ class pressureGradientExplicitSource
         //- Average velocity
         vector Ubar_;
 
-        //- Initial pressure gradient
-        dimensionedScalar gradPini_;
+        //- Pressure gradient before correction
+        scalar gradP0_;
 
-        //- Pressure gradient
-        dimensionedScalar gradP_;
+        //- Change in pressure gradient
+        scalar dGradP_;
 
         //- Flow direction
         vector flowDir_;
@@ -89,7 +89,7 @@ class pressureGradientExplicitSource
     // Private Member Functions
 
         //- Write the pressure gradient to file (for restarts etc)
-        void writeGradP() const;
+        void writeProps(const scalar gradP) const;
 
         //- Correct driving force for a constant mass flow rate
         void update(fvMatrix<vector>& eqn);
diff --git a/src/fieldSources/derived/pressureGradientExplicitSource/pressureGradientExplicitSourceIO.C b/src/fieldSources/sources/derived/pressureGradientExplicitSource/pressureGradientExplicitSourceIO.C
similarity index 95%
rename from src/fieldSources/derived/pressureGradientExplicitSource/pressureGradientExplicitSourceIO.C
rename to src/fieldSources/sources/derived/pressureGradientExplicitSource/pressureGradientExplicitSourceIO.C
index b6d1b2d1cf2ba38daf88a33e30d56bee1602f83c..96a6257042d28d19b3d1f038d9effeb6b02f3bc3 100644
--- a/src/fieldSources/derived/pressureGradientExplicitSource/pressureGradientExplicitSourceIO.C
+++ b/src/fieldSources/sources/derived/pressureGradientExplicitSource/pressureGradientExplicitSourceIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/radialActuationDiskSource/radialActuationDiskSource.C b/src/fieldSources/sources/derived/radialActuationDiskSource/radialActuationDiskSource.C
similarity index 97%
rename from src/fieldSources/derived/radialActuationDiskSource/radialActuationDiskSource.C
rename to src/fieldSources/sources/derived/radialActuationDiskSource/radialActuationDiskSource.C
index 4a5631270ab514929e82b30c64ac153ea156b092..3564cbfe101601d049008d13257233278ef2335f 100644
--- a/src/fieldSources/derived/radialActuationDiskSource/radialActuationDiskSource.C
+++ b/src/fieldSources/sources/derived/radialActuationDiskSource/radialActuationDiskSource.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/radialActuationDiskSource/radialActuationDiskSource.H b/src/fieldSources/sources/derived/radialActuationDiskSource/radialActuationDiskSource.H
similarity index 98%
rename from src/fieldSources/derived/radialActuationDiskSource/radialActuationDiskSource.H
rename to src/fieldSources/sources/derived/radialActuationDiskSource/radialActuationDiskSource.H
index 134e93b5eae64116d38e0e8048a29980598a8f27..9b05c7141a06d0620a69b005954670a0d1af7591 100644
--- a/src/fieldSources/derived/radialActuationDiskSource/radialActuationDiskSource.H
+++ b/src/fieldSources/sources/derived/radialActuationDiskSource/radialActuationDiskSource.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/radialActuationDiskSource/radialActuationDiskSourceTemplates.C b/src/fieldSources/sources/derived/radialActuationDiskSource/radialActuationDiskSourceTemplates.C
similarity index 97%
rename from src/fieldSources/derived/radialActuationDiskSource/radialActuationDiskSourceTemplates.C
rename to src/fieldSources/sources/derived/radialActuationDiskSource/radialActuationDiskSourceTemplates.C
index adea6154550cf1642d52834d7af47b26efe18d64..086d8472fecc35ff7190dc2d0a539930824d00a8 100644
--- a/src/fieldSources/derived/radialActuationDiskSource/radialActuationDiskSourceTemplates.C
+++ b/src/fieldSources/sources/derived/radialActuationDiskSource/radialActuationDiskSourceTemplates.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/rotorDiskSource/bladeModel/bladeModel.C b/src/fieldSources/sources/derived/rotorDiskSource/bladeModel/bladeModel.C
similarity index 100%
rename from src/fieldSources/derived/rotorDiskSource/bladeModel/bladeModel.C
rename to src/fieldSources/sources/derived/rotorDiskSource/bladeModel/bladeModel.C
diff --git a/src/fieldSources/derived/rotorDiskSource/bladeModel/bladeModel.H b/src/fieldSources/sources/derived/rotorDiskSource/bladeModel/bladeModel.H
similarity index 98%
rename from src/fieldSources/derived/rotorDiskSource/bladeModel/bladeModel.H
rename to src/fieldSources/sources/derived/rotorDiskSource/bladeModel/bladeModel.H
index df26e7bd401a5b1bdf617ec0620dc25ccac1ba4c..dcb3d5dd213433c575c49cb31a76bbf517953a2c 100644
--- a/src/fieldSources/derived/rotorDiskSource/bladeModel/bladeModel.H
+++ b/src/fieldSources/sources/derived/rotorDiskSource/bladeModel/bladeModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/rotorDiskSource/profileModel/lookup/lookupProfile.C b/src/fieldSources/sources/derived/rotorDiskSource/profileModel/lookup/lookupProfile.C
similarity index 100%
rename from src/fieldSources/derived/rotorDiskSource/profileModel/lookup/lookupProfile.C
rename to src/fieldSources/sources/derived/rotorDiskSource/profileModel/lookup/lookupProfile.C
diff --git a/src/fieldSources/derived/rotorDiskSource/profileModel/lookup/lookupProfile.H b/src/fieldSources/sources/derived/rotorDiskSource/profileModel/lookup/lookupProfile.H
similarity index 97%
rename from src/fieldSources/derived/rotorDiskSource/profileModel/lookup/lookupProfile.H
rename to src/fieldSources/sources/derived/rotorDiskSource/profileModel/lookup/lookupProfile.H
index deb5c1f725ab8096c9a0471e09d8784fba7e6061..bee45e4f22c7645328b8b7425e3e61fa92124a23 100644
--- a/src/fieldSources/derived/rotorDiskSource/profileModel/lookup/lookupProfile.H
+++ b/src/fieldSources/sources/derived/rotorDiskSource/profileModel/lookup/lookupProfile.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/rotorDiskSource/profileModel/profileModel.C b/src/fieldSources/sources/derived/rotorDiskSource/profileModel/profileModel.C
similarity index 97%
rename from src/fieldSources/derived/rotorDiskSource/profileModel/profileModel.C
rename to src/fieldSources/sources/derived/rotorDiskSource/profileModel/profileModel.C
index c9008d276c644533d6a446f453eb20b3d709fafe..edb509b9cdf5d8bc5276343644f414d723c1bdef 100644
--- a/src/fieldSources/derived/rotorDiskSource/profileModel/profileModel.C
+++ b/src/fieldSources/sources/derived/rotorDiskSource/profileModel/profileModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/rotorDiskSource/profileModel/profileModel.H b/src/fieldSources/sources/derived/rotorDiskSource/profileModel/profileModel.H
similarity index 97%
rename from src/fieldSources/derived/rotorDiskSource/profileModel/profileModel.H
rename to src/fieldSources/sources/derived/rotorDiskSource/profileModel/profileModel.H
index 5c850ec1bb30a214b71b35586e0c09b8af57039f..d419fe8f8b568d6d8d95e9df10c287ce511d3d78 100644
--- a/src/fieldSources/derived/rotorDiskSource/profileModel/profileModel.H
+++ b/src/fieldSources/sources/derived/rotorDiskSource/profileModel/profileModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/rotorDiskSource/profileModel/profileModelList.C b/src/fieldSources/sources/derived/rotorDiskSource/profileModel/profileModelList.C
similarity index 97%
rename from src/fieldSources/derived/rotorDiskSource/profileModel/profileModelList.C
rename to src/fieldSources/sources/derived/rotorDiskSource/profileModel/profileModelList.C
index 904b01372b540aadf146c3e345744ba0d41298ad..e1c3dffb2d34ebb9f53e2caaccf0378703b050b6 100644
--- a/src/fieldSources/derived/rotorDiskSource/profileModel/profileModelList.C
+++ b/src/fieldSources/sources/derived/rotorDiskSource/profileModel/profileModelList.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/rotorDiskSource/profileModel/profileModelList.H b/src/fieldSources/sources/derived/rotorDiskSource/profileModel/profileModelList.H
similarity index 96%
rename from src/fieldSources/derived/rotorDiskSource/profileModel/profileModelList.H
rename to src/fieldSources/sources/derived/rotorDiskSource/profileModel/profileModelList.H
index 0a6c12528844dc52ae2d7d0d9377f18b164fbfde..ff794b2be2d35e48f88790ccbc4c2506329aaace 100644
--- a/src/fieldSources/derived/rotorDiskSource/profileModel/profileModelList.H
+++ b/src/fieldSources/sources/derived/rotorDiskSource/profileModel/profileModelList.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/rotorDiskSource/profileModel/series/seriesProfile.C b/src/fieldSources/sources/derived/rotorDiskSource/profileModel/series/seriesProfile.C
similarity index 100%
rename from src/fieldSources/derived/rotorDiskSource/profileModel/series/seriesProfile.C
rename to src/fieldSources/sources/derived/rotorDiskSource/profileModel/series/seriesProfile.C
diff --git a/src/fieldSources/derived/rotorDiskSource/profileModel/series/seriesProfile.H b/src/fieldSources/sources/derived/rotorDiskSource/profileModel/series/seriesProfile.H
similarity index 100%
rename from src/fieldSources/derived/rotorDiskSource/profileModel/series/seriesProfile.H
rename to src/fieldSources/sources/derived/rotorDiskSource/profileModel/series/seriesProfile.H
diff --git a/src/fieldSources/derived/rotorDiskSource/rotorDiskSource.C b/src/fieldSources/sources/derived/rotorDiskSource/rotorDiskSource.C
similarity index 100%
rename from src/fieldSources/derived/rotorDiskSource/rotorDiskSource.C
rename to src/fieldSources/sources/derived/rotorDiskSource/rotorDiskSource.C
diff --git a/src/fieldSources/derived/rotorDiskSource/rotorDiskSource.H b/src/fieldSources/sources/derived/rotorDiskSource/rotorDiskSource.H
similarity index 99%
rename from src/fieldSources/derived/rotorDiskSource/rotorDiskSource.H
rename to src/fieldSources/sources/derived/rotorDiskSource/rotorDiskSource.H
index 17deb44816be960353e83e5b8ee118ab68adb92d..d28bc6171398a7e522bbec5fa65b9b0cb76965bc 100644
--- a/src/fieldSources/derived/rotorDiskSource/rotorDiskSource.H
+++ b/src/fieldSources/sources/derived/rotorDiskSource/rotorDiskSource.H
@@ -322,4 +322,3 @@ public:
 #endif
 
 // ************************************************************************* //
-
diff --git a/src/fieldSources/derived/rotorDiskSource/rotorDiskSourceI.H b/src/fieldSources/sources/derived/rotorDiskSource/rotorDiskSourceI.H
similarity index 99%
rename from src/fieldSources/derived/rotorDiskSource/rotorDiskSourceI.H
rename to src/fieldSources/sources/derived/rotorDiskSource/rotorDiskSourceI.H
index 9d095e846b9d3343bcef811a3301de304ac034fa..3db904fb9de3576b3c1cb7e612291a10460fd160 100644
--- a/src/fieldSources/derived/rotorDiskSource/rotorDiskSourceI.H
+++ b/src/fieldSources/sources/derived/rotorDiskSource/rotorDiskSourceI.H
@@ -70,4 +70,3 @@ Foam::tmp<Foam::volScalarField> Foam::rotorDiskSource::rho() const
 }
 
 // ************************************************************************* //
-
diff --git a/src/fieldSources/derived/rotorDiskSource/rotorDiskSourceTemplates.C b/src/fieldSources/sources/derived/rotorDiskSource/rotorDiskSourceTemplates.C
similarity index 96%
rename from src/fieldSources/derived/rotorDiskSource/rotorDiskSourceTemplates.C
rename to src/fieldSources/sources/derived/rotorDiskSource/rotorDiskSourceTemplates.C
index ae574946a6444ddbf9452acf0b521aaf661739b7..f8e0113308cb1e8c89da5b06b0053bf54b3e1a00 100644
--- a/src/fieldSources/derived/rotorDiskSource/rotorDiskSourceTemplates.C
+++ b/src/fieldSources/sources/derived/rotorDiskSource/rotorDiskSourceTemplates.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fieldSources/derived/rotorDiskSource/trimModel/fixed/fixedTrim.C b/src/fieldSources/sources/derived/rotorDiskSource/trimModel/fixed/fixedTrim.C
similarity index 100%
rename from src/fieldSources/derived/rotorDiskSource/trimModel/fixed/fixedTrim.C
rename to src/fieldSources/sources/derived/rotorDiskSource/trimModel/fixed/fixedTrim.C
diff --git a/src/fieldSources/derived/rotorDiskSource/trimModel/fixed/fixedTrim.H b/src/fieldSources/sources/derived/rotorDiskSource/trimModel/fixed/fixedTrim.H
similarity index 100%
rename from src/fieldSources/derived/rotorDiskSource/trimModel/fixed/fixedTrim.H
rename to src/fieldSources/sources/derived/rotorDiskSource/trimModel/fixed/fixedTrim.H
diff --git a/src/fieldSources/derived/rotorDiskSource/trimModel/targetCoeff/targetCoeffTrim.C b/src/fieldSources/sources/derived/rotorDiskSource/trimModel/targetCoeff/targetCoeffTrim.C
similarity index 99%
rename from src/fieldSources/derived/rotorDiskSource/trimModel/targetCoeff/targetCoeffTrim.C
rename to src/fieldSources/sources/derived/rotorDiskSource/trimModel/targetCoeff/targetCoeffTrim.C
index 4ed3f7712019026712f3ed91c07e5dc42d0e8605..d2f91614d4e31bfbea46b2f1027e85d712bb3c57 100644
--- a/src/fieldSources/derived/rotorDiskSource/trimModel/targetCoeff/targetCoeffTrim.C
+++ b/src/fieldSources/sources/derived/rotorDiskSource/trimModel/targetCoeff/targetCoeffTrim.C
@@ -46,7 +46,7 @@ Foam::vector Foam::targetCoeffTrim::calcCoeffs
 (
     const vectorField& U,
     const scalarField& thetag,
-    vectorField& force    
+    vectorField& force
 ) const
 {
     rotor_.calculate(U, thetag, force, false, false);
diff --git a/src/fieldSources/derived/rotorDiskSource/trimModel/targetCoeff/targetCoeffTrim.H b/src/fieldSources/sources/derived/rotorDiskSource/trimModel/targetCoeff/targetCoeffTrim.H
similarity index 98%
rename from src/fieldSources/derived/rotorDiskSource/trimModel/targetCoeff/targetCoeffTrim.H
rename to src/fieldSources/sources/derived/rotorDiskSource/trimModel/targetCoeff/targetCoeffTrim.H
index 24d5732e99f719c5053f0dbdac6063259d665022..4425d55772a3e096349b7964d570475e34789e52 100644
--- a/src/fieldSources/derived/rotorDiskSource/trimModel/targetCoeff/targetCoeffTrim.H
+++ b/src/fieldSources/sources/derived/rotorDiskSource/trimModel/targetCoeff/targetCoeffTrim.H
@@ -62,7 +62,7 @@ Description
         rho   = desity
         omega = rotor angulr velocity
         pi    = mathematical pi
-            
+
 
 SourceFiles
     targetCoeffTrim.C
@@ -129,7 +129,7 @@ protected:
         (
             const vectorField& U,
             const scalarField& alphag,
-            vectorField& force    
+            vectorField& force
         ) const;
 
 
diff --git a/src/fieldSources/derived/rotorDiskSource/trimModel/trimModel/trimModel.C b/src/fieldSources/sources/derived/rotorDiskSource/trimModel/trimModel/trimModel.C
similarity index 100%
rename from src/fieldSources/derived/rotorDiskSource/trimModel/trimModel/trimModel.C
rename to src/fieldSources/sources/derived/rotorDiskSource/trimModel/trimModel/trimModel.C
diff --git a/src/fieldSources/derived/rotorDiskSource/trimModel/trimModel/trimModel.H b/src/fieldSources/sources/derived/rotorDiskSource/trimModel/trimModel/trimModel.H
similarity index 100%
rename from src/fieldSources/derived/rotorDiskSource/trimModel/trimModel/trimModel.H
rename to src/fieldSources/sources/derived/rotorDiskSource/trimModel/trimModel/trimModel.H
diff --git a/src/fieldSources/derived/rotorDiskSource/trimModel/trimModel/trimModelNew.C b/src/fieldSources/sources/derived/rotorDiskSource/trimModel/trimModel/trimModelNew.C
similarity index 100%
rename from src/fieldSources/derived/rotorDiskSource/trimModel/trimModel/trimModelNew.C
rename to src/fieldSources/sources/derived/rotorDiskSource/trimModel/trimModel/trimModelNew.C
diff --git a/src/fieldSources/general/codedSource/CodedSource.C b/src/fieldSources/sources/general/codedSource/CodedSource.C
similarity index 100%
rename from src/fieldSources/general/codedSource/CodedSource.C
rename to src/fieldSources/sources/general/codedSource/CodedSource.C
diff --git a/src/fieldSources/general/codedSource/CodedSource.H b/src/fieldSources/sources/general/codedSource/CodedSource.H
similarity index 100%
rename from src/fieldSources/general/codedSource/CodedSource.H
rename to src/fieldSources/sources/general/codedSource/CodedSource.H
diff --git a/src/fieldSources/general/codedSource/CodedSourceIO.C b/src/fieldSources/sources/general/codedSource/CodedSourceIO.C
similarity index 100%
rename from src/fieldSources/general/codedSource/CodedSourceIO.C
rename to src/fieldSources/sources/general/codedSource/CodedSourceIO.C
diff --git a/src/fieldSources/general/codedSource/codedSource.C b/src/fieldSources/sources/general/codedSource/codedSource.C
similarity index 100%
rename from src/fieldSources/general/codedSource/codedSource.C
rename to src/fieldSources/sources/general/codedSource/codedSource.C
diff --git a/src/fieldSources/general/semiImplicitSource/SemiImplicitSource.C b/src/fieldSources/sources/general/semiImplicitSource/SemiImplicitSource.C
similarity index 100%
rename from src/fieldSources/general/semiImplicitSource/SemiImplicitSource.C
rename to src/fieldSources/sources/general/semiImplicitSource/SemiImplicitSource.C
diff --git a/src/fieldSources/general/semiImplicitSource/SemiImplicitSource.H b/src/fieldSources/sources/general/semiImplicitSource/SemiImplicitSource.H
similarity index 100%
rename from src/fieldSources/general/semiImplicitSource/SemiImplicitSource.H
rename to src/fieldSources/sources/general/semiImplicitSource/SemiImplicitSource.H
diff --git a/src/fieldSources/general/semiImplicitSource/SemiImplicitSourceI.H b/src/fieldSources/sources/general/semiImplicitSource/SemiImplicitSourceI.H
similarity index 100%
rename from src/fieldSources/general/semiImplicitSource/SemiImplicitSourceI.H
rename to src/fieldSources/sources/general/semiImplicitSource/SemiImplicitSourceI.H
diff --git a/src/fieldSources/general/semiImplicitSource/SemiImplicitSourceIO.C b/src/fieldSources/sources/general/semiImplicitSource/SemiImplicitSourceIO.C
similarity index 100%
rename from src/fieldSources/general/semiImplicitSource/SemiImplicitSourceIO.C
rename to src/fieldSources/sources/general/semiImplicitSource/SemiImplicitSourceIO.C
diff --git a/src/fieldSources/general/semiImplicitSource/semiImplicitSource.C b/src/fieldSources/sources/general/semiImplicitSource/semiImplicitSource.C
similarity index 100%
rename from src/fieldSources/general/semiImplicitSource/semiImplicitSource.C
rename to src/fieldSources/sources/general/semiImplicitSource/semiImplicitSource.C
diff --git a/src/randomProcesses/noise/noiseFFT.C b/src/randomProcesses/noise/noiseFFT.C
index 0efa5c43f2066c449a8105f7dc8a051eb6952d75..9a7ca7cd95cbd6d4f093635861f7302e6ef1a434 100644
--- a/src/randomProcesses/noise/noiseFFT.C
+++ b/src/randomProcesses/noise/noiseFFT.C
@@ -27,8 +27,8 @@ License
 #include "IFstream.H"
 #include "DynamicList.H"
 #include "fft.H"
-#include "mathematicalConstants.H"
 #include "SubField.H"
+#include "mathematicalConstants.H"
 
 // * * * * * * * * * * * * * * Static Member Data  * * * * * * * * * * * * * //
 
@@ -61,7 +61,7 @@ Foam::noiseFFT::noiseFFT(const fileName& pFileName, const label skip)
     {
         FatalErrorIn
         (
-            "noiseFFT::noiseFFT(const fileName& pFileName, const label skip)"
+            "noiseFFT::noiseFFT(const fileName&, const label)"
         )   << "Cannot read file " << pFileName
             << exit(FatalError);
     }
@@ -76,11 +76,8 @@ Foam::noiseFFT::noiseFFT(const fileName& pFileName, const label skip)
 
             if (!pFile.good() || pFile.eof())
             {
-                FatalErrorIn
-                (
-                    "noiseFFT::noiseFFT(const fileName& pFileName, "
-                    "const label skip)"
-                )   << "Number of points in file " << pFileName
+                FatalErrorIn("noiseFFT::noiseFFT(const fileName&, const label)")
+                    << "Number of points in file " << pFileName
                     << " is less than the number to be skipped = " << skip
                     << exit(FatalError);
             }
@@ -136,7 +133,7 @@ Foam::tmp<Foam::scalarField> Foam::noiseFFT::window
 
     if ((N + ni*windowOffset) > size())
     {
-        FatalErrorIn("noiseFFT::window(const label N, const label n) const")
+        FatalErrorIn("noiseFFT::window(const label, const label) const")
             << "Requested window is outside set of data" << endl
             << "number of data = " << size() << endl
             << "size of window = " << N << endl
@@ -215,10 +212,10 @@ Foam::graph Foam::noiseFFT::meanPf
 {
     if (N > size())
     {
-        FatalErrorIn("noiseFFT::meanPf(const label N, const label nw) const")
-            << "Requested window is outside set of data" << endl
-            << "number of data = " << size() << endl
-            << "size of window = " << N << endl
+        FatalErrorIn("noiseFFT::meanPf(const label, const label) const")
+            << "Requested window is outside set of data" << nl
+            << "number of data = " << size() << nl
+            << "size of window = " << N << nl
             << "window  = " << nw
             << exit(FatalError);
     }
@@ -261,7 +258,7 @@ Foam::graph Foam::noiseFFT::RMSmeanPf
 {
     if (N > size())
     {
-        FatalErrorIn("noiseFFT::RMSmeanPf(const label N, const label nw) const")
+        FatalErrorIn("noiseFFT::RMSmeanPf(const label, const label) const")
             << "Requested window is outside set of data" << endl
             << "number of data = " << size() << endl
             << "size of window = " << N << endl
diff --git a/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.C b/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.C
index 07a70d651b62103c25f1693f48e0541a267a6e80..e6cee26e0342b63b720caae1dcf6637eeedda28b 100644
--- a/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.C
+++ b/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.C
@@ -236,11 +236,11 @@ void thermoSingleLayer::correctAlpha()
 
         forAll(alpha_, i)
         {
-            if ((alpha_[i] < 0.5) && (delta_[i] > hydrophilicDry))
+            if ((alpha_[i] < 0.5) && (delta_[i] > hydrophilicWet))
             {
                 alpha_[i] = 1.0;
             }
-            else if ((alpha_[i] > 0.5) && (delta_[i] < hydrophilicWet))
+            else if ((alpha_[i] > 0.5) && (delta_[i] < hydrophilicDry))
             {
                 alpha_[i] = 0.0;
             }
diff --git a/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.H b/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.H
index 696728e7f97b846f20b6a0cb0660f804f9e1b848..b13c8ac3b012406f9e3e5f7679ebaa1dd4055067 100644
--- a/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.H
+++ b/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.H
@@ -132,10 +132,12 @@ protected:
             //- Activation flag
             bool hydrophilic_;
 
-            //- Length scale applied to deltaWet_ for dry faces, typically 0.5
+            //- Length scale applied to deltaWet_ to determine when a wet
+            //  surface becomes dry, typically 0.5
             scalar hydrophilicDryScale_;
 
-            //- Length scale applied to deltaWet_ for wet faces, typically 0.001
+            //- Length scale applied to deltaWet_ to determine when a dry
+            //  surface becomes wet, typically 0.001
             scalar hydrophilicWetScale_;
 
 
diff --git a/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C b/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C
index 8a7bdb02917473968b41b55043ff4cc392f0e4b1..df84d4fe8984113ce67418817a21d43a8f1dfe14 100644
--- a/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C
+++ b/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C
@@ -145,7 +145,7 @@ void homogeneousDynOneEqEddy::correct(const tmp<volTensorField>& tgradU)
 
     volSymmTensorField D(dev(symm(gradU)));
     volScalarField divU(fvc::div(phi()/fvc::interpolate(rho())));
-    volScalarField G(2*muSgs_*(gradU && D));
+    volScalarField G(type() + ".G", 2*muSgs_*(gradU && D));
 
     tmp<fvScalarMatrix> kEqn
     (
diff --git a/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.C b/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.C
index aeaa8351d02af8d3903551c9421fa46701967c71..c811874e73dd12f165345959ad0b3631b93ac47e 100644
--- a/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.C
+++ b/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.C
@@ -118,7 +118,7 @@ void lowReOneEqEddy::correct(const tmp<volTensorField>& tgradU)
     GenEddyVisc::correct(gradU);
 
     volScalarField divU(fvc::div(phi()/fvc::interpolate(rho())));
-    volScalarField G(2*muSgs_*(gradU && dev(symm(gradU))));
+    volScalarField G(type() + ".G", 2*muSgs_*(gradU && dev(symm(gradU))));
 
     tmp<fvScalarMatrix> kEqn
     (
diff --git a/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.C b/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.C
index d02b487de5478629f33964f8d15a9453c757e0c2..9b2f0319f67a6d1cfac998f74d96a758c857b1a3 100644
--- a/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.C
+++ b/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.C
@@ -105,7 +105,7 @@ void oneEqEddy::correct(const tmp<volTensorField>& tgradU)
     GenEddyVisc::correct(gradU);
 
     volScalarField divU(fvc::div(phi()/fvc::interpolate(rho())));
-    volScalarField G(2*muSgs_*(gradU && dev(symm(gradU))));
+    volScalarField G(type() + ".G", 2*muSgs_*(gradU && dev(symm(gradU))));
 
     tmp<fvScalarMatrix> kEqn
     (
diff --git a/src/turbulenceModels/incompressible/LES/oneEqEddy/oneEqEddy.C b/src/turbulenceModels/incompressible/LES/oneEqEddy/oneEqEddy.C
index 40e4f293e63c69b0e20298cca1a20054672a09d1..e0c891584677d490c1469f4ce86e0fda86d6da7e 100644
--- a/src/turbulenceModels/incompressible/LES/oneEqEddy/oneEqEddy.C
+++ b/src/turbulenceModels/incompressible/LES/oneEqEddy/oneEqEddy.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -101,7 +101,7 @@ void oneEqEddy::correct(const tmp<volTensorField>& gradU)
 {
     GenEddyVisc::correct(gradU);
 
-    tmp<volScalarField> G = 2.0*nuSgs_*magSqr(symm(gradU));
+    volScalarField G(type() + ".G", 2.0*nuSgs_*magSqr(symm(gradU)));
 
     tmp<fvScalarMatrix> kEqn
     (
diff --git a/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/constant/sourcesProperties b/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/constant/sourcesProperties
index ddd2bf9c9faaa53e07e1835ad4a289e8a38e8495..1a3adf4c90dbcad913511bc34ec92168dc1207b1 100644
--- a/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/constant/sourcesProperties
+++ b/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/constant/sourcesProperties
@@ -17,14 +17,14 @@ FoamFile
 
 source1
 {
-    type            fixedTemperatureSource;
+    type            fixedTemperatureConstraint;
     active          true;
     timeStart       0;
     duration        1000000;
     selectionMode   cellZone;
     cellZone        porosity;
 
-    fixedTemperatureSourceCoeffs
+    fixedTemperatureConstraintCoeffs
     {
         mode            uniform;
         temperature     350;
diff --git a/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/constant/sourcesProperties b/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/constant/sourcesProperties
index d4d41da47fb2d7077329e33cd6c8b1248a299def..a73a9bd2b7ce0c63bf7e09a803ccdfa1241ec2b8 100644
--- a/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/constant/sourcesProperties
+++ b/tutorials/compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff/constant/sourcesProperties
@@ -17,14 +17,14 @@ FoamFile
 
 fixedTemperaure1
 {
-    type            fixedTemperatureSource;
+    type            fixedTemperatureConstraint;
     active          true;
     timeStart       0;
     duration        1000000;
     selectionMode   cellZone;
     cellZone        porosity;
 
-    fixedTemperatureSourceCoeffs
+    fixedTemperatureConstraintCoeffs
     {
         mode            uniform;
         temperature     350;
diff --git a/tutorials/incompressible/pimpleFoam/channel395/constant/sourcesProperties b/tutorials/incompressible/pimpleFoam/channel395/constant/sourcesProperties
index 106403ce538c64a3dc839458182fb9f598f0a991..501ab02cb1a37b40aee82205730e0555e0dabb28 100644
--- a/tutorials/incompressible/pimpleFoam/channel395/constant/sourcesProperties
+++ b/tutorials/incompressible/pimpleFoam/channel395/constant/sourcesProperties
@@ -27,7 +27,6 @@ momentumSource
     {
         fieldNames  (U);
         Ubar        ( 0.1335 0 0 );
-        gradPini    gradPIni [0 1 -2 0 0 ] 0;
     }
 }
 
diff --git a/tutorials/incompressible/pisoFoam/ras/cavityCoupledU/system/fvSolution b/tutorials/incompressible/pisoFoam/ras/cavityCoupledU/system/fvSolution
index dc8a5f5eb6d47c612c08729bf693e108e546a2f9..a115a11a4477554b44fa77dc437c8600eed417fc 100644
--- a/tutorials/incompressible/pisoFoam/ras/cavityCoupledU/system/fvSolution
+++ b/tutorials/incompressible/pisoFoam/ras/cavityCoupledU/system/fvSolution
@@ -36,7 +36,7 @@ solvers
     U
     {
         type            coupled;
-        solver          PBiCCG;
+        solver          PBiCCCG;
         preconditioner  DILU;
         tolerance       (1e-05 1e-05 1e-05);
         relTol          (0 0 0);
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/sourcesProperties b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/sourcesProperties
index d351c7f360e1ae40a730f3f60600fbd5760fbc1a..f5778839099a021219f6012b3ec56a1d4d5d503b 100644
--- a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/sourcesProperties
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/sourcesProperties
@@ -17,14 +17,14 @@ FoamFile
 
 source1
 {
-    type            fixedTemperatureSource;
+    type            fixedTemperatureConstraint;
     active          true;
     timeStart       0.1;
     duration        0.4;
     selectionMode   cellSet;
     cellSet         ignitionCells;
 
-    fixedTemperatureSourceCoeffs
+    fixedTemperatureConstraintCoeffs
     {
         mode            uniform;
         temperature     2000;
diff --git a/tutorials/multiphase/cavitatingFoam/les/throttle3D/Allrun b/tutorials/multiphase/cavitatingFoam/les/throttle3D/Allrun
index a6b927d81adf7694873d4a22e48a6447fb9d7d18..4314556cfc66040c96b55dda75e40488d46144d9 100755
--- a/tutorials/multiphase/cavitatingFoam/les/throttle3D/Allrun
+++ b/tutorials/multiphase/cavitatingFoam/les/throttle3D/Allrun
@@ -18,7 +18,7 @@ refineMeshByCellSet()
           topoSet > log.topoSet.$1 2>&1
 
           echo "refining primary zone - $1"
-          refineMesh -dict sytem/refineMeshDict -overwrite > log.refineMesh.$1 2>&1
+          refineMesh -dict system/refineMeshDict -overwrite > log.refineMesh.$1 2>&1
       fi
       shift
    done