![]() |
MechSys
1.0
Computing library for simulations in continuum and discrete mechanics
|
#include <element.h>
Public Member Functions | |
Element (int NDim, Mesh::Cell const &Cell, Model const *Mdl, Model const *XMdl, SDPair const &Prp, SDPair const &Ini, Array< Node * > const &Nodes) | |
Connectivity. | |
virtual | ~Element () |
virtual void | IncNLocDOF (size_t &NEq) const |
Increment the number of local DOFs. | |
virtual void | BackupState () const |
Backup element state. | |
virtual void | RestoreState () const |
Restore element state. | |
virtual void | SetBCs (size_t IdxEdgeOrFace, SDPair const &BCs, BCFuncs *BCF) |
Set boundary conditions. | |
virtual void | AddToF (double Time, Vec_t &F) const |
Add to (external) F vector contribution at each Time. | |
virtual void | ClrBCs () |
Clear boundary conditions. | |
virtual void | GetLoc () const |
Get location vector for mounting K/M matrices. | |
virtual void | GetLoc (Array< size_t > &Loc) const |
Get location vector for mounting K/M matrices. | |
virtual void | ElemEqs (double Time, Vec_t const &V, Vec_t const &Ww, Vec_t const &Pw) const |
Get location vector for mounting K/M matrices. | |
virtual void | CalcK (Mat_t &K) const |
virtual void | CalcM (Mat_t &M) const |
virtual void | CalcC (Mat_t &C) const |
virtual void | CalcK (Vec_t const &U, double Alpha, double dt, Mat_t &KK, Vec_t &dF) const |
virtual void | CalcKCM (Mat_t &KK, Mat_t &CC, Mat_t &MM) const |
virtual void | UpdateState (Vec_t const &dU, Vec_t *F_int=NULL) const |
virtual void | SetFint (Vec_t *Fint=NULL) const |
Calculate Fi = K*U. | |
virtual void | StateKeys (Array< String > &Keys) const |
Get state keys, ex: sx, sy, sxy, ex, ey, exy. | |
virtual void | StateAtIP (SDPair &KeysVals, int IdxIP) const |
Get state at IP. | |
virtual void | StateAtIPs (Array< SDPair > &Results) const |
Get state (internal values: sig, eps) at all integration points. | |
virtual void | StateAtNodes (Array< SDPair > &Results) const |
Get state (internal values: sig, eps) at all nodes (applies extrapolation) | |
virtual void | Draw (std::ostream &os, MPyPrms const &Prms) const |
TODO: Move this to a Python script. Draw element with MatPlotLib. | |
virtual size_t | NIVs () const |
Number of internal variables. | |
virtual double | GetIV (size_t i) const |
Get internal variable. | |
virtual void | SetIV (size_t i, double Val) |
Set internal variable. | |
virtual void | CalcIVRate (double Time, Vec_t const &U, Vec_t const &V, Vec_t &Rate) const |
Calculate rate of internal variables. | |
virtual void | CorrectIVs () |
Correct just set IVs. | |
virtual double | Update (size_t Idx, Vec_t const &V_g, Vec_t const &dPwdt_g, double dt) |
Update state. | |
virtual void | Restore () |
Restore state. | |
void | CoordMatrix (Mat_t &C) const |
Matrix with coordinates of nodes. | |
void | FCoordMatrix (size_t IdxFace, Mat_t &C) const |
Matrix with coordinates of face nodes. | |
void | ShapeMatrix (Mat_t &M) const |
Matrix with shape functions evaluated at IPs. | |
void | CalcShape (Mat_t const &C, IntegPoint const &IP, double &detJ, double &Coef) const |
Results are in GE->N. | |
void | CalcFaceShape (Mat_t const &FC, IntegPoint const &FIP, double &detJ, double &Coef, double h=1.0) const |
Results are in GE->FN. | |
void | CalcFaceShape (Mat_t const &FC, IntegPoint const &FIP, Mat_t &J, double &detJ, double &Coef, double h=1.0) const |
Results are in GE->FN. | |
void | CoordsOfIP (size_t IdxIP, Vec_t &X) const |
x-y-z coordinates of integration point (IP) | |
Public Attributes | |
int | NDim |
Space dimension. | |
Mesh::Cell const & | Cell |
Geometric information: ID, Tag, connectivity. | |
Model const * | Mdl |
The model. | |
Model const * | XMdl |
Extra model. | |
GeomElem * | GE |
Element for geometry definition. | |
bool | Active |
Active element ? | |
GeomType | GTy |
Geometry type. | |
Array< Node * > | Con |
Connectivity. | |
Array< State * > | Sta |
State at the centre of the element or at each IP. | |
bool | IsUWP |
Is u-w-p element ? |
FEM::Element::Element | ( | int | NDim, |
Mesh::Cell const & | Cell, | ||
Model const * | Mdl, | ||
Model const * | XMdl, | ||
SDPair const & | Prp, | ||
SDPair const & | Ini, | ||
Array< Node * > const & | Nodes | ||
) | [inline] |
FEM::Element::~Element | ( | ) | [inline, virtual] |
virtual void FEM::Element::AddToF | ( | double | Time, |
Vec_t & | F | ||
) | const [inline, virtual] |
Add to (external) F vector contribution at each Time.
void FEM::Element::BackupState | ( | ) | const [inline, virtual] |
Backup element state.
virtual void FEM::Element::CalcC | ( | Mat_t & | C | ) | const [inline, virtual] |
void FEM::Element::CalcFaceShape | ( | Mat_t const & | FC, |
IntegPoint const & | FIP, | ||
double & | detJ, | ||
double & | Coef, | ||
double | h = 1.0 |
||
) | const [inline] |
Results are in GE->FN.
void FEM::Element::CalcFaceShape | ( | Mat_t const & | FC, |
IntegPoint const & | FIP, | ||
Mat_t & | J, | ||
double & | detJ, | ||
double & | Coef, | ||
double | h = 1.0 |
||
) | const [inline] |
Results are in GE->FN.
virtual void FEM::Element::CalcIVRate | ( | double | Time, |
Vec_t const & | U, | ||
Vec_t const & | V, | ||
Vec_t & | Rate | ||
) | const [inline, virtual] |
Calculate rate of internal variables.
Reimplemented in FEM::HydroMechElem, and FEM::EquilibElem.
virtual void FEM::Element::CalcK | ( | Mat_t & | K | ) | const [inline, virtual] |
Reimplemented in FEM::NLRod, FEM::USigCondElem, FEM::USigElem, FEM::USigEpsElem, FEM::EquilibElem, FEM::FlowElem, FEM::Beam, and FEM::Rod.
virtual void FEM::Element::CalcK | ( | Vec_t const & | U, |
double | Alpha, | ||
double | dt, | ||
Mat_t & | KK, | ||
Vec_t & | dF | ||
) | const [inline, virtual] |
virtual void FEM::Element::CalcKCM | ( | Mat_t & | KK, |
Mat_t & | CC, | ||
Mat_t & | MM | ||
) | const [inline, virtual] |
Reimplemented in FEM::HydroMechElem.
virtual void FEM::Element::CalcM | ( | Mat_t & | M | ) | const [inline, virtual] |
Reimplemented in FEM::EquilibElem, FEM::FlowElem, and FEM::Beam.
void FEM::Element::CalcShape | ( | Mat_t const & | C, |
IntegPoint const & | IP, | ||
double & | detJ, | ||
double & | Coef | ||
) | const [inline] |
Results are in GE->N.
virtual void FEM::Element::ClrBCs | ( | ) | [inline, virtual] |
Clear boundary conditions.
Reimplemented in FEM::FlowElem, and FEM::Beam.
void FEM::Element::CoordMatrix | ( | Mat_t & | C | ) | const [inline] |
Matrix with coordinates of nodes.
void FEM::Element::CoordsOfIP | ( | size_t | IdxIP, |
Vec_t & | X | ||
) | const [inline] |
x-y-z coordinates of integration point (IP)
virtual void FEM::Element::CorrectIVs | ( | ) | [inline, virtual] |
Correct just set IVs.
Reimplemented in FEM::EquilibElem.
void FEM::Element::Draw | ( | std::ostream & | os, |
MPyPrms const & | Prms | ||
) | const [inline, virtual] |
virtual void FEM::Element::ElemEqs | ( | double | Time, |
Vec_t const & | V, | ||
Vec_t const & | Ww, | ||
Vec_t const & | Pw | ||
) | const [inline, virtual] |
Get location vector for mounting K/M matrices.
Reimplemented in FEM::UWPElem.
void FEM::Element::FCoordMatrix | ( | size_t | IdxFace, |
Mat_t & | C | ||
) | const [inline] |
Matrix with coordinates of face nodes.
virtual double FEM::Element::GetIV | ( | size_t | i | ) | const [inline, virtual] |
Get internal variable.
Reimplemented in FEM::HydroMechElem, and FEM::EquilibElem.
virtual void FEM::Element::GetLoc | ( | ) | const [inline, virtual] |
Get location vector for mounting K/M matrices.
Reimplemented in FEM::UWPElem.
virtual void FEM::Element::GetLoc | ( | Array< size_t > & | Loc | ) | const [inline, virtual] |
Get location vector for mounting K/M matrices.
Reimplemented in FEM::NLRod, FEM::HydroMechElem, FEM::USigCondElem, FEM::USigElem, FEM::USigEpsElem, FEM::EquilibElem, FEM::FlowElem, FEM::Beam, and FEM::Rod.
virtual void FEM::Element::IncNLocDOF | ( | size_t & | NEq | ) | const [inline, virtual] |
Increment the number of local DOFs.
Reimplemented in FEM::USigElem, and FEM::USigEpsElem.
virtual size_t FEM::Element::NIVs | ( | ) | const [inline, virtual] |
Number of internal variables.
Reimplemented in FEM::HydroMechElem, and FEM::EquilibElem.
virtual void FEM::Element::Restore | ( | ) | [inline, virtual] |
Restore state.
Reimplemented in FEM::UWPElem.
void FEM::Element::RestoreState | ( | ) | const [inline, virtual] |
Restore element state.
virtual void FEM::Element::SetBCs | ( | size_t | IdxEdgeOrFace, |
SDPair const & | BCs, | ||
BCFuncs * | BCF | ||
) | [inline, virtual] |
Set boundary conditions.
Reimplemented in FEM::UWPElem, FEM::USigCondElem, FEM::USigElem, FEM::USigEpsElem, FEM::HydroMechElem, FEM::EquilibElem, FEM::FlowElem, and FEM::Beam.
virtual void FEM::Element::SetFint | ( | Vec_t * | Fint = NULL | ) | const [inline, virtual] |
Calculate Fi = K*U.
Reimplemented in FEM::EquilibElem.
virtual void FEM::Element::SetIV | ( | size_t | i, |
double | Val | ||
) | [inline, virtual] |
Set internal variable.
Reimplemented in FEM::HydroMechElem, and FEM::EquilibElem.
void FEM::Element::ShapeMatrix | ( | Mat_t & | M | ) | const [inline] |
Matrix with shape functions evaluated at IPs.
virtual void FEM::Element::StateAtIP | ( | SDPair & | KeysVals, |
int | IdxIP | ||
) | const [inline, virtual] |
Get state at IP.
Reimplemented in FEM::UWPElem, FEM::USigCondElem, FEM::USigElem, FEM::HydroMechElem, FEM::USigEpsElem, FEM::EquilibElem, and FEM::FlowElem.
void FEM::Element::StateAtIPs | ( | Array< SDPair > & | Results | ) | const [inline, virtual] |
Get state (internal values: sig, eps) at all integration points.
void FEM::Element::StateAtNodes | ( | Array< SDPair > & | Results | ) | const [inline, virtual] |
virtual void FEM::Element::StateKeys | ( | Array< String > & | Keys | ) | const [inline, virtual] |
Get state keys, ex: sx, sy, sxy, ex, ey, exy.
Reimplemented in FEM::UWPElem, FEM::USigCondElem, FEM::USigElem, FEM::HydroMechElem, FEM::USigEpsElem, FEM::EquilibElem, FEM::Beam, FEM::FlowElem, and FEM::Rod.
virtual double FEM::Element::Update | ( | size_t | Idx, |
Vec_t const & | V_g, | ||
Vec_t const & | dPwdt_g, | ||
double | dt | ||
) | [inline, virtual] |
Update state.
Reimplemented in FEM::UWPElem.
virtual void FEM::Element::UpdateState | ( | Vec_t const & | dU, |
Vec_t * | F_int = NULL |
||
) | const [inline, virtual] |
Reimplemented in FEM::NLRod, FEM::USigCondElem, FEM::USigElem, FEM::HydroMechElem, FEM::USigEpsElem, FEM::EquilibElem, FEM::Beam, FEM::FlowElem, and FEM::Rod.
bool FEM::Element::Active |
Active element ?
Mesh::Cell const& FEM::Element::Cell |
Geometric information: ID, Tag, connectivity.
Connectivity.
Element for geometry definition.
Geometry type.
bool FEM::Element::IsUWP |
Is u-w-p element ?
Model const* FEM::Element::Mdl |
The model.
Space dimension.
State at the centre of the element or at each IP.
Model const* FEM::Element::XMdl |
Extra model.