GRINS-0.6.0
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
GRINS::Hyperelasticity< StrainEnergy > Class Template Reference

#include <hyperelasticity.h>

Inheritance diagram for GRINS::Hyperelasticity< StrainEnergy >:
Inheritance graph
[legend]
Collaboration diagram for GRINS::Hyperelasticity< StrainEnergy >:
Collaboration graph
[legend]

Public Member Functions

 Hyperelasticity (const GetPot &input)
 
virtual ~Hyperelasticity ()
 
void compute_stress (unsigned int dim, const libMesh::TensorValue< libMesh::Real > &g_contra, const libMesh::TensorValue< libMesh::Real > &g_cov, const libMesh::TensorValue< libMesh::Real > &G_contra, const libMesh::TensorValue< libMesh::Real > &G_cov, libMesh::TensorValue< libMesh::Real > &stress)
 
void compute_stress_and_elasticity (unsigned int dim, const libMesh::TensorValue< libMesh::Real > &g_contra, const libMesh::TensorValue< libMesh::Real > &g_cov, const libMesh::TensorValue< libMesh::Real > &G_contra, const libMesh::TensorValue< libMesh::Real > &G_cov, libMesh::TensorValue< libMesh::Real > &stress, ElasticityTensor &C)
 
libMesh::Real compute_33_stress (const libMesh::TensorValue< libMesh::Real > &g_contra, const libMesh::TensorValue< libMesh::Real > &g_cov, const libMesh::TensorValue< libMesh::Real > &G_contra, const libMesh::TensorValue< libMesh::Real > &G_cov)
 This is primarily a helper function for the plane stress cases. More...
 

Private Member Functions

void compute_stress_imp (unsigned int dim, const libMesh::TensorValue< libMesh::Real > &g_contra, const libMesh::TensorValue< libMesh::Real > &g_cov, const libMesh::TensorValue< libMesh::Real > &G_contra, const libMesh::TensorValue< libMesh::Real > &G_cov, libMesh::TensorValue< libMesh::Real > &stress)
 
void compute_stress_and_elasticity_imp (unsigned int dim, const libMesh::TensorValue< libMesh::Real > &g_contra, const libMesh::TensorValue< libMesh::Real > &g_cov, const libMesh::TensorValue< libMesh::Real > &G_contra, const libMesh::TensorValue< libMesh::Real > &G_cov, libMesh::TensorValue< libMesh::Real > &stress, ElasticityTensor &C)
 
libMesh::Real compute_33_stress_imp (const libMesh::TensorValue< libMesh::Real > &g_contra, const libMesh::TensorValue< libMesh::Real > &g_cov, const libMesh::TensorValue< libMesh::Real > &G_contra, const libMesh::TensorValue< libMesh::Real > &G_cov)
 

Private Attributes

StrainEnergy _W
 

Friends

class StressStrainLaw< Hyperelasticity< StrainEnergy > >
 

Detailed Description

template<typename StrainEnergy>
class GRINS::Hyperelasticity< StrainEnergy >

Definition at line 45 of file hyperelasticity.h.

Constructor & Destructor Documentation

template<typename StrainEnergy >
GRINS::Hyperelasticity< StrainEnergy >::Hyperelasticity ( const GetPot &  input)

Definition at line 35 of file hyperelasticity.C.

36  : _W(input)
37  {
38  return;
39  }
template<typename StrainEnergy >
GRINS::Hyperelasticity< StrainEnergy >::~Hyperelasticity ( )
virtual

Definition at line 42 of file hyperelasticity.C.

43  {
44  return;
45  }

Member Function Documentation

libMesh::Real GRINS::StressStrainLaw< Hyperelasticity< StrainEnergy > >::compute_33_stress ( const libMesh::TensorValue< libMesh::Real > &  g_contra,
const libMesh::TensorValue< libMesh::Real > &  g_cov,
const libMesh::TensorValue< libMesh::Real > &  G_contra,
const libMesh::TensorValue< libMesh::Real > &  G_cov 
)
inherited

This is primarily a helper function for the plane stress cases.

template<typename StrainEnergy >
libMesh::Real GRINS::Hyperelasticity< StrainEnergy >::compute_33_stress_imp ( const libMesh::TensorValue< libMesh::Real > &  g_contra,
const libMesh::TensorValue< libMesh::Real > &  g_cov,
const libMesh::TensorValue< libMesh::Real > &  G_contra,
const libMesh::TensorValue< libMesh::Real > &  G_cov 
)
private

