Heat exchanger source model for compressible flows, where the heat exchanger is modelled 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... | |
Public Member Functions inherited from cellSetOption | |
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 wordRe & | zoneName () 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... | |
virtual bool | read (const dictionary &dict) |
Read source dictionary. More... | |
const word & | cellSetName () const noexcept |
Public Member Functions inherited from option | |
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 bool | isActive () |
Is the source active? 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< scalar > &eqn, const label fieldi) |
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< scalar > &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... | |
virtual bool | read (const dictionary &dict) |
Read source dictionary. More... | |
Public Member Functions inherited from writeFile | |
writeFile (const objectRegistry &obr, const fileName &prefix, const word &name="undefined", const bool writeToFile=true) | |
Construct from objectRegistry, prefix, fileName. More... | |
writeFile (const objectRegistry &obr, const fileName &prefix, const word &name, const dictionary &dict, const bool writeToFile=true) | |
writeFile (const writeFile &wf) | |
Construct copy. More... | |
virtual | ~writeFile ()=default |
Destructor. More... | |
virtual bool | read (const dictionary &dict) |
Read. More... | |
virtual OFstream & | file () |
Return access to the file (if only 1) More... | |
virtual bool | writeToFile () const |
Flag to allow writing to file. More... | |
virtual bool | canWriteHeader () const |
Flag to allow writing the header. More... | |
virtual label | charWidth () const |
Return width of character stream output. More... | |
virtual void | writeCommented (Ostream &os, const string &str) const |
Write a commented string to stream. More... | |
virtual void | writeTabbed (Ostream &os, const string &str) const |
Write a tabbed string to stream. More... | |
virtual void | writeHeader (Ostream &os, const string &str) const |
Write a commented header to stream. More... | |
virtual void | writeCurrentTime (Ostream &os) const |
Write the current time to stream. More... | |
virtual void | writeBreak (Ostream &os) const |
Write a break marker to the stream. More... | |
template<class Type > | |
void | writeHeaderValue (Ostream &os, const string &property, const Type &value) const |
Write a (commented) header property and value pair. More... | |
template<class Type > | |
void | writeValue (Ostream &os, const Type &val) const |
Write a given value to stream with the space delimiter. More... | |
Additional Inherited Members | |
Public Types inherited from cellSetOption | |
enum | selectionModeType { smAll , smCellSet , smCellZone , smPoints , smGeometric } |
Enumeration for selection mode types. More... | |
Static Public Member Functions inherited from option | |
static autoPtr< option > | New (const word &name, const dictionary &dict, const fvMesh &mesh) |
Return a reference to the selected fvOption model. More... | |
Public Attributes inherited from option | |
bool | log |
Switch write log to Info. More... | |
Static Public Attributes inherited from cellSetOption | |
static const Enum< selectionModeType > | selectionModeTypeNames_ |
List of selection mode type names. More... | |
Static Public Attributes inherited from writeFile | |
static label | addChars = 8 |
Additional characters for writing. More... | |
Protected Member Functions inherited from cellSetOption | |
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... | |
Protected Member Functions inherited from option | |
void | resetApplied () |
Resize/reset applied flag list for all fieldNames_ entries. More... | |
Protected Member Functions inherited from writeFile | |
void | initStream (Ostream &os) const |
Initialise the output stream for writing. More... | |
fileName | baseFileDir () const |
Return the base directory for output. More... | |
fileName | baseTimeDir () const |
Return the base directory for the current time value. More... | |
virtual autoPtr< OFstream > | createFile (const word &name, scalar timeValue) const |
Return autoPtr to a new file for a given time. More... | |
virtual autoPtr< OFstream > | createFile (const word &name) const |
Return autoPtr to a new file using the simulation start time. More... | |
virtual void | resetFile (const word &name) |
Reset internal file pointer to new file with new name. More... | |
Omanip< int > | valueWidth (const label offset=0) const |
Return the value width when writing to stream with optional offset. More... | |
void | operator= (const writeFile &)=delete |
No copy assignment. More... | |
Protected Attributes inherited from cellSetOption | |
scalar | timeStart_ |
Start time of fvOption. More... | |
scalar | duration_ |
Duration of fvOption execution starting from timeStart. More... | |
selectionModeType | selectionMode_ |
Cell selection mode. More... | |
wordRe | zoneName_ |
Name of set/zone for "cellSet" and "cellZone" selectionMode. More... | |
List< point > | points_ |
List of points for "points" selectionMode. More... | |
dictionary | geometricSelection_ |
Dictionary entries for "geometric" (topoSetCellSource) selection. More... | |
labelList | cells_ |
Set of cells to apply source to. More... | |
scalar | V_ |
Sum of cell volumes. More... | |
Protected Attributes inherited from option | |
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... | |
Protected Attributes inherited from writeFile | |
const objectRegistry & | fileObr_ |
Reference to the region objectRegistry. More... | |
const fileName | prefix_ |
Prefix. More... | |
word | fileName_ |
Name of file. More... | |
autoPtr< OFstream > | filePtr_ |
File pointer. More... | |
label | writePrecision_ |
Write precision. More... | |
bool | writeToFile_ |
Flag to enable/disable writing to file. More... | |
bool | updateHeader_ |
bool | writtenHeader_ |
Flag to identify whether the header has been written. More... | |
bool | useUserTime_ |
scalar | startTime_ |
Start time value. More... | |
Heat exchanger source model for compressible flows, where the heat exchanger is modelled 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 exchange source [J/s] |
\( e(\phi,\dot{m}_2) \) | = | Effectivenes table [-] |
\( \phi \) | = | Net mass flux entering heat exchanger [kg/s] |
\( \dot{m}_2 \) | = | Secondary flow mass flow rate [kg/s] |
\( T_1 \) | = | Primary flow inlet temperature [K] |
\( T_2 \) | = | Secondary flow inlet temperature [K] |
\( c_p \) | = | Primary flow 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 cell temperature [K] |
\( T_{ref} \) | = | Min or max(T) in cell zone depending on the sign of Qt [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 type effectivenessHeatExchangerSource; faceZone <faceZoneName>; secondaryMassFlowRate <scalar>; secondaryInletT <scalar>; file "effectivenessTable"; outOfBounds clamp; // Optional entries U <word>; T <word>; phi <word>; // Conditional optional entries // when the total heat exchange is calculated with primary inlet T primaryInletT <scalar>; // when the total heat exchange is calculated with a given target targetQdot <scalar>; targetQdotCalcInterval <label>; targetQdotRelax <scalar>; // when secondary outlet temperature is requested secondaryCp <Function1<scalar>>; // Inherited entries ... }
where the entries mean:
Property | Description | Type | Reqd | Deflt |
---|---|---|---|---|
type | Type name: effectivenessHeatExchangerSource | word | yes | - |
secondaryMassFlowRate | Secondary flow mass rate [kg/s] | scalar | yes | - |
secondaryInletT | Secondary flow inlet temperature [K] | scalar | yes | - |
faceZone | Name of the faceZone at the heat exchanger inlet | word | yes | - |
file | 2D effectiveness table = function of primary and secondary mass flow rates [kg/s] | file | yes | - |
primaryInletT | Primary flow 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 | - |
secondaryCp | Secondary flow specific heat capacity | Function1<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 378 of file effectivenessHeatExchangerSource.H.
effectivenessHeatExchangerSource | ( | const word & | name, |
const word & | modelType, | ||
const dictionary & | dict, | ||
const fvMesh & | mesh | ||
) |
Construct from components.
Definition at line 149 of file effectivenessHeatExchangerSource.C.
References option::coeffs_, dict, basicThermo::dictName, option::fieldNames_, writeFile::file(), fv(), objectRegistry::lookupObject(), option::mesh_, effectivenessHeatExchangerSource::read(), option::resetApplied(), and List< T >::resize().
|
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 481 of file effectivenessHeatExchangerSource.H.
References NotImplemented.
|
virtual |
Add explicit/implicit contribution to compressible momentum equation
Reimplemented from option.
Definition at line 207 of file effectivenessHeatExchangerSource.C.
References alpha, GeometricField< Type, PatchField, GeoMesh >::boundaryField(), Foam::decrIndent(), basicThermo::dictName, Foam::endl(), forAll, Foam::gMax(), Foam::gMin(), Foam::incrIndent(), Foam::indent(), Foam::Info, Foam::fvc::interpolate(), Log, Foam::mag(), splitCell::master(), Foam::max(), Foam::name(), Foam::nl, os(), phi, Foam::reduce(), fvMatrix< Type >::source(), T, Foam::tab, Foam::type(), U, and Foam::Zero.
|
virtual |
Read dictionary.
Reimplemented from cellSetOption.
Definition at line 367 of file effectivenessHeatExchangerSource.C.
References dict, Foam::endl(), Foam::indent(), Foam::Info, Foam::name(), Foam::nl, kEpsilonLopesdaCosta< BasicTurbulenceModel >::read(), and Foam::type().
Referenced by effectivenessHeatExchangerSource::effectivenessHeatExchangerSource().