diff --git a/applications/solvers/incompressible/simpleFoam/windSimpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/windSimpleFoam/UEqn.H index 45fc95065b..f431c1042f 100644 --- a/applications/solvers/incompressible/simpleFoam/windSimpleFoam/UEqn.H +++ b/applications/solvers/incompressible/simpleFoam/windSimpleFoam/UEqn.H @@ -7,7 +7,7 @@ ); // Add resistance on the actuation disks - actuationDisks.addSu(UEqn()); + sources.apply(UEqn()); UEqn().relax(); diff --git a/applications/solvers/incompressible/simpleFoam/windSimpleFoam/windSimpleFoam.C b/applications/solvers/incompressible/simpleFoam/windSimpleFoam/windSimpleFoam.C index d3a8bcda19..771c3ee733 100644 --- a/applications/solvers/incompressible/simpleFoam/windSimpleFoam/windSimpleFoam.C +++ b/applications/solvers/incompressible/simpleFoam/windSimpleFoam/windSimpleFoam.C @@ -46,7 +46,7 @@ int main(int argc, char *argv[]) #include "createFields.H" #include "initContinuityErrs.H" - IObasicSourceList actuationDisks(mesh); + IObasicSourceList sources(mesh); simpleControl simple(mesh); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/LTSReactingParcelFoam.C b/applications/solvers/lagrangian/LTSReactingParcelFoam/LTSReactingParcelFoam.C index 23c9e03229..4c368e7cdd 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/LTSReactingParcelFoam.C +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/LTSReactingParcelFoam.C @@ -41,7 +41,7 @@ Description #include "rhoChemistryCombustionModel.H" #include "radiationModel.H" #include "porousZones.H" -#include "timeActivatedExplicitSource.H" +#include "IObasicSourceList.H" #include "SLGThermo.H" #include "fvcSmooth.H" #include "pimpleControl.H" diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H index 9664c2a50d..bf6f141875 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H @@ -7,9 +7,10 @@ == rho.dimensionedInternalField()*g + parcels.SU(U) - + momentumSource.Su() ); + sources.apply(UEqn); + pZones.addResistance(UEqn); if (pimple.momentumPredictor()) diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H index 625c940a66..a5ee090d84 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H @@ -23,7 +23,7 @@ if (solveSpecies) { volScalarField& Yi = Y[i]; - solve + fvScalarMatrix YEqn ( fvm::ddt(rho, Yi) + mvConvection->fvmDiv(phi, Yi) @@ -31,10 +31,12 @@ if (solveSpecies) == parcels.SYi(i, Yi) + combustion->R(Yi) - + massSource.Su(i), - mesh.solver("Yi") ); + sources.apply(YEqn); + + YEqn.solve(mesh.solver("Yi")); + Yi.max(0.0); Yt += Yi; } diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/createExplicitSources.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/createExplicitSources.H index 0f2b52e536..b2e5775e58 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/createExplicitSources.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/createExplicitSources.H @@ -1,27 +1,2 @@ -Info<< "Creating mass source\n" << endl; -scalarTimeActivatedExplicitSourceList massSource -( - "mass", - mesh, - dimMass/dimTime/dimVolume, - composition.species() -); - - -Info<< "Creating momentum source\n" << endl; -vectorTimeActivatedExplicitSourceList momentumSource -( - "momentum", - mesh, - dimMass*dimVelocity/dimTime/dimVolume, - "U" -); - -Info<< "Creating energy source\n" << endl; -scalarTimeActivatedExplicitSourceList energySource -( - "energy", - mesh, - dimEnergy/dimTime/dimVolume, - "h" -); +Info<< "Creating sources\n" << endl; +IObasicSourceList sources(mesh); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H index 55bf1d6dd0..c8c634bbd9 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H @@ -8,10 +8,11 @@ DpDt + parcels.Sh(hs) + radiation->Shs(thermo) - + energySource.Su() + combustion->Sh() ); + sources.apply(hsEqn); + hsEqn.solve(); thermo.correct(); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H index d3aaed21ef..5dc9058d9e 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H @@ -29,9 +29,10 @@ + fvc::div(phi) == parcels.Srho() - + massSource.SuTot() ); + sources.apply(pDDtEqn); + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H index 97aa5b1929..829ad231e7 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H @@ -36,9 +36,10 @@ Description + fvc::div(phi) == parcels.Srho(rho) - + massSource.SuTot() ); + sources.apply(rhoEqn); + rhoEqn.solve(); Info<< "rho min/max = " << min(rho).value() << ", " << max(rho).value() diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/timeScales.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/timeScales.H index 8c4b8a38e4..e61e6cdac7 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() +// + energySource.Su() + combustion->Sh()() ) /rho diff --git a/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H index e7f242fa5f..2956bf99d8 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H @@ -9,6 +9,8 @@ + limestoneParcels.SU(U) ); + sources.apply(UEqn); + UEqn.relax(); if (pimple.momentumPredictor()) diff --git a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H index e9bd1c6581..c6abcb4db5 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H @@ -32,6 +32,8 @@ tmp > mvConvection + combustion->R(Yi) ); + sources.apply(YiEqn); + YiEqn.relax(); YiEqn.solve(mesh.solver("Yi")); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C index 897f43e3c3..d6c61074e1 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C +++ b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C @@ -40,7 +40,7 @@ Description #include "basicThermoCloud.H" #include "coalCloud.H" #include "psiChemistryCombustionModel.H" -#include "timeActivatedExplicitSource.H" +#include "IObasicSourceList.H" #include "radiationModel.H" #include "SLGThermo.H" #include "pimpleControl.H" diff --git a/applications/solvers/lagrangian/coalChemistryFoam/createFields.H b/applications/solvers/lagrangian/coalChemistryFoam/createFields.H index 4d0a2b7408..13e8d94e72 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/createFields.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/createFields.H @@ -122,14 +122,8 @@ fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p) ); - Info<< "\nConstructing explicit enthalpy source" << endl; - scalarTimeActivatedExplicitSourceList enthalpySource - ( - "energy", - mesh, - dimEnergy/dimTime/dimVolume, - "hs" - ); + Info<< "\nConstructing sources" << endl; + IObasicSourceList sources(mesh); volScalarField dQ ( diff --git a/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H index 9a4665accd..fa9f3a0a44 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H @@ -9,10 +9,11 @@ + combustion->Sh() + coalParcels.Sh(hs) + limestoneParcels.Sh(hs) - + enthalpySource.Su() + radiation->Shs(thermo) ); + sources.apply(hsEqn); + hsEqn.relax(); hsEqn.solve(); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H index 73e56f07c5..5ef8472210 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H @@ -26,6 +26,8 @@ if (pimple.transonic()) coalParcels.Srho() ); + sources.apply(pEqn); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) @@ -54,6 +56,8 @@ else coalParcels.Srho() ); + sources.apply(pEqn); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) diff --git a/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H index aa20ed2bf5..8902cc95a8 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H @@ -30,13 +30,17 @@ Description \*---------------------------------------------------------------------------*/ { - solve + fvScalarMatrix rhoEqn ( fvm::ddt(rho) + fvc::div(phi) == coalParcels.Srho(rho) ); + + sources.apply(rhoEqn); + + rhoEqn.solve(); } // ************************************************************************* // diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H index e52431f1e8..a89058d2b5 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H @@ -7,9 +7,10 @@ == rho.dimensionedInternalField()*g + parcels.SU(U) - + momentumSource.Su() ); + sources.apply(UEqn); + pZones.addResistance(UEqn); if (pimple.momentumPredictor()) diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H index 5ef4aaa3a3..8811a5ffe3 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H @@ -24,7 +24,7 @@ if (solveSpecies) { volScalarField& Yi = Y[i]; - solve + fvScalarMatrix YiEqn ( fvm::ddt(rho, Yi) + mvConvection->fvmDiv(phi, Yi) @@ -32,10 +32,12 @@ if (solveSpecies) == parcels.SYi(i, Yi) + combustion->R(Yi) - + massSource.Su(i), - mesh.solver("Yi") ); + sources.apply(YiEqn); + + YiEqn.solve(mesh.solver("Yi")); + Yi.max(0.0); Yt += Yi; } diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createExplicitSources.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createExplicitSources.H index 0f2b52e536..b2e5775e58 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createExplicitSources.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createExplicitSources.H @@ -1,27 +1,2 @@ -Info<< "Creating mass source\n" << endl; -scalarTimeActivatedExplicitSourceList massSource -( - "mass", - mesh, - dimMass/dimTime/dimVolume, - composition.species() -); - - -Info<< "Creating momentum source\n" << endl; -vectorTimeActivatedExplicitSourceList momentumSource -( - "momentum", - mesh, - dimMass*dimVelocity/dimTime/dimVolume, - "U" -); - -Info<< "Creating energy source\n" << endl; -scalarTimeActivatedExplicitSourceList energySource -( - "energy", - mesh, - dimEnergy/dimTime/dimVolume, - "h" -); +Info<< "Creating sources\n" << endl; +IObasicSourceList sources(mesh); diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H index 0e2c61a9ff..d15dd3367e 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H @@ -29,7 +29,7 @@ } { - solve + fvScalarMatrix hsEqn ( fvm::ddt(rho, hs) + mvConvection->fvmDiv(phi, hs) @@ -38,10 +38,13 @@ pWork() + parcels.Sh(hs) + radiation->Shs(thermo) - + energySource.Su() + combustion->Sh() ); + sources.apply(hsEqn); + + hsEqn.solve(); + thermo.correct(); radiation->correct(); diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H index b6e69acead..581c03e104 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H @@ -29,9 +29,10 @@ + fvc::div(phi) == parcels.Srho() - + massSource.SuTot() ); + sources.apply(pDDtEqn); + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/porousExplicitSourceReactingParcelFoam.C b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/porousExplicitSourceReactingParcelFoam.C index 19d7e96d13..8d97ec99ff 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/porousExplicitSourceReactingParcelFoam.C +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/porousExplicitSourceReactingParcelFoam.C @@ -45,7 +45,7 @@ Description #include "rhoChemistryCombustionModel.H" #include "radiationModel.H" #include "porousZones.H" -#include "timeActivatedExplicitSource.H" +#include "IObasicSourceList.H" #include "SLGThermo.H" #include "pimpleControl.H" diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H index 100aa179c3..d5d36f7c5f 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H @@ -36,9 +36,10 @@ Description + fvc::div(phi) == parcels.Srho(rho) - + massSource.SuTot() ); + sources.apply(rhoEqn); + rhoEqn.solve(); } diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files index d30f23b9bd..0eed2c9f4b 100644 --- a/src/finiteVolume/Make/files +++ b/src/finiteVolume/Make/files @@ -378,19 +378,18 @@ $(SRF)/SRFModel/rpm/rpm.C $(SRF)/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.C $(SRF)/derivedFvPatchFields/SRFFreestreamVelocityFvPatchVectorField/SRFFreestreamVelocityFvPatchVectorField.C -fieldSources = $(general)/fieldSources -$(fieldSources)/pressureGradientExplicitSource/pressureGradientExplicitSource.C -$(fieldSources)/timeActivatedExplicitSource/timeActivatedExplicitSource.C - basicSource = $(general)/fieldSources/basicSource $(basicSource)/basicSource/basicSource.C $(basicSource)/basicSource/basicSourceIO.C $(basicSource)/basicSource/basicSourceList.C $(basicSource)/basicSource/IObasicSourceList.C -$(basicSource)/actuationDiskSource/actuationDiskSource.C -$(basicSource)/radialActuationDiskSource/radialActuationDiskSource.C + +$(basicSource)/pressureGradientExplicitSource/pressureGradientExplicitSource.C +$(basicSource)/pressureGradientExplicitSource/pressureGradientExplicitSourceIO.C + $(basicSource)/explicitSource/explicitSource.C $(basicSource)/explicitSetValue/explicitSetValue.C + $(basicSource)/rotorDiskSource/rotorDiskSource.C $(basicSource)/rotorDiskSource/bladeModel/bladeModel.C $(basicSource)/rotorDiskSource/profileModel/profileModel.C @@ -398,5 +397,7 @@ $(basicSource)/rotorDiskSource/profileModel/profileModelList.C $(basicSource)/rotorDiskSource/profileModel/lookup/lookupProfile.C $(basicSource)/rotorDiskSource/profileModel/series/seriesProfile.C +$(basicSource)/actuationDiskSource/actuationDiskSource.C +$(basicSource)/radialActuationDiskSource/radialActuationDiskSource.C LIB = $(FOAM_LIBBIN)/libfiniteVolume diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/actuationDiskSource/actuationDiskSource.C b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/actuationDiskSource/actuationDiskSource.C index e7e996d1db..2f0da244cf 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/actuationDiskSource/actuationDiskSource.C +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/actuationDiskSource/actuationDiskSource.C @@ -35,7 +35,12 @@ License namespace Foam { defineTypeNameAndDebug(actuationDiskSource, 0); - addToRunTimeSelectionTable(basicSource, actuationDiskSource, dictionary); + addToRunTimeSelectionTable + ( + basicSource, + actuationDiskSource, + dictionary + ); } @@ -75,7 +80,7 @@ Foam::actuationDiskSource::actuationDiskSource ) : basicSource(name, modelType, dict, mesh), - coeffs_(dict.subDict(modelType + "Coeffs")), + fieldName_(coeffs_.lookup("fieldName")), diskDir_(coeffs_.lookup("diskDir")), Cp_(readScalar(coeffs_.lookup("Cp"))), Ct_(readScalar(coeffs_.lookup("Ct"))), @@ -90,17 +95,35 @@ Foam::actuationDiskSource::actuationDiskSource // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::actuationDiskSource::addSu(fvMatrix& UEqn) +Foam::label Foam::actuationDiskSource::applyToField +( + const word& fieldName +) const +{ + if (fieldName == fieldName_) + { + return 0; + } + + return -1; +} + + +void Foam::actuationDiskSource::addSup +( + fvMatrix& eqn, + const label +) { bool compressible = false; - if (UEqn.dimensions() == dimensionSet(1, 1, -2, 0, 0)) + if (eqn.dimensions() == dimForce) { compressible = true; } - const scalarField& cellsV = this->mesh().V(); - vectorField& Usource = UEqn.source(); - const vectorField& U = UEqn.psi(); + const scalarField& cellsV = mesh_.V(); + vectorField& Usource = eqn.source(); + const vectorField& U = eqn.psi(); if (V() > VSMALL) { @@ -111,7 +134,7 @@ void Foam::actuationDiskSource::addSu(fvMatrix& UEqn) Usource, cells_, cellsV, - this->mesh().lookupObject("rho"), + mesh_.lookupObject("rho"), U ); } @@ -141,7 +164,6 @@ bool Foam::actuationDiskSource::read(const dictionary& dict) { if (basicSource::read(dict)) { - coeffs_ = dict.subDict(typeName + "Coeffs"); coeffs_.readIfPresent("diskDir", diskDir_); coeffs_.readIfPresent("Cp", Cp_); coeffs_.readIfPresent("Ct", Ct_); diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/actuationDiskSource/actuationDiskSource.H b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/actuationDiskSource/actuationDiskSource.H index cbe98ea4c8..b0e983e11e 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/actuationDiskSource/actuationDiskSource.H +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/actuationDiskSource/actuationDiskSource.H @@ -26,16 +26,30 @@ Class Foam::actuationDiskSource Description - Actuation disk zone definition. + Actuation disk source + Constant values for momentum source for actuation disk - T = 2*rho*A*sqr(Uo)*a*(1-a) - U1 = (1 -a)Uo + T = 2*rho*A*sqr(Uo)*a*(1-a) + U1 = (1 -a)Uo + where: - A: disk area - Uo: upstream velocity - a: 1 - Cp/Ct - U1: velocity at the disk + A: disk area + Uo: upstream velocity + a: 1 - Cp/Ct + U1: velocity at the disk + + Sources described by: + + actuationDiskSourceCoeffs + { + fieldName U; // name of field to apply source + diskDir (-1 0 0); // disk direction + Cp 0.1; // power coefficient + Ct 0.5; // thrust coefficient + diskArea 5.0; // disk area + } + SourceFiles actuationDiskSource.C @@ -46,14 +60,6 @@ SourceFiles #ifndef actuationDiskSource_H #define actuationDiskSource_H -#include "IOdictionary.H" -#include "coordinateSystem.H" -#include "coordinateSystems.H" -#include "wordList.H" -#include "labelList.H" -#include "DimensionedField.H" -#include "volFieldsFwd.H" -#include "fvMatricesFwd.H" #include "basicSource.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -74,8 +80,8 @@ protected: // Protected data - //- Coefficients dictionary - dictionary coeffs_; + //- Name of field to apply source upon + word fieldName_; //- Disk area normal vector diskDir_; @@ -140,6 +146,12 @@ public: // Member Functions + // Check + + //- Return index of field name if found in fieldNames list + virtual label applyToField(const word& fieldName) const; + + // Access //- Return Cp @@ -169,11 +181,8 @@ public: // Public Functions - //-Source term to fvMatrix - virtual void addSu(fvMatrix& UEqn); - - //-Source term to fvMatrix - virtual void addSu(fvMatrix& UEqn){} + //- Source term to fvMatrix + virtual void addSup(fvMatrix& eqn, const label fieldI); // I-O diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/IObasicSourceList.C b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/IObasicSourceList.C index 0c8695edca..cac80c3d3e 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/IObasicSourceList.C +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/IObasicSourceList.C @@ -24,6 +24,8 @@ License \*---------------------------------------------------------------------------*/ #include "IObasicSourceList.H" +#include "fvMesh.H" +#include "Time.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // diff --git a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSource.C b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSource.C index c59b203618..9a8ea3015e 100644 --- a/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSource.C +++ b/src/finiteVolume/cfdTools/general/fieldSources/basicSource/basicSource/basicSource.C @@ -25,19 +25,16 @@ License #include "basicSource.H" #include "fvMesh.H" -#include "volFields.H" +#include "fvMatrices.H" #include "addToRunTimeSelectionTable.H" -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam { defineTypeNameAndDebug(basicSource, 0); defineRunTimeSelectionTable(basicSource, dictionary); - - // * * * * * * * * * * Static Member Functions * * * * * * * * * * * * * // - template<> const char* NamedEnum < basicSource::selectionModeType, @@ -120,12 +117,9 @@ void Foam::basicSource::setCellSet() label globalCellI = returnReduce(cellI, maxOp