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