t8  UNKNOWN
t8code is a C library to manage a forest of adaptive space-trees of general element classes in parallel.
Public Member Functions
t8_geometry_analytic Struct Reference
Inheritance diagram for t8_geometry_analytic:
t8_geometry

Public Member Functions

 t8_geometry_analytic (int dim, std::string name, t8_geom_analytic_fn analytical, t8_geom_analytic_jacobian_fn jacobian, t8_geom_load_tree_data_fn load_tree_data, t8_geom_tree_negative_volume_fn tree_negative_volume_in, const void *user_data)
 Constructor of the analytic geometry with a given dimension. More...
 
 t8_geometry_analytic (int dim, std::string name)
 Constructor of the analytic geometry for testing purposes. More...
 
virtual ~t8_geometry_analytic ()
 The destructor.
 
t8_geometry_type_t t8_geom_get_type () const
 Get the type of this geometry. More...
 
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 \( [0,1]^\mathrm{dim} \to \mathbb{R}^3 \). More...
 
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 \( [0,1]^\mathrm{dim} \). More...
 
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)
 
virtual bool t8_geom_tree_negative_volume () const
 Check if the currently active tree has a negative volume. More...
 
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. More...
 
const void * t8_geom_analytic_get_user_data ()
 
- Public Member Functions inherited from t8_geometry
 t8_geometry (int dim, std::string name)
 
virtual ~t8_geometry ()
 The destructor. More...
 
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) const
 Query whether a batch of points lies inside an element. More...
 
int t8_geom_get_dimension () const
 Get the dimension of this geometry. More...
 
const std::string t8_geom_get_name () const
 Get the name of this geometry. More...
 
const size_t t8_geom_get_hash () const
 

Additional Inherited Members

- Protected Attributes inherited from t8_geometry
int dimension
 The dimension of reference space for which this is a geometry.
 
std::string name
 The name of this geometry.
 
size_t hash
 The hash of the name of this geometry.
 

Constructor & Destructor Documentation

◆ t8_geometry_analytic() [1/2]

t8_geometry_analytic::t8_geometry_analytic ( int  dim,
std::string  name,
t8_geom_analytic_fn  analytical,
t8_geom_analytic_jacobian_fn  jacobian,
t8_geom_load_tree_data_fn  load_tree_data,
t8_geom_tree_negative_volume_fn  tree_negative_volume_in,
const void *  user_data 
)

Constructor of the analytic geometry with a given dimension.

The geometry is viable with all tree types and uses a user-provided analytic and jacobian function. The actual mappings are done by these functions.

Parameters
[in]dimThe dimension of this geometry.
[in]nameThe name to give this geometry.
[in]analyticalThe analytical function to use for this geometry.
[in]jacobianThe jacobian of analytical.
[in]load_tree_dataThe function that is used to load a tree's data.

◆ t8_geometry_analytic() [2/2]

t8_geometry_analytic::t8_geometry_analytic ( int  dim,
std::string  name 
)

Constructor of the analytic geometry for testing purposes.

Parameters
[in]dimThe dimension of this geometry.
[in]nameThe name to give this geometry.

Member Function Documentation

◆ t8_geom_evaluate()

void t8_geometry_analytic::t8_geom_evaluate ( t8_cmesh_t  cmesh,
t8_gloidx_t  gtreeid,
const double *  ref_coords,
const size_t  num_coords,
double *  out_coords 
) const
virtual

Maps points in the reference space \( [0,1]^\mathrm{dim} \to \mathbb{R}^3 \).

Parameters
[in]cmeshThe cmesh in which the point lies.
[in]gtreeidThe global tree (of the cmesh) in which the reference point is.
[in]ref_coordsArray of dimension x num_coords many entries, specifying points in \( [0,1]^\mathrm{dim} \).
[in]num_coordsAmount of points of /f$ \mathrm{dim} /f$ to map.
[out]out_coordsThe mapped coordinates in physical space of ref_coords. The length is num_coords * 3.

Implements t8_geometry.

◆ t8_geom_evaluate_jacobian()

void t8_geometry_analytic::t8_geom_evaluate_jacobian ( t8_cmesh_t  cmesh,
t8_gloidx_t  gtreeid,
const double *  ref_coords,
const size_t  num_coords,
double *  jacobian 
) const
virtual

Compute the jacobian of the t8_geom_evaluate map at a point in the reference space \( [0,1]^\mathrm{dim} \).

Parameters
[in]cmeshThe cmesh in which the point lies.
[in]gtreeidThe global tree (of the cmesh) in which the reference point is.
[in]ref_coordsArray of dimension x num_coords many entries, specifying points in \( [0,1]^\mathrm{dim} \).
[in]num_coordsAmount of points of /f$ \mathrm{dim} /f$ to map.
[out]jacobianThe jacobian at ref_coords. Array of size \( \mathrm{dim} \cdot 3 \) x num_coords. Indices \( 3 \cdot i\) , \( 3 \cdot i+1 \) , \( 3 \cdot i+2 \) correspond to the \( i \)-th column of the jacobian (Entry \( 3 \cdot i + j \) is \( \frac{\partial f_j}{\partial x_i} \)).
Note
The jacobian will be (1) (1 0) (1 0 0) dim 1: J = (0) dim 2: J = (0 1) dim 3: J = (0 1 0) (0) (0 0) (0 0 1)

Implements t8_geometry.

◆ t8_geom_get_type()

t8_geometry_type_t t8_geometry_analytic::t8_geom_get_type ( ) const
inlinevirtual

Get the type of this geometry.

Returns
The type.

Implements t8_geometry.

◆ t8_geom_load_tree_data()

void t8_geometry_analytic::t8_geom_load_tree_data ( t8_cmesh_t  cmesh,
t8_gloidx_t  gtreeid 
)
virtual

Update a possible internal data buffer for per tree data.

This function is called before the first coordinates in a new tree are evaluated. You can use it for example to load the vertex coordinates of the tree into an internal buffer (as is done in the linear geometry).

Parameters
[in]cmeshThe cmesh.
[in]gtreeidThe global tree.

Implements t8_geometry.

◆ t8_geom_point_batch_inside_element()

virtual void t8_geometry_analytic::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 
)
inlinevirtual
Parameters
[in]forestThe forest of the element.
[in]ltreeidThe local tree id of the element's tree
[in]elementThe element
[in]pointspoints to check
[in]num_pointsNumber of points to check
[in,out]is_insideArray to fill with flags whether the point is inside or not
[in]toleranceTolerance of the inside-check

◆ t8_geom_tree_negative_volume()

bool t8_geometry_analytic::t8_geom_tree_negative_volume ( ) const
virtual

Check if the currently active tree has a negative volume.

Returns
True (non-zero) if the currently loaded tree has a negative volume. 0 otherwise.

Reimplemented from t8_geometry.


The documentation for this struct was generated from the following files: