#include "b2fortran_element_property.H"
Public Member Functions | |
void | init (BranchProperty *branch_property_, MaterialProperty *material_, int integration_order_[3], const std::vector< b2000::csda< double > > &tl_, const std::vector< b2000::csda< double > > &ecc_, int bmtype_, std::bitset< 6 > endreleases_[2], const std::vector< b2000::csda< double > > &mbase_) |
Called by the Domain object. | |
const int * | get_integration_order () const override |
Domain & | get_domain () |
void | laminate (b2linalg::Vector< double, b2linalg::Vdense_constref > nodes_interpolation, b2000::csda< double > &laminate_begin, b2000::csda< double > &laminate_end) const |
void | layer (b2linalg::Vector< double, b2linalg::Vdense_constref > nodes_interpolation, const int layer_id, double &layer_begin, double &layer_end) const |
bool | get_material_ref_3d (b2000::Model *model, const Element *element, const double coordinates[3], const int layer_id, const double covariant_base[3][3], double material_ref[3][3]) |
bool | get_material_ref_3d (b2000::Model *model, const Element *element, const b2000::csda< double > coordinates[3], const int layer_id, const b2000::csda< double > covariant_base[3][3], b2000::csda< double > material_ref[3][3]) |
bool | get_material_ref_25d (b2000::Model *model, const Element *element, const double coordinates[3], const int layer_id, const double covariant_base[3][3], const bool isotropic, double material_ref[3][3]) |
bool | get_material_ref_25d (b2000::Model *model, const Element *element, const b2000::csda< double > coordinates[3], const int layer_id, const b2000::csda< double > covariant_base[3][3], const bool isotropic, b2000::csda< double > material_ref[3][3]) |
bool | get_material_ref_2d (b2000::Model *model, const Element *element, const double coordinates[3], const int layer_id, const double covariant_base[2][2], double material_ref[2][2]) |
bool | get_material_ref_2d (b2000::Model *model, const Element *element, const b2000::csda< double > coordinates[3], const int layer_id, const b2000::csda< double > covariant_base[2][2], b2000::csda< double > material_ref[2][2]) |
const RTable & | get_material (const int layer_id) |
bool | have_temperature () const |
bool | get_material_temperature (const Element *element, b2linalg::Vector< double, b2linalg::Vdense_constref > nodes_interpolation, const int nb_thickness_interpolation, const double thickness_interpolation[], const double time, double &temp, double &d_temp_d_time) const |
const std::string & | get_object_name () const override |
![]() | |
const std::string & | get_object_name () const override |
![]() | |
virtual | ~Object () |
Additional Inherited Members | |
![]() | |
static ObjectType | type |
Base class for material implementations. Material implementations derive from this class and one of the SolidMechanics classes. It has functions that allow to calculate the laminate and per-layer dimensions, and the orthogonal reference frame of the material.
|
inline |
|
inlineoverridevirtual |
Implements b2000::FortranElementProperty.
|
inline |
bool b2000::b2dbv3::FortranElementProperty::get_material_ref_25d | ( | b2000::Model * | model, |
const Element * | element, | ||
const b2000::csda< double > | coordinates[3], | ||
const int | layer_id, | ||
const b2000::csda< double > | covariant_base[3][3], | ||
const bool | isotropic, | ||
b2000::csda< double > | material_ref[3][3] | ||
) |
For elastic materials, calculate the orthogonal material reference for 2.5D (shell) elements.
model | A pointer to the Model instance. |
element | A pointer to the element instance. |
coordinates | The position of the material point. |
layer_id | The layer (starts at 0). |
covariant_base | The Jacobi matrix at the material point, relating the physical coordinates to the element natural coordinates. It is calculated by the element instance. The matrix is column-major. |
isotropic | Whether the material is isotropic. |
material_ref | The material reference frame (output). |
bool b2000::b2dbv3::FortranElementProperty::get_material_ref_25d | ( | b2000::Model * | model, |
const Element * | element, | ||
const double | coordinates[3], | ||
const int | layer_id, | ||
const double | covariant_base[3][3], | ||
const bool | isotropic, | ||
double | material_ref[3][3] | ||
) |
For elastic materials, calculate the orthogonal material reference for 2.5D (shell) elements.
model | A pointer to the Model instance. |
element | A pointer to the element instance. |
coordinates | The position of the material point. |
layer_id | The layer (starts at 0). |
covariant_base | The Jacobi matrix at the material point, relating the physical coordinates to the element natural coordinates. It is calculated by the element instance. The matrix is column-major. |
isotropic | Whether the material is isotropic. |
material_ref | The material reference frame (output). |
bool b2000::b2dbv3::FortranElementProperty::get_material_ref_2d | ( | b2000::Model * | model, |
const Element * | element, | ||
const b2000::csda< double > | coordinates[3], | ||
const int | layer_id, | ||
const b2000::csda< double > | covariant_base[2][2], | ||
b2000::csda< double > | material_ref[2][2] | ||
) |
For elasticity materials, calculate the orthogonal material reference frame for 2D elements.
model | A pointer to the Model instance. |
element | A pointer to the element instance. |
coordinates | The position of the material point. |
layer_id | The layer (starts at 0). |
covariant_base | The Jacobi matrix at the material point, relating the physical coordinates to the element natural coordinates. It is calculated by the element instance. The matrix is column-major. |
material_ref | The material reference frame (output). |
bool b2000::b2dbv3::FortranElementProperty::get_material_ref_2d | ( | b2000::Model * | model, |
const Element * | element, | ||
const double | coordinates[3], | ||
const int | layer_id, | ||
const double | covariant_base[2][2], | ||
double | material_ref[2][2] | ||
) |
For elasticity materials, calculate the orthogonal material reference frame for 2D elements.
model | A pointer to the Model instance. |
element | A pointer to the element instance. |
coordinates | The position of the material point. |
layer_id | The layer (starts at 0). |
covariant_base | The Jacobi matrix at the material point, relating the physical coordinates to the element natural coordinates. It is calculated by the element instance. The matrix is column-major. |
material_ref | The material reference frame (output). |
bool b2000::b2dbv3::FortranElementProperty::get_material_ref_3d | ( | b2000::Model * | model, |
const Element * | element, | ||
const b2000::csda< double > | coordinates[3], | ||
const int | layer_id, | ||
const b2000::csda< double > | covariant_base[3][3], | ||
b2000::csda< double > | material_ref[3][3] | ||
) |
For elastic materials, calculate the orthogonal material reference for 3D elements.
model | A pointer to the Model instance. |
element | A pointer to the element instance. |
coordinates | The position of the material point. |
layer_id | The layer (starts at 0). |
covariant_base | The Jacobi matrix at the material point, relating the physical coordinates to the element natural coordinates. It is calculated by the element instance. The matrix is column-major. |
material_ref | The material reference frame (output). |
bool b2000::b2dbv3::FortranElementProperty::get_material_ref_3d | ( | b2000::Model * | model, |
const Element * | element, | ||
const double | coordinates[3], | ||
const int | layer_id, | ||
const double | covariant_base[3][3], | ||
double | material_ref[3][3] | ||
) |
For elastic materials, calculate the orthogonal material reference for 3D elements.
model | A pointer to the Model instance. |
element | A pointer to the element instance. |
coordinates | The position of the material point. |
layer_id | The layer (starts at 0). |
covariant_base | The Jacobi matrix at the material point, relating the physical coordinates to the element natural coordinates. It is calculated by the element instance. The matrix is column-major. |
material_ref | The material reference frame (output). |
|
inline |
For elasticity materials. Interpolate the material temperature (difference) field and its time-variation.
element | Pointer to the Element instance. |
nodes_interpolation | Array of interpolation coefficients (the element shape functions). The length of the array must match the element's number of nodes. |
nb_thickness_interpolation | Length of through-the-thickness interpolation array. For 3D elements, it is 1, for shell elements, it is 2. |
thickness_interpolation | Array of interpolation coefficients through-the-thickness. For 3D elements, this array is [1.]. For shell elements, it is passed by the element instance and is [.5 * (1 - t), .5 * (1 + t)] where t is the element coordinate in the thickness direction and goes |
time | The analysis time as given to the element instance. |
temp | The interpolated temperature. |
d_temp_d_time | The time derivative of the interpolated temperature. For constant-temperature fields, this is 0. |
|
inlineoverridevirtual |
Reimplemented from b2000::Object.
|
inline |
|
inline |
Calculate the total laminate dimensions using the interpolated eccentricity in conjunction with the laminate definition (in case of laminates) or the interpolated element thickness.
nb_nodes | Number of nodes of the element. |
nodes_interpolation | Array of interpolation coefficients (the element shape functions). The length of the array must match the element's number of nodes. |
laminate_begin | The position of the bottom of the laminate (-0.5 * thickness + eccentricity). |
laminate_begin | The position of the top of the laminate (+0.5 * thickness + eccentricity). |
|
inline |
Calculate the dimensions of a single layer. For non-laminates this equivalent to calling laminate().
nb_nodes | Number of nodes of the element. |
nodes_interpolation | Array of interpolation coefficients (the element shape functions). The length of the array must match the element's number of nodes. |
laminate_begin | The position of the bottom of the layer. |
laminate_begin | The position of the top of the layer. |