chrono::fea::ChBeamSectionTimoshenkoAdvancedGeneric Class Reference

Description

Base class for all constitutive models of sections of Timoshenko beams.

To be used with ChElementBeamTaperedTimoshenko.

#include <ChBeamSectionTaperedTimoshenko.h>

Inheritance diagram for chrono::fea::ChBeamSectionTimoshenkoAdvancedGeneric:
Collaboration diagram for chrono::fea::ChBeamSectionTimoshenkoAdvancedGeneric:

Public Member Functions

 ChBeamSectionTimoshenkoAdvancedGeneric (const double mAx, const double mTxx, const double mByy, const double mBzz, const double mGAyy, const double mGAzz, const DampingCoefficients mdamping_coeff, const double malpha, const double mCy, const double mCz, const double mSy, const double mSz, const double mmu, const double mJyy, const double mJzz, const double mJyz=0, const double mQy=0, const double mQz=0, const double mMy=0, const double mMz=0)
 
virtual void SetShearRigidityY (const double mv)
 Sets the shear rigidity, for shearing along Y axis, at shear center, usually Ayy*G for uniform elasticity, but for nonuniform elasticity here you can put a value ad-hoc from a preprocessor.
 
virtual void SetShearRigidityZ (const double mv)
 Sets the shear rigidity, for shearing along Z axis, at shear center, usually Azz*G for uniform elasticity, but for nonuniform elasticity here you can put a value ad-hoc from a preprocessor.
 
virtual double GetShearRigidityY () const
 Gets the shear rigidity, for shearing along Y axis at shear center, usually Ayy*G, but might be ad hoc.
 
virtual double GetShearRigidityZ () const
 Gets the shear rigidity, for shearing along Z axis at shear center, usually Azz*G, but might be ad hoc.
 
virtual void SetRayleighDamping (DampingCoefficients mdamping_coeff)
 Sets the damping parameters of section. More...
 
virtual DampingCoefficients GetRayleighDamping () const
 Gets the damping parameters of section.
 
virtual void SetInertiasPerUnitLength (const double mJyy, const double mJzz, const double mJyz, const double mQy, const double mQz)
 Set the Jyy Jzz Jyz components of the sectional inertia per unit length, in centerline reference, measured along centerline main axes. More...
 
virtual void SetMainInertiasInMassReference (const double Jmyy, const double Jmzz, const double Jmyz, const double mass_phi, const double Qmy, const double Qmz)
 Set inertia moments, per unit length, as assumed computed in the Ym Zm "mass reference" frame, ie. More...
 
virtual void GetMainInertiasInMassReference (double &Jmyy, double &Jmzz, double &Jmyz, double &mass_phi, double &Qmy, double &Qmz)
 Get inertia moments, per unit length, as assumed computed in the Ym Zm "mass reference" frame, and the rotation phi of that frame, ie. More...
 
virtual double GetInertiaJxxPerUnitLengthInMassReference () const
 Get inertia moment per unit length Jxx_massref, as assumed computed in the "mass reference" frame, ie. More...
 
virtual double GetInertiaJyyPerUnitLength () const
 Get the Jyy component of the sectional inertia per unit length, in centerline reference, measured along centerline main axes.
 
virtual double GetInertiaJzzPerUnitLength () const
 Get the Jzz component of the sectional inertia per unit length, in centerline reference, measured along centerline main axes.
 
virtual double GetInertiaJyzPerUnitLength () const
 Get the Jyz component of the sectional inertia per unit length, in centerline reference, measured along centerline main axes.
 
virtual double GetInertiaQyPerUnitLength () const
 Get the Qy component of mass moment of area per unit length, in centerline reference, measured along centerline main axes.
 
virtual double GetInertiaQzPerUnitLength () const
 Get the Qz component of mass moment of area per unit length, in centerline reference, measured along centerline main axes.
 
virtual void SetArtificialFactorForShearDamping (double mv)
 Set the artificial correction factor for the structural damping model in the shear deformation, as default it's 1.0 and don't have any correction effect. More...
 
virtual double GetArtificialFactorForShearDamping () const
 Get the artificial correction factor for the structural damping model in the shear deformation.
 
