surfaceFilmModel: film model selection now handled by fvModel

There is no longer any need for the surfaceFilmModel abstract base class and
"New" selection method as surface films are now handled within the fvModel
framework.  This makes the surfaceFilmModel entry in the surfaceFilmProperties
dictionary redundant.

The surfaceFilm and VoFSurfaceFilm fvModels now instantiate a thermoSingleLayer
providing direct access to all the film functions, simplifying the
implementation better ensuring consistency between the film and primary region
equations.
This commit is contained in:
Henry Weller
2021-12-16 20:51:08 +00:00
parent 593befd959
commit ad20aecf0e
20 changed files with 64 additions and 673 deletions

View File

@ -58,21 +58,12 @@ Foam::fv::VoFSurfaceFilm::VoFSurfaceFilm
) )
: :
fvModel(sourceName, modelType, dict, mesh), fvModel(sourceName, modelType, dict, mesh),
phaseName_(dict.lookup("phase")), surfaceFilm_
thermo_
( (
mesh.lookupObject<fluidThermo> regionModels::surfaceFilmModels::thermoSingleLayer::typeName,
( mesh,
IOobject::groupName(physicalProperties::typeName, phaseName_) mesh.lookupObject<uniformDimensionedVectorField>("g"),
) "surfaceFilm"
),
film_
(
regionModels::surfaceFilmModel::New
(
mesh,
mesh.lookupObject<uniformDimensionedVectorField>("g")
)
), ),
curTimeIndex_(-1) curTimeIndex_(-1)
{} {}
@ -82,7 +73,14 @@ Foam::fv::VoFSurfaceFilm::VoFSurfaceFilm
Foam::wordList Foam::fv::VoFSurfaceFilm::addSupFields() const Foam::wordList Foam::fv::VoFSurfaceFilm::addSupFields() const
{ {
return wordList({thermo_.rho()().name(), "U", "T"}); return wordList
(
{
surfaceFilm_.rhoPrimary().name(),
surfaceFilm_.UPrimary().name(),
surfaceFilm_.TPrimary().name()
}
);
} }
@ -93,7 +91,7 @@ void Foam::fv::VoFSurfaceFilm::correct()
return; return;
} }
film_->evolve(); surfaceFilm_.evolve();
curTimeIndex_ = mesh().time().timeIndex(); curTimeIndex_ = mesh().time().timeIndex();
} }
@ -111,17 +109,18 @@ void Foam::fv::VoFSurfaceFilm::addSup
Info<< type() << ": applying source to " << eqn.psi().name() << endl; Info<< type() << ": applying source to " << eqn.psi().name() << endl;
} }
if (fieldName == thermo_.rho()().name()) if (fieldName == surfaceFilm_.rhoPrimary().name())
{ {
eqn += film_->Srho(); eqn += surfaceFilm_.Srho();
} }
else if (fieldName == "T") else if (fieldName == surfaceFilm_.TPrimary().name())
{ {
const volScalarField::Internal Cv(thermo_.Cv()); const volScalarField::Internal Cv(surfaceFilm_.primaryThermo().Cv());
eqn += eqn +=
film_->Sh()()/Cv surfaceFilm_.Sh()()/Cv
+ film_->Srho()*(eqn.psi() - thermo_.he()/Cv); + surfaceFilm_.Srho()
*(eqn.psi() - surfaceFilm_.primaryThermo().he()/Cv);
} }
else else
{ {
@ -144,7 +143,7 @@ void Foam::fv::VoFSurfaceFilm::addSup
Info<< type() << ": applying source to " << eqn.psi().name() << endl; Info<< type() << ": applying source to " << eqn.psi().name() << endl;
} }
eqn += film_->SU(); eqn += surfaceFilm_.SU();
} }

View File

