|
std::string | config_string () const |
| returns config information of small strain mechanics ElemDisc and material law More...
|
|
template<typename TElem > |
void | contact_forces_elem_ips_avg (LocalVector &locForce, GridObject *side, TElem *elem, const MathVector< dim > sideCoPos[], int numElemCorners, const LocalVector &locU, std::vector< DoFIndex > vActiveSetLoc) |
| computing contact forces elementwise by averaging over all integration points More...
|
|
template<typename TElem > |
void | contact_forces_elem_ips_avg (LocalVector &locForce, GridObject *side, TElem *elem, const MathVector< dim > sideCoPos[], int numElemCorners, const LocalVector &locU, vector< DoFIndex > vActiveSetLoc) |
|
template<typename TSide , typename TElem > |
void | contact_forces_elem_midpoint (LocalVector &locForce, TSide *side, TElem *elem, const MathVector< dim > sideCoPos[], const LocalVector &locU, std::vector< DoFIndex > vActiveSetLoc) |
| computing contact forces elementwise at every element midpoint More...
|
|
template<typename TSide , typename TElem > |
void | contact_forces_elem_midpoint (LocalVector &locForce, TSide *side, TElem *elem, const MathVector< dim > sideCoPos[], const LocalVector &locU, vector< DoFIndex > vActiveSetLoc) |
|
VectorExport | displacement () |
|
NumberExport | divergence () |
|
SmartPtr< IMaterialLaw< TDomain > > | get_material_law () |
| gets the material law More...
|
|
int | get_quad_order () |
| gets the quad order More...
|
|
void | init_state_variables (const size_t order) |
| initialize state/"inner" variables More...
|
|
virtual void | prepare_setting (const std::vector< LFEID > &vLfeID, bool bNonRegularGrid) |
| type of trial space for each function used More...
|
|
void | set_compress_factor (number val) |
|
void | set_mass_scale (double val) |
|
void | set_material_law (SmartPtr< IMaterialLaw< TDomain > > spMatLaw) |
| adds a material law More...
|
|
void | set_output_writer (SmartPtr< MechOutputWriter< TDomain > > spOutWriter) |
| set an output writer More...
|
|
void | set_quad_order (const size_t order) |
| sets the quad order More...
|
|
void | set_volume_forces (number vel_x, number vel_y) |
|
void | set_volume_forces (number vel_x, number vel_y, number vel_z) |
|
| SmallStrainMechanicsElemDisc (const char *functions, const char *subsets) |
| constructor More...
|
|
MatrixExport | stress () |
|
virtual | ~SmallStrainMechanicsElemDisc () |
| destructor More...
|
|
|
void | set_volume_forces (SmartPtr< CplUserData< MathVector< dim >, dim > > user) |
|
void | set_volume_forces (number vel) |
|
void | set_volume_forces (number vel_x, number vel_y) |
|
void | set_volume_forces (number vel_x, number vel_y, number vel_z) |
|
|
void | set_div_factor (SmartPtr< CplUserData< number, dim > > user) |
|
void | set_div_factor (number val) |
|
|
void | set_viscous_forces (SmartPtr< CplUserData< MathVector< dim >, dim > > user0, SmartPtr< CplUserData< MathVector< dim >, dim > > user1) |
|
void | add_elem_modifier (SmartPtr< IElemDiscModifier< TDomain > > elemModifier) |
|
std::vector< SmartPtr< IElemDiscModifier< TDomain > > > & | get_elem_modifier () |
|
| IElemDisc (const char *functions, const char *subsets) |
|
| IElemDisc (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset) |
|
virtual void | add_def_A_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
virtual void | add_def_A_expl_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
virtual void | add_def_M_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
virtual void | add_jac_A_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
virtual void | add_jac_M_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
virtual void | add_rhs_elem (LocalVector &rhs, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
IElemDisc< TDomain > & | asLeaf () |
|
void | check_roid (ReferenceObjectID roid, int discType) |
|
void | do_add_def_A_elem (LocalVector &d, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
void | do_add_def_A_expl_elem (LocalVector &d, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
void | do_add_def_M_elem (LocalVector &d, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
void | do_add_jac_A_elem (LocalMatrix &J, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
void | do_add_jac_M_elem (LocalMatrix &J, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
void | do_add_rhs_elem (LocalVector &rhs, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
void | do_fsh_elem_loop () |
|
void | do_fsh_timestep (const number time, VectorProxyBase *u, size_t algebra_id) |
|
void | do_fsh_timestep_elem (const number time, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
void | do_prep_elem (LocalVector &u, GridObject *elem, const ReferenceObjectID roid, const MathVector< dim > vCornerCoords[]) |
|
void | do_prep_elem_loop (const ReferenceObjectID roid, const int si) |
|
void | do_prep_timestep (number future_time, const number time, VectorProxyBase *u, size_t algebra_id) |
|
void | do_prep_timestep_elem (const number time, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
virtual void | fsh_timestep (number time, VectorProxyBase *u) |
|
virtual void | fsh_timestep_elem (const number time, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
| IElemAssembleFuncs () |
|
virtual void | post_assemble_loop () |
|
virtual void | prep_assemble_loop () |
|
virtual void | prep_elem (const LocalVector &u, GridObject *elem, const ReferenceObjectID roid, const MathVector< dim > vCornerCoords[]) |
|
virtual void | prep_elem_loop (const ReferenceObjectID roid, const int si) |
|
virtual void | prep_timestep (number future_time, number time, VectorProxyBase *u) |
|
virtual void | prep_timestep_elem (const number time, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
void | set_roid (ReferenceObjectID id, int discType) |
|
virtual | ~IElemAssembleFuncs () |
|
| IElemError (const char *functions, const char *subsets) |
|
| IElemError (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset) |
|
SmartPtr< ApproximationSpace< TDomain > > | approx_space () |
|
ConstSmartPtr< ApproximationSpace< TDomain > > | approx_space () const |
|
void | check_setup (bool bNonRegularGrid) |
|
void | clear_imports () |
|
SmartPtr< TDomain > | domain () |
|
ConstSmartPtr< TDomain > | domain () const |
|
const FunctionGroup & | function_group () const |
|
ConstSmartPtr< FunctionPattern > | function_pattern () const |
|
IDataImport< dim > & | get_import (size_t i) |
|
| IElemDiscBase (const char *functions="", const char *subsets="") |
|
| IElemDiscBase (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset) |
|
bool | is_time_dependent () const |
|
bool | local_time_series_needed () |
|
const LocalVectorTimeSeries * | local_time_solutions () const |
|
const FunctionIndexMapping & | map () const |
|
number | mass_scale () const |
|
number | mass_scale () const |
|
number | mass_scale (const size_t timePoint) const |
|
number | mass_scale (const size_t timePoint) const |
|
const std::vector< number > & | mass_scales () const |
|
const std::vector< number > & | mass_scales () const |
|
size_t | num_fct () const |
|
size_t | num_imports () const |
|
size_t | num_subsets () const |
|
void | register_import (IDataImport< dim > &Imp) |
|
virtual bool | requests_local_time_series () |
|
void | set_approximation_space (SmartPtr< ApproximationSpace< TDomain > > approxSpace) |
|
void | set_functions (const std::string &functions) |
|
void | set_functions (const std::vector< std::string > &functions) |
|
void | set_stationary () |
|
void | set_stationary (bool bStationaryForced=true) |
|
void | set_subsets (const std::string &subsets) |
|
void | set_subsets (const std::vector< std::string > &subsets) |
|
void | set_time_dependent (LocalVectorTimeSeries &locTimeSeries, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff) |
|
void | set_time_independent () |
|
void | set_time_point (const size_t timePoint) |
|
number | stiff_scale () const |
|
number | stiff_scale () const |
|
number | stiff_scale (const size_t timePoint) const |
|
number | stiff_scale (const size_t timePoint) const |
|
const std::vector< number > & | stiff_scales () const |
|
const std::vector< number > & | stiff_scales () const |
|
TDomain::subset_handler_type & | subset_handler () |
|
const TDomain::subset_handler_type & | subset_handler () const |
|
const std::vector< std::string > & | symb_fcts () const |
|
const std::vector< std::string > & | symb_subsets () const |
|
number | time () const |
|
size_t | time_point () const |
|
virtual int | type () const |
|
virtual bool | use_hanging () const |
|
virtual | ~IElemDiscBase () |
|
IElemDisc< TDomain > & | asLeaf () |
|
void | check_roid (ReferenceObjectID roid, int discType) |
|
virtual void | compute_err_est_A_elem (const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
|
virtual void | compute_err_est_M_elem (const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
|
virtual void | compute_err_est_rhs_elem (GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
|
void | do_compute_err_est_A_elem (LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
|
void | do_compute_err_est_M_elem (LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
|
void | do_compute_err_est_rhs_elem (GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
|
void | do_fsh_err_est_elem_loop () |
|
void | do_prep_err_est_elem (LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
void | do_prep_err_est_elem_loop (const ReferenceObjectID roid, const int si) |
|
virtual SmartPtr< IErrEstData< TDomain > > | err_est_data () |
|
bool | err_est_enabled () const |
|
virtual void | fsh_err_est_elem_loop () |
|
| IElemEstimatorFuncs () |
|
virtual void | prep_err_est_elem (const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
virtual void | prep_err_est_elem_loop (const ReferenceObjectID roid, const int si) |
|
void | set_error_estimator (SmartPtr< IErrEstData< TDomain > > ee) |
|
void | set_roid (ReferenceObjectID id, int discType) |
|
virtual | ~IElemEstimatorFuncs () |
|
|
template<typename TElem , typename TFEGeom > |
void | ex_displacement (const LocalVector &u, const MathVector< dim > vGlobIP[], const MathVector< TFEGeom::Type::dim > vLocIP[], const size_t nip, MathVector< dim > vValue[], bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[]) |
| computes the displacements (and derivatives) More...
|
|
template<typename TElem , typename TFEGeom > |
void | ex_displacement_fe (MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< TFEGeom::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[]) |
| computes the displacement More...
|
|
template<typename TElem , typename TFEGeom > |
void | ex_divergence_fe (number vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< TFEGeom::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< number > > vvvDeriv[]) |
| computes the divergence of displacement More...
|
|
template<typename TElem , typename TFEGeom > |
void | ex_stress_fe (MathMatrix< dim, dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< TFEGeom::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathMatrix< dim, dim > > > vvvDeriv[]) |
| computes the stress More...
|
|
template<typename TElem , typename TFEGeom > |
void | lin_def_pressure (const LocalVector &u, std::vector< std::vector< number > > vvvLinDef[], const size_t nip) |
|
template<typename TElem , typename TFEGeom > |
void | lin_def_viscous_forces0 (const LocalVector &u, std::vector< std::vector< MathVector< dim > > > vvvLinDef[], const size_t nip) |
|
template<typename TElem , typename TFEGeom > |
void | lin_def_viscous_forces1 (const LocalVector &u, std::vector< std::vector< MathVector< dim > > > vvvLinDef[], const size_t nip) |
|
template<typename TElem , typename TFEGeom > |
void | lin_def_volume_forces (const LocalVector &u, std::vector< std::vector< MathVector< dim > > > vvvLinDef[], const size_t nip) |
|
void | clear_add_fct () |
|
void | clear_add_fct (ReferenceObjectID id) |
|
void | set_default_add_fct () |
|
void | clear_add_fct () |
|
void | clear_add_fct (ReferenceObjectID id) |
|
void | remove_add_def_A_elem_fct (ReferenceObjectID id) |
|
void | remove_add_def_A_expl_elem_fct (ReferenceObjectID id) |
|
void | remove_add_def_M_elem_fct (ReferenceObjectID id) |
|
void | remove_add_jac_A_elem_fct (ReferenceObjectID id) |
|
void | remove_add_jac_M_elem_fct (ReferenceObjectID id) |
|
void | remove_add_rhs_elem_fct (ReferenceObjectID id) |
|
void | remove_fsh_elem_loop_fct (ReferenceObjectID id) |
|
void | remove_fsh_timestep_elem_fct (ReferenceObjectID id) |
|
void | remove_fsh_timestep_fct (size_t algebra_id) |
|
void | remove_prep_elem_fct (ReferenceObjectID id) |
|
void | remove_prep_elem_loop_fct (ReferenceObjectID id) |
|
void | remove_prep_timestep_elem_fct (ReferenceObjectID id) |
|
void | remove_prep_timestep_fct (size_t algebra_id) |
|
void | set_add_def_A_elem_fct (ReferenceObjectID id, TAssFunc func) |
|
void | set_add_def_A_expl_elem_fct (ReferenceObjectID id, TAssFunc func) |
|
void | set_add_def_M_elem_fct (ReferenceObjectID id, TAssFunc func) |
|
void | set_add_jac_A_elem_fct (ReferenceObjectID id, TAssFunc func) |
|
void | set_add_jac_M_elem_fct (ReferenceObjectID id, TAssFunc func) |
|
void | set_add_rhs_elem_fct (ReferenceObjectID id, TAssFunc func) |
|
void | set_default_add_fct () |
|
void | set_fsh_elem_loop_fct (ReferenceObjectID id, TAssFunc func) |
|
void | set_fsh_timestep_elem_fct (ReferenceObjectID id, TAssFunc func) |
|
void | set_fsh_timestep_fct (size_t algebra_id, TAssFunc func) |
|
void | set_prep_elem_fct (ReferenceObjectID id, TAssFunc func) |
|
void | set_prep_elem_loop_fct (ReferenceObjectID id, TAssFunc func) |
|
void | set_prep_timestep_elem_fct (ReferenceObjectID id, TAssFunc func) |
|
void | set_prep_timestep_fct (size_t algebra_id, TAssFunc func) |
|
void | clear_add_fct () |
|
void | clear_add_fct (ReferenceObjectID id) |
|
virtual void | approximation_space_changed () |
|
void | set_function_pattern (ConstSmartPtr< FunctionPattern > fctPatt) |
|
void | update_function_index_mapping () |
|
void | clear_add_fct () |
|
void | clear_add_fct (ReferenceObjectID id) |
|
void | remove_compute_err_est_A_elem (ReferenceObjectID id) |
|
void | remove_compute_err_est_M_elem (ReferenceObjectID id) |
|
void | remove_compute_err_est_rhs_elem (ReferenceObjectID id) |
|
void | remove_fsh_err_est_elem_loop (ReferenceObjectID id) |
|
void | remove_prep_err_est_elem (ReferenceObjectID id) |
|
void | remove_prep_err_est_elem_loop (ReferenceObjectID id) |
|
void | set_compute_err_est_A_elem (ReferenceObjectID id, TAssFunc func) |
|
void | set_compute_err_est_M_elem (ReferenceObjectID id, TAssFunc func) |
|
void | set_compute_err_est_rhs_elem (ReferenceObjectID id, TAssFunc func) |
|
void | set_default_add_fct () |
|
void | set_fsh_err_est_elem_loop (ReferenceObjectID id, TAssFunc func) |
|
void | set_prep_err_est_elem (ReferenceObjectID id, TAssFunc func) |
|
void | set_prep_err_est_elem_loop (ReferenceObjectID id, TAssFunc func) |
|
|
template<typename TElem , typename TFEGeom > |
void | add_def_A_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
template<typename TElem , typename TFEGeom > |
void | add_def_M_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
template<typename TElem , typename TFEGeom > |
void | add_jac_A_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
template<typename TElem , typename TFEGeom > |
void | add_jac_M_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
template<typename TElem , typename TFEGeom > |
void | add_rhs_elem (LocalVector &d, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
template<typename TElem , typename TFEGeom > |
void | fsh_elem_loop () |
|
template<typename TElem , typename TFEGeom > |
void | fsh_timestep_elem (const number time, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
|
size_t | num_fct () const |
|
template<typename TElem , typename TFEGeom > |
void | prep_elem (const LocalVector &u, GridObject *elem, const ReferenceObjectID roid, const MathVector< dim > vCornerCoords[]) |
|
template<typename TElem , typename TFEGeom > |
void | prep_elem_loop (const ReferenceObjectID roid, const int si) |
|
template<typename TElem , typename TFEGeom > |
void | prep_timestep_elem (const number time, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| assemble methods More...
|
|
void | print_mat_constants (const number lambda, const number mu, const number E, const number v) |
| prints material constants More...
|
|
void | register_all_fe_funcs (int order, int quadOrder) |
|
template<typename TElem , typename TFEGeom > |
void | register_fe_func () |
|
void | set_assemble_funcs () |
| sets the requested assembling routines More...
|
|
void | update_geo_elem (TBaseElem *elem, DimFEGeometry< dim > &geo) |
| updates the geometry for a given element More...
|
|
template<typename TDomain>
class ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >
This class assembles the equation of the static linear elasticity problem:
(1) - div(sigma) = f (2) sigma = C : epsilon (3) epsilon = 1/2 (nabla_u + nabla_u^T)
As common in the linear theory we identify the deformed configuration with the undeformed configuration. Therefore we do not have to distinguish between different stress measures. Here we use a pure displacement-ansatz to solve the coupled system above, i.e. the kinematic equation for the linearized strain tensor epsilon (3) is inserted in the material law (2) and the resulting stress tensor sigma is introduced in the momentum balance equation (1). Therein, the computation of the strain and the stress tensor is performed at the integration points! Following this approach, the only remaining unknown function is the displacement field u!
\TODO: in case of linear elasticity one can implement the voigt notation (exploiting symmetry of sigma and epsilon)
In order to compute the eigenfrequencies of a system by means of the eigenvalue problem the second time derivatives of u
- rho * \frac{\partial^2 u}{\partial^2 t}
are considered in the momentum equation (1) and deliver a contribution to the mass matrix.
References:
-
D. Braess. Finite Elemente. Theorie, schnelle Loeser und Anwendungen in der
-
Elastizitaetstheorie, Springer
-
-
R. Prohl. Ein verallgemeinerter Plastizitaetsalgorithmus zur numerischen Behandlung von elasto-plastischen Materialmodellen unter gro�en Deformationen. Dissertation, Universit�t Frankfurt (2015).
-
-
M. Rupp. Berechnung der Resonanzschwingungen einer Gitarrendecke.
-
(Diplomarbeit, 2009, Universitaet Heidelberg)