Plugins
ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain > Class Template Reference

#include <small_strain_mech.h>

+ Inheritance diagram for ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >:

Public Types

typedef base_type::domain_type domain_type
 Domain type. More...
 
typedef SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > MatrixExport
 
typedef SmartPtr< CplUserData< number, dim > > NumberExport
 
typedef base_type::position_type position_type
 Position type. More...
 
typedef SmartPtr< CplUserData< MathVector< dim >, dim > > VectorExport
 
- Public Types inherited from ug::IElemDisc< TDomain >
typedef IElemAssembleFuncs< IElemDisc< TDomain >, TDomain > assemble_base_type
 
typedef IElemError< TDomain > base_type
 
typedef TDomain domain_type
 
typedef IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain > estimator_base_type
 
- Public Types inherited from IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >
typedef TDomain domain_type
 
typedef IElemDisc< TDomain > leaf_type
 
- Public Types inherited from ug::IElemError< class >
typedef TDomain domain_type
 
typedef IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain > estimator_base_type
 
- Public Types inherited from ug::IElemDiscBase< class >
typedef TDomain domain_type
 
typedef TDomain::position_type position_type
 
- Public Types inherited from IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain >
typedef TDomain domain_type
 
typedef IElemDisc< TDomain > leaf_type
 

Public Member Functions

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)
 
- Public Member Functions inherited from ug::IElemDisc< TDomain >
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)
 
- Public Member Functions inherited from IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >
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 ()
 
- Public Member Functions inherited from ug::IElemError< class >
 IElemError (const char *functions, const char *subsets)
 
 IElemError (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset)
 
- Public Member Functions inherited from ug::IElemDiscBase< class >
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 FunctionGroupfunction_group () const
 
ConstSmartPtr< FunctionPatternfunction_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 LocalVectorTimeSerieslocal_time_solutions () const
 
const FunctionIndexMappingmap () 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_typesubset_handler ()
 
const TDomain::subset_handler_typesubset_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 ()
 
- Public Member Functions inherited from IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain >
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 ()
 

Static Public Attributes

static const int dim = base_type::dim
 World dimension. More...
 
- Static Public Attributes inherited from ug::IElemDisc< TDomain >
static const int dim
 
- Static Public Attributes inherited from IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >
static const int dim
 
- Static Public Attributes inherited from ug::IElemError< class >
static const int dim
 
- Static Public Attributes inherited from ug::IElemDiscBase< class >
static const int dim
 
- Static Public Attributes inherited from IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain >
static const int dim
 

Protected Member Functions

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)
 
- Protected Member Functions inherited from ug::IElemDisc< TDomain >
void clear_add_fct ()
 
void clear_add_fct (ReferenceObjectID id)
 
void set_default_add_fct ()
 
- Protected Member Functions inherited from IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >
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)
 
- Protected Member Functions inherited from ug::IElemError< class >
void clear_add_fct ()
 
void clear_add_fct (ReferenceObjectID id)
 
- Protected Member Functions inherited from ug::IElemDiscBase< class >
virtual void approximation_space_changed ()
 
void set_function_pattern (ConstSmartPtr< FunctionPattern > fctPatt)
 
void update_function_index_mapping ()
 
- Protected Member Functions inherited from IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain >
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)
 

Protected Attributes

SmartPtr< DataExport< MathVector< dim >, dim > > m_exDisplacement
 
SmartPtr< DataExport< number, dim > > m_exDivergence
 Export. More...
 
SmartPtr< DataExport< MathMatrix< dim, dim >, dim > > m_exStressTensor
 
- Protected Attributes inherited from ug::IElemDisc< TDomain >
std::vector< SmartPtr< IElemDiscModifier< TDomain > > > m_spElemModifier
 
- Protected Attributes inherited from IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >
ReferenceObjectID m_roid
 
- Protected Attributes inherited from ug::IElemDiscBase< class >
bool m_bStationaryForced
 
FunctionGroup m_fctGrp
 
FunctionIndexMapping m_fctIndexMap
 
LocalVectorTimeSeriesm_pLocalVectorTimeSeries
 
