Merge branch 'master' of /home/noisy3/OpenFOAM/OpenFOAM-dev

This commit is contained in:
mattijs
2011-06-03 17:04:45 +01:00
89 changed files with 45457 additions and 1431 deletions

View File

@ -7,15 +7,18 @@ fvVectorMatrix UEqn
UEqn.relax(); UEqn.relax();
solve if (pimple.momentumPredictor())
( {
UEqn solve
==
fvc::reconstruct
( (
UEqn
==
fvc::reconstruct
( (
- ghf*fvc::snGrad(rho) (
- fvc::snGrad(p_rgh) - ghf*fvc::snGrad(rho)
)*mesh.magSf() - fvc::snGrad(p_rgh)
) )*mesh.magSf()
); )
);
}

View File

@ -16,4 +16,5 @@ EXE_LIBS = \
-lcompressibleRASModels \ -lcompressibleRASModels \
-lfiniteVolume \ -lfiniteVolume \
-lmeshTools \ -lmeshTools \
-lthermoBaffleModels -lthermoBaffleModels \
-lregionModels

View File

@ -1,4 +1,3 @@
turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C
externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C
LIB = $(FOAM_LIBBIN)/libcoupledDerivedFvPatchFields LIB = $(FOAM_LIBBIN)/libcoupledDerivedFvPatchFields

View File

@ -202,7 +202,7 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs()
return; return;
} }
if(oldMode_ == fixedHeatFlux) if (oldMode_ == fixedHeatFlux)
{ {
this->refGrad() = q_/K(*this); this->refGrad() = q_/K(*this);
this->refValue() = 0.0; this->refValue() = 0.0;

View File

@ -54,8 +54,6 @@ SourceFiles
#ifndef solidWallHeatFluxTemperatureFvPatchScalarField_H #ifndef solidWallHeatFluxTemperatureFvPatchScalarField_H
#define solidWallHeatFluxTemperatureFvPatchScalarField_H #define solidWallHeatFluxTemperatureFvPatchScalarField_H
//#include "fixedGradientFvPatchFields.H"
#include "mixedFvPatchFields.H" #include "mixedFvPatchFields.H"
#include "temperatureCoupledBase.H" #include "temperatureCoupledBase.H"

View File

@ -21,7 +21,7 @@ tmp<fv::convectionScheme<scalar> > mvConvection
volScalarField& Yi = Y[i]; volScalarField& Yi = Y[i];
fvScalarMatrix R = combustion->R(Yi); fvScalarMatrix R = combustion->R(Yi);
solve fvScalarMatrix YiEqn
( (
fvm::ddt(rho, Yi) fvm::ddt(rho, Yi)
+ mvConvection->fvmDiv(phi, Yi) + mvConvection->fvmDiv(phi, Yi)
@ -29,10 +29,12 @@ tmp<fv::convectionScheme<scalar> > mvConvection
== ==
parcels.SYi(i, Yi) parcels.SYi(i, Yi)
+ surfaceFilm.Srho(i) + surfaceFilm.Srho(i)
+ R, + R
mesh.solver("Yi")
); );
YiEqn.relax();
YiEqn.solve(mesh.solver("Yi"));
Yi.max(0.0); Yi.max(0.0);
Yt += Yi; Yt += Yi;
} }

View File

@ -25,7 +25,7 @@ Application
reactingParcelFilmPyrolysisFoam reactingParcelFilmPyrolysisFoam
Description Description
Transient PISO solver for compressible, laminar or turbulent flow with Transient PIMPLE solver for Fires and turbulent diffusion flames with
reacting Lagrangian parcels, surface film and pyrolysis modelling. reacting Lagrangian parcels, surface film and pyrolysis modelling.
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -43,10 +43,10 @@ EXE_LIBS = \
-lmeshTools \ -lmeshTools \
-lmolecularMeasurements \ -lmolecularMeasurements \
-lmolecule \ -lmolecule \
-lmultiphaseInterFoam \ /* -lmultiphaseInterFoam */ \
-lODE \ -lODE \
-lOpenFOAM \ -lOpenFOAM \
-lphaseModel \ /* -lphaseModel */ \
-lpotential \ -lpotential \
-lradiationModels \ -lradiationModels \
-lrandomProcesses \ -lrandomProcesses \

View File

@ -29,7 +29,6 @@ derivedFvPatches = $(fvPatches)/derived
$(derivedFvPatches)/wall/wallFvPatch.C $(derivedFvPatches)/wall/wallFvPatch.C
$(derivedFvPatches)/directMapped/directMappedFvPatch.C $(derivedFvPatches)/directMapped/directMappedFvPatch.C
$(derivedFvPatches)/directMapped/directMappedWallFvPatch.C $(derivedFvPatches)/directMapped/directMappedWallFvPatch.C
$(derivedFvPatches)/directMapped/directMappedVariableThicknessWallFvPatch.C
wallDist = fvMesh/wallDist wallDist = fvMesh/wallDist
$(wallDist)/wallPointYPlus/wallPointYPlus.C $(wallDist)/wallPointYPlus/wallPointYPlus.C
@ -121,6 +120,7 @@ $(derivedFvPatchFields)/directMappedFixedInternalValue/directMappedFixedInternal
$(derivedFvPatchFields)/directMappedFixedPushedInternalValue/directMappedFixedPushedInternalValueFvPatchFields.C $(derivedFvPatchFields)/directMappedFixedPushedInternalValue/directMappedFixedPushedInternalValueFvPatchFields.C
$(derivedFvPatchFields)/directMappedFixedValue/directMappedFixedValueFvPatchFields.C $(derivedFvPatchFields)/directMappedFixedValue/directMappedFixedValueFvPatchFields.C
$(derivedFvPatchFields)/directMappedVelocityFluxFixedValue/directMappedVelocityFluxFixedValueFvPatchField.C $(derivedFvPatchFields)/directMappedVelocityFluxFixedValue/directMappedVelocityFluxFixedValueFvPatchField.C
$(derivedFvPatchFields)/directMappedFlowRate/directMappedFlowRateFvPatchVectorField.C
$(derivedFvPatchFields)/fan/fanFvPatchFields.C $(derivedFvPatchFields)/fan/fanFvPatchFields.C
$(derivedFvPatchFields)/buoyantPressure/buoyantPressureFvPatchScalarField.C $(derivedFvPatchFields)/buoyantPressure/buoyantPressureFvPatchScalarField.C
$(derivedFvPatchFields)/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C $(derivedFvPatchFields)/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C

View File

@ -1,10 +1,8 @@
EXE_INC = \ EXE_INC = \
-I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/triSurface/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude
-I$(LIB_SRC)/regionModels/regionModel/lnInclude
LIB_LIBS = \ LIB_LIBS = \
-lOpenFOAM \ -lOpenFOAM \
-ltriSurface \ -ltriSurface \
-lmeshTools \ -lmeshTools
-lregionModels

View File