@ -46,8 +46,7 @@ SourceFiles
#define VoFSurfaceFilm_H #define VoFSurfaceFilm_H
#include "fvModel.H" #include "fvModel.H"
#include "fluidThermo.H" #include "thermoSingleLayer.H"
#include "surfaceFilmModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -57,7 +56,7 @@ namespace fv
{ {
/*---------------------------------------------------------------------------*\ /*---------------------------------------------------------------------------*\
Class VoFSurfaceFilm Declaration Class VoFSurfaceFilm Declaration
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
class VoFSurfaceFilm class VoFSurfaceFilm
@ -66,14 +65,8 @@ class VoFSurfaceFilm
{ {
// Private Data // Private Data
//- The name of the phase which transfers to the film //- The surface film model
word phaseName_; regionModels::surfaceFilmModels::thermoSingleLayer surfaceFilm_;
//- Reference to the primary region thermo
const fluidThermo& thermo_;
//- The surface film model pointer
mutable autoPtr<regionModels::surfaceFilmModel> film_;
//- Current time index (used for updating) //- Current time index (used for updating)
mutable label curTimeIndex_; mutable label curTimeIndex_;

View File

@ -1,8 +1,5 @@
# Surface film models # Surface film models
surfaceFilmModel/surfaceFilmModel.C
surfaceFilmModel/surfaceFilmModelNew.C
surfaceFilmRegionModel/surfaceFilmRegionModel.C surfaceFilmRegionModel/surfaceFilmRegionModel.C
noFilm/noFilm.C
kinematicSingleLayer/kinematicSingleLayer.C kinematicSingleLayer/kinematicSingleLayer.C
thermoSingleLayer/thermoSingleLayer.C thermoSingleLayer/thermoSingleLayer.C

View File

@ -24,6 +24,7 @@ License
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "surfaceFilm.H" #include "surfaceFilm.H"
#include "uniformDimensionedFields.H"
#include "basicSpecieMixture.H" #include "basicSpecieMixture.H"
#include "fvMatrix.H" #include "fvMatrix.H"
#include "addToRunTimeSelectionTable.H" #include "addToRunTimeSelectionTable.H"
@ -57,17 +58,12 @@ Foam::fv::surfaceFilm::surfaceFilm
) )
: :
fvModel(sourceName, modelType, dict, mesh), fvModel(sourceName, modelType, dict, mesh),
primaryThermo_
(
mesh.lookupObject<fluidThermo>(physicalProperties::typeName)
),
surfaceFilm_ surfaceFilm_
( (
regionModels::surfaceFilmModel::New regionModels::surfaceFilmModels::thermoSingleLayer::typeName,
( mesh,
mesh, mesh.lookupObject<uniformDimensionedVectorField>("g"),
mesh.lookupObject<uniformDimensionedVectorField>("g") "surfaceFilm"
)
), ),
curTimeIndex_(-1) curTimeIndex_(-1)
{} {}
@ -77,12 +73,19 @@ Foam::fv::surfaceFilm::surfaceFilm
Foam::wordList Foam::fv::surfaceFilm::addSupFields() const Foam::wordList Foam::fv::surfaceFilm::addSupFields() const
{ {
wordList fieldNames({"rho", "U", primaryThermo_.he().name()}); wordList fieldNames
(
{
surfaceFilm_.rhoPrimary().name(),
surfaceFilm_.UPrimary().name(),
surfaceFilm_.primaryThermo().he().name()
}
);
if (isA<basicSpecieMixture>(primaryThermo_)) if (isA<basicSpecieMixture>(surfaceFilm_.primaryThermo()))
{ {
const basicSpecieMixture& composition = const basicSpecieMixture& composition =
refCast<const basicSpecieMixture>(primaryThermo_); refCast<const basicSpecieMixture>(surfaceFilm_.primaryThermo());
const PtrList<volScalarField>& Y = composition.Y(); const PtrList<volScalarField>& Y = composition.Y();
@ -106,7 +109,7 @@ void Foam::fv::surfaceFilm::correct()
return; return;
} }
surfaceFilm_->evolve(); surfaceFilm_.evolve();
curTimeIndex_ = mesh().time().timeIndex(); curTimeIndex_ = mesh().time().timeIndex();
} }
@ -123,9 +126,9 @@ void Foam::fv::surfaceFilm::addSup
Info<< type() << ": applying source to " << eqn.psi().name() << endl; Info<< type() << ": applying source to " << eqn.psi().name() << endl;
} }
if (fieldName == "rho") if (fieldName == surfaceFilm_.rhoPrimary().name())
{ {
eqn += surfaceFilm_->Srho(); eqn += surfaceFilm_.Srho();
} }
else else
{ {
@ -148,26 +151,27 @@ void Foam::fv::surfaceFilm::addSup
Info<< type() << ": applying source to " << eqn.psi().name() << endl; Info<< type() << ": applying source to " << eqn.psi().name() << endl;
} }
if (fieldName == "rho") if (fieldName == surfaceFilm_.rhoPrimary().name())
{ {
eqn += surfaceFilm_->Srho(); eqn += surfaceFilm_.Srho();
} }
else if (fieldName == primaryThermo_.he().name()) else if (fieldName == surfaceFilm_.primaryThermo().he().name())
{ {
eqn += surfaceFilm_->Sh(); eqn += surfaceFilm_.Sh();
} }
else if else if
( (
isA<basicSpecieMixture>(primaryThermo_) isA<basicSpecieMixture>(surfaceFilm_.primaryThermo())
&& refCast<const basicSpecieMixture>(primaryThermo_).contains && refCast<const basicSpecieMixture>(surfaceFilm_.primaryThermo()).contains
( (
eqn.psi().name() eqn.psi().name()
) )
) )
{ {
eqn += surfaceFilm_->SYi eqn += surfaceFilm_.SYi
( (
refCast<const basicSpecieMixture>(primaryThermo_).index(eqn.psi()) refCast<const basicSpecieMixture>(surfaceFilm_.primaryThermo())
.index(eqn.psi())
); );
} }
else else
@ -191,9 +195,9 @@ void Foam::fv::surfaceFilm::addSup
Info<< type() << ": applying source to " << eqn.psi().name() << endl; Info<< type() << ": applying source to " << eqn.psi().name() << endl;
} }
if (fieldName == "U") if (fieldName == surfaceFilm_.UPrimary().name())
{ {
eqn += surfaceFilm_->SU(); eqn += surfaceFilm_.SU();
} }
else else
{ {

View File

@ -45,9 +45,7 @@ SourceFiles
#define surfaceFilm_H #define surfaceFilm_H
#include "fvModel.H" #include "fvModel.H"
#include "fluidThermo.H" #include "thermoSingleLayer.H"
#include "uniformDimensionedFields.H"
#include "surfaceFilmModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -57,7 +55,7 @@ namespace fv
{ {
/*---------------------------------------------------------------------------*\ /*---------------------------------------------------------------------------*\
Class surfaceFilm Declaration Class surfaceFilm Declaration
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
class surfaceFilm class surfaceFilm
@ -66,11 +64,8 @@ class surfaceFilm
{ {
// Private Data // Private Data
//- Reference to the primary region thermo //- The surface film model
const fluidThermo& primaryThermo_; regionModels::surfaceFilmModels::thermoSingleLayer surfaceFilm_;
//- The surfaceFilmModel pointer
autoPtr<regionModels::surfaceFilmModel> surfaceFilm_;
//- Current time index (used for updating) //- Current time index (used for updating)
mutable label curTimeIndex_; mutable label curTimeIndex_;

View File

@ -1,127 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "noFilm.H"
#include "addToRunTimeSelectionTable.H"
#include "volFields.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace regionModels
{
namespace surfaceFilmModels
{
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(noFilm, 0);
addToRunTimeSelectionTable(surfaceFilmModel, noFilm, mesh);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
noFilm::noFilm
(
const word& modelType,
const fvMesh& mesh,
const dimensionedVector& g,
const word& regionType
)
:
surfaceFilmModel(),
mesh_(mesh)
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
noFilm::~noFilm()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam::scalar noFilm::CourantNumber() const
{
return 0;
}
tmp<volScalarField::Internal> noFilm::Srho() const
{
return volScalarField::Internal::New
(
"noFilm::Srho",
mesh_,
dimensionedScalar(dimMass/dimVolume/dimTime, 0)
);
}
tmp<volScalarField::Internal> noFilm::SYi(const label i) const
{
return volScalarField::Internal::New
(
"noFilm::SY(" + Foam::name(i) + ")",
mesh_,
dimensionedScalar(dimMass/dimVolume/dimTime, 0)
);
}
tmp<volVectorField::Internal> noFilm::SU() const
{
return volVectorField::Internal::New
(
IOobject::modelName("SU", typeName),
mesh_,
dimensionedVector(dimMass/dimVolume/dimTime, Zero)
);
}
tmp<volScalarField::Internal> noFilm::Sh() const
{
return volScalarField::Internal::New
(
"noFilm::Sh",
mesh_,
dimensionedScalar(dimEnergy/dimVolume/dimTime, 0)
);
}
void noFilm::evolve()
{}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace surfaceFilmModels
} // End namespace regionModels
} // End namespace Foam
// ************************************************************************* //

View File

@ -1,138 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::regionModels::surfaceFilmModels::noFilm
Description
Dummy surfaceFilmModel to allow solvers supporting film simulations to be
run without a film region.
SourceFiles
noFilm.C
\*---------------------------------------------------------------------------*/
#ifndef noFilm_H
#define noFilm_H
#include "surfaceFilmModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace regionModels
{
namespace surfaceFilmModels
{
/*---------------------------------------------------------------------------*\
Class noFilm Declaration
\*---------------------------------------------------------------------------*/
class noFilm
:
public surfaceFilmModel
{
// Private member data
//- Reference to the mesh
const fvMesh& mesh_;
public:
//- Runtime type information
TypeName("none");
// Constructors
//- Construct from components
noFilm
(
const word& modelType,
const fvMesh& mesh,
const dimensionedVector& g,
const word& regionType
);
//- Disallow default bitwise copy construction
noFilm(const noFilm&) = delete;
//- Destructor
virtual ~noFilm();
// Member Functions
// Solution parameters
//- Courant number evaluation
virtual scalar CourantNumber() const;
// Primary region source fields
//- Return total mass source - Eulerian phase only
virtual tmp<volScalarField::Internal> Srho() const;
//- Return mass source for specie i - Eulerian phase only
virtual tmp<volScalarField::Internal> SYi
(
const label i
) const;
//- Return momentum source - Eulerian phase only
virtual tmp<volVectorField::Internal> SU() const;
//- Return enthalpy source - Eulerian phase only
virtual tmp<volScalarField::Internal> Sh() const;
// Evolution
//- Main driver routing to evolve the region - calls other evolves
virtual void evolve();
// Member Operators
//- Disallow default bitwise assignment
void operator=(const noFilm&) = delete;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace surfaceFilmModels
} // regionModels
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -1,58 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2017-2021 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "surfaceFilmModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace regionModels
{
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(surfaceFilmModel, 0);
defineRunTimeSelectionTable(surfaceFilmModel, mesh);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
surfaceFilmModel::surfaceFilmModel()
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
surfaceFilmModel::~surfaceFilmModel()
{}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace regionModels
} // End namespace Foam
// ************************************************************************* //

View File

@ -1,150 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2017-2021 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::regionModels::surfaceFilmModel
Description
Base class for surface film models
SourceFiles
surfaceFilmModelI.H
surfaceFilmModel.C
surfaceFilmModelNew.C
\*---------------------------------------------------------------------------*/
#ifndef surfaceFilmModel_H
#define surfaceFilmModel_H
#include "runTimeSelectionTables.H"
#include "volFields.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace regionModels
{
/*---------------------------------------------------------------------------*\
Class surfaceFilmModel Declaration
\*---------------------------------------------------------------------------*/
class surfaceFilmModel
{
public:
//- Runtime type information
TypeName("surfaceFilmModel");
// Declare runtime constructor selection table
declareRunTimeSelectionTable
(
autoPtr,
surfaceFilmModel,
mesh,
(
const word& modelType,
const fvMesh& mesh,
const dimensionedVector& g,
const word& regionType
),
(modelType, mesh, g, regionType)
);
// Constructors
surfaceFilmModel();
//- Disallow default bitwise copy construction
surfaceFilmModel(const surfaceFilmModel&) = delete;
// Selectors
//- Return a reference to the selected surface film model
static autoPtr<surfaceFilmModel> New
(
const fvMesh& mesh,
const dimensionedVector& g,
const word& regionType = "surfaceFilm"
);
//- Destructor
virtual ~surfaceFilmModel();
// Member Functions
// Solution parameters
//- Courant number evaluation
virtual scalar CourantNumber() const = 0;
// Evolution
//- Main driver routing to evolve the region - calls other evolves
virtual void evolve() = 0;
// Primary region source fields
//- Return total mass source - Eulerian phase only
virtual tmp<volScalarField::Internal> Srho() const = 0;
//- Return mass source for specie i - Eulerian phase only
virtual tmp<volScalarField::Internal> SYi
(
const label i
) const = 0;
//- Return momentum source - Eulerian phase only
virtual tmp<volVectorField::Internal> SU() const = 0;
//- Return enthalpy source - Eulerian phase only
virtual tmp<volScalarField::Internal> Sh() const = 0;
// Member Operators
//- Disallow default bitwise assignment
void operator=(const surfaceFilmModel&) = delete;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace regionModels
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -1,105 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "surfaceFilmModel.H"
#include "noFilm.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace regionModels
{
// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
autoPtr<surfaceFilmModel> surfaceFilmModel::New
(
const fvMesh& mesh,
const dimensionedVector& g,
const word& regionType
)
{
word modelType;
{
typeIOobject<IOdictionary> surfaceFilmPropertiesDictHeader
(
regionType + "Properties",
mesh.time().constant(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE,
false
);
if (surfaceFilmPropertiesDictHeader.headerOk())
{
IOdictionary surfaceFilmPropertiesDict
(
surfaceFilmPropertiesDictHeader
);
surfaceFilmPropertiesDict.lookup("surfaceFilmModel") >> modelType;
}
else
{
modelType = surfaceFilmModels::noFilm::typeName;
}
}
Info<< "Selecting surfaceFilmModel " << modelType << endl;
meshConstructorTable::iterator cstrIter =
meshConstructorTablePtr_->find(modelType);
if (cstrIter == meshConstructorTablePtr_->end())
{
FatalErrorInFunction
<< "Unknown surfaceFilmModel type " << modelType
<< nl << nl << "Valid surfaceFilmModel types are:" << nl
<< meshConstructorTablePtr_->toc()
<< exit(FatalError);
}
return autoPtr<surfaceFilmModel>
(
cstrIter()
(
modelType,
mesh,
g,
regionType
)
);
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace regionModels
} // End namespace Foam
// ************************************************************************* //

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org \\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -63,7 +63,6 @@ surfaceFilmRegionModel::surfaceFilmRegionModel
const word& regionType const word& regionType
) )
: :
surfaceFilmModel(),
singleLayerRegion(mesh, regionType, modelType), singleLayerRegion(mesh, regionType, modelType),
g_(g) g_(g)
{ {

View File

@ -35,7 +35,6 @@ SourceFiles
#ifndef surfaceFilmRegionModel_H #ifndef surfaceFilmRegionModel_H
#define surfaceFilmRegionModel_H #define surfaceFilmRegionModel_H
#include "surfaceFilmModel.H"
#include "singleLayerRegion.H" #include "singleLayerRegion.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -53,7 +52,6 @@ namespace surfaceFilmModels
class surfaceFilmRegionModel class surfaceFilmRegionModel
: :
public surfaceFilmModel,
public singleLayerRegion public singleLayerRegion
{ {
// Private data // Private data

View File

@ -60,8 +60,6 @@ namespace surfaceFilmModels
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(thermoSingleLayer, 0); defineTypeNameAndDebug(thermoSingleLayer, 0);
addToRunTimeSelectionTable(surfaceFilmRegionModel, thermoSingleLayer, mesh);
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //

View File

@ -10,12 +10,10 @@ FoamFile
format ascii; format ascii;
class dictionary; class dictionary;
location "constant"; location "constant";
object SurfaceFilmProperties; object surfaceFilmProperties;
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
surfaceFilmModel thermoSingleLayer;
regionName wallFilmRegion; regionName wallFilmRegion;
viscosity viscosity

View File

@ -10,12 +10,10 @@ FoamFile
format ascii; format ascii;
class dictionary; class dictionary;
location "constant"; location "constant";
object SurfaceFilmProperties; object surfaceFilmProperties;
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
surfaceFilmModel thermoSingleLayer;
regionName wallFilmRegion; regionName wallFilmRegion;
viscosity viscosity

View File

@ -10,12 +10,10 @@ FoamFile
format ascii; format ascii;
class dictionary; class dictionary;
location "constant"; location "constant";
object SurfaceFilmProperties; object surfaceFilmProperties;
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
surfaceFilmModel thermoSingleLayer;
regionName wallFilmRegion; regionName wallFilmRegion;
viscosity viscosity

View File

@ -10,12 +10,10 @@ FoamFile
format ascii; format ascii;
class dictionary; class dictionary;
location "constant"; location "constant";
object SurfaceFilmProperties; object surfaceFilmProperties;
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
surfaceFilmModel thermoSingleLayer;
regionName wallFilm; regionName wallFilm;
viscosity viscosity

View File

@ -29,8 +29,6 @@ VoFSurfaceFilm
type VoFSurfaceFilm; type VoFSurfaceFilm;
libs ("libVoFSurfaceFilm.so"); libs ("libVoFSurfaceFilm.so");
phase liquid;
} }
// ************************************************************************* // // ************************************************************************* //

View File

@ -14,8 +14,6 @@ FoamFile
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
surfaceFilmModel thermoSingleLayer;
regionName wallFilmRegion; regionName wallFilmRegion;
phase liquid; phase liquid;

View File

@ -14,8 +14,6 @@ FoamFile
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
surfaceFilmModel thermoSingleLayer;
regionName plateRegion; regionName plateRegion;
phase liquid; phase liquid;