effectivenessHeatExchangerSource Class Reference

Heat exchanger source model for compressible flows, where the heat exchanger is modelled as an energy source using a selection of cells. More...

Inheritance diagram for effectivenessHeatExchangerSource:
[legend]
Collaboration diagram for effectivenessHeatExchangerSource:
[legend]

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 wordRezoneName () const noexcept
 
scalar V () const noexcept
 Return const access to the total cell volume. More...
 
const labelListcells () 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 wordcellSetName () 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< optionclone () const
 Return clone. More...
 
virtual ~option ()=default
 Destructor. More...
 
const wordname () const noexcept
 Return const access to the source name. More...
 
const fvMeshmesh () const noexcept
 Return const access to the mesh database. More...
 
const dictionarycoeffs () 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 OFstreamfile ()
 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< optionNew (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< selectionModeTypeselectionModeTypeNames_
 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< OFstreamcreateFile (const word &name, scalar timeValue) const
 Return autoPtr to a new file for a given time. More...
 
virtual autoPtr< OFstreamcreateFile (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< pointpoints_
 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 fvMeshmesh_
 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< boolapplied_
 Applied flag list - corresponds to each fieldNames_ entry. More...
 
bool active_
 Source active flag. More...
 
- Protected Attributes inherited from writeFile
const objectRegistryfileObr_
 Reference to the region objectRegistry. More...
 
const fileName prefix_
 Prefix. More...
 
word fileName_
 Name of file. More...
 
autoPtr< OFstreamfilePtr_
 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...
 

Detailed Description

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]
Usage
Minimal example by using 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)
                )
            )
        );
Note
  • Primary flow indicates the CFD flow region and secondary flow the non-CFD-model region.
  • The table with name 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.
Source files

Definition at line 378 of file effectivenessHeatExchangerSource.H.

Constructor & Destructor Documentation

◆ effectivenessHeatExchangerSource() [1/2]

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().

Here is the call graph for this function:

◆ effectivenessHeatExchangerSource() [2/2]

No copy construct.

◆ ~effectivenessHeatExchangerSource()

virtual ~effectivenessHeatExchangerSource ( )
virtualdefault

Destructor.

Member Function Documentation

◆ TypeName()

TypeName ( "effectivenessHeatExchangerSource"  )

Runtime type information.

◆ operator=()

void operator= ( const effectivenessHeatExchangerSource )
delete

No copy assignment.

◆ addSup() [1/2]

virtual void addSup ( fvMatrix< scalar > &  eqn,
const label  fieldi 
)
inlinevirtual

Add explicit/implicit contribution to momentum equation.

Reimplemented from option.

Definition at line 481 of file effectivenessHeatExchangerSource.H.

References NotImplemented.

◆ addSup() [2/2]

void addSup ( const volScalarField rho,
fvMatrix< scalar > &  eqn,
const label  fieldi 
)
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.

Here is the call graph for this function:

◆ read()

bool read ( const dictionary dict)
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().

Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following files: