processorField.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-2016 OpenFOAM Foundation
9  Copyright (C) 2020-2021 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
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 "processorField.H"
30 #include "volFields.H"
32 
33 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
34 
35 namespace Foam
36 {
37 namespace functionObjects
38 {
39  defineTypeNameAndDebug(processorField, 0);
40  addToRunTimeSelectionTable(functionObject, processorField, dictionary);
41 }
42 }
43 
44 
45 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
46 
48 (
49  const word& name,
50  const Time& runTime,
51  const dictionary& dict
52 )
53 :
54  fvMeshFunctionObject(name, runTime, dict)
55 {
56  read(dict);
57 
58  volScalarField* procFieldPtr
59  (
60  new volScalarField
61  (
62  IOobject
63  (
64  "processorID",
65  mesh_.time().timeName(),
66  mesh_,
70  ),
71  mesh_,
73  )
74  );
75 
76  mesh_.thisDb().store(procFieldPtr);
77 }
78 
79 
80 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
81 
83 {
85 
86  return true;
87 }
88 
89 
91 {
92  volScalarField& procField =
93  mesh_.lookupObjectRef<volScalarField>("processorID");
94 
95  procField ==
97 
98  return true;
99 }
100 
101 
103 {
104  const volScalarField& procField =
105  mesh_.lookupObject<volScalarField>("processorID");
107  procField.write();
108 
109  return true;
110 }
111 
112 
114 {
115  const_cast<objectRegistry&>(mesh_.thisDb()).erase("processorID");
116 
117  volScalarField* procFieldPtr
118  (
119  new volScalarField
120  (
121  IOobject
122  (
123  "processorID",
124  mesh_.time().timeName(),
125  mesh_,
129  ),
130  mesh_,
132  )
133  );
134 
135  mesh_.thisDb().store(procFieldPtr);
136 }
137 
138 
139 // ************************************************************************* //
virtual void updateMesh(const mapPolyMesh &mpm)
Update for changes of mesh.
dictionary dict
processorField(const word &name, const Time &runTime, const dictionary &dict)
Construct from Time and dictionary.
defineTypeNameAndDebug(ObukhovLength, 0)
srcOptions erase("case")
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
engineTime & runTime
bool store()
Register object with its registry and transfer ownership to the registry.
Definition: regIOobjectI.H:36
virtual bool execute()
Calculate the processorID field.
Ignore writing from objectRegistry::writeObject()
const dimensionSet dimless
Dimensionless.
static int myProcNo(const label communicator=worldComm)
Rank of this process in the communicator (starting from masterNo()). Can be negative if the process i...
Definition: UPstream.H:1074
const Time & time() const
Return the top-level database.
Definition: fvMesh.H:360
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
Definition: Time.H:69
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Definition: mapPolyMesh.H:157
Macros for easy insertion into run-time selection tables.
virtual const objectRegistry & thisDb() const
Return the object registry - resolve conflict polyMesh/lduMesh.
Definition: fvMesh.H:376
virtual bool write()
Write the processorID field.
virtual bool read(const dictionary &)
Read the input data.
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for expressions::valueTypeCode::INVALID.
Definition: exprTraits.C:127
A class for handling words, derived from Foam::string.
Definition: word.H:63
virtual bool write(const bool writeOnProc=true) const
Write using setting from DB.
static word timeName(const scalar t, const int precision=precision_)
Return a time name for the given scalar time value formatted with the given precision.
Definition: Time.C:714
addToRunTimeSelectionTable(functionObject, ObukhovLength, dictionary)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Nothing to be read.
virtual bool read(const dictionary &dict)
Read optional controls.
Registry of regIOobjects.
Defines the attributes of an object for which implicit objectRegistry management is supported...
Definition: IOobject.H:172
Request registration (bool: true)
const fvMesh & mesh_
Reference to the fvMesh.
Namespace for OpenFOAM.