hexed 0.4.0
 
Loading...
Searching...
No Matches
hexed::Element Class Reference

Stores data associated with one mesh element. More...

#include <Element.hpp>

Inheritance diagram for hexed::Element:
hexed::Kernel_element hexed::Mortal hexed::mutual::Multiple< void, void > hexed::mutual::Base< void, void > hexed::Deformed_element

Public Member Functions

 Element (Storage_params, Tree &tree, int aniso_ref_level=0)
 
 Element (const Element &)=delete
 
Elementoperator= (const Element &)=delete
 
virtual bool get_is_deformed ()
 for determining whether a pointer is deformed
 
bool is_extruded ()
 
Storage_params storage_params () const
 
Array< double > position (const Basis &) const
 
Array< double > face_position (const Basis &) const
 
virtual void set_jacobian (const Basis &basis)
 
double nominal_size () const
 
double nominal_shape (int i_dim) const override
 nominal edge length of the element along the i_dimth dimension before any vertex motion
 
double nominal_volume () const
 
int refinement_level ()
 
int aniso_ref_level ()
 
int & desired_refinement (int i_dim)
 
int desired_refinement (int i_dim) const
 
Array< int > refinement_floor ()
 
Array< Intnominal_position ()
 
double wall_distance () const
 The distance from the farthest vertex to the wall.
 
int wall_dimension ()
 
int boundary_face ()
 
bool has_wall ()
 
bool is_sharp (int i_dim)
 
double * stage (int i_stage)
 Pointer to state data for i_stageth time integration stage.
 
Array< double > flow_state ()
 layout: [i_var][i_qpoint]
 
Array< double > numeric_state ()
 layout: [i_var][i_qpoint]
 
double * advection_state ()
 
double * time_step_scale () override
 pointer to scaling factor for local time step.
 
double * bulk_av_coef ()
 layout: [i_qpoint]
 
double * laplacian_av_coef ()
 layout: [i_qpoint]
 
double * art_visc_forcing ()
 
int mask () const override
 returns whether the element is included in the masked mesh.
 
Array< double > spectral_uncert ()
 layout: [i_dim]
 
virtual double jacobian (int i_dim, int j_dim, int i_qpoint) const
 Compute the Jacobian matrix.
 
virtual double jacobian_determinant (int i_qpoint) const
 determinant of jacobian
 
Array< double > mean_shape (const Basis &) const
 Effective element dimensions accounting for deformation.
 
double & vertex_time_step_scale (int i_vertex) override
 Time step scale at the vertices. TSS in the interior is set by interpolating this.
 
double & vertex_elwise_av (int i_vertex)
 
double & vertex_fix_admis_coef (int i_vertex)
 
void set_face (int i_face, double *data)
 
bool is_connected (int i_face)
 
Faceface (int i_face)
 
void create_shape (next::Mesh_blocks &, int boundary_face=next::Mesh_blocks::no_face)
 
void create_fake (next::Mesh_blocks &)
 
bool shared_fake () const
 
void split_shape (Element &split_from, double at, int from_face)
 
void glue_shape (std::shared_ptr< next::Element_shape >, std::array< std::vector< double >, 2 > corners)
 
void glue_shape (Element &glue_to, std::array< std::vector< double >, 2 > corners)
 
void destroy_shape ()
 
void destroy_fake ()
 
next::Element_shapeshape ()
 
const next::Element_shapeshape () const
 
next::Element_shapefake_shape ()
 
bool has_shape () const
 
next::Element_shapeactive_shape ()
 
void remember_pos ()
 
double * state () override
 pointer to the data where the state variables are stored
 
double * residual_cache () override
 
double * face (int i_face, bool is_ldg) override
 where the extrapolated face data is stored
 
bool deformed () const override
 whether this element is deformed
 
double * reference_level_normals () override
 
double * jacobian_determinant () override
 Jacobian determinant of reference -> physical coordinate transform.
 
double * kernel_face_normal (int i_face) override
 where the extrapolated face area-weighted normal vectors are stored
 
double * debug_variables () override
 Pointer to any debug variables that can be populated by the kernels to visualize arbitrary quantities.
 
double & uncert () override
 place to store some uncertainty metric
 
- Public Member Functions inherited from hexed::mutual::Multiple< void, void >
 Multiple (const Multiple &)=delete
 
 Multiple (Multiple &&that)
 steals all of that's partners, leaving that unconnected
 
Multipleoperator= (const Multiple &)=delete
 
Multipleoperator= (Multiple &&that)
 steals all of that's partners, leaving that unconnected
 
next::Sequence< Base< void, void > & > partners ()
 provides access to the list of partners
 
next::Sequence< const Base< void, void > & > partners () const
 provides access to the list of partners
 
- Public Member Functions inherited from hexed::mutual::Base< void, void >
virtual void * _mine ()
 
virtual const void * _mine () const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 

Public Attributes

std::array< int, 6 > face_record
 for algorithms to book-keep information related to faces
 
double uncertainty = 0
 Pointer to state data at faces. Must be populated by user.
 
Reciprocal_ptr< Element, Treetree
 Tree this element was created from
 
bool unrefinement_locked = false
 if this is set to true, Mesh_interface::update() won't unrefine it
 
bool snapping_problem = false
 if true, this element has a face on the surface which was not properly snapped
 
bool needs_snapping = true
 once any faces of this element have been snapped to the surface, set this to false
 
const Mat origin
 origin which integer coordinates are relative to
 
double residual
 
double flux_uncert
 
Lock lock
 for any tasks where multiple threads might access an element simultaneously
 
bool has_shock
 
bool spread_shock
 
- Public Attributes inherited from hexed::Kernel_element
int record = 0
 for algorithms to book-keep general information
 
double ts_ratio_diffusion = 0
 
double ts_ratio_decay = 0
 

Static Public Attributes

static constexpr bool is_deformed = false
 is this Element subclass deformed?
 

Protected Member Functions

 Element (Storage_params, Tree &, bool mobile_vertices, int aniso_r_level, bool is_def)
 
Mat< 3 > _compute_pos () const
 
- Protected Member Functions inherited from hexed::mutual::Base< void, void >
void _connect (Base< void, void > &that)
 may be overridden by derived classes to provide partners to data of some arbitrary type T
 
void _disconnect (Base< void, void > &that)
 mutually disconnects this and that by calling both of their _unset() member functions
 

Protected Attributes

Storage_params params
 
int n_dim
 
int _aniso_r_level
 
std::unique_ptr< next::Element_shape_shape
 
- Protected Attributes inherited from hexed::mutual::Base< void, void >
Lock _lock
 

Additional Inherited Members

- Static Protected Member Functions inherited from hexed::mutual::Base< void, void >
static void * _yours (Base< void, void > &that)
 Accesses the _mine() of that
 
static const void * _yours (const Base< void, void > &that)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 

Detailed Description

Stores data associated with one mesh element.

Container only—does not have implementations of or information about the basis and algorithms. This class represents a Cartesian (i.e., regular) element. See also derived class Deformed_element.

Constructor & Destructor Documentation

◆ Element()

hexed::Element::Element ( const Element & )
delete

Can't copy an Element. Doing so would have to either duplicate or break vertex connections, both of which seem error prone.

Member Function Documentation

◆ advection_state()

double * hexed::Element::advection_state ( )

layout: [i_node][i_qpoint]

Note
0 <= i_node < row_size

◆ art_visc_forcing()

double * hexed::Element::art_visc_forcing ( )

layout: [i_forcing][i_qpoint]

◆ debug_variables()

double * hexed::Element::debug_variables ( )
overridevirtual

Pointer to any debug variables that can be populated by the kernels to visualize arbitrary quantities.

This will be a valid pointer iff config::debug_variables > 0.

Implements hexed::Kernel_element.

◆ deformed()

bool hexed::Element::deformed ( ) const
overridevirtual

whether this element is deformed

Implements hexed::Kernel_element.

◆ face()

double * hexed::Element::face ( int i_face,
bool is_ldg )
overridevirtual

where the extrapolated face data is stored

Implements hexed::Kernel_element.

