Files
OpenFOAM-12/applications/modules/multiphaseEuler/phaseSystems/diameterModels/fixedInterfacialAreaDiameter/fixedInterfacialAreaDiameter.H
Henry Weller ca72b0a963 fvPatchFields: Removed all fvPatchFields requiring user specified data from the null-constructor table
This avoids potential hidden run-time errors caused by solvers running with
boundary conditions which are not fully specified.  Note that "null-constructor"
here means the constructor from patch and internal field only, no data is
provided.

Constraint and simple BCs such as 'calculated', 'zeroGradient' and others which
do not require user input to fully specify their operation remain on the
null-constructor table for the construction of fields with for example all
'calculated' or all 'zeroGradient' BCs.

A special version of the 'inletOutlet' fvPatchField named 'zeroInletOutlet' has
been added in which the inlet value is hard-coded to zero which allows this BC
to be included on the null-constructor table.  This is useful for the 'age'
functionObject to avoid the need to provide the 'age' volScalarField at time 0
unless special inlet or outlet BCs are required.  Also for isothermalFilm in
which the 'alpha' field is created automatically from the 'delta' field if it is
not present and can inherit 'zeroInletOutlet' from 'delta' if appropriate.  If a
specific 'inletValue' is require or other more complex BCs then the 'alpha'
field file must be provided to specify these BCs as before.

Following this improvement it will now be possible to remove the
null-constructors from all fvPatchFields not added to the null-constructor
table, which is most of them, thus reducing the amount of code and maintenance
overhead and making easier and more obvious to write new fvPatchField types.
2023-05-27 16:56:10 +01:00

111 lines
3.3 KiB
C++

/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2023 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::diameterModels::fixedInterfacialArea
Description
fixedInterfacialArea dispersed-phase diameter model.
The interfacial are is set by providing phase surface area divided by phase
volume, AvbyAlpha, either as a constant value or as a field.
SourceFiles
fixedInterfacialAreaDiameter.C
\*---------------------------------------------------------------------------*/
#ifndef fixedInterfacialAreaDiameter_H
#define fixedInterfacialAreaDiameter_H
#include "diameterModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace diameterModels
{
/*---------------------------------------------------------------------------*\
Class fixedInterfacialArea Declaration
\*---------------------------------------------------------------------------*/
class fixedInterfacialArea
:
public diameterModel
{
// Private Data
//- Uniform fixed area by volume of the stationary phase for calculation
// of the interfacial area
dimensionedScalar AvbyAlpha_;
//- Optional area by volume field of the stationary phase for
// calculation of interfacial area
autoPtr<volScalarField> AvbyAlphaFieldPtr_;
public:
//- Runtime type information
TypeName("fixedInterfacialArea");
// Constructors
//- Construct from dictionary and phase
fixedInterfacialArea
(
const dictionary& diameterProperties,
const phaseModel& phase
);
//- Destructor
virtual ~fixedInterfacialArea();
// Member Functions
//- Get the diameter field
virtual tmp<volScalarField> d() const;
//- Get the surface area per unit volume field
virtual tmp<volScalarField> Av() const;
//- Read diameterProperties dictionary
virtual bool read(const dictionary& diameterProperties);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace diameterModels
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //