fvOptions.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) 2011-2017 OpenFOAM Foundation
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 "fvOptions.H"
30#include "fvMesh.H"
31#include "Time.H"
32
33// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
34
35namespace Foam
36{
37 namespace fv
38 {
40 }
41}
42
43
44// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * //
45
46Foam::IOobject Foam::fv::options::createIOobject
47(
48 const fvMesh& mesh
49) const
50{
51 IOobject io
52 (
53 typeName,
54 mesh.time().constant(),
55 mesh,
58 );
59
60 if (io.typeHeaderOk<IOdictionary>(true))
61 {
62 Info<< "Creating finite volume options from "
63 << io.instance()/io.name() << nl
64 << endl;
65
67 }
68 else
69 {
70 // Check if the fvOptions file is in system
71 io.instance() = mesh.time().system();
72
73 if (io.typeHeaderOk<IOdictionary>(true))
74 {
75 Info<< "Creating finite volume options from "
76 << io.instance()/io.name() << nl
77 << endl;
78
80 }
81 else
82 {
84 }
85 }
86
87 return io;
88}
89
90
91// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
92
94(
95 const fvMesh& mesh
96)
97:
98 IOdictionary(createIOobject(mesh)),
99 optionList(mesh, *this)
100{}
101
102
104{
105 if (mesh.thisDb().foundObject<options>(typeName))
106 {
107 return const_cast<options&>
108 (
109 mesh.lookupObject<options>(typeName)
110 );
111 }
112 else
113 {
115 << "Constructing " << typeName
116 << " for region " << mesh.name() << nl;
117
118 options* objectPtr = new options(mesh);
119 regIOobject::store(objectPtr);
120 return *objectPtr;
121 }
122}
123
124
126{
127 if (IOdictionary::regIOobject::read())
128 {
129 optionList::read(*this);
130 return true;
131 }
132
133 return false;
134}
135
136
137// ************************************************************************* //
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
Definition: IOdictionary.H:57
Defines the attributes of an object for which implicit objectRegistry management is supported,...
Definition: IOobject.H:170
const word & name() const noexcept
Return the object name.
Definition: IOobjectI.H:65
readOption readOpt() const noexcept
The read option.
Definition: IOobjectI.H:164
bool typeHeaderOk(const bool checkType=true, const bool search=true, const bool verbose=true)
Read header (uses typeFilePath to find file) and check its info.
const fileName & instance() const noexcept
Read access to instance path component.
Definition: IOobjectI.H:196
@ MUST_READ_IF_MODIFIED
Definition: IOobject.H:180
virtual bool read()
Re-read model coefficients if they have changed.
const word & system() const
Return system name.
Definition: TimePathsI.H:102
const word & constant() const
Return constant name.
Definition: TimePathsI.H:96
static autoPtr< Time > New()
Construct (dummy) Time - no functionObjects or libraries.
Definition: Time.C:717
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:91
const Time & time() const
Return the top-level database.
Definition: fvMesh.H:290
List of finite volume options.
Definition: fvOptionList.H:72
Finite-volume options.
Definition: fvOptions.H:59
virtual bool read()
Read dictionary.
Definition: fvOptions.C:125
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
Definition: className.H:121
dynamicFvMesh & mesh
IOobject io("surfaceFilmProperties", mesh.time().constant(), mesh, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE, false)
#define DebugInFunction
Report an information message using Foam::Info.
Namespace for OpenFOAM.
messageStream Info
Information stream (stdout output on master, null elsewhere)
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:372
constexpr char nl
The newline '\n' character (0x0a)
Definition: Ostream.H:53
labelList fv(nPoints)