diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H index c91f9575696ead224e7aec05d868c6358326f876..d7a9ccbc6954079e7abe20060e0712e19b4fb4c6 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H @@ -423,20 +423,23 @@ Foam::KinematicCloud<ParcelType>::SU() const this->db().time().timeName(), this->mesh(), IOobject::NO_READ, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), this->mesh(), dimensionedVector ( - "zero", - dimDensity*dimVelocity/dimTime, - vector::zero + "zero", + dimDensity*dimVelocity/dimTime, + vector::zero ) ) ); - vectorField& SU = tSU().field(); - SU = UTrans()/(mesh_.V()*this->db().time().deltaT()); + if (solution_.sourceActive()) + { + vectorField& SU = tSU().field(); + SU = UTrans()/(mesh_.V()*this->db().time().deltaT()); + } return tSU; } diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H index bc859a9060d107064b1572810a5c3a432aa00863..509971acd5cb70c2ef04eaa6a0f33368791507e0 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H @@ -69,7 +69,61 @@ template<class ParcelType> inline Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> > Foam::ReactingCloud<ParcelType>::Srho(const label i) const { - return rhoTrans_[i]/(this->db().time().deltaT()*this->mesh().V()); + tmp<volScalarField> tRhoi + ( + new volScalarField + ( + IOobject + ( + this->name() + "rhoTrans", + this->db().time().timeName(), + this->db(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh(), + dimensionedScalar + ( + "zero", + rhoTrans_[0].dimensions()/dimTime/dimVolume, + 0.0 + ) + ) + ); + + if (this->solution().sourceActive()) + { + scalarField& rhoi = tRhoi().internalField(); + rhoi = rhoTrans_[i]/(this->db().time().deltaT()*this->mesh().V()); + + return tRhoi; + } + else + { + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + this->name() + "rhoTrans", + this->db().time().timeName(), + this->db(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh(), + dimensionedScalar + ( + "zero", + rhoTrans_[0].dimensions()/dimTime/dimVolume, + 0.0 + ) + ) + ); + } } @@ -95,13 +149,20 @@ Foam::ReactingCloud<ParcelType>::Srho() const ) ); - scalarField& sourceField = trhoTrans().field(); - forAll(rhoTrans_, i) + if (this->solution().sourceActive()) { - sourceField += rhoTrans_[i]; - } + scalarField& sourceField = trhoTrans().field(); + forAll(rhoTrans_, i) + { + sourceField += rhoTrans_[i]; + } - return trhoTrans/(this->db().time().deltaT()*this->mesh().V()); + return trhoTrans/(this->db().time().deltaT()*this->mesh().V()); + } + else + { + return trhoTrans; + } } diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H index 6af79f2cbc8085054c488d2d04230e59d6e11d35..4928b61953586bef4ff5340a5d1164c847c65e48 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H @@ -111,13 +111,20 @@ Foam::ThermoCloud<ParcelType>::Sh() const this->db().time().timeName(), this->mesh(), IOobject::NO_READ, - IOobject::AUTO_WRITE, + IOobject::NO_WRITE, false ), - hsTrans_()/(this->mesh().V()*this->db().time().deltaT()) + this->mesh(), + dimensionedScalar("zero", dimEnergy/dimVolume/dimTime, 0.0) ) ); + if (this->solution().sourceActive()) + { + scalarField& Sh = tSh(); + Sh = hsTrans_()/(this->mesh().V()*this->db().time().deltaT()); + } + return tSh; }