fvMeshToolsTemplates.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2012-2023 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
26 #include "fvMeshTools.H"
27 #include "volFields.H"
28 #include "surfaceFields.H"
29 
30 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
31 
32 template<class GeoField>
33 void Foam::fvMeshTools::setPatchFields
34 (
35  typename GeoField::Mesh& mesh,
36  const label patchi,
37  const dictionary& patchFieldDict
38 )
39 {
40  objectRegistry& obr = const_cast<objectRegistry&>(mesh.thisDb());
41 
42  HashTable<GeoField*> fields(obr.lookupClass<GeoField>());
43 
44  forAllIter(typename HashTable<GeoField*>, fields, iter)
45  {
46  GeoField& field = *iter();
47 
48  if (GeoField::Mesh::geometryFields.found(field.name())) continue;
49 
50  typename GeoField::Boundary& bfield = field.boundaryFieldRef();
51 
52  if
53  (
54  patchFieldDict.found(field.name())
55  || !fvPatch::constraintType(mesh.boundary()[patchi].type())
56  )
57  {
58  bfield.set
59  (
60  patchi,
62  (
63  mesh.boundary()[patchi],
64  field(),
65  patchFieldDict.subDict(field.name())
66  )
67  );
68  }
69  }
70 }
71 
72 
73 template<class GeoField>
74 void Foam::fvMeshTools::setPatchFields
75 (
76  typename GeoField::Mesh& mesh,
77  const label patchi,
78  const typename GeoField::value_type& value
79 )
80 {
81  objectRegistry& obr = const_cast<objectRegistry&>(mesh.thisDb());
82 
83  HashTable<GeoField*> fields(obr.lookupClass<GeoField>());
84 
85  forAllIter(typename HashTable<GeoField*>, fields, iter)
86  {
87  GeoField& field = *iter();
88 
89  if (GeoField::Mesh::geometryFields.found(field.name())) continue;
90 
91  typename GeoField::Boundary& bfield = field.boundaryFieldRef();
92 
93  bfield[patchi] == value;
94  }
95 }
96 
97 
98 // ************************************************************************* //
bool found
#define forAllIter(Container, container, iter)
Iterate across all elements in the container object of type.
Definition: UList.H:459
static bool constraintType(const word &pt)
Return true if the given type is a constraint type.
Definition: fvPatch.C:61
label patchi
Info<< "Calculating turbulent flame speed field St\n"<< endl;volScalarField St(IOobject("St", runTime.name(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), flameWrinkling->Xi() *Su);multivariateSurfaceInterpolationScheme< scalar >::fieldTable fields
Definition: createFields.H:230
autoPtr< CompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const viscosity &viscosity)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
Foam::surfaceFields.