mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Creation of fieldSources lib. Remove of fieldSources from
/src/finiteVolume/cfdTools/general
This commit is contained in:
28
src/fieldSources/Make/files
Normal file
28
src/fieldSources/Make/files
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
basicSource/basicSource/basicSource.C
|
||||||
|
basicSource/basicSource/basicSourceIO.C
|
||||||
|
basicSource/basicSource/basicSourceList.C
|
||||||
|
basicSource/basicSource/IObasicSourceList.C
|
||||||
|
|
||||||
|
basicSource/pressureGradientExplicitSource/pressureGradientExplicitSource.C
|
||||||
|
basicSource/pressureGradientExplicitSource/pressureGradientExplicitSourceIO.C
|
||||||
|
|
||||||
|
basicSource/explicitSource/explicitSource.C
|
||||||
|
basicSource/explicitSetValue/explicitSetValue.C
|
||||||
|
|
||||||
|
basicSource/rotorDiskSource/rotorDiskSource.C
|
||||||
|
basicSource/rotorDiskSource/bladeModel/bladeModel.C
|
||||||
|
basicSource/rotorDiskSource/profileModel/profileModel.C
|
||||||
|
basicSource/rotorDiskSource/profileModel/profileModelList.C
|
||||||
|
basicSource/rotorDiskSource/profileModel/lookup/lookupProfile.C
|
||||||
|
basicSource/rotorDiskSource/profileModel/series/seriesProfile.C
|
||||||
|
|
||||||
|
basicSource/actuationDiskSource/actuationDiskSource.C
|
||||||
|
basicSource/radialActuationDiskSource/radialActuationDiskSource.C
|
||||||
|
|
||||||
|
interRegion = basicSource/interRegionHeatTransferModel
|
||||||
|
$(interRegion)/interRegionHeatTransferModel/interRegionHeatTransferModel.C
|
||||||
|
$(interRegion)/constantHeatTransfer/constantHeatTransfer.C
|
||||||
|
$(interRegion)/tabulatedHeatTransfer/tabulatedHeatTransfer.C
|
||||||
|
$(interRegion)/variableHeatTransfer/variableHeatTransfer.C
|
||||||
|
|
||||||
|
LIB = $(FOAM_LIBBIN)/libfieldSources
|
||||||
17
src/fieldSources/Make/options
Normal file
17
src/fieldSources/Make/options
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
EXE_INC = \
|
||||||
|
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||||
|
-I$(LIB_SRC)/meshTools/lnInclude \
|
||||||
|
-I$(LIB_SRC)/sampling/lnInclude \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
|
||||||
|
-I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel/lnInclude \
|
||||||
|
-I$(LIB_SRC)/turbulenceModels
|
||||||
|
|
||||||
|
|
||||||
|
LIB_LIBS = \
|
||||||
|
-lfiniteVolume \
|
||||||
|
-lsampling \
|
||||||
|
-lmeshTools \
|
||||||
|
-lbasicSolidThermo \
|
||||||
|
-lcompressibleTurbulenceModel
|
||||||
@ -38,16 +38,17 @@ namespace Foam
|
|||||||
template<> const char* NamedEnum
|
template<> const char* NamedEnum
|
||||||
<
|
<
|
||||||
basicSource::selectionModeType,
|
basicSource::selectionModeType,
|
||||||
4
|
5
|
||||||
>::names[] =
|
>::names[] =
|
||||||
{
|
{
|
||||||
"points",
|
"points",
|
||||||
"cellSet",
|
"cellSet",
|
||||||
"cellZone",
|
"cellZone",
|
||||||
|
"mapRegion",
|
||||||
"all"
|
"all"
|
||||||
};
|
};
|
||||||
|
|
||||||
const NamedEnum<basicSource::selectionModeType, 4>
|
const NamedEnum<basicSource::selectionModeType, 5>
|
||||||
basicSource::selectionModeTypeNames_;
|
basicSource::selectionModeTypeNames_;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,6 +74,13 @@ void Foam::basicSource::setSelection(const dictionary& dict)
|
|||||||
dict.lookup("cellZone") >> cellSetName_;
|
dict.lookup("cellZone") >> cellSetName_;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case smMapRegion:
|
||||||
|
{
|
||||||
|
dict_.lookup("secondarySourceName") >> secondarySourceName_;
|
||||||
|
dict_.lookup("mapRegionName") >> mapRegionName_;
|
||||||
|
master_ = readBool(dict_.lookup("master"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
case smAll:
|
case smAll:
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
@ -151,6 +159,47 @@ void Foam::basicSource::setCellSet()
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case smMapRegion:
|
||||||
|
{
|
||||||
|
if(active_)
|
||||||
|
{
|
||||||
|
Info<< indent << "- selecting inter region mapping" << endl;
|
||||||
|
const fvMesh& secondaryMesh =
|
||||||
|
mesh_.time().lookupObject<fvMesh>(mapRegionName_);
|
||||||
|
const boundBox primaryBB = mesh_.bounds();
|
||||||
|
const boundBox secondaryBB = secondaryMesh.bounds();
|
||||||
|
if (secondaryBB.overlaps(primaryBB))
|
||||||
|
{
|
||||||
|
|
||||||
|
// Dummy patches
|
||||||
|
wordList cuttingPatches;
|
||||||
|
HashTable<word> patchMap;
|
||||||
|
|
||||||
|
secondaryToPrimaryInterpPtr_.reset
|
||||||
|
(
|
||||||
|
new meshToMesh
|
||||||
|
(
|
||||||
|
secondaryMesh,
|
||||||
|
mesh_,
|
||||||
|
patchMap,
|
||||||
|
cuttingPatches
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"Foam::basicSource::setCellSet()"
|
||||||
|
) << "regions dont overlap "
|
||||||
|
<< secondaryMesh.name()
|
||||||
|
<< " in region " << mesh_.name()
|
||||||
|
<< nl
|
||||||
|
<< exit(FatalError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case smAll:
|
case smAll:
|
||||||
{
|
{
|
||||||
Info<< indent << "- selecting all cells" << endl;
|
Info<< indent << "- selecting all cells" << endl;
|
||||||
@ -169,16 +218,19 @@ void Foam::basicSource::setCellSet()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set volume information
|
// Set volume information
|
||||||
V_ = 0.0;
|
if(selectionMode_ != smMapRegion)
|
||||||
forAll(cells_, i)
|
|
||||||
{
|
{
|
||||||
V_ += mesh_.V()[cells_[i]];
|
V_ = 0.0;
|
||||||
}
|
forAll(cells_, i)
|
||||||
reduce(V_, sumOp<scalar>());
|
{
|
||||||
|
V_ += mesh_.V()[cells_[i]];
|
||||||
|
}
|
||||||
|
reduce(V_, sumOp<scalar>());
|
||||||
|
|
||||||
Info<< indent << "- selected "
|
Info<< indent << "- selected "
|
||||||
<< returnReduce(cells_.size(), sumOp<label>())
|
<< returnReduce(cells_.size(), sumOp<label>())
|
||||||
<< " cell(s) with volume " << V_ << nl << decrIndent << endl;
|
<< " cell(s) with volume " << V_ << nl << decrIndent << endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -205,6 +257,11 @@ Foam::basicSource::basicSource
|
|||||||
),
|
),
|
||||||
cellSetName_("none"),
|
cellSetName_("none"),
|
||||||
V_(0.0),
|
V_(0.0),
|
||||||
|
secondaryToPrimaryInterpPtr_(),
|
||||||
|
secondarySourceName_("none"),
|
||||||
|
mapRegionName_("none"),
|
||||||
|
master_(false),
|
||||||
|
|
||||||
fieldNames_(),
|
fieldNames_(),
|
||||||
applied_()
|
applied_()
|
||||||
{
|
{
|
||||||
@ -246,6 +303,13 @@ Foam::autoPtr<Foam::basicSource> Foam::basicSource::New
|
|||||||
return autoPtr<basicSource>(cstrIter()(name, modelType, coeffs, mesh));
|
return autoPtr<basicSource>(cstrIter()(name, modelType, coeffs, mesh));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Foam::basicSource::~basicSource()
|
||||||
|
{
|
||||||
|
if (!secondaryToPrimaryInterpPtr_.empty())
|
||||||
|
{
|
||||||
|
secondaryToPrimaryInterpPtr_.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -32,6 +32,7 @@ Description
|
|||||||
timeStart 0.0; // start time
|
timeStart 0.0; // start time
|
||||||
duration 1000.0; // duration
|
duration 1000.0; // duration
|
||||||
selectionMode cellSet; // cellSet // points //cellZone
|
selectionMode cellSet; // cellSet // points //cellZone
|
||||||
|
// mapRegion
|
||||||
|
|
||||||
On evaluation, source expects to be added to the rhs of the equation
|
On evaluation, source expects to be added to the rhs of the equation
|
||||||
|
|
||||||
@ -48,6 +49,8 @@ SourceFiles
|
|||||||
#include "fvMatricesFwd.H"
|
#include "fvMatricesFwd.H"
|
||||||
#include "cellSet.H"
|
#include "cellSet.H"
|
||||||
#include "autoPtr.H"
|
#include "autoPtr.H"
|
||||||
|
#include "meshToMesh.H"
|
||||||
|
|
||||||
#include "runTimeSelectionTables.H"
|
#include "runTimeSelectionTables.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
@ -57,6 +60,7 @@ namespace Foam
|
|||||||
|
|
||||||
class fvMesh;
|
class fvMesh;
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class basicSource Declaration
|
Class basicSource Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
@ -73,11 +77,13 @@ public:
|
|||||||
smPoints,
|
smPoints,
|
||||||
smCellSet,
|
smCellSet,
|
||||||
smCellZone,
|
smCellZone,
|
||||||
|
smMapRegion,
|
||||||
smAll
|
smAll
|
||||||
};
|
};
|
||||||
|
|
||||||
//- Word list of selection mode type names
|
//- Word list of selection mode type names
|
||||||
static const NamedEnum<selectionModeType, 4> selectionModeTypeNames_;
|
static const NamedEnum<selectionModeType, 5>
|
||||||
|
selectionModeTypeNames_;
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -120,6 +126,21 @@ protected:
|
|||||||
//- Sum of cell volumes
|
//- Sum of cell volumes
|
||||||
scalar V_;
|
scalar V_;
|
||||||
|
|
||||||
|
// Data for smMapRegion only
|
||||||
|
|
||||||
|
//- Mesh to mesh mapping for map optiom
|
||||||
|
autoPtr<meshToMesh> secondaryToPrimaryInterpPtr_;
|
||||||
|
|
||||||
|
//- Name of the source in the secondary mesh
|
||||||
|
word secondarySourceName_;
|
||||||
|
|
||||||
|
//- Name of the region to map
|
||||||
|
word mapRegionName_;
|
||||||
|
|
||||||
|
//- Master or slave region
|
||||||
|
bool master_;
|
||||||
|
|
||||||
|
|
||||||
//- Field names to apply source to - populated by derived models
|
//- Field names to apply source to - populated by derived models
|
||||||
wordList fieldNames_;
|
wordList fieldNames_;
|
||||||
|
|
||||||
@ -227,8 +248,8 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
//- Destructor
|
//- Destructor
|
||||||
virtual ~basicSource()
|
virtual ~basicSource();
|
||||||
{}
|
|
||||||
|
|
||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
@ -266,6 +287,15 @@ public:
|
|||||||
//- Return const access to the total cell volume
|
//- Return const access to the total cell volume
|
||||||
inline scalar V() const;
|
inline scalar V() const;
|
||||||
|
|
||||||
|
//- Return const access to the secondarySourceName
|
||||||
|
inline const word secondarySourceName() const;
|
||||||
|
|
||||||
|
//- Return const access to the mapToMap Ptr
|
||||||
|
inline const autoPtr<meshToMesh> secondaryToPrimaryInterpPtr() const;
|
||||||
|
|
||||||
|
//- Return const referenc to the mapRegion
|
||||||
|
inline const word mapRegionName() const;
|
||||||
|
|
||||||
//- Return const access to the cell set
|
//- Return const access to the cell set
|
||||||
inline const labelList& cells() const;
|
inline const labelList& cells() const;
|
||||||
|
|
||||||
@ -118,4 +118,21 @@ inline Foam::scalar& Foam::basicSource::duration()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline const Foam::word Foam::basicSource::secondarySourceName() const
|
||||||
|
{
|
||||||
|
return secondarySourceName_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline const Foam::autoPtr<Foam::meshToMesh> Foam::basicSource::
|
||||||
|
secondaryToPrimaryInterpPtr() const
|
||||||
|
{
|
||||||
|
return secondaryToPrimaryInterpPtr_;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline const Foam::word Foam::basicSource::mapRegionName() const
|
||||||
|
{
|
||||||
|
return mapRegionName_;
|
||||||
|
}
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
@ -72,6 +72,10 @@ void Foam::basicSource::writeData(Ostream& os) const
|
|||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case smMapRegion:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
FatalErrorIn("basicSource::writeData(Ostream&) const")
|
FatalErrorIn("basicSource::writeData(Ostream&) const")
|
||||||
@ -0,0 +1,141 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "constantHeatTransfer.H"
|
||||||
|
#include "fvm.H"
|
||||||
|
#include "IObasicSourceList.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
#include "fvcVolumeIntegrate.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(constantHeatTransfer, 0);
|
||||||
|
addToRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
basicSource,
|
||||||
|
constantHeatTransfer,
|
||||||
|
dictionary
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::constantHeatTransfer::constantHeatTransfer
|
||||||
|
(
|
||||||
|
const word& name,
|
||||||
|
const word& modelType,
|
||||||
|
const dictionary& dict,
|
||||||
|
const fvMesh& mesh
|
||||||
|
)
|
||||||
|
:
|
||||||
|
interRegionHeatTransferModel(name, modelType, dict, mesh),
|
||||||
|
htCoeffs_(),
|
||||||
|
area_()
|
||||||
|
{
|
||||||
|
if (master_)
|
||||||
|
{
|
||||||
|
htCoeffs_.reset
|
||||||
|
(
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"htCoeffs",
|
||||||
|
mesh_.time().timeName(),
|
||||||
|
mesh_,
|
||||||
|
IOobject::MUST_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
mesh_
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
area_.reset
|
||||||
|
(
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"area",
|
||||||
|
mesh_.time().timeName(),
|
||||||
|
mesh_,
|
||||||
|
IOobject::MUST_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
mesh_
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
htc_.internalField() = htCoeffs_()*area_()/mesh_.V();
|
||||||
|
htc_.correctBoundaryConditions();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::constantHeatTransfer::~constantHeatTransfer()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
const Foam::tmp<Foam::volScalarField>Foam::constantHeatTransfer::
|
||||||
|
calculateHtc()
|
||||||
|
{
|
||||||
|
return htc_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::constantHeatTransfer::writeData(Ostream& os) const
|
||||||
|
{
|
||||||
|
os << indent << token::BEGIN_BLOCK << incrIndent << nl;
|
||||||
|
interRegionHeatTransferModel::writeData(os);
|
||||||
|
|
||||||
|
os << indent << "constantHeatTransfer";
|
||||||
|
|
||||||
|
dict_.write(os);
|
||||||
|
|
||||||
|
os << decrIndent << indent << token::END_BLOCK << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Foam::constantHeatTransfer::read(const dictionary& dict)
|
||||||
|
{
|
||||||
|
if (basicSource::read(dict))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,110 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::constantHeatTransfer
|
||||||
|
|
||||||
|
Description
|
||||||
|
Constant heat transfer model. htCoeffs [W/m2/K] and area [m2] must be
|
||||||
|
provided.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef constantHeatTransfer_H
|
||||||
|
#define constantHeatTransfer_H
|
||||||
|
|
||||||
|
#include "interRegionHeatTransferModel.H"
|
||||||
|
#include "autoPtr.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class constantHeatTransfer Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class constantHeatTransfer
|
||||||
|
:
|
||||||
|
public interRegionHeatTransferModel
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Heat transfer coefficient
|
||||||
|
autoPtr<volScalarField> htCoeffs_;
|
||||||
|
|
||||||
|
//- Area of heat exchange
|
||||||
|
autoPtr<volScalarField> area_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("constantHeatTransfer");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from dictionary
|
||||||
|
constantHeatTransfer
|
||||||
|
(
|
||||||
|
const word& name,
|
||||||
|
const word& modelType,
|
||||||
|
const dictionary& dict,
|
||||||
|
const fvMesh& mesh
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~constantHeatTransfer();
|
||||||
|
|
||||||
|
|
||||||
|
// Public Functions
|
||||||
|
|
||||||
|
//- Calculate the heat transfer coefficient
|
||||||
|
virtual const tmp<volScalarField> calculateHtc();
|
||||||
|
|
||||||
|
|
||||||
|
// I-O
|
||||||
|
|
||||||
|
//- Write data
|
||||||
|
virtual void writeData(Ostream&) const;
|
||||||
|
|
||||||
|
//- Read dictionary
|
||||||
|
virtual bool read(const dictionary& dict) ;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,273 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "interRegionHeatTransferModel.H"
|
||||||
|
#include "basicThermo.H"
|
||||||
|
#include "fvm.H"
|
||||||
|
#include "IObasicSourceList.H"
|
||||||
|
#include "zeroGradientFvPatchFields.H"
|
||||||
|
#include "fvcVolumeIntegrate.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(interRegionHeatTransferModel, 0);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * Private member functions * * * * * * * * * * * //
|
||||||
|
|
||||||
|
void Foam::interRegionHeatTransferModel::check()
|
||||||
|
{
|
||||||
|
const fvMesh& secondaryMesh =
|
||||||
|
mesh_.time().lookupObject<fvMesh>(mapRegionName_);
|
||||||
|
|
||||||
|
const basicSourceList& IObsl =
|
||||||
|
secondaryMesh.lookupObject<basicSourceList>
|
||||||
|
(
|
||||||
|
"sourcesProperties"
|
||||||
|
);
|
||||||
|
|
||||||
|
const PtrList<basicSource>& bsl = IObsl;
|
||||||
|
|
||||||
|
bool secSourceFound(false);
|
||||||
|
|
||||||
|
forAll(bsl, i)
|
||||||
|
{
|
||||||
|
if (bsl[i].name() == secondarySourceName_)
|
||||||
|
{
|
||||||
|
secIrht_ = &const_cast<interRegionHeatTransferModel&>
|
||||||
|
(
|
||||||
|
refCast<const interRegionHeatTransferModel>(bsl[i])
|
||||||
|
);
|
||||||
|
secSourceFound = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!secSourceFound)
|
||||||
|
{
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"constantHeatTransfer::interRegionHeatTransferModel"
|
||||||
|
"("
|
||||||
|
" const word& name,"
|
||||||
|
" const word& modelType,"
|
||||||
|
" const dictionary& dict,"
|
||||||
|
" const fvMesh& mesh"
|
||||||
|
")"
|
||||||
|
) << "Secondary source name not found" << secondarySourceName_
|
||||||
|
<< " in region " << secondaryMesh.name()
|
||||||
|
<< nl
|
||||||
|
<< exit(FatalError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::interRegionHeatTransferModel::interRegionHeatTransferModel
|
||||||
|
(
|
||||||
|
const word& name,
|
||||||
|
const word& modelType,
|
||||||
|
const dictionary& dict,
|
||||||
|
const fvMesh& mesh
|
||||||
|
)
|
||||||
|
:
|
||||||
|
basicSource(name, modelType, dict, mesh),
|
||||||
|
secIrht_(),
|
||||||
|
firstIter_(true),
|
||||||
|
htc_
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"htc",
|
||||||
|
mesh.time().timeName(),
|
||||||
|
mesh,
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::NO_WRITE
|
||||||
|
),
|
||||||
|
mesh,
|
||||||
|
dimensionedScalar
|
||||||
|
(
|
||||||
|
"htc",
|
||||||
|
dimEnergy/dimTime/dimTemperature/dimVolume,
|
||||||
|
0.0
|
||||||
|
),
|
||||||
|
zeroGradientFvPatchScalarField::typeName
|
||||||
|
)
|
||||||
|
{
|
||||||
|
coeffs_.lookup("fieldNames") >> fieldNames_;
|
||||||
|
applied_.setSize(fieldNames_.size(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::interRegionHeatTransferModel::~interRegionHeatTransferModel()
|
||||||
|
{}
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::interRegionHeatTransferModel::addSup
|
||||||
|
(
|
||||||
|
fvMatrix<scalar>& eEqn,
|
||||||
|
const label fieldI
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (firstIter_)
|
||||||
|
{
|
||||||
|
check();
|
||||||
|
firstIter_ = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const volScalarField& h = eEqn.psi();
|
||||||
|
|
||||||
|
tmp<volScalarField> tTmapped
|
||||||
|
(
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"Tmapped" + mesh_.name(),
|
||||||
|
mesh_.time().timeName(),
|
||||||
|
mesh_,
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::NO_WRITE
|
||||||
|
),
|
||||||
|
mesh_,
|
||||||
|
dimensionedScalar("T", dimTemperature, 0.0)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
volScalarField& Tmapped = tTmapped();
|
||||||
|
|
||||||
|
const fvMesh& secondaryMesh =
|
||||||
|
mesh_.time().lookupObject<fvMesh>(mapRegionName_);
|
||||||
|
|
||||||
|
basicThermo& secondaryThermo =
|
||||||
|
const_cast<basicThermo&>
|
||||||
|
(
|
||||||
|
secondaryMesh.lookupObject<basicThermo>("thermophysicalProperties")
|
||||||
|
);
|
||||||
|
|
||||||
|
secondaryToPrimaryInterpPtr_->interpolateInternalField
|
||||||
|
(
|
||||||
|
Tmapped,
|
||||||
|
secondaryThermo.T(),
|
||||||
|
meshToMesh::MAP,
|
||||||
|
eqOp<scalar>()
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!master_)
|
||||||
|
{
|
||||||
|
secondaryToPrimaryInterpPtr_->interpolateInternalField
|
||||||
|
(
|
||||||
|
htc_,
|
||||||
|
secIrht_->calculateHtc(),
|
||||||
|
meshToMesh::CELL_VOLUME_WEIGHT,
|
||||||
|
eqOp<scalar>()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (debug)
|
||||||
|
{
|
||||||
|
Info<< " Volumetric integral of htc : "
|
||||||
|
<< fvc::domainIntegrate(htc_).value()
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
//SAF: temporarily output
|
||||||
|
if (mesh_.time().outputTime())
|
||||||
|
{
|
||||||
|
Tmapped.write();
|
||||||
|
htc_.write();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (h.dimensions() == dimEnergy/dimMass)
|
||||||
|
{
|
||||||
|
const basicThermo& primaryThermo =
|
||||||
|
mesh_.lookupObject<basicThermo>("thermophysicalProperties");
|
||||||
|
|
||||||
|
eEqn += htc_*Tmapped - fvm::Sp(htc_/primaryThermo.Cp(), h);
|
||||||
|
|
||||||
|
if (debug)
|
||||||
|
{
|
||||||
|
Info<< " Energy exchange from region " << secondaryMesh.name()
|
||||||
|
<< " To " << mesh_.name() << " : "
|
||||||
|
<< fvc::domainIntegrate
|
||||||
|
(
|
||||||
|
htc_*(h/primaryThermo.Cp() - Tmapped)
|
||||||
|
).value()
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(h.dimensions() == dimTemperature)
|
||||||
|
{
|
||||||
|
eEqn += htc_*Tmapped - fvm::Sp(htc_, h);
|
||||||
|
|
||||||
|
if (debug)
|
||||||
|
{
|
||||||
|
Info<< " Enegy exchange from region " << secondaryMesh.name()
|
||||||
|
<< " To " << mesh_.name() << " : "
|
||||||
|
<< fvc::domainIntegrate(htc_*(h - Tmapped)).value()
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::interRegionHeatTransferModel::writeData(Ostream& os) const
|
||||||
|
{
|
||||||
|
os.writeKeyword("name") << this->name() << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("mapRegionName") << mapRegionName_
|
||||||
|
<< token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("secondarySourceName") << secondarySourceName_
|
||||||
|
<< token::END_STATEMENT << nl;
|
||||||
|
|
||||||
|
os.writeKeyword("master") << master_ << token::END_STATEMENT << nl;
|
||||||
|
|
||||||
|
if (dict_.found("note"))
|
||||||
|
{
|
||||||
|
os.writeKeyword("note") << string(dict_.lookup("note"))
|
||||||
|
<< token::END_STATEMENT << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
dict_.write(os);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Foam::interRegionHeatTransferModel::read(const dictionary& dict)
|
||||||
|
{
|
||||||
|
if (basicSource::read(dict))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,139 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::interRegionHeatTransferModel
|
||||||
|
|
||||||
|
Description
|
||||||
|
Base class for inter region heat exchange. The derived classes must
|
||||||
|
provide the heat transfer coefficient (htc)
|
||||||
|
NOTE: mapToMap does to work in paralell
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef interRegionHeatTransferModel_H
|
||||||
|
#define interRegionHeatTransferModel_H
|
||||||
|
|
||||||
|
#include "basicSource.H"
|
||||||
|
#include "volFields.H"
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class interRegionHeatTransferModel Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class interRegionHeatTransferModel
|
||||||
|
:
|
||||||
|
public basicSource
|
||||||
|
{
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Pointer to secondary interRegionHeatTransferModel
|
||||||
|
interRegionHeatTransferModel* secIrht_;
|
||||||
|
|
||||||
|
//- First iteration
|
||||||
|
bool firstIter_;
|
||||||
|
|
||||||
|
|
||||||
|
// Private members
|
||||||
|
|
||||||
|
//- Check coupled interRegionHeatTransferModel
|
||||||
|
void check();
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// Protected data
|
||||||
|
|
||||||
|
//- Heat transfer coefficient [W/m2/k] by area/volume [1/m]
|
||||||
|
// registered on the master mesh
|
||||||
|
volScalarField htc_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("interRegionHeatTransferModel");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from dictionary
|
||||||
|
interRegionHeatTransferModel
|
||||||
|
(
|
||||||
|
const word& name,
|
||||||
|
const word& modelType,
|
||||||
|
const dictionary& dict,
|
||||||
|
const fvMesh& mesh
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~interRegionHeatTransferModel();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
|
||||||
|
// Access
|
||||||
|
|
||||||
|
//- Return the heat transfer coefficient
|
||||||
|
const volScalarField& htc() const
|
||||||
|
{
|
||||||
|
return htc_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-Source term to fvMatrix<scalar>
|
||||||
|
virtual void addSup(fvMatrix<scalar>& eEqn, const label fieldI);
|
||||||
|
|
||||||
|
//- Calculate heat transfer coefficient
|
||||||
|
virtual const tmp<volScalarField> calculateHtc() = 0;
|
||||||
|
|
||||||
|
|
||||||
|
// I-O
|
||||||
|
|
||||||
|
//- Write data
|
||||||
|
virtual void writeData(Ostream&) const;
|
||||||
|
|
||||||
|
//- Read dictionary
|
||||||
|
virtual bool read(const dictionary& dict);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,155 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "tabulatedHeatTransfer.H"
|
||||||
|
|
||||||
|
#include "turbulenceModel.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(tabulatedHeatTransfer, 0);
|
||||||
|
addToRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
basicSource,
|
||||||
|
tabulatedHeatTransfer,
|
||||||
|
dictionary
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::tabulatedHeatTransfer::tabulatedHeatTransfer
|
||||||
|
(
|
||||||
|
const word& name,
|
||||||
|
const word& modelType,
|
||||||
|
const dictionary& dict,
|
||||||
|
const fvMesh& mesh
|
||||||
|
)
|
||||||
|
:
|
||||||
|
interRegionHeatTransferModel(name, modelType, dict, mesh),
|
||||||
|
hTable_(),
|
||||||
|
area_()
|
||||||
|
{
|
||||||
|
if (master_)
|
||||||
|
{
|
||||||
|
hTable_.reset
|
||||||
|
(
|
||||||
|
new interpolation2DTable<scalar>
|
||||||
|
(
|
||||||
|
dict.subDict(typeName + "Coeffs")
|
||||||
|
)
|
||||||
|
);
|
||||||
|
area_.reset
|
||||||
|
(
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"area",
|
||||||
|
mesh_.time().timeName(),
|
||||||
|
mesh_,
|
||||||
|
IOobject::MUST_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
mesh_
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::tabulatedHeatTransfer::~tabulatedHeatTransfer()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
|
const Foam::tmp<Foam::volScalarField>Foam::tabulatedHeatTransfer::
|
||||||
|
calculateHtc()
|
||||||
|
{
|
||||||
|
const fvMesh& secondaryMesh =
|
||||||
|
mesh_.time().lookupObject<fvMesh>(mapRegionName());
|
||||||
|
|
||||||
|
const volVectorField& Usecondary =
|
||||||
|
secondaryMesh.lookupObject<volVectorField>("U");
|
||||||
|
|
||||||
|
scalarField UMagMapped(htc_.internalField().size(), 0.0);
|
||||||
|
|
||||||
|
secondaryToPrimaryInterpPtr_->interpolateInternalField
|
||||||
|
(
|
||||||
|
UMagMapped,
|
||||||
|
mag(Usecondary),
|
||||||
|
meshToMesh::MAP,
|
||||||
|
eqOp<scalar>()
|
||||||
|
);
|
||||||
|
|
||||||
|
const volVectorField& U = mesh_.lookupObject<volVectorField>("U");
|
||||||
|
|
||||||
|
forAll (htc_.internalField(), i)
|
||||||
|
{
|
||||||
|
htc_.internalField()[i] =
|
||||||
|
hTable_->operator()(mag(U[i]), UMagMapped[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
htc_.internalField() = htc_*area_/mesh_.V();
|
||||||
|
|
||||||
|
return htc_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::tabulatedHeatTransfer::writeData(Ostream& os) const
|
||||||
|
{
|
||||||
|
os << indent << token::BEGIN_BLOCK << incrIndent << nl;
|
||||||
|
interRegionHeatTransferModel::writeData(os);
|
||||||
|
|
||||||
|
os << indent << "tabulatedHeatTransfer";
|
||||||
|
|
||||||
|
dict_.write(os);
|
||||||
|
|
||||||
|
os << decrIndent << indent << token::END_BLOCK << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Foam::tabulatedHeatTransfer::read(const dictionary& dict)
|
||||||
|
{
|
||||||
|
if (basicSource::read(dict))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,112 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::tabulatedHeatTransfer
|
||||||
|
|
||||||
|
Description
|
||||||
|
Tabulated heat transfer model. The heat exchange area must be
|
||||||
|
provided. The 2D table look for heat transfer coefficients uses the
|
||||||
|
primary and secondary region velocities
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef tabulatedHeatTransfer_H
|
||||||
|
#define tabulatedHeatTransfer_H
|
||||||
|
|
||||||
|
#include "interRegionHeatTransferModel.H"
|
||||||
|
#include "autoPtr.H"
|
||||||
|
#include "interpolation2DTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class tabulatedHeatTransfer Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class tabulatedHeatTransfer
|
||||||
|
:
|
||||||
|
public interRegionHeatTransferModel
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- 2D look up table
|
||||||
|
autoPtr<interpolation2DTable<scalar> > hTable_;
|
||||||
|
|
||||||
|
//- Area of heat exchange
|
||||||
|
autoPtr<volScalarField> area_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("tabulatedHeatTransfer");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from dictionary
|
||||||
|
tabulatedHeatTransfer
|
||||||
|
(
|
||||||
|
const word& name,
|
||||||
|
const word& modelType,
|
||||||
|
const dictionary& dict,
|
||||||
|
const fvMesh& mesh
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~tabulatedHeatTransfer();
|
||||||
|
|
||||||
|
|
||||||
|
// Public Functions
|
||||||
|
|
||||||
|
//- Calculate the heat transfer coefficient
|
||||||
|
virtual const tmp<volScalarField> calculateHtc();
|
||||||
|
|
||||||
|
|
||||||
|
// I-O
|
||||||
|
|
||||||
|
//- Write data
|
||||||
|
virtual void writeData(Ostream&) const;
|
||||||
|
|
||||||
|
//- Read dictionary
|
||||||
|
virtual bool read(const dictionary& dict) ;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,187 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "variableHeatTransfer.H"
|
||||||
|
#include "IObasicSourceList.H"
|
||||||
|
#include "turbulenceModel.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(variableHeatTransfer, 0);
|
||||||
|
addToRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
basicSource,
|
||||||
|
variableHeatTransfer,
|
||||||
|
dictionary
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::variableHeatTransfer::variableHeatTransfer
|
||||||
|
(
|
||||||
|
const word& name,
|
||||||
|
const word& modelType,
|
||||||
|
const dictionary& dict,
|
||||||
|
const fvMesh& mesh
|
||||||
|
)
|
||||||
|
:
|
||||||
|
interRegionHeatTransferModel(name, modelType, dict, mesh),
|
||||||
|
a_(0),
|
||||||
|
b_(0),
|
||||||
|
c_(0),
|
||||||
|
ds_(0),
|
||||||
|
Pr_(0),
|
||||||
|
area_()
|
||||||
|
{
|
||||||
|
if (master_)
|
||||||
|
{
|
||||||
|
a_ = readScalar(dict_.lookup("a"));
|
||||||
|
b_ = readScalar(dict_.lookup("b"));
|
||||||
|
c_ = readScalar(dict_.lookup("c"));
|
||||||
|
ds_ = readScalar(dict_.lookup("ds"));
|
||||||
|
Pr_ = readScalar(dict_.lookup("Pr"));
|
||||||
|
area_.reset
|
||||||
|
(
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"area",
|
||||||
|
mesh_.time().timeName(),
|
||||||
|
mesh_,
|
||||||
|
IOobject::MUST_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
mesh_
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::variableHeatTransfer::~variableHeatTransfer()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
|
const Foam::tmp<Foam::volScalarField> Foam::variableHeatTransfer::
|
||||||
|
calculateHtc()
|
||||||
|
{
|
||||||
|
|
||||||
|
const fvMesh& secondaryMesh =
|
||||||
|
mesh_.time().lookupObject<fvMesh>(mapRegionName());
|
||||||
|
|
||||||
|
const compressible::turbulenceModel& turb =
|
||||||
|
secondaryMesh.lookupObject<compressible::turbulenceModel>
|
||||||
|
(
|
||||||
|
"turbulenceModel"
|
||||||
|
);
|
||||||
|
|
||||||
|
const basicThermo& secondaryThermo =
|
||||||
|
secondaryMesh.lookupObject<basicThermo>
|
||||||
|
(
|
||||||
|
"thermophysicalProperties"
|
||||||
|
);
|
||||||
|
|
||||||
|
const volVectorField& U =
|
||||||
|
secondaryMesh.lookupObject<volVectorField>("U");
|
||||||
|
|
||||||
|
const volScalarField Re
|
||||||
|
(
|
||||||
|
mag(U)*ds_*secondaryThermo.rho()/turb.mut()
|
||||||
|
);
|
||||||
|
|
||||||
|
const volScalarField Nu(a_*pow(Re, b_)*pow(Pr_, c_));
|
||||||
|
|
||||||
|
const volScalarField K(turb.alphaEff()*secondaryThermo.Cp());
|
||||||
|
|
||||||
|
scalarField htcMapped(htc_.internalField().size(), 0.0);
|
||||||
|
|
||||||
|
secondaryToPrimaryInterpPtr_->interpolateInternalField
|
||||||
|
(
|
||||||
|
htcMapped,
|
||||||
|
Nu*K/ds_,
|
||||||
|
meshToMesh::MAP,
|
||||||
|
eqOp<scalar>()
|
||||||
|
);
|
||||||
|
|
||||||
|
htc_.internalField() = htcMapped*area_/mesh_.V();
|
||||||
|
|
||||||
|
return htc_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::variableHeatTransfer::writeData(Ostream& os) const
|
||||||
|
{
|
||||||
|
os << indent << token::BEGIN_BLOCK << incrIndent << nl;
|
||||||
|
interRegionHeatTransferModel::writeData(os);
|
||||||
|
|
||||||
|
os.writeKeyword("a") << a_ << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("b") << b_ << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("c") << c_ << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("ds") << ds_ << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("Pr") << Pr_ << token::END_STATEMENT << nl;
|
||||||
|
|
||||||
|
os << indent << "variableHeatTransfer";
|
||||||
|
|
||||||
|
dict_.write(os);
|
||||||
|
|
||||||
|
os << decrIndent << indent << token::END_BLOCK << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Foam::variableHeatTransfer::read(const dictionary& dict)
|
||||||
|
{
|
||||||
|
if (basicSource::read(dict))
|
||||||
|
{
|
||||||
|
|
||||||
|
const dictionary& sourceDict = dict.subDict(name());
|
||||||
|
const dictionary& subDictCoeffs =
|
||||||
|
sourceDict.subDict(typeName + "Coeffs");
|
||||||
|
subDictCoeffs.readIfPresent("a", a_);
|
||||||
|
subDictCoeffs.readIfPresent("b", b_);
|
||||||
|
subDictCoeffs.readIfPresent("c", c_);
|
||||||
|
subDictCoeffs.readIfPresent("ds", ds_);
|
||||||
|
subDictCoeffs.readIfPresent("Pr", Pr_);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,128 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::variableHeatTransfer
|
||||||
|
|
||||||
|
Description
|
||||||
|
Variable heat transfer model depending on local values. The area of contact
|
||||||
|
between regions (area) must be provided. The Nu number is calculated as:
|
||||||
|
|
||||||
|
Nu = a*pow(Re, b)*pow(Pr, c)
|
||||||
|
|
||||||
|
and the heat transfer coefficient as:
|
||||||
|
|
||||||
|
htc = Nu*K/ds
|
||||||
|
|
||||||
|
where:
|
||||||
|
K is the heat conduction
|
||||||
|
ds is the strut diameter
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef variableHeatTransfer_H
|
||||||
|
#define variableHeatTransfer_H
|
||||||
|
|
||||||
|
#include "interRegionHeatTransferModel.H"
|
||||||
|
#include "autoPtr.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class variableHeatTransfer Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class variableHeatTransfer
|
||||||
|
:
|
||||||
|
public interRegionHeatTransferModel
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Model constants
|
||||||
|
scalar a_;
|
||||||
|
scalar b_;
|
||||||
|
scalar c_;
|
||||||
|
|
||||||
|
//- Strut diameter
|
||||||
|
scalar ds_;
|
||||||
|
|
||||||
|
//- Fluid Prandt number
|
||||||
|
scalar Pr_;
|
||||||
|
|
||||||
|
//- Area of heat exchange
|
||||||
|
autoPtr<volScalarField> area_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("variableHeatTransfer");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from dictionary
|
||||||
|
variableHeatTransfer
|
||||||
|
(
|
||||||
|
const word& name,
|
||||||
|
const word& modelType,
|
||||||
|
const dictionary& dict,
|
||||||
|
const fvMesh& mesh
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~variableHeatTransfer();
|
||||||
|
|
||||||
|
|
||||||
|
// Public Functions
|
||||||
|
|
||||||
|
//- Calculate the heat transfer coefficient
|
||||||
|
virtual const tmp<volScalarField> calculateHtc();
|
||||||
|
|
||||||
|
|
||||||
|
// I-O
|
||||||
|
|
||||||
|
//- Write data
|
||||||
|
virtual void writeData(Ostream&) const;
|
||||||
|
|
||||||
|
//- Read dictionary
|
||||||
|
virtual bool read(const dictionary& dict) ;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
Reference in New Issue
Block a user