SmartPtr< ApproximationSpace< TDomain > > m_spApproxSpace
 
ConstSmartPtr< FunctionPatternm_spFctPattern
 
size_t m_timePoint
 
std::vector< std::string > m_vFct
 
std::vector< IDataImport< dim > * > m_vIImport
 
std::vector< numberm_vScaleMass
 
std::vector< numberm_vScaleStiff
 
std::vector< std::string > m_vSubset
 
- Protected Attributes inherited from IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain >
ReferenceObjectID m_roid
 
SmartPtr< IErrEstData< TDomain > > m_spErrEstData
 

Private Types

typedef IElemDisc< TDomain > base_type
 Base class type. More...
 
typedef domain_traits< TDomain::dim >::grid_base_object TBaseElem
 base element type of associated domain More...
 
typedef SmallStrainMechanicsElemDisc< TDomain > this_type
 own type More...
 

Private Member Functions

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...
 

Private Attributes

bool m_bMatLawPassedToOutWriter
 
bool m_bOutWriter
 
bool m_bQuadOrderUserDef
 current integration order More...
 
DataImport< number, dimm_imCompressIndex
 Data import for the compressibility term. More...
 
DataImport< number, dimm_imDivergence
 Data import for the reaction term. More...
 
DataImport< MathVector< dim >, dimm_imViscousForces [2]
 data import for viscous forces More...
 
DataImport< MathVector< dim >, dimm_imVolForce
 data import for volume forces More...
 
LFEID m_lfeID
 current shape function set More...
 
double m_massScale
 
int m_order
 current order of disc scheme More...
 
int m_quadOrder
 
SmartPtr< MathTensor4< dim, dim, dim, dim > > m_spElastTensor
 elasticity tensor More...
 
SmartPtr< IMaterialLaw< TDomain > > m_spMatLaw
 material law More...
 
SmartPtr< MechOutputWriter< TDomain > > m_spOutWriter
 output writer More...
 

Detailed Description

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)

  • boundary conditions.

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)

Member Typedef Documentation

◆ base_type

template<typename TDomain >
typedef IElemDisc<TDomain> ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::base_type
private

Base class type.

◆ domain_type

◆ MatrixExport

◆ NumberExport

◆ position_type

Position type.

◆ TBaseElem

template<typename TDomain >
typedef domain_traits<TDomain::dim>::grid_base_object ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::TBaseElem
private

base element type of associated domain

◆ this_type

template<typename TDomain >
typedef SmallStrainMechanicsElemDisc<TDomain> ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::this_type
private

own type

◆ VectorExport

Constructor & Destructor Documentation

◆ SmallStrainMechanicsElemDisc()

◆ ~SmallStrainMechanicsElemDisc()

destructor

References grid().

Member Function Documentation

◆ add_def_A_elem()

◆ add_def_M_elem()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::add_def_M_elem ( LocalVector d,
const LocalVector u,
GridObject elem,
const MathVector< dim vCornerCoords[] 
)
private

◆ add_jac_A_elem()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::add_jac_A_elem ( LocalMatrix J,
const LocalVector u,
GridObject elem,
const MathVector< dim vCornerCoords[] 
)
private

◆ add_jac_M_elem()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::add_jac_M_elem ( LocalMatrix J,
const LocalVector u,
GridObject elem,
const MathVector< dim vCornerCoords[] 
)
private

References dim.

◆ add_rhs_elem()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::add_rhs_elem ( LocalVector d,
GridObject elem,
const MathVector< dim vCornerCoords[] 
)
private

References VecDot().

◆ config_string()

◆ contact_forces_elem_ips_avg() [1/2]

template<typename TDomain >
template<typename TElem >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::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

◆ contact_forces_elem_ips_avg() [2/2]

template<typename TDomain >
template<typename TElem >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::contact_forces_elem_ips_avg ( LocalVector locForce,
GridObject side,
TElem *  elem,
const MathVector< dim sideCoPos[],
int  numElemCorners,
const LocalVector locU,
vector< DoFIndex vActiveSetLoc 
)

◆ contact_forces_elem_midpoint() [1/2]

