p4est 2.8.6
p4est is a software library for parallel adaptive mesh refinement.
|
Transform from tree-local "reference" coordinate system to global "physical space" coordinates. More...
#include <p8est_connectivity.h>
Go to the source code of this file.
Data Structures | |
struct | p8est_geometry |
This structure can be created by the user, p4est will never change its contents. More... | |
Typedefs | |
typedef struct p8est_geometry | p8est_geometry_t |
This object encapsulates a custom geometry transformation. | |
typedef void(* | p8est_geometry_X_t) (p8est_geometry_t *geom, p4est_topidx_t which_tree, const double abc[3], double xyz[3]) |
Forward transformation from the reference unit square to physical space. More... | |
typedef void(* | p8est_geometry_destroy_t) (p8est_geometry_t *geom) |
Destructor prototype for a user-allocated p8est_geometry_t. More... | |
Functions | |
void | p8est_geometry_destroy (p8est_geometry_t *geom) |
Can be used to conveniently destroy a geometry structure. More... | |
p8est_geometry_t * | p8est_geometry_new_connectivity (p8est_connectivity_t *conn) |
Create a geometry structure based on the vertices in a connectivity. More... | |
void | p8est_geometry_connectivity_X (p8est_geometry_t *geom, p4est_topidx_t which_tree, const double abc[3], double xyz[3]) |
Geometric coordinate transformation for geometry created with p8est_geometry_new_connectivity. More... | |
p8est_geometry_t * | p8est_geometry_new_shell (p8est_connectivity_t *conn, double R2, double R1) |
Create a geometry structure for the spherical shell of 24 trees. More... | |
p8est_geometry_t * | p8est_geometry_new_sphere (p8est_connectivity_t *conn, double R2, double R1, double R0) |
Create a geometry structure for the solid sphere of 13 trees. More... | |
p8est_geometry_t * | p8est_geometry_new_torus (p8est_connectivity_t *conn, double R0, double R1, double R2) |
Create a geometry structure for the torus. More... | |
Transform from tree-local "reference" coordinate system to global "physical space" coordinates.
These are used in p8est_vtk.h to write global coordinate meshes to disk.
We provide several example geometries for use. You may also implement your own geometry as you see fit.
typedef void(* p8est_geometry_destroy_t) (p8est_geometry_t *geom) |
Destructor prototype for a user-allocated p8est_geometry_t.
It is invoked by p8est_geometry_destroy. If the user chooses to reserve the structure statically, there is no need to provide it.
typedef void(* p8est_geometry_X_t) (p8est_geometry_t *geom, p4est_topidx_t which_tree, const double abc[3], double xyz[3]) |
Forward transformation from the reference unit square to physical space.
The physical space "xyz" is user-defined, currently used for VTK output.
void p8est_geometry_connectivity_X | ( | p8est_geometry_t * | geom, |
p4est_topidx_t | which_tree, | ||
const double | abc[3], | ||
double | xyz[3] | ||
) |
Geometric coordinate transformation for geometry created with p8est_geometry_new_connectivity.
This is defined by tri/binlinear interpolation from vertex coordinates.
May also be used as a building block in custom geometric coordinate transforms. See for example p8est_geometry_shell_X or p8est_geometry_sphere_X.
[in] | geom | associated geometry |
[in] | which_tree | tree id inside forest |
[in] | abc | tree-local reference coordinates : [0,1]^3. |
[out] | xyz | Cartesian coordinates in physical space after geometry |
void p8est_geometry_destroy | ( | p8est_geometry_t * | geom | ) |
Can be used to conveniently destroy a geometry structure.
The user is free not to call this function at all if they handle the memory of the p8est_geometry_t in their own way.
p8est_geometry_t * p8est_geometry_new_connectivity | ( | p8est_connectivity_t * | conn | ) |
Create a geometry structure based on the vertices in a connectivity.
The transformation is constructed using trilinear interpolation.
[in] | conn | A p8est_connectivity_t with valid vertices. We do NOT take ownership and expect this structure to stay alive. |
p8est_geometry_t * p8est_geometry_new_shell | ( | p8est_connectivity_t * | conn, |
double | R2, | ||
double | R1 | ||
) |
Create a geometry structure for the spherical shell of 24 trees.
[in] | conn | Result of p8est_connectivity_new_shell or equivalent. We do NOT take ownership and expect it to stay alive. |
[in] | R2 | The outer radius of the shell. |
[in] | R1 | The inner radius of the shell. |
p8est_geometry_t * p8est_geometry_new_sphere | ( | p8est_connectivity_t * | conn, |
double | R2, | ||
double | R1, | ||
double | R0 | ||
) |
Create a geometry structure for the solid sphere of 13 trees.
[in] | conn | Result of p8est_connectivity_new_sphere or equivalent. We do NOT take ownership and expect it to stay alive. |
[in] | R2 | The outer radius of the sphere. |
[in] | R1 | The outer radius of the inner shell. |
[in] | R0 | The inner radius of the inner shell. |
p8est_geometry_t * p8est_geometry_new_torus | ( | p8est_connectivity_t * | conn, |
double | R0, | ||
double | R1, | ||
double | R2 | ||
) |
Create a geometry structure for the torus.
This geometry maps a revolution torus, obtained using p8est_connectivity_new_torus
The torus is divided into into segments around the revolution axis, each segments is made of 5 trees; so here we provided the geometric transformation in a piecewise manner for each tree of the connectivity.
[in] | conn | Result of p8est_connectivity_new_torus or equivalent. We do NOT take ownership and expect it to stay alive. |
[in] | R0 | The inner radius of the 2d disk slice. |
[in] | R1 | The outer radius of the 2d disk slice. |
[in] | R2 | The outer radius of the torus. |