t8  UNKNOWN
t8code is a C library to manage a forest of adaptive space-trees of general element classes in parallel.
t8_geometry_zero.hxx
Go to the documentation of this file.
1 /*
2  This file is part of t8code.
3  t8code is a C library to manage a collection (a forest) of multiple
4  connected adaptive space-trees of general element classes in parallel.
5 
6  Copyright (C) 2015 the developers
7 
8  t8code is free software; you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation; either version 2 of the License, or
11  (at your option) any later version.
12 
13  t8code is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with t8code; if not, write to the Free Software Foundation, Inc.,
20  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 */
22 
29 #ifndef T8_GEOMETRY_ZERO_HXX
30 #define T8_GEOMETRY_ZERO_HXX
31 
32 #include <t8.h>
35 
37 {
38  public:
47 
52  virtual bool
54  {
55  return 0;
56  };
57 
61  virtual ~t8_geometry_zero ();
62 
67  inline t8_geometry_type_t
69  {
70  return T8_GEOMETRY_TYPE_ZERO;
71  };
72 
82  virtual void
83  t8_geom_evaluate (t8_cmesh_t cmesh, t8_gloidx_t gtreeid, const double *ref_coords, const size_t num_coords,
84  double *out_coords) const;
85 
96  virtual void
97  t8_geom_evaluate_jacobian (t8_cmesh_t cmesh, t8_gloidx_t gtreeid, const double *ref_coords, const size_t num_coords,
98  double *jacobian) const;
99 
109  virtual void
111  const double *points, const int num_points, int *is_inside,
112  const double tolerance)
113  {
114  const double zeros[3] = { 0 };
115  for (int i_point = 0; i_point < num_points; ++i_point) {
116  const int offset = i_point * T8_ECLASS_MAX_DIM;
117  is_inside[i_point] = t8_vertex_point_inside (zeros, points + offset, tolerance);
118  }
119  }
120 
128  virtual inline void
130 };
131 
132 #endif /* !T8_GEOMETRY_ZERO_HXX */
This structure holds the connectivity data of the coarse mesh.
Definition: t8_cmesh_types.h:88
This structure is private to the implementation.
Definition: t8_forest_types.h:69
Definition: t8_geometry_zero.hxx:37
virtual void t8_geom_evaluate(t8_cmesh_t cmesh, t8_gloidx_t gtreeid, const double *ref_coords, const size_t num_coords, double *out_coords) const
Maps points in the reference space .
Definition: t8_geometry_zero.cxx:34
virtual void t8_geom_load_tree_data(t8_cmesh_t cmesh, t8_gloidx_t gtreeid)
Update a possible internal data buffer for per tree data.
Definition: t8_geometry_zero.cxx:54
virtual void t8_geom_point_batch_inside_element(t8_forest_t forest, t8_locidx_t ltreeid, const t8_element_t *element, const double *points, const int num_points, int *is_inside, const double tolerance)
Definition: t8_geometry_zero.hxx:110
virtual void t8_geom_evaluate_jacobian(t8_cmesh_t cmesh, t8_gloidx_t gtreeid, const double *ref_coords, const size_t num_coords, double *jacobian) const
Compute the jacobian of the t8_geom_evaluate map at a point in the reference space .
Definition: t8_geometry_zero.cxx:46
virtual ~t8_geometry_zero()
The destructor.
Definition: t8_geometry_zero.cxx:29
t8_geometry_type_t t8_geom_get_type() const
Get the type of this geometry.
Definition: t8_geometry_zero.hxx:68
virtual bool t8_geom_tree_negative_volume() const
Check if the currently active tree has a negative volume.
Definition: t8_geometry_zero.hxx:53
t8_geometry_zero(int dimension)
Constructor of the zero geometry with a given dimension.
Definition: t8_geometry_zero.cxx:25
The base class for all geometries.
Definition: t8_geometry_base.hxx:48
int dimension
The dimension of reference space for which this is a geometry.
Definition: t8_geometry_base.hxx:180
This is the administrative header file for t8code.
int64_t t8_gloidx_t
A type for global indexing that holds really big numbers.
Definition: t8.h:100
int32_t t8_locidx_t
A type for processor-local indexing.
Definition: t8.h:89
#define T8_ECLASS_MAX_DIM
The maximal possible dimension for an eclass.
Definition: t8_eclass.h:77
struct t8_element t8_element_t
Opaque structure for a generic element, only used as pointer.
Definition: t8_element.h:42
@ T8_GEOMETRY_TYPE_ZERO
The zero geometry maps all points to zero.
Definition: t8_geometry.h:37
enum t8_geometry_type t8_geometry_type_t
This enumeration contains all possible geometries.
Implements the base pure virtual struct t8_geometry which provides a general template for all geometr...
Defines t8code internal functions that are useful for geometry implementations.
int t8_vertex_point_inside(const double vertex_coords[3], const double point[3], const double tolerance)
Check if a point lies inside a vertex.
Definition: t8_geometry_helpers.c:463