Represents an Element which is not a perfect axis-aligned square/cube. More...
#include <Deformed_element.hpp>
Public Member Functions | |
| Deformed_element (Storage_params, std::vector< int > pos={}, double mesh_size=1., int ref_level=0, Mat<> origin_arg=Mat<>::Zero(3), int aniso_ref_level=0) | |
| virtual bool | get_is_deformed () |
| for determining whether a pointer is deformed | |
| std::vector< double > | position (const Basis &, int i_qpoint) override |
| override that actually accounts for vertex positions and face warping | |
| virtual void | set_jacobian (const Basis &basis) |
| sets the Jacobian based on the current vertex locations and face node adjustments | |
| double * | reference_level_normals () override |
| whether this element is deformed | |
| double * | jacobian_determinant () override |
| Jacobian determinant of reference -> physical coordinate transform. | |
| double *& | face_normal (int i_face) |
| virtual double | jacobian (int i_dim, int j_dim, int i_qpoint) |
| Compute the Jacobian matrix. | |
| virtual double | jacobian_determinant (int i_qpoint) |
determinant of jacobian | |
| virtual double * | node_adjustments () |
| represents adjustments to face quadrature points to fit surfaces (details are complicated) | |
| bool | deformed () const override |
| where the extrapolated face data is stored | |
| double * | kernel_face_normal (int i_face) override |
| where the extrapolated face area-weighted normal vectors are stored | |
Public Member Functions inherited from hexed::Element | |
| Element (Storage_params, std::vector< int > pos={}, double mesh_size=1., int ref_level=0, Mat<> origin_arg=Mat<>::Zero(3), int aniso_ref_level=0) | |
| 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. | |
| Element & | operator= (const Element &)=delete |
| Storage_params | storage_params () |
| std::vector< double > | face_position (const Basis &, int i_face, int i_face_qpoint) |
obtains face position based on interior qpoint positions (as defined by position()) | |
| double | nominal_size () const override |
| nominal edge length of the element before any vertex motion | |
| int | refinement_level () |
| indicates how many times this element has been isotropically refined | |
| int | aniso_ref_level () |
| indicates how many times this element has been anisotropically refined | |
| std::vector< int > | nominal_position () |
| double * | stage (int i_stage) |
pointer to state data for i_stageth Runge-Kutta stage. | |
| 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 () |
| layout: [i_forcing][i_qpoint] | |
| int | mask () const override |
| returns whether the element is included in the masked mesh. | |
| Vertex & | vertex (int i_vertex) |
| template<int i_dim> | |
| double & | vertex_position (int i_vertex) |
| void | push_shareable_value (std::function< double(Element &, int i_vertex)>) |
| functions to communicate with nodal neighbors | |
| void | fetch_shareable_value (std::function< double &(Element &, int i_vertex)> access_fun, std::function< double(Mat<>)> reduction=Vertex::vector_max) |
| 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_needs_smooth (bool) |
sets the Vertex::Transferable_ptr::needs_smooth of the vertices | |
| void | set_face (int i_face, double *data) |
| bool | is_connected (int i_face) |
| 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 |
| bool | deformed () const override |
| where the extrapolated face data is stored | |
| double * | reference_level_normals () override |
| whether this element is deformed | |
| 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 & | uncert () override |
| place to store some uncertainty metric | |
Public Attributes | |
| bool | degenerate = 0 |
Public Attributes inherited from hexed::Element | |
| 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. | |
| Mutual_ptr< Element, Tree > | tree |
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 | |
| Lock | lock |
| for any tasks where multiple threads might access an element simultaneously | |
Public Attributes inherited from hexed::Kernel_element | |
| int | record = 0 |
| for algorithms to book-keep general information | |
Static Public Attributes | |
| static constexpr bool | is_deformed = true |
Static Public Attributes inherited from hexed::Element | |
| static constexpr bool | is_deformed = false |
is this Element subclass deformed? | |
Additional Inherited Members | |
Protected Member Functions inherited from hexed::Element | |
| Element (Storage_params, std::vector< int > pos, double mesh_size, int ref_level, Mat<> origin_arg, bool mobile_vertices, int aniso_r_level) | |
Protected Attributes inherited from hexed::Element | |
| Storage_params | params |
| int | n_dim |
| std::vector< int > | _nom_pos |
| double | _nom_sz |
| int | _r_level |
| int | _aniso_r_level |
| std::vector< Vertex::Transferable_ptr > | vertices |
Represents an Element which is not a perfect axis-aligned square/cube.
|
overridevirtual |
where the extrapolated face data is stored
Implements hexed::Kernel_element.
|
inlinevirtual |
for determining whether a pointer is deformed
Reimplemented from hexed::Element.
|
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 from hexed::Element.
|
overridevirtual |
Jacobian determinant of reference -> physical coordinate transform.
for Cartesian elements, returns nullptr
Implements hexed::Kernel_element.
|
virtual |
determinant of jacobian
Reimplemented from hexed::Element.
|
overridevirtual |
where the extrapolated face area-weighted normal vectors are stored
for Cartesian elements, returns nullptr
Implements hexed::Kernel_element.
|
virtual |
represents adjustments to face quadrature points to fit surfaces (details are complicated)
Layout: [i_dim][is_positive][i_face_qpoint]
Reimplemented from hexed::Element.
|
overridevirtual |
override that actually accounts for vertex positions and face warping
Reimplemented from hexed::Element.
|
overridevirtual |
whether this element is deformed
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.
|
virtual |
sets the Jacobian based on the current vertex locations and face node adjustments
Reimplemented from hexed::Element.