From 3ab7d6a0884a4fd69ad4527bd6dec830c0e90fd5 Mon Sep 17 00:00:00 2001 From: Kutalmis Bercin Date: Mon, 9 Dec 2024 09:45:17 +0000 Subject: [PATCH] ENH: outletMappedUniformInletHeatAddition: add Function1-type Q input --- ...ppedUniformInletHeatAdditionFvPatchField.C | 19 ++++++++++++------- ...ppedUniformInletHeatAdditionFvPatchField.H | 7 ++++--- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/thermoTools/derivedFvPatchFields/outletMappedUniformInletHeatAddition/outletMappedUniformInletHeatAdditionFvPatchField.C b/src/thermoTools/derivedFvPatchFields/outletMappedUniformInletHeatAddition/outletMappedUniformInletHeatAdditionFvPatchField.C index 900c93ad25..05d0f08b11 100644 --- a/src/thermoTools/derivedFvPatchFields/outletMappedUniformInletHeatAddition/outletMappedUniformInletHeatAdditionFvPatchField.C +++ b/src/thermoTools/derivedFvPatchFields/outletMappedUniformInletHeatAddition/outletMappedUniformInletHeatAdditionFvPatchField.C @@ -41,9 +41,9 @@ outletMappedUniformInletHeatAdditionFvPatchField ) : fixedValueFvPatchScalarField(p, iF), + Qptr_(nullptr), outletPatchName_(), phiName_("phi"), - Q_(0), TMin_(0), TMax_(5000) {} @@ -59,9 +59,9 @@ outletMappedUniformInletHeatAdditionFvPatchField ) : fixedValueFvPatchScalarField(ptf, p, iF, mapper), + Qptr_(ptf.Qptr_.clone()), outletPatchName_(ptf.outletPatchName_), phiName_(ptf.phiName_), - Q_(ptf.Q_), TMin_(ptf.TMin_), TMax_(ptf.TMax_) {} @@ -76,9 +76,9 @@ outletMappedUniformInletHeatAdditionFvPatchField ) : fixedValueFvPatchScalarField(p, iF, dict), + Qptr_(Function1::New("Q", dict, &db())), outletPatchName_(dict.get("outletPatch")), phiName_(dict.getOrDefault("phi", "phi")), - Q_(dict.get("Q")), TMin_(dict.getOrDefault("TMin", 0)), TMax_(dict.getOrDefault("TMax", 5000)) {} @@ -92,9 +92,9 @@ outletMappedUniformInletHeatAdditionFvPatchField ) : fixedValueFvPatchScalarField(ptf), + Qptr_(ptf.Qptr_.clone()), outletPatchName_(ptf.outletPatchName_), phiName_(ptf.phiName_), - Q_(ptf.Q_), TMin_(ptf.TMin_), TMax_(ptf.TMax_) {} @@ -109,9 +109,9 @@ outletMappedUniformInletHeatAdditionFvPatchField ) : fixedValueFvPatchScalarField(ptf, iF), + Qptr_(ptf.Qptr_.clone()), outletPatchName_(ptf.outletPatchName_), phiName_(ptf.phiName_), - Q_(ptf.Q_), TMin_(ptf.TMin_), TMax_(ptf.TMax_) {} @@ -166,11 +166,14 @@ void Foam::outletMappedUniformInletHeatAdditionFvPatchField::updateCoeffs() scalar averageOutletField = gSum(outletPatchPhi*outletPatchField)/sumOutletPatchPhi; + // Calculate Q as a function of average outlet temperature + const scalar Q = Qptr_->value(averageOutletField); + const scalarField Cpf(thermo.Cp(pp, pT, outletPatchID)); scalar totalPhiCp = gSum(outletPatchPhi)*gAverage(Cpf); - operator==(clamp(averageOutletField + Q_/totalPhiCp, TMin_, TMax_)); + operator==(clamp(averageOutletField + Q/totalPhiCp, TMin_, TMax_)); } else { @@ -193,7 +196,9 @@ void Foam::outletMappedUniformInletHeatAdditionFvPatchField::write fvPatchField::write(os); os.writeEntry("outletPatch", outletPatchName_); os.writeEntryIfDifferent("phi", "phi", phiName_); - os.writeEntry("Q", Q_); + + Qptr_->writeData(os); + os.writeEntry("TMin", TMin_); os.writeEntry("TMax", TMax_); diff --git a/src/thermoTools/derivedFvPatchFields/outletMappedUniformInletHeatAddition/outletMappedUniformInletHeatAdditionFvPatchField.H b/src/thermoTools/derivedFvPatchFields/outletMappedUniformInletHeatAddition/outletMappedUniformInletHeatAdditionFvPatchField.H index 844000f904..d0e9e15e83 100644 --- a/src/thermoTools/derivedFvPatchFields/outletMappedUniformInletHeatAddition/outletMappedUniformInletHeatAdditionFvPatchField.H +++ b/src/thermoTools/derivedFvPatchFields/outletMappedUniformInletHeatAddition/outletMappedUniformInletHeatAdditionFvPatchField.H @@ -72,6 +72,7 @@ SourceFiles #include "fixedValueFvPatchFields.H" #include "fvPatchFields.H" +#include "Function1.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -88,15 +89,15 @@ class outletMappedUniformInletHeatAdditionFvPatchField { // Private data + //- Input energy + autoPtr> Qptr_; + //- Name of the outlet patch to be mapped word outletPatchName_; //- Name of the flux transporting the field word phiName_; - //- Input energy - scalar Q_; - //- Minimum Temperature Limit scalar TMin_;