QuOc

 

Public Member Functions | Protected Types | Protected Attributes

qc::HyperelasticDeformGradient< ConfiguratorType, HyperelasticEnergyDensityType > Class Template Reference

This class computes via "apply(...)" or "applyAdd(...)" a hyperelastic energy gradient with respect to the displacement, i.e. $ (<\frac{\partial \int_\Omega W(I_1,I_2,I_3,x) dx}{\partial \phi},\psi_i>)_i $, where the $ \psi_i $ are the FE basis functions, the hyperelastic invariants are given by $ I_1=||\nabla\phi\nabla\Phi||_F^2 $, $ I_2=||cof(\nabla\phi\nabla\Phi)||_F^2 $, $ I_3=det(\nabla\phi\nabla\Phi)$ and the function $ W(I_1,I_2,I_3,x) $ is passed to the constructor (e.g. HyerelasticEnergyDensityDefault). $ \Phi $ is some prestressing deformation. In its first argument, "apply" and "applyAdd" expect a Multivector which represents the displacements $ d_i $ in the different Cartesian directions; the deformation $ \phi $ is then automatically computed via $ \phi=d+$ identity. More...

#include <hyperelastic.h>

Inheritance diagram for qc::HyperelasticDeformGradient< ConfiguratorType, HyperelasticEnergyDensityType >:
qc::FENonlinDeformVectorDiffOpInterface< ConfiguratorType, ConfiguratorType::Dim, ConfiguratorType::Dim, HyperelasticDeformGradient< ConfiguratorType, HyperelasticEnergyDensityType > > aol::Op< aol::MultiVector< ConfiguratorType::RealType > >

List of all members.

Public Member Functions

 HyperelasticDeformGradient (const typename ConfiguratorType::InitType &Grid, const HyperelasticEnergyDensityType &HyperelasticEnergyDensity, const aol::MultiVector< RealType > &Displacement)
void getNonlinearity (const aol::DiscreteVectorFunctionDefault< ConfiguratorType, ConfiguratorType::Dim > &DiscFuncs, const typename ConfiguratorType::ElementType &El, int QuadPoint, const typename ConfiguratorType::DomVecType &, const typename ConfiguratorType::ElementType &TransformedEl, const typename ConfiguratorType::DomVecType &TransformedLocalCoord, aol::Mat< ConfiguratorType::Dim, ConfiguratorType::Dim, RealType > &NL) const

Protected Types

typedef ConfiguratorType::RealType RealType

Protected Attributes

const
HyperelasticEnergyDensityType & 
_hyperelasticEnergyDensity
const
aol::DiscreteVectorFunctionDefault
< ConfiguratorType,
ConfiguratorType::Dim > 
_displacement

Detailed Description

template<typename ConfiguratorType, typename HyperelasticEnergyDensityType>
class qc::HyperelasticDeformGradient< ConfiguratorType, HyperelasticEnergyDensityType >

This class computes via "apply(...)" or "applyAdd(...)" a hyperelastic energy gradient with respect to the displacement, i.e. $ (<\frac{\partial \int_\Omega W(I_1,I_2,I_3,x) dx}{\partial \phi},\psi_i>)_i $, where the $ \psi_i $ are the FE basis functions, the hyperelastic invariants are given by $ I_1=||\nabla\phi\nabla\Phi||_F^2 $, $ I_2=||cof(\nabla\phi\nabla\Phi)||_F^2 $, $ I_3=det(\nabla\phi\nabla\Phi)$ and the function $ W(I_1,I_2,I_3,x) $ is passed to the constructor (e.g. HyerelasticEnergyDensityDefault). $ \Phi $ is some prestressing deformation. In its first argument, "apply" and "applyAdd" expect a Multivector which represents the displacements $ d_i $ in the different Cartesian directions; the deformation $ \phi $ is then automatically computed via $ \phi=d+$ identity.

Author:
Wirth

Definition at line 595 of file hyperelastic.h.


Member Typedef Documentation

