diff --git a/applications/solvers/basic/scalarTransportFoam/Make/options b/applications/solvers/basic/scalarTransportFoam/Make/options index 725122ea1d..e6fbbb8000 100644 --- a/applications/solvers/basic/scalarTransportFoam/Make/options +++ b/applications/solvers/basic/scalarTransportFoam/Make/options @@ -1,4 +1,11 @@ EXE_INC = \ - -I$(LIB_SRC)/finiteVolume/lnInclude + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fieldSources/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude -EXE_LIBS = -lfiniteVolume +EXE_LIBS = \ + -lfiniteVolume \ + -lfieldSources \ + -lmeshTools \ + -lsampling diff --git a/applications/solvers/basic/scalarTransportFoam/scalarTransportFoam.C b/applications/solvers/basic/scalarTransportFoam/scalarTransportFoam.C index 8eade6a545..deae96ea02 100644 --- a/applications/solvers/basic/scalarTransportFoam/scalarTransportFoam.C +++ b/applications/solvers/basic/scalarTransportFoam/scalarTransportFoam.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 @@ -30,6 +30,7 @@ Description \*---------------------------------------------------------------------------*/ #include "fvCFD.H" +#include "IObasicSourceList.H" #include "simpleControl.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -40,6 +41,7 @@ int main(int argc, char *argv[]) #include "createTime.H" #include "createMesh.H" #include "createFields.H" + #include "createSources.H" simpleControl simple(mesh); @@ -60,6 +62,8 @@ int main(int argc, char *argv[]) fvm::ddt(T) + fvm::div(phi, T) - fvm::laplacian(DT, T) + == + sources(T) ); } diff --git a/applications/solvers/combustion/XiFoam/EaEqn.H b/applications/solvers/combustion/XiFoam/EaEqn.H index 5493722c93..2565e3f9e3 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 b13a63bb60..092cdc2a6d 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 643a99f134..95f10bfcc9 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 a3e90f7169..bebbd49266 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 49c2c63ae7..e10be7b6df 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 3b7cd9b7ae..17103885e5 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 da1d76fe69..013e8b3180 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/chemFoam/Make/options b/applications/solvers/combustion/chemFoam/Make/options index 7b95c2f16f..9facf7ac9c 100644 --- a/applications/solvers/combustion/chemFoam/Make/options +++ b/applications/solvers/combustion/chemFoam/Make/options @@ -12,6 +12,7 @@ EXE_INC = \ EXE_LIBS = \ -lfiniteVolume \ + -lcompressibleTurbulenceModel \ -lcompressibleRASModels \ -lreactionThermophysicalModels \ -lfluidThermophysicalModels \ diff --git a/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C b/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C index 401690c3e4..3b229ded14 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 72e88435ac..f78e5bde29 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 de3dc757cc..a8b0207225 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 65cd0356ed..f11f677398 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 90e633fc36..81d90bd695 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 a23f99dab7..358e4953d1 100644 --- a/applications/solvers/combustion/fireFoam/YEEqn.H +++ b/applications/solvers/combustion/fireFoam/YEEqn.H @@ -39,6 +39,8 @@ tmp > mvConvection YiEqn.solve(mesh.solver("Yi")); + sources.correct(Yi); + Yi.max(0.0); Yt += Yi; } @@ -82,6 +84,8 @@ tmp > mvConvection EEqn.solve(); + sources.correct(he); + thermo.correct(); Info<< "min/max(T) = " diff --git a/applications/solvers/combustion/fireFoam/fireFoam.C b/applications/solvers/combustion/fireFoam/fireFoam.C index 3f30495a99..afe1b815e5 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 c465309edb..5cc780abb1 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/Allwmake b/applications/solvers/combustion/reactingFoam/Allwmake new file mode 100755 index 0000000000..0512e534f3 --- /dev/null +++ b/applications/solvers/combustion/reactingFoam/Allwmake @@ -0,0 +1,9 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory +set -x + +wmake +wmake rhoReactingFoam +wmake rhoReactingBuoyantFoam + +# ----------------------------------------------------------------- end-of-file diff --git a/applications/solvers/combustion/reactingFoam/EEqn.H b/applications/solvers/combustion/reactingFoam/EEqn.H index 5568c7e5be..c3f25da17d 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 643a99f134..95f10bfcc9 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 2f0d29fd84..c9b4942a5b 100644 --- a/applications/solvers/combustion/reactingFoam/YEqn.H +++ b/applications/solvers/combustion/reactingFoam/YEqn.H @@ -37,6 +37,8 @@ tmp > 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 21769875ea..32bdd372ee 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 c68f94ebf7..5ebd3573a8 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/reactingFoam/rhoReactingBuoyantFoam/Make/files b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/Make/files new file mode 100644 index 0000000000..2d20fb8f44 --- /dev/null +++ b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/Make/files @@ -0,0 +1,3 @@ +rhoReactingBuoyantFoam.C + +EXE = $(FOAM_APPBIN)/rhoReactingBuoyantFoam diff --git a/applications/solvers/combustion/rhoReactingFoam/Make/options b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/Make/options similarity index 100% rename from applications/solvers/combustion/rhoReactingFoam/Make/options rename to applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/Make/options diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/UEqn.H b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/UEqn.H new file mode 100644 index 0000000000..d9aca344a9 --- /dev/null +++ b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/UEqn.H @@ -0,0 +1,31 @@ + fvVectorMatrix UEqn + ( + fvm::ddt(rho, U) + + fvm::div(phi, U) + + turbulence->divDevRhoReff(U) + == + sources(rho, U) + ); + + UEqn.relax(); + + sources.constrain(UEqn); + + if (pimple.momentumPredictor()) + { + solve + ( + UEqn + == + fvc::reconstruct + ( + ( + - ghf*fvc::snGrad(rho) + - fvc::snGrad(p_rgh) + )*mesh.magSf() + ) + ); + + sources.correct(U); + K = 0.5*magSqr(U); + } diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H new file mode 100644 index 0000000000..4b901672bd --- /dev/null +++ b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H @@ -0,0 +1,124 @@ +Info<< "Creating reaction model\n" << endl; + +autoPtr reaction +( + combustionModels::rhoCombustionModel::New(mesh) +); + +rhoReactionThermo& thermo = reaction->thermo(); +thermo.validate(args.executable(), "h", "e"); + +basicMultiComponentMixture& composition = thermo.composition(); +PtrList& Y = composition.Y(); + +word inertSpecie(thermo.lookup("inertSpecie")); + +volScalarField rho +( + IOobject + ( + "rho", + runTime.timeName(), + mesh + ), + thermo.rho() +); + +Info<< "Reading field U\n" << endl; +volVectorField U +( + IOobject + ( + "U", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh +); + + +volScalarField& p = thermo.p(); +const volScalarField& psi = thermo.psi(); +const volScalarField& T = thermo.T(); + + +#include "compressibleCreatePhi.H" + + +Info << "Creating turbulence model.\n" << nl; +autoPtr turbulence +( + compressible::turbulenceModel::New + ( + rho, + U, + phi, + thermo + ) +); + +// Set the turbulence into the reaction model +reaction->setTurbulence(turbulence()); + + +Info<< "Calculating field g.h\n" << endl; +volScalarField gh("gh", g & mesh.C()); +surfaceScalarField ghf("ghf", g & mesh.Cf()); + +Info<< "Reading field p_rgh\n" << endl; +volScalarField p_rgh +( + IOobject + ( + "p_rgh", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh +); + +// Force p_rgh to be consistent with p +p_rgh = p - rho*gh; + +Info<< "Creating field dpdt\n" << endl; +volScalarField dpdt +( + IOobject + ( + "dpdt", + runTime.timeName(), + mesh + ), + mesh, + dimensionedScalar("dpdt", p.dimensions()/dimTime, 0) +); + +Info<< "Creating field kinetic energy K\n" << endl; +volScalarField K("K", 0.5*magSqr(U)); + + +multivariateSurfaceInterpolationScheme::fieldTable fields; + +forAll(Y, i) +{ + fields.add(Y[i]); +} +fields.add(thermo.he()); + +volScalarField dQ +( + IOobject + ( + "dQ", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + mesh, + dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) +); diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/pEqn.H b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/pEqn.H new file mode 100644 index 0000000000..4fbe3b15a0 --- /dev/null +++ b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/pEqn.H @@ -0,0 +1,78 @@ +{ + rho = thermo.rho(); + + // Thermodynamic density needs to be updated by psi*d(p) after the + // pressure solution - done in 2 parts. Part 1: + thermo.rho() -= psi*p; + + volScalarField rAU(1.0/UEqn.A()); + surfaceScalarField rhorAUf("Dp", fvc::interpolate(rho*rAU)); + + volVectorField HbyA("HbyA", U); + HbyA = rAU*UEqn.H(); + + surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf()); + + surfaceScalarField phiHbyA + ( + "phiHbyA", + fvc::interpolate(rho) + *( + (fvc::interpolate(U) & mesh.Sf()) + + fvc::ddtPhiCorr(rAU, rho, U, phi) + ) + + phig + ); + + sources.relativeFlux(fvc::interpolate(rho), phiHbyA); + + fvScalarMatrix p_rghDDtEqn + ( + fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh)) + + fvc::div(phiHbyA) + == + sources(psi, p_rgh, rho.name()) + ); + + while (pimple.correctNonOrthogonal()) + { + fvScalarMatrix p_rghEqn + ( + p_rghDDtEqn + - fvm::laplacian(rhorAUf, p_rgh) + ); + + sources.constrain(p_rghEqn); + + p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter()))); + + if (pimple.finalNonOrthogonalIter()) + { + // Calculate the conservative fluxes + phi = phiHbyA + p_rghEqn.flux(); + + // Explicitly relax pressure for momentum corrector + p_rgh.relax(); + + // Correct the momentum source with the pressure gradient flux + // calculated from the relaxed pressure + U = HbyA + rAU*fvc::reconstruct((phig + p_rghEqn.flux())/rhorAUf); + U.correctBoundaryConditions(); + sources.correct(U); + K = 0.5*magSqr(U); + } + } + + p = p_rgh + rho*gh; + + // Second part of thermodynamic density update + thermo.rho() += psi*p; + + if (thermo.dpdt()) + { + dpdt = fvc::ddt(p); + } + + #include "rhoEqn.H" + #include "compressibleContinuityErrs.H" +} diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C new file mode 100644 index 0000000000..19356b0fe6 --- /dev/null +++ b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C @@ -0,0 +1,106 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / 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, see . + +Application + rhoReactingBuoyantFoam + +Description + Solver for combustion with chemical reactions using density based + thermodynamics package, using enahanced buoyancy treatment. + +\*---------------------------------------------------------------------------*/ + +#include "fvCFD.H" +#include "rhoCombustionModel.H" +#include "turbulenceModel.H" +#include "multivariateScheme.H" +#include "pimpleControl.H" +#include "IObasicSourceList.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +int main(int argc, char *argv[]) +{ + #include "setRootCase.H" + #include "createTime.H" + #include "createMesh.H" + #include "readGravitationalAcceleration.H" + #include "createFields.H" + #include "createSources.H" + #include "initContinuityErrs.H" + #include "readTimeControls.H" + #include "compressibleCourantNo.H" + #include "setInitialDeltaT.H" + + pimpleControl pimple(mesh); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + Info<< "\nStarting time loop\n" << endl; + + while (runTime.run()) + { + #include "readTimeControls.H" + #include "compressibleCourantNo.H" + #include "setDeltaT.H" + + runTime++; + Info<< "Time = " << runTime.timeName() << nl << endl; + + #include "rhoEqn.H" + + // --- Pressure-velocity PIMPLE corrector loop + while (pimple.loop()) + { + #include "UEqn.H" + #include "YEqn.H" + #include "EEqn.H" + + // --- Pressure corrector loop + while (pimple.correct()) + { + #include "pEqn.H" + } + + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } + + rho = thermo.rho(); + + runTime.write(); + + Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" + << " ClockTime = " << runTime.elapsedClockTime() << " s" + << nl << endl; + } + + Info<< "End\n" << endl; + + return 0; +} + + +// ************************************************************************* // diff --git a/applications/solvers/combustion/rhoReactingFoam/Make/files b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/Make/files similarity index 100% rename from applications/solvers/combustion/rhoReactingFoam/Make/files rename to applications/solvers/combustion/reactingFoam/rhoReactingFoam/Make/files diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/Make/options b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/Make/options new file mode 100644 index 0000000000..0d1336e1ac --- /dev/null +++ b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/Make/options @@ -0,0 +1,29 @@ +EXE_INC = \ + -I$(FOAM_SOLVERS)/combustion/reactingFoam \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fieldSources/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude \ + -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \ + -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \ + -I$(LIB_SRC)/ODE/lnInclude \ + -I$(LIB_SRC)/combustionModels/lnInclude + + +EXE_LIBS = \ + -lfiniteVolume \ + -lfieldSources \ + -lmeshTools \ + -lsampling \ + -lcompressibleTurbulenceModel \ + -lcompressibleRASModels \ + -lcompressibleLESModels \ + -lreactionThermophysicalModels \ + -lspecie \ + -lfluidThermophysicalModels \ + -lchemistryModel \ + -lODE \ + -lcombustionModels diff --git a/applications/solvers/combustion/rhoReactingFoam/createFields.H b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H similarity index 98% rename from applications/solvers/combustion/rhoReactingFoam/createFields.H rename to applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H index 4c517fb646..e99639e189 100644 --- a/applications/solvers/combustion/rhoReactingFoam/createFields.H +++ b/applications/solvers/combustion/reactingFoam/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/pEqn.H b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/pEqn.H similarity index 100% rename from applications/solvers/combustion/rhoReactingFoam/pEqn.H rename to applications/solvers/combustion/reactingFoam/rhoReactingFoam/pEqn.H diff --git a/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C similarity index 99% rename from applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C rename to applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C index 0a91aa4b03..fffbf485d8 100644 --- a/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C +++ b/applications/solvers/combustion/reactingFoam/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 1cc6ed584c..712a3a9ab4 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 e4fa5cd6b3..daa25ac316 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 8b3cfd10b9..67cc0c3e45 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 ccbba350c2..f3d088b4d6 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 f9b8a901f7..a2b951de7c 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 7e1664dbea..c1c323e7ab 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 49e4b69482..a1fd479e12 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 e0b621c253..dc0fd648f5 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 e496906d08..7adacc8fd1 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 8bbd960281..c01b4d7984 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 3f4b2fd021..dea35b7657 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 e496906d08..7adacc8fd1 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 52e15e07b5..e1c964a179 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 ad924283ee..4fff74d224 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 e906c56f80..55169f1441 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 efc1067db2..e0adb91773 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 41e15dbfa8..be186ff319 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 1cc6ed584c..712a3a9ab4 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 e12724ed69..892de138bf 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 62fcf33c04..bac6d8d03e 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 b606339627..eaa078c6ad 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 094b50cb3e..f84961f181 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 860cef4547..82e85ca563 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 bbd6f77773..0b401c974c 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 704bf32d50..bb7a65cb1d 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 a0bd72c3b4..7805adf8d7 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 3e3157de72..01f2d32233 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 8df8cd4784..e5ab958f10 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 d30848804e..cc5eda691d 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H @@ -17,7 +17,7 @@ PtrList rhoMax(fluidRegions.size()); PtrList rhoMin(fluidRegions.size()); - PtrList heatSources(fluidRegions.size()); + PtrList 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 ee005e0d22..935b27d57c 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 a0905d3e4f..d0f5dbc656 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 9f41c9eb37..143ca3a742 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 87bd5924f4..9c32ec054e 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 a2021a5edc..fbc39c8556 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H @@ -14,8 +14,7 @@ List initialMassFluid(fluidRegions.size()); - PtrList heatSources(fluidRegions.size()); - PtrList porousZonesFluid(fluidRegions.size()); + PtrList 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 28f0ea9683..84a22048e4 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 c281ccc197..be24cc2ba0 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 7085c5bd35..19b42eb4d5 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 8b496a6aed..4c5ec3c9a9 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 5895a55442..a6cff20e14 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 84a404654a..94913478a6 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 bb4366cdd7..e4127150c0 100644 --- a/applications/solvers/incompressible/pimpleFoam/createFields.H +++ b/applications/solvers/incompressible/pimpleFoam/createFields.H @@ -40,6 +40,3 @@ autoPtr turbulence ( incompressible::turbulenceModel::New(U, phi, laminarTransport) ); - - -IObasicSourceList sources(mesh); diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/Make/options b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/Make/options index 8aa441b18e..11c10272ff 100644 --- a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/Make/options +++ b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/Make/options @@ -17,6 +17,7 @@ EXE_LIBS = \ -ldynamicMesh \ -lmeshTools \ -lincompressibleTransportModels \ + -lincompressibleTurbulenceModel \ -lincompressibleRASModels \ -lincompressibleLESModels \ -lfiniteVolume \ diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/UEqn.H b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/UEqn.H index 618816f5fe..c125d2ac2a 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 701a3ff733..16b3bd977d 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 03299b71bb..27fc93f341 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 8b0f240e4d..ceb186cdbf 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 74e84d9bfc..123eaf7ac6 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 27af553b77..9e1c7aa9ad 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 35a787e97b..114c183c4c 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 3631b154a6..eab6907e8d 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 fb605fffd3..265a731269 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 0df5760bab..78eea98cf3 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 - ( - SRF::SRFModel::New(Urel) - ); - - IObasicSourceList sources(mesh); + autoPtr SRF(SRF::SRFModel::New(Urel)); diff --git a/applications/solvers/incompressible/simpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/UEqn.H index 786c4f5919..719e294a08 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 97d40c3f07..947da10c9d 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 101c16d827..3ce7e2f533 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; UCorrcorrect(); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H index fe7b047d9a..3dee99c1c7 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 f07208909c..a5c39e8473 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H @@ -39,6 +39,8 @@ tmp > 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 6832d01458..2197ae8d52 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 d76805c25a..1a45776ed4 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 c8e8193eb2..5c37255fef 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 2c327a1099..4abcdcf441 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 5884abe0c1..81d90bd695 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 e05dcdef6a..615342c436 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H @@ -40,6 +40,8 @@ tmp > 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 1a15b1b2ab..057978c8f8 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 203ee0ecd8..80add60630 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 282acfe91e..5cc780abb1 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 c8ef9bf84e..57456fe791 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 4ea17727d9..c0b7519607 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 612e582c54..11d4b27ef8 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 a22267d9be..b7e40dcc59 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H @@ -38,6 +38,8 @@ tmp > 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 b2e5775e58..0000000000 --- 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 05f0f044ce..0000000000 --- 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 a8f4328543..c273f71856 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 f142f620be..6ad34d56c7 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 3723f7f79d..11d4b27ef8 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 612ea4f3c9..4aa21b506f 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 b6293f2c1f..ecda54ee83 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 1b4f46289f..fd2df8b2ac 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 02739bda71..243c9a6058 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/applications/solvers/multiphase/compressibleInterFoam/Make/options b/applications/solvers/multiphase/compressibleInterFoam/Make/options index ca9a90cf77..48c253b213 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/Make/options +++ b/applications/solvers/multiphase/compressibleInterFoam/Make/options @@ -7,6 +7,7 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude EXE_LIBS = \ + -linterfaceProperties \ -ltwoPhaseInterfaceProperties \ -lincompressibleTransportModels \ -lphaseEquationsOfState \ diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/Make/options b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/Make/options index db259cfbc0..d4d0fa9b5a 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/Make/options +++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/Make/options @@ -11,6 +11,7 @@ EXE_INC = \ -I$(LIB_SRC)/dynamicFvMesh/lnInclude EXE_LIBS = \ + -linterfaceProperties \ -ltwoPhaseInterfaceProperties \ -lincompressibleTransportModels \ -lphaseEquationsOfState \ diff --git a/applications/solvers/multiphase/interFoam/LTSInterFoam/Make/options b/applications/solvers/multiphase/interFoam/LTSInterFoam/Make/options index 7eba4b166f..437d8c57f3 100644 --- a/applications/solvers/multiphase/interFoam/LTSInterFoam/Make/options +++ b/applications/solvers/multiphase/interFoam/LTSInterFoam/Make/options @@ -10,6 +10,7 @@ EXE_INC = \ -I$(LIB_SRC)/sampling/lnInclude EXE_LIBS = \ + -linterfaceProperties \ -ltwoPhaseInterfaceProperties \ -lincompressibleTransportModels \ -lincompressibleTurbulenceModel \ diff --git a/applications/solvers/multiphase/interFoam/MRFInterFoam/Make/options b/applications/solvers/multiphase/interFoam/MRFInterFoam/Make/options index 7eba4b166f..437d8c57f3 100644 --- a/applications/solvers/multiphase/interFoam/MRFInterFoam/Make/options +++ b/applications/solvers/multiphase/interFoam/MRFInterFoam/Make/options @@ -10,6 +10,7 @@ EXE_INC = \ -I$(LIB_SRC)/sampling/lnInclude EXE_LIBS = \ + -linterfaceProperties \ -ltwoPhaseInterfaceProperties \ -lincompressibleTransportModels \ -lincompressibleTurbulenceModel \ diff --git a/applications/solvers/multiphase/interFoam/Make/options b/applications/solvers/multiphase/interFoam/Make/options index ab0596b747..3791297ea0 100644 --- a/applications/solvers/multiphase/interFoam/Make/options +++ b/applications/solvers/multiphase/interFoam/Make/options @@ -9,6 +9,7 @@ EXE_INC = \ -I$(LIB_SRC)/sampling/lnInclude EXE_LIBS = \ + -linterfaceProperties \ -ltwoPhaseInterfaceProperties \ -lincompressibleTransportModels \ -lincompressibleTurbulenceModel \ diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options b/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options index 9f9f386295..b01465ff8c 100644 --- a/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options +++ b/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options @@ -12,6 +12,7 @@ EXE_INC = \ -I$(LIB_SRC)/sampling/lnInclude EXE_LIBS = \ + -linterfaceProperties \ -ltwoPhaseInterfaceProperties \ -lincompressibleTransportModels \ -lincompressibleTurbulenceModel \ diff --git a/applications/solvers/multiphase/interFoam/porousInterFoam/Make/options b/applications/solvers/multiphase/interFoam/porousInterFoam/Make/options index 7eba4b166f..437d8c57f3 100644 --- a/applications/solvers/multiphase/interFoam/porousInterFoam/Make/options +++ b/applications/solvers/multiphase/interFoam/porousInterFoam/Make/options @@ -10,6 +10,7 @@ EXE_INC = \ -I$(LIB_SRC)/sampling/lnInclude EXE_LIBS = \ + -linterfaceProperties \ -ltwoPhaseInterfaceProperties \ -lincompressibleTransportModels \ -lincompressibleTurbulenceModel \ diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/Make/options b/applications/solvers/multiphase/interPhaseChangeFoam/Make/options index 960639f66a..5416a161a8 100644 --- a/applications/solvers/multiphase/interPhaseChangeFoam/Make/options +++ b/applications/solvers/multiphase/interPhaseChangeFoam/Make/options @@ -7,6 +7,7 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude EXE_LIBS = \ + -linterfaceProperties \ -ltwoPhaseInterfaceProperties \ -lincompressibleTransportModels \ -lincompressibleTurbulenceModel \ diff --git a/applications/test/Circulator/Make/files b/applications/test/Circulator/Make/files new file mode 100644 index 0000000000..b6a4e63dc2 --- /dev/null +++ b/applications/test/Circulator/Make/files @@ -0,0 +1,3 @@ +Test-Circulator.C + +EXE = $(FOAM_USER_APPBIN)/Test-Circulator diff --git a/applications/test/Circulator/Make/options b/applications/test/Circulator/Make/options new file mode 100644 index 0000000000..e69de29bb2 diff --git a/applications/test/Circulator/Test-Circulator.C b/applications/test/Circulator/Test-Circulator.C new file mode 100644 index 0000000000..19a21f6b79 --- /dev/null +++ b/applications/test/Circulator/Test-Circulator.C @@ -0,0 +1,268 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / 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, see . + +Application + Test-circulator + +Description + +\*---------------------------------------------------------------------------*/ + +#include "List.H" +#include "ListOps.H" +#include "face.H" +#include "circulator.H" +#include "const_circulator.H" + + +using namespace Foam; + + +// return +// 0: no match +// +1: identical +// -1: same face, but different orientation +label compare(const face& a, const face& b) +{ + // Basic rule: we assume that the sequence of labels in each list + // will be circular in the same order (but not necessarily in the + // same direction or from the same starting point). + + // Trivial reject: faces are different size + label sizeA = a.size(); + label sizeB = b.size(); + + if (sizeA != sizeB || sizeA == 0) + { + return 0; + } + + const_circulator aCirc(a); + const_circulator bCirc(b); + + // Rotate face b until its element matches the starting element of face a. + do + { + if (aCirc() == bCirc()) + { + // Set bCirc fulcrum to its iterator and increment the iterators + bCirc.setFulcrumToIterator(); + ++aCirc; + ++bCirc; + + break; + } + } while (bCirc.circulate(CirculatorBase::CLOCKWISE)); + + // Look forwards around the faces for a match + do + { + if (aCirc() != bCirc()) + { + break; + } + } + while + ( + aCirc.circulate(CirculatorBase::CLOCKWISE), + bCirc.circulate(CirculatorBase::CLOCKWISE) + ); + + // If the circulator has stopped then faces a and b matched. + if (!aCirc.circulate()) + { + return 1; + } + else + { + // Reset the circulators back to their fulcrum + aCirc.setIteratorToFulcrum(); + bCirc.setIteratorToFulcrum(); + ++aCirc; + --bCirc; + } + + // Look backwards around the faces for a match + do + { + if (aCirc() != bCirc()) + { + break; + } + } + while + ( + aCirc.circulate(CirculatorBase::CLOCKWISE), + bCirc.circulate(CirculatorBase::ANTICLOCKWISE) + ); + + // If the circulator has stopped then faces a and b matched. + if (!aCirc.circulate()) + { + return -1; + } + + return 0; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// Main program: + +int main(int argc, char *argv[]) +{ + Info<< "Test the implementation of a circular iterator" << nl << endl; + + Info<< "Test const circulator. First go forwards, then backwards." + << nl << endl; + + face f(identity(4)); + + const_circulator cStart(f); + + if (cStart.size()) do + { + Info<< "Iterate forwards over face (prev/curr/next) : " + << cStart.prev() << " / " << cStart() << " / " << cStart.next() + << endl; + + } while (cStart.circulate(CirculatorBase::CLOCKWISE)); + + if (cStart.size()) do + { + Info<< "Iterate backwards over face : " << cStart() << endl; + + } while (cStart.circulate(CirculatorBase::ANTICLOCKWISE)); + + + Info<< nl << nl << "Test non-const circulator" << nl << endl; + + circulator cStart2(f); + + Info<< "Face before : " << f << endl; + + if (cStart2.size()) do + { + Info<< "Iterate forwards over face (prev/curr/next) : " + << cStart2.prev() << " / " << cStart2() << " / " << cStart2.next() + << endl; + + } while (cStart2.circulate(CirculatorBase::CLOCKWISE)); + + if (cStart2.size()) do + { + Info<< "Iterate forwards over face, adding 1 to each element : " + << cStart2(); + + cStart2() += 1; + + Info<< " -> " << cStart2() << endl; + } while (cStart2.circulate(CirculatorBase::CLOCKWISE)); + + Info<< "Face after : " << f << endl; + + + Info<< nl << nl << "Compare two faces: " << endl; + face a(identity(5)); + Info<< "Compare " << a << " and " << a << " Match = " << compare(a, a) + << endl; + + face b(reverseList(a)); + Info<< "Compare " << a << " and " << b << " Match = " << compare(a, b) + << endl; + + face c(a); + c[4] = 3; + Info<< "Compare " << a << " and " << c << " Match = " << compare(a, c) + << endl; + + face d(rotateList(a, 2)); + Info<< "Compare " << a << " and " << d << " Match = " << compare(a, d) + << endl; + + face g(labelList(5, 1)); + face h(g); + Info<< "Compare " << g << " and " << h << " Match = " << compare(g, h) + << endl; + + g[0] = 2; + h[3] = 2; + Info<< "Compare " << g << " and " << h << " Match = " << compare(g, h) + << endl; + + g[4] = 3; + h[4] = 3; + Info<< "Compare " << g << " and " << h << " Match = " << compare(g, h) + << endl; + + face face1(identity(1)); + Info<< "Compare " << face1 << " and " << face1 + << " Match = " << compare(face1, face1) << endl; + + Info<< nl << nl << "Zero face" << nl << endl; + + face fZero; + circulator cZero(fZero); + + if (cZero.size()) do + { + Info<< "Iterate forwards over face : " << cZero() << endl; + + } while (cZero.circulate(CirculatorBase::CLOCKWISE)); + + fZero = face(identity(5)); + + // circulator was invalidated so reset + cZero = circulator(fZero); + + do + { + Info<< "Iterate forwards over face : " << cZero() << endl; + + } while (cZero.circulate(CirculatorBase::CLOCKWISE)); + + + Info<< nl << nl << "Simultaneously go forwards/backwards over face " << f + << nl << endl; + + const_circulator circForward(f); + const_circulator circBackward(f); + + if (circForward.size() && circBackward.size()) do + { + Info<< "Iterate over face forwards : " << circForward() + << ", backwards : " << circBackward() << endl; + } + while + ( + circForward.circulate(CirculatorBase::CLOCKWISE), + circBackward.circulate(CirculatorBase::ANTICLOCKWISE) + ); + + Info<< "\nEnd\n" << endl; + + return 0; +} + + +// ************************************************************************* // diff --git a/applications/test/ListOps/Make/files b/applications/test/ListOps/Make/files new file mode 100644 index 0000000000..645600a709 --- /dev/null +++ b/applications/test/ListOps/Make/files @@ -0,0 +1,2 @@ +Test-ListOps.C +EXE = $(FOAM_USER_APPBIN)/Test-ListOps diff --git a/applications/test/ListOps/Make/options b/applications/test/ListOps/Make/options new file mode 100644 index 0000000000..9e79e9d733 --- /dev/null +++ b/applications/test/ListOps/Make/options @@ -0,0 +1,3 @@ +EXE_INC = /*-DFULLDEBUG -O0 -g*/ \ + +EXE_LIBS = \ diff --git a/applications/test/ListOps/Test-ListOps.C b/applications/test/ListOps/Test-ListOps.C new file mode 100644 index 0000000000..f6e5695164 --- /dev/null +++ b/applications/test/ListOps/Test-ListOps.C @@ -0,0 +1,120 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / 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, see . + +Application + Test-ListOps + +Description + +\*---------------------------------------------------------------------------*/ + +#include "argList.H" +#include "List.H" +#include "SubList.H" +#include "ListOps.H" +#include "face.H" + +using namespace Foam; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// Main program: + +int main(int argc, char *argv[]) +{ + Info<< "Test Rotations:" << nl << endl; + + List