v0.14.0
Public Member Functions | Public Attributes | List of all members
SmallStrainTranverslyIsotropicADouble Struct Reference

#include <users_modules/basic_finite_elements/nonlinear_elastic_materials/src/SmallTransverselyIsotropic.hpp>

Inheritance diagram for SmallStrainTranverslyIsotropicADouble:
[legend]
Collaboration diagram for SmallStrainTranverslyIsotropicADouble:
[legend]

Public Member Functions

 SmallStrainTranverslyIsotropicADouble ()
 
virtual MoFEMErrorCode setUserActiveVariables (int &nb_active_variables)
 add additional active variables More...
 
virtual MoFEMErrorCode setUserActiveVariables (VectorDouble &active_variables)
 Add additional independent variables More complex physical models depend on gradient of defamation and some additional variables. For example can depend on temperature. This function adds additional independent variables to the model. More...
 
- Public Member Functions inherited from SmallStrainTranverslyIsotropic< adouble >
 SmallStrainTranverslyIsotropic ()
 
MoFEMErrorCode calculateStrain ()
 
MoFEMErrorCode calculateLocalStiffnesMatrix ()
 
MoFEMErrorCode calculateAxisAngleRotationalMatrix ()
 Function to Calculate the Rotation Matrix at a given axis and angle of rotation. More...
 
MoFEMErrorCode stressTransformation ()
 Function to Calculate Stress Transformation Matrix This function computes the stress transformation Matrix at a give axis and angle of rotation
One can also output the axis/angle rotational Matrix. More...
 
MoFEMErrorCode strainTransformation ()
 Function to Calculate Strain Transformation Matrix
This function computes the strain transformation Matrix at a give axis and angle of rotation
One can also output the axis/angle rotational Matrix. More...
 
MoFEMErrorCode calculateGlobalStiffnesMatrix ()
 
virtual MoFEMErrorCode calculateAngles ()
 
virtual MoFEMErrorCode calculateP_PiolaKirchhoffI (const NonlinearElasticElement::BlockData block_data, boost::shared_ptr< const NumeredEntFiniteElement > fe_ptr)
 Calculate global stress. More...
 
virtual MoFEMErrorCode calculateElasticEnergy (const NonlinearElasticElement::BlockData block_data, boost::shared_ptr< const NumeredEntFiniteElement > fe_ptr)
 calculate density of strain energy More...
 
MoFEMErrorCode calculateFibreAngles ()
 
- Public Member Functions inherited from NonlinearElasticElement::FunctionsToCalculatePiolaKirchhoffI< adouble >
 FunctionsToCalculatePiolaKirchhoffI ()
 
virtual ~FunctionsToCalculatePiolaKirchhoffI ()=default
 
MoFEMErrorCode calculateC_CauchyDeformationTensor ()
 
MoFEMErrorCode calculateE_GreenStrain ()
 
MoFEMErrorCode calculateS_PiolaKirchhoffII ()
 
virtual MoFEMErrorCode calculateCauchyStress (const BlockData block_data, boost::shared_ptr< const NumeredEntFiniteElement > fe_ptr)
 Function overload to implement user material. More...
 
virtual MoFEMErrorCode calculatesIGma_EshelbyStress (const BlockData block_data, boost::shared_ptr< const NumeredEntFiniteElement > fe_ptr)
 Calculate Eshelby stress. More...
 
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. More...
 

Public Attributes

int nbActiveVariables0
 
- Public Attributes inherited from SmallStrainTranverslyIsotropic< adouble >
ublas::matrix< adoublesTrain
 
ublas::vector< adoublevoightStrain
 
adouble tR
 
double nu_p
 
double nu_pz
 
double E_p
 
double E_z
 
double G_zp
 
ublas::symmetric_matrix< adouble, ublas::upper > localStiffnessMatrix
 
ublas::matrix< adoubleaARotMat
 
ublas::vector< adoubleaxVector
 
adouble axAngle
 
ublas::matrix< adoublestressRotMat
 
ublas::matrix< adoublestrainRotMat
 
ublas::matrix< adoubledR
 
ublas::matrix< adoubleglobalStiffnessMatrix
 
ublas::vector< adoublevoigtStress
 
VectorDouble normalizedPhi
 
VectorDouble axVectorDouble
 
double axAngleDouble
 
- Public Attributes inherited from NonlinearElasticElement::FunctionsToCalculatePiolaKirchhoffI< adouble >
FTensor::Index< 'i', 3 > i
 
FTensor::Index< 'j', 3 > j
 
FTensor::Index< 'k', 3 > k
 
double lambda
 
double mu
 
MatrixBoundedArray< adouble, 9 > F
 
MatrixBoundedArray< adouble, 9 > C
 
MatrixBoundedArray< adouble, 9 > E
 
MatrixBoundedArray< adouble, 9 > S
 
MatrixBoundedArray< adouble, 9 > invF
 
MatrixBoundedArray< adouble, 9 > P
 
MatrixBoundedArray< adouble, 9 > sIGma
 
MatrixBoundedArray< adouble, 9 > h
 
MatrixBoundedArray< adouble, 9 > H
 
MatrixBoundedArray< adouble, 9 > invH
 
MatrixBoundedArray< adouble, 9 > sigmaCauchy
 
FTensor::Tensor2< FTensor::PackPtr< adouble *, 0 >, 3, 3 > t_F
 
FTensor::Tensor2< FTensor::PackPtr< adouble *, 0 >, 3, 3 > t_C
 
FTensor::Tensor2< FTensor::PackPtr< adouble *, 0 >, 3, 3 > t_E
 
