mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: moved sources to eqn rhs
This commit is contained in:
@ -5,7 +5,8 @@ tmp<fvVectorMatrix> UEqn
|
|||||||
fvm::ddt(U)
|
fvm::ddt(U)
|
||||||
+ fvm::div(phi, U)
|
+ fvm::div(phi, U)
|
||||||
+ turbulence->divDevReff(U)
|
+ turbulence->divDevReff(U)
|
||||||
+ sources(U)
|
==
|
||||||
|
sources(U)
|
||||||
);
|
);
|
||||||
|
|
||||||
UEqn().relax();
|
UEqn().relax();
|
||||||
|
|||||||
@ -4,7 +4,8 @@
|
|||||||
(
|
(
|
||||||
fvm::div(phi, U)
|
fvm::div(phi, U)
|
||||||
+ turbulence->divDevReff(U)
|
+ turbulence->divDevReff(U)
|
||||||
+ sources(U)
|
==
|
||||||
|
sources(U)
|
||||||
);
|
);
|
||||||
|
|
||||||
mrfZones.addCoriolis(UEqn());
|
mrfZones.addCoriolis(UEqn());
|
||||||
|
|||||||
@ -5,7 +5,8 @@
|
|||||||
fvm::div(phi, Urel)
|
fvm::div(phi, Urel)
|
||||||
+ turbulence->divDevReff(Urel)
|
+ turbulence->divDevReff(Urel)
|
||||||
+ SRF->Su()
|
+ SRF->Su()
|
||||||
+ sources(Urel)
|
==
|
||||||
|
sources(Urel)
|
||||||
);
|
);
|
||||||
|
|
||||||
UrelEqn().relax();
|
UrelEqn().relax();
|
||||||
|
|||||||
@ -4,7 +4,8 @@
|
|||||||
(
|
(
|
||||||
fvm::div(phi, U)
|
fvm::div(phi, U)
|
||||||
+ turbulence->divDevReff(U)
|
+ turbulence->divDevReff(U)
|
||||||
+ sources(U)
|
==
|
||||||
|
sources(U)
|
||||||
);
|
);
|
||||||
|
|
||||||
UEqn().relax();
|
UEqn().relax();
|
||||||
|
|||||||
@ -4,7 +4,8 @@
|
|||||||
(
|
(
|
||||||
fvm::div(phi, U)
|
fvm::div(phi, U)
|
||||||
+ turbulence->divDevReff(U)
|
+ turbulence->divDevReff(U)
|
||||||
+ sources(U)
|
==
|
||||||
|
sources(U)
|
||||||
);
|
);
|
||||||
|
|
||||||
UEqn().relax();
|
UEqn().relax();
|
||||||
|
|||||||
@ -4,10 +4,10 @@
|
|||||||
fvm::ddt(rho, U)
|
fvm::ddt(rho, U)
|
||||||
+ fvm::div(phi, U)
|
+ fvm::div(phi, U)
|
||||||
+ turbulence->divDevRhoReff(U)
|
+ turbulence->divDevRhoReff(U)
|
||||||
+ sources(rho, U)
|
|
||||||
==
|
==
|
||||||
rho.dimensionedInternalField()*g
|
rho.dimensionedInternalField()*g
|
||||||
+ parcels.SU(U)
|
+ parcels.SU(U)
|
||||||
|
+ sources(rho, U)
|
||||||
);
|
);
|
||||||
|
|
||||||
sources.constrain(UEqn);
|
sources.constrain(UEqn);
|
||||||
|
|||||||
@ -28,10 +28,10 @@ if (solveSpecies)
|
|||||||
fvm::ddt(rho, Yi)
|
fvm::ddt(rho, Yi)
|
||||||
+ mvConvection->fvmDiv(phi, Yi)
|
+ mvConvection->fvmDiv(phi, Yi)
|
||||||
- fvm::laplacian(turbulence->muEff(), Yi)
|
- fvm::laplacian(turbulence->muEff(), Yi)
|
||||||
+ sources(Yi)
|
|
||||||
==
|
==
|
||||||
parcels.SYi(i, Yi)
|
parcels.SYi(i, Yi)
|
||||||
+ combustion->R(Yi)
|
+ combustion->R(Yi)
|
||||||
|
+ sources(Yi)
|
||||||
);
|
);
|
||||||
|
|
||||||
sources.constrain(YEqn);
|
sources.constrain(YEqn);
|
||||||
|
|||||||
@ -4,12 +4,12 @@
|
|||||||
fvm::ddt(rho, hs)
|
fvm::ddt(rho, hs)
|
||||||
+ mvConvection->fvmDiv(phi, hs)
|
+ mvConvection->fvmDiv(phi, hs)
|
||||||
- fvm::laplacian(turbulence->alphaEff(), hs)
|
- fvm::laplacian(turbulence->alphaEff(), hs)
|
||||||
+ sources(rho, hs)
|
|
||||||
==
|
==
|
||||||
DpDt
|
DpDt
|
||||||
+ parcels.Sh(hs)
|
+ parcels.Sh(hs)
|
||||||
+ radiation->Shs(thermo)
|
+ radiation->Shs(thermo)
|
||||||
+ combustion->Sh()
|
+ combustion->Sh()
|
||||||
|
+ sources(rho, hs)
|
||||||
);
|
);
|
||||||
|
|
||||||
sources.constrain(hsEqn);
|
sources.constrain(hsEqn);
|
||||||
|
|||||||
@ -27,9 +27,9 @@
|
|||||||
(
|
(
|
||||||
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
|
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
|
||||||
+ fvc::div(phi)
|
+ fvc::div(phi)
|
||||||
+ sources(psi, p, rho.name())
|
|
||||||
==
|
==
|
||||||
parcels.Srho()
|
parcels.Srho()
|
||||||
|
+ sources(psi, p, rho.name())
|
||||||
);
|
);
|
||||||
|
|
||||||
while (pimple.correctNonOrthogonal())
|
while (pimple.correctNonOrthogonal())
|
||||||
|
|||||||
@ -34,9 +34,9 @@ Description
|
|||||||
(
|
(
|
||||||
fvm::ddt(rho)
|
fvm::ddt(rho)
|
||||||
+ fvc::div(phi)
|
+ fvc::div(phi)
|
||||||
+ sources(rho)
|
|
||||||
==
|
==
|
||||||
parcels.Srho(rho)
|
parcels.Srho(rho)
|
||||||
|
+ sources(rho)
|
||||||
);
|
);
|
||||||
|
|
||||||
sources.constrain(rhoEqn);
|
sources.constrain(rhoEqn);
|
||||||
|
|||||||
@ -3,11 +3,11 @@
|
|||||||
fvm::ddt(rho, U)
|
fvm::ddt(rho, U)
|
||||||
+ fvm::div(phi, U)
|
+ fvm::div(phi, U)
|
||||||
+ turbulence->divDevRhoReff(U)
|
+ turbulence->divDevRhoReff(U)
|
||||||
+ sources(rho, U)
|
|
||||||
==
|
==
|
||||||
rho.dimensionedInternalField()*g
|
rho.dimensionedInternalField()*g
|
||||||
+ coalParcels.SU(U)
|
+ coalParcels.SU(U)
|
||||||
+ limestoneParcels.SU(U)
|
+ limestoneParcels.SU(U)
|
||||||
|
+ sources(rho, U)
|
||||||
);
|
);
|
||||||
|
|
||||||
UEqn.relax();
|
UEqn.relax();
|
||||||
|
|||||||
@ -27,10 +27,10 @@ tmp<fv::convectionScheme<scalar> > mvConvection
|
|||||||
fvm::ddt(rho, Yi)
|
fvm::ddt(rho, Yi)
|
||||||
+ mvConvection->fvmDiv(phi, Yi)
|
+ mvConvection->fvmDiv(phi, Yi)
|
||||||
- fvm::laplacian(turbulence->muEff(), Yi)
|
- fvm::laplacian(turbulence->muEff(), Yi)
|
||||||
+ sources(rho, Yi)
|
|
||||||
==
|
==
|
||||||
coalParcels.SYi(i, Yi)
|
coalParcels.SYi(i, Yi)
|
||||||
+ combustion->R(Yi)
|
+ combustion->R(Yi)
|
||||||
|
+ sources(rho, Yi)
|
||||||
);
|
);
|
||||||
|
|
||||||
YiEqn.relax();
|
YiEqn.relax();
|
||||||
|
|||||||
@ -4,13 +4,13 @@
|
|||||||
fvm::ddt(rho, hs)
|
fvm::ddt(rho, hs)
|
||||||
+ mvConvection->fvmDiv(phi, hs)
|
+ mvConvection->fvmDiv(phi, hs)
|
||||||
- fvm::laplacian(turbulence->alphaEff(), hs)
|
- fvm::laplacian(turbulence->alphaEff(), hs)
|
||||||
+ sources(rho, hs)
|
|
||||||
==
|
==
|
||||||
DpDt
|
DpDt
|
||||||
+ combustion->Sh()
|
+ combustion->Sh()
|
||||||
+ coalParcels.Sh(hs)
|
+ coalParcels.Sh(hs)
|
||||||
+ limestoneParcels.Sh(hs)
|
+ limestoneParcels.Sh(hs)
|
||||||
+ radiation->Shs(thermo)
|
+ radiation->Shs(thermo)
|
||||||
|
+ sources(rho, hs)
|
||||||
);
|
);
|
||||||
|
|
||||||
hsEqn.relax();
|
hsEqn.relax();
|
||||||
|
|||||||
@ -22,9 +22,9 @@ if (pimple.transonic())
|
|||||||
fvm::ddt(psi, p)
|
fvm::ddt(psi, p)
|
||||||
+ fvm::div(phid, p)
|
+ fvm::div(phid, p)
|
||||||
- fvm::laplacian(rho*rAU, p)
|
- fvm::laplacian(rho*rAU, p)
|
||||||
+ sources(psi, p, rho.name())
|
|
||||||
==
|
==
|
||||||
coalParcels.Srho()
|
coalParcels.Srho()
|
||||||
|
+ sources(psi, p, rho.name())
|
||||||
);
|
);
|
||||||
|
|
||||||
sources.constrain(pEqn, rho.name());
|
sources.constrain(pEqn, rho.name());
|
||||||
@ -53,9 +53,9 @@ else
|
|||||||
fvm::ddt(psi, p)
|
fvm::ddt(psi, p)
|
||||||
+ fvc::div(phi)
|
+ fvc::div(phi)
|
||||||
- fvm::laplacian(rho*rAU, p)
|
- fvm::laplacian(rho*rAU, p)
|
||||||
+ sources(psi, p, rho.name())
|
|
||||||
==
|
==
|
||||||
coalParcels.Srho()
|
coalParcels.Srho()
|
||||||
|
+ sources(psi, p, rho.name())
|
||||||
);
|
);
|
||||||
|
|
||||||
sources.constrain(pEqn, rho.name());
|
sources.constrain(pEqn, rho.name());
|
||||||
|
|||||||
@ -34,9 +34,9 @@ Description
|
|||||||
(
|
(
|
||||||
fvm::ddt(rho)
|
fvm::ddt(rho)
|
||||||
+ fvc::div(phi)
|
+ fvc::div(phi)
|
||||||
+ sources(rho)
|
|
||||||
==
|
==
|
||||||
coalParcels.Srho(rho)
|
coalParcels.Srho(rho)
|
||||||
|
+ sources(rho)
|
||||||
);
|
);
|
||||||
|
|
||||||
sources.constrain(rhoEqn);
|
sources.constrain(rhoEqn);
|
||||||
|
|||||||
@ -4,10 +4,10 @@
|
|||||||
fvm::ddt(rho, U)
|
fvm::ddt(rho, U)
|
||||||
+ fvm::div(phi, U)
|
+ fvm::div(phi, U)
|
||||||
+ turbulence->divDevRhoReff(U)
|
+ turbulence->divDevRhoReff(U)
|
||||||
+ sources(rho, U)
|
|
||||||
==
|
==
|
||||||
rho.dimensionedInternalField()*g
|
rho.dimensionedInternalField()*g
|
||||||
+ parcels.SU(U)
|
+ parcels.SU(U)
|
||||||
|
+ sources(rho, U)
|
||||||
);
|
);
|
||||||
|
|
||||||
sources.constrain(UEqn);
|
sources.constrain(UEqn);
|
||||||
|
|||||||
@ -29,10 +29,10 @@ if (solveSpecies)
|
|||||||
fvm::ddt(rho, Yi)
|
fvm::ddt(rho, Yi)
|
||||||
+ mvConvection->fvmDiv(phi, Yi)
|
+ mvConvection->fvmDiv(phi, Yi)
|
||||||
- fvm::laplacian(turbulence->muEff(), Yi)
|
- fvm::laplacian(turbulence->muEff(), Yi)
|
||||||
+ sources(rho, Yi)
|
|
||||||
==
|
==
|
||||||
parcels.SYi(i, Yi)
|
parcels.SYi(i, Yi)
|
||||||
+ combustion->R(Yi)
|
+ combustion->R(Yi)
|
||||||
|
+ sources(rho, Yi)
|
||||||
);
|
);
|
||||||
|
|
||||||
sources.constrain(YiEqn);
|
sources.constrain(YiEqn);
|
||||||
|
|||||||
@ -34,12 +34,12 @@
|
|||||||
fvm::ddt(rho, hs)
|
fvm::ddt(rho, hs)
|
||||||
+ mvConvection->fvmDiv(phi, hs)
|
+ mvConvection->fvmDiv(phi, hs)
|
||||||
- fvm::laplacian(turbulence->alphaEff(), hs)
|
- fvm::laplacian(turbulence->alphaEff(), hs)
|
||||||
+ sources(rho, hs)
|
|
||||||
==
|
==
|
||||||
pWork()
|
pWork()
|
||||||
+ parcels.Sh(hs)
|
+ parcels.Sh(hs)
|
||||||
+ radiation->Shs(thermo)
|
+ radiation->Shs(thermo)
|
||||||
+ combustion->Sh()
|
+ combustion->Sh()
|
||||||
|
+ sources(rho, hs)
|
||||||
);
|
);
|
||||||
|
|
||||||
sources.constrain(hsEqn);
|
sources.constrain(hsEqn);
|
||||||
|
|||||||
@ -27,9 +27,9 @@
|
|||||||
(
|
(
|
||||||
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
|
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
|
||||||
+ fvc::div(phi)
|
+ fvc::div(phi)
|
||||||
+ sources(psi, p, rho.name())
|
|
||||||
==
|
==
|
||||||
parcels.Srho()
|
parcels.Srho()
|
||||||
|
+ sources(psi, p, rho.name())
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -34,9 +34,9 @@ Description
|
|||||||
(
|
(
|
||||||
fvm::ddt(rho)
|
fvm::ddt(rho)
|
||||||
+ fvc::div(phi)
|
+ fvc::div(phi)
|
||||||
+ sources(rho)
|
|
||||||
==
|
==
|
||||||
parcels.Srho(rho)
|
parcels.Srho(rho)
|
||||||
|
+ sources(rho)
|
||||||
);
|
);
|
||||||
|
|
||||||
sources.constrain(rhoEqn);
|
sources.constrain(rhoEqn);
|
||||||
|
|||||||
@ -55,7 +55,7 @@ void Foam::actuationDiskSource::addActuationDiskAxialInertialResistance
|
|||||||
}
|
}
|
||||||
forAll(cells, i)
|
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]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -33,6 +33,8 @@ Description
|
|||||||
duration 1000.0; // duration
|
duration 1000.0; // duration
|
||||||
selectionMode cellSet; // cellSet // points //cellZone
|
selectionMode cellSet; // cellSet // points //cellZone
|
||||||
|
|
||||||
|
On evaluation, source expects to be added to the rhs of the equation
|
||||||
|
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
basicSource.C
|
basicSource.C
|
||||||
|
|||||||
@ -81,32 +81,9 @@ void Foam::ExplicitSetValue<Type>::setValue
|
|||||||
<< ">::setValue for source " << name_ << endl;
|
<< ">::setValue for source " << name_ << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
DimensionedField<Type, volMesh> 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<Type>
|
|
||||||
(
|
|
||||||
"zero",
|
|
||||||
dimless,
|
|
||||||
pTraits<Type>::zero
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
List<Type> values(cells_.size());
|
List<Type> values(cells_.size());
|
||||||
|
|
||||||
forAll(values, i)
|
UIndirectList<Type>(values, cells_) = injectionRate_[fieldI];
|
||||||
{
|
|
||||||
values[i] = injectionRate_[fieldI];
|
|
||||||
}
|
|
||||||
|
|
||||||
eqn.setValues(cells_, values);
|
eqn.setValues(cells_, values);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -137,7 +137,7 @@ void Foam::ExplicitSource<Type>::addSup
|
|||||||
const label fieldI
|
const label fieldI
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
Info<< "ExplicitSource<"<< pTraits<Type>::typeName
|
Info<< "ExplicitSource<"<< pTraits<Type>::typeName
|
||||||
<< ">::addSup for source " << name_ << endl;
|
<< ">::addSup for source " << name_ << endl;
|
||||||
@ -163,12 +163,9 @@ void Foam::ExplicitSource<Type>::addSup
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
forAll(cells_, i)
|
UIndirectList<Type>(Su, cells_) = injectionRate_[fieldI]/VDash_;
|
||||||
{
|
|
||||||
Su[cells_[i]] = injectionRate_[fieldI]/VDash_;
|
|
||||||
}
|
|
||||||
|
|
||||||
eqn -= Su;
|
eqn += Su;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -79,7 +79,7 @@ addRadialActuationDiskAxialInertialResistance
|
|||||||
|
|
||||||
forAll(cells, i)
|
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)
|
if (debug)
|
||||||
|
|||||||
@ -399,7 +399,7 @@ Foam::rotorDiskSource::~rotorDiskSource()
|
|||||||
|
|
||||||
void Foam::rotorDiskSource::addSup(fvMatrix<vector>& eqn, const label fieldI)
|
void Foam::rotorDiskSource::addSup(fvMatrix<vector>& eqn, const label fieldI)
|
||||||
{
|
{
|
||||||
// add source to lhs of eqn
|
// add source to rhs of eqn
|
||||||
|
|
||||||
const volVectorField& U = eqn.psi();
|
const volVectorField& U = eqn.psi();
|
||||||
|
|
||||||
@ -410,7 +410,7 @@ void Foam::rotorDiskSource::addSup(fvMatrix<vector>& eqn, const label fieldI)
|
|||||||
const volScalarField& rho =
|
const volScalarField& rho =
|
||||||
mesh_.lookupObject<volScalarField>(rhoName_);
|
mesh_.lookupObject<volScalarField>(rhoName_);
|
||||||
|
|
||||||
eqn += calculateForces
|
eqn -= calculateForces
|
||||||
(
|
(
|
||||||
rho.internalField(),
|
rho.internalField(),
|
||||||
inflowVelocity(U),
|
inflowVelocity(U),
|
||||||
@ -419,7 +419,7 @@ void Foam::rotorDiskSource::addSup(fvMatrix<vector>& eqn, const label fieldI)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
eqn += calculateForces
|
eqn -= calculateForces
|
||||||
(
|
(
|
||||||
oneField(),
|
oneField(),
|
||||||
inflowVelocity(U),
|
inflowVelocity(U),
|
||||||
|
|||||||
Reference in New Issue
Block a user