surfaceFilmModels: Rationalised and standardised the surfaceFilmProperties dictionary

The convoluted separate ".*Coeffs" dictionary form of model coefficient
specification is now deprecated and replaced with the simpler sub-dictionary
form but support is provided for the deprecated form for backward comparability.

e.g.

thermophysicalProperties
{
    type        liquid;

    useReferenceValues  no;
    liquid      H2O;
}

rather than

    filmThermoModel liquid;

    liquidCoeffs
    {
        useReferenceValues no;
        liquid      H2O;
    }

and

forces
{
    thermocapillary;

    distributionContactAngle
    {
        Ccf             0.085;

        distribution
        {
            type            normal;
            normalDistribution
            {
                minValue        50;
                maxValue        100;
                expectation     75;
                variance        100;
            }
        }

        zeroForcePatches ();
    }
}

rather than

    forces
    (
        thermocapillary
        distributionContactAngle
    );

    distributionContactAngleCoeffs
    {
        Ccf             0.085;

        distribution
        {
            type            normal;
            normalDistribution
            {
                minValue        50;
                maxValue        100;
                expectation     75;
                variance        100;
            }
        }

        zeroForcePatches ();
    }

All the tutorial cases containing a surface film have been updated for guidance,
e.g. tutorials/lagrangian/buoyantReactingParticleFoam/hotBoxes/constant/surfaceFilmProperties

surfaceFilmModel thermoSingleLayer;

regionName      wallFilmRegion;

active          true;

thermophysicalProperties
{
    type        liquid;

    useReferenceValues  no;
    liquid      H2O;
}

viscosity
{
    model        liquid;
}

deltaWet    1e-4;
hydrophilic no;

momentumTransport
{
    model       laminar;
    Cf          0.005;
}

forces
{
    thermocapillary;

    distributionContactAngle
    {
        Ccf             0.085;

        distribution
        {
            type            normal;
            normalDistribution
            {
                minValue        50;
                maxValue        100;
                expectation     75;
                variance        100;
            }
        }

        zeroForcePatches ();
    }
}

injection
{
    curvatureSeparation
    {
        definedPatchRadii
        (
            ("(cube[0-9][0-9]_side[0-9]_to_cube[0-9][0-9]_side[0-9])" 0)
        );
    }

    drippingInjection
    {
        cloudName    reactingCloud1;
        deltaStable  0;

        particlesPerParcel 100.0;

        parcelDistribution
        {
            type         RosinRammler;
            RosinRammlerDistribution
            {
                minValue        5e-04;
                maxValue        0.0012;
                d               7.5e-05;
                n               0.5;
            }
        }
    }
}

phaseChange
{
    model           standardPhaseChange;
    Tb              373;
    deltaMin        1e-8;
    L               1.0;
}

upperSurfaceModels
{
    heatTransfer
    {
        model       mappedConvectiveHeatTransfer;
    }
}

lowerSurfaceModels
{
    heatTransfer
    {
        model       constant;
        c0              50;
    }
}
This commit is contained in:
Henry Weller
2020-11-30 16:31:44 +00:00
parent 21bb6c549d
commit 3838df8eac
58 changed files with 548 additions and 458 deletions

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -60,7 +60,7 @@ Foam::subModelBase::subModelBase
dict_(dict),
baseName_(baseName),
modelType_(modelType),
coeffDict_(dict.subDict(modelType + dictExt))
coeffDict_(dict.optionalSubDict(modelType + dictExt))
{}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -398,7 +398,7 @@ Foam::regionModels::regionModel::regionModel
infoOutput_(true),
modelName_(modelName),
regionMeshPtr_(nullptr),
coeffs_(subOrEmptyDict(modelName + "Coeffs")),
coeffs_(optionalSubDict(modelName + "Coeffs")),
outputPropertiesPtr_(nullptr),
primaryPatchIDs_(),
intCoupledPatchIDs_(),
@ -446,7 +446,7 @@ Foam::regionModels::regionModel::regionModel
infoOutput_(false),
modelName_(modelName),
regionMeshPtr_(nullptr),
coeffs_(dict.subOrEmptyDict(modelName + "Coeffs")),
coeffs_(dict.optionalSubDict(modelName + "Coeffs")),
outputPropertiesPtr_(nullptr),
primaryPatchIDs_(),
intCoupledPatchIDs_(),

View File

@ -69,9 +69,9 @@ bool kinematicSingleLayer::read()
void kinematicSingleLayer::correctThermoFields()
{
rho_ == filmThermo_->rho();
mu_ == filmThermo_->mu();
sigma_ == filmThermo_->sigma();
rho_ == thermo_->rho();
mu_ == thermo_->mu();
sigma_ == thermo_->sigma();
}
@ -215,7 +215,7 @@ void kinematicSingleLayer::updateSubmodels()
// Update mass source field
rhoSp_ += cloudMassTrans_/regionMesh().V()/time().deltaT();
turbulence_->correct();
momentumTransport_->correct();
}
@ -286,7 +286,7 @@ void kinematicSingleLayer::updateSurfaceVelocities()
Uw_ -= nHat()*(Uw_ & nHat());
Us_ = turbulence_->Us();
Us_ = momentumTransport_->Us();
}
@ -316,7 +316,7 @@ tmp<Foam::fvVectorMatrix> kinematicSingleLayer::solveMomentum
- fvm::Sp(rVDt*(cloudMassTrans_() + primaryMassTrans_()), U_)
+ forces_.correct(U_)
+ turbulence_->Su(U_)
+ momentumTransport_->Su(U_)
);
fvVectorMatrix& UEqn = tUEqn.ref();
@ -828,7 +828,7 @@ kinematicSingleLayer::kinematicSingleLayer
this->mappedFieldAndInternalPatchTypes<scalar>()
),
filmThermo_(filmThermoModel::New(*this, coeffs_)),
thermo_(thermoModel::New(*this, coeffs_)),
availableMass_(regionMesh().nCells(), 0),
@ -836,7 +836,7 @@ kinematicSingleLayer::kinematicSingleLayer
transfer_(*this, coeffs_),
turbulence_(filmMomentumTransportModel::New(*this, coeffs_)),
momentumTransport_(momentumTransportModel::New(*this, coeffs_)),
forces_(*this, coeffs_),

View File

