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 Total, S.A
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 
25 #include "mesh/mpiCommunications/SpatialPartition.hpp"
26 
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  virtual 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  virtual void freeResources() override;
100 
101 private:
102 
104  struct viewKeyStruct
105  {
106  constexpr static char const * regionAttributeString() { return "regionAttribute"; }
107  constexpr static char const * mainBlockNameString() { return "mainBlockName"; }
108  constexpr static char const * faceBlockNamesString() { return "faceBlocks"; }
109  constexpr static char const * nodesetNamesString() { return "nodesetNames"; }
110  constexpr static char const * partitionRefinementString() { return "partitionRefinement"; }
111  constexpr static char const * partitionMethodString() { return "partitionMethod"; }
112  constexpr static char const * useGlobalIdsString() { return "useGlobalIds"; }
113  };
115 
116  void importVolumicFieldOnArray( string const & cellBlockName,
117  string const & meshFieldName,
118  bool isMaterialField,
119  dataRepository::WrapperBase & wrapper ) const;
120 
121  void importSurfacicFieldOnArray( string const & faceBlockName,
122  string const & meshFieldName,
123  dataRepository::WrapperBase & wrapper ) const;
124 
129  // TODO can we use unique_ptr to hold mesh?
130  vtkSmartPointer< vtkDataSet > m_vtkMesh;
131 
133  string m_attributeName;
134 
136  string m_mainBlockName;
137 
139  array1d< string > m_faceBlockNames;
140 
142  std::map< string, vtkSmartPointer< vtkDataSet > > m_faceBlockMeshes;
143 
145  string_array m_nodesetNames;
146 
148  integer m_partitionRefinement = 0;
149 
151  integer m_useGlobalIds = 0;
152 
154  vtk::PartitionMethod m_partitionMethod = vtk::PartitionMethod::parmetis;
155 
157  vtk::CellMapType m_cellMap;
158 };
159 
160 } // namespace geos
161 
162 #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 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.
virtual void fillCellBlockManager(CellBlockManager &cellBlockManager, SpatialPartition &partition) override
Generate the mesh using the VTK library.
virtual void freeResources() override
Free internal resources associated with mesh/data import.
static string catalogName()
Return the name of the VTKMeshGenerator in object Catalog.
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