template<typename TDomain >
template<typename TSide , typename TElem >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::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

◆ contact_forces_elem_midpoint() [2/2]

template<typename TDomain >
template<typename TSide , typename TElem >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::contact_forces_elem_midpoint ( LocalVector locForce,
TSide *  side,
TElem *  elem,
const MathVector< dim sideCoPos[],
const LocalVector locU,
vector< DoFIndex vActiveSetLoc 
)

◆ displacement()

◆ divergence()

◆ ex_displacement()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::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[] 
)
protected

computes the displacements (and derivatives)

◆ ex_displacement_fe()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::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[] 
)
protected

◆ ex_divergence_fe()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::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[] 
)
protected

◆ ex_stress_fe()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::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[] 
)
protected

◆ fsh_elem_loop()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::fsh_elem_loop
privatevirtual

◆ fsh_timestep_elem()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::fsh_timestep_elem ( const number  time,
const LocalVector u,
GridObject elem,
const MathVector< dim vCornerCoords[] 
)
private

◆ get_material_law()

template<typename TDomain >
SmartPtr<IMaterialLaw<TDomain> > ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::get_material_law ( )
inline

◆ get_quad_order()

template<typename TDomain >
int ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::get_quad_order ( )
inline

◆ init_state_variables()

template<typename TDomain >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::init_state_variables ( const size_t  order)

◆ lin_def_pressure()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::lin_def_pressure ( const LocalVector u,
std::vector< std::vector< number > >  vvvLinDef[],
const size_t  nip 
)
protected

computes the linearized defect w.r.t to the pressure: $$ \frac{\partial d(u,I_1), ... d(u,I_n)}{\partial I_i} $$ (since d is a vector, we obtain a bunch of vectors)

References UG_ASSERT.

◆ lin_def_viscous_forces0()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::lin_def_viscous_forces0 ( const LocalVector u,
std::vector< std::vector< MathVector< dim > > >  vvvLinDef[],
const size_t  nip 
)
protected

computes the linearized defect w.r.t to the volume forces $$ \frac{\partial d(u,I_1), ... d(u,I_n)}{\partial I_i} $$ (since d is a vector, we obtain a bunch of diagonal matrices)

References UG_ASSERT, VecDot(), and VecScale().

◆ lin_def_viscous_forces1()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::lin_def_viscous_forces1 ( const LocalVector u,
std::vector< std::vector< MathVector< dim > > >  vvvLinDef[],
const size_t  nip 
)
protected

computes the linearized defect w.r.t to the volume forces $$ \frac{\partial d(u,I_1), ... d(u,I_n)}{\partial I_i} $$ (since d is a vector, we obtain a bunch of diagonal matrices)

References UG_ASSERT, VecDot(), and VecScale().

◆ lin_def_volume_forces()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::lin_def_volume_forces ( const LocalVector u,
std::vector< std::vector< MathVector< dim > > >  vvvLinDef[],
const size_t  nip 
)
protected

computes the linearized defect w.r.t to the volume forces $$ \frac{\partial d(u,I_1), ... d(u,I_n)}{\partial I_i} $$ (since d is a vector, we obtain a bunch of diagonal matrices)

References UG_ASSERT.

◆ num_fct()

◆ prep_elem()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::prep_elem ( const LocalVector u,
GridObject elem,
const ReferenceObjectID  roid,
const MathVector< dim vCornerCoords[] 
)
private

References UG_CATCH_THROW.

◆ prep_elem_loop()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::prep_elem_loop ( const ReferenceObjectID  roid,
const int  si 
)
private

References dim, UG_CATCH_THROW, and UG_THROW.

◆ prep_timestep_elem()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::prep_timestep_elem ( const number  time,
const LocalVector u,
GridObject elem,
const MathVector< dim vCornerCoords[] 
)
private

assemble methods

◆ prepare_setting()

◆ print_mat_constants()

template<typename TDomain >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::print_mat_constants ( const number  lambda,
const number  mu,
const number  E,
const number  v 
)
private

prints material constants

◆ register_all_fe_funcs()

template<typename TDomain >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::register_all_fe_funcs ( int  order,
int  quadOrder 
)
private

