Heat exchanger source model for compressible flows, in which the heat exchanger is defined as an energy source using a selection of cells. More...
Public Member Functions | |
TypeName ("effectivenessHeatExchangerSource") | |
Runtime type information. More... | |
effectivenessHeatExchangerSource (const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh) | |
Construct from components. More... | |
effectivenessHeatExchangerSource (const effectivenessHeatExchangerSource &)=delete | |
No copy construct. More... | |
void | operator= (const effectivenessHeatExchangerSource &)=delete |
No copy assignment. More... | |
virtual | ~effectivenessHeatExchangerSource ()=default |
Destructor. More... | |
virtual void | addSup (fvMatrix< scalar > &eqn, const label fieldi) |
Add explicit/implicit contribution to momentum equation. More... | |
virtual void | addSup (const volScalarField &rho, fvMatrix< scalar > &eqn, const label fieldi) |
virtual bool | read (const dictionary &dict) |
Read dictionary. More... | |
![]() | |
TypeName ("cellSetOption") | |
Runtime type information. More... | |
cellSetOption (const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh) | |
Construct from components. More... | |
virtual | ~cellSetOption ()=default |
Destructor. More... | |
scalar | timeStart () const noexcept |
Return const access to the time start. More... | |
scalar | duration () const noexcept |
Return const access to the duration. More... | |
bool | inTimeLimits (const scalar timeValue) const |
True if within time limits. More... | |
selectionModeType | selectionMode () const noexcept |
Return the cell selection mode. More... | |
bool | useSubMesh () const noexcept |
True if sub-selection should be used. More... | |
const word & | cellSetName () const noexcept |
scalar | V () const noexcept |
Return const access to the total cell volume. More... | |
const labelList & | cells () const noexcept |
Return const access to the cell selection. More... | |
scalar | timeStart (scalar val) noexcept |
Adjust the time start, return the old value. More... | |
scalar | duration (scalar val) noexcept |
Adjust the duration, return the old value. More... | |
virtual bool | isActive () |
Is the source active? More... | |
![]() | |
TypeName ("option") | |
Runtime type information. More... | |
declareRunTimeSelectionTable (autoPtr, option, dictionary,(const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh),(name, modelType, dict, mesh)) | |
option (const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh) | |
Construct from components. More... | |
autoPtr< option > | clone () const |
Return clone. More... | |
virtual | ~option ()=default |
Destructor. More... | |
const word & | name () const noexcept |
Return const access to the source name. More... | |
const fvMesh & | mesh () const noexcept |
Return const access to the mesh database. More... | |
const dictionary & | coeffs () const noexcept |
Return dictionary. More... | |
bool | active () const noexcept |
True if source is active. More... | |
void | setApplied (const label fieldi) |
Set the applied flag to true for field index fieldi. More... | |
bool | active (const bool on) noexcept |
Change source active flag, return previous value. More... | |
virtual label | applyToField (const word &fieldName) const |
Return index of field name if found in fieldNames list. More... | |
virtual void | checkApplied () const |
Check that the source has been applied. More... | |
virtual void | addSup (fvMatrix< vector > &eqn, const label fieldi) |
virtual void | addSup (fvMatrix< symmTensor > &eqn, const label fieldi) |
virtual void | addSup (fvMatrix< sphericalTensor > &eqn, const label fieldi) |
virtual void | addSup (fvMatrix< tensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &rho, fvMatrix< vector > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &rho, fvMatrix< symmTensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &rho, fvMatrix< sphericalTensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &rho, fvMatrix< tensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< scalar > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< vector > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< symmTensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< sphericalTensor > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< tensor > &eqn, const label fieldi) |
virtual void | constrain (fvMatrix< scalar > &eqn, const label fieldi) |
virtual void | constrain (fvMatrix< vector > &eqn, const label fieldi) |
virtual void | constrain (fvMatrix< sphericalTensor > &eqn, const label fieldi) |
virtual void | constrain (fvMatrix< symmTensor > &eqn, const label fieldi) |
virtual void | constrain (fvMatrix< tensor > &eqn, const label fieldi) |
virtual void | correct (volScalarField &field) |
virtual void | correct (volVectorField &field) |
virtual void | correct (volSphericalTensorField &field) |
virtual void | correct (volSymmTensorField &field) |
virtual void | correct (volTensorField &field) |
virtual void | postProcessSens (scalarField &sensField, const word &fieldName=word::null, const word &designVariablesName=word::null) |
virtual void | postProcessSens (vectorField &sensField, const word &fieldName=word::null, const word &designVariablesName=word::null) |
virtual void | postProcessSens (tensorField &sensField, const word &fieldName=word::null, const word &designVariablesName=word::null) |
virtual void | writeHeader (Ostream &) const |
Write the source header information. More... | |
virtual void | writeFooter (Ostream &) const |
Write the source footer information. More... | |
virtual void | writeData (Ostream &) const |
Write the source properties. More... | |
Protected Attributes | |
scalar | secondaryMassFlowRate_ |
Secondary flow mass rate [kg/s]. More... | |
scalar | secondaryInletT_ |
Inlet secondary temperature [K]. More... | |
scalar | primaryInletT_ |
Primary air temperature at the heat exchanger inlet [K]. More... | |
bool | userPrimaryInletT_ |
Flag to use a user-specified primary inlet temperature. More... | |
bool | targetQdotActive_ |
Flag to use target heat rejection. More... | |
scalar | targetQdot_ |
Target heat rejection. More... | |
label | targetQdotCalcInterval_ |
Target heat rejection calculation interval. More... | |
scalar | targetQdotRelax_ |
Target heat rejection temperature under-relaxation coefficient. More... | |
autoPtr< interpolation2DTable< scalar > > | eTable_ |
word | UName_ |
Name of velocity field; default = U. More... | |
word | TName_ |
Name of temperature field; default = T. More... | |
word | phiName_ |
Name of the flux. More... | |
word | faceZoneName_ |
Name of the faceZone at the heat exchange inlet. More... | |
labelList | faceId_ |
Local list of face IDs. More... | |
labelList | facePatchId_ |
Local list of patch ID per face. More... | |
labelList | faceSign_ |
List of +1/-1 representing face flip map (1 use as is, -1 negate) More... | |
![]() | |
scalar | timeStart_ |
Start time of fvOption. More... | |
scalar | duration_ |
Duration of fvOption execution starting from timeStart. More... | |
selectionModeType | selectionMode_ |
Cell selection mode. More... | |
word | cellSetName_ |
Name of set/zone for "cellSet" and "cellZone" selectionMode. More... | |
List< point > | points_ |
List of points for "points" selectionMode. More... | |
labelList | cells_ |
Set of cells to apply source to. More... | |
scalar | V_ |
Sum of cell volumes. More... | |
![]() | |
const word | name_ |
Source name. More... | |
const word | modelType_ |
Model type. More... | |
const fvMesh & | mesh_ |
Reference to the mesh database. More... | |
dictionary | dict_ |
Top level source dictionary. More... | |
dictionary | coeffs_ |
Dictionary containing source coefficients. More... | |
wordList | fieldNames_ |
Field names to apply source to - populated by derived models. More... | |
List< bool > | applied_ |
Applied flag list - corresponds to each fieldNames_ entry. More... | |
bool | active_ |
Source active flag. More... | |
Additional Inherited Members | |
![]() | |
enum | selectionModeType { smAll, smCellSet, smCellZone, smPoints } |
Enumeration for selection mode types. More... | |
![]() | |
static autoPtr< option > | New (const word &name, const dictionary &dict, const fvMesh &mesh) |
Return a reference to the selected fvOption model. More... | |
![]() | |
bool | log |
Switch write log to Info. More... | |
![]() | |
static const Enum< selectionModeType > | selectionModeTypeNames_ |
List of selection mode type names. More... | |
![]() | |
void | setSelection (const dictionary &dict) |
Set cell selection name or points selection from dictionary input. More... | |
void | setCellSelection () |
Set the cell selection based on user input selection mode. More... | |
void | setVol () |
Recalculate the volume. More... | |
![]() | |
void | resetApplied () |
Resize/reset applied flag list for all fieldNames_ entries. More... | |
Heat exchanger source model for compressible flows, in which the heat exchanger is defined as an energy source using a selection of cells.
The total heat exchange source is given by:
\[ Q_t = e(\phi, \dot{m}_2) (T_2 - T_1) \phi c_p \]
where:
\( Q_t \) | = | total heat source |
\( e(\phi,\dot{m}_2) \) | = | effectivenes table |
\( \phi \) | = | net mass flux entering heat exchanger [kg/s] |
\( \dot{m}_2 \) | = | secondary mass flow rate [kg/s] |
\( T_1 \) | = | primary inlet temperature [K] |
\( T_2 \) | = | secondary inlet temperature [K] |
\( c_p \) | = | specific heat capacity [J/kg/K] |
The distribution inside the heat exchanger is given by:
\[ Q_c = \frac{V_c |U_c| (T_c - T_{ref})}{\sum(V_c |U_c| (T_c - T_{ref}))} \]
where:
\( Q_c \) | = | source for cell |
\( V_c \) | = | volume of the cell [m3] |
\( U_c \) | = | local cell velocity [m/s] |
\( T_c \) | = | local call temperature [K] |
\( T_{ref} \) | = | min or max(T) in cell zone depending on the sign of Q_t [K] |
Sources applied to either of the below, if exist:
e | Internal energy [m2/s2] h | Enthalphy [m2/s2]
Required fields:
T | Temperature [K] U | Velocity [m/s] phi | Mass flux [kg/s]
constant/fvOptions
: effectivenessHeatExchangerSource1 { // Mandatory entries (unmodifiable) type effectivenessHeatExchangerSource; // Mandatory entries (runtime modifiable) faceZone <faceZoneName>; secondaryMassFlowRate 1.0; secondaryInletT 336; outOfBounds clamp; file "effTable"; // Optional entries (runtime modifiable) primaryInletT 293; targetQdot 1500; U <Uname>; T <Tname>; phi <phiName>; // Conditional optional entries (runtime modifiable) // when the entry "targetQdot" is present targetQdotCalcInterval 1; targetQdotRelax 1.0; // Mandatory/Optional (inherited) entries ... }
where the entries mean:
Property | Description | Type | Reqd | Dflt |
---|---|---|---|---|
type | Type name: effectivenessHeatExchangerSource | word | yes | - |
secondaryMassFlowRate | Secondary flow mass rate [kg/s] | scalar | yes | - |
secondaryInletT | Inlet secondary temperature [K] | scalar | yes | - |
faceZone | Name of the faceZone at the heat exchange inlet | word | yes | - |
file | 2D look up table efficiency = function of primary and secondary mass flow rates [kg/s] | file | yes | - |
primaryInletT | Primary air temperature at the heat exchanger inlet | scalar | no | - |
targetQdot | Target heat rejection | scalar | no | - |
targetQdotCalcInterval | Target heat rejection calculation interval | label | no | - |
targetQdotRelax | Target heat rejection temperature under-relaxation coefficient | scalar | no | - |
U | Name of operand velocity field | word | no | U |
T | Name of operand temperature field | word | no | T |
phi | Name of operand flux field | word | no | phi |
The inherited entries are elaborated in:
The effectiveness table is described in terms of the primary and secondary mass flow rates. For example, the table:
secondary MFR | 0.1 0.2 0.3 -----+----------------- 0.02 | A B C primary MFR 0.04 | D E F 0.06 | G H I
is specified by the following:
( ( 0.02 ( (0.1 A) (0.2 B) (0.3 C) ) ) ( 0.04 ( (0.1 D) (0.2 E) (0.3 F) ) ) ( 0.06 ( (0.1 G) (0.2 H) (0.3 I) ) ) );
file
should have the same units as the secondary mass flow rate and kg/s for phi
.faceZone
is the faces at the inlet of the cellZone
, it needs to be created with flip map flags. It is used to integrate the net mass flow rate into the heat exchanger.primaryInletT
sets the primary inlet temperature. If not set, the flux-averaged temperature is used.Definition at line 360 of file effectivenessHeatExchangerSource.H.
effectivenessHeatExchangerSource | ( | const word & | name, |
const word & | modelType, | ||
const dictionary & | dict, | ||
const fvMesh & | mesh | ||
) |
Construct from components.
Definition at line 131 of file effectivenessHeatExchangerSource.C.
References dict, dictionary::dictName(), Foam::read(), and option::resetApplied().
|
delete |
No copy construct.
|
virtualdefault |
Destructor.
TypeName | ( | "effectivenessHeatExchangerSource" | ) |
Runtime type information.
|
delete |
No copy assignment.
|
inlinevirtual |
Add explicit/implicit contribution to momentum equation.
Reimplemented from option.
Definition at line 464 of file effectivenessHeatExchangerSource.H.
References NotImplemented.
|
virtual |
Add explicit/implicit contribution to compressible momentum equation
Reimplemented from option.
Definition at line 176 of file effectivenessHeatExchangerSource.C.
References Foam::constant::atomic::alpha, Foam::decrIndent(), dictionary::dictName(), Foam::endl(), forAll, Foam::gMax(), Foam::gMin(), Foam::incrIndent(), Foam::indent(), Foam::Info, Foam::fvc::interpolate(), Foam::mag(), Foam::max(), Foam::name(), Foam::nl, phi, Foam::reduce(), fvMatrix< Type >::source(), Foam::T(), Foam::type(), U, and Foam::Zero.
|
virtual |
Read dictionary.
Reimplemented from cellSetOption.
Definition at line 307 of file effectivenessHeatExchangerSource.C.
References dict, Foam::endl(), Foam::indent(), Foam::Info, Foam::name(), Foam::nl, cellSetOption::read(), and Foam::type().
|
protected |
Secondary flow mass rate [kg/s].
Definition at line 369 of file effectivenessHeatExchangerSource.H.
|
protected |
Inlet secondary temperature [K].
Definition at line 372 of file effectivenessHeatExchangerSource.H.
|
protected |
Primary air temperature at the heat exchanger inlet [K].
Definition at line 375 of file effectivenessHeatExchangerSource.H.
|
protected |
Flag to use a user-specified primary inlet temperature.
Definition at line 378 of file effectivenessHeatExchangerSource.H.
|
protected |
Flag to use target heat rejection.
Definition at line 381 of file effectivenessHeatExchangerSource.H.
|
protected |
Target heat rejection.
Definition at line 384 of file effectivenessHeatExchangerSource.H.
|
protected |
Target heat rejection calculation interval.
Definition at line 387 of file effectivenessHeatExchangerSource.H.
|
protected |
Target heat rejection temperature under-relaxation coefficient.
Definition at line 390 of file effectivenessHeatExchangerSource.H.
|
protected |
2D look up table efficiency = function of primary and secondary mass flow rates [kg/s]
Definition at line 394 of file effectivenessHeatExchangerSource.H.
|
protected |
Name of velocity field; default = U.
Definition at line 397 of file effectivenessHeatExchangerSource.H.
|
protected |
Name of temperature field; default = T.
Definition at line 400 of file effectivenessHeatExchangerSource.H.
|
protected |
Name of the flux.
Definition at line 403 of file effectivenessHeatExchangerSource.H.
|
protected |
Name of the faceZone at the heat exchange inlet.
Definition at line 406 of file effectivenessHeatExchangerSource.H.
|
protected |
Local list of face IDs.
Definition at line 409 of file effectivenessHeatExchangerSource.H.
|
protected |
Local list of patch ID per face.
Definition at line 412 of file effectivenessHeatExchangerSource.H.
|
protected |
List of +1/-1 representing face flip map (1 use as is, -1 negate)
Definition at line 415 of file effectivenessHeatExchangerSource.H.