oomph::AnisotropicHookean Class Reference

#include <AnisotropicHookean.h>

+ Inheritance diagram for oomph::AnisotropicHookean:

Public Member Functions

void setAnisotropy (std::array< double, 3 > anisotropy)
 
 AnisotropicHookean (double *nu_pt, double *e_pt)
 
void calculate_second_piola_kirchhoff_stress (const DenseMatrix< double > &g, const DenseMatrix< double > &G, DenseMatrix< double > &sigma)
 
- Public Member Functions inherited from oomph::GeneralisedHookean
 GeneralisedHookean (double *nu_pt, double *e_pt)
 
 GeneralisedHookean (double *nu_pt)
 
virtual ~GeneralisedHookean ()
 Virtual destructor. More...
 
void calculate_second_piola_kirchhoff_stress (const DenseMatrix< double > &g, const DenseMatrix< double > &G, DenseMatrix< double > &sigma)
 
void calculate_second_piola_kirchhoff_stress (const DenseMatrix< double > &g, const DenseMatrix< double > &G, DenseMatrix< double > &sigma_dev, DenseMatrix< double > &G_contra, double &Gdet)
 
void calculate_second_piola_kirchhoff_stress (const DenseMatrix< double > &g, const DenseMatrix< double > &G, DenseMatrix< double > &sigma_dev, DenseMatrix< double > &Gcontra, double &gen_dil, double &inv_kappa)
 
bool requires_incompressibility_constraint ()
 
- Public Member Functions inherited from oomph::ConstitutiveLaw
 ConstitutiveLaw ()
 Empty constructor. More...
 
virtual ~ConstitutiveLaw ()
 Empty virtual destructor. More...
 
virtual void calculate_d_second_piola_kirchhoff_stress_dG (const DenseMatrix< double > &g, const DenseMatrix< double > &G, const DenseMatrix< double > &sigma, RankFourTensor< double > &d_sigma_dG, const bool &symmetrize_tensor=true)
 
virtual void calculate_d_second_piola_kirchhoff_stress_dG (const DenseMatrix< double > &g, const DenseMatrix< double > &G, const DenseMatrix< double > &sigma, const double &detG, const double &interpolated_solid_p, RankFourTensor< double > &d_sigma_dG, DenseMatrix< double > &d_detG_dG, const bool &symmetrize_tensor=true)
 
virtual void calculate_d_second_piola_kirchhoff_stress_dG (const DenseMatrix< double > &g, const DenseMatrix< double > &G, const DenseMatrix< double > &sigma, const double &gen_dil, const double &inv_kappa, const double &interpolated_solid_p, RankFourTensor< double > &d_sigma_dG, DenseMatrix< double > &d_gen_dil_dG, const bool &symmetrize_tensor=true)
 

Private Attributes

std::array< double, 3 > anisotropy_ { 1.0, 1.0, 1.0 }
 

Additional Inherited Members

- Protected Member Functions inherited from oomph::ConstitutiveLaw
bool is_matrix_square (const DenseMatrix< double > &M)
 Test whether a matrix is square. More...
 
bool are_matrices_of_equal_dimensions (const DenseMatrix< double > &M1, const DenseMatrix< double > &M2)
 Test whether two matrices are of equal dimensions. More...
 
void error_checking_in_input (const DenseMatrix< double > &g, const DenseMatrix< double > &G, DenseMatrix< double > &sigma)
 
double calculate_contravariant (const DenseMatrix< double > &Gcov, DenseMatrix< double > &Gcontra)
 The function to calculate the contravariant tensor from a covariant one. More...
 
void calculate_d_contravariant_dG (const DenseMatrix< double > &Gcov, RankFourTensor< double > &dGcontra_dG, DenseMatrix< double > &d_detG_dG)
 

Detailed Description

Adds anisotropy to the general Hookean constitutive law

Constructor & Destructor Documentation

◆ AnisotropicHookean()

oomph::AnisotropicHookean::AnisotropicHookean ( double nu_pt,
double e_pt 
)
inline

The constructor takes the pointers to values of material parameters: Poisson's ratio and Young's modulus.

28  : GeneralisedHookean( nu_pt, e_pt ) {}
GeneralisedHookean(double *nu_pt, double *e_pt)
Definition: constitutive_laws.h:703

Member Function Documentation

◆ calculate_second_piola_kirchhoff_stress()

void oomph::AnisotropicHookean::calculate_second_piola_kirchhoff_stress ( const DenseMatrix< double > &  g,
const DenseMatrix< double > &  G,
DenseMatrix< double > &  sigma 
)
inlinevirtual

Calculate the contravariant 2nd Piola Kirchhoff stress tensor. Arguments are the covariant undeformed (stress-free) and deformed metric tensors, g and G, and the matrix in which to return the stress tensor.

Implements oomph::ConstitutiveLaw.

40  {
42 
43  // Make anisotropic
44  const unsigned dim = sigma.nrow();
45  for (unsigned i = 0; i < dim; i++)
46  {
47  for ( unsigned j = 0; j < dim; j++ )
48  {
49  sigma( i, j) *= anisotropy_[i];
50  }
51  }
52 
53  // Symmetrize
54  for (unsigned i = 0; i < dim; i++)
55  {
56  for (unsigned j = 0; j < i; j++)
57  {
58  sigma(i, j) = sigma(j, i);
59  }
60  }
61  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
JacobiRotation< float > G
Definition: Jacobi_makeGivens.cpp:2
std::array< double, 3 > anisotropy_
Definition: AnisotropicHookean.h:17
void calculate_second_piola_kirchhoff_stress(const DenseMatrix< double > &g, const DenseMatrix< double > &G, DenseMatrix< double > &sigma)
Definition: constitutive_laws.cc:682
int sigma
Definition: calibrate.py:179
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References anisotropy_, oomph::GeneralisedHookean::calculate_second_piola_kirchhoff_stress(), G, i, j, and calibrate::sigma.

◆ setAnisotropy()

void oomph::AnisotropicHookean::setAnisotropy ( std::array< double, 3 >  anisotropy)
inline
21  {
22  anisotropy_ = anisotropy;
23  }

References anisotropy_.

Referenced by SolidProblem< ELEMENT_TYPE >::addAnisotropy().

Member Data Documentation

◆ anisotropy_

std::array<double, 3> oomph::AnisotropicHookean::anisotropy_ { 1.0, 1.0, 1.0 }
private

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