◆ register_fe_func()

template<typename TDomain >
template<typename TElem , typename TFEGeom >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::register_fe_func
private

◆ set_assemble_funcs()

◆ set_compress_factor()

template<typename TDomain >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::set_compress_factor ( number  val)

References make_sp().

◆ set_div_factor() [1/2]

template<typename TDomain >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::set_div_factor ( number  val)

This method sets a pressure term for rhs. A zero value is assumed as default. p * sum dx_i Phi_sh,i

References make_sp().

◆ set_div_factor() [2/2]

template<typename TDomain >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::set_div_factor ( SmartPtr< CplUserData< number, dim > >  user)

This method sets a pressure term for rhs. A zero value is assumed as default. p * sum dx_i Phi_sh,i

◆ set_mass_scale()

template<typename TDomain >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::set_mass_scale ( double  val)
inline

◆ set_material_law()

template<typename TDomain >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::set_material_law ( SmartPtr< IMaterialLaw< TDomain > >  spMatLaw)
inline

◆ set_output_writer()

◆ set_quad_order()

◆ set_viscous_forces()

template<typename TDomain >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::set_viscous_forces ( SmartPtr< CplUserData< MathVector< dim >, dim > >  user0,
SmartPtr< CplUserData< MathVector< dim >, dim > >  user1 
)

This methods sets rhs for "viscous stresses" v0^T (gradPhi +gradPhi^T) v1

◆ set_volume_forces() [1/6]

template<typename TDomain >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::set_volume_forces ( number  vel)

set volume forces for rhs: Phi * F = Phi * (grad p)

◆ set_volume_forces() [2/6]

void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< Domain2d >::set_volume_forces ( number  vel_x,
number  vel_y 
)

◆ set_volume_forces() [3/6]

template<typename TDomain >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::set_volume_forces ( number  vel_x,
number  vel_y 
)

set volume forces for rhs: Phi * F = Phi * (grad p)

References dim, and UG_THROW.

◆ set_volume_forces() [4/6]

void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< Domain3d >::set_volume_forces ( number  vel_x,
number  vel_y,
number  vel_z 
)

◆ set_volume_forces() [5/6]

template<typename TDomain >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::set_volume_forces ( number  vel_x,
number  vel_y,
number  vel_z 
)

set volume forces for rhs: Phi * F = Phi * (grad p)

References dim, and UG_THROW.

◆ set_volume_forces() [6/6]

template<typename TDomain >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::set_volume_forces ( SmartPtr< CplUserData< MathVector< dim >, dim > >  user)

set volume forces for rhs: Phi * F = Phi * (grad p)

◆ stress()

◆ update_geo_elem()

template<typename TDomain >
void ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::update_geo_elem ( TBaseElem elem,
DimFEGeometry< dim > &  geo 
)
private

updates the geometry for a given element

References UG_CATCH_THROW, and ug::DimFEGeometry< TWorldDim, TRefDim >::update().

Member Data Documentation

◆ dim

◆ m_bMatLawPassedToOutWriter

template<typename TDomain >
bool ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::m_bMatLawPassedToOutWriter
private

◆ m_bOutWriter

◆ m_bQuadOrderUserDef

◆ m_exDisplacement

◆ m_exDivergence

◆ m_exStressTensor

◆ m_imCompressIndex

template<typename TDomain >
DataImport<number, dim> ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::m_imCompressIndex
private

◆ m_imDivergence

template<typename TDomain >
DataImport<number, dim> ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::m_imDivergence
private

◆ m_imViscousForces

template<typename TDomain >
DataImport<MathVector<dim>, dim > ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::m_imViscousForces[2]
private

◆ m_imVolForce

◆ m_lfeID

◆ m_massScale

◆ m_order

◆ m_quadOrder

◆ m_spElastTensor

template<typename TDomain >
SmartPtr<MathTensor4<dim,dim,dim,dim> > ug::SmallStrainMechanics::SmallStrainMechanicsElemDisc< TDomain >::m_spElastTensor
private

elasticity tensor

◆ m_spMatLaw

◆ m_spOutWriter


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