b2api
B2000++ API Reference Manual, VERSION 4.6
 
Loading...
Searching...
No Matches
b2000::b2dbv3::FortranElementProperty Class Reference

#include "b2fortran_element_property.H"

Inheritance diagram for b2000::b2dbv3::FortranElementProperty:
Collaboration diagram for b2000::b2dbv3::FortranElementProperty:

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
 
Domainget_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 RTableget_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
 
- Public Member Functions inherited from b2000::ElementProperty
const std::string & get_object_name () const override
 
- Public Member Functions inherited from b2000::Object
virtual ~Object ()
 

Additional Inherited Members

- Static Public Attributes inherited from b2000::Object
static ObjectType type
 

Detailed Description

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.

Member Function Documentation

◆ get_domain()

Domain & b2000::b2dbv3::FortranElementProperty::get_domain ( )
inline
Returns
A reference to the Domain object.

◆ get_integration_order()

const int * b2000::b2dbv3::FortranElementProperty::get_integration_order ( ) const
inlineoverridevirtual
Returns
A pointer to an array of three integers, encoding the intergration rule or quadrature rule for the element.
Note
This may change in the future.

Implements b2000::FortranElementProperty.

◆ get_material()

const RTable & b2000::b2dbv3::FortranElementProperty::get_material ( const int  layer_id)
inline
Returns
The relation table for the material, as read from the database.

◆ get_material_ref_25d() [1/2]

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.

Parameters
modelA pointer to the Model instance.
elementA pointer to the element instance.
coordinatesThe position of the material point.
layer_idThe layer (starts at 0).
covariant_baseThe 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.
isotropicWhether the material is isotropic.
material_refThe material reference frame (output).
Returns
Whether it is identical to the identity matrix.

◆ get_material_ref_25d() [2/2]

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.

Parameters
modelA pointer to the Model instance.
elementA pointer to the element instance.
coordinatesThe position of the material point.
layer_idThe layer (starts at 0).
covariant_baseThe 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.
isotropicWhether the material is isotropic.
material_refThe material reference frame (output).
Returns
Whether it is identical to the identity matrix.

◆ get_material_ref_2d() [1/2]

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.

Parameters
modelA pointer to the Model instance.
elementA pointer to the element instance.
coordinatesThe position of the material point.
layer_idThe layer (starts at 0).
covariant_baseThe 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_refThe material reference frame (output).
Returns
Whether it is identical to the identity matrix.

◆ get_material_ref_2d() [2/2]

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.

Parameters
modelA pointer to the Model instance.
elementA pointer to the element instance.
coordinatesThe position of the material point.
layer_idThe layer (starts at 0).
covariant_baseThe 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_refThe material reference frame (output).
Returns
Whether it is identical to the identity matrix.

◆ get_material_ref_3d() [1/2]

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.

Parameters
modelA pointer to the Model instance.
elementA pointer to the element instance.
coordinatesThe position of the material point.
layer_idThe layer (starts at 0).
covariant_baseThe 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_refThe material reference frame (output).
Returns
Whether it is identical to the identity matrix.

◆ get_material_ref_3d() [2/2]

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.

Parameters
modelA pointer to the Model instance.
elementA pointer to the element instance.
coordinatesThe position of the material point.
layer_idThe layer (starts at 0).
covariant_baseThe 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_refThe material reference frame (output).
Returns
Whether it is identical to the identity matrix.

◆ get_material_temperature()

bool b2000::b2dbv3::FortranElementProperty::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
inline

For elasticity materials. Interpolate the material temperature (difference) field and its time-variation.

Parameters
elementPointer to the Element instance.
nodes_interpolationArray of interpolation coefficients (the element shape functions). The length of the array must match the element's number of nodes.
nb_thickness_interpolationLength of through-the-thickness interpolation array. For 3D elements, it is 1, for shell elements, it is 2.
thickness_interpolationArray 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
timeThe analysis time as given to the element instance.
tempThe interpolated temperature.
d_temp_d_timeThe time derivative of the interpolated temperature. For constant-temperature fields, this is 0.

◆ get_object_name()

const std::string & b2000::b2dbv3::FortranElementProperty::get_object_name ( ) const
inlineoverridevirtual
Returns
The name of the object. Sub-classes do not have to override this method.

Reimplemented from b2000::Object.

◆ have_temperature()

bool b2000::b2dbv3::FortranElementProperty::have_temperature ( ) const
inline
Returns
For elastic materials. Whether a temperature (difference) field is defined at the nodes.

◆ laminate()

void b2000::b2dbv3::FortranElementProperty::laminate ( b2linalg::Vector< double, b2linalg::Vdense_constref >  nodes_interpolation,
b2000::csda< double > &  laminate_begin,
b2000::csda< double > &  laminate_end 
) const
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.

Parameters
nb_nodesNumber of nodes of the element.
nodes_interpolationArray of interpolation coefficients (the element shape functions). The length of the array must match the element's number of nodes.
laminate_beginThe position of the bottom of the laminate (-0.5 * thickness + eccentricity).
laminate_beginThe position of the top of the laminate (+0.5 * thickness + eccentricity).

◆ layer()

void b2000::b2dbv3::FortranElementProperty::layer ( b2linalg::Vector< double, b2linalg::Vdense_constref >  nodes_interpolation,
const int  layer_id,
double &  layer_begin,
double &  layer_end 
) const
inline

Calculate the dimensions of a single layer. For non-laminates this equivalent to calling laminate().

Parameters
nb_nodesNumber of nodes of the element.
nodes_interpolationArray of interpolation coefficients (the element shape functions). The length of the array must match the element's number of nodes.
laminate_beginThe position of the bottom of the layer.
laminate_beginThe position of the top of the layer.

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