Loading...
Searching...
No Matches
fvExprDriverNew.C
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2010-2018 Bernhard Gschaider
9 Copyright (C) 2019-2021 OpenCFD Ltd.
10-------------------------------------------------------------------------------
11License
12 This file is part of OpenFOAM.
13
14 OpenFOAM is free software: you can redistribute it and/or modify it
15 under the terms of the GNU General Public License as published by
16 the Free Software Foundation, either version 3 of the License, or
17 (at your option) any later version.
18
19 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22 for more details.
23
24 You should have received a copy of the GNU General Public License
25 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26
27\*---------------------------------------------------------------------------*/
28
29#include "fvExprDriver.H"
30
31// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
32
35(
36 const dictionary& dict
37)
38{
40 (
43 );
44}
45
46
49(
50 const dictionary& dict,
51 const fvMesh& mesh
52)
53{
54 const word driverType(dict.get<word>("valueType"));
55
56 auto* ctorPtr = dictionaryConstructorTable(driverType);
57
58 if (!ctorPtr)
59 {
61 (
62 dict,
63 "valueType",
64 driverType,
65 *dictionaryConstructorTablePtr_
66 ) << exit(FatalIOError);
67 }
68
69 DebugInFunction << "Creating driver of type " << driverType << endl;
70
71 resetDefaultMesh(mesh, false); // lazy
72
73 return autoPtr<fvExprDriver>(ctorPtr(dict, mesh));
74}
75
76
79(
80 const word& driverType,
81 const word& id,
82 const fvMesh& mesh
83)
84{
85 auto* ctorPtr = idNameConstructorTable(driverType);
86
87 if (!ctorPtr)
88 {
90 (
91 "valueType",
92 driverType,
93 *idNameConstructorTablePtr_
94 ) << exit(FatalError);
95 }
96
97 DebugInFunction << "Creating driver of type " << driverType << endl;
98
99 resetDefaultMesh(mesh, false); // lazy
100
101 return autoPtr<fvExprDriver>(ctorPtr(id, mesh));
102}
103
104
105// ************************************************************************* //
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition autoPtr.H:65
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
const dictionary & dict() const noexcept
The dictionary with all input data/specification.
Definition exprDriver.H:455
static autoPtr< fvExprDriver > New(const dictionary &dict, const fvMesh &mesh)
Return a reference to the selected value driver.
static const fvMesh & defaultMesh()
Get the default mesh, if one is defined.
virtual const fvMesh & mesh() const =0
The mesh we are attached to.
static const fvMesh * resetDefaultMesh(const fvMesh &mesh, const bool force=false)
Set the default mesh (if not already set).
Mesh data needed to do the Finite Volume discretisation.
Definition fvMesh.H:85
A class for handling words, derived from Foam::string.
Definition word.H:66
dynamicFvMesh & mesh
#define FatalErrorInLookup(lookupTag, lookupName, lookupTable)
Report an error message using Foam::FatalError.
Definition error.H:607
#define FatalIOErrorInLookup(ios, lookupTag, lookupName, lookupTable)
Report an error message using Foam::FatalIOError.
Definition error.H:637
#define DebugInFunction
Report an information message using Foam::Info.
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition Ostream.H:519
IOerror FatalIOError
Error stream (stdout output on all processes), with additional 'FOAM FATAL IO ERROR' header text and ...
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
errorManipArg< error, int > exit(error &err, const int errNo=1)
Definition errorManip.H:125
dictionary dict