- Public Member Functions inherited from chrono::fea::ChBeamSectionRayleighAdvancedGeneric
 ChBeamSectionRayleighAdvancedGeneric (const double mAx, const double mTxx, const double mByy, const double mBzz, const double malpha, const double mCy, const double mCz, const double mSy, const double mSz, const double mmu, const double mJyy, const double mJzz, const double mJyz, const double mMy=0, const double mMz=0)
 
virtual void SetInertiasPerUnitLength (const double mJyy, const double mJzz, const double mJyz)
 Set the Jyy Jzz Jyz components of the sectional inertia per unit length, in centerline reference, measured along centerline main axes. More...
 
virtual void SetMainInertiasInMassReference (double Jmyy, double Jmzz, double phi)
 Set inertia moments, per unit length, as assumed computed in the Ym Zm "mass reference" frame, ie. More...
 
virtual void GetMainInertiasInMassReference (double &Jmyy, double &Jmzz, double &phi)
 Get inertia moments, per unit length, as assumed computed in the Ym Zm "mass reference" frame, and the rotation phi of that frame, ie. More...
 
virtual void ComputeInertiaMatrix (ChMatrix66d &M) override
 Compute the 6x6 sectional inertia matrix, as in {x_momentum,w_momentum}=[Mm]{xvel,wvel}.
 
virtual void ComputeInertiaDampingMatrix (ChMatrix66d &Ri, const ChVector3d &mW) override
 Compute the 6x6 sectional inertia damping matrix [Ri] (gyroscopic matrix damping) More...
 
virtual void ComputeInertiaStiffnessMatrix (ChMatrix66d &Ki, const ChVector3d &mWvel, const ChVector3d &mWacc, const ChVector3d &mXacc) override
 Compute the 6x6 sectional inertia stiffness matrix [Ki^]. More...
 
virtual void ComputeQuadraticTerms (ChVector3d &mF, ChVector3d &mT, const ChVector3d &mW) override
 Compute the centrifugal term and gyroscopic term.
 
- Public Member Functions inherited from chrono::fea::ChBeamSectionEulerAdvancedGeneric
 ChBeamSectionEulerAdvancedGeneric (const double mAx, const double mTxx, const double mByy, const double mBzz, const double malpha, const double mCy, const double mCz, const double mSy, const double mSz, const double mmu, const double mJxx, const double mMy=0, const double mMz=0)
 
virtual void SetAxialRigidity (const double mv)
 Sets the axial rigidity, usually A*E for uniform elasticity, but for nonuniform elasticity here you can put a value ad-hoc from a preprocessor.
 
virtual void SetTorsionRigidityX (const double mv)
 Sets the torsion rigidity, for torsion about X axis, at elastic center, usually J*G for uniform elasticity, but for nonuniform elasticity here you can put a value ad-hoc from a preprocessor.
 
virtual void SetBendingRigidityY (const double mv)
 Sets the bending rigidity, for bending about Y axis, at elastic center, usually Iyy*E for uniform elasticity, but for nonuniform elasticity here you can put a value ad-hoc from a preprocessor.
 
virtual void SetBendingRigidityZ (const double mv)
 Sets the bending rigidity, for bending about Z axis, at elastic center, usually Izz*E for uniform elasticity, but for nonuniform elasticity here you can put a value ad-hoc from a preprocessor.
 
virtual void SetSectionRotation (const double mv)
 Set the rotation in [rad], abour elastic center, of the Y Z axes for which the YbendingRigidity and ZbendingRigidity values are defined.
 
virtual void SetCentroidY (const double mv)
 Sets the Y position of the elastic center respect to centerline.
 
virtual void SetCentroidZ (const double mv)
 Sets the Z position of the elastic center respect to centerline.
 
virtual void SetShearCenterY (const double mv)
 Sets the Y position of the shear center respect to centerline.
 
virtual void SetShearCenterZ (const double mv)
 Sets the Z position of the shear center respect to centerline.
 
virtual void SetMassPerUnitLength (const double mv)
 Set mass per unit length, ex.SI units [kg/m] For uniform density it would be A*density, but for nonuniform density here you can put a value ad-hoc from a preprocessor.
 
virtual void SetInertiaJxxPerUnitLength (const double mv)
 Set the Jxx component of the inertia per unit length (polar inertia), computed at centerline. More...
 
