vtkPVFoamAddToSelection.H
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) 2011-2025 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 #ifndef vtkPVFoamAddToSelection_H
27 #define vtkPVFoamAddToSelection_H
28 
29 #include "vtkPVFoam.H"
30 
31 // OpenFOAM includes
32 #include "IOobjectList.H"
33 #include "SortableList.H"
34 
35 // VTK includes
36 #include "vtkDataArraySelection.h"
37 
38 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
39 
40 template<class Type>
41 Foam::label Foam::vtkPVFoam::addToSelection
42 (
43  vtkDataArraySelection *select,
44  const IOobjectList& objectLst,
45  const string& suffix
46 )
47 {
48  SortableList<word> names(objectLst.names(Type::typeName));
49 
50  forAll(names, nameI)
51  {
52  if (suffix.size())
53  {
54  select->AddArray
55  (
56  (names[nameI] + suffix).c_str()
57  );
58  }
59  else
60  {
61  select->AddArray
62  (
63  (names[nameI]).c_str()
64  );
65  }
66  }
67 
68  return names.size();
69 }
70 
71 
72 template<class meshType>
73 void Foam::vtkPVFoam::addFieldsToSelection
74 (
75  vtkDataArraySelection *select,
76  const IOobjectList& objects,
77  const string& suffix
78 )
79 {
80  #define ADD_TO_SELECTION(Type, nullArg) \
81  addToSelection<GeometricField<Type, meshType>> \
82  ( \
83  select, \
84  objects, \
85  suffix \
86  );
88  #undef ADD_TO_SELECTION
89 }
90 
91 
92 template<class meshType>
93 void Foam::vtkPVFoam::addInternalFieldsToSelection
94 (
95  vtkDataArraySelection *select,
96  const IOobjectList& objects,
97  const string& suffix
98 )
99 {
100  #define ADD_TO_SELECTION(Type, nullArg) \
101  addToSelection<typename GeometricField<Type, meshType>::Internal> \
102  ( \
103  select, \
104  objects, \
105  suffix \
106  );
108  #undef ADD_TO_SELECTION
109 }
110 
111 
112 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
113 
114 #endif
115 
116 // ************************************************************************* //
#define forAll(list, i)
Loop across all elements in list.
Definition: UList.H:433
List of IOobjects with searching and retrieving facilities.
Definition: IOobjectList.H:53
wordList names() const
Return the list of names of the IOobjects.
Definition: IOobjectList.C:211
void size(const label)
Override size to be inconsistent with allocated storage.
Definition: ListI.H:164
A list that is sorted upon construction or when explicitly requested with the sort() method.
Definition: SortableList.H:55
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
FOR_ALL_FIELD_TYPES(makeFieldSourceTypedef)
objects
#define ADD_TO_SELECTION(Type, nullArg)