/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2015-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see . Class Foam::fv::tabulatedNTUHeatTransfer Group grpFvOptionsSources Description Applies a tabulated heat transfer model for inter-region heat exchanges. The heat flux is calculated based on the Number of Thermal Units (NTU). A 2-D table of NTU as functions of the primary and secondary mass flow rates is required. The exchanger geometry can be specified using either: - \c calculated: - inlet area of each region and core volume determined by interrogating mesh patches, and mesh-to-mesh interpolation volume - calculated core volume can be partially blocked by specifying a \c coreBlockageRatio [0-1] entry - \c user: - inlet area of each region provided by the user - core volume automatically calculated by the mesh-to-mesh interpolation volume if not provided by user Heat transfer coefficient calculated by: \f[ htc = C_{min} \frac{NTU}{V_{core}} \f] Where \f$ C_{min} \f$ is given by: \f[ C_{min} = min \left(Cp_1 \dot{m}_1, Cp_2 \dot{m}_2 \right) \f] Usage Minimal example by using \c constant/fvOptions: \verbatim tabulatedNTUHeatTransfer1 { // Mandatory entries (unmodifiable) type tabulatedNTUHeatTransfer; // Mandatory entries (runtime modifiable) geometryMode ; outOfBounds clamp; file "ntuTable"; // Optional entries (runtime modifiable) U ; Unbr ; rho ; rhoNbr ; // Conditional mandatory entries (runtime modifiable) // when geometryMode=user Ain 0.01728; AinNbr 0.3456; // when geometryMode=calculated inletPatch inlet_HWK; inletPatchNbr inlet_air; inletBlockageRatio 0.10; inletBlockageRatioNbr 0.04; coreBlockageRatio 0; // Conditional optional entries (runtime modifiable) // when geometryMode=user Vcore 0.01244; // Mandatory/Optional (inherited) entries ... } \endverbatim where the entries mean: \table Property | Description | Type | Reqd | Dflt type | Type name: tabulatedNTUHeatTransfer | word | yes | - geometryMode | Geometry mode type | word | yes | - file | Heat transfer coefficient table | interpolate2DTable | yes | - U | Name of operand velocity field | word | no | U Unbr | Name of operand neighbour velocity field | word | no | U Ain | Inlet area [m2] | scalar | cndtnl | - AinNbr | Neighbour region inlet area [m2] | scalar | cndtnl | - Vcore | Heat exchanger core volume | scalar | cndtnl | - inletPatch | Name of inlet patch | word | cndtnl | - inletNbrPatch | Name of inlet patch neighbour | word | cndtnl | - inletBlockageRatio | Inlet patch blockage ratio [0, 1] | scalar | cndtnl | - inletBlockageRatioNbr | Inlet neighbour patch blockage ratio [0, 1] | scalar | cndtnl | - coreBlockageRatio | Core volume blockage ratio [0, 1] | scalar | cndtnl | - \endtable The inherited entries are elaborated in: - \link interRegionHeatTransfer.H \endlink - \link interpolate2DTable.H \endlink Options for the \c geometryMode entry: \verbatim calculated | Use settings computed internally user | Use settings provided by the user \endverbatim Example usage: \verbatim coolerToAir { type tabulatedNTUHeatTransfer; active yes; tabulatedNTUHeatTransferCoeffs { interpolationMethod cellVolumeWeight; nbrRegion air; master true; fields (h); outOfBounds clamp; file "ntuTable"; nbrModel airToCooler; semiImplicit no; geometryMode user; Ain 0.01728; AinNbr 0.3456; Vcore 0.01244; // Optional // geometryMode calculated; // inletPatch inlet_HWK; // inletPatchNbr inlet_air; // inletBlockageRatio 0.10; // inletBlockageRatioNbr 0.04; // coreBlockageRatio 0; } } \endverbatim See also - Foam::fv::interRegionHeatTransferModel - Foam::fv::constantHeatTransfer - Foam::fv::tabulatedHeatTransfer - Foam::fv::variableHeatTransfer SourceFiles tabulatedNTUHeatTransfer.C \*---------------------------------------------------------------------------*/ #ifndef tabulatedNTUHeatTransfer_H #define tabulatedNTUHeatTransfer_H #include "interRegionHeatTransferModel.H" #include "autoPtr.H" #include "interpolation2DTable.H" #include "Enum.H" #include "basicThermo.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { namespace fv { /*---------------------------------------------------------------------------*\ Class tabulatedNTUHeatTransfer Declaration \*---------------------------------------------------------------------------*/ class tabulatedNTUHeatTransfer : public interRegionHeatTransferModel { public: // Public Enumerations //- Options for the geometry mode type enum geometryModeType { gmCalculated, gmUser }; //- Names for geometryModeType static const Enum geometryModelNames_; private: // Private Data //- Name of operand velocity field word UName_; //- Name of operand neighbour velocity field word UNbrName_; //- Name of operand density field word rhoName_; //- Name of operand neighbour density field word rhoNbrName_; //- Pointer to 2-D look-up table of NTU f(mDot1, mDot2) autoPtr> ntuTable_; //- Geometry input mode geometryModeType geometryMode_; //- Inlet area [m2] scalar Ain_; //- Neighbour region inlet area [m2] scalar AinNbr_; //- Heat exchanger core volume scalar Vcore_; // Private Member Functions //- NTU table helper const interpolation2DTable& ntuTable(); //- Thermophysical properties helper const basicThermo& thermo(const fvMesh& mesh) const; //- Initialise geometry void initialiseGeometry(); public: //- Runtime type information TypeName("tabulatedNTUHeatTransfer"); // Constructors //- Construct from components tabulatedNTUHeatTransfer ( const word& name, const word& modelType, const dictionary& dict, const fvMesh& mesh ); //- No copy construct tabulatedNTUHeatTransfer(const tabulatedNTUHeatTransfer&) = delete; //- No copy assignment void operator=(const tabulatedNTUHeatTransfer&) = delete; //- Destructor virtual ~tabulatedNTUHeatTransfer() = default; // Public Functions //- Calculate the heat transfer coefficient virtual void calculateHtc(); //- Read dictionary virtual bool read(const dictionary& dict); }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace fv } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* //