8#ifndef __SMALLSTRAINTRANVERSLYISOTROPIC_HPP__ 
    9#define __SMALLSTRAINTRANVERSLYISOTROPIC_HPP__ 
   12  #error "MoFEM need to be compiled with ADOL-C" 
   18template<
typename TYPE>
 
   33    for(
int dd = 0;dd<3;dd++) {
 
 
  222  ublas::matrix<TYPE> 
dR;
 
  228    dR.resize(6,6,
false);
 
 
  252    boost::shared_ptr<const NumeredEntFiniteElement> fe_ptr
 
  267    this->
P.resize(3,3,
false);
 
  268    this->
P(0,0) = voigtStress[0];
 
  269    this->
P(1,1) = voigtStress[1];
 
  270    this->
P(2,2) = voigtStress[2];
 
  271    this->
P(0,1) = voigtStress[3];
 
  272    this->
P(1,2) = voigtStress[4];
 
  273    this->
P(0,2) = voigtStress[5];
 
  274    this->
P(1,0) = this->
P(0,1);
 
  275    this->
P(2,1) = this->
P(1,2);
 
  276    this->
P(2,0) = this->
P(0,2);
 
 
  286  boost::shared_ptr<const NumeredEntFiniteElement> fe_ptr
 
 
  318      double nrm2_phi = sqrt(pow(
phi(0,0),2)+pow(
phi(0,1),2)+pow(
phi(0,2),2));
 
  319      for(
int ii = 0;ii<3;ii++) {
 
  324      const double zVec[3]={ 0.0,0.0,1.0 };
 
  329      const double eps = 1e-12;
 
  330      if(nrm2_ax_vector<
eps) {
 
  338    } 
catch (
const std::exception& ex) {
 
  339      std::ostringstream ss;
 
  340      ss << 
"throw in method: " << ex.what() << std::endl;
 
  341      SETERRQ(PETSC_COMM_SELF,1,ss.str().c_str());
 
 
 
  366    } 
catch (
const std::exception& ex) {
 
  367      std::ostringstream ss;
 
  368      ss << 
"throw in method: " << ex.what() << std::endl;
 
  369      SETERRQ(PETSC_COMM_SELF,1,ss.str().c_str());
 
 
  375    std::map<std::string,std::vector<VectorDouble > > &field_map,
 
  376    std::map<std::string,std::vector<MatrixDouble > > &grad_map
 
  379    int nb_gauss_pts = grad_map[
"POTENTIAL_FIELD"].size();
 
  381    for(
int gg = 0;gg<nb_gauss_pts;gg++) {
 
  383      for(
int ii = 0;ii<3;ii++) {
 
  385        ((grad_map[
"POTENTIAL_FIELD"])[gg])(0,ii);
 
 
 
  400    int &nb_active_variables
 
  413      nb_active_variables += 4;
 
  415    } 
catch (
const std::exception& ex) {
 
  416      std::ostringstream ss;
 
  417      ss << 
"throw in method: " << ex.what() << std::endl;
 
  418      SETERRQ(PETSC_COMM_SELF,1,ss.str().c_str());
 
 
  425    VectorDouble &active_variables) {
 
  437    } 
catch (
const std::exception& ex) {
 
  438      std::ostringstream ss;
 
  439      ss << 
"throw in method: " << ex.what() << std::endl;
 
  440      SETERRQ(PETSC_COMM_SELF,1,ss.str().c_str());
 
 
 
static PetscErrorCode ierr
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERRG(n)
Check error code of MoFEM/MOAB/PETSc function.
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
static constexpr double delta
data for calculation heat conductivity and heat capacity elements
std::map< std::string, std::vector< MatrixDouble > > gradAtGaussPts
Implementation of elastic (non-linear) St. Kirchhoff equation.
FunctionsToCalculatePiolaKirchhoffI()
int gG
Gauss point number.
CommonData * commonDataPtr
MatrixBoundedArray< TYPE, 9 > F
MatrixBoundedArray< TYPE, 9 > P
structure grouping operators and data used for calculation of nonlinear elastic element
SmallStrainTranverslyIsotropicADouble()
virtual MoFEMErrorCode setUserActiveVariables(VectorDouble &active_variables)
Add additional independent variables More complex physical models depend on gradient of defamation an...
virtual MoFEMErrorCode setUserActiveVariables(int &nb_active_variables)
add additional active variables
SmallStrainTranverslyIsotropicDouble()
virtual MoFEMErrorCode calculateAngles()
virtual MoFEMErrorCode getDataOnPostProcessor(std::map< std::string, std::vector< VectorDouble > > &field_map, std::map< std::string, std::vector< MatrixDouble > > &grad_map)
Do operations when pre-process.
virtual MoFEMErrorCode calculateElasticEnergy(const NonlinearElasticElement::BlockData block_data, boost::shared_ptr< const NumeredEntFiniteElement > fe_ptr)
calculate density of strain energy
virtual MoFEMErrorCode calculateP_PiolaKirchhoffI(const NonlinearElasticElement::BlockData block_data, boost::shared_ptr< const NumeredEntFiniteElement > fe_ptr)
Calculate global stress.
ublas::matrix< TYPE > aARotMat
MoFEMErrorCode stressTransformation()
Function to Calculate Stress Transformation Matrix This function computes the stress transformation M...
ublas::matrix< TYPE > stressRotMat
SmallStrainTranverslyIsotropic()
ublas::matrix< TYPE > sTrain
virtual MoFEMErrorCode calculateAngles()
ublas::matrix< TYPE > globalStiffnessMatrix
MoFEMErrorCode calculateGlobalStiffnesMatrix()
ublas::symmetric_matrix< TYPE, ublas::upper > localStiffnessMatrix
MoFEMErrorCode strainTransformation()
Function to Calculate Strain Transformation Matrix  This function computes the strain transformation ...
ublas::matrix< TYPE > strainRotMat
MoFEMErrorCode calculateAxisAngleRotationalMatrix()
Function to Calculate the Rotation Matrix at a given axis and angle of rotation.
ublas::vector< TYPE > voightStrain
MoFEMErrorCode calculateFibreAngles()
VectorDouble normalizedPhi
MoFEMErrorCode calculateLocalStiffnesMatrix()
ublas::vector< TYPE > axVector
VectorDouble axVectorDouble
MoFEMErrorCode calculateStrain()
ublas::vector< TYPE > voigtStress