template<typename ConfiguratorType , typename HyperelasticEnergyDensityType >
typedef ConfiguratorType::RealType qc::HyperelasticDeformGradient< ConfiguratorType, HyperelasticEnergyDensityType >::RealType [protected]

Constructor & Destructor Documentation

template<typename ConfiguratorType , typename HyperelasticEnergyDensityType >
qc::HyperelasticDeformGradient< ConfiguratorType, HyperelasticEnergyDensityType >::HyperelasticDeformGradient ( const typename ConfiguratorType::InitType &  Grid,
const HyperelasticEnergyDensityType &  HyperelasticEnergyDensity,
const aol::MultiVector< RealType > &  Displacement 
) [inline]

Definition at line 605 of file hyperelastic.h.

                                                                              :
    FENonlinDeformVectorDiffOpInterface<ConfiguratorType, ConfiguratorType::Dim, ConfiguratorType::Dim, HyperelasticDeformGradient<ConfiguratorType,HyperelasticEnergyDensityType> > ( Grid, Displacement ),
    _hyperelasticEnergyDensity( HyperelasticEnergyDensity ),
    _displacement( Grid, Displacement ) {}


Member Function Documentation

template<typename ConfiguratorType , typename HyperelasticEnergyDensityType >
void qc::HyperelasticDeformGradient< ConfiguratorType, HyperelasticEnergyDensityType >::getNonlinearity ( const aol::DiscreteVectorFunctionDefault< ConfiguratorType, ConfiguratorType::Dim > &  DiscFuncs,
const typename ConfiguratorType::ElementType &  El,
int  QuadPoint,
const typename ConfiguratorType::DomVecType &  ,
const typename ConfiguratorType::ElementType &  TransformedEl,
const typename ConfiguratorType::DomVecType &  TransformedLocalCoord,
aol::Mat< ConfiguratorType::Dim, ConfiguratorType::Dim, RealType > &  NL 
) const [inline]

Definition at line 612 of file hyperelastic.h.

References qc::HyperelasticDeformGradient< ConfiguratorType, HyperelasticEnergyDensityType >::_displacement, qc::HyperelasticDeformGradient< ConfiguratorType, HyperelasticEnergyDensityType >::_hyperelasticEnergyDensity, aol::DiscreteVectorFunction< ConfiguratorType, DiscFuncType, DimRange >::evaluateGradient(), and aol::DiscreteVectorFunction< ConfiguratorType, DiscFuncType, DimRange >::evaluateGradientAtQuadPoint().

                                                                                                {
    // compute the deformation gradient $\nabla\Phi$
    typename ConfiguratorType::MatType dPhi;
    _displacement.evaluateGradientAtQuadPoint( El, QuadPoint, dPhi );
    for ( int i = 0; i < ConfiguratorType::Dim; i++ )
      dPhi[i][i] += 1.;

    // compute the deformation gradient $\nabla\phi$
    typename ConfiguratorType::MatType dphi;
    DiscFuncs.evaluateGradient( TransformedEl, TransformedLocalCoord, dphi );
    for ( int i = 0; i < ConfiguratorType::Dim; i++ )
      dphi[i][i] += 1.;

    dphi *= dPhi;
    HyperelasticGradient<ConfiguratorType,HyperelasticEnergyDensityType>::firstPiolaKirchhoffStress( dphi, _hyperelasticEnergyDensity, El, QuadPoint, NL );
  }


Member Data Documentation

template<typename ConfiguratorType , typename HyperelasticEnergyDensityType >
const aol::DiscreteVectorFunctionDefault<ConfiguratorType,ConfiguratorType::Dim> qc::HyperelasticDeformGradient< ConfiguratorType, HyperelasticEnergyDensityType >::_displacement [protected]
template<typename ConfiguratorType , typename HyperelasticEnergyDensityType >
const HyperelasticEnergyDensityType& qc::HyperelasticDeformGradient< ConfiguratorType, HyperelasticEnergyDensityType >::_hyperelasticEnergyDensity [protected]

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

Generated on Fri Sep 9 2011 21:09:49 for QuocMesh by doxygen 1.7.1