From 83dae500ac374c2c83a4eb12827773ad8eee3cab Mon Sep 17 00:00:00 2001 From: andy <andy> Date: Thu, 10 Jan 2013 09:42:46 +0000 Subject: [PATCH] ENH: Removed calculation order dependancy --- .../constantHeatTransfer.C | 14 ++------- .../constantHeatTransfer.H | 2 +- .../interRegionHeatTransferModel.C | 30 ++++++++++++++----- .../interRegionHeatTransferModel.H | 18 ++++++----- .../tabulatedHeatTransfer.C | 5 +--- .../tabulatedHeatTransfer.H | 2 +- .../variableHeatTransfer.C | 5 +--- .../variableHeatTransfer.H | 2 +- 8 files changed, 41 insertions(+), 37 deletions(-) diff --git a/src/fvOptions/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.C b/src/fvOptions/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.C index 1a020412389..1cafec08c46 100644 --- a/src/fvOptions/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.C +++ b/src/fvOptions/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.C @@ -91,14 +91,7 @@ Foam::fv::constantHeatTransfer::constantHeatTransfer ) ); - const DimensionedField<scalar, volMesh>& htcConsti = - htcConst_().dimensionedInternalField(); - const DimensionedField<scalar, volMesh>& AoVi = - AoV_().dimensionedInternalField(); - dimensionedScalar interVol("V", dimVolume, meshInterp().V()); - - htc_.dimensionedInternalField() = htcConsti*AoVi; - htc_.correctBoundaryConditions(); + htc_ = htcConst_()*AoV_(); } } @@ -111,10 +104,9 @@ Foam::fv::constantHeatTransfer::~constantHeatTransfer() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -const Foam::tmp<Foam::volScalarField> -Foam::fv::constantHeatTransfer::calculateHtc() +void Foam::fv::constantHeatTransfer::calculateHtc() { - return htc_; + // do nothing } diff --git a/src/fvOptions/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.H b/src/fvOptions/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.H index 52facea986e..ceb4aaf15a6 100644 --- a/src/fvOptions/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.H +++ b/src/fvOptions/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.H @@ -87,7 +87,7 @@ public: // Public Functions //- Calculate the heat transfer coefficient - virtual const tmp<volScalarField> calculateHtc(); + virtual void calculateHtc(); // I-O diff --git a/src/fvOptions/sources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.C b/src/fvOptions/sources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.C index 7cfde633e1c..31a684afb96 100644 --- a/src/fvOptions/sources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.C +++ b/src/fvOptions/sources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.C @@ -41,7 +41,7 @@ namespace fv } -// * * * * * * * * * * * * Private member functions * * * * * * * * * * * // +// * * * * * * * * * * * * Protected member functions * * * * * * * * * * * // void Foam::fv::interRegionHeatTransferModel::setNbrModel() { @@ -71,7 +71,7 @@ void Foam::fv::interRegionHeatTransferModel::setNbrModel() if (!nbrModelFound) { - FatalErrorIn("interRegionHeatTransferModel::check()") + FatalErrorIn("interRegionHeatTransferModel::setNbrModel()") << "Neighbour model not found" << nbrModelName_ << " in region " << nbrMesh.name() << nl << exit(FatalError); @@ -81,6 +81,24 @@ void Foam::fv::interRegionHeatTransferModel::setNbrModel() } +void Foam::fv::interRegionHeatTransferModel::correct() +{ + if (master_) + { + if (mesh_.time().timeIndex() != timeIndex_) + { + calculateHtc(); + timeIndex_ = mesh_.time().timeIndex(); + } + } + else + { + nbrModel().correct(); + interpolate(nbrModel().htc(), htc_); + } +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::fv::interRegionHeatTransferModel::interRegionHeatTransferModel @@ -94,6 +112,7 @@ Foam::fv::interRegionHeatTransferModel::interRegionHeatTransferModel option(name, modelType, dict, mesh), nbrModel_(NULL), firstIter_(true), + timeIndex_(-1), htc_ ( IOobject @@ -143,6 +162,8 @@ void Foam::fv::interRegionHeatTransferModel::addSup { setNbrModel(); + correct(); + const volScalarField& h = eqn.psi(); const volScalarField& T = mesh_.lookupObject<volScalarField>(TName_); @@ -172,11 +193,6 @@ void Foam::fv::interRegionHeatTransferModel::addSup interpolate(Tnbr, Tmapped.internalField()); - if (!master_) - { - interpolate(nbrModel().calculateHtc()(), htc_); - } - if (debug) { Info<< "Volumetric integral of htc: " diff --git a/src/fvOptions/sources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.H b/src/fvOptions/sources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.H index dd7104de13f..736bd094fb2 100644 --- a/src/fvOptions/sources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.H +++ b/src/fvOptions/sources/derived/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.H @@ -68,19 +68,15 @@ private: //- First iteration bool firstIter_; - - // Private members - - //- Set the neighbour interRegionHeatTransferModel - void setNbrModel(); + //- Time index - used for updating htc + label timeIndex_; protected: // Protected data - //- Heat transfer coefficient [W/m2/k] by area/volume [1/m] - // registered on the master mesh + //- Heat transfer coefficient [W/m2/k] times area/volume [1/m] volScalarField htc_; //- Flag to activate semi-implicit coupling @@ -95,6 +91,12 @@ protected: // Protected member functions + //- Set the neighbour interRegionHeatTransferModel + void setNbrModel(); + + //- Correct to calculate the inter-region heat transfer coefficient + void correct(); + //- Interpolate field with nbrModel specified template<class Type> tmp<Field<Type> > interpolate @@ -168,7 +170,7 @@ public: virtual void addSup(fvMatrix<scalar>& eqn, const label fieldI); //- Calculate heat transfer coefficient - virtual const tmp<volScalarField> calculateHtc() = 0; + virtual void calculateHtc() = 0; // I-O diff --git a/src/fvOptions/sources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.C b/src/fvOptions/sources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.C index 185926f9070..fd49c31963b 100644 --- a/src/fvOptions/sources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.C +++ b/src/fvOptions/sources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.C @@ -109,8 +109,7 @@ Foam::fv::tabulatedHeatTransfer::~tabulatedHeatTransfer() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -const Foam::tmp<Foam::volScalarField> -Foam::fv::tabulatedHeatTransfer::calculateHtc() +void Foam::fv::tabulatedHeatTransfer::calculateHtc() { const fvMesh& nbrMesh = mesh_.time().lookupObject<fvMesh>(nbrRegionName()); @@ -131,8 +130,6 @@ Foam::fv::tabulatedHeatTransfer::calculateHtc() } htcc = htcc*AoV(); - - return htc_; } diff --git a/src/fvOptions/sources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.H b/src/fvOptions/sources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.H index 4656560eac5..8feb9d68df8 100644 --- a/src/fvOptions/sources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.H +++ b/src/fvOptions/sources/derived/interRegionHeatTransferModel/tabulatedHeatTransfer/tabulatedHeatTransfer.H @@ -104,7 +104,7 @@ public: // Public Functions //- Calculate the heat transfer coefficient - virtual const tmp<volScalarField> calculateHtc(); + virtual void calculateHtc(); // I-O diff --git a/src/fvOptions/sources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.C b/src/fvOptions/sources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.C index fc72cabe331..cf96fa0433e 100644 --- a/src/fvOptions/sources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.C +++ b/src/fvOptions/sources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.C @@ -97,8 +97,7 @@ Foam::fv::variableHeatTransfer::~variableHeatTransfer() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -const Foam::tmp<Foam::volScalarField> -Foam::fv::variableHeatTransfer::calculateHtc() +void Foam::fv::variableHeatTransfer::calculateHtc() { const fvMesh& nbrMesh = mesh_.time().lookupObject<fvMesh>(nbrRegionName()); @@ -121,8 +120,6 @@ Foam::fv::variableHeatTransfer::calculateHtc() const scalarField htcNbrMapped(interpolate(htcNbr)); htc_.internalField() = htcNbrMapped*AoV_; - - return htc_; } diff --git a/src/fvOptions/sources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.H b/src/fvOptions/sources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.H index 8180f63a341..57e42be8115 100644 --- a/src/fvOptions/sources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.H +++ b/src/fvOptions/sources/derived/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.H @@ -108,7 +108,7 @@ public: // Public Functions //- Calculate the heat transfer coefficient - virtual const tmp<volScalarField> calculateHtc(); + virtual void calculateHtc(); // I-O -- GitLab