|
| v0.14.0
|
Go to the documentation of this file.
8 #ifndef __SMALLSTRAINTRANVERSLYISOTROPIC_HPP__
9 #define __SMALLSTRAINTRANVERSLYISOTROPIC_HPP__
12 #error "MoFEM need to be compiled with ADOL-C"
18 template<
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());
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());
448 #endif //__SMALLSTRAINTRANVERSLYISOTROPIC_HPP__
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
SmallStrainTranverslyIsotropicADouble()
FunctionsToCalculatePiolaKirchhoffI()
ublas::symmetric_matrix< TYPE, ublas::upper > localStiffnessMatrix
Implementation of elastic (non-linear) St. Kirchhoff equation.
VectorDouble normalizedPhi
structure grouping operators and data used for calculation of nonlinear elastic element
MoFEMErrorCode calculateLocalStiffnesMatrix()
virtual MoFEMErrorCode calculateP_PiolaKirchhoffI(const NonlinearElasticElement::BlockData block_data, boost::shared_ptr< const NumeredEntFiniteElement > fe_ptr)
Calculate global stress.
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
UBlasMatrix< double > MatrixDouble
ublas::matrix< TYPE > sTrain
MoFEMErrorCode strainTransformation()
Function to Calculate Strain Transformation Matrix This function computes the strain transformation ...
virtual MoFEMErrorCode setUserActiveVariables(int &nb_active_variables)
add additional active variables
virtual MoFEMErrorCode calculateAngles()
ublas::vector< TYPE > axVector
SmallStrainTranverslyIsotropic()
SmallStrainTranverslyIsotropicDouble()
MoFEMErrorCode calculateFibreAngles()
static constexpr double delta
MatrixBoundedArray< TYPE, 9 > F
ublas::matrix< TYPE > stressRotMat
ublas::matrix< TYPE > globalStiffnessMatrix
data for calculation heat conductivity and heat capacity elements
virtual MoFEMErrorCode getDataOnPostProcessor(std::map< std::string, std::vector< VectorDouble > > &field_map, std::map< std::string, std::vector< MatrixDouble > > &grad_map)
MoFEMErrorCode stressTransformation()
Function to Calculate Stress Transformation Matrix This function computes the stress transformation M...
ublas::matrix< TYPE > aARotMat
const Tensor2_symmetric_Expr< const ddTensor0< T, Dim, i, j >, typename promote< T, double >::V, Dim, i, j > dd(const Tensor0< T * > &a, const Index< i, Dim > index1, const Index< j, Dim > index2, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
MoFEMErrorCode calculateStrain()
static MoFEMErrorCodeGeneric< PetscErrorCode > ierr
ublas::matrix< TYPE > strainRotMat
UBlasVector< double > VectorDouble
ublas::vector< TYPE > voigtStress
virtual MoFEMErrorCode calculateElasticEnergy(const NonlinearElasticElement::BlockData block_data, boost::shared_ptr< const NumeredEntFiniteElement > fe_ptr)
calculate density of strain energy
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
virtual MoFEMErrorCode calculateAngles()
MoFEMErrorCode calculateGlobalStiffnesMatrix()
ublas::vector< TYPE > voightStrain
std::map< std::string, std::vector< MatrixDouble > > gradAtGaussPts
#define CHKERRG(n)
Check error code of MoFEM/MOAB/PETSc function.
virtual MoFEMErrorCode setUserActiveVariables(VectorDouble &active_variables)
Add additional independent variables More complex physical models depend on gradient of defamation an...
VectorDouble axVectorDouble
int gG
Gauss point number.
MatrixBoundedArray< TYPE, 9 > P
CommonData * commonDataPtr
MoFEMErrorCode calculateAxisAngleRotationalMatrix()
Function to Calculate the Rotation Matrix at a given axis and angle of rotation.