◆ get_is_deformed()

virtual bool hexed::Element::get_is_deformed ( )
inlinevirtual

for determining whether a pointer is deformed

Reimplemented in hexed::Deformed_element.

◆ jacobian()

double hexed::Element::jacobian ( int i_dim,
int j_dim,
int i_qpoint ) const
virtual

Compute the Jacobian matrix.

I.e., derivative of i_dimth physical coordinate wrt j_dimth reference coordinate. Trivial for this class, may be non-trivial for derived (see Deformed_element). For convenience, not performance. For high-performance, use double* Deformed_element::jacobian()

Reimplemented in hexed::Deformed_element.

◆ jacobian_determinant() [1/2]

double * hexed::Element::jacobian_determinant ( )
overridevirtual

Jacobian determinant of reference -> physical coordinate transform.

for Cartesian elements, returns nullptr

Implements hexed::Kernel_element.

◆ jacobian_determinant() [2/2]

virtual double hexed::Element::jacobian_determinant ( int i_qpoint) const
inlinevirtual

determinant of jacobian

Reimplemented in hexed::Deformed_element.

◆ kernel_face_normal()

double * hexed::Element::kernel_face_normal ( int i_face)
overridevirtual

where the extrapolated face area-weighted normal vectors are stored

for Cartesian elements, returns nullptr

Implements hexed::Kernel_element.

◆ mask()

int hexed::Element::mask ( ) const
inlineoverridevirtual

returns whether the element is included in the masked mesh.

value can be set with Accessible_mesh::set_mask

Implements hexed::Kernel_element.

◆ mean_shape()

Array< double > hexed::Element::mean_shape ( const Basis & basis) const

Effective element dimensions accounting for deformation.

layout: [i_dim] mean_shape[i_dim] is the mean over the element of the norm of the i_dimth column of the Jacobian matrix.

◆ nominal_shape()

double hexed::Element::nominal_shape ( int i_dim) const
overridevirtual

nominal edge length of the element along the i_dimth dimension before any vertex motion

Implements hexed::Kernel_element.

◆ reference_level_normals()

double * hexed::Element::reference_level_normals ( )
overridevirtual

the j_dimth component (in physical space) of the normal vector of the level surface of the i_dimth reference coordinate which passes through the i_qpointth quadrature point. the magnitude of the normal vector is weighted by the surface area in physical space. equivalent definition (note i_dim, j_dim transposed):

\[ J^{-1}_{j_{dim}, i_{dim}} |J| \]

where is jacobian of transformation from reference to physical coordinates at i_qpointth quadrature point. For Cartesian elements, returns nullptr.

layout: [i_dim][j_dim][i_qpoint]

Implements hexed::Kernel_element.

◆ residual_cache()

double * hexed::Element::residual_cache ( )
overridevirtual

Implements hexed::Kernel_element.

◆ set_jacobian()

void hexed::Element::set_jacobian ( const Basis & basis)
virtual

Reimplemented in hexed::Deformed_element.

◆ stage()

double * hexed::Element::stage ( int i_stage)

Pointer to state data for i_stageth time integration stage.

layout: [i_var][i_qpoint]

◆ state()

double * hexed::Element::state ( )
overridevirtual

pointer to the data where the state variables are stored

includes any non-conservation variables such as artificial viscosity coefficient

Implements hexed::Kernel_element.

◆ time_step_scale()

double * hexed::Element::time_step_scale ( )
overridevirtual

pointer to scaling factor for local time step.

layout: [i_qpoint]

Implements hexed::Kernel_element.

◆ uncert()

double & hexed::Element::uncert ( )
overridevirtual

place to store some uncertainty metric

Implements hexed::Kernel_element.

◆ vertex_time_step_scale()

double & hexed::Element::vertex_time_step_scale ( int i_vertex)
overridevirtual

Time step scale at the vertices. TSS in the interior is set by interpolating this.

Implements hexed::Kernel_element.

Member Data Documentation

◆ uncertainty

double hexed::Element::uncertainty = 0

Pointer to state data at faces. Must be populated by user.

refinement algorithms should set this value to some uncertainty metric


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