diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C index 6288a9b5e6..5c97c41d5c 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C @@ -230,6 +230,16 @@ void Foam::KinematicCloud::postEvolve() functions_.postEvolve(); solution_.nextIter(); + + if (this->db().time().outputTime()) + { + outputProperties_.writeObject + ( + IOstream::ASCII, + IOstream::currentVersion, + this->db().time().writeCompression() + ); + } } @@ -281,6 +291,18 @@ Foam::KinematicCloud::KinematicCloud IOobject::NO_WRITE ) ), + outputProperties_ + ( + IOobject + ( + cloudName + "OutputProperties", + mesh_.time().timeName(), + "uniform"/cloud::prefix/cloudName, + mesh_, + IOobject::READ_IF_PRESENT, + IOobject::NO_WRITE + ) + ), solution_(mesh_, particleProperties_.subDict("solution")), constProps_(particleProperties_, solution_.active()), subModelProperties_ @@ -384,6 +406,7 @@ Foam::KinematicCloud::KinematicCloud cloudCopyPtr_(NULL), mesh_(c.mesh_), particleProperties_(c.particleProperties_), + outputProperties_(c.outputProperties_), solution_(c.solution_), constProps_(c.constProps_), subModelProperties_(c.subModelProperties_), @@ -460,6 +483,19 @@ Foam::KinematicCloud::KinematicCloud false ) ), + outputProperties_ + ( + IOobject + ( + name + "OutputProperties", + mesh_.time().timeName(), + "uniform"/cloud::prefix/name, + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ) + ), solution_(mesh), constProps_(), subModelProperties_(dictionary::null), @@ -639,7 +675,7 @@ void Foam::KinematicCloud::motion(TrackData& td) template -void Foam::KinematicCloud::info() const +void Foam::KinematicCloud::info() { vector linearMomentum = linearMomentumOfSystem(); reduce(linearMomentum, sumOp()); diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H index 77c0aacdac..fd32ff790c 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H @@ -143,6 +143,9 @@ protected: //- Dictionary of particle properties IOdictionary particleProperties_; + //- Dictionary of output properties + IOdictionary outputProperties_; + //- Solution properties cloudSolution solution_; @@ -324,6 +327,12 @@ public: //- Return particle properties dictionary inline const IOdictionary& particleProperties() const; + //- Return output properties dictionary + inline const IOdictionary& outputProperties() const; + + //- Return non-const access to the output properties dictionary + inline IOdictionary& outputProperties(); + //- Return const access to the solution properties inline const cloudSolution& solution() const; @@ -546,8 +555,11 @@ public: template void motion(TrackData& td); + + // I-O + //- Print cloud information - void info() const; + void info(); }; diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H index a340095807..94b95168a5 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H @@ -50,6 +50,21 @@ Foam::KinematicCloud::particleProperties() const } +template +inline const Foam::IOdictionary& +Foam::KinematicCloud::outputProperties() const +{ + return outputProperties_; +} + + +template +inline Foam::IOdictionary& Foam::KinematicCloud::outputProperties() +{ + return outputProperties_; +} + + template inline const Foam::cloudSolution& Foam::KinematicCloud::solution() const diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C index 0882dfe03f..3de4ae546d 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C @@ -341,20 +341,13 @@ void Foam::ReactingCloud::evolve() } -template -void Foam::ReactingCloud::addToMassPhaseChange(const scalar dMass) -{ - dMassPhaseChange_ += dMass; -} - template -void Foam::ReactingCloud::info() const +void Foam::ReactingCloud::info() { CloudType::info(); - Info<< " Mass transfer phase change = " - << returnReduce(dMassPhaseChange_, sumOp()) << nl; + this->phaseChange().info(Info); } diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H index 2de85665cc..7f58d83bd6 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H @@ -215,14 +215,18 @@ public: // Sub-models - //- Return reference to reacting composition model + //- Return const access to reacting composition model inline const CompositionModel >& composition() const; - //- Return reference to reacting phase change model + //- Return const access to reacting phase change model inline const PhaseChangeModel >& phaseChange() const; + //- Return reference to reacting phase change model + inline PhaseChangeModel >& + phaseChange(); + // Sources @@ -259,12 +263,6 @@ public: inline tmp Srho(volScalarField& rho) const; - // Check - - //- Add to cumulative phase change mass transfer - void addToMassPhaseChange(const scalar dMass); - - // Cloud evolution functions //- Set parcel thermo properties @@ -300,12 +298,12 @@ public: //- Evolve the cloud void evolve(); - //- Print cloud information - void info() const; - // I-O + //- Print cloud information + void info(); + //- Write the field data for the cloud virtual void writeFields() const; }; diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H index 68925178d3..2a9bbb2423 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H @@ -57,6 +57,14 @@ Foam::ReactingCloud::phaseChange() const } +template +inline Foam::PhaseChangeModel >& +Foam::ReactingCloud::phaseChange() +{ + return phaseChangeModel_(); +} + + template inline Foam::DimensionedField& Foam::ReactingCloud::rhoTrans(const label i) diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C index 199fafe84b..9088b97717 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C @@ -253,33 +253,12 @@ void Foam::ReactingMultiphaseCloud::evolve() template -void Foam::ReactingMultiphaseCloud::addToMassDevolatilisation -( - const scalar dMass -) -{ - dMassDevolatilisation_ += dMass; -} - - -template -void Foam::ReactingMultiphaseCloud::addToMassSurfaceReaction -( - const scalar dMass -) -{ - dMassSurfaceReaction_ += dMass; -} - - -template -void Foam::ReactingMultiphaseCloud::info() const +void Foam::ReactingMultiphaseCloud::info() { CloudType::info(); - Info<< " Mass transfer devolatilisation = " - << returnReduce(dMassDevolatilisation_, sumOp()) << nl; - Info<< " Mass transfer surface reaction = " - << returnReduce(dMassSurfaceReaction_, sumOp()) << nl; + + this->devolatilisation().info(Info); + this->surfaceReaction().info(Info); } diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H index 4f692212d7..5f92be1ea8 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H @@ -214,28 +214,33 @@ public: // Sub-models - //- Return reference to devolatilisation model + //- Return const access to devolatilisation model inline const DevolatilisationModel < ReactingMultiphaseCloud >& devolatilisation() const; - //- Return reference to reacting surface reaction model + //- Return reference to devolatilisation model + inline DevolatilisationModel + < + ReactingMultiphaseCloud + >& + devolatilisation(); + + //- Return const access to reacting surface reaction model inline const SurfaceReactionModel < ReactingMultiphaseCloud >& surfaceReaction() const; - - // Check - - //- Add to cumulative volatilisation mass transfer - void addToMassDevolatilisation(const scalar dMass); - - //- Add to cumulative surface reaction transfer - void addToMassSurfaceReaction(const scalar dMass); + //- Return reference to reacting surface reaction model + inline SurfaceReactionModel + < + ReactingMultiphaseCloud + >& + surfaceReaction(); // Cloud evolution functions @@ -267,12 +272,12 @@ public: //- Evolve the cloud void evolve(); - //- Print cloud information - void info() const; - // I-O + //- Print cloud information + void info(); + //- Write the field data for the cloud virtual void writeFields() const; }; diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H index 019339b25f..e4cef9783b 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H @@ -52,6 +52,17 @@ Foam::ReactingMultiphaseCloud::devolatilisation() const } +template +inline Foam::DevolatilisationModel +< + Foam::ReactingMultiphaseCloud +>& +Foam::ReactingMultiphaseCloud::devolatilisation() +{ + return devolatilisationModel_(); +} + + template inline const Foam::SurfaceReactionModel < @@ -63,4 +74,15 @@ Foam::ReactingMultiphaseCloud::surfaceReaction() const } +template +inline Foam::SurfaceReactionModel +< + Foam::ReactingMultiphaseCloud +>& +Foam::ReactingMultiphaseCloud::surfaceReaction() +{ + return surfaceReactionModel_(); +} + + // ************************************************************************* // diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C index 9d92ddffcd..9530707bb4 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C @@ -334,7 +334,7 @@ void Foam::ThermoCloud::evolve() template -void Foam::ThermoCloud::info() const +void Foam::ThermoCloud::info() { CloudType::info(); } diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H index cc71939f5c..c3c552472f 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H @@ -321,7 +321,7 @@ public: // Check //- Print cloud information - void info() const; + void info(); }; diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C index 740aa3f0b8..14450d6c27 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C @@ -369,7 +369,7 @@ void Foam::ReactingMultiphaseParcel::calc td.cloud().hsTrans()[cellI] += dm*HsEff(td, pc, T0, idG, idL, idS); - td.cloud().addToMassPhaseChange(dm); + td.cloud().phaseChange().addToPhaseChangeMass(dm); } return; @@ -520,7 +520,10 @@ void Foam::ReactingMultiphaseParcel::calcDevolatilisation scalar dMassTot = sum(dMassDV); - td.cloud().addToMassDevolatilisation(this->nParticle_*dMassTot); + td.cloud().devolatilisation().addToDevolatilisationMass + ( + this->nParticle_*dMassTot + ); Sh -= dMassTot*td.cloud().constProps().LDevol()/dt; @@ -608,7 +611,7 @@ void Foam::ReactingMultiphaseParcel::calcSurfaceReactions dMassSRCarrier ); - td.cloud().addToMassSurfaceReaction + td.cloud().surfaceReaction().addToSurfaceReactionMass ( this->nParticle_ *(sum(dMassSRGas) + sum(dMassSRLiquid) + sum(dMassSRSolid)) diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C index 68567ba0bc..88acc1a9af 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C @@ -385,7 +385,7 @@ void Foam::ReactingParcel::calc } td.cloud().UTrans()[cellI] += dm*U0; - td.cloud().addToMassPhaseChange(dm); + td.cloud().phaseChange().addToPhaseChangeMass(dm); } return; @@ -519,7 +519,7 @@ void Foam::ReactingParcel::calcPhaseChange const scalar dMassTot = sum(dMassPC); // Add to cumulative phase change mass - td.cloud().addToMassPhaseChange(this->nParticle_*dMassTot); + td.cloud().phaseChange().addToPhaseChangeMass(this->nParticle_*dMassTot); forAll(dMassPC, i) { diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C index d31ddd7c5e..b8409231ff 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C @@ -51,7 +51,7 @@ Foam::CloudFunctionObject::CloudFunctionObject const word& type ) : - SubModelBase(owner, dict, type, "") + SubModelBase(owner, dict, typeName, type, "") {} diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H index df17418c4b..b0818aa708 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H @@ -64,7 +64,7 @@ class CloudFunctionObject public: //- Runtime type information - TypeName("postProcessingModel"); + TypeName("cloudFunctionObject"); //- Declare runtime constructor selection table declareRunTimeSelectionTable diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.C index d0fbadc02c..259691002f 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.C @@ -42,7 +42,7 @@ Foam::CollisionModel::CollisionModel const word& type ) : - SubModelBase(owner, dict, type) + SubModelBase(owner, dict, typeName, type) {} diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.C index 35d73305d3..98b1d16075 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.C @@ -42,7 +42,7 @@ Foam::DispersionModel::DispersionModel const word& type ) : - SubModelBase(owner, dict, type) + SubModelBase(owner, dict, typeName, type) {} diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C index 28d211397e..abdce88750 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C @@ -31,76 +31,6 @@ using namespace Foam::constant::mathematical; // * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * // -template -void Foam::InjectionModel::readProps() -{ - if (!this->owner().solution().transient()) - { - return; - } - - IOobject propsDictHeader - ( - "injectionProperties", - this->owner().db().time().timeName(), - "uniform"/cloud::prefix/this->owner().name(), - this->owner().db(), - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE, - false - ); - - if (propsDictHeader.headerOk()) - { - const IOdictionary propsDict(propsDictHeader); - - propsDict.readIfPresent("massInjected", massInjected_); - propsDict.readIfPresent("nInjections", nInjections_); - propsDict.readIfPresent("parcelsAddedTotal", parcelsAddedTotal_); - propsDict.readIfPresent("timeStep0", timeStep0_); - } -} - - -template -void Foam::InjectionModel::writeProps() -{ - if (!this->owner().solution().transient()) - { - return; - } - - if (this->owner().db().time().outputTime()) - { - IOdictionary propsDict - ( - IOobject - ( - "injectionProperties", - this->owner().db().time().timeName(), - "uniform"/cloud::prefix/this->owner().name(), - this->owner().db(), - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ) - ); - - propsDict.add("massInjected", massInjected_); - propsDict.add("nInjections", nInjections_); - propsDict.add("parcelsAddedTotal", parcelsAddedTotal_); - propsDict.add("timeStep0", timeStep0_); - - propsDict.writeObject - ( - IOstream::ASCII, - IOstream::currentVersion, - this->owner().db().time().writeCompression() - ); - } -} - - template bool Foam::InjectionModel::validInjection(const label parcelI) { @@ -328,9 +258,6 @@ void Foam::InjectionModel::postInjectCheck // Increment number of injections nInjections_++; - - // Write current state to properties file - writeProps(); } @@ -343,16 +270,17 @@ Foam::InjectionModel::InjectionModel(CloudType& owner) SOI_(0.0), volumeTotal_(0.0), massTotal_(0.0), - massInjected_(0.0), - nInjections_(0), - parcelsAddedTotal_(0), + massInjected_(this->template getBaseProperty("massInjected")), + nInjections_(this->template getBaseProperty("nInjections")), + parcelsAddedTotal_ + ( + this->template getBaseProperty("parcelsAddedTotal") + ), parcelBasis_(pbNumber), nParticleFixed_(0.0), time0_(0.0), - timeStep0_(0.0) -{ - readProps(); -} + timeStep0_(this->template getBaseProperty("timeStep0")) +{} template @@ -363,17 +291,20 @@ Foam::InjectionModel::InjectionModel const word& type ) : - SubModelBase(owner, dict, type), + SubModelBase(owner, dict, typeName, type), SOI_(0.0), volumeTotal_(0.0), massTotal_(0.0), - massInjected_(0.0), - nInjections_(0), - parcelsAddedTotal_(0), + massInjected_(this->template getBaseProperty("massInjected")), + nInjections_(this->template getBaseProperty("nInjections")), + parcelsAddedTotal_ + ( + this->template getBaseProperty("parcelsAddedTotal") + ), parcelBasis_(pbNumber), nParticleFixed_(0.0), time0_(owner.db().time().value()), - timeStep0_(0.0) + timeStep0_(this->template getBaseProperty("timeStep0")) { // Provide some info // - also serves to initialise mesh dimensions - needed for parallel runs @@ -424,8 +355,6 @@ Foam::InjectionModel::InjectionModel )<< "parcelBasisType must be either 'number', 'mass' or 'fixed'" << nl << exit(FatalError); } - - readProps(); } @@ -803,10 +732,22 @@ bool Foam::InjectionModel::fullyDescribed() const template -void Foam::InjectionModel::info(Ostream& os) const +void Foam::InjectionModel::info(Ostream& os) { os << " Total number of parcels added = " << parcelsAddedTotal_ << nl << " Total mass introduced = " << massInjected_ << nl; + + if + ( + this->owner().solution().transient() + && this->owner().db().time().outputTime() + ) + { + this->setBaseProperty("massInjected", massInjected_); + this->setBaseProperty("nInjections", nInjections_); + this->setBaseProperty("parcelsAddedTotal", parcelsAddedTotal_); + this->setBaseProperty("timeStep0", timeStep0_); + } } diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H index 12a6e507c9..82426a9159 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H @@ -85,17 +85,6 @@ public: }; -private: - - // Private Member Functions - - //- Read injector properties from previous run (if applicable) - void readProps(); - - //- Write injector properties - void writeProps(); - - protected: // Protected data @@ -328,7 +317,7 @@ public: // I-O //- Write injection info to stream - virtual void info(Ostream& os) const; + virtual void info(Ostream& os); }; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C index 4ff52cf17b..345c34e27b 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C @@ -25,83 +25,6 @@ License #include "LocalInteraction.H" -// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // - -template -void Foam::LocalInteraction::readProps() -{ - if (!this->owner().solution().transient()) - { - return; - } - - IOobject propsDictHeader - ( - "localInteractionProperties", - this->owner().db().time().timeName(), - "uniform"/cloud::prefix/this->owner().name(), - this->owner().db(), - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE, - false - ); - - if (propsDictHeader.headerOk()) - { - const IOdictionary propsDict(propsDictHeader); - propsDict.readIfPresent("nEscape", nEscape0_); - propsDict.readIfPresent("massEscape", massEscape0_); - propsDict.readIfPresent("nStick", nStick0_); - propsDict.readIfPresent("massStick", massStick0_); - } -} - - -template -void Foam::LocalInteraction::writeProps -( - const labelList& nEscape, - const scalarList& massEscape, - const labelList& nStick, - const scalarList& massStick -) const -{ - if (!this->owner().solution().transient()) - { - return; - } - - if (this->owner().db().time().outputTime()) - { - IOdictionary propsDict - ( - IOobject - ( - "localInteractionProperties", - this->owner().db().time().timeName(), - "uniform"/cloud::prefix/this->owner().name(), - this->owner().db(), - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ) - ); - - propsDict.add("nEscape", nEscape); - propsDict.add("massEscape", massEscape); - propsDict.add("nStick", nStick); - propsDict.add("massStick", massStick); - - propsDict.writeObject - ( - IOstream::ASCII, - IOstream::currentVersion, - this->owner().db().time().writeCompression() - ); - } -} - - // * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * // template @@ -122,6 +45,12 @@ Foam::LocalInteraction::LocalInteraction nStick_(patchData_.size(), 0), massStick_(patchData_.size(), 0.0) { + // intialise starting counters + this->getModelProperty("nEscape", nEscape0_); + this->getModelProperty("massEscape", massEscape0_); + this->getModelProperty("nStick", nStick0_); + this->getModelProperty("massStick", massStick0_); + // check that interactions are valid/specified forAll(patchData_, patchI) { @@ -141,8 +70,6 @@ Foam::LocalInteraction::LocalInteraction << nl << exit(FatalError); } } - - readProps(); } @@ -255,7 +182,7 @@ bool Foam::LocalInteraction::correct "typename CloudType::parcelType&, " "const polyPatch&, " "bool&, " - "scalar&, " + "const scalar, " "const tetIndices&" ") const" ) << "Unknown interaction type " @@ -275,7 +202,7 @@ bool Foam::LocalInteraction::correct template -void Foam::LocalInteraction::info(Ostream& os) const +void Foam::LocalInteraction::info(Ostream& os) { labelList npe(nEscape_); Pstream::listCombineGather(npe, plusEqOp