FTensor::Tensor2< FTensor::PackPtr< adouble *, 0 >, 3, 3 > t_S
 
FTensor::Tensor2< FTensor::PackPtr< adouble *, 0 >, 3, 3 > t_invF
 
FTensor::Tensor2< FTensor::PackPtr< adouble *, 0 >, 3, 3 > t_P
 
FTensor::Tensor2< FTensor::PackPtr< adouble *, 0 >, 3, 3 > t_sIGma
 
FTensor::Tensor2< FTensor::PackPtr< adouble *, 0 >, 3, 3 > t_h
 
FTensor::Tensor2< FTensor::PackPtr< adouble *, 0 >, 3, 3 > t_H
 
FTensor::Tensor2< FTensor::PackPtr< adouble *, 0 >, 3, 3 > t_invH
 
FTensor::Tensor2< FTensor::PackPtr< adouble *, 0 >, 3, 3 > t_sigmaCauchy
 
adouble J
 
adouble eNergy
 
adouble detH
 
adouble detF
 
int gG
 Gauss point number. More...
 
CommonDatacommonDataPtr
 
MoFEM::VolumeElementForcesAndSourcesCore::UserDataOperatoropPtr
 pointer to finite element tetrahedral operator More...
 

Additional Inherited Members

- Static Protected Member Functions inherited from NonlinearElasticElement::FunctionsToCalculatePiolaKirchhoffI< adouble >
static auto resizeAndSet (MatrixBoundedArray< adouble, 9 > &m)
 

Detailed Description

Definition at line 393 of file SmallTransverselyIsotropic.hpp.

Constructor & Destructor Documentation

◆ SmallStrainTranverslyIsotropicADouble()

SmallStrainTranverslyIsotropicADouble::SmallStrainTranverslyIsotropicADouble ( )
inline

Member Function Documentation

◆ setUserActiveVariables() [1/2]

virtual MoFEMErrorCode SmallStrainTranverslyIsotropicADouble::setUserActiveVariables ( int &  nb_active_variables)
inlinevirtual

add additional active variables

Note
This member function if used should be implement by template member function Specialization, different implementation needed for TYPE=double or TYPE=adouble

More complex physical models depend on gradient of defamation and some additional variables. For example can depend on temperature. This function adds additional independent variables to the model.

Parameters
nb_active_variablesnumber of active variables
Returns
error code

Reimplemented from NonlinearElasticElement::FunctionsToCalculatePiolaKirchhoffI< adouble >.

Definition at line 399 of file SmallTransverselyIsotropic.hpp.

401  {
403 
404  try {
405 
407  axVector.resize(3,false);
408  axVector[0] <<= axVectorDouble[0];
409  axVector[1] <<= axVectorDouble[1];
410  axVector[2] <<= axVectorDouble[2];
412  nbActiveVariables0 = nb_active_variables;
413  nb_active_variables += 4;
414 
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());
419  }
420 
422  }

◆ setUserActiveVariables() [2/2]

virtual MoFEMErrorCode SmallStrainTranverslyIsotropicADouble::setUserActiveVariables ( VectorDouble &  activeVariables)
inlinevirtual

Add additional independent variables More complex physical models depend on gradient of defamation and some additional variables. For example can depend on temperature. This function adds additional independent variables to the model.

/note First 9 elements are reserved for gradient of deformation.

Parameters
activeVariablesvector of deepened variables, values after index 9 should be add.
Returns
error code

Reimplemented from NonlinearElasticElement::FunctionsToCalculatePiolaKirchhoffI< adouble >.

Definition at line 424 of file SmallTransverselyIsotropic.hpp.

425  {
427 
428  try {
429 
430  int shift = nbActiveVariables0; // is a number of elements in F
432  active_variables[shift+0] = axVectorDouble[0];
433  active_variables[shift+1] = axVectorDouble[1];
434  active_variables[shift+2] = axVectorDouble[2];
435  active_variables[shift+3] = axAngleDouble;
436 
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());
441  }
442 
444  }

Member Data Documentation

◆ nbActiveVariables0

int SmallStrainTranverslyIsotropicADouble::nbActiveVariables0

Definition at line 397 of file SmallTransverselyIsotropic.hpp.


The documentation for this struct was generated from the following file:
MoFEMFunctionReturnHot
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:447
SmallStrainTranverslyIsotropicADouble::nbActiveVariables0
int nbActiveVariables0
Definition: SmallTransverselyIsotropic.hpp:397
SmallStrainTranverslyIsotropic< adouble >::axVector
ublas::vector< adouble > axVector
Definition: SmallTransverselyIsotropic.hpp:70
SmallStrainTranverslyIsotropic< adouble >
SmallStrainTranverslyIsotropic< adouble >::calculateFibreAngles
MoFEMErrorCode calculateFibreAngles()
Definition: SmallTransverselyIsotropic.hpp:310
SmallStrainTranverslyIsotropic< adouble >::axAngle
adouble axAngle
Definition: SmallTransverselyIsotropic.hpp:71
SmallStrainTranverslyIsotropic< adouble >::axAngleDouble
double axAngleDouble
Definition: SmallTransverselyIsotropic.hpp:308
MoFEM::Exceptions::ierr
static MoFEMErrorCodeGeneric< PetscErrorCode > ierr
Definition: Exceptions.hpp:76
MoFEMFunctionBeginHot
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:440
CHKERRG
#define CHKERRG(n)
Check error code of MoFEM/MOAB/PETSc function.
Definition: definitions.h:483
SmallStrainTranverslyIsotropic< adouble >::axVectorDouble
VectorDouble axVectorDouble
Definition: SmallTransverselyIsotropic.hpp:307