virtual void SetInertiaJxxPerUnitLengthInMassReference (const double mv)
 Set inertia moment per unit length Jxx_massref, as assumed computed in the "mass reference" frame, ie. More...
 
virtual double GetInertiaJxxPerUnitLengthInMassReference ()
 Get inertia moment per unit length Jxx_massref, as assumed computed in the "mass reference" frame, ie. More...
 
void SetCenterOfMass (double my, double mz)
 "mass reference": set the displacement of the center of mass respect to the section centerline reference.
 
double GetCenterOfMassY ()
 
double GetCenterOfMassZ ()
 
virtual double GetAxialRigidity () const override
 Gets the axial rigidity, usually A*E.
 
virtual double GetTorsionRigidityX () const override
 Gets the torsion rigidity, for torsion about X axis at elastic center, usually J*G.
 
virtual double GetBendingRigidityY () const override
 Gets the bending rigidity, for bending about Y axis at elastic center, usually Iyy*E.
 
virtual double GetBendingRigidityZ () const override
 Gets the bending rigidity, for bending about Z axis at elastic center, usually Izz*E.
 
virtual double GetSectionRotation () const override
 Set the rotation of the Y Z section axes for which the YbendingRigidity and ZbendingRigidity are defined.
 
virtual double GetCentroidY () const override
 Gets the Y position of the elastic center respect to centerline.
 
virtual double GetCentroidZ () const override
 Gets the Z position of the elastic center respect to centerline.
 
virtual double GetShearCenterY () const override
 Gets the Y position of the shear center respect to centerline.
 
virtual double GetShearCenterZ () const override
 Gets the Z position of the shear center respect to centerline.
 
virtual double GetMassPerUnitLength () const override
 Get mass per unit length, ex.SI units [kg/m].
 
virtual double GetInertiaJxxPerUnitLength () const override
 Get the Jxx component of the inertia per unit length (polar inertia), at centerline.
 
- Public Member Functions inherited from chrono::fea::ChBeamSectionEuler
virtual void ComputeInertialForce (ChVector3d &mFi, ChVector3d &mTi, const ChVector3d &mWvel, const ChVector3d &mWacc, const ChVector3d &mXacc)
 Compute the total inertial forces (per unit length). More...
 
void SetArtificialJyyJzzFactor (double mf)
 The Euler beam model has no rotational inertia per each section, assuming mass is concentrated on the centerline. More...
 
double GetArtificialJyyJzzFactor ()
 
virtual void SetRayleighDampingAlpha (double malpha)
 Set the "alpha" Rayleigh damping ratio, the mass-proportional structural damping in: R = alpha*M + beta*K.
 
double GetRayleighDampingAlpha ()
 
virtual void SetRayleighDampingBeta (double mbeta)
 Set the "beta" Rayleigh damping ratio, the stiffness-proportional structural damping in: R = alpha*M + beta*K.
 
double GetRayleighDampingBeta ()
 
virtual void SetRayleighDamping (double mbeta, double malpha=0)
 Set both beta and alpha coefficients in Rayleigh damping model: R = alpha*M + beta*K. More...
 
- Public Member Functions inherited from chrono::fea::ChBeamSection
void SetDrawShape (std::shared_ptr< ChBeamSectionShape > mshape)
 Set the graphical representation for this section. More...
 
std::shared_ptr< ChBeamSectionShapeGetDrawShape () const
 Get the drawing shape of this section (i.e.a 2D profile used for drawing 3D tesselation and visualization) By default a thin square section, use SetDrawShape() to change it.
 
void SetDrawThickness (double thickness_y, double thickness_z)
 Shortcut: adds a ChBeamSectionShapeRectangular for visualization as a centered rectangular beam, and sets its width/height. More...
 
void SetDrawCircularRadius (double draw_rad)
 Shortcut: adds a ChBeamSectionShapeCircular for visualization as a centered circular beam, and sets its radius. More...
 
void SetCircular (bool ic)
 OBSOLETE only for backward compability.
 

Protected Attributes

double GAyy
 shear regidity along yy, evaluated in the elastic center and elastic principal axis. GAyy=ky*G*A
 
double GAzz
 shear regidity along zz, evaluated in the elastic center and elastic principal axis. GAzz=kz*G*A
 
