Rheolef  7.2
an efficient C++ finite element environment
vtk_cell_type.cc
Go to the documentation of this file.
1 //
22 // helper for vtk file io
23 //
24 // author: Pierre.Saramito@imag.fr
25 //
26 // 29 january 2020
27 //
28 #include "rheolef/reference_element.h"
29 
30 #include "vtk_cell_type.h"
31 
32 namespace rheolef {
33 
34 size_t vtk_cell_type2variant (size_t vtk_cell_type)
35 {
36  switch (vtk_cell_type) {
37  case VTK_VERTEX:
38  return reference_element::p;
39  case VTK_LINE:
40  case VTK_QUADRATIC_EDGE:
41  case VTK_CUBIC_LINE:
42  case VTK_LAGRANGE_CURVE:
43  return reference_element::e;
44  case VTK_TRIANGLE:
47  return reference_element::t;
48  case VTK_QUAD:
51  return reference_element::t;
52  case VTK_TETRA:
53  case VTK_QUADRATIC_TETRA:
55  return reference_element::T;
56  case VTK_WEDGE:
58  case VTK_LAGRANGE_WEDGE:
59  return reference_element::P;
60  case VTK_HEXAHEDRON:
63  return reference_element::H;
64  case VTK_QUADRATIC_QUAD: // incomplete order 2 variants
65  case VTK_QUADRATIC_WEDGE:
67  default:
68  error_macro ("unsupported vtk cell type = "<<vtk_cell_type);
69  }
70 }
71 size_t nv2vtk_cell_type (size_t map_dim, size_t nv)
72 {
73  switch (map_dim) {
74  case 0: {
75  return VTK_VERTEX;
76  }
77  case 1: {
78  check_macro(nv == 2, "unexpected 1D vtk cell with "<<nv<<" vertices");
79  return VTK_LINE;
80  }
81  case 2: {
82  check_macro(nv == 3, "unexpected 2D vtk cell with "<<nv<<" vertices");
83  return VTK_TRIANGLE;
84  }
85  default: {
86  error_macro("unexpected "<<map_dim<<"D vtk cell");
87  return 0;
88  }
89  }
90 }
91 
92 }// namespace rheolef
static const variant_type H
static const variant_type e
static const variant_type p
static const variant_type T
static const variant_type P
static const variant_type t
#define error_macro(message)
Definition: dis_macros.h:49
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
This file is part of Rheolef.
size_t vtk_cell_type2variant(size_t vtk_cell_type)
size_t nv2vtk_cell_type(size_t map_dim, size_t nv)
#define VTK_BIQUADRATIC_QUADRATIC_WEDGE
Definition: vtk_cell_type.h:63
#define VTK_HEXAHEDRON
Definition: vtk_cell_type.h:46
#define VTK_CUBIC_LINE
Definition: vtk_cell_type.h:68
#define VTK_LAGRANGE_QUADRILATERAL
Definition: vtk_cell_type.h:77
#define VTK_LINE
Definition: vtk_cell_type.h:37
#define VTK_QUADRATIC_EDGE
Definition: vtk_cell_type.h:51
#define VTK_LAGRANGE_TETRAHEDRON
Definition: vtk_cell_type.h:78
#define VTK_QUADRATIC_QUAD
Definition: vtk_cell_type.h:53
#define VTK_QUADRATIC_HEXAHEDRON
Definition: vtk_cell_type.h:56
#define VTK_QUADRATIC_TRIANGLE
Definition: vtk_cell_type.h:52
#define VTK_LAGRANGE_WEDGE
Definition: vtk_cell_type.h:80
#define VTK_QUAD
Definition: vtk_cell_type.h:43
#define VTK_QUADRATIC_WEDGE
Definition: vtk_cell_type.h:57
#define VTK_VERTEX
Definition: vtk_cell_type.h:35
#define VTK_TRIANGLE
Definition: vtk_cell_type.h:39
#define VTK_LAGRANGE_CURVE
Definition: vtk_cell_type.h:75
#define VTK_QUADRATIC_TETRA
Definition: vtk_cell_type.h:55
#define VTK_WEDGE
Definition: vtk_cell_type.h:47
#define VTK_LAGRANGE_TRIANGLE
Definition: vtk_cell_type.h:76
#define VTK_LAGRANGE_HEXAHEDRON
Definition: vtk_cell_type.h:79
#define VTK_TRIQUADRATIC_HEXAHEDRON
Definition: vtk_cell_type.h:60
#define VTK_TETRA
Definition: vtk_cell_type.h:44
#define VTK_BIQUADRATIC_QUAD
Definition: vtk_cell_type.h:59