GEOS
VTKMeshGenerator.hpp
Go to the documentation of this file.
1 /*
2  * ------------------------------------------------------------------------------------------------------------
3  * SPDX-License-Identifier: LGPL-2.1-only
4  *
5  * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
6  * Copyright (c) 2018-2024 TotalEnergies
7  * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
8  * Copyright (c) 2023-2024 Chevron
9  * Copyright (c) 2019- GEOS/GEOSX Contributors
10  * All rights reserved
11  *
12  * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
13  * ------------------------------------------------------------------------------------------------------------
14  */
15 
20 #ifndef GEOS_MESH_GENERATORS_VTKMESHGENERATOR_HPP
21 #define GEOS_MESH_GENERATORS_VTKMESHGENERATOR_HPP
22 
26 #include "mesh/mpiCommunications/SpatialPartition.hpp"
27 #include <vtkDataSet.h>
28 
29 namespace geos
30 {
31 
37 {
38 public:
39 
45  VTKMeshGenerator( const string & name,
46  Group * const parent );
47 
52  static string catalogName() { return "VTKMesh"; }
53 
91  void fillCellBlockManager( CellBlockManager & cellBlockManager, SpatialPartition & partition ) override;
92 
94  string const & blockName,
95  string const & meshFieldName,
96  bool isMaterialField,
97  dataRepository::WrapperBase & wrapper ) const override;
98 
99  void freeResources() override;
100 
101 protected:
102  void postInputInitialization() override;
103 
104 private:
105 
107  struct viewKeyStruct
108  {
109  constexpr static char const * regionAttributeString() { return "regionAttribute"; }
110  constexpr static char const * mainBlockNameString() { return "mainBlockName"; }
111  constexpr static char const * faceBlockNamesString() { return "faceBlocks"; }
112  constexpr static char const * nodesetNamesString() { return "nodesetNames"; }
113  constexpr static char const * partitionRefinementString() { return "partitionRefinement"; }
114  constexpr static char const * partitionMethodString() { return "partitionMethod"; }
115  constexpr static char const * useGlobalIdsString() { return "useGlobalIds"; }
116  constexpr static char const * dataSourceString() { return "dataSourceName"; }
117  constexpr static char const * meshPathString() { return "meshPath"; }
118  };
119 
120  struct groupKeyStruct
121  {
122  constexpr static char const * regionString() { return "VTKRegion"; }
123  };
125 
126  void importVolumicFieldOnArray( string const & cellBlockName,
127  string const & meshFieldName,
128  bool isMaterialField,
129  dataRepository::WrapperBase & wrapper ) const;
130 
131  void importSurfacicFieldOnArray( string const & faceBlockName,
132  string const & meshFieldName,
133  dataRepository::WrapperBase & wrapper ) const;
134 
139  // TODO can we use unique_ptr to hold mesh?
140  vtkSmartPointer< vtkDataSet > m_vtkMesh;
141 
143  string m_attributeName;
144 
146  string m_mainBlockName;
147 
149  array1d< string > m_faceBlockNames;
150 
152  std::map< string, vtkSmartPointer< vtkDataSet > > m_faceBlockMeshes;
153 
155  string_array m_nodesetNames;
156 
158  integer m_partitionRefinement = 0;
159 
161  integer m_useGlobalIds = 0;
162 
164  vtk::PartitionMethod m_partitionMethod = vtk::PartitionMethod::parmetis;
165 
167  vtk::CellMapType m_cellMap;
168 
170  string m_dataSourceName;
171 
173  string m_meshPath;
174 
176  VTKHierarchicalDataSource * m_dataSource;
177 
178 };
179 
180 } // namespace geos
181 
182 #endif /* GEOS_MESH_GENERATORS_VTKMESHGENERATOR_HPP */
The CellBlockManager class provides an interface to ObjectManagerBase in order to manage CellBlock da...
Base class for external mesh generators (importers).
Block
Describe which kind of block must be considered.
The VTKMeshGenerator class provides a class implementation of VTK generated meshes.
VTKMeshGenerator(const string &name, Group *const parent)
Main constructor for MeshGenerator base class.
void fillCellBlockManager(CellBlockManager &cellBlockManager, SpatialPartition &partition) override
Generate the mesh using the VTK library.
void postInputInitialization() override
void importFieldOnArray(Block block, string const &blockName, string const &meshFieldName, bool isMaterialField, dataRepository::WrapperBase &wrapper) const override
import field from the mesh on the array accessible via the given wrapper.
static string catalogName()
Return the name of the VTKMeshGenerator in object Catalog.
void freeResources() override
Free internal resources associated with mesh/data import.
Base class for all wrappers containing common operations.
Definition: WrapperBase.hpp:56
array1d< string > string_array
A 1-dimensional array of geos::string types.
Definition: DataTypes.hpp:392
std::int32_t integer
Signed integer type.
Definition: DataTypes.hpp:82
Structure to hold scoped key names.
Definition: Group.hpp:1442