From 99cbc2726dd10c62677e919079d1cf05917c287b Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 3 Nov 2011 15:00:20 +0000 Subject: [PATCH 1/8] ENH: fieldSources - added ability to apply source to eqn with specified name --- .../basicSource/basicSource/basicSourceList.H | 4 ++++ .../basicSource/basicSource/basicSourceListTemplates.C | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceList.H b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceList.H index 59134e64c2..6884f1c5ad 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceList.H +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceList.H @@ -100,6 +100,10 @@ public: template void apply(fvMatrix& eqn); + //- Apply sources to equation with specified name + template + void apply(fvMatrix& eqn, const word& name); + // I-O diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceListTemplates.C b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceListTemplates.C index fef93a9e95..2b0780b2ec 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceListTemplates.C +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceListTemplates.C @@ -28,9 +28,14 @@ License template void Foam::basicSourceList::apply(fvMatrix& eqn) { - checkApplied(); + apply(eqn, eqn.psi().name()); +} - const word& fieldName = eqn.psi().name(); + +template +void Foam::basicSourceList::apply(fvMatrix& eqn, const word& fieldName) +{ + checkApplied(); forAll(*this, i) { From 89cbba758860996b6feb5ac0fa1080a3bc6135bc Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 3 Nov 2011 15:15:14 +0000 Subject: [PATCH 2/8] ENH: Updated pEqn field sources to lookup rho --- applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H | 2 +- applications/solvers/lagrangian/coalChemistryFoam/pEqn.H | 4 ++-- .../lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H index 5dc9058d9e..3c9cfdeade 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H @@ -31,7 +31,7 @@ parcels.Srho() ); - sources.apply(pDDtEqn); + sources.apply(pDDtEqn, rho.name()); while (pimple.correctNonOrthogonal()) { diff --git a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H index 5ef8472210..b8bb134522 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H @@ -26,7 +26,7 @@ if (pimple.transonic()) coalParcels.Srho() ); - sources.apply(pEqn); + sources.apply(pEqn, rho.name()); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); @@ -56,7 +56,7 @@ else coalParcels.Srho() ); - sources.apply(pEqn); + sources.apply(pEqn, rho.name()); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H index 581c03e104..705a4bae92 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H @@ -31,7 +31,7 @@ parcels.Srho() ); - sources.apply(pDDtEqn); + sources.apply(pDDtEqn, rho.name()); while (pimple.correctNonOrthogonal()) { From 1131853c564b8a0126776def37136fc0ab03fb75 Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 3 Nov 2011 15:25:25 +0000 Subject: [PATCH 3/8] ENH: Removed p entry from tutorial sourcesProperties dictionary --- .../filter/constant/sourcesProperties | 1 - 1 file changed, 1 deletion(-) diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/sourcesProperties b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/sourcesProperties index 0bcf0c982b..e038ba300e 100644 --- a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/sourcesProperties +++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/sourcesProperties @@ -34,7 +34,6 @@ massSource1 { rho 1e-4; // kg/s H2O 1e-4; // kg/s - p 1e-4; // kg/s } } } From a744f7d126411c12f19868c37c20f2a226e386cd Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 3 Nov 2011 15:29:28 +0000 Subject: [PATCH 4/8] STYLE: fieldSources - changed fieldData -> injectionRate --- .../basicSource/explicitSetValue/ExplicitSetValue.C | 8 ++++---- .../basicSource/explicitSetValue/ExplicitSetValue.H | 4 ++-- .../basicSource/explicitSetValue/ExplicitSetValueIO.C | 2 +- .../basicSource/explicitSource/ExplicitSource.C | 8 ++++---- .../basicSource/explicitSource/ExplicitSource.H | 8 ++++---- .../basicSource/explicitSource/ExplicitSourceI.H | 8 ++++---- .../basicSource/explicitSource/ExplicitSourceIO.C | 2 +- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.C b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.C index 6a14cb2bff..4ec825da34 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.C +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.C @@ -34,7 +34,7 @@ template void Foam::ExplicitSetValue::setFieldData(const dictionary& dict) { fieldNames_.setSize(dict.toc().size()); - fieldData_.setSize(fieldNames_.size()); + injectionRate_.setSize(fieldNames_.size()); applied_.setSize(fieldNames_.size(), false); @@ -42,7 +42,7 @@ void Foam::ExplicitSetValue::setFieldData(const dictionary& dict) forAllConstIter(dictionary, dict, iter) { fieldNames_[i] = iter().keyword(); - dict.lookup(iter().keyword()) >> fieldData_[i]; + dict.lookup(iter().keyword()) >> injectionRate_[i]; i++; } } @@ -60,7 +60,7 @@ Foam::ExplicitSetValue::ExplicitSetValue ) : basicSource(name, modelType, dict, mesh), - fieldData_() + injectionRate_() { read(dict); } @@ -105,7 +105,7 @@ void Foam::ExplicitSetValue::setValue forAll(values, i) { - values[i] = fieldData_[fieldI]; + values[i] = injectionRate_[fieldI]; } eqn.setValues(cells_, values); diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.H b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.H index 58a50ea75c..ec0a9d2ce1 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.H +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.H @@ -31,7 +31,7 @@ Description ExplicitSetValueCoeffs { - fieldData + injectionRate { k 30.7; epsilon 1.5; @@ -70,7 +70,7 @@ protected: // Protected data //- Source value per field - List fieldData_; + List injectionRate_; // Protected functions diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValueIO.C b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValueIO.C index 7fd1d45592..a27190ea49 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValueIO.C +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValueIO.C @@ -40,7 +40,7 @@ bool Foam::ExplicitSetValue::read(const dictionary& dict) { if (basicSource::read(dict)) { - setFieldData(coeffs_.subDict("fieldData")); + setFieldData(coeffs_.subDict("injectionRate")); return true; } else diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSource.C b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSource.C index b95cd7ba0e..b9f8204d87 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSource.C +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSource.C @@ -88,7 +88,7 @@ template void Foam::ExplicitSource::setFieldData(const dictionary& dict) { fieldNames_.setSize(dict.toc().size()); - fieldData_.setSize(fieldNames_.size()); + injectionRate_.setSize(fieldNames_.size()); applied_.setSize(fieldNames_.size(), false); @@ -96,7 +96,7 @@ void Foam::ExplicitSource::setFieldData(const dictionary& dict) forAllConstIter(dictionary, dict, iter) { fieldNames_[i] = iter().keyword(); - dict.lookup(iter().keyword()) >> fieldData_[i]; + dict.lookup(iter().keyword()) >> injectionRate_[i]; i++; } @@ -122,7 +122,7 @@ Foam::ExplicitSource::ExplicitSource basicSource(name, modelType, dict, mesh), volumeMode_(vmAbsolute), VDash_(1.0), - fieldData_() + injectionRate_() { read(dict); } @@ -165,7 +165,7 @@ void Foam::ExplicitSource::addSup forAll(cells_, i) { - Su[cells_[i]] = fieldData_[fieldI]/VDash_; + Su[cells_[i]] = injectionRate_[fieldI]/VDash_; } eqn -= Su; diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSource.H b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSource.H index 7248b5ef26..e53e6004be 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSource.H +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSource.H @@ -32,7 +32,7 @@ Description ExplicitSourceCoeffs { volumeMode absolute; // specific - fieldData + injectionRate { k 30.7; epsilon 1.5; @@ -111,7 +111,7 @@ protected: scalar VDash_; //- Source field values - List fieldData_; + List injectionRate_; // Protected functions @@ -152,7 +152,7 @@ public: inline const volumeModeType& volumeMode() const; //- Return const access to the source field values - inline const List& fieldData() const; + inline const List& injectionRate() const; // Edit @@ -161,7 +161,7 @@ public: inline volumeModeType& volumeMode(); //- Return access to the source field values - inline List& fieldData(); + inline List& injectionRate(); // Evaluation diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSourceI.H b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSourceI.H index 14276e0197..e3f4b8aa63 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSourceI.H +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSourceI.H @@ -36,9 +36,9 @@ Foam::ExplicitSource::volumeMode() const template -inline const Foam::List& Foam::ExplicitSource::fieldData() const +inline const Foam::List& Foam::ExplicitSource::injectionRate() const { - return fieldData_; + return injectionRate_; } @@ -51,9 +51,9 @@ Foam::ExplicitSource::volumeMode() template -inline Foam::List& Foam::ExplicitSource::fieldData() +inline Foam::List& Foam::ExplicitSource::injectionRate() { - return fieldData_; + return injectionRate_; } diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSourceIO.C b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSourceIO.C index d181f3f207..d59c3f35cf 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSourceIO.C +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSourceIO.C @@ -40,7 +40,7 @@ bool Foam::ExplicitSource::read(const dictionary& dict) { if (basicSource::read(dict)) { - setFieldData(coeffs_.subDict("fieldData")); + setFieldData(coeffs_.subDict("injectionRate")); volumeMode_ = wordToVolumeModeType(coeffs_.lookup("volumeMode")); return true; From 213ace9bc2a57d5645c458e0551fb937b39ee6b7 Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 3 Nov 2011 15:30:24 +0000 Subject: [PATCH 5/8] STYLE: Updated tutorial field source input data --- .../simplifiedSiwek/constant/sourcesProperties | 2 +- .../filter/constant/sourcesProperties | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/sourcesProperties b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/sourcesProperties index 0c93adb632..06b09abe24 100644 --- a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/sourcesProperties +++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/sourcesProperties @@ -27,7 +27,7 @@ source1 scalarExplicitSourceCoeffs { volumeMode absolute; - fieldData + injectionRate { hs 20000; } diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/sourcesProperties b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/sourcesProperties index e038ba300e..ab2601c34c 100644 --- a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/sourcesProperties +++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/sourcesProperties @@ -30,7 +30,7 @@ massSource1 scalarExplicitSourceCoeffs { volumeMode absolute; - fieldData + injectionRate { rho 1e-4; // kg/s H2O 1e-4; // kg/s @@ -54,7 +54,7 @@ momentumSource1 vectorExplicitSourceCoeffs { volumeMode absolute; - fieldData + injectionRate { U (0 0.005 0); } @@ -77,7 +77,7 @@ energySource1 scalarExplicitSourceCoeffs { volumeMode absolute; - fieldData + injectionRate { hs 10; } From 0f865796e6d7e8b63a5d944df986d94c0e59333b Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 3 Nov 2011 16:15:15 +0000 Subject: [PATCH 6/8] ENH: Split field sources into sources and constraints --- .../basicSource/basicSource/basicSourceList.C | 2 +- .../basicSource/basicSource/basicSourceList.H | 54 ++++++-- .../basicSource/basicSourceListTemplates.C | 119 +++++++++++++++++- 3 files changed, 161 insertions(+), 14 deletions(-) diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceList.C b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceList.C index 1fe8bd12c2..819d7b8f6b 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceList.C +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceList.C @@ -36,7 +36,7 @@ namespace Foam } -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // void Foam::basicSourceList::checkApplied() const { diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceList.H b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceList.H index 6884f1c5ad..5e5b5fda14 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceList.H +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceList.H @@ -36,7 +36,8 @@ SourceFile #define basicSourceList_H #include "PtrList.H" -#include "DimensionedField.H" +#include "GeometricField.H" +#include "fvPatchField.H" #include "basicSource.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -52,9 +53,9 @@ class basicSourceList : public PtrList { -private: +protected: - // Private data + // Protected data //- Reference to the mesh database const fvMesh& mesh_; @@ -63,7 +64,7 @@ private: label checkTimeIndex_; - // Private Member Functions + // Protected Member Functions //- Check that all sources have been applied void checkApplied() const; @@ -94,15 +95,50 @@ public: // Member Functions - // Evaluation + // Sources - //- Apply sources to equation + //- Return source for equation template - void apply(fvMatrix& eqn); + tmp > operator() + ( + GeometricField& fld + ); - //- Apply sources to equation with specified name + //- Return source for equation with specified name template - void apply(fvMatrix& eqn, const word& name); + tmp > operator() + ( + GeometricField& fld, + const word& fieldName + ); + + //- Return source for equation + template + tmp > operator() + ( + const RhoType& rho, + GeometricField& fld + ); + + //- Return source for equation with specified name + template + tmp > operator() + ( + const RhoType& rho, + GeometricField& fld, + const word& fieldName + ); + + + // Constraints + + //- Apply constraints to equation + template + void constrain(fvMatrix& eqn); + + //- Apply constraints to equation with specified name + template + void constrain(fvMatrix& eqn, const word& fieldName); // I-O diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceListTemplates.C b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceListTemplates.C index 2b0780b2ec..aafa91d098 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceListTemplates.C +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSourceListTemplates.C @@ -26,17 +26,31 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template -void Foam::basicSourceList::apply(fvMatrix& eqn) +Foam::tmp > Foam::basicSourceList::operator() +( + GeometricField& fld +) { - apply(eqn, eqn.psi().name()); + return this->operator()(fld, fld.name()); } template -void Foam::basicSourceList::apply(fvMatrix& eqn, const word& fieldName) +Foam::tmp > Foam::basicSourceList::operator() +( + GeometricField& fld, + const word& fieldName +) { checkApplied(); + const dimensionSet ds = fld.dimensions()/dimTime*dimVolume; + + tmp > tmtx(new fvMatrix(fld, ds)); + + fvMatrix& mtx = tmtx(); + + forAll(*this, i) { basicSource& source = this->operator[](i); @@ -55,7 +69,104 @@ void Foam::basicSourceList::apply(fvMatrix& eqn, const word& fieldName) << fieldName << endl; } - source.addSup(eqn, fieldI); + source.addSup(mtx, fieldI); + } + } + } + + return tmtx; +} + + +template +Foam::tmp > Foam::basicSourceList::operator() +( + const RhoType& rho, + GeometricField& fld +) +{ + return this->operator()(rho, fld, fld.name()); +} + + +template +Foam::tmp > Foam::basicSourceList::operator() +( + const RhoType& rho, + GeometricField& fld, + const word& fieldName +) +{ + checkApplied(); + + const dimensionSet ds = rho.dimensions()*fld.dimensions()/dimTime*dimVolume; + + tmp > tmtx(new fvMatrix(fld, ds)); + + fvMatrix& mtx = tmtx(); + + + forAll(*this, i) + { + basicSource& source = this->operator[](i); + + label fieldI = source.applyToField(fieldName); + + if (fieldI != -1) + { + source.setApplied(fieldI); + + if (source.isActive()) + { + if (debug) + { + Info<< "Applying source " << source.name() << " to field " + << fieldName << endl; + } + + source.addSup(mtx, fieldI); + } + } + } + + return tmtx; +} + + +template +void Foam::basicSourceList::constrain(fvMatrix& eqn) +{ + constrain(eqn, eqn.psi().name()); +} + + +template +void Foam::basicSourceList::constrain +( + fvMatrix& eqn, + const word& fieldName +) +{ + checkApplied(); + + forAll(*this, i) + { + basicSource& source = this->operator[](i); + + label fieldI = source.applyToField(fieldName); + + if (fieldI != -1) + { + source.setApplied(fieldI); + + if (source.isActive()) + { + if (debug) + { + Info<< "Applying constraint " << source.name() + << " to field " << fieldName << endl; + } + source.setValue(eqn, fieldI); } } From 4b527e3e27a8ed8ed829a47c8c480a041c917d34 Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 3 Nov 2011 16:58:53 +0000 Subject: [PATCH 7/8] ENH: Updated solvers using fieldSources --- applications/solvers/incompressible/pimpleFoam/UEqn.H | 5 +++-- .../incompressible/simpleFoam/MRFSimpleFoam/UEqn.H | 3 ++- .../incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H | 5 +++-- applications/solvers/incompressible/simpleFoam/UEqn.H | 5 +++-- .../incompressible/simpleFoam/porousSimpleFoam/UEqn.H | 5 +++-- .../solvers/lagrangian/LTSReactingParcelFoam/UEqn.H | 3 ++- .../solvers/lagrangian/LTSReactingParcelFoam/YEqn.H | 3 ++- .../solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H | 3 ++- .../solvers/lagrangian/LTSReactingParcelFoam/pEqn.H | 5 +++-- .../solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H | 3 ++- .../lagrangian/LTSReactingParcelFoam/timeScales.H | 2 +- .../solvers/lagrangian/coalChemistryFoam/UEqn.H | 5 +++-- .../solvers/lagrangian/coalChemistryFoam/YEqn.H | 6 ++++-- .../solvers/lagrangian/coalChemistryFoam/hsEqn.H | 6 ++++-- .../solvers/lagrangian/coalChemistryFoam/pEqn.H | 10 ++++++---- .../solvers/lagrangian/coalChemistryFoam/rhoEqn.H | 3 ++- .../porousExplicitSourceReactingParcelFoam/UEqn.H | 3 ++- .../porousExplicitSourceReactingParcelFoam/YEqn.H | 3 ++- .../porousExplicitSourceReactingParcelFoam/hsEqn.H | 3 ++- .../porousExplicitSourceReactingParcelFoam/pEqn.H | 4 +++- .../porousExplicitSourceReactingParcelFoam/rhoEqn.H | 3 ++- 21 files changed, 56 insertions(+), 32 deletions(-) diff --git a/applications/solvers/incompressible/pimpleFoam/UEqn.H b/applications/solvers/incompressible/pimpleFoam/UEqn.H index 4d5a99c800..120c230e17 100644 --- a/applications/solvers/incompressible/pimpleFoam/UEqn.H +++ b/applications/solvers/incompressible/pimpleFoam/UEqn.H @@ -5,12 +5,13 @@ tmp UEqn fvm::ddt(U) + fvm::div(phi, U) + turbulence->divDevReff(U) + + sources(U) ); -sources.apply(UEqn()); - UEqn().relax(); +sources.constrain(UEqn()); + volScalarField rAU(1.0/UEqn().A()); if (pimple.momentumPredictor()) diff --git a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/UEqn.H index dd23e3d221..3c0d01e922 100644 --- a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/UEqn.H +++ b/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/UEqn.H @@ -4,11 +4,12 @@ ( fvm::div(phi, U) + turbulence->divDevReff(U) + + sources(U) ); mrfZones.addCoriolis(UEqn()); - sources.apply(UEqn()); + sources.constrain(UEqn()); UEqn().relax(); diff --git a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H index 94380de28c..ef88991aef 100644 --- a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H +++ b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H @@ -5,10 +5,11 @@ fvm::div(phi, Urel) + turbulence->divDevReff(Urel) + SRF->Su() + + sources(Urel) ); - sources.apply(UrelEqn()); - UrelEqn().relax(); + sources.constrain(UrelEqn()); + solve(UrelEqn() == -fvc::grad(p)); diff --git a/applications/solvers/incompressible/simpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/UEqn.H index df1d53a353..854c86bec1 100644 --- a/applications/solvers/incompressible/simpleFoam/UEqn.H +++ b/applications/solvers/incompressible/simpleFoam/UEqn.H @@ -4,10 +4,11 @@ ( fvm::div(phi, U) + turbulence->divDevReff(U) + + sources(U) ); - sources.apply(UEqn()); - UEqn().relax(); + sources.constrain(UEqn()); + solve(UEqn() == -fvc::grad(p)); diff --git a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H index 2dd998c484..d9127ab754 100644 --- a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H +++ b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H @@ -4,12 +4,13 @@ ( fvm::div(phi, U) + turbulence->divDevReff(U) + + sources(U) ); - sources.apply(UEqn()); - 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 diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H index bf6f141875..c689f2667d 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H @@ -4,12 +4,13 @@ fvm::ddt(rho, U) + fvm::div(phi, U) + turbulence->divDevRhoReff(U) + + sources(rho, U) == rho.dimensionedInternalField()*g + parcels.SU(U) ); - sources.apply(UEqn); + sources.constrain(UEqn); pZones.addResistance(UEqn); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H index a5ee090d84..2eeb4f7850 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H @@ -28,12 +28,13 @@ if (solveSpecies) fvm::ddt(rho, Yi) + mvConvection->fvmDiv(phi, Yi) - fvm::laplacian(turbulence->muEff(), Yi) + + sources(Yi) == parcels.SYi(i, Yi) + combustion->R(Yi) ); - sources.apply(YEqn); + sources.constrain(YEqn); YEqn.solve(mesh.solver("Yi")); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H index c8c634bbd9..9ed83206bc 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H @@ -4,6 +4,7 @@ fvm::ddt(rho, hs) + mvConvection->fvmDiv(phi, hs) - fvm::laplacian(turbulence->alphaEff(), hs) + + sources(rho, hs) == DpDt + parcels.Sh(hs) @@ -11,7 +12,7 @@ + combustion->Sh() ); - sources.apply(hsEqn); + sources.constrain(hsEqn); hsEqn.solve(); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H index 3c9cfdeade..bb7b7be815 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H @@ -27,12 +27,11 @@ ( fvc::ddt(rho) + psi*correction(fvm::ddt(p)) + fvc::div(phi) + + sources(psi, p, rho.name()) == parcels.Srho() ); - sources.apply(pDDtEqn, rho.name()); - while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -41,6 +40,8 @@ - fvm::laplacian(rho*rAU, p) ); + sources.constrain(pDDtEqn, rho.name()); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H index 829ad231e7..f87fc5211d 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H @@ -34,11 +34,12 @@ Description ( fvm::ddt(rho) + fvc::div(phi) + + sources(rho) == parcels.Srho(rho) ); - sources.apply(rhoEqn); + sources.constrain(rhoEqn); rhoEqn.solve(); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/timeScales.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/timeScales.H index e61e6cdac7..43ebced834 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/timeScales.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/timeScales.H @@ -76,7 +76,7 @@ Info<< "Time scales min/max:" << endl; ( DpDt + parcels.hsTrans()/(mesh.V()*runTime.deltaT()) -// + energySource.Su() +// + sources(rho, hs) + combustion->Sh()() ) /rho diff --git a/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H index 2956bf99d8..1211ce88ab 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H @@ -3,16 +3,17 @@ fvm::ddt(rho, U) + fvm::div(phi, U) + turbulence->divDevRhoReff(U) + + sources(rho, U) == rho.dimensionedInternalField()*g + coalParcels.SU(U) + limestoneParcels.SU(U) ); - sources.apply(UEqn); - UEqn.relax(); + sources.constrain(UEqn); + if (pimple.momentumPredictor()) { solve(UEqn == -fvc::grad(p)); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H index c6abcb4db5..c2e6d6944e 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H @@ -27,14 +27,16 @@ tmp > mvConvection fvm::ddt(rho, Yi) + mvConvection->fvmDiv(phi, Yi) - fvm::laplacian(turbulence->muEff(), Yi) + + sources(rho, Yi) == coalParcels.SYi(i, Yi) + combustion->R(Yi) ); - sources.apply(YiEqn); - YiEqn.relax(); + + sources.constrain(YiEqn); + YiEqn.solve(mesh.solver("Yi")); Yi.max(0.0); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H index fa9f3a0a44..1c4c20d18c 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H @@ -4,6 +4,7 @@ fvm::ddt(rho, hs) + mvConvection->fvmDiv(phi, hs) - fvm::laplacian(turbulence->alphaEff(), hs) + + sources(rho, hs) == DpDt + combustion->Sh() @@ -12,9 +13,10 @@ + radiation->Shs(thermo) ); - sources.apply(hsEqn); - hsEqn.relax(); + + sources.constrain(hsEqn); + hsEqn.solve(); thermo.correct(); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H index b8bb134522..245f419bbf 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H @@ -22,11 +22,12 @@ if (pimple.transonic()) fvm::ddt(psi, p) + fvm::div(phid, p) - fvm::laplacian(rho*rAU, p) + + sources(psi, p, rho.name()) == coalParcels.Srho() ); - sources.apply(pEqn, rho.name()); + sources.constrain(pEqn, rho.name()); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); @@ -39,8 +40,8 @@ if (pimple.transonic()) else { phi = - fvc::interpolate(rho)* - ( + fvc::interpolate(rho) + *( (fvc::interpolate(U) & mesh.Sf()) + fvc::ddtPhiCorr(rAU, rho, U, phi) ); @@ -52,11 +53,12 @@ else fvm::ddt(psi, p) + fvc::div(phi) - fvm::laplacian(rho*rAU, p) + + sources(psi, p, rho.name()) == coalParcels.Srho() ); - sources.apply(pEqn, rho.name()); + sources.constrain(pEqn, rho.name()); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H index 8902cc95a8..336aa8b48c 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H @@ -34,11 +34,12 @@ Description ( fvm::ddt(rho) + fvc::div(phi) + + sources(rho) == coalParcels.Srho(rho) ); - sources.apply(rhoEqn); + sources.constrain(rhoEqn); rhoEqn.solve(); } diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H index a89058d2b5..134ec50950 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H @@ -4,12 +4,13 @@ fvm::ddt(rho, U) + fvm::div(phi, U) + turbulence->divDevRhoReff(U) + + sources(rho, U) == rho.dimensionedInternalField()*g + parcels.SU(U) ); - sources.apply(UEqn); + sources.constrain(UEqn); pZones.addResistance(UEqn); diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H index 8811a5ffe3..71059f3e63 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H @@ -29,12 +29,13 @@ if (solveSpecies) fvm::ddt(rho, Yi) + mvConvection->fvmDiv(phi, Yi) - fvm::laplacian(turbulence->muEff(), Yi) + + sources(rho, Yi) == parcels.SYi(i, Yi) + combustion->R(Yi) ); - sources.apply(YiEqn); + sources.constrain(YiEqn); YiEqn.solve(mesh.solver("Yi")); diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H index d15dd3367e..27628beb7c 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H @@ -34,6 +34,7 @@ fvm::ddt(rho, hs) + mvConvection->fvmDiv(phi, hs) - fvm::laplacian(turbulence->alphaEff(), hs) + + sources(rho, hs) == pWork() + parcels.Sh(hs) @@ -41,7 +42,7 @@ + combustion->Sh() ); - sources.apply(hsEqn); + sources.constrain(hsEqn); hsEqn.solve(); diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H index 705a4bae92..cd2f228659 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H @@ -27,11 +27,11 @@ ( fvc::ddt(rho) + psi*correction(fvm::ddt(p)) + fvc::div(phi) + + sources(psi, p, rho.name()) == parcels.Srho() ); - sources.apply(pDDtEqn, rho.name()); while (pimple.correctNonOrthogonal()) { @@ -41,6 +41,8 @@ - fvm::laplacian(rho*rAU, p) ); + sources.constrain(pDDtEqn, rho.name()); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H index d5d36f7c5f..e2816dd18c 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H @@ -34,11 +34,12 @@ Description ( fvm::ddt(rho) + fvc::div(phi) + + sources(rho) == parcels.Srho(rho) ); - sources.apply(rhoEqn); + sources.constrain(rhoEqn); rhoEqn.solve(); } From e0b35ae32e8fd8107e9b0e9dad632ba8bd051fbe Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 3 Nov 2011 17:19:13 +0000 Subject: [PATCH 8/8] ENH: moved sources to eqn rhs --- .../solvers/incompressible/pimpleFoam/UEqn.H | 3 ++- .../simpleFoam/MRFSimpleFoam/UEqn.H | 3 ++- .../simpleFoam/SRFSimpleFoam/UrelEqn.H | 3 ++- .../solvers/incompressible/simpleFoam/UEqn.H | 3 ++- .../simpleFoam/porousSimpleFoam/UEqn.H | 3 ++- .../lagrangian/LTSReactingParcelFoam/UEqn.H | 2 +- .../lagrangian/LTSReactingParcelFoam/YEqn.H | 2 +- .../lagrangian/LTSReactingParcelFoam/hsEqn.H | 2 +- .../lagrangian/LTSReactingParcelFoam/pEqn.H | 2 +- .../lagrangian/LTSReactingParcelFoam/rhoEqn.H | 2 +- .../lagrangian/coalChemistryFoam/UEqn.H | 2 +- .../lagrangian/coalChemistryFoam/YEqn.H | 2 +- .../lagrangian/coalChemistryFoam/hsEqn.H | 10 ++++---- .../lagrangian/coalChemistryFoam/pEqn.H | 4 +-- .../lagrangian/coalChemistryFoam/rhoEqn.H | 2 +- .../UEqn.H | 2 +- .../YEqn.H | 2 +- .../hsEqn.H | 2 +- .../pEqn.H | 2 +- .../rhoEqn.H | 2 +- .../actuationDiskSourceTemplates.C | 2 +- .../basicSource/basicSource/basicSource.H | 2 ++ .../explicitSetValue/ExplicitSetValue.C | 25 +------------------ .../explicitSource/ExplicitSource.C | 9 +++---- .../radialActuationDiskSourceTemplates.C | 2 +- .../rotorDiskSource/rotorDiskSource.C | 6 ++--- 26 files changed, 41 insertions(+), 60 deletions(-) diff --git a/applications/solvers/incompressible/pimpleFoam/UEqn.H b/applications/solvers/incompressible/pimpleFoam/UEqn.H index 120c230e17..6a424227f3 100644 --- a/applications/solvers/incompressible/pimpleFoam/UEqn.H +++ b/applications/solvers/incompressible/pimpleFoam/UEqn.H @@ -5,7 +5,8 @@ tmp UEqn fvm::ddt(U) + fvm::div(phi, U) + turbulence->divDevReff(U) - + sources(U) + == + sources(U) ); UEqn().relax(); diff --git a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/UEqn.H index 3c0d01e922..8c39a839f7 100644 --- a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/UEqn.H +++ b/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/UEqn.H @@ -4,7 +4,8 @@ ( fvm::div(phi, U) + turbulence->divDevReff(U) - + sources(U) + == + sources(U) ); mrfZones.addCoriolis(UEqn()); diff --git a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H index ef88991aef..fb605fffd3 100644 --- a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H +++ b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H @@ -5,7 +5,8 @@ fvm::div(phi, Urel) + turbulence->divDevReff(Urel) + SRF->Su() - + sources(Urel) + == + sources(Urel) ); UrelEqn().relax(); diff --git a/applications/solvers/incompressible/simpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/UEqn.H index 854c86bec1..786c4f5919 100644 --- a/applications/solvers/incompressible/simpleFoam/UEqn.H +++ b/applications/solvers/incompressible/simpleFoam/UEqn.H @@ -4,7 +4,8 @@ ( fvm::div(phi, U) + turbulence->divDevReff(U) - + sources(U) + == + sources(U) ); UEqn().relax(); diff --git a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H index d9127ab754..632a160030 100644 --- a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H +++ b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H @@ -4,7 +4,8 @@ ( fvm::div(phi, U) + turbulence->divDevReff(U) - + sources(U) + == + sources(U) ); UEqn().relax(); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H index c689f2667d..70f7520190 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H @@ -4,10 +4,10 @@ fvm::ddt(rho, U) + fvm::div(phi, U) + turbulence->divDevRhoReff(U) - + sources(rho, U) == rho.dimensionedInternalField()*g + parcels.SU(U) + + sources(rho, U) ); sources.constrain(UEqn); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H index 2eeb4f7850..743b1d68ff 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H @@ -28,10 +28,10 @@ if (solveSpecies) fvm::ddt(rho, Yi) + mvConvection->fvmDiv(phi, Yi) - fvm::laplacian(turbulence->muEff(), Yi) - + sources(Yi) == parcels.SYi(i, Yi) + combustion->R(Yi) + + sources(Yi) ); sources.constrain(YEqn); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H index 9ed83206bc..151e8e60bb 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H @@ -4,12 +4,12 @@ fvm::ddt(rho, hs) + mvConvection->fvmDiv(phi, hs) - fvm::laplacian(turbulence->alphaEff(), hs) - + sources(rho, hs) == DpDt + parcels.Sh(hs) + radiation->Shs(thermo) + combustion->Sh() + + sources(rho, hs) ); sources.constrain(hsEqn); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H index bb7b7be815..27eb76e42f 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H @@ -27,9 +27,9 @@ ( fvc::ddt(rho) + psi*correction(fvm::ddt(p)) + fvc::div(phi) - + sources(psi, p, rho.name()) == parcels.Srho() + + sources(psi, p, rho.name()) ); while (pimple.correctNonOrthogonal()) diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H index f87fc5211d..88b7a83221 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H @@ -34,9 +34,9 @@ Description ( fvm::ddt(rho) + fvc::div(phi) - + sources(rho) == parcels.Srho(rho) + + sources(rho) ); sources.constrain(rhoEqn); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H index 1211ce88ab..b7321872c3 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H @@ -3,11 +3,11 @@ fvm::ddt(rho, U) + fvm::div(phi, U) + turbulence->divDevRhoReff(U) - + sources(rho, U) == rho.dimensionedInternalField()*g + coalParcels.SU(U) + limestoneParcels.SU(U) + + sources(rho, U) ); UEqn.relax(); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H index c2e6d6944e..f07208909c 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H @@ -27,10 +27,10 @@ tmp > mvConvection fvm::ddt(rho, Yi) + mvConvection->fvmDiv(phi, Yi) - fvm::laplacian(turbulence->muEff(), Yi) - + sources(rho, Yi) == coalParcels.SYi(i, Yi) + combustion->R(Yi) + + sources(rho, Yi) ); YiEqn.relax(); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H index 1c4c20d18c..6df66134c4 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H @@ -4,13 +4,13 @@ fvm::ddt(rho, hs) + mvConvection->fvmDiv(phi, hs) - fvm::laplacian(turbulence->alphaEff(), hs) - + sources(rho, hs) == DpDt - + combustion->Sh() - + coalParcels.Sh(hs) - + limestoneParcels.Sh(hs) - + radiation->Shs(thermo) + + combustion->Sh() + + coalParcels.Sh(hs) + + limestoneParcels.Sh(hs) + + radiation->Shs(thermo) + + sources(rho, hs) ); hsEqn.relax(); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H index 245f419bbf..539521ca9b 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H @@ -22,9 +22,9 @@ if (pimple.transonic()) fvm::ddt(psi, p) + fvm::div(phid, p) - fvm::laplacian(rho*rAU, p) - + sources(psi, p, rho.name()) == coalParcels.Srho() + + sources(psi, p, rho.name()) ); sources.constrain(pEqn, rho.name()); @@ -53,9 +53,9 @@ else fvm::ddt(psi, p) + fvc::div(phi) - fvm::laplacian(rho*rAU, p) - + sources(psi, p, rho.name()) == coalParcels.Srho() + + sources(psi, p, rho.name()) ); sources.constrain(pEqn, rho.name()); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H index 336aa8b48c..c8e8193eb2 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H @@ -34,9 +34,9 @@ Description ( fvm::ddt(rho) + fvc::div(phi) - + sources(rho) == coalParcels.Srho(rho) + + sources(rho) ); sources.constrain(rhoEqn); diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H index 134ec50950..9bb0de54b1 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H @@ -4,10 +4,10 @@ fvm::ddt(rho, U) + fvm::div(phi, U) + turbulence->divDevRhoReff(U) - + sources(rho, U) == rho.dimensionedInternalField()*g + parcels.SU(U) + + sources(rho, U) ); sources.constrain(UEqn); diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H index 71059f3e63..e333a14712 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H @@ -29,10 +29,10 @@ if (solveSpecies) fvm::ddt(rho, Yi) + mvConvection->fvmDiv(phi, Yi) - fvm::laplacian(turbulence->muEff(), Yi) - + sources(rho, Yi) == parcels.SYi(i, Yi) + combustion->R(Yi) + + sources(rho, Yi) ); sources.constrain(YiEqn); diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H index 27628beb7c..27a9f6c8b3 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H @@ -34,12 +34,12 @@ fvm::ddt(rho, hs) + mvConvection->fvmDiv(phi, hs) - fvm::laplacian(turbulence->alphaEff(), hs) - + sources(rho, hs) == pWork() + parcels.Sh(hs) + radiation->Shs(thermo) + combustion->Sh() + + sources(rho, hs) ); sources.constrain(hsEqn); diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H index cd2f228659..23645a1b7b 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H @@ -27,9 +27,9 @@ ( fvc::ddt(rho) + psi*correction(fvm::ddt(p)) + fvc::div(phi) - + sources(psi, p, rho.name()) == parcels.Srho() + + sources(psi, p, rho.name()) ); diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H index e2816dd18c..9eacd97597 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H @@ -34,9 +34,9 @@ Description ( fvm::ddt(rho) + fvc::div(phi) - + sources(rho) == parcels.Srho(rho) + + sources(rho) ); sources.constrain(rhoEqn); diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/actuationDiskSource/actuationDiskSourceTemplates.C b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/actuationDiskSource/actuationDiskSourceTemplates.C index 1b1436767e..dbaf95c4b9 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/actuationDiskSource/actuationDiskSourceTemplates.C +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/actuationDiskSource/actuationDiskSourceTemplates.C @@ -55,7 +55,7 @@ void Foam::actuationDiskSource::addActuationDiskAxialInertialResistance } forAll(cells, i) { - Usource[cells[i]] += ((Vcells[cells[i]]/V())*T[i]*E) & U[cells[i]]; + Usource[cells[i]] -= ((Vcells[cells[i]]/V())*T[i]*E) & U[cells[i]]; } } diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSource.H b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSource.H index c70a2ba267..bf61cfe0ca 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSource.H +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSource.H @@ -33,6 +33,8 @@ Description duration 1000.0; // duration selectionMode cellSet; // cellSet // points //cellZone + On evaluation, source expects to be added to the rhs of the equation + SourceFiles basicSource.C diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.C b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.C index 4ec825da34..de957994d2 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.C +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.C @@ -81,32 +81,9 @@ void Foam::ExplicitSetValue::setValue << ">::setValue for source " << name_ << endl; } - DimensionedField rhs - ( - IOobject - ( - name_ + fieldNames_[fieldI] + "rhs", - eqn.psi().mesh().time().timeName(), - eqn.psi().mesh(), - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - eqn.psi().mesh(), - dimensioned - ( - "zero", - dimless, - pTraits::zero - ) - ); - List values(cells_.size()); - forAll(values, i) - { - values[i] = injectionRate_[fieldI]; - } + UIndirectList(values, cells_) = injectionRate_[fieldI]; eqn.setValues(cells_, values); } diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSource.C b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSource.C index b9f8204d87..64ed783cb9 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSource.C +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/ExplicitSource.C @@ -137,7 +137,7 @@ void Foam::ExplicitSource::addSup const label fieldI ) { -// if (debug) + if (debug) { Info<< "ExplicitSource<"<< pTraits::typeName << ">::addSup for source " << name_ << endl; @@ -163,12 +163,9 @@ void Foam::ExplicitSource::addSup false ); - forAll(cells_, i) - { - Su[cells_[i]] = injectionRate_[fieldI]/VDash_; - } + UIndirectList(Su, cells_) = injectionRate_[fieldI]/VDash_; - eqn -= Su; + eqn += Su; } diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/radialActuationDiskSource/radialActuationDiskSourceTemplates.C b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/radialActuationDiskSource/radialActuationDiskSourceTemplates.C index fce5c0a170..127263c94f 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/radialActuationDiskSource/radialActuationDiskSourceTemplates.C +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/radialActuationDiskSource/radialActuationDiskSourceTemplates.C @@ -79,7 +79,7 @@ addRadialActuationDiskAxialInertialResistance forAll(cells, i) { - Usource[cells[i]] += ((Vcells[cells[i]]/V_)*Tr[i]*E) & U[cells[i]]; + Usource[cells[i]] -= ((Vcells[cells[i]]/V_)*Tr[i]*E) & U[cells[i]]; } if (debug) diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/rotorDiskSource/rotorDiskSource.C b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/rotorDiskSource/rotorDiskSource.C index 02f29fcd77..00e9b59ff4 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/rotorDiskSource/rotorDiskSource.C +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/rotorDiskSource/rotorDiskSource.C @@ -399,7 +399,7 @@ Foam::rotorDiskSource::~rotorDiskSource() void Foam::rotorDiskSource::addSup(fvMatrix& eqn, const label fieldI) { - // add source to lhs of eqn + // add source to rhs of eqn const volVectorField& U = eqn.psi(); @@ -410,7 +410,7 @@ void Foam::rotorDiskSource::addSup(fvMatrix& eqn, const label fieldI) const volScalarField& rho = mesh_.lookupObject(rhoName_); - eqn += calculateForces + eqn -= calculateForces ( rho.internalField(), inflowVelocity(U), @@ -419,7 +419,7 @@ void Foam::rotorDiskSource::addSup(fvMatrix& eqn, const label fieldI) } else { - eqn += calculateForces + eqn -= calculateForces ( oneField(), inflowVelocity(U),