This class acts as a wrapper around libMesh::Elem for the purpose of providing a uniform interface for cases where:
Definition at line 59 of file geom_elem.h.
#include <geom_elem.h>
Public Member Functions | |
GeomElem () | |
virtual | ~GeomElem () |
unsigned int | dim () const |
const RealVectorX & | domain_surface_normal () const |
virtual void | external_side_loads_for_quadrature_elem (std::multimap< libMesh::boundary_id_type, MAST::BoundaryConditionBase *> &bc, std::map< unsigned int, std::vector< MAST::BoundaryConditionBase *>> &loads) const |
From the given list of boundary loads, this identifies the sides of the quadrature element and the loads in bc that are to be applied on it. More... | |
virtual void | get_boundary_ids_on_quadrature_elem_side (unsigned int s, std::vector< libMesh::boundary_id_type > &bc_ids) const |
libMesh::FEType | get_fe_type (unsigned int i) const |
virtual const libMesh::Elem & | get_quadrature_elem () const |
virtual const libMesh::Elem & | get_quadrature_local_elem () const |
virtual const libMesh::Elem & | get_reference_elem () const |
virtual const libMesh::Elem & | get_reference_local_elem () const |
virtual void | init (const libMesh::Elem &elem, const MAST::SystemInitialization &sys_init) |
initialize the object for the specified reference elem . More... | |
virtual std::unique_ptr< MAST::FEBase > | init_fe (bool init_grads, bool init_second_order_derivative, int extra_quadrature_order=0) const |
initializes the finite element shape function and quadrature object with the order of quadrature rule changed based on the extra_quadrature_order . More... | |
virtual std::unique_ptr< MAST::FEBase > | init_side_fe (unsigned int s, bool init_grads, bool init_second_order_derivative, int extra_quadrature_order=0) const |
initializes the finite element shape function and quadrature object for the side with the order of quadrature rule changed based on the extra_quadrature_order More... | |
unsigned int | n_sides_quadrature_elem () const |
number of sides on quadrature element. More... | |
void | set_bending (bool onoff) |
This sets the 1D elements to extension/torsional stiffness only. More... | |
void | set_local_y_vector (const RealVectorX &y_vec) |
for 1D elements the transformed coordinate system attached to the element defines the local x-axis along the length of the element. More... | |
const RealMatrixX & | T_matrix () const |
O. More... | |
void | transform_point_to_global_coordinate (const libMesh::Point &local_pt, libMesh::Point &global_pt) const |
void | transform_vector_to_global_coordinate (const libMesh::Point &local_vec, libMesh::Point &global_vec) const |
void | transform_vector_to_global_coordinate (const RealVectorX &local_vec, RealVectorX &global_vec) const |
void | transform_vector_to_local_coordinate (const libMesh::Point &global_vec, libMesh::Point &local_vec) const |
void | transform_vector_to_local_coordinate (const RealVectorX &global_vec, RealVectorX &local_vec) const |
bool | use_local_elem () const |
Vector and matrix quantities defined on one- and two-dimensional elements that are oriented in two or three-dimensional spaces may need to be transformed to/from element coordinate system. More... | |
Protected Member Functions | |
void | _init_local_elem () |
initializes the local element More... | |
void | _init_local_elem_1d () |
initializes the local element More... | |
void | _init_local_elem_2d () |
initializes the local element More... | |
Protected Attributes | |
bool | _bending = true |
Defines if bending is used in this element or not. More... | |
RealVectorX | _domain_surface_normal |
surface normal of the 1D/2D element. More... | |
libMesh::Elem * | _local_elem |
a local element is created if More... | |
std::vector< libMesh::Node * > | _local_nodes |
nodes for local element More... | |
RealVectorX | _local_y |
the y-axis that is used to define the coordinate system for a 1-D element. More... | |
const libMesh::Elem * | _ref_elem |
reference element in the mesh for which the data structure is initialized More... | |
const MAST::SystemInitialization * | _sys_init |
system initialization object for this element More... | |
RealMatrixX | _T_mat |
Transformation matrix defines T_ij = V_i^t . More... | |
bool | _use_local_elem |
MAST::GeomElem::GeomElem | ( | ) |
Definition at line 32 of file geom_elem.cpp.
|
virtual |
Definition at line 41 of file geom_elem.cpp.
|
protected |
initializes the local element
Definition at line 331 of file geom_elem.cpp.
|
protected |
initializes the local element
Definition at line 388 of file geom_elem.cpp.
|
protected |
initializes the local element
Definition at line 461 of file geom_elem.cpp.
unsigned int MAST::GeomElem::dim | ( | ) | const |
Definition at line 91 of file geom_elem.cpp.
const RealVectorX & MAST::GeomElem::domain_surface_normal | ( | ) | const |
Definition at line 227 of file geom_elem.cpp.
|
virtual |
From the given list of boundary loads, this identifies the sides of the quadrature element and the loads in bc
that are to be applied on it.
The map of side and loads is returned in loads
.
Definition at line 183 of file geom_elem.cpp.
|
virtual |
Definition at line 217 of file geom_elem.cpp.
libMesh::FEType MAST::GeomElem::get_fe_type | ( | unsigned int | i | ) | const |
Definition at line 110 of file geom_elem.cpp.
|
virtual |
Reimplemented in MAST::LevelSetIntersectedElem.
Definition at line 72 of file geom_elem.cpp.
|
virtual |
Reimplemented in MAST::LevelSetIntersectedElem.
Definition at line 81 of file geom_elem.cpp.
|
virtual |
Definition at line 54 of file geom_elem.cpp.
|
virtual |
Definition at line 63 of file geom_elem.cpp.
|
virtual |
initialize the object for the specified reference elem
.
Reimplemented in MAST::LevelSetIntersectedElem.
Definition at line 134 of file geom_elem.cpp.
|
virtual |
initializes the finite element shape function and quadrature object with the order of quadrature rule changed based on the extra_quadrature_order
.
Reimplemented in MAST::LevelSetIntersectedElem.
Definition at line 148 of file geom_elem.cpp.
|
virtual |
initializes the finite element shape function and quadrature object for the side with the order of quadrature rule changed based on the extra_quadrature_order
Reimplemented in MAST::LevelSetIntersectedElem.
Definition at line 165 of file geom_elem.cpp.
unsigned int MAST::GeomElem::n_sides_quadrature_elem | ( | ) | const |
number of sides on quadrature element.
Definition at line 101 of file geom_elem.cpp.
void MAST::GeomElem::set_bending | ( | bool | onoff | ) |
This sets the 1D elements to extension/torsional stiffness only.
This is useful when modeling truss structures (e.g. using CROD elements in Nastran) which do not require an orientation vector like beam elements do. By default, 1D elements include bending.
Definition at line 128 of file geom_elem.cpp.
void MAST::GeomElem::set_local_y_vector | ( | const RealVectorX & | y_vec | ) |
for 1D elements the transformed coordinate system attached to the element defines the local x-axis along the length of the element.
The local-y axis should be specified using this method. This then provides the complete information about setting up the local three-dimensional coordinate system.
Definition at line 119 of file geom_elem.cpp.
const RealMatrixX & MAST::GeomElem::T_matrix | ( | ) | const |
O.
Definition at line 236 of file geom_elem.cpp.
void MAST::GeomElem::transform_point_to_global_coordinate | ( | const libMesh::Point & | local_pt, |
libMesh::Point & | global_pt | ||
) | const |
Definition at line 246 of file geom_elem.cpp.
void MAST::GeomElem::transform_vector_to_global_coordinate | ( | const libMesh::Point & | local_vec, |
libMesh::Point & | global_vec | ||
) | const |
Definition at line 266 of file geom_elem.cpp.
void MAST::GeomElem::transform_vector_to_global_coordinate | ( | const RealVectorX & | local_vec, |
RealVectorX & | global_vec | ||
) | const |
Definition at line 300 of file geom_elem.cpp.
void MAST::GeomElem::transform_vector_to_local_coordinate | ( | const libMesh::Point & | global_vec, |
libMesh::Point & | local_vec | ||
) | const |
Definition at line 283 of file geom_elem.cpp.
void MAST::GeomElem::transform_vector_to_local_coordinate | ( | const RealVectorX & | global_vec, |
RealVectorX & | local_vec | ||
) | const |
Definition at line 311 of file geom_elem.cpp.
bool MAST::GeomElem::use_local_elem | ( | ) | const |
Vector and matrix quantities defined on one- and two-dimensional elements that are oriented in two or three-dimensional spaces may need to be transformed to/from element coordinate system.
This is required for one-dimensional elements that are not along the x-axis or two-dimensional elements that are not in the x-y plane.
true
if transformation is required, false
otherwise. Definition at line 322 of file geom_elem.cpp.
|
protected |
Defines if bending is used in this element or not.
True by default Added for github issue #40
Definition at line 275 of file geom_elem.h.
|
protected |
surface normal of the 1D/2D element.
Definition at line 255 of file geom_elem.h.
|
protected |
a local element is created if
Definition at line 244 of file geom_elem.h.
|
protected |
nodes for local element
Definition at line 260 of file geom_elem.h.
|
protected |
the y-axis that is used to define the coordinate system for a 1-D element.
This must be provided a local element is required.
Definition at line 250 of file geom_elem.h.
|
protected |
reference element in the mesh for which the data structure is initialized
Definition at line 239 of file geom_elem.h.
|
protected |
system initialization object for this element
Definition at line 231 of file geom_elem.h.
|
protected |
Transformation matrix defines T_ij = V_i^t .
Vn_j, where V_i are the unit vectors of the global cs, and Vn_j are the unit vectors of the local cs. To transform a vector from global to local cs, an_j = T^t a_i, and the reverse transformation is obtained as a_j = T an_i
Definition at line 269 of file geom_elem.h.
|
protected |
Definition at line 233 of file geom_elem.h.