double Qy
 Mass moment of area, defined as : \( Q_{y} = \int_\Omega \rho z d\Omega \), \( Q_{z} = \int_\Omega \rho y d\Omega \),. More...
 
double Qz
 mass moment of area along zz, in centerline reference, measured along centerline main axes
 
DampingCoefficients rdamping_coeff
 Damping parameters. More...
 
double artificial_factor_for_shear_damping = 1.0
 An artificial correction factor for the structural damping model in the shear deformation, as default it's 1.0 and don't have any correction effect. More...
 
- Protected Attributes inherited from chrono::fea::ChBeamSectionRayleighAdvancedGeneric
double Jzz
 
double Jyy
 
double Jyz
 
- Protected Attributes inherited from chrono::fea::ChBeamSectionEulerAdvancedGeneric
double Ax
 
double Txx
 
double Byy
 
double Bzz
 
double alpha
 
double Cy
 
double Cz
 
double Sy
 
double Sz
 
double mu
 
double Jxx
 
double My
 
double Mz
 
- Protected Attributes inherited from chrono::fea::ChBeamSectionEuler
double rdamping_beta
 
double rdamping_alpha
 
double JzzJyy_factor
 

Additional Inherited Members

- Public Attributes inherited from chrono::fea::ChBeamSectionEuler
bool compute_inertia_damping_matrix = true
 Flag that turns on/off the computation of the [Ri] 'gyroscopic' inertial damping matrix. More...
 
bool compute_inertia_stiffness_matrix = true
 Flag that turns on/off the computation of the [Ki] inertial stiffness matrix. More...
 
bool compute_Ri_Ki_by_num_diff = false
 Flag for computing the Ri and Ki matrices via numerical differentiation even if an analytical expression is provided. More...
 

Constructor & Destructor Documentation

◆ ChBeamSectionTimoshenkoAdvancedGeneric()

chrono::fea::ChBeamSectionTimoshenkoAdvancedGeneric::ChBeamSectionTimoshenkoAdvancedGeneric ( const double  mAx,
const double  mTxx,
const double  mByy,
const double  mBzz,
const double  mGAyy,
const double  mGAzz,
const DampingCoefficients  mdamping_coeff,
const double  malpha,
const double  mCy,
const double  mCz,
const double  mSy,
const double  mSz,
const double  mmu,
const double  mJyy,
const double  mJzz,
const double  mJyz = 0,
const double  mQy = 0,
const double  mQz = 0,
const double  mMy = 0,
const double  mMz = 0 
)
inline
Parameters
mAxaxial rigidity
mTxxtorsion rigidity
mByybending regidity about yy
mBzzbending rigidity about zz
mGAyyshear rigidity along yy
mGAzzshear rigidity along zz
mdamping_coeffdamping coefficients
malphasection rotation about elastic center [rad]
mCyelastic center y displacement respect to centerline
mCzelastic center z displacement respect to centerline
mSyshear center y displacement respect to centerline
mSzshear center z displacement respect to centerline
mmumass per unit length
mJyyinertia Jyy per unit lenght, in centerline reference, measured along centerline main axes
mJzzinertia Jzz per unit lenght, in centerline reference, measured along centerline main axes
mJyzinertia Jyz per unit lenght, in centerline reference, measured along centerline main axes const
mQyinertia Qy per unit lenght, in centerline reference, measured along centerline main axes
mQzinertia Qz per unit lenght, in centerline reference, measured along centerline main axes
mMymass center y displacement respect to centerline
mMzmass center z displacement respect to centerline

Member Function Documentation

◆ GetInertiaJxxPerUnitLengthInMassReference()

virtual double chrono::fea::ChBeamSectionTimoshenkoAdvancedGeneric::GetInertiaJxxPerUnitLengthInMassReference ( ) const
inlinevirtual

Get inertia moment per unit length Jxx_massref, as assumed computed in the "mass reference" frame, ie.

centered at the center of mass NOTE: To be safe, it is recommended to use GetMainInertiasInMassReference() instead, because Qmy,Qmz are ignored, although they are exactly zero in theory.

◆ GetMainInertiasInMassReference()

void chrono::fea::ChBeamSectionTimoshenkoAdvancedGeneric::GetMainInertiasInMassReference ( double &  Jmyy,
double &  Jmzz,
double &  Jmyz,
double &  mass_phi,
double &  Qmy,
double &  Qmz 
)
virtual

