diff --git a/src/fvOptions/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.C b/src/fvOptions/sources/derived/interRegionHeatTransferModel/constantHeatTransfer/constantHeatTransfer.C index 1a020412389a85f10e3ed3f18e0671def9f8a18e..1cafec08c466b8e4104078be0c4e9865a191c853 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 52facea986ebf95557c30b6f1cb66e91163a992d..ceb4aaf15a6aa3061de5b7c4d7717e7f13719d41 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 7cfde633e1c39fb48e3062cd793475979ab5fc35..31a684afb9681ff041c8d2846e3e210519204e0e 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 dd7104de13f4b641b35551fa0a2355dc39b25aa7..736bd094fb22d94c6236fedc6e7e37313f796524 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 185926f907067228e7d02b07582c837f40406da0..fd49c31963bdc1fdbd41b990137a77694e4bd6e8 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 4656560eac53f8967a064f4f1d9ea308b155a742..8feb9d68df8ad0f3c2046460af29074757be1d7b 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 fc72cabe3316e22a755196778982d6d02aeac12a..cf96fa0433e59eacc29da07a3d32a5dd1d83577e 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 8180f63a3413030d648987d578134bc2ed18be8e..57e42be81156b377c4303475563d85fccbba22eb 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