@ -57,7 +57,7 @@ namespace surfaceFilmModels
{
// Forward class declarations
class filmThermoModel;
class thermoModel;
/*---------------------------------------------------------------------------*\
Class kinematicSingleLayer Declaration
@ -190,7 +190,7 @@ protected:
// Sub-models
//- Film thermo model
autoPtr<filmThermoModel> filmThermo_;
autoPtr<thermoModel> thermo_;
//- Available mass for transfer via sub-models
scalarField availableMass_;
@ -201,8 +201,8 @@ protected:
//- Transfer with the continuous phase
transferModelList transfer_;
//- Turbulence model
autoPtr<filmMomentumTransportModel> turbulence_;
//- Momentum transport model
autoPtr<momentumTransportModel> momentumTransport_;
//- List of film forces
forceList forces_;
@ -447,7 +447,7 @@ public:
// Sub-models
//- Film thermo
inline const filmThermoModel& filmThermo() const;
inline const thermoModel& thermo() const;
//- Injection
inline injectionModelList& injection();
@ -455,8 +455,8 @@ public:
//- Transfer
inline transferModelList& transfer();
//- Turbulence
inline const filmMomentumTransportModel& turbulence() const;
//- Momentum transport
inline const momentumTransportModel& momentumTransport() const;
// Helper functions

View File

@ -195,9 +195,9 @@ inline const volScalarField& kinematicSingleLayer::muPrimary() const
}
inline const filmThermoModel& kinematicSingleLayer::filmThermo() const
inline const thermoModel& kinematicSingleLayer::thermo() const
{
return filmThermo_();
return thermo_();
}
@ -213,10 +213,10 @@ inline transferModelList& kinematicSingleLayer::transfer()
}
inline const filmMomentumTransportModel&
kinematicSingleLayer::turbulence() const
inline const momentumTransportModel&
kinematicSingleLayer::momentumTransport() const
{
return turbulence_();
return momentumTransport_();
}

View File

@ -36,12 +36,12 @@ namespace surfaceFilmModels
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(filmMomentumTransportModel, 0);
defineRunTimeSelectionTable(filmMomentumTransportModel, dictionary);
defineTypeNameAndDebug(momentumTransportModel, 0);
defineRunTimeSelectionTable(momentumTransportModel, dictionary);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
filmMomentumTransportModel::filmMomentumTransportModel
momentumTransportModel::momentumTransportModel
(
surfaceFilmRegionModel& film
)
@ -50,7 +50,7 @@ filmMomentumTransportModel::filmMomentumTransportModel
{}
filmMomentumTransportModel::filmMomentumTransportModel
momentumTransportModel::momentumTransportModel
(
const word& modelType,
surfaceFilmRegionModel& film,
@ -63,7 +63,7 @@ filmMomentumTransportModel::filmMomentumTransportModel
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
filmMomentumTransportModel::~filmMomentumTransportModel()
momentumTransportModel::~momentumTransportModel()
{}

View File

@ -22,10 +22,10 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::regionModels::surfaceFilmModels::filmMomentumTransportModel
Foam::regionModels::surfaceFilmModels::momentumTransportModel
Description
Base class for film turbulence models
Base class for film momentum transport models
SourceFiles
filmMomentumTransportModel.C
@ -51,17 +51,17 @@ namespace surfaceFilmModels
{
/*---------------------------------------------------------------------------*\
Class filmMomentumTransportModel Declaration
Class momentumTransportModel Declaration
\*---------------------------------------------------------------------------*/
class filmMomentumTransportModel
class momentumTransportModel
:
public filmSubModelBase
{
public:
//- Runtime type information
TypeName("filmMomentumTransportModel");
TypeName("momentumTransport");
// Declare runtime constructor selection table
@ -69,7 +69,7 @@ public:
declareRunTimeSelectionTable
(
autoPtr,
filmMomentumTransportModel,
momentumTransportModel,
dictionary,
(
surfaceFilmRegionModel& film,
@ -81,10 +81,10 @@ public:
// Constructors
//- Construct null
filmMomentumTransportModel(surfaceFilmRegionModel& film);
momentumTransportModel(surfaceFilmRegionModel& film);
//- Construct from type name, dictionary and surface film model
filmMomentumTransportModel
momentumTransportModel
(
const word& modelType,
surfaceFilmRegionModel& film,
@ -92,13 +92,13 @@ public:
);
//- Disallow default bitwise copy construction
filmMomentumTransportModel(const filmMomentumTransportModel&) = delete;
momentumTransportModel(const momentumTransportModel&) = delete;
// Selectors
//- Return a reference to the selected injection model
static autoPtr<filmMomentumTransportModel> New
static autoPtr<momentumTransportModel> New
(
surfaceFilmRegionModel& film,
const dictionary& dict
@ -106,7 +106,7 @@ public:
//- Destructor
virtual ~filmMomentumTransportModel();
virtual ~momentumTransportModel();
// Member Functions
@ -116,9 +116,6 @@ public:
//- Return the film surface velocity
virtual tmp<volVectorField::Internal> Us() const = 0;
//- Return the film turbulence viscosity
virtual tmp<volScalarField> mut() const = 0;
//- Correct/update the model
virtual void correct() = 0;
@ -129,7 +126,7 @@ public:
// Member Operators
//- Disallow default bitwise assignment
void operator=(const filmMomentumTransportModel&) = delete;
void operator=(const momentumTransportModel&) = delete;
};

View File

@ -36,15 +36,27 @@ namespace surfaceFilmModels
// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
autoPtr<filmMomentumTransportModel> filmMomentumTransportModel::New
autoPtr<momentumTransportModel> momentumTransportModel::New
(
surfaceFilmRegionModel& model,
const dictionary& dict
)
{
const word modelType(dict.lookup("turbulence"));
const dictionary& momentumTransportDict
(
dict.found("turbulence")
? dict
: dict.subDict(momentumTransportModel::typeName)
);
Info<< " Selecting filmMomentumTransportModel " << modelType << endl;
const word modelType
(
dict.found("turbulence")
? momentumTransportDict.lookup("turbulence")
: momentumTransportDict.lookup("model")
);
Info<< " Selecting momentumTransportModel " << modelType << endl;
dictionaryConstructorTable::iterator cstrIter =
dictionaryConstructorTablePtr_->find(modelType);
@ -52,13 +64,16 @@ autoPtr<filmMomentumTransportModel> filmMomentumTransportModel::New
if (cstrIter == dictionaryConstructorTablePtr_->end())
{
FatalErrorInFunction
<< "Unknown filmMomentumTransportModel type " << modelType
<< nl << nl << "Valid filmMomentumTransportModel types are:" << nl
<< "Unknown momentumTransportModel type " << modelType
<< nl << nl << "Valid momentumTransportModel types are:" << nl
<< dictionaryConstructorTablePtr_->toc()
<< exit(FatalError);
}
return autoPtr<filmMomentumTransportModel>(cstrIter()(model, dict));
return autoPtr<momentumTransportModel>
(
cstrIter()(model, momentumTransportDict)
);
}

View File

@ -45,7 +45,7 @@ namespace surfaceFilmModels
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(laminar, 0);
addToRunTimeSelectionTable(filmMomentumTransportModel, laminar, dictionary);
addToRunTimeSelectionTable(momentumTransportModel, laminar, dictionary);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
@ -55,7 +55,7 @@ laminar::laminar
const dictionary& dict
)
:
filmMomentumTransportModel(type(), film, dict),
momentumTransportModel(type(), film, dict),
Cf_(coeffDict_.lookup<scalar>("Cf"))
{}
@ -84,20 +84,6 @@ tmp<volVectorField::Internal> laminar::Us() const
}
tmp<volScalarField> laminar::mut() const
{
return tmp<volScalarField>
(
volScalarField::New
(
IOobject::modelName("mut", typeName),
filmModel_.regionMesh(),
dimensionedScalar(dimMass/dimLength/dimTime, 0)
)
);
}
void laminar::correct()
{}

View File

@ -25,7 +25,7 @@ Class
Foam::regionModels::surfaceFilmModels::laminar
Description
Film laminar turbulence model.
Film laminar momentum transport model.
SourceFiles
laminar.C
@ -52,7 +52,7 @@ namespace surfaceFilmModels
class laminar
:
public filmMomentumTransportModel
public momentumTransportModel
{
// Private Data
@ -86,9 +86,6 @@ public:
//- Return the film surface velocity
virtual tmp<volVectorField::Internal> Us() const;
//- Return the film turbulence viscosity
virtual tmp<volScalarField> mut() const;
//- Correct/update the model
virtual void correct();

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2013-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -42,7 +42,7 @@ defineTypeNameAndDebug(constantFilmThermo, 0);
addToRunTimeSelectionTable
(
filmThermoModel,
thermoModel,
constantFilmThermo,
dictionary
);
@ -65,7 +65,7 @@ constantFilmThermo::constantFilmThermo
const dictionary& dict
)
:
filmThermoModel(typeName, film, dict),
thermoModel(typeName, film, dict),
name_(coeffDict_.lookup("specie")),
rho0_("rho0"),
mu0_("mu0"),

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2013-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -53,7 +53,7 @@ namespace surfaceFilmModels
class constantFilmThermo
:
public filmThermoModel
public thermoModel
{
public:

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2013-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -36,12 +36,12 @@ namespace surfaceFilmModels
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(filmThermoModel, 0);
defineRunTimeSelectionTable(filmThermoModel, dictionary);
defineTypeNameAndDebug(thermoModel, 0);
defineRunTimeSelectionTable(thermoModel, dictionary);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
filmThermoModel::filmThermoModel
thermoModel::thermoModel
(
surfaceFilmRegionModel& film
)
@ -50,7 +50,7 @@ filmThermoModel::filmThermoModel
{}
filmThermoModel::filmThermoModel
thermoModel::thermoModel
(
const word& modelType,
surfaceFilmRegionModel& film,
@ -63,7 +63,7 @@ filmThermoModel::filmThermoModel
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
filmThermoModel::~filmThermoModel()
thermoModel::~thermoModel()
{}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2013-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -22,7 +22,7 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::regionModels::surfaceFilmModels::filmThermoModel
Foam::regionModels::surfaceFilmModels::thermoModel
Description
Base class for film thermo models
@ -49,17 +49,17 @@ namespace surfaceFilmModels
{
/*---------------------------------------------------------------------------*\
Class filmThermoModel Declaration
Class thermoModel Declaration
\*---------------------------------------------------------------------------*/
class filmThermoModel
class thermoModel
:
public filmSubModelBase
{
public:
//- Runtime type information
TypeName("filmThermoModel");
TypeName("thermophysicalProperties");
// Declare runtime constructor selection table
@ -67,7 +67,7 @@ public:
declareRunTimeSelectionTable
(
autoPtr,
filmThermoModel,
thermoModel,
dictionary,
(
surfaceFilmRegionModel& film,
@ -79,10 +79,10 @@ public:
// Constructors
//- Construct null
filmThermoModel(surfaceFilmRegionModel& film);
thermoModel(surfaceFilmRegionModel& film);
//- Construct from type name, dictionary and surface film model
filmThermoModel
thermoModel
(
const word& modelType,
surfaceFilmRegionModel& film,
@ -90,13 +90,13 @@ public:
);
//- Disallow default bitwise copy construction
filmThermoModel(const filmThermoModel&) = delete;
thermoModel(const thermoModel&) = delete;
// Selectors
//- Return a reference to the selected phase change model
static autoPtr<filmThermoModel> New
static autoPtr<thermoModel> New
(
surfaceFilmRegionModel& film,
const dictionary& dict
@ -104,7 +104,7 @@ public:
//- Destructor
virtual ~filmThermoModel();
virtual ~thermoModel();
// Member Functions
@ -167,7 +167,7 @@ public:
// Member Operators
//- Disallow default bitwise assignment
void operator=(const filmThermoModel&) = delete;
void operator=(const thermoModel&) = delete;
};

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2013-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -36,15 +36,27 @@ namespace surfaceFilmModels
// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
autoPtr<filmThermoModel> filmThermoModel::New
autoPtr<thermoModel> thermoModel::New
(
surfaceFilmRegionModel& model,
const dictionary& dict
)
{
word modelType(dict.lookup("filmThermoModel"));
const dictionary& thermophysicalPropertiesDict
(
dict.found("thermoModel")
? dict
: dict.subDict(thermoModel::typeName)
);
Info<< " Selecting filmThermoModel " << modelType << endl;
const word modelType
(
dict.found("thermoModel")
? thermophysicalPropertiesDict.lookup("thermoModel")
: thermophysicalPropertiesDict.lookup("type")
);
Info<< " Selecting thermoModel " << modelType << endl;
dictionaryConstructorTable::iterator cstrIter =
dictionaryConstructorTablePtr_->find(modelType);
@ -52,13 +64,16 @@ autoPtr<filmThermoModel> filmThermoModel::New
if (cstrIter == dictionaryConstructorTablePtr_->end())
{
FatalErrorInFunction
<< "Unknown filmThermoModel type " << modelType << nl << nl
<< "Valid filmThermoModel types are:" << nl
<< "Unknown thermoModel type " << modelType << nl << nl
<< "Valid thermoModel types are:" << nl
<< dictionaryConstructorTablePtr_->toc()
<< exit(FatalError);
}
return autoPtr<filmThermoModel>(cstrIter()(model, dict));
return autoPtr<thermoModel>
(
cstrIter()(model, thermophysicalPropertiesDict)
);
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2013-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -45,7 +45,7 @@ defineTypeNameAndDebug(liquidFilmThermo, 0);
addToRunTimeSelectionTable
(
filmThermoModel,
thermoModel,
liquidFilmThermo,
dictionary
);
@ -107,7 +107,7 @@ liquidFilmThermo::liquidFilmThermo
const dictionary& dict
)
:
filmThermoModel(typeName, film, dict),
thermoModel(typeName, film, dict),
name_("unknown_liquid"),
liquidPtr_(nullptr),
ownLiquid_(false),

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2013-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -56,7 +56,7 @@ class thermoSingleLayer;
class liquidFilmThermo
:
public filmThermoModel
public thermoModel
{
protected:

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -50,11 +50,33 @@ forceList::forceList
:
PtrList<force>()
{
const wordList models(dict.lookup("forces"));
Info<< " Selecting film force models" << endl;
if (models.size() > 0)
if (dict.isDict("forces"))
{
const dictionary& forcesDict(dict.subDict("forces"));
this->setSize(forcesDict.size());
label i = 0;
forAllConstIter(dictionary, forcesDict, iter)
{
set
(
i++,
force::New
(
film,
forcesDict.isDict(iter().keyword())
? forcesDict.subDict(iter().keyword())
: dictionary::null,
iter().keyword()
)
);
}
}
else if (dict.found("forces"))
{
const wordList models(dict.lookup("forces"));
this->setSize(models.size());
forAll(models, i)
@ -62,17 +84,20 @@ forceList::forceList
set(i, force::New(film, dict, models[i]));
}
}
else
if (!size())
{
Info<< " none" << endl;
}
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
forceList::~forceList()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
tmp<fvVectorMatrix> forceList::correct(volVectorField& U)

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -60,28 +60,42 @@ injectionModelList::injectionModelList
),
massInjected_(film.intCoupledPatchIDs().size(), 0.0)
{
const wordList activeModels(dict.lookup("injectionModels"));
Info<< " Selecting film injection" << endl;
wordHashSet models;
forAll(activeModels, i)
if (dict.isDict("injection"))
{
models.insert(activeModels[i]);
}
Info<< " Selecting film injection models" << endl;
if (models.size() > 0)
{
this->setSize(models.size());
const dictionary& injectionDict(dict.subDict("injection"));
this->setSize(injectionDict.size());
label i = 0;
forAllConstIter(wordHashSet, models, iter)
forAllConstIter(dictionary, injectionDict, iter)
{
const word& model = iter.key();
set(i, injectionModel::New(film, dict, model));
i++;
set
(
i++,
injectionModel::New
(
film,
injectionDict.isDict(iter().keyword())
? injectionDict.subDict(iter().keyword())
: dictionary::null,
iter().keyword()
)
);
}
}
else
else if (dict.found("injectionModels"))
{
const wordList models(dict.lookup("injectionModels"));
this->setSize(models.size());
forAll(models, i)
{
set(i, injectionModel::New(film, dict, models[i]));
}
}
if (!size())
{
Info<< " none" << endl;
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2012-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2012-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -41,7 +41,7 @@ defineTypeNameAndDebug(constantRadiation, 0);
addToRunTimeSelectionTable
(
filmRadiationModel,
radiationModel,
constantRadiation,
dictionary
);
@ -54,7 +54,7 @@ constantRadiation::constantRadiation
const dictionary& dict
)
:
filmRadiationModel(typeName, film, dict),
radiationModel(typeName, film, dict),
qrConst_
(
IOobject

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2012-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2012-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -56,7 +56,7 @@ namespace surfaceFilmModels
class constantRadiation
:
public filmRadiationModel
public radiationModel
{
// Private Data

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -36,18 +36,18 @@ namespace surfaceFilmModels
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(filmRadiationModel, 0);
defineRunTimeSelectionTable(filmRadiationModel, dictionary);
defineTypeNameAndDebug(radiationModel, 0);
defineRunTimeSelectionTable(radiationModel, dictionary);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
filmRadiationModel::filmRadiationModel(surfaceFilmRegionModel& film)
radiationModel::radiationModel(surfaceFilmRegionModel& film)
:
filmSubModelBase(film)
{}
filmRadiationModel::filmRadiationModel
radiationModel::radiationModel
(
const word& modelType,
surfaceFilmRegionModel& film,
@ -60,7 +60,7 @@ filmRadiationModel::filmRadiationModel
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
filmRadiationModel::~filmRadiationModel()
radiationModel::~radiationModel()
{}

View File

@ -22,7 +22,7 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::regionModels::surfaceFilmModels::filmRadiationModel
Foam::regionModels::surfaceFilmModels::radiationModel
Description
Base class for film radiation models
@ -49,17 +49,17 @@ namespace surfaceFilmModels
{
/*---------------------------------------------------------------------------*\
Class filmRadiationModel Declaration
Class radiationModel Declaration
\*---------------------------------------------------------------------------*/
class filmRadiationModel
class radiationModel
:
public filmSubModelBase
{
public:
//- Runtime type information
TypeName("radiationModel");
TypeName("radiation");
// Declare runtime constructor selection table
@ -67,7 +67,7 @@ public:
declareRunTimeSelectionTable
(
autoPtr,
filmRadiationModel,
radiationModel,
dictionary,
(
surfaceFilmRegionModel& film,
@ -76,13 +76,14 @@ public:
(film, dict)
);
// Constructors
//- Construct null
filmRadiationModel(surfaceFilmRegionModel& film);
radiationModel(surfaceFilmRegionModel& film);
//- Construct from type name, dictionary and surface film model
filmRadiationModel
radiationModel
(
const word& modelType,
surfaceFilmRegionModel& film,
@ -90,13 +91,13 @@ public:
);
//- Disallow default bitwise copy construction
filmRadiationModel(const filmRadiationModel&) = delete;
radiationModel(const radiationModel&) = delete;
// Selectors
//- Return a reference to the selected phase change model
static autoPtr<filmRadiationModel> New
static autoPtr<radiationModel> New
(
surfaceFilmRegionModel& film,
const dictionary& dict
@ -104,7 +105,7 @@ public:
//- Destructor
virtual ~filmRadiationModel();
virtual ~radiationModel();
// Member Functions
@ -121,7 +122,7 @@ public:
// Member Operators
//- Disallow default bitwise assignment
void operator=(const filmRadiationModel&) = delete;
void operator=(const radiationModel&) = delete;
};

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -23,7 +23,7 @@ License
\*---------------------------------------------------------------------------*/
#include "filmRadiationModel.H"
#include "noRadiation.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -36,13 +36,34 @@ namespace surfaceFilmModels
// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
autoPtr<filmRadiationModel> filmRadiationModel::New
autoPtr<radiationModel> radiationModel::New
(
surfaceFilmRegionModel& model,
const dictionary& dict
)
{
word modelType(dict.lookup("radiationModel"));
if
(
!dict.found("radiationModel")
&& !dict.found(radiationModel::typeName)
)
{
return autoPtr<radiationModel>(new noRadiation(model, dict));
}
const dictionary& radiationDict
(
dict.found("radiationModel")
? dict
: dict.subDict(radiationModel::typeName)
);
const word modelType
(
dict.found("radiationModel")
? radiationDict.lookup("radiationModel")
: radiationDict.lookup("model")
);
Info<< " Selecting radiationModel " << modelType << endl;
@ -53,12 +74,12 @@ autoPtr<filmRadiationModel> filmRadiationModel::New
{
FatalErrorInFunction
<< "Unknown radiationModel type " << modelType << nl << nl
<< "Valid filmRadiationModel types are:" << nl
<< "Valid radiationModel types are:" << nl
<< dictionaryConstructorTablePtr_->toc()
<< exit(FatalError);
}
return autoPtr<filmRadiationModel>(cstrIter()(model, dict));
return autoPtr<radiationModel>(cstrIter()(model, radiationDict));
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -42,7 +42,7 @@ defineTypeNameAndDebug(noRadiation, 0);
addToRunTimeSelectionTable
(
filmRadiationModel,
radiationModel,
noRadiation,
dictionary
);
@ -55,7 +55,7 @@ noRadiation::noRadiation
const dictionary& dict
)
:
filmRadiationModel(film)
radiationModel(film)
{}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -53,7 +53,7 @@ namespace surfaceFilmModels
class noRadiation
:
public filmRadiationModel
public radiationModel
{
public:

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2012-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2012-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -41,7 +41,7 @@ defineTypeNameAndDebug(primaryRadiation, 0);
addToRunTimeSelectionTable
(
filmRadiationModel,
radiationModel,
primaryRadiation,
dictionary
);
@ -54,7 +54,7 @@ primaryRadiation::primaryRadiation
const dictionary& dict
)
:
filmRadiationModel(typeName, film, dict),
radiationModel(typeName, film, dict),
qinFilm_
(
IOobject

View File

@ -54,7 +54,7 @@ namespace surfaceFilmModels
class primaryRadiation
:
public filmRadiationModel
public radiationModel
{
// Private Data

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -41,7 +41,7 @@ defineTypeNameAndDebug(standardRadiation, 0);
addToRunTimeSelectionTable
(
filmRadiationModel,
radiationModel,
standardRadiation,
dictionary
);
@ -54,7 +54,7 @@ standardRadiation::standardRadiation
const dictionary& dict
)
:
filmRadiationModel(typeName, film, dict),
radiationModel(typeName, film, dict),
qinFilm_
(
IOobject

View File

@ -53,7 +53,7 @@ namespace surfaceFilmModels
class standardRadiation
:
public filmRadiationModel
public radiationModel
{
// Private Data

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2015-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2015-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -41,7 +41,7 @@ defineTypeNameAndDebug(ArrheniusViscosity, 0);
addToRunTimeSelectionTable
(
filmViscosityModel,
viscosityModel,
ArrheniusViscosity,
dictionary
);
@ -56,8 +56,8 @@ ArrheniusViscosity::ArrheniusViscosity
volScalarField& mu
)
:
filmViscosityModel(typeName, film, dict, mu),
viscosity_(filmViscosityModel::New(film, coeffDict_, mu)),
viscosityModel(typeName, film, dict, mu),
viscosity_(viscosityModel::New(film, coeffDict_, mu)),
k1_("k1", dimTemperature, coeffDict_),
k2_("k2", dimTemperature, coeffDict_),
Tref_("Tref", dimTemperature, coeffDict_)

View File

@ -61,14 +61,14 @@ namespace surfaceFilmModels
class ArrheniusViscosity
:
public filmViscosityModel
public viscosityModel
{
protected:
// Protected data
//- Base viscosity model
autoPtr<filmViscosityModel> viscosity_;
autoPtr<viscosityModel> viscosity_;
//- Coefficient k1
dimensionedScalar k1_;

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2013-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -41,7 +41,7 @@ defineTypeNameAndDebug(constantViscosity, 0);
addToRunTimeSelectionTable
(
filmViscosityModel,
viscosityModel,
constantViscosity,
dictionary
);
@ -55,7 +55,7 @@ constantViscosity::constantViscosity
volScalarField& mu
)
:
filmViscosityModel(typeName, film, dict, mu),
viscosityModel(typeName, film, dict, mu),
mu0_("mu0", dimDynamicViscosity, coeffDict_)
{
mu_ == mu0_;

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2013-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -52,7 +52,7 @@ namespace surfaceFilmModels
class constantViscosity
:
public filmViscosityModel
public viscosityModel
{
protected:

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2013-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -36,12 +36,12 @@ namespace surfaceFilmModels
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(filmViscosityModel, 0);
defineRunTimeSelectionTable(filmViscosityModel, dictionary);
defineTypeNameAndDebug(viscosityModel, 0);
defineRunTimeSelectionTable(viscosityModel, dictionary);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
filmViscosityModel::filmViscosityModel
viscosityModel::viscosityModel
(
const word& modelType,
surfaceFilmRegionModel& film,
@ -56,13 +56,13 @@ filmViscosityModel::filmViscosityModel
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
filmViscosityModel::~filmViscosityModel()
viscosityModel::~viscosityModel()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
void filmViscosityModel::info(Ostream& os) const
void viscosityModel::info(Ostream& os) const
{}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2013-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -22,7 +22,7 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::regionModels::surfaceFilmModels::filmViscosityModel
Foam::regionModels::surfaceFilmModels::viscosityModel
Description
Base class for surface film viscosity models
@ -50,10 +50,10 @@ namespace surfaceFilmModels
{
/*---------------------------------------------------------------------------*\
Class filmViscosityModel Declaration
Class viscosityModel Declaration
\*---------------------------------------------------------------------------*/
class filmViscosityModel
class viscosityModel
:
public filmSubModelBase
{
@ -68,7 +68,7 @@ protected:
public:
//- Runtime type information
TypeName("filmViscosityModel");
TypeName("viscosity");
// Declare runtime constructor selection table
@ -76,7 +76,7 @@ public:
declareRunTimeSelectionTable
(
autoPtr,
filmViscosityModel,
viscosityModel,
dictionary,
(
surfaceFilmRegionModel& film,
@ -89,7 +89,7 @@ public:
// Constructors
//- Construct from type name, dictionary and surface film model
filmViscosityModel
viscosityModel
(
const word& modelType,
surfaceFilmRegionModel& film,
@ -98,13 +98,13 @@ public:
);
//- Disallow default bitwise copy construction
filmViscosityModel(const filmViscosityModel&) = delete;
viscosityModel(const viscosityModel&) = delete;
// Selectors
//- Return a reference to the selected phase change model
static autoPtr<filmViscosityModel> New
static autoPtr<viscosityModel> New
(
surfaceFilmRegionModel& film,
const dictionary& dict,
@ -113,7 +113,7 @@ public:
//- Destructor
virtual ~filmViscosityModel();
virtual ~viscosityModel();
// Member Functions
@ -137,7 +137,7 @@ public:
// Member Operators
//- Disallow default bitwise assignment
void operator=(const filmViscosityModel&) = delete;
void operator=(const viscosityModel&) = delete;
};

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2013-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -36,16 +36,28 @@ namespace surfaceFilmModels
// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
autoPtr<filmViscosityModel> filmViscosityModel::New
autoPtr<viscosityModel> viscosityModel::New
(
surfaceFilmRegionModel& model,
const dictionary& dict,
volScalarField& mu
)
{
word modelType(dict.lookup("filmViscosityModel"));
const dictionary& viscosityDict
(
dict.found("filmViscosityModel")
? dict
: dict.subDict(viscosityModel::typeName)
);
Info<< " Selecting filmViscosityModel " << modelType << endl;
const word modelType
(
dict.found("filmViscosityModel")
? viscosityDict.lookup("filmViscosityModel")
: viscosityDict.lookup("model")
);
Info<< " Selecting viscosityModel " << modelType << endl;
dictionaryConstructorTable::iterator cstrIter =
dictionaryConstructorTablePtr_->find(modelType);
@ -53,13 +65,13 @@ autoPtr<filmViscosityModel> filmViscosityModel::New
if (cstrIter == dictionaryConstructorTablePtr_->end())
{
FatalErrorInFunction
<< "Unknown filmViscosityModel type " << modelType
<< nl << nl << "Valid filmViscosityModel types are:" << nl
<< "Unknown viscosityModel type " << modelType
<< nl << nl << "Valid viscosityModel types are:" << nl
<< dictionaryConstructorTablePtr_->toc()
<< exit(FatalError);
}
return autoPtr<filmViscosityModel>(cstrIter()(model, dict, mu));
return autoPtr<viscosityModel>(cstrIter()(model, viscosityDict, mu));
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2017-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2017-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -41,7 +41,7 @@ defineTypeNameAndDebug(function1Viscosity, 0);
addToRunTimeSelectionTable
(
filmViscosityModel,
viscosityModel,
function1Viscosity,
dictionary
);
@ -56,8 +56,8 @@ function1Viscosity::function1Viscosity
volScalarField& mu
)
:
filmViscosityModel(typeName, film, dict, mu),
viscosity_(filmViscosityModel::New(film, coeffDict_, mu)),
viscosityModel(typeName, film, dict, mu),
viscosity_(viscosityModel::New(film, coeffDict_, mu)),
function_
(
Function1<scalar>::New("function", coeffDict_)

View File

@ -54,7 +54,7 @@ namespace surfaceFilmModels
class function1Viscosity
:
public filmViscosityModel
public viscosityModel
{
// Private Member Functions
@ -70,7 +70,7 @@ protected:
// Protected data
//- Base viscosity model
autoPtr<filmViscosityModel> viscosity_;
autoPtr<viscosityModel> viscosity_;
//- Viscosity factor as a function of temperature
autoPtr<Function1<scalar>> function_;

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2013-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -42,7 +42,7 @@ defineTypeNameAndDebug(liquidViscosity, 0);
addToRunTimeSelectionTable
(
filmViscosityModel,
viscosityModel,
liquidViscosity,
dictionary
);
@ -56,7 +56,7 @@ liquidViscosity::liquidViscosity
volScalarField& mu
)
:
filmViscosityModel(typeName, film, dict, mu)
viscosityModel(typeName, film, dict, mu)
{}
@ -76,7 +76,7 @@ void liquidViscosity::correct
{
const thermoSingleLayer& film = filmType<thermoSingleLayer>();
mu_ = film.filmThermo().mu();
mu_ = film.thermo().mu();
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2013-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -52,7 +52,7 @@ namespace surfaceFilmModels
class liquidViscosity
:
public filmViscosityModel
public viscosityModel
{
public:

View File

@ -47,7 +47,7 @@ defineTypeNameAndDebug(thixotropicViscosity, 0);
addToRunTimeSelectionTable
(
filmViscosityModel,
viscosityModel,
thixotropicViscosity,
dictionary
);
@ -62,7 +62,7 @@ thixotropicViscosity::thixotropicViscosity
volScalarField& mu
)
:
filmViscosityModel(typeName, film, dict, mu),
viscosityModel(typeName, film, dict, mu),
a_("a", dimless/dimTime, coeffDict_),
b_("b", dimless, coeffDict_),
d_("d", dimless, coeffDict_),

View File

@ -87,7 +87,7 @@ namespace surfaceFilmModels
class thixotropicViscosity
:
public filmViscosityModel
public viscosityModel
{
protected:

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2017-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2017-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -43,7 +43,7 @@ defineTypeNameAndDebug(waxSolventViscosity, 0);
addToRunTimeSelectionTable
(
filmViscosityModel,
viscosityModel,
waxSolventViscosity,
dictionary
);
@ -111,7 +111,7 @@ waxSolventViscosity::waxSolventViscosity
volScalarField& mu
)
:
filmViscosityModel(typeName, film, dict, mu),
viscosityModel(typeName, film, dict, mu),
muWax_
(
IOobject
@ -128,7 +128,7 @@ waxSolventViscosity::waxSolventViscosity
),
muWaxModel_
(
filmViscosityModel::New
viscosityModel::New
(
film,
coeffDict_.subDict("muWax"),
@ -151,7 +151,7 @@ waxSolventViscosity::waxSolventViscosity
),
muSolventModel_
(
filmViscosityModel::New
viscosityModel::New
(
film,
coeffDict_.subDict("muSolvent"),

View File

@ -52,7 +52,7 @@ namespace surfaceFilmModels
class waxSolventViscosity
:
public filmViscosityModel
public viscosityModel
{
// Private Member Functions
@ -68,13 +68,13 @@ protected:
volScalarField muWax_;
//- Wax viscosity model
autoPtr<filmViscosityModel> muWaxModel_;
autoPtr<viscosityModel> muWaxModel_;
//- Solvent viscosity
volScalarField muSolvent_;
//- Solvent viscosity model
autoPtr<filmViscosityModel> muSolventModel_;
autoPtr<viscosityModel> muSolventModel_;
public:

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -59,7 +59,7 @@ class heatTransferModel
public:
//- Runtime type information
TypeName("heatTransferModel");
TypeName("heatTransfer");
// Declare runtime constructor selection table

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -42,7 +42,19 @@ autoPtr<heatTransferModel> heatTransferModel::New
const dictionary& dict
)
{
word modelType(dict.lookup("heatTransferModel"));
const dictionary& heatTransferDict
(
dict.found("heatTransferModel")
? dict
: dict.subDict(heatTransferModel::typeName)
);
const word modelType
(
dict.found("heatTransferModel")
? heatTransferDict.lookup("heatTransferModel")
: heatTransferDict.lookup("model")
);
Info<< " Selecting heatTransferModel " << modelType << endl;
@ -58,7 +70,7 @@ autoPtr<heatTransferModel> heatTransferModel::New
<< exit(FatalError);
}
return autoPtr<heatTransferModel>(cstrIter()(model, dict));
return autoPtr<heatTransferModel>(cstrIter()(model, heatTransferDict));
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -71,7 +71,7 @@ protected:
public:
//- Runtime type information
TypeName("phaseChangeModel");
TypeName("phaseChange");
// Declare runtime constructor selection table

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -23,7 +23,7 @@ License
\*---------------------------------------------------------------------------*/
#include "phaseChangeModel.H"
#include "noPhaseChange.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -42,7 +42,28 @@ autoPtr<phaseChangeModel> phaseChangeModel::New
const dictionary& dict
)
{
word modelType(dict.lookup("phaseChangeModel"));
if
(
!dict.found("phaseChangeModel")
&& !dict.found(phaseChangeModel::typeName)
)
{
return autoPtr<phaseChangeModel>(new noPhaseChange(model, dict));
}
const dictionary& phaseChangeDict
(
dict.found("phaseChangeModel")
? dict
: dict.subDict(phaseChangeModel::typeName)
);
const word modelType
(
dict.found("phaseChangeModel")
? phaseChangeDict.lookup("phaseChangeModel")
: phaseChangeDict.lookup("model")
);
Info<< " Selecting phaseChangeModel " << modelType << endl;
@ -58,7 +79,7 @@ autoPtr<phaseChangeModel> phaseChangeModel::New
<< exit(FatalError);
}
return autoPtr<phaseChangeModel>(cstrIter()(model, dict));
return autoPtr<phaseChangeModel>(cstrIter()(model, phaseChangeDict));
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -104,9 +104,9 @@ void standardPhaseChange::correctModel
const thermoSingleLayer& film = filmType<thermoSingleLayer>();
// Set local thermo properties
const SLGThermo& thermo = film.thermo();
const filmThermoModel& filmThermo = film.filmThermo();
const label vapId = thermo.carrierId(filmThermo.name());
const SLGThermo& slgThermo = film.slgThermo();
const thermoModel& thermo = film.thermo();
const label vapId = slgThermo.carrierId(thermo.name());
// Retrieve fields from film model
const scalarField& delta = film.delta();
@ -124,10 +124,10 @@ void standardPhaseChange::correctModel
);
// Molecular weight of vapour [kg/kmol]
const scalar Wvap = thermo.carrier().Wi(vapId);
const scalar Wvap = slgThermo.carrier().Wi(vapId);
// Molecular weight of liquid [kg/kmol]
const scalar Wliq = filmThermo.W();
const scalar Wliq = thermo.W();
forAll(dMass, celli)
{
@ -139,22 +139,22 @@ void standardPhaseChange::correctModel
const scalar pc = pInf[celli];
// Calculate the boiling temperature
const scalar Tb = filmThermo.Tb(pc);
const scalar Tb = thermo.Tb(pc);
// Local temperature - impose lower limit of 200 K for stability
const scalar Tloc = min(TbFactor_*Tb, max(200.0, T[celli]));
// Saturation pressure [Pa]
const scalar pSat = filmThermo.pv(pc, Tloc);
const scalar pSat = thermo.pv(pc, Tloc);
// Latent heat [J/kg]
const scalar hVap = filmThermo.hl(pc, Tloc);
const scalar hVap = thermo.hl(pc, Tloc);
// Calculate mass transfer
if (pSat >= 0.95*pc)
{
// Boiling
const scalar Cp = filmThermo.Cp(pc, Tloc);
const scalar Cp = thermo.Cp(pc, Tloc);
const scalar Tcorr = max(0.0, T[celli] - Tb);
const scalar qCorr = limMass[celli]*Cp*(Tcorr);
dm = qCorr/hVap;
@ -174,7 +174,7 @@ void standardPhaseChange::correctModel
const scalar Ys = Wliq*pSat/(Wliq*pSat + Wvap*(pc - pSat));
// Vapour diffusivity [m^2/s]
const scalar Dab = filmThermo.D(pc, Tloc);
const scalar Dab = thermo.D(pc, Tloc);
// Schmidt number
const scalar Sc = muInfc/(rhoInfc*(Dab + rootVSmall));
@ -215,7 +215,7 @@ void standardPhaseChange::correctModel
else
{
const thermoSingleLayer& film = filmType<thermoSingleLayer>();
const label vapId = film.thermo().carrierId(film.filmThermo().name());
const label vapId = film.slgThermo().carrierId(film.thermo().name());
const scalarField& YInf = film.YPrimary()[vapId];
correctModel(dt, availableMass, dMass, dEnergy, YInf);

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2017-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2017-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -161,9 +161,9 @@ void waxSolventEvaporation::correctModel
const surfaceScalarField& phi = film.phi();
// Set local thermo properties
const SLGThermo& thermo = film.thermo();
const filmThermoModel& filmThermo = film.filmThermo();
const label vapId = thermo.carrierId(filmThermo.name());
const SLGThermo& slgThermo = film.slgThermo();
const thermoModel& thermo = film.thermo();
const label vapId = slgThermo.carrierId(thermo.name());
// Retrieve fields from film model
const scalarField& pInf = film.pPrimary();
@ -181,7 +181,7 @@ void waxSolventEvaporation::correctModel
);
// Molecular weight of vapour [kg/kmol]
const scalar Wvap = thermo.carrier().Wi(vapId);
const scalar Wvap = slgThermo.carrier().Wi(vapId);
const scalar Wwax = Wwax_.value();
const scalar Wsolvent = Wsolvent_.value();
@ -239,14 +239,14 @@ void waxSolventEvaporation::correctModel
const scalar pc = pInf[celli];
// Calculate the boiling temperature
const scalar Tb = filmThermo.Tb(pc);
const scalar Tb = thermo.Tb(pc);
// Local temperature - impose lower limit of 200 K for stability
const scalar Tloc = min(TbFactor_*Tb, max(200.0, T[celli]));
const scalar pPartialCoeff
(
filmThermo.pv(pc, Tloc)*activityCoeff_->value(Xsolvent)
thermo.pv(pc, Tloc)*activityCoeff_->value(Xsolvent)
);
scalar XsCoeff = pPartialCoeff/pc;
@ -277,7 +277,7 @@ void waxSolventEvaporation::correctModel
const scalar Re = rhoInfc*mag(dU[celli])*L_/muInfc;
// Vapour diffusivity [m^2/s]
const scalar Dab = filmThermo.D(pc, Tloc);
const scalar Dab = thermo.D(pc, Tloc);
// Schmidt number
const scalar Sc = muInfc/(rhoInfc*(Dab + rootVSmall));
@ -308,7 +308,7 @@ void waxSolventEvaporation::correctModel
evapRateInf[celli] = evapRateCoeff[celli]*YInf[celli];
evapRateCoeff[celli] *= YsCoeff;
// hVap[celli] = filmThermo.hl(pc, Tloc);
// hVap[celli] = thermo.hl(pc, Tloc);
}
}
@ -392,7 +392,7 @@ void waxSolventEvaporation::correctModel
else
{
const thermoSingleLayer& film = filmType<thermoSingleLayer>();
const label vapId = film.thermo().carrierId(film.filmThermo().name());
const label vapId = film.slgThermo().carrierId(film.thermo().name());
const scalarField& YInf = film.YPrimary()[vapId];
correctModel(dt, availableMass, dMass, dEnergy, YInf);

View File

@ -104,10 +104,10 @@ void thermoSingleLayer::resetPrimaryRegionSourceTerms()
void thermoSingleLayer::correctThermoFields()
{
rho_ == filmThermo_->rho();
sigma_ == filmThermo_->sigma();
Cp_ == filmThermo_->Cp();
kappa_ == filmThermo_->kappa();
rho_ == thermo_->rho();
sigma_ == thermo_->sigma();
Cp_ == thermo_->Cp();
kappa_ == thermo_->kappa();
}
@ -257,7 +257,7 @@ void thermoSingleLayer::updateSubmodels()
rhoSp_ += rVDt*(cloudMassTrans_() + primaryMassTrans_());
hSp_ += rVDt*(cloudMassTrans_()*h_() + primaryEnergyTrans_());
turbulence_->correct();
momentumTransport_->correct();
}
@ -320,7 +320,7 @@ thermoSingleLayer::thermoSingleLayer
)
:
kinematicSingleLayer(modelType, mesh, g, regionType, false),
thermo_(mesh.lookupObject<SLGThermo>("SLGThermo")),
slgThermo_(mesh.lookupObject<SLGThermo>("SLGThermo")),
Cp_
(
@ -473,7 +473,7 @@ thermoSingleLayer::thermoSingleLayer
YPrimary_(),
viscosity_(filmViscosityModel::New(*this, coeffs(), mu_)),
viscosity_(viscosityModel::New(*this, coeffs(), mu_)),
htcs_
(
@ -486,7 +486,7 @@ thermoSingleLayer::thermoSingleLayer
),
phaseChange_(phaseChangeModel::New(*this, coeffs())),
radiation_(filmRadiationModel::New(*this, coeffs())),
radiation_(radiationModel::New(*this, coeffs())),
Tmin_(-vGreat),
Tmax_(vGreat)
{
@ -500,11 +500,11 @@ thermoSingleLayer::thermoSingleLayer
Info<< " limiting maximum temperature to " << Tmax_ << endl;
}
if (thermo_.hasMultiComponentCarrier())
if (slgThermo_.hasMultiComponentCarrier())
{
YPrimary_.setSize(thermo_.carrier().species().size());
YPrimary_.setSize(slgThermo_.carrier().species().size());
forAll(thermo_.carrier().species(), i)
forAll(slgThermo_.carrier().species(), i)
{
YPrimary_.set
(
@ -513,7 +513,7 @@ thermoSingleLayer::thermoSingleLayer
(
IOobject
(
thermo_.carrier().species()[i],
slgThermo_.carrier().species()[i],
time().timeName(),
regionMesh(),
IOobject::NO_READ,
@ -752,7 +752,7 @@ tmp<volScalarField::Internal> thermoSingleLayer::Srho
const label i
) const
{
const label vapId = thermo_.carrierId(filmThermo_->name());
const label vapId = slgThermo_.carrierId(thermo_->name());
tmp<volScalarField::Internal> tSrho
(

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -54,10 +54,10 @@ namespace surfaceFilmModels
{
// Forward declaration of classes
class filmViscosityModel;
class viscosityModel;
class heatTransferModel;
class phaseChangeModel;
class filmRadiationModel;
class radiationModel;
/*---------------------------------------------------------------------------*\
Class thermoSingleLayer Declaration
@ -80,7 +80,7 @@ protected:
// Thermo properties
//- Reference to the SLGThermo
const SLGThermo& thermo_;
const SLGThermo& slgThermo_;
// Fields
@ -158,7 +158,7 @@ protected:
// Sub-models
//- Viscosity model
autoPtr<filmViscosityModel> viscosity_;
autoPtr<viscosityModel> viscosity_;
//- Heat transfer coefficient between film surface and primary
// region [W/m^2/K]
@ -171,7 +171,7 @@ protected:
autoPtr<phaseChangeModel> phaseChange_;
//- Radiation
autoPtr<filmRadiationModel> radiation_;
autoPtr<radiationModel> radiation_;
// Limits
@ -253,7 +253,7 @@ public:
// Thermo properties
//- Return const reference to the SLGThermo object
inline const SLGThermo& thermo() const;
inline const SLGThermo& slgThermo() const;
// Fields
@ -350,7 +350,7 @@ public:
inline const phaseChangeModel& phaseChange() const;
//- Return const access to the radiation model
inline const filmRadiationModel& radiation() const;
inline const radiationModel& radiation() const;
// Evolution

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -39,9 +39,9 @@ namespace surfaceFilmModels
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
inline const SLGThermo& thermoSingleLayer::thermo() const
inline const SLGThermo& thermoSingleLayer::slgThermo() const
{
return thermo_;
return slgThermo_;
}
@ -128,7 +128,7 @@ inline const phaseChangeModel& thermoSingleLayer::phaseChange() const
}
inline const filmRadiationModel& thermoSingleLayer::radiation() const
inline const radiationModel& thermoSingleLayer::radiation() const
{
return radiation_();
}

View File

@ -21,54 +21,51 @@ regionName wallFilmRegion;
active true;
thermoSingleLayerCoeffs
thermophysicalProperties
{
filmThermoModel liquid;
type liquid;
liquidCoeffs
useReferenceValues no;
liquid H2O;
}
viscosity
{
model liquid;
}
deltaWet 1e-4;
hydrophilic no;
momentumTransport
{
model laminar;
Cf 0.005;
}
forces
{
thermocapillary;
}
upperSurfaceModels
{
heatTransfer
{
useReferenceValues no;
liquid H2O;
}
filmViscosityModel liquid;
deltaWet 1e-4;
hydrophilic no;
turbulence laminar;
laminarCoeffs
{
Cf 0.005;
}
forces
(
thermocapillary
);
injectionModels ();
phaseChangeModel none;
radiationModel none;
upperSurfaceModels
{
heatTransferModel constant;
constantCoeffs
{
c0 1e-8;
}
}
lowerSurfaceModels
{
heatTransferModel constant;
constantCoeffs
{
c0 1e-8;
}
model constant;
c0 1e-8;
}
}
lowerSurfaceModels
{
heatTransfer
{
model constant;
c0 1e-8;
}
}
// ************************************************************************* //

View File

@ -21,58 +21,33 @@ regionName wallFilmRegion;
active true;
thermoSingleLayerCoeffs
thermophysicalProperties
{
filmThermoModel liquid;
type liquid;
liquidCoeffs
{
useReferenceValues no;
liquid H2O;
}
useReferenceValues no;
liquid H2O;
}
filmViscosityModel liquid;
viscosity
{
model liquid;
}
deltaWet 1e-4;
deltaWet 1e-4;
hydrophilic no;
hydrophilic no;
momentumTransport
{
model laminar;
Cf 0.005;
}
radiationModel none;
forces
{
thermocapillary;
turbulence laminar;
laminarCoeffs
{
Cf 0.005;
}
upperSurfaceModels
{
/*
heatTransferModel constant;
constantCoeffs
{
c0 1e-8;
}
*/
heatTransferModel mappedConvectiveHeatTransfer;
}
lowerSurfaceModels
{
heatTransferModel constant;
constantCoeffs
{
c0 50;
}
}
forces
(
thermocapillary
distributionContactAngle
);
distributionContactAngleCoeffs
distributionContactAngle
{
Ccf 0.085;
@ -90,14 +65,11 @@ thermoSingleLayerCoeffs
zeroForcePatches ();
}
}
injectionModels
(
curvatureSeparation
drippingInjection
);
curvatureSeparationCoeffs
injection
{
curvatureSeparation
{
definedPatchRadii
(
@ -105,7 +77,7 @@ thermoSingleLayerCoeffs
);
}
drippingInjectionCoeffs
drippingInjection
{
cloudName reactingCloud1;
deltaStable 0;
@ -124,14 +96,30 @@ thermoSingleLayerCoeffs
}
}
}
}
phaseChangeModel standardPhaseChange;
phaseChange
{
model standardPhaseChange;
Tb 373;
deltaMin 1e-8;
L 1.0;
}
standardPhaseChangeCoeffs
upperSurfaceModels
{
heatTransfer
{
Tb 373;
deltaMin 1e-8;
L 1.0;
model mappedConvectiveHeatTransfer;
}
}
lowerSurfaceModels
{
heatTransfer
{
model constant;
c0 50;
}
}

View File

@ -21,32 +21,27 @@ regionName wallFilmRegion;
active true;
kinematicSingleLayerCoeffs
thermophysicalProperties
{
filmThermoModel constant;
constantCoeffs
{
specie water;
rho0 1000;
mu0 1e-3;
sigma0 0.07;
}
type constant;
injectionModels ();
specie water;
rho0 1000;
mu0 1e-3;
sigma0 0.07;
}
turbulence laminar;
laminarCoeffs
{
Cf 0.001;
}
momentumTransport
{
model laminar;
Cf 0.001;
}
forces
(
thermocapillary
distributionContactAngle
);
forces
{
thermocapillary;
distributionContactAngleCoeffs
distributionContactAngle
{
Ccf 1;
@ -61,8 +56,6 @@ kinematicSingleLayerCoeffs
variance 100;
}
}
zeroForcePatches ();
}
}

View File

@ -21,54 +21,50 @@ regionName wallFilm;
active true;
thermoSingleLayerCoeffs
thermophysicalProperties
{
filmThermoModel liquid;
type liquid;
liquidCoeffs
useReferenceValues no;
liquid H2O;
}
viscosity
{
model liquid;
}
deltaWet 1e-4;
hydrophilic no;
momentumTransport
{
model laminar;
Cf 0.005;
}
forces
{
thermocapillary;
}
upperSurfaceModels
{
heatTransfer
{
useReferenceValues no;
liquid H2O;
}
filmViscosityModel liquid;
deltaWet 1e-4;
hydrophilic no;
turbulence laminar;
laminarCoeffs
{
Cf 0.005;
}
forces
(
thermocapillary
);
injectionModels
();
phaseChangeModel none;
radiationModel none;
upperSurfaceModels
{
heatTransferModel constant;
constantCoeffs
{
c0 1e-8;
}
}
lowerSurfaceModels
{
heatTransferModel constant;
constantCoeffs
{
c0 1e-8;
}
model constant;
c0 1e-8;
}
}
lowerSurfaceModels
{
heatTransfer
{
model constant;
c0 1e-8;
}
}
// ************************************************************************* //