Get inertia moments, per unit length, as assumed computed in the Ym Zm "mass reference" frame, and the rotation phi of that frame, ie.

inertias centered at the center of mass and rotated by phi angle to match the main axes of inertia: \( Jm_{yy} = \int_\Omega \rho z_{m}^2 d\Omega \), \( Jm_{zz} = \int_\Omega \rho y_{m}^2 d\Omega \). Assuming the center of mass is already set.

◆ SetArtificialFactorForShearDamping()

virtual void chrono::fea::ChBeamSectionTimoshenkoAdvancedGeneric::SetArtificialFactorForShearDamping ( double  mv)
inlinevirtual

Set the artificial correction factor for the structural damping model in the shear deformation, as default it's 1.0 and don't have any correction effect.

But when the numerical divergence occured, you could try to set this value be larger than 1.0 to improve the numerical stability in long-time simulation.

◆ SetInertiasPerUnitLength()

void chrono::fea::ChBeamSectionTimoshenkoAdvancedGeneric::SetInertiasPerUnitLength ( const double  mJyy,
const double  mJzz,
const double  mJyz,
const double  mQy,
const double  mQz 
)
virtual

Set the Jyy Jzz Jyz components of the sectional inertia per unit length, in centerline reference, measured along centerline main axes.

These are defined as: \( J_{yy} = \int_\Omega \rho z^2 d\Omega \), also Jyy = Mm(4,4) \( J_{zz} = \int_\Omega \rho y^2 d\Omega \), also Jzz = Mm(5,5) \( J_{yz} = \int_\Omega \rho y z d\Omega \), also Jyz = -Mm(4,5) = -Mm(5,4) It is not needed to enter also Jxx because Jxx=(Jzz+Jyy) by the polar theorem.

◆ SetMainInertiasInMassReference()

void chrono::fea::ChBeamSectionTimoshenkoAdvancedGeneric::SetMainInertiasInMassReference ( const double  Jmyy,
const double  Jmzz,
const double  Jmyz,
const double  mass_phi,
const double  Qmy,
const double  Qmz 
)
virtual

Set inertia moments, per unit length, as assumed computed in the Ym Zm "mass reference" frame, ie.

centered at the center of mass and rotated by phi angle to match the main axes of inertia: \( Jm_{yy} = \int_\Omega \rho z_{m}^2 d\Omega \), \( Jm_{zz} = \int_\Omega \rho y_{m}^2 d\Omega \). Assuming the center of mass is already set.

◆ SetRayleighDamping()

virtual void chrono::fea::ChBeamSectionTimoshenkoAdvancedGeneric::SetRayleighDamping ( DampingCoefficients  mdamping_coeff)
inlinevirtual

Sets the damping parameters of section.

You have a chance to assign different coefficients for axial, bending and torsion directions. This would be helpful for those anisotropic material, such as wind turbine blade.

Member Data Documentation

◆ artificial_factor_for_shear_damping

double chrono::fea::ChBeamSectionTimoshenkoAdvancedGeneric::artificial_factor_for_shear_damping = 1.0
protected

An artificial correction factor for the structural damping model in the shear deformation, as default it's 1.0 and don't have any correction effect.

But when the numerical divergence occured, you could try to set this value be larger than 1.0 to improve the numerical stability in long-time simulation.

◆ Qy

double chrono::fea::ChBeamSectionTimoshenkoAdvancedGeneric::Qy
protected

Mass moment of area, defined as : \( Q_{y} = \int_\Omega \rho z d\Omega \), \( Q_{z} = \int_\Omega \rho y d\Omega \),.

mass moment of area along yy, in centerline reference, measured along centerline main axes

◆ rdamping_coeff

DampingCoefficients chrono::fea::ChBeamSectionTimoshenkoAdvancedGeneric::rdamping_coeff
protected

Damping parameters.

You could assign different Rayleigh damping coefficients for different dimensions: axial, bending, torsion.


The documentation for this class was generated from the following files:
  • /builds/uwsbel/chrono/src/chrono/fea/ChBeamSectionTaperedTimoshenko.h
  • /builds/uwsbel/chrono/src/chrono/fea/ChBeamSectionTaperedTimoshenko.cpp