@ -23,20 +23,18 @@ License
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "flowRateInletVelocityCoupledFvPatchVectorField.H" #include "directMappedFlowRateFvPatchVectorField.H"
#include "volFields.H" #include "volFields.H"
#include "addToRunTimeSelectionTable.H" #include "addToRunTimeSelectionTable.H"
#include "fvPatchFieldMapper.H" #include "fvPatchFieldMapper.H"
#include "directMappedPatchBase.H" #include "directMappedPatchBase.H"
#include "mapDistribute.H" #include "mapDistribute.H"
#include "regionProperties.H"
#include "basicThermo.H"
#include "surfaceFields.H" #include "surfaceFields.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::flowRateInletVelocityCoupledFvPatchVectorField:: Foam::directMappedFlowRateFvPatchVectorField::
flowRateInletVelocityCoupledFvPatchVectorField directMappedFlowRateFvPatchVectorField
( (
const fvPatch& p, const fvPatch& p,
const DimensionedField<vector, volMesh>& iF const DimensionedField<vector, volMesh>& iF
@ -49,10 +47,10 @@ flowRateInletVelocityCoupledFvPatchVectorField
{} {}
Foam::flowRateInletVelocityCoupledFvPatchVectorField:: Foam::directMappedFlowRateFvPatchVectorField::
flowRateInletVelocityCoupledFvPatchVectorField directMappedFlowRateFvPatchVectorField
( (
const flowRateInletVelocityCoupledFvPatchVectorField& ptf, const directMappedFlowRateFvPatchVectorField& ptf,
const fvPatch& p, const fvPatch& p,
const DimensionedField<vector, volMesh>& iF, const DimensionedField<vector, volMesh>& iF,
const fvPatchFieldMapper& mapper const fvPatchFieldMapper& mapper
@ -65,8 +63,8 @@ flowRateInletVelocityCoupledFvPatchVectorField
{} {}
Foam::flowRateInletVelocityCoupledFvPatchVectorField:: Foam::directMappedFlowRateFvPatchVectorField::
flowRateInletVelocityCoupledFvPatchVectorField directMappedFlowRateFvPatchVectorField
( (
const fvPatch& p, const fvPatch& p,
const DimensionedField<vector, volMesh>& iF, const DimensionedField<vector, volMesh>& iF,
@ -80,10 +78,10 @@ flowRateInletVelocityCoupledFvPatchVectorField
{} {}
Foam::flowRateInletVelocityCoupledFvPatchVectorField:: Foam::directMappedFlowRateFvPatchVectorField::
flowRateInletVelocityCoupledFvPatchVectorField directMappedFlowRateFvPatchVectorField
( (
const flowRateInletVelocityCoupledFvPatchVectorField& ptf const directMappedFlowRateFvPatchVectorField& ptf
) )
: :
fixedValueFvPatchField<vector>(ptf), fixedValueFvPatchField<vector>(ptf),
@ -93,10 +91,10 @@ flowRateInletVelocityCoupledFvPatchVectorField
{} {}
Foam::flowRateInletVelocityCoupledFvPatchVectorField:: Foam::directMappedFlowRateFvPatchVectorField::
flowRateInletVelocityCoupledFvPatchVectorField directMappedFlowRateFvPatchVectorField
( (
const flowRateInletVelocityCoupledFvPatchVectorField& ptf, const directMappedFlowRateFvPatchVectorField& ptf,
const DimensionedField<vector, volMesh>& iF const DimensionedField<vector, volMesh>& iF
) )
: :
@ -109,7 +107,7 @@ flowRateInletVelocityCoupledFvPatchVectorField
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void Foam::flowRateInletVelocityCoupledFvPatchVectorField::updateCoeffs() void Foam::directMappedFlowRateFvPatchVectorField::updateCoeffs()
{ {
if (updated()) if (updated())
{ {
@ -127,35 +125,19 @@ void Foam::flowRateInletVelocityCoupledFvPatchVectorField::updateCoeffs()
nbrMesh nbrMesh
).boundary()[mpp.samplePolyPatch().index()]; ).boundary()[mpp.samplePolyPatch().index()];
// Force recalculation of mapping and schedule
const mapDistribute& distMap = mpp.map();
scalarList phi = scalarList phi =
nbrPatch.lookupPatchField<surfaceScalarField, scalar>(nbrPhiName_); nbrPatch.lookupPatchField<surfaceScalarField, scalar>(nbrPhiName_);
mapDistribute::distribute mpp.map().distribute(phi);
(
Pstream::defaultCommsType,
distMap.schedule(),
distMap.constructSize(),
distMap.subMap(), // what to send
distMap.constructMap(), // what to receive
phi
);
const surfaceScalarField& phiName = const surfaceScalarField& phiName =
db().lookupObject<surfaceScalarField>(phiName_); db().lookupObject<surfaceScalarField>(phiName_);
// a simpler way of doing this would be nice
//scalar avgU = -flowRate_/gSum(patch().magSf());
scalarField U = -phi/patch().magSf(); scalarField U = -phi/patch().magSf();
vectorField n = patch().nf(); vectorField n = patch().nf();
// const surfaceScalarField& phi =
// db().lookupObject<surfaceScalarField>(phiName_);
if (phiName.dimensions() == dimVelocity*dimArea) if (phiName.dimensions() == dimVelocity*dimArea)
{ {
// volumetric flow-rate // volumetric flow-rate
@ -186,7 +168,7 @@ void Foam::flowRateInletVelocityCoupledFvPatchVectorField::updateCoeffs()
{ {
FatalErrorIn FatalErrorIn
( (
"flowRateInletVelocityCoupledFvPatchVectorField::updateCoeffs()" "directMappedFlowRateFvPatchVectorField::updateCoeffs()"
) << "dimensions of " << phiName_ << " are incorrect" << nl ) << "dimensions of " << phiName_ << " are incorrect" << nl
<< " on patch " << this->patch().name() << " on patch " << this->patch().name()
<< " of field " << this->dimensionedInternalField().name() << " of field " << this->dimensionedInternalField().name()
@ -198,7 +180,7 @@ void Foam::flowRateInletVelocityCoupledFvPatchVectorField::updateCoeffs()
} }
void Foam::flowRateInletVelocityCoupledFvPatchVectorField::write void Foam::directMappedFlowRateFvPatchVectorField::write
( (
Ostream& os Ostream& os
) const ) const
@ -218,7 +200,7 @@ namespace Foam
makePatchTypeField makePatchTypeField
( (
fvPatchVectorField, fvPatchVectorField,
flowRateInletVelocityCoupledFvPatchVectorField directMappedFlowRateFvPatchVectorField
); );
} }

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2006-2011 OpenCFD Ltd. \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -22,7 +22,7 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class Class
Foam::flowRateInletVelocityCoupledFvPatchVectorField Foam::directMappedFlowRateFvPatchVectorField
Description Description
Describes a volumetric/mass flow normal vector boundary condition by its Describes a volumetric/mass flow normal vector boundary condition by its
@ -41,7 +41,7 @@ Description
@verbatim @verbatim
inlet inlet
{ {
type flowRateInletVelocityCoupled; type directMappedFlowRate;
phi phi; phi phi;
rho rho; rho rho;
neigPhi neigPhiName_; // Volumetric/mass flow rate neigPhi neigPhiName_; // Volumetric/mass flow rate
@ -50,18 +50,13 @@ Description
} }
@endverbatim @endverbatim
Note
- The value is positive inwards
- May not work correctly for transonic inlets
- Strange behaviour with potentialFoam since the U equation is not solved
SourceFiles SourceFiles
flowRateInletVelocityCoupledFvPatchVectorField.C directMappedFlowRateFvPatchVectorField.C
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#ifndef flowRateInletVelocityCoupledFvPatchVectorField_H #ifndef directMappedFlowRateFvPatchVectorField_H
#define flowRateInletVelocityCoupledFvPatchVectorField_H #define directMappedFlowRateFvPatchVectorField_H
#include "fixedValueFvPatchFields.H" #include "fixedValueFvPatchFields.H"
@ -73,7 +68,7 @@ namespace Foam
Class flowRateInletVelocityFvPatch Declaration Class flowRateInletVelocityFvPatch Declaration
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
class flowRateInletVelocityCoupledFvPatchVectorField class directMappedFlowRateFvPatchVectorField
: :
public fixedValueFvPatchVectorField public fixedValueFvPatchVectorField
{ {
@ -92,20 +87,20 @@ class flowRateInletVelocityCoupledFvPatchVectorField
public: public:
//- Runtime type information //- Runtime type information
TypeName("flowRateInletVelocityCoupled"); TypeName("directMappedFlowRate");
// Constructors // Constructors
//- Construct from patch and internal field //- Construct from patch and internal field
flowRateInletVelocityCoupledFvPatchVectorField directMappedFlowRateFvPatchVectorField
( (
const fvPatch&, const fvPatch&,
const DimensionedField<vector, volMesh>& const DimensionedField<vector, volMesh>&
); );
//- Construct from patch, internal field and dictionary //- Construct from patch, internal field and dictionary
flowRateInletVelocityCoupledFvPatchVectorField directMappedFlowRateFvPatchVectorField
( (
const fvPatch&, const fvPatch&,
const DimensionedField<vector, volMesh>&, const DimensionedField<vector, volMesh>&,
@ -113,20 +108,20 @@ public:
); );
//- Construct by mapping given //- Construct by mapping given
// flowRateInletVelocityCoupledFvPatchVectorField // directMappedFlowRateFvPatchVectorField
// onto a new patch // onto a new patch
flowRateInletVelocityCoupledFvPatchVectorField directMappedFlowRateFvPatchVectorField
( (
const flowRateInletVelocityCoupledFvPatchVectorField&, const directMappedFlowRateFvPatchVectorField&,
const fvPatch&, const fvPatch&,
const DimensionedField<vector, volMesh>&, const DimensionedField<vector, volMesh>&,
const fvPatchFieldMapper& const fvPatchFieldMapper&
); );
//- Construct as copy //- Construct as copy
flowRateInletVelocityCoupledFvPatchVectorField directMappedFlowRateFvPatchVectorField
( (
const flowRateInletVelocityCoupledFvPatchVectorField& const directMappedFlowRateFvPatchVectorField&
); );
//- Construct and return a clone //- Construct and return a clone
@ -134,14 +129,14 @@ public:
{ {
return tmp<fvPatchVectorField> return tmp<fvPatchVectorField>
( (
new flowRateInletVelocityCoupledFvPatchVectorField(*this) new directMappedFlowRateFvPatchVectorField(*this)
); );
} }
//- Construct as copy setting internal field reference //- Construct as copy setting internal field reference
flowRateInletVelocityCoupledFvPatchVectorField directMappedFlowRateFvPatchVectorField
( (
const flowRateInletVelocityCoupledFvPatchVectorField&, const directMappedFlowRateFvPatchVectorField&,
const DimensionedField<vector, volMesh>& const DimensionedField<vector, volMesh>&
); );
@ -153,7 +148,7 @@ public:
{ {
return tmp<fvPatchVectorField> return tmp<fvPatchVectorField>
( (
new flowRateInletVelocityCoupledFvPatchVectorField(*this, iF) new directMappedFlowRateFvPatchVectorField(*this, iF)
); );
} }

View File

@ -44,13 +44,10 @@ void Foam::cyclicFvPatch::makeWeights(scalarField& w) const
{ {
const cyclicFvPatch& nbrPatch = neighbFvPatch(); const cyclicFvPatch& nbrPatch = neighbFvPatch();
const scalarField& magFa = magSf();
const scalarField& nbrMagFa = nbrPatch.magSf();
const scalarField deltas(nf() & fvPatch::delta()); const scalarField deltas(nf() & fvPatch::delta());
const scalarField nbrDeltas(nbrPatch.nf() & nbrPatch.fvPatch::delta()); const scalarField nbrDeltas(nbrPatch.nf() & nbrPatch.fvPatch::delta());
forAll(magFa, facei) forAll(deltas, facei)
{ {
scalar di = deltas[facei]; scalar di = deltas[facei];
scalar dni = nbrDeltas[facei]; scalar dni = nbrDeltas[facei];

View File

@ -409,11 +409,32 @@ Foam::label Foam::scotchDecomp::decomposeOneProc
<< exit(FatalError); << exit(FatalError);
} }
scalar velotabSum = sum(cWeights)/minWeights;
scalar rangeScale(1.0);
if (velotabSum > scalar(INT_MAX - 1))
{
// 0.9 factor of safety to avoid floating point round-off in
// rangeScale tipping the subsequent sum over the integer limit.
rangeScale = 0.9*scalar(INT_MAX - 1)/velotabSum;
WarningIn
(
"scotchDecomp::decompose"
"(const pointField&, const scalarField&)"
) << "Sum of weights has overflowed integer: " << velotabSum
<< ", compressing weight scale by a factor of " << rangeScale
<< endl;
}
// Convert to integers. // Convert to integers.
velotab.setSize(cWeights.size()); velotab.setSize(cWeights.size());
forAll(velotab, i) forAll(velotab, i)
{ {
velotab[i] = int(cWeights[i]/minWeights); velotab[i] =
int((cWeights[i]/minWeights - 1)*rangeScale) + 1;
} }
} }

View File

@ -1,11 +1,3 @@
/* derived patches */
derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2.C
derivedFvPatchFields/flowRateInletVelocityCoupled/flowRateInletVelocityCoupledFvPatchVectorField.C
derivedFvPatchFields/totalFlowRateAdvectiveDiffusiveFvPatchScalarField/totalFlowRateAdvectiveDiffusiveFvPatchScalarField.C
derivedFvPatchFields/turbulentTemperatureRadiativeCoupledMixed/turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField.C
/* Pyrolysis models */ /* Pyrolysis models */
pyrolysisModel/pyrolysisModel.C pyrolysisModel/pyrolysisModel.C
pyrolysisModel/pyrolysisModelNew.C pyrolysisModel/pyrolysisModelNew.C

View File

@ -1,327 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2010-2011 OpenCFD Ltd.
\\/ 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 "turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2.H"
#include "addToRunTimeSelectionTable.H"
#include "fvPatchFieldMapper.H"
#include "volFields.H"
#include "directMappedPatchBase.H"
#include "mapDistribute.H"
#include "basicThermo.H"
#include "LESModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace compressible
{
namespace LESModels
{
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2::
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2
(
const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF
)
:
mixedFvPatchScalarField(p, iF),
nbrFieldName_("undefined-nbrFieldName"),
KName_("undefined-K")
{
this->refValue() = 0.0;
this->refGrad() = 0.0;
this->valueFraction() = 1.0;
}
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2::
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2
(
const turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2& ptf,
const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF,
const fvPatchFieldMapper& mapper
)
:
mixedFvPatchScalarField(ptf, p, iF, mapper),
nbrFieldName_(ptf.nbrFieldName_),
KName_(ptf.KName_)
{}
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2::
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2
(
const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF,
const dictionary& dict
)
:
mixedFvPatchScalarField(p, iF),
nbrFieldName_(dict.lookup("nbrFieldName")),
KName_(dict.lookup("K"))
{
if (!isA<directMappedPatchBase>(this->patch().patch()))
{
FatalErrorIn
(
"turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2::"
"turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2\n"
"(\n"
" const fvPatch& p,\n"
" const DimensionedField<scalar, volMesh>& iF,\n"
" const dictionary& dict\n"
")\n"
) << "\n patch type '" << p.type()
<< "' not type '" << directMappedPatchBase::typeName << "'"
<< "\n for patch " << p.name()
<< " of field " << dimensionedInternalField().name()
<< " in file " << dimensionedInternalField().objectPath()
<< exit(FatalError);
}
fvPatchScalarField::operator=(scalarField("value", dict, p.size()));
if (dict.found("refValue"))
{
// Full restart
refValue() = scalarField("refValue", dict, p.size());
refGrad() = scalarField("refGradient", dict, p.size());
valueFraction() = scalarField("valueFraction", dict, p.size());
}
else
{
// Start from user entered data. Assume fixedValue.
refValue() = *this;
refGrad() = 0.0;
valueFraction() = 1.0;
}
}
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2::
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2
(
const turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2& wtcsf,
const DimensionedField<scalar, volMesh>& iF
)
:
mixedFvPatchScalarField(wtcsf, iF),
nbrFieldName_(wtcsf.nbrFieldName_),
KName_(wtcsf.KName_)
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
tmp<scalarField>
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2::K() const
{
const fvMesh& mesh = patch().boundaryMesh().mesh();
if (KName_ == "none")
{
const LESModel& model = db().lookupObject<LESModel>("LESProperties");
const basicThermo& thermo =
db().lookupObject<basicThermo>("thermophysicalProperties");
return
model.alphaEff()().boundaryField()[patch().index()]
*thermo.Cp()().boundaryField()[patch().index()];
}
else if (mesh.objectRegistry::foundObject<volScalarField>(KName_))
{
return patch().lookupPatchField<volScalarField, scalar>(KName_);
}
else if (mesh.objectRegistry::foundObject<volSymmTensorField>(KName_))
{
const symmTensorField& KWall =
patch().lookupPatchField<volSymmTensorField, scalar>(KName_);
vectorField n = patch().nf();
return n & KWall & n;
}
else
{
FatalErrorIn
(
"turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2::K()"
" const"
) << "Did not find field " << KName_
<< " on mesh " << mesh.name() << " patch " << patch().name()
<< endl
<< "Please set 'K' to 'none', a valid volScalarField"
<< " or a valid volSymmTensorField." << exit(FatalError);
return scalarField(0);
}
}
void turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2::updateCoeffs()
{
if (updated())
{
return;
}
// Get the coupling information from the directMappedPatchBase
const directMappedPatchBase& mpp = refCast<const directMappedPatchBase>
(
patch().patch()
);
const polyMesh& nbrMesh = mpp.sampleMesh();
const fvPatch& nbrPatch = refCast<const fvMesh>
(
nbrMesh
).boundary()[mpp.samplePolyPatch().index()];
// Force recalculation of mapping and schedule
const mapDistribute& distMap = mpp.map();
tmp<scalarField> intFld = patchInternalField();
// Calculate the temperature by harmonic averaging
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
const turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2& nbrField =
refCast
<
const turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2
>
(
nbrPatch.lookupPatchField<volScalarField, scalar>
(
nbrFieldName_
)
);
// Swap to obtain full local values of neighbour internal field
scalarField nbrIntFld = nbrField.patchInternalField();
mapDistribute::distribute
(
Pstream::defaultCommsType,
distMap.schedule(),
distMap.constructSize(),
distMap.subMap(), // what to send
distMap.constructMap(), // what to receive
nbrIntFld
);
// Swap to obtain full local values of neighbour K*delta
scalarField nbrKDelta = nbrField.K()*nbrPatch.deltaCoeffs();
mapDistribute::distribute
(
Pstream::defaultCommsType,
distMap.schedule(),
distMap.constructSize(),
distMap.subMap(), // what to send
distMap.constructMap(), // what to receive
nbrKDelta
);
tmp<scalarField> myKDelta = K()*patch().deltaCoeffs();
// Both sides agree on
// - temperature : (myKDelta*fld + nbrKDelta*nbrFld)/(myKDelta+nbrKDelta)
// - gradient : (temperature-fld)*delta
// We've got a degree of freedom in how to implement this in a mixed bc.
// (what gradient, what fixedValue and mixing coefficient)
// Two reasonable choices:
// 1. specify above temperature on one side (preferentially the high side)
// and above gradient on the other. So this will switch between pure
// fixedvalue and pure fixedgradient
// 2. specify gradient and temperature such that the equations are the
// same on both sides. This leads to the choice of
// - refGradient = zero gradient
// - refValue = neighbour value
// - mixFraction = nbrKDelta / (nbrKDelta + myKDelta())
this->refValue() = nbrIntFld;
this->refGrad() = 0.0;
this->valueFraction() = nbrKDelta / (nbrKDelta + myKDelta());
mixedFvPatchScalarField::updateCoeffs();
if (debug)
{
scalar Q = gSum(K()*patch().magSf()*snGrad());
Info<< patch().boundaryMesh().mesh().name() << ':'
<< patch().name() << ':'
<< this->dimensionedInternalField().name() << " <- "
<< nbrMesh.name() << ':'
<< nbrPatch.name() << ':'
<< this->dimensionedInternalField().name() << " :"
<< " heat[W]:" << Q
<< " walltemperature "
<< " min:" << gMin(*this)
<< " max:" << gMax(*this)
<< " avg:" << gAverage(*this)
<< endl;
}
}
void turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2::write
(
Ostream& os
) const
{
mixedFvPatchScalarField::write(os);
os.writeKeyword("nbrFieldName")<< nbrFieldName_
<< token::END_STATEMENT << nl;
os.writeKeyword("K") << KName_ << token::END_STATEMENT << nl;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makePatchTypeField
(
fvPatchScalarField,
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2
);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace compressible
} // End namespace Foam
} // End namespace LESModels
// ************************************************************************* //

View File

@ -1,190 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2010-2011 OpenCFD Ltd.
\\/ 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::compressible::LESModels
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2
Description
Mixed boundary condition for temperature, to be used for heat-transfer
on back-to-back baffles.
If my temperature is T1, neighbour is T2:
T1 > T2: my side becomes fixedValue T2 bc, other side becomes fixedGradient.
Example usage:
myInterfacePatchName
{
type compressible::turbulentTemperatureCoupledBaffleMixed;
nbrFieldName T;
K K; // or none
value uniform 300;
}
Needs to be on underlying directMapped(Wall)FvPatch.
Note: if K is "none" looks up RASModel and basicThermo, otherwise expects
the solver to calculate a 'K' field.
Note: runs in parallel with arbitrary decomposition. Uses directMapped
functionality to calculate exchange.
Note: lags interface data so both sides use same data.
- problem: schedule to calculate average would interfere
with standard processor swaps.
- so: updateCoeffs sets both to same Twall. Only need to do
this for last outer iteration but don't have access to this.
SourceFiles
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2.C
\*---------------------------------------------------------------------------*/
#ifndef turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2_H
#define turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2_H
#include "mixedFvPatchFields.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace compressible
{
namespace LESModels
{
/*---------------------------------------------------------------------------*\
Class turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2 Declaration
\*---------------------------------------------------------------------------*/
class turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2
:
public mixedFvPatchScalarField
{
// Private data
//- Name of field on the neighbour region
const word nbrFieldName_;
//- Name of thermal conductivity field
const word KName_;
public:
//- Runtime type information
TypeName("compressible::turbulentTemperatureCoupledBaffleMixed2");
// Constructors
//- Construct from patch and internal field
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2
(
const fvPatch&,
const DimensionedField<scalar, volMesh>&
);
//- Construct from patch, internal field and dictionary
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2
(
const fvPatch&,
const DimensionedField<scalar, volMesh>&,
const dictionary&
);
//- Construct by mapping given
// turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2 onto a
// new patch
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2
(
const turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2&,
const fvPatch&,
const DimensionedField<scalar, volMesh>&,
const fvPatchFieldMapper&
);
//- Construct and return a clone
virtual tmp<fvPatchScalarField> clone() const
{
return tmp<fvPatchScalarField>
(
new turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2
(
*this
)
);
}
//- Construct as copy setting internal field reference
turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2
(
const turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2&,
const DimensionedField<scalar, volMesh>&
);
//- Construct and return a clone setting internal field reference
virtual tmp<fvPatchScalarField> clone
(
const DimensionedField<scalar, volMesh>& iF
) const
{
return tmp<fvPatchScalarField>
(
new turbulentTemperatureCoupledBaffleMixedFvPatchScalarField2
(
*this,
iF
)
);
}
// Member functions
//- Get corresponding K field
tmp<scalarField> K() const;
//- Update the coefficients associated with the patch field
virtual void updateCoeffs();
//- Write
virtual void write(Ostream&) const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace LESModels
} // End namespace compressible
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -1,539 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2010-2011 OpenCFD Ltd.
\\/ 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 "turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField.H"
#include "addToRunTimeSelectionTable.H"
#include "fvPatchFieldMapper.H"
#include "volFields.H"
#include "directMappedPatchBase.H"
#include "mapDistribute.H"
#include "regionProperties.H"
#include "basicThermo.H"
#include "LESModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace compressible
{
template<>
const char*
NamedEnum
<
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField::
operationMode,
4
>::names[] =
{
"radiative_flux_from_neighbouring_region",
"radiative_flux_from_this_region",
"no_radiation_contribution",
"unknown"
};
const NamedEnum
<
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField::
operationMode,
4
>
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField::
operationModeNames;
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField::
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField
(
const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF
)
:
mixedFvPatchScalarField(p, iF),
neighbourFieldName_("undefined-neighbourFieldName"),
neighbourFieldRadiativeName_("undefined-neigbourFieldRadiativeName"),
fieldRadiativeName_("undefined-fieldRadiativeName"),
KName_("undefined-K"),
oldMode_(unknown)
{
this->refValue() = 0.0;
this->refGrad() = 0.0;
this->valueFraction() = 1.0;
}
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField::
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField
(
const turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField& ptf,
const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF,
const fvPatchFieldMapper& mapper
)
:
mixedFvPatchScalarField(ptf, p, iF, mapper),
neighbourFieldName_(ptf.neighbourFieldName_),
neighbourFieldRadiativeName_(ptf.neighbourFieldRadiativeName_),
fieldRadiativeName_(ptf.fieldRadiativeName_),
KName_(ptf.KName_),
oldMode_(ptf.oldMode_)
{}
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField::
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField
(
const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF,
const dictionary& dict
)
:
mixedFvPatchScalarField(p, iF),
neighbourFieldName_(dict.lookup("neighbourFieldName")),
neighbourFieldRadiativeName_(dict.lookup("neighbourFieldRadiativeName")),
fieldRadiativeName_(dict.lookup("fieldRadiativeName")),
KName_(dict.lookup("K")),
oldMode_(unknown)
{
if (!isA<directMappedPatchBase>(this->patch().patch()))
{
FatalErrorIn
(
"turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField::"
"turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField\n"
"(\n"
" const fvPatch& p,\n"
" const DimensionedField<scalar, volMesh>& iF,\n"
" const dictionary& dict\n"
")\n"
) << "\n patch type '" << p.type()
<< "' not type '" << directMappedPatchBase::typeName << "'"
<< "\n for patch " << p.name()
<< " of field " << dimensionedInternalField().name()
<< " in file " << dimensionedInternalField().objectPath()
<< exit(FatalError);
}
fvPatchScalarField::operator=(scalarField("value", dict, p.size()));
if (dict.found("refValue"))
{
// Full restart
refValue() = scalarField("refValue", dict, p.size());
refGrad() = scalarField("refGradient", dict, p.size());
valueFraction() = scalarField("valueFraction", dict, p.size());
}
else
{
// Start from user entered data. Assume fixedValue.
refValue() = *this;
refGrad() = 0.0;
valueFraction() = 1.0;
}
}
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField::
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField
(
const turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField&
wtcsf,
const DimensionedField<scalar, volMesh>& iF
)
:
mixedFvPatchScalarField(wtcsf, iF),
neighbourFieldName_(wtcsf.neighbourFieldName_),
neighbourFieldRadiativeName_(wtcsf.neighbourFieldRadiativeName_),
fieldRadiativeName_(wtcsf.fieldRadiativeName_),
KName_(wtcsf.KName_),
oldMode_(wtcsf.oldMode_)
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
tmp<scalarField>
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField::K() const
{
const fvMesh& mesh = patch().boundaryMesh().mesh();
if (KName_ == "none")
{
const compressible::LESModel& model =
db().lookupObject<compressible::LESModel>("LESProperties");
const basicThermo& thermo =
db().lookupObject<basicThermo>("thermophysicalProperties");
return
model.alphaEff()().boundaryField()[patch().index()]
*thermo.Cp()().boundaryField()[patch().index()];
}
else if (mesh.objectRegistry::foundObject<volScalarField>(KName_))
{
return patch().lookupPatchField<volScalarField, scalar>(KName_);
}
else if (mesh.objectRegistry::foundObject<volSymmTensorField>(KName_))
{
const symmTensorField& KWall =
patch().lookupPatchField<volSymmTensorField, scalar>(KName_);
vectorField n = patch().nf();
return n & KWall & n;
}
else
{
FatalErrorIn
(
"turbulentTemperatureCoupledBaffleMixedFvPatchScalarField::K()"
" const"
) << "Did not find field " << KName_
<< " on mesh " << mesh.name() << " patch " << patch().name()
<< endl
<< "Please set 'K' to 'none', a valid volScalarField"
<< " or a valid volSymmTensorField." << exit(FatalError);
return scalarField(0);
}
}
void turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField::
updateCoeffs()
{
if (updated())
{
return;
}
// Get the coupling information from the directMappedPatchBase
const directMappedPatchBase& mpp = refCast<const directMappedPatchBase>
(
patch().patch()
);
const polyMesh& nbrMesh = mpp.sampleMesh();
const fvPatch& nbrPatch = refCast<const fvMesh>
(
nbrMesh
).boundary()[mpp.samplePolyPatch().index()];
// Force recalculation of mapping and schedule
const mapDistribute& distMap = mpp.map();
scalarField intFld = patchInternalField();
const turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField&
nbrField =
refCast
<
const turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField
>
(
nbrPatch.lookupPatchField<volScalarField, scalar>
(
neighbourFieldName_
)
);
// Swap to obtain full local values of neighbour internal field
scalarField nbrIntFld = nbrField.patchInternalField();
mapDistribute::distribute
(
Pstream::defaultCommsType,
distMap.schedule(),
distMap.constructSize(),
distMap.subMap(), // what to send
distMap.constructMap(), // what to receive
nbrIntFld
);
if (debug)
{
Info<< patch().boundaryMesh().mesh().name() << ':'
<< patch().name() << ':'
<< this->dimensionedInternalField().name() << " :"
<< " internalT "
<< " min:" << gMin(*this)
<< " max:" << gMax(*this)
<< " avg:" << gAverage(*this)
<< endl;
Info<< nbrMesh.name() << ':'
<< nbrPatch.name() << ':'
<< this->dimensionedInternalField().name() << " :"
<< " internalT "
<< " min:" << gMin(nbrIntFld)
<< " max:" << gMax(nbrIntFld)
<< " avg:" << gAverage(nbrIntFld)
<< endl;
}
// Check how to operate
operationMode mode = unknown;
{
if (neighbourFieldRadiativeName_ != "none")
{
if
(
nbrMesh.foundObject<volScalarField>
(
neighbourFieldRadiativeName_
)
)
{
mode = radFromNeighbour;
}
else
{
mode = noRad;
}
}
else
{
if
(
patch().boundaryMesh().mesh().foundObject<volScalarField>
(
fieldRadiativeName_
)
)
{
mode = radFromMe;
}
else
{
mode = noRad;
}
}
// Do some warnings if change of mode.
if (mode != oldMode_)
{
WarningIn
(
"turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField"
"::updateCoeffs()"
) << "Switched from mode " << operationModeNames[oldMode_]
<< " to mode " << operationModeNames[mode]
<< endl;
}
oldMode_ = mode;
}
// Swap to obtain full local values of neighbour K*delta
scalarField nbrKDelta = nbrField.K()*nbrPatch.deltaCoeffs();
mapDistribute::distribute
(
Pstream::defaultCommsType,
distMap.schedule(),
distMap.constructSize(),
distMap.subMap(), // what to send
distMap.constructMap(), // what to receive
nbrKDelta
);
scalarField myKDelta = K()*patch().deltaCoeffs();
scalarField nbrConvFlux = nbrKDelta*(*this - nbrIntFld);
scalarField nbrTotalFlux = nbrConvFlux;
scalarList nbrRadField(nbrPatch.size(), 0.0);
scalarList myRadField(patch().size(), 0.0);
// solid
if (mode == radFromNeighbour)
{
nbrRadField =
nbrPatch.lookupPatchField<volScalarField, scalar>
(
neighbourFieldRadiativeName_
);
// Note: the Qr radiative flux is positive outgoing.
// For a hot solid radiating into a cold fluid Qr will be negative.
// Swap to obtain full local values of neighbour radiative heat flux
// field
mapDistribute::distribute
(
Pstream::defaultCommsType,
distMap.schedule(),
distMap.constructSize(),
distMap.subMap(), // what to send
distMap.constructMap(), // what to receive
nbrRadField
);
nbrTotalFlux -= nbrRadField;
const scalarField Twall =
(nbrRadField + myKDelta*intFld + nbrKDelta*nbrIntFld)
/(myKDelta + nbrKDelta);
if (debug)
{
scalar Qr = gSum(nbrRadField*patch().magSf());
Info<< patch().boundaryMesh().mesh().name() << ':'
<< patch().name() << ':'
<< this->dimensionedInternalField().name() << " :" << nl
<< " radiative heat [W] : " << Qr << nl
<< " predicted wallT [K] : " << gAverage(Twall) << nl
<< endl;
}
label nFixed = 0;
forAll(*this, i)
{
this->refValue()[i] = Twall[i];
this->refGrad()[i] = 0.0; // not used
this->valueFraction()[i] = 1.0;
nFixed++;
}
if (debug)
{
Pout<< "Using " << nFixed << " fixedValue out of " << this->size()
<< endl;
}
}
else if (mode == radFromMe) //fluid
{
const scalarField& myRadField =
patch().lookupPatchField<volScalarField, scalar>
(
fieldRadiativeName_
);
const scalarField Twall =
(myRadField + myKDelta*intFld + nbrKDelta*nbrIntFld)
/(myKDelta + nbrKDelta);
if (debug)
{
scalar Qr = gSum(myRadField*patch().magSf());
Info<< patch().boundaryMesh().mesh().name() << ':'
<< patch().name() << ':'
<< this->dimensionedInternalField().name() << " :" << nl
<< " radiative heat [W] : " << Qr << nl
<< " predicted wallT [K] : " << gAverage(Twall) << nl
<< endl;
}
this->refValue() = Twall;
this->refGrad() = 0.0; // not used
this->valueFraction() = 1.0;
}
else if (mode == noRad)
{
this->refValue() = nbrIntFld;
this->refGrad() = 0.0;
this->valueFraction() = nbrKDelta / (nbrKDelta + myKDelta);
}
else
{
FatalErrorIn
(
"turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField"
"::updateCoeffs()"
) << "Illegal mode " << operationModeNames[mode]
<< exit(FatalError);
}
mixedFvPatchScalarField::updateCoeffs();
if (debug)
{
scalar Qc = gSum(nbrConvFlux*patch().magSf());
scalar Qr = gSum(nbrRadField*patch().magSf());
scalar Qt = gSum(nbrTotalFlux*patch().magSf());
Info<< patch().boundaryMesh().mesh().name() << ':'
<< patch().name() << ':'
<< this->dimensionedInternalField().name() << " <- "
<< nbrMesh.name() << ':'
<< nbrPatch.name() << ':'
<< this->dimensionedInternalField().name() << " :" << nl
<< " convective heat[W] : " << Qc << nl
<< " radiative heat [W] : " << Qr << nl
<< " total heat [W] : " << Qt << nl
<< " walltemperature "
<< " min:" << gMin(*this)
<< " max:" << gMax(*this)
<< " avg:" << gAverage(*this)
<< endl;
}
}
void turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField::write
(
Ostream& os
) const
{
mixedFvPatchScalarField::write(os);
os.writeKeyword("neighbourFieldName")<< neighbourFieldName_
<< token::END_STATEMENT << nl;
os.writeKeyword("neighbourFieldRadiativeName")<<
neighbourFieldRadiativeName_ << token::END_STATEMENT << nl;
os.writeKeyword("fieldRadiativeName")<< fieldRadiativeName_
<< token::END_STATEMENT << nl;
os.writeKeyword("K") << KName_ << token::END_STATEMENT << nl;
// temperatureCoupledBase::write(os);
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makePatchTypeField
(
fvPatchScalarField,
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField
);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace compressible
} // End namespace Foam
// ************************************************************************* //

View File

@ -1,221 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2010-2011 OpenCFD Ltd.
\\/ 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::
compressible::
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField
Description
Mixed boundary condition for temperature, to be used for heat-transfer
on back-to-back baffles.
If my temperature is T1, neighbour is T2:
T1 > T2: my side becomes fixedValue T2 bc, other side becomes fixedGradient.
Example usage:
myInterfacePatchName
{
type compressible::turbulentTemperatureRadiationCoupledMixedST;
neighbourFieldName T;
K lookup;
KName K;
neighbourFieldRadiativeName Qr; // or none. Use on solid side
fieldRadiativeName Qr; // fluid. Use on fluid side
value uniform 300;
}
Needs to be on underlying directMapped(Wall)FvPatch.
Note: K : heat conduction at patch. Gets supplied how to lookup/calculate K:
- 'lookup' : lookup volScalarField (or volSymmTensorField) with name
- 'basicThermo' : use basicThermo and compressible::RASmodel to calculate K
- 'solidThermo' : use basicSolidThermo K()
- 'directionalSolidThermo' directionalK()
Note: runs in parallel with arbitrary decomposition. Uses directMapped
functionality to calculate exchange.
Note: lags interface data so both sides use same data.
- problem: schedule to calculate average would interfere
with standard processor swaps.
- so: updateCoeffs sets both to same Twall. Only need to do
this for last outer iteration but don't have access to this.
SourceFiles
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField.C
\*---------------------------------------------------------------------------*/
#ifndef turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField_H
#define turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField_H
#include "mixedFvPatchFields.H"
//#include "temperatureCoupledBase.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace compressible
{
/*---------------------------------------------------------------------------*\
Class turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField
Declaration
\*---------------------------------------------------------------------------*/
class turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField
:
public mixedFvPatchScalarField
// public temperatureCoupledBase
{
// Private data
//- Name of field on the neighbour region
const word neighbourFieldName_;
//- Name of the radiative heat flux in the neighbout region
const word neighbourFieldRadiativeName_;
//- Name of the radiative heat flux in the my region
const word fieldRadiativeName_;
//- Name of thermal conductivity field
const word KName_;
//- how to obtain radiative flux
enum operationMode
{
radFromNeighbour,
radFromMe,
noRad,
unknown
};
static const NamedEnum<operationMode, 4> operationModeNames;
//- Previous iteration mode
operationMode oldMode_;
public:
//- Runtime type information
TypeName("compressible::turbulentTemperatureRadiationCoupledMixedST");
// Constructors
//- Construct from patch and internal field
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField
(
const fvPatch&,
const DimensionedField<scalar, volMesh>&
);
//- Construct from patch, internal field and dictionary
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField
(
const fvPatch&,
const DimensionedField<scalar, volMesh>&,
const dictionary&
);
//- Construct by mapping given
// turbulentTemperatureCoupledBaffleMixedFvPatchScalarField onto a
// new patch
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField
(
const
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField&,
const fvPatch&,
const DimensionedField<scalar, volMesh>&,
const fvPatchFieldMapper&
);
//- Construct and return a clone
virtual tmp<fvPatchScalarField> clone() const
{
return tmp<fvPatchScalarField>
(
new
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField
(
*this
)
);
}
//- Construct as copy setting internal field reference
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField
(
const
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField&,
const DimensionedField<scalar, volMesh>&
);
//- Construct and return a clone setting internal field reference
virtual tmp<fvPatchScalarField> clone
(
const DimensionedField<scalar, volMesh>& iF
) const
{
return tmp<fvPatchScalarField>
(
new
turbulentTemperatureRadiationCoupledMixedSTFvPatchScalarField
(
*this,
iF
)
);
}
// Member functions
//- Get corresponding K field
tmp<scalarField> K() const;
//- Update the coefficients associated with the patch field
virtual void updateCoeffs();
//- Write
virtual void write(Ostream&) const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace compressible
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -1,5 +1,4 @@
derivedFvPatchFields/filmPyrolysisVelocityCoupled/filmPyrolysisVelocityCoupledFvPatchVectorField.C derivedFvPatchFields/filmPyrolysisVelocityCoupled/filmPyrolysisVelocityCoupledFvPatchVectorField.C
derivedFvPatchFields/filmPyrolysisTemperatureCoupled/filmPyrolysisTemperatureCoupledFvPatchScalarField.C derivedFvPatchFields/filmPyrolysisTemperatureCoupled/filmPyrolysisTemperatureCoupledFvPatchScalarField.C
LIB = $(FOAM_LIBBIN)/libregionCoupling LIB = $(FOAM_LIBBIN)/libregionCoupling

View File

@ -8,6 +8,7 @@ EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/solid/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/solid/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/solidChemistryModel/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/solidChemistryModel/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/radiationModels/lnInclude \
-I$(LIB_SRC)/turbulenceModels \ -I$(LIB_SRC)/turbulenceModels \
-I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel/lnInclude \
-I$(LIB_SRC)/turbulenceModels/compressible/RAS/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/RAS/lnInclude \

View File

@ -3,5 +3,7 @@ regionModel/regionModel.C
singleLayerRegion/singleLayerRegion.C singleLayerRegion/singleLayerRegion.C
regionModel1D/regionModel1D.C regionModel1D/regionModel1D.C
/* Boundary conditions */
derivedFvPatches/directMappedVariableThicknessWall/directMappedVariableThicknessWallFvPatch.C
LIB = $(FOAM_LIBBIN)/libregionModels LIB = $(FOAM_LIBBIN)/libregionModels

View File

@ -64,13 +64,12 @@ noThermo::~noThermo()
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
void noThermo::preEvolveRegion() void noThermo::preEvolveRegion()
{ {}
}
void noThermo::evolveRegion() void noThermo::evolveRegion()
{ {}
}
const tmp<volScalarField> noThermo::Cp() const const tmp<volScalarField> noThermo::Cp() const
{ {
@ -103,6 +102,7 @@ const volScalarField& noThermo::kappa() const
return volScalarField::null(); return volScalarField::null();
} }
const volScalarField& noThermo::rho() const const volScalarField& noThermo::rho() const
{ {
FatalErrorIn("const volScalarField& noThermo::rho() const") FatalErrorIn("const volScalarField& noThermo::rho() const")
@ -110,6 +110,7 @@ const volScalarField& noThermo::rho() const
return volScalarField::null(); return volScalarField::null();
} }
const volScalarField& noThermo::K() const const volScalarField& noThermo::K() const
{ {
FatalErrorIn("const volScalarField& noThermo::K() const") FatalErrorIn("const volScalarField& noThermo::K() const")
@ -117,6 +118,7 @@ const volScalarField& noThermo::K() const
return volScalarField::null(); return volScalarField::null();
} }
const volScalarField& noThermo::T() const const volScalarField& noThermo::T() const
{ {
FatalErrorIn("const volScalarField& noThermo::T() const") FatalErrorIn("const volScalarField& noThermo::T() const")

View File

@ -131,7 +131,6 @@ void thermoBaffle2D::solveEnergy()
TEqn.solve(); TEqn.solve();
thermo_->correct(); thermo_->correct();
} }
@ -217,8 +216,7 @@ thermoBaffle2D::~thermoBaffle2D()
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
void thermoBaffle2D::preEvolveRegion() void thermoBaffle2D::preEvolveRegion()
{ {}
}
void thermoBaffle2D::evolveRegion() void thermoBaffle2D::evolveRegion()
@ -229,31 +227,37 @@ void thermoBaffle2D::evolveRegion()
} }
} }
const tmp<volScalarField> thermoBaffle2D::Cp() const const tmp<volScalarField> thermoBaffle2D::Cp() const
{ {
return thermo_->Cp(); return thermo_->Cp();
} }
const volScalarField& thermoBaffle2D::kappa() const const volScalarField& thermoBaffle2D::kappa() const
{ {
return thermo_->kappa(); return thermo_->kappa();
} }
const volScalarField& thermoBaffle2D::rho() const const volScalarField& thermoBaffle2D::rho() const
{ {
return thermo_->rho(); return thermo_->rho();
} }
const volScalarField& thermoBaffle2D::K() const const volScalarField& thermoBaffle2D::K() const
{ {
return thermo_->K(); return thermo_->K();
} }
const volScalarField& thermoBaffle2D::T() const const volScalarField& thermoBaffle2D::T() const
{ {
return T_; return T_;
} }
void thermoBaffle2D::info() const void thermoBaffle2D::info() const
{ {
Info<< indent << "min/max(T) = " << min(T_).value() << ", " Info<< indent << "min/max(T) = " << min(T_).value() << ", "
@ -275,6 +279,7 @@ void thermoBaffle2D::info() const
} }
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // end namespace thermoBaffleModels } // end namespace thermoBaffleModels

View File

@ -80,6 +80,7 @@ protected:
//- Number of non orthogonal correctors //- Number of non orthogonal correctors
label nNonOrthCorr_; label nNonOrthCorr_;
// Thermo properties // Thermo properties
//- Solid thermo //- Solid thermo
@ -88,6 +89,7 @@ protected:
//- Temperature / [K] //- Temperature / [K]
volScalarField& T_; volScalarField& T_;
// Source term fields // Source term fields
//- Surface energy source / [J/m2/s] //- Surface energy source / [J/m2/s]

View File

@ -50,7 +50,7 @@ inline tmp<scalarField> thermoBaffle2D::hs
const label patchI const label patchI
) const ) const
{ {
const scalarField& Cp = thermo_->Cp()().boundaryField()[patchI]; const scalarField Cp(thermo_->Cp(patchI));
return Cp*(T - 298.15); return Cp*(T - 298.15);
} }

View File

@ -74,7 +74,7 @@ thermoBaffleModel::thermoBaffleModel(const word& modelType, const fvMesh& mesh)
{ {
const polyBoundaryMesh& rbm = regionMesh().boundaryMesh(); const polyBoundaryMesh& rbm = regionMesh().boundaryMesh();
// Check if region mesh in oneD // Check if region mesh in 1-D
label nTotalEdges = 0; label nTotalEdges = 0;
const label patchi = intCoupledPatchIDs_[0]; const label patchi = intCoupledPatchIDs_[0];
nTotalEdges = 2*nLayers_*rbm[patchi].nInternalEdges(); nTotalEdges = 2*nLayers_*rbm[patchi].nInternalEdges();
@ -113,10 +113,10 @@ thermoBaffleModel::thermoBaffleModel(const word& modelType, const fvMesh& mesh)
FatalErrorIn FatalErrorIn
( (
"thermoBaffleModel::thermoBaffleModel" "thermoBaffleModel::thermoBaffleModel"
"(\n" "("
" const word& modelType," " const word&,"
" const fvMesh& mesh" " const fvMesh&"
")\n" ")"
) << "\n patch type '" << pp.type() ) << "\n patch type '" << pp.type()
<< "' not type '" << "' not type '"
<< directMappedVariableThicknessWallPolyPatch::typeName << directMappedVariableThicknessWallPolyPatch::typeName
@ -129,10 +129,10 @@ thermoBaffleModel::thermoBaffleModel(const word& modelType, const fvMesh& mesh)
FatalErrorIn FatalErrorIn
( (
"thermoBaffleModel::thermoBaffleModel" "thermoBaffleModel::thermoBaffleModel"
"(\n" "("
" const word& modelType," " const word&,"
" const fvMesh& mesh" " const fvMesh&"
")\n" ")"
) << "\n patch type '" << pp.type() ) << "\n patch type '" << pp.type()
<< "' not type '" << "' not type '"
<< directMappedWallPolyPatch::typeName << directMappedWallPolyPatch::typeName
@ -161,8 +161,8 @@ thermoBaffleModel::thermoBaffleModel(const word& modelType, const fvMesh& mesh)
( (
"thermoBaffleModel::thermoBaffleModel" "thermoBaffleModel::thermoBaffleModel"
"(" "("
" const word& modelType," " const word&,"
" const fvMesh& mesh" " const fvMesh&"
")" ")"
) << " coupled patches in thermoBaffle are " << nl ) << " coupled patches in thermoBaffle are " << nl
<< " different sizes from list thickness" << nl << " different sizes from list thickness" << nl
@ -188,7 +188,6 @@ thermoBaffleModel::thermoBaffleModel(const word& modelType, const fvMesh& mesh)
} }
} }
} }
} }
} }
@ -202,8 +201,7 @@ thermoBaffleModel::~thermoBaffleModel()
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
void thermoBaffleModel::preEvolveRegion() void thermoBaffleModel::preEvolveRegion()
{ {}
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -173,7 +173,6 @@ public:
//- Pre-evolve region //- Pre-evolve region
virtual void preEvolveRegion(); virtual void preEvolveRegion();
}; };

View File

@ -38,8 +38,6 @@ SourceFiles
#include "ODEChemistryModel.H" #include "ODEChemistryModel.H"
#include "IOdictionary.H" #include "IOdictionary.H"
#include "scalarField.H" #include "scalarField.H"
#include "autoPtr.H"
#include "runTimeSelectionTables.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -69,21 +67,6 @@ public:
TypeName("chemistrySolver"); TypeName("chemistrySolver");
// Declare runtime constructor selection table
declareRunTimeSelectionTable
(
autoPtr,
chemistrySolver,
dictionary,
(
const fvMesh& mesh,
const word& ODEModelName,
const word& thermoType
),
(mesh, ODEModelName, thermoType)
);
// Constructors // Constructors
//- Construct from components //- Construct from components

View File

@ -7,5 +7,7 @@ derivedFvPatchFields/turbulentTemperatureCoupledBaffle/turbulentTemperatureCoupl
derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C
derivedFvPatchFields/turbulentTemperatureCoupledBaffle/regionProperties.C derivedFvPatchFields/turbulentTemperatureCoupledBaffle/regionProperties.C
derivedFvPatchFields/temperatureThermoBaffle1D/temperatureThermoBaffle1DFvPatchScalarFields.C derivedFvPatchFields/temperatureThermoBaffle1D/temperatureThermoBaffle1DFvPatchScalarFields.C
derivedFvPatchFields/totalFlowRateAdvectiveDiffusive/totalFlowRateAdvectiveDiffusiveFvPatchScalarField.C
derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C
LIB = $(FOAM_LIBBIN)/libcompressibleTurbulenceModel LIB = $(FOAM_LIBBIN)/libcompressibleTurbulenceModel

View File

@ -13,5 +13,6 @@ LIB_LIBS = \
-lspecie \ -lspecie \
-lfiniteVolume \ -lfiniteVolume \
-lmeshTools \ -lmeshTools \
-lsolid -lsolid \
-lradiationModels

View File

@ -29,7 +29,7 @@ License
#include "volFields.H" #include "volFields.H"
#include "surfaceFields.H" #include "surfaceFields.H"
#include "IOobjectList.H" #include "IOobjectList.H"
#include "LESModel.H" #include "turbulenceModel.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
@ -149,10 +149,10 @@ void Foam::totalFlowRateAdvectiveDiffusiveFvPatchScalarField::updateCoeffs()
const label patchI = patch().index(); const label patchI = patch().index();
const compressible::LESModel& turbulence = const compressible::turbulenceModel& turbulence =
db().lookupObject<compressible::LESModel> db().lookupObject<compressible::turbulenceModel>
( (
"LESProperties" "turbulenceModel"
); );
const fvsPatchField<scalar>& phip = const fvsPatchField<scalar>& phip =
@ -175,7 +175,7 @@ void Foam::totalFlowRateAdvectiveDiffusiveFvPatchScalarField::updateCoeffs()
if (debug) if (debug)
{ {
scalar phi = gSum(-phip*(*this));// + alphap*snGrad()); scalar phi = gSum(-phip*(*this));
Info<< patch().boundaryMesh().mesh().name() << ':' Info<< patch().boundaryMesh().mesh().name() << ':'
<< patch().name() << ':' << patch().name() << ':'

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2010-2011 OpenCFD Ltd. \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -179,8 +179,6 @@ public:
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif #endif
// ************************************************************************* // // ************************************************************************* //

View File

@ -9,10 +9,16 @@ rm -rf constant/polyMesh/sets
runApplication blockMesh runApplication blockMesh
runApplication surfaceFeatureExtract -includedAngle 150 constant/triSurface/bottomAir.stl bottomAir runApplication surfaceFeatureExtract -includedAngle 150 constant/triSurface/bottomAir.stl bottomAir
mv log.surfaceFeatureExtract log.surfaceFeatureExtract.bottom
runApplication surfaceFeatureExtract -includedAngle 150 constant/triSurface/heater.stl heater runApplication surfaceFeatureExtract -includedAngle 150 constant/triSurface/heater.stl heater
mv log.surfaceFeatureExtract log.surfaceFeatureExtract.heater
runApplication surfaceFeatureExtract -includedAngle 150 constant/triSurface/leftSolid.stl leftSolid runApplication surfaceFeatureExtract -includedAngle 150 constant/triSurface/leftSolid.stl leftSolid
mv log.surfaceFeatureExtract log.surfaceFeatureExtract.leftSolid
runApplication surfaceFeatureExtract -includedAngle 150 constant/triSurface/rightSolid.stl rightSolid runApplication surfaceFeatureExtract -includedAngle 150 constant/triSurface/rightSolid.stl rightSolid
mv log.surfaceFeatureExtract log.surfaceFeatureExtract.rightSolid
runApplication surfaceFeatureExtract -includedAngle 150 constant/triSurface/topAir.stl topAir runApplication surfaceFeatureExtract -includedAngle 150 constant/triSurface/topAir.stl topAir
mv log.surfaceFeatureExtract log.surfaceFeatureExtract.topAir
runApplication snappyHexMesh -overwrite runApplication snappyHexMesh -overwrite
runApplication splitMeshRegions -cellZones -overwrite runApplication splitMeshRegions -cellZones -overwrite

View File

@ -299,7 +299,7 @@ meshQualityControls
// <0 = inside out tet, // <0 = inside out tet,
// 0 = flat tet // 0 = flat tet
// 1 = regular tet // 1 = regular tet
minTetQuality 1e-9; minTetQuality 1e-30;
//- Minimum face area. Set to <0 to disable. //- Minimum face area. Set to <0 to disable.
minArea -1; minArea -1;

View File

@ -0,0 +1,44 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object H2O;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0.0;
boundaryField
{
inlet
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
sides
{
type zeroGradient;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,44 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object N2;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0.79;
boundaryField
{
inlet
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
sides
{
type zeroGradient;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,44 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object O2;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0.21;
boundaryField
{
inlet
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
sides
{
type zeroGradient;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,46 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
location "0";
class volScalarField;
object T;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 300;
boundaryField
{
inlet
{
type fixedValue;
value uniform 300;
}
outlet
{
type fixedValue;
value uniform 300;
}
sides
{
type fixedValue;
value uniform 300;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type fixedValue;
value uniform 300;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,47 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
location "0";
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
inlet
{
type pressureInletOutletVelocity;
value uniform (0 0 0);
}
outlet
{
type pressureInletOutletVelocity;
value uniform (0 0 0);
}
sides
{
type pressureInletOutletVelocity;
value uniform (0 0 0);
}
region0_to_wallFilmRegion_wallFilmFaces
{
type fixedValue;
value uniform (0 0 0);
}
}
// ************************************************************************* //

View File

@ -0,0 +1,46 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 100000;
boundaryField
{
inlet
{
type calculated;
value $internalField;
}
outlet
{
type calculated;
value $internalField;
}
sides
{
type calculated;
value $internalField;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type calculated;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object p_rgh;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 100000;
boundaryField
{
inlet
{
type buoyantPressure;
}
outlet
{
type buoyantPressure;
}
sides
{
type buoyantPressure;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type buoyantPressure;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,52 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0/wallFilmRegion";
object Tf;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 300;
boundaryField
{
wallFilmFaces_top
{
type zeroGradient;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type zeroGradient;
}
inlet
{
type fixedValue;
value uniform 300;
}
outlet
{
type zeroGradient;
}
sides
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,54 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
location "0/wallFilmRegion";
object Uf;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
wallFilmFaces_top
{
type slip;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type fixedValue;
value uniform (0 0 0);
}
inlet
{
type fixedValue;
value uniform (0 -0.075 0);
}
outlet
{
type zeroGradient;
}
sides
{
type fixedValue;
value uniform (0 0 0);
}
}
// ************************************************************************* //

View File

@ -0,0 +1,52 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0/wallFilmRegion";
object deltaf;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
wallFilmFaces_top
{
type zeroGradient;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type zeroGradient;
}
inlet
{
type fixedValue;
value uniform 1e-3;
}
outlet
{
type zeroGradient;
}
sides
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,44 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object H2O;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0.0;
boundaryField
{
inlet
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
sides
{
type zeroGradient;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,44 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object N2;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0.79;
boundaryField
{
inlet
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
sides
{
type zeroGradient;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,44 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object O2;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0.21;
boundaryField
{
inlet
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
sides
{
type zeroGradient;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,46 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
location "0";
class volScalarField;
object T;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 300;
boundaryField
{
inlet
{
type fixedValue;
value uniform 300;
}
outlet
{
type fixedValue;
value uniform 300;
}
sides
{
type fixedValue;
value uniform 300;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type fixedValue;
value uniform 300;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,47 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
location "0";
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
inlet
{
type pressureInletOutletVelocity;
value uniform (0 0 0);
}
outlet
{
type pressureInletOutletVelocity;
value uniform (0 0 0);
}
sides
{
type pressureInletOutletVelocity;
value uniform (0 0 0);
}
region0_to_wallFilmRegion_wallFilmFaces
{
type fixedValue;
value uniform (0 0 0);
}
}
// ************************************************************************* //

View File

@ -0,0 +1,46 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 100000;
boundaryField
{
inlet
{
type calculated;
value $internalField;
}
outlet
{
type calculated;
value $internalField;
}
sides
{
type calculated;
value $internalField;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type calculated;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object p_rgh;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 100000;
boundaryField
{
inlet
{
type buoyantPressure;
}
outlet
{
type buoyantPressure;
}
sides
{
type buoyantPressure;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type buoyantPressure;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,52 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0/wallFilmRegion";
object Tf;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 300;
boundaryField
{
wallFilmFaces_top
{
type zeroGradient;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type zeroGradient;
}
inlet
{
type fixedValue;
value uniform 300;
}
outlet
{
type zeroGradient;
}
sides
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,54 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
location "0/wallFilmRegion";
object Uf;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
wallFilmFaces_top
{
type slip;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type fixedValue;
value uniform (0 0 0);
}
inlet
{
type fixedValue;
value uniform (0 -0.075 0);
}
outlet
{
type zeroGradient;
}
sides
{
type fixedValue;
value uniform (0 0 0);
}
}
// ************************************************************************* //

View File

@ -0,0 +1,52 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0/wallFilmRegion";
object deltaf;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
wallFilmFaces_top
{
type zeroGradient;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type zeroGradient;
}
inlet
{
type fixedValue;
value uniform 1e-3;
}
outlet
{
type zeroGradient;
}
sides
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,13 @@
#!/bin/sh
# Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase
rm -rf constant/wallFilmRegion
rm -rf 0
cp -rf 0.org 0
rm -f *.obj
#rm -rf VTK

View File

@ -0,0 +1,10 @@
#!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
. $WM_PROJECT_DIR/bin/tools/RunFunctions
./Allrun.pre
application=`getApplication`
runApplication $application

View File

@ -0,0 +1,10 @@
#!/bin/sh
. $WM_PROJECT_DIR/bin/tools/RunFunctions
runApplication blockMesh
runApplication setSet -batch wallFilmRegion.setSet
mv log.setSet log.wallFilmRegion.setSet
runApplication extrudeToRegionMesh -overwrite

View File

@ -0,0 +1,20 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object additionalControls;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvePrimaryRegion false; // true;
// ************************************************************************* //

View File

@ -0,0 +1,29 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object chemistryProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
psiChemistryModel ODEChemistryModel<gasThermoPhysics>;
chemistry off;
turbulentReaction off;
chemistrySolver noChemistrySolver;
initialChemicalTimeStep 1e-07;
// ************************************************************************* //

View File

@ -0,0 +1,21 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object combustionProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
combustionModel none;
// ************************************************************************* //

View File

@ -0,0 +1,85 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object foam.dat;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
O2
{
specie
{
nMoles 1;
molWeight 31.9988;
}
thermodynamics
{
Tlow 200;
Thigh 5000;
Tcommon 1000;
highCpCoeffs ( 3.69758 0.00061352 -1.25884e-07 1.77528e-11 -1.13644e-15 -1233.93 3.18917 );
lowCpCoeffs ( 3.21294 0.00112749 -5.75615e-07 1.31388e-09 -8.76855e-13 -1005.25 6.03474 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
H2O
{
specie
{
nMoles 1;
molWeight 18.0153;
}
thermodynamics
{
Tlow 200;
Thigh 5000;
Tcommon 1000;
highCpCoeffs ( 2.67215 0.00305629 -8.73026e-07 1.201e-10 -6.39162e-15 -29899.2 6.86282 );
lowCpCoeffs ( 3.38684 0.00347498 -6.3547e-06 6.96858e-09 -2.50659e-12 -30208.1 2.59023 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
N2
{
specie
{
nMoles 1;
molWeight 28.0134;
}
thermodynamics
{
Tlow 200;
Thigh 5000;
Tcommon 1000;
highCpCoeffs ( 2.92664 0.00148798 -5.68476e-07 1.0097e-10 -6.75335e-15 -922.798 5.98053 );
lowCpCoeffs ( 3.29868 0.00140824 -3.96322e-06 5.64152e-09 -2.44486e-12 -1020.9 3.95037 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,10 @@
species
(
O2
H2O
N2
)
;
reactions
{}

View File

@ -0,0 +1,22 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class uniformDimensionedVectorField;
location "constant";
object g;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -2 0 0 0 0];
value (0 -9.81 0);
// ************************************************************************* //

View File

@ -0,0 +1,23 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object scalarListList;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// (x y z) (u v w) d rho mDot T cp (Y0..Y2) (Yg0..YgN) (Yl0..YlN) (Ys0..YsN)
(
(0.050 0.025 0.09) (0 0 -5) 0.001 1000 0.002 300 4200 (1)
);
// ************************************************************************* //

View File

@ -0,0 +1,107 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant/polyMesh";
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 1;
vertices
(
// front
( 0 0 1)
( 0.125 0 1)
( 0.625 0 1)
( 0.750 0 1)
( 0 1 1)
( 0.125 1 1)
( 0.625 1 1)
( 0.750 1 1)
// back
( 0 0 0)
( 0.125 0 0)
( 0.625 0 0)
( 0.750 0 0)
( 0 1 0)
( 0.125 1 0)
( 0.625 1 0)
( 0.750 1 0)
);
blocks
(
hex (0 1 9 8 4 5 13 12) (30 1 240) simpleGrading (1 1 1)
hex (1 2 10 9 5 6 14 13) (120 1 240) simpleGrading (1 1 1)
hex (2 3 11 10 6 7 15 14) (30 1 240) simpleGrading (1 1 1)
);
edges
(
);
boundary
(
inlet
{
type patch;
faces
(
(5 6 14 13)
);
}
outlet
{
type patch;
faces
(
(0 1 9 8)
(1 2 10 9)
(2 3 11 10)
);
}
sides
{
type patch;
faces
(
(8 0 4 12)
(15 7 3 11)
(13 5 4 12)
(15 7 6 14)
(8 12 13 9)
(9 13 14 10)
(10 14 15 11)
);
}
filmWalls
{
type wall;
faces
(
(0 1 5 4)
(1 2 6 5)
(2 3 7 6)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //

View File

@ -0,0 +1,23 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object radiationProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
// ************************************************************************* //

View File

@ -0,0 +1,24 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object reactingCloud1Properties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solution
{
active no;
}
// ************************************************************************* //

View File

@ -0,0 +1,65 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object SurfaceFilmProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
surfaceFilmModel kinematicSingleLayer;
regionName wallFilmRegion;
active true;
kinematicSingleLayerCoeffs
{
thermoModel constant;
constantThermoCoeffs
{
rho0 rho0 [1 -3 0 0 0] 1000;
mu0 mu0 [1 -1 -1 0 0] 1e-3;
sigma0 sigma0 [1 0 -2 0 0] 0.07;
}
injectionModels ();
forces
(
contactAngle
surfaceShear
thermocapillary
);
contactAngleCoeffs
{
deltaWet 1e-4;
Ccf 1;
contactAngleDistribution
{
type normal;
normalDistribution
{
minValue 50;
maxValue 100;
expectation 75;
variance 100;
}
}
}
surfaceShearCoeffs
{
Cf 0.001;
}
}

View File

@ -0,0 +1,46 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object thermophysicalProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType hsPsiMixtureThermo<reactingMixture<gasThermoPhysics>>;
chemistryReader foamChemistryReader;
foamChemistryFile "$FOAM_CASE/constant/foam.inp";
foamChemistryThermoFile "$FOAM_CASE/constant/foam.dat";
inertSpecie N2;
liquids
{
liquidComponents (H2O);
H2O
{
defaultCoeffs yes;
}
}
solids
{
solidComponents ();
}
// ************************************************************************* //

View File

@ -0,0 +1,21 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object turbulenceProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType laminar;
// ************************************************************************* //

View File

@ -0,0 +1,5 @@
# Create face sets
faceSet sideFaces1 new boxToFace (-0.00001 -0.00001 -1) (0.10001 0.00001 1)
faceSet sideFaces2 new boxToFace ( 0.09999 -0.00001 -1) (0.10001 0.05001 1)
faceSet sideFaces3 new boxToFace (-0.00001 0.04999 -1) (1.00001 0.05001 1)
faceSet sideFaces4 new boxToFace (-0.00001 -0.00001 -1) (0.00001 0.05001 1)

View File

@ -0,0 +1,55 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application reactingParcelFilmFoam;
startFrom latestTime; // startTime;
startTime 0;
stopAt endTime;
endTime 3;
deltaT 1e-04;
writeControl adjustableRunTime;
writeInterval 0.02;
purgeWrite 0;
writeFormat ascii;
writePrecision 10;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
adjustTimeStep yes;
maxCo 0.3;
maxDeltaT 1e-03;
// ************************************************************************* //

View File

@ -0,0 +1,54 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object createPatchDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// This application/dictionary controls:
// - optional: create new patches from boundary faces (either given as
// a set of patches or as a faceSet)
// - always: order faces on coupled patches such that they are opposite. This
// is done for all coupled faces, not just for any patches created.
// - optional: synchronise points on coupled patches.
// 1. Create cyclic:
// - specify where the faces should come from
// - specify the type of cyclic. If a rotational specify the rotationAxis
// and centre to make matching easier
// - always create both halves in one invocation with correct 'neighbourPatch'
// setting.
// - optionally pointSync true to guarantee points to line up.
// 2. Correct incorrect cyclic:
// This will usually fail upon loading:
// "face 0 area does not match neighbour 2 by 0.0100005%"
// " -- possible face ordering problem."
// - in polyMesh/boundary file:
// - loosen matchTolerance of all cyclics to get case to load
// - or change patch type from 'cyclic' to 'patch'
// and regenerate cyclic as above
// Do a synchronisation of coupled points after creation of any patches.
// Note: this does not work with points that are on multiple coupled patches
// with transformations (i.e. cyclics).
pointSync false;
// Patches to create.
patches
(
// none
);
// ************************************************************************* //

View File

@ -0,0 +1,50 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 4;
method metis;
simpleCoeffs
{
n ( 2 2 1 );
delta 0.001;
}
hierarchicalCoeffs
{
n ( 1 1 1 );
delta 0.001;
order xyz;
}
metisCoeffs
{
processorWeights ( 1 1 1 1 );
}
manualCoeffs
{
dataFile "";
}
distributed no;
roots ( );
// ************************************************************************* //

View File

@ -0,0 +1,36 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object extrudeToRegionMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
region wallFilmRegion;
faceZones (wallFilmFaces);
oneD false;
extrudeModel linearNormal;
nLayers 1;
expansionRatio 1;
adaptMesh yes; // apply directMapped to both regions
linearNormalCoeffs
{
thickness 0.01;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -0,0 +1,65 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default Euler;
}
gradSchemes
{
default Gauss linear;
grad(p) Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss upwind;
div(phiU,p) Gauss upwind;
div(phi,h) Gauss upwind;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;
div(U) Gauss linear;
div((muEff*dev2(T(grad(U))))) Gauss linear;
div(phi,Yi_hs) Gauss upwind;
}
laplacianSchemes
{
default Gauss linear uncorrected;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default uncorrected;
}
fluxRequired
{
default no;
p_rgh;
}
// ************************************************************************* //

View File

@ -0,0 +1,89 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
"(rho|G)"
{
solver PCG;
preconditioner DIC;
tolerance 0;
relTol 0.1;
}
"(rho|G)Final"
{
$rho;
tolerance 1e-05;
relTol 0;
}
"(U|hs)"
{
solver PBiCG;
preconditioner DILU;
tolerance 0;
relTol 0.1;
}
"(U|hs)Final"
{
$U;
relTol 0;
tolerance 1e-05;
}
"(k|epsilon)"
{
$UFinal;
}
p_rgh
{
solver PCG;
preconditioner DIC;
tolerance 0;
relTol 0.1;
}
p_rghFinal
{
$p_rgh;
tolerance 1e-06;
relTol 0;
}
"(Yi|O2|N2|H2O)"
{
$hsFinal;
}
}
PIMPLE
{
nCorrectors 2;
nNonOrthogonalCorrectors 0;
momentumPredictor yes;
}
relaxationFactors
{
".*Final" 1;
}
// ************************************************************************* //

View File

@ -0,0 +1,117 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object createPatchDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// This application/dictionary controls:
// - optional: create new patches from boundary faces (either given as
// a set of patches or as a faceSet)
// - always: order faces on coupled patches such that they are opposite. This
// is done for all coupled faces, not just for any patches created.
// - optional: synchronise points on coupled patches.
// 1. Create cyclic:
// - specify where the faces should come from
// - specify the type of cyclic. If a rotational specify the rotationAxis
// and centre to make matching easier
// - always create both halves in one invocation with correct 'neighbourPatch'
// setting.
// - optionally pointSync true to guarantee points to line up.
// 2. Correct incorrect cyclic:
// This will usually fail upon loading:
// "face 0 area does not match neighbour 2 by 0.0100005%"
// " -- possible face ordering problem."
// - in polyMesh/boundary file:
// - loosen matchTolerance of all cyclics to get case to load
// - or change patch type from 'cyclic' to 'patch'
// and regenerate cyclic as above
// Do a synchronisation of coupled points after creation of any patches.
// Note: this does not work with points that are on multiple coupled patches
// with transformations (i.e. cyclics).
pointSync false;
// Patches to create.
patches
(
{
// Name of new patch
name side1;
// Type of new patch
patchInfo
{
type patch;
}
// How to construct: either from 'patches' or 'set'
constructFrom set;
// If constructFrom = set : name of faceSet
set sideFaces1;
}
{
// Name of new patch
name side2;
// Type of new patch
patchInfo
{
type patch;
}
// How to construct: either from 'patches' or 'set'
constructFrom set;
// If constructFrom = set : name of faceSet
set sideFaces2;
}
{
// Name of new patch
name side3;
// Type of new patch
patchInfo
{
type patch;
}
// How to construct: either from 'patches' or 'set'
constructFrom set;
// If constructFrom = set : name of faceSet
set sideFaces3;
}
{
// Name of new patch
name side4;
// Type of new patch
patchInfo
{
type patch;
}
// How to construct: either from 'patches' or 'set'
constructFrom set;
// If constructFrom = set : name of faceSet
set sideFaces4;
}
);
// ************************************************************************* //

View File

@ -0,0 +1,68 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system/wallFilmRegion";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default none;
ddt(deltaf*rhof) Euler;
ddt(rhof,deltaf) Euler;
ddt(deltaf*rhof,Uf) Euler;
ddt(deltaf*rhof,hsf) Euler;
}
divSchemes
{
default none;
div(phi,Uf) Gauss upwind;
div(phid,deltaf) Gauss upwind;
div(phi,hsf) Gauss upwind;
}
gradSchemes
{
default none;
grad(pL) Gauss linear;
grad(sigmaf) Gauss linear;
snGradCorr(deltaf) Gauss linear;
snGradCorr(pp) Gauss linear;
snGradCorr(pu) Gauss linear;
grad(nHat) Gauss linear;
grad(alpha) Gauss linear;
}
laplacianSchemes
{
default none;
laplacian(sigmaf,deltaf) Gauss linear uncorrected;
laplacian(deltaCoeff,deltaf) Gauss linear uncorrected;
}
snGradSchemes
{
snGrad(p) uncorrected;
snGrad(deltaf) uncorrected;
}
fluxRequired
{
default no;
deltaf;
}
// ************************************************************************* //

View File

@ -0,0 +1,49 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system/wallFilmRegion";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
"(Uf|hsf|deltaf\*rhof)"
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-10;
relTol 0;
}
deltaf
{
solver PBiCG; // PCG;
preconditioner DILU; // DIC;
tolerance 1e-10;
relTol 0;
}
}
PISO
{
momentumPredictor true;
nOuterCorr 1;
nCorr 1;
nNonOrthCorr 0;
}
relaxationFactors
{}
// ************************************************************************* //

View File

@ -0,0 +1,3 @@
# Create face set
faceSet wallFilmFaces new patchToFace filmWalls
faceZoneSet wallFilmFaces new setToFaceZone wallFilmFaces

View File

@ -292,7 +292,7 @@ meshQualityControls
// <0 = inside out tet, // <0 = inside out tet,
// 0 = flat tet // 0 = flat tet
// 1 = regular tet // 1 = regular tet
minTetQuality 1e-9; minTetQuality 1e-30;
//- Minimum face area. Set to <0 to disable. //- Minimum face area. Set to <0 to disable.
minArea -1; minArea -1;

View File

@ -320,7 +320,7 @@ meshQualityControls
// <0 = inside out tet, // <0 = inside out tet,
// 0 = flat tet // 0 = flat tet
// 1 = regular tet // 1 = regular tet
minTetQuality 1e-9; minTetQuality 1e-30;
//- Minimum face area. Set to <0 to disable. //- Minimum face area. Set to <0 to disable.
minArea -1; minArea -1;