Definition at line 111 of file hyperelasticity.C.

115  {
116  libmesh_not_implemented();
117  return 0.0;
118  }
void GRINS::StressStrainLaw< Hyperelasticity< StrainEnergy > >::compute_stress ( unsigned int  dim,
const libMesh::TensorValue< libMesh::Real > &  g_contra,
const libMesh::TensorValue< libMesh::Real > &  g_cov,
const libMesh::TensorValue< libMesh::Real > &  G_contra,
const libMesh::TensorValue< libMesh::Real > &  G_cov,
libMesh::TensorValue< libMesh::Real > &  stress 
)
inherited
void GRINS::StressStrainLaw< Hyperelasticity< StrainEnergy > >::compute_stress_and_elasticity ( unsigned int  dim,
const libMesh::TensorValue< libMesh::Real > &  g_contra,
const libMesh::TensorValue< libMesh::Real > &  g_cov,
const libMesh::TensorValue< libMesh::Real > &  G_contra,
const libMesh::TensorValue< libMesh::Real > &  G_cov,
libMesh::TensorValue< libMesh::Real > &  stress,
ElasticityTensor C 
)
inherited
template<typename StrainEnergy >
void GRINS::Hyperelasticity< StrainEnergy >::compute_stress_and_elasticity_imp ( unsigned int  dim,
const libMesh::TensorValue< libMesh::Real > &  g_contra,
const libMesh::TensorValue< libMesh::Real > &  g_cov,
const libMesh::TensorValue< libMesh::Real > &  G_contra,
const libMesh::TensorValue< libMesh::Real > &  G_cov,
libMesh::TensorValue< libMesh::Real > &  stress,
ElasticityTensor C 
)
private

Definition at line 98 of file hyperelasticity.C.

105  {
106  libmesh_not_implemented();
107  return;
108  }
template<typename StrainEnergy >
void GRINS::Hyperelasticity< StrainEnergy >::compute_stress_imp ( unsigned int  dim,
const libMesh::TensorValue< libMesh::Real > &  g_contra,
const libMesh::TensorValue< libMesh::Real > &  g_cov,
const libMesh::TensorValue< libMesh::Real > &  G_contra,
const libMesh::TensorValue< libMesh::Real > &  G_cov,
libMesh::TensorValue< libMesh::Real > &  stress 
)
private

Definition at line 48 of file hyperelasticity.C.

54  {
55  stress.zero();
56 
57  // Compute strain invariants
58  libMesh::Real I3 = (g_contra*G_cov).det();
59 
60  libMesh::Real I1 = 0.0;
61  libMesh::Real I2 = 0.0;
62  for( unsigned int i = 0; i < dim; i++ )
63  {
64  for( unsigned int j = 0; j < dim; j++ )
65  {
66  I1 += g_contra(i,j)*G_cov(i,j);
67  I2 += G_contra(i,j)*g_cov(i,j);
68  }
69  }
70 
71  I2 *= I3;
72 
73  libMesh::Real dWdI1 = _W.dI1(I1,I2,I3);
74  libMesh::Real dWdI2 = _W.dI2(I1,I2,I3);
75  libMesh::Real dWdI3 = _W.dI3(I1,I2,I3);
76 
77  // Now compute stress
78  for( unsigned int i = 0; i < dim; i++ )
79  {
80  for( unsigned int j = 0; j < dim; j++ )
81  {
82  for( unsigned int k = 0; k < dim; k++ )
83  {
84  for( unsigned int l = 0; l < dim; l++ )
85  {
86  stress(i,j) += 2.0*dWdI1*g_contra(i,j)
87  + 2.0*dWdI2*(I1*g_contra(i,j) - g_contra(i,k)*g_contra(j,l)*G_cov(k,l))
88  + 2.0*dWdI3*G_contra(i,j);
89  }
90  }
91  }
92  }
93 
94  return;
95  }

Friends And Related Function Documentation

template<typename StrainEnergy >
friend class StressStrainLaw< Hyperelasticity< StrainEnergy > >
friend

Definition at line 52 of file hyperelasticity.h.

Member Data Documentation

template<typename StrainEnergy >
StrainEnergy GRINS::Hyperelasticity< StrainEnergy >::_W
private

Definition at line 76 of file hyperelasticity.h.


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

Generated on Mon Jun 22 2015 21:32:23 for GRINS-0.6.0 by  doxygen 1.8.9.1