MarmotVoigt.h
Go to the documentation of this file.
1 /* ---------------------------------------------------------------------
2  * _
3  * _ __ ___ __ _ _ __ _ __ ___ ___ | |_
4  * | '_ ` _ \ / _` | '__| '_ ` _ \ / _ \| __|
5  * | | | | | | (_| | | | | | | | | (_) | |_
6  * |_| |_| |_|\__,_|_| |_| |_| |_|\___/ \__|
7  *
8  * Unit of Strength of Materials and Structural Analysis
9  * University of Innsbruck,
10  * 2020 - today
11  *
12  * festigkeitslehre@uibk.ac.at
13  *
14  * Matthias Neuner matthias.neuner@uibk.ac.at
15  * Magdalena Schreter magdalena.schreter@uibk.ac.at
16  * Alexander Dummer alexander.dummer@uibk.ac.at
17  *
18  * This file is part of the MAteRialMOdellingToolbox (marmot).
19  *
20  * This library is free software; you can redistribute it and/or
21  * modify it under the terms of the GNU Lesser General Public
22  * License as published by the Free Software Foundation; either
23  * version 2.1 of the License, or (at your option) any later version.
24  *
25  * The full text of the license can be found in the file LICENSE.md at
26  * the top level directory of marmot.
27  * ---------------------------------------------------------------------
28  */
29 
30 #pragma once
31 #include "Marmot/MarmotJournal.h"
32 #include "Marmot/MarmotMath.h"
33 #include "Marmot/MarmotTypedefs.h"
34 
35 #define VOIGTFROMDIM( x ) ( ( ( x * x ) + x ) >> 1 )
36 
40 namespace Marmot {
41  namespace ContinuumMechanics::VoigtNotation {
42 
43  /* constexpr int VoigtSize = 6; */
44 
45  enum VoigtSize { OneD = 1, TwoD = 3, ThreeD = 6, Axial = 4 };
46 
47  constexpr VoigtSize voigtSizeFromDimension( int x )
48  {
49  return (VoigtSize)( ( ( x * x ) + x ) >> 1 );
50  }
51 
52  extern const Marmot::Vector6d P;
53  extern const Marmot::Vector6d PInv;
54 
55  extern const Marmot::Vector6d I;
56  extern const Marmot::Vector6d IHyd;
57  extern const Matrix6d IDev;
58 
59  // Plane Stress handling
60 
79 
98 
118  template < enum VoigtSize voigtSize >
119  Eigen::Matrix< double, voigtSize, 1 > reduce3DVoigt( const Marmot::Vector6d& Voigt3D )
120  {
121  if constexpr ( voigtSize == OneD )
122  return ( Eigen::Matrix< double, 1, 1 >() << Voigt3D( 0 ) ).finished();
123  else if constexpr ( voigtSize == TwoD )
124  return voigtToPlaneVoigt( Voigt3D );
125  else if constexpr ( voigtSize == ThreeD )
126  return Voigt3D;
127  else
128  throw std::invalid_argument( MakeString() << __PRETTY_FUNCTION__ << ": invalid dimension specified" );
129  }
130 
151  template < enum VoigtSize voigtSize >
152  Marmot::Vector6d make3DVoigt( const Eigen::Matrix< double, voigtSize, 1 >& Voigt )
153  {
154  if constexpr ( voigtSize == OneD )
155  return ( Marmot::Vector6d() << Voigt( 0 ), 0, 0, 0, 0, 0 ).finished();
156  else if constexpr ( voigtSize == TwoD )
157  return planeVoigtToVoigt( Voigt );
158  else if constexpr ( voigtSize == ThreeD )
159  return Voigt;
160  else
161  throw std::invalid_argument( MakeString() << __PRETTY_FUNCTION__ << ": invalid dimension specified" );
162  }
163 
164  // function prototypes for Marmot::Vector6d handling
165 
183  template < typename T >
184  Eigen::Matrix< T, 3, 3 > voigtToStrain( const Eigen::Matrix< T, 6, 1 >& voigt )
185  {
186  Eigen::Matrix< T, 3, 3 > strain;
187  // clang-format off
188  strain << voigt[0], voigt[3] * 0.5, voigt[4] * 0.5,
189  voigt[3] * 0.5, voigt[1], voigt[5] * 0.5,
190  voigt[4] * 0.5, voigt[5] * 0.5, voigt[2];
191  // clang-format on
192  return strain;
193  }
194 
212  template < typename T >
213  Eigen::Matrix< T, 3, 3 > voigtToStress( const Eigen::Matrix< T, 6, 1 >& voigt )
214  {
215  Eigen::Matrix< T, 3, 3 > stress;
216  // clang-format off
217  stress << voigt[0], voigt[3], voigt[4],
218  voigt[3], voigt[1], voigt[5],
219  voigt[4], voigt[5], voigt[2];
220  // clang-format on
221  return stress;
222  }
223 
242 
260  template < typename T = double >
261  Eigen::Matrix< T, 6, 1 > stressToVoigt( const Eigen::Matrix< T, 3, 3 >& stressTensor )
262  {
263  Eigen::Matrix< T, 6, 1 > stress;
264  // clang-format off
265  stress << stressTensor( 0, 0 ),
266  stressTensor( 1, 1 ),
267  stressTensor( 2, 2 ),
268  stressTensor( 0, 1 ),
269  stressTensor( 0, 2 ),
270  stressTensor( 1, 2 );
271  // clang-format on
272  return stress;
273  }
274 
275  Eigen::Matrix< double, 6, 6 > stiffnessToVoigt( const Eigen::Tensor< double, 4 >& C );
276 
277  Eigen::Tensor< double, 4 > voigtToStiffness( const Eigen::Matrix< double, 6, 6 >& voigtStiffness );
278 
279  template < int nDim >
280  Eigen::Matrix< double, nDim, nDim > stressMatrixFromVoigt(
281  const Eigen::Matrix< double, VOIGTFROMDIM( nDim ), 1 >& Voigt )
282  {
283  if constexpr ( nDim == 1 )
284  return ( Eigen::Matrix< double, nDim, nDim >() << Voigt( 0 ) ).finished();
285  else if constexpr ( nDim == 2 )
286  return ( Eigen::Matrix< double, nDim, nDim >() << Voigt( 0 ), Voigt( 2 ), Voigt( 2 ), Voigt( 1 ) ).finished();
287  else if constexpr ( nDim == 3 )
288  return voigtToStress( Voigt );
289  else
290  throw std::invalid_argument( MakeString() << __PRETTY_FUNCTION__ << ": invalid dimension specified" );
291  }
292 
293  template < int nDim >
294  Eigen::Matrix< double, VOIGTFROMDIM( nDim ), 1 > voigtFromStrainMatrix(
295  const Eigen::Matrix< double, nDim, nDim >& strain )
296  {
297  if constexpr ( nDim == 1 )
298  return ( Eigen::Matrix< double, VOIGTFROMDIM( nDim ), 1 >() << strain( 0, 0 ) ).finished();
299  else if constexpr ( nDim == 2 )
300  return ( Eigen::Matrix< double, VOIGTFROMDIM( nDim ), 1 >() << strain( 0, 0 ),
301  strain( 1, 1 ),
302  2 * strain( 0, 1 ) )
303  .finished();
304  else if constexpr ( nDim == 3 )
305  return strainToVoigt( strain );
306  else
307  throw std::invalid_argument( MakeString() << __PRETTY_FUNCTION__ << ": invalid dimension specified" );
308  }
309 
310  namespace Invariants {
311 
320 
329  // principal strains calculated from haigh westergaard strains ( sorted --> e1 > e2 > e3 )
330 
350  // principal stressDirections calculated by solving eigenvalue problem ( !NOT sorted! )
351 
360 
367  double vonMisesEquivalentStress( const Marmot::Vector6d& stress );
368 
374  double vonMisesEquivalentStrain( const Marmot::Vector6d& strain );
375 
378  template < typename T >
379  T normStrain( const Eigen::Matrix< T, 6, 1 >& strain )
380  {
381  return ContinuumMechanics::VoigtNotation::voigtToStrain( strain ).norm();
382  }
383 
386  double normStress( const Marmot::Vector6d& stress );
387  // Trace of compressive strains
388 
396  double StrainVolumetricNegative( const Marmot::Vector6d& strain );
397 
403  template < typename T >
404  T I1( const Eigen::Matrix< T, 6, 1 >& stress )
405  {
406  return stress( 0 ) + stress( 1 ) + stress( 2 );
407  }
408 
415  double I1Strain( const Marmot::Vector6d& strain ); //
416 
422  template < typename T >
423  T I2( const Eigen::Matrix< T, 6, 1 >& stress )
424  {
425  const Eigen::Matrix< T, 6, 1 >& s = stress;
426  return s( 0 ) * s( 1 ) + s( 1 ) * s( 2 ) + s( 2 ) * s( 0 ) - s( 3 ) * s( 3 ) - s( 4 ) * s( 4 ) -
427  s( 5 ) * s( 5 );
428  }
429 
436  double I2Strain( const Marmot::Vector6d& strain );
437 
443  template < typename T >
444  T I3( const Eigen::Matrix< T, 6, 1 >& stress )
445  {
446  const Eigen::Matrix< T, 6, 1 >& s = stress;
447  return s( 0 ) * s( 1 ) * s( 2 ) + 2. * s( 3 ) * s( 4 ) * s( 5 ) - s( 0 ) * s( 5 ) * s( 5 ) -
448  s( 1 ) * s( 4 ) * s( 4 ) - s( 2 ) * s( 3 ) * s( 3 );
449  }
450 
454  double I3Strain( const Marmot::Vector6d& strain );
455 
461  template < typename T >
462  T J2( const Eigen::Matrix< T, 6, 1 >& stress )
463  {
464  const T I1_ = I1( stress );
465  const T I2_ = I2( stress );
466  const T res = ( 1. / 3 ) * I1_ * I1_ - I2_;
467  return Marmot::Math::makeReal( res ) >= 0 ? res : T( 0.0 );
468  }
469 
477  double J2Strain( const Marmot::Vector6d& strain );
478 
484  template < typename T >
485  T J3( const Eigen::Matrix< T, 6, 1 >& stress )
486  {
487  const T I1_ = I1( stress );
488  const T I2_ = I2( stress );
489  const T I3_ = I3( stress );
490 
491  return ( 2. / 27 ) * pow( I1_, 3 ) - ( 1. / 3 ) * I1_ * I2_ + I3_;
492  }
493 
497  double J3Strain( const Marmot::Vector6d& strain );
498 
499  // principal values in voigt
500  std::pair< Eigen::Vector3d, Eigen::Matrix< double, 3, 6 > > principalValuesAndDerivatives(
501  const Eigen::Matrix< double, 6, 1 >& S );
502 
503  } // namespace Invariants
504 
505  namespace Derivatives {
506 
507  // derivatives of Haigh Westergaard stresses with respect to cauchy stress in eng. notation
508 
518  template < typename T >
519  Eigen::Matrix< T, 6, 1 > dRho_dStress( T rho, const Eigen::Matrix< T, 6, 1 >& stress )
520  {
521  if ( Marmot::Math::makeReal( rho ) <= 1e-16 )
522  return Eigen::Matrix< T, 6, 1 >::Zero();
523 
524  Eigen::Matrix< T, 6, 1 > s = IDev * stress;
525 
526  return T( 1. / rho ) * P.array() * s.array();
527  }
528 
533  Marmot::Vector6d dTheta_dStress( double theta, const Marmot::Vector6d& stress );
534 
539  double dTheta_dJ2( const Marmot::Vector6d& stress );
540 
545  double dTheta_dJ3( const Marmot::Vector6d& stress );
546 
552  double dThetaStrain_dJ2Strain( const Marmot::Vector6d& strain );
553 
559  double dThetaStrain_dJ3Strain( const Marmot::Vector6d& strain );
560 
566 
572 
579 
586 
593 
594  // derivatives of principalStess with respect to stress
595 
601 
602  // derivatives of plastic strains with respect to strains
603 
610 
623  Matrix6d dEp_dE( const Matrix6d& CelInv, const Matrix6d& Cep );
624 
630  RowVector6d dDeltaEpv_dE( const Matrix6d& CelInv, const Matrix6d& Cep );
631 
637 
643  RowVector6d dDeltaEpvneg_dE( const Marmot::Vector6d& dEp, const Matrix6d& CelInv, const Matrix6d& Cep );
644 
645  } // namespace Derivatives
646 
647  namespace Transformations {
648 
653  Matrix6d transformationMatrixStrainVoigt( const Matrix3d& transformedCoordinateSystem );
654 
659  Matrix6d transformationMatrixStressVoigt( const Matrix3d& transformedCoordinateSystem );
660 
669  Matrix36d projectVoigtStressToPlane( const Vector3d& normalVector );
670 
676  Matrix36d projectVoigtStrainToPlane( const Vector3d& normalVector );
677 
686 
687  } // namespace Transformations
688 
689  } // namespace ContinuumMechanics::VoigtNotation
690 } // namespace Marmot
Marmot::ContinuumMechanics::VoigtNotation::Transformations::transformationMatrixStressVoigt
Matrix6d transformationMatrixStressVoigt(const Matrix3d &transformedCoordinateSystem)
Definition: MarmotVoigt.cpp:516
Marmot::ContinuumMechanics::VoigtNotation::Invariants::principalStresses
Eigen::Vector3d principalStresses(const Marmot::Vector6d &stress)
Definition: MarmotVoigt.cpp:126
Marmot::FiniteElement::Spatial2D::voigtSize
constexpr int voigtSize
Definition: MarmotFiniteElement.h:113
Marmot::ContinuumMechanics::VoigtNotation::PInv
const Marmot::Vector6d PInv
Definition: MarmotVoigt.cpp:16
Marmot::ContinuumMechanics::VoigtNotation::Invariants::I1Strain
double I1Strain(const Marmot::Vector6d &strain)
Definition: MarmotVoigt.cpp:268
Marmot::ContinuumMechanics::VoigtNotation::voigtSizeFromDimension
constexpr VoigtSize voigtSizeFromDimension(int x)
Definition: MarmotVoigt.h:47
Marmot::ContinuumMechanics::VoigtNotation::Invariants::vonMisesEquivalentStrain
double vonMisesEquivalentStrain(const Marmot::Vector6d &strain)
Definition: MarmotVoigt.cpp:247
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dDeltaEpvneg_dE
RowVector6d dDeltaEpvneg_dE(const Marmot::Vector6d &dEp, const Matrix6d &CelInv, const Matrix6d &Cep)
Definition: MarmotVoigt.cpp:499
Marmot::ContinuumMechanics::VoigtNotation::Invariants::normStress
double normStress(const Marmot::Vector6d &stress)
Definition: MarmotVoigt.cpp:255
Marmot::ContinuumMechanics::VoigtNotation::Invariants::sortedPrincipalStrains
Eigen::Vector3d sortedPrincipalStrains(const Marmot::Vector6d &strain)
Definition: MarmotVoigt.cpp:132
Marmot::ContinuumMechanics::VoigtNotation::Transformations::projectVoigtStressToPlane
Matrix36d projectVoigtStressToPlane(const Vector3d &normalVector)
Definition: MarmotVoigt.cpp:535
Marmot::ContinuumMechanics::VoigtNotation::stressToVoigt
Eigen::Matrix< T, 6, 1 > stressToVoigt(const Eigen::Matrix< T, 3, 3 > &stressTensor)
Definition: MarmotVoigt.h:261
MarmotJournal.h
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dSortedStrainPrincipal_dStrain
Marmot::Matrix36 dSortedStrainPrincipal_dStrain(const Marmot::Vector6d &dEp)
Definition: MarmotVoigt.cpp:454
MarmotTypedefs.h
Marmot::ContinuumMechanics::VoigtNotation::Invariants::normStrain
T normStrain(const Eigen::Matrix< T, 6, 1 > &strain)
Definition: MarmotVoigt.h:379
MarmotMath.h
Marmot::Matrix6d
Eigen::Matrix< double, 6, 6 > Matrix6d
Definition: MarmotTypedefs.h:35
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dRho_dStress
Eigen::Matrix< T, 6, 1 > dRho_dStress(T rho, const Eigen::Matrix< T, 6, 1 > &stress)
Definition: MarmotVoigt.h:519
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dStressPrincipals_dStress
Marmot::Matrix36 dStressPrincipals_dStress(const Marmot::Vector6d &stress)
Definition: MarmotVoigt.cpp:413
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dStressMean_dStress
Vector6d dStressMean_dStress()
Definition: MarmotVoigt.cpp:304
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dThetaStrain_dJ2Strain
double dThetaStrain_dJ2Strain(const Marmot::Vector6d &strain)
Definition: MarmotVoigt.cpp:358
Marmot::ContinuumMechanics::VoigtNotation::Axial
@ Axial
Definition: MarmotVoigt.h:45
Marmot::ContinuumMechanics::VoigtNotation::make3DVoigt
Marmot::Vector6d make3DVoigt(const Eigen::Matrix< double, voigtSize, 1 > &Voigt)
Definition: MarmotVoigt.h:152
Marmot::ContinuumMechanics::VoigtNotation::Transformations::projectVoigtStrainToPlane
Matrix36d projectVoigtStrainToPlane(const Vector3d &normalVector)
Definition: MarmotVoigt.cpp:548
Marmot::FiniteElement::Spatial2D::nDim
constexpr int nDim
Definition: MarmotFiniteElement.h:112
Marmot::ContinuumMechanics::VoigtNotation::Invariants::I1
T I1(const Eigen::Matrix< T, 6, 1 > &stress)
Definition: MarmotVoigt.h:404
Marmot::ContinuumMechanics::VoigtNotation::Invariants::J2
T J2(const Eigen::Matrix< T, 6, 1 > &stress)
Definition: MarmotVoigt.h:462
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dJ3Strain_dStrain
Marmot::Vector6d dJ3Strain_dStrain(const Marmot::Vector6d &strain)
Definition: MarmotVoigt.cpp:399
Marmot::ContinuumMechanics::VoigtNotation::voigtToPlaneVoigt
Eigen::Vector3d voigtToPlaneVoigt(const Marmot::Vector6d &voigt)
Definition: MarmotVoigt.cpp:97
Marmot::ContinuumMechanics::VoigtNotation::Transformations::rotateVoigtStress
Marmot::Vector6d rotateVoigtStress(const Eigen::Matrix3d &Q, const Marmot::Vector6d &stress)
Definition: MarmotVoigt.cpp:556
Marmot::Vector3d
Eigen::Matrix< double, 3, 1 > Vector3d
Definition: MarmotTypedefs.h:42
Marmot::Math::makeReal
double makeReal(const double &value)
Definition: MarmotMath.cpp:37
Marmot::ContinuumMechanics::VoigtNotation::ThreeD
@ ThreeD
Definition: MarmotVoigt.h:45
Marmot::ContinuumMechanics::VoigtNotation::strainToVoigt
Marmot::Vector6d strainToVoigt(const Eigen::Matrix3d &strainTensor)
VOIGTFROMDIM
#define VOIGTFROMDIM(x)
Definition: MarmotVoigt.h:35
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dTheta_dJ3
double dTheta_dJ3(const Marmot::Vector6d &stress)
Definition: MarmotVoigt.cpp:342
Marmot::ContinuumMechanics::VoigtNotation::Invariants::I2
T I2(const Eigen::Matrix< T, 6, 1 > &stress)
Definition: MarmotVoigt.h:423
Marmot::ContinuumMechanics::VoigtNotation::I
const Marmot::Vector6d I
Definition: MarmotVoigt.cpp:18
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dStrainVolumetricNegative_dStrainPrincipal
Eigen::Vector3d dStrainVolumetricNegative_dStrainPrincipal(const Marmot::Vector6d &strain)
Definition: MarmotVoigt.cpp:433
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dEp_dE
Matrix6d dEp_dE(const Matrix6d &CelInv, const Matrix6d &Cep)
Definition: MarmotVoigt.cpp:444
Marmot::ContinuumMechanics::VoigtNotation::voigtFromStrainMatrix
Eigen::Matrix< double, VOIGTFROMDIM(nDim), 1 > voigtFromStrainMatrix(const Eigen::Matrix< double, nDim, nDim > &strain)
Definition: MarmotVoigt.h:294
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dTheta_dStress
Marmot::Vector6d dTheta_dStress(double theta, const Marmot::Vector6d &stress)
Definition: MarmotVoigt.cpp:309
Marmot::ContinuumMechanics::VoigtNotation::voigtToStrain
Eigen::Matrix< T, 3, 3 > voigtToStrain(const Eigen::Matrix< T, 6, 1 > &voigt)
Definition: MarmotVoigt.h:184
Marmot::ContinuumMechanics::VoigtNotation::Transformations::transformationMatrixStrainVoigt
Matrix6d transformationMatrixStrainVoigt(const Matrix3d &transformedCoordinateSystem)
Definition: MarmotVoigt.cpp:507
Marmot::Matrix3d
Eigen::Matrix< double, 3, 3 > Matrix3d
Definition: MarmotTypedefs.h:40
Marmot::ContinuumMechanics::VoigtNotation::reduce3DVoigt
Eigen::Matrix< double, voigtSize, 1 > reduce3DVoigt(const Marmot::Vector6d &Voigt3D)
Definition: MarmotVoigt.h:119
Marmot::ContinuumMechanics::VoigtNotation::Invariants::J3
T J3(const Eigen::Matrix< T, 6, 1 > &stress)
Definition: MarmotVoigt.h:485
Marmot
This file includes functions needed for calculations with stress and strain tensors written in voigt ...
Definition: MarmotTesting.h:37
Marmot::ContinuumMechanics::VoigtNotation::Invariants::StrainVolumetricNegative
double StrainVolumetricNegative(const Marmot::Vector6d &strain)
Definition: MarmotVoigt.cpp:260
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dTheta_dJ2
double dTheta_dJ2(const Marmot::Vector6d &stress)
Definition: MarmotVoigt.cpp:326
Marmot::ContinuumMechanics::VoigtNotation::IHyd
const Marmot::Vector6d IHyd
Definition: MarmotVoigt.cpp:19
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dDeltaEpv_dE
RowVector6d dDeltaEpv_dE(const Matrix6d &CelInv, const Matrix6d &Cep)
Definition: MarmotVoigt.cpp:449
Marmot::ContinuumMechanics::VoigtNotation::P
const Marmot::Vector6d P
Definition: MarmotVoigt.cpp:15
Marmot::ContinuumMechanics::VoigtNotation::Invariants::J2Strain
double J2Strain(const Marmot::Vector6d &strain)
Definition: MarmotVoigt.cpp:288
Marmot::ContinuumMechanics::VoigtNotation::VoigtSize
VoigtSize
Definition: MarmotVoigt.h:45
Marmot::Vector6d
Eigen::Matrix< double, 6, 1 > Vector6d
Definition: MarmotTypedefs.h:43
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dJ2Strain_dStrain
Marmot::Vector6d dJ2Strain_dStrain(const Marmot::Vector6d &strain)
Definition: MarmotVoigt.cpp:394
Marmot::ContinuumMechanics::VoigtNotation::Invariants::vonMisesEquivalentStress
double vonMisesEquivalentStress(const Marmot::Vector6d &stress)
Definition: MarmotVoigt.cpp:242
Marmot::RowVector6d
Eigen::Matrix< double, 1, 6 > RowVector6d
Definition: MarmotTypedefs.h:48
Marmot::ContinuumMechanics::VoigtNotation::voigtToStress
Eigen::Matrix< T, 3, 3 > voigtToStress(const Eigen::Matrix< T, 6, 1 > &voigt)
Definition: MarmotVoigt.h:213
Marmot::ContinuumMechanics::VoigtNotation::Invariants::principalStrains
Eigen::Vector3d principalStrains(const Marmot::Vector6d &strain)
Definition: MarmotVoigt.cpp:120
Marmot::ContinuumMechanics::VoigtNotation::Invariants::principalStressesDirections
Eigen::Matrix3d principalStressesDirections(const Marmot::Vector6d &stress)
Definition: MarmotVoigt.cpp:144
Marmot::ContinuumMechanics::VoigtNotation::Invariants::I3
T I3(const Eigen::Matrix< T, 6, 1 > &stress)
Definition: MarmotVoigt.h:444
Marmot::ContinuumMechanics::VoigtNotation::planeVoigtToVoigt
Marmot::Vector6d planeVoigtToVoigt(const Eigen::Vector3d &voigtPlane)
Marmot::ContinuumMechanics::VoigtNotation::Invariants::J3Strain
double J3Strain(const Marmot::Vector6d &strain)
Definition: MarmotVoigt.cpp:294
Marmot::ContinuumMechanics::VoigtNotation::Invariants::principalValuesAndDerivatives
std::pair< Eigen::Vector3d, Eigen::Matrix< double, 3, 6 > > principalValuesAndDerivatives(const Eigen::Matrix< double, 6, 1 > &S)
Definition: MarmotVoigt.cpp:152
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dJ2_dStress
Marmot::Vector6d dJ2_dStress(const Marmot::Vector6d &stress)
Definition: MarmotVoigt.cpp:382
Marmot::ContinuumMechanics::VoigtNotation::OneD
@ OneD
Definition: MarmotVoigt.h:45
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dThetaStrain_dStrain
Marmot::Vector6d dThetaStrain_dStrain(const Marmot::Vector6d &strain)
Definition: MarmotVoigt.cpp:406
Marmot::ContinuumMechanics::VoigtNotation::stressMatrixFromVoigt
Eigen::Matrix< double, nDim, nDim > stressMatrixFromVoigt(const Eigen::Matrix< double, VOIGTFROMDIM(nDim), 1 > &Voigt)
Definition: MarmotVoigt.h:280
Marmot::ContinuumMechanics::VoigtNotation::TwoD
@ TwoD
Definition: MarmotVoigt.h:45
Marmot::ContinuumMechanics::VoigtNotation::stiffnessToVoigt
Eigen::Matrix< double, 6, 6 > stiffnessToVoigt(const Eigen::Tensor< double, 4 > &C)
Definition: MarmotVoigt.cpp:45
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dJ3_dStress
Marmot::Vector6d dJ3_dStress(const Marmot::Vector6d &stress)
Definition: MarmotVoigt.cpp:387
Marmot::ContinuumMechanics::VoigtNotation::Invariants::I3Strain
double I3Strain(const Marmot::Vector6d &strain)
Definition: MarmotVoigt.cpp:282
Marmot::ContinuumMechanics::VoigtNotation::Invariants::I2Strain
double I2Strain(const Marmot::Vector6d &strain)
Definition: MarmotVoigt.cpp:273
Marmot::ContinuumMechanics::VoigtNotation::voigtToStiffness
Eigen::Tensor< double, 4 > voigtToStiffness(const Eigen::Matrix< double, 6, 6 > &voigtStiffness)
Definition: MarmotVoigt.cpp:73
Marmot::ContinuumMechanics::VoigtNotation::IDev
const Matrix6d IDev
Definition: MarmotVoigt.cpp:21
Marmot::ContinuumMechanics::VoigtNotation::Derivatives::dThetaStrain_dJ3Strain
double dThetaStrain_dJ3Strain(const Marmot::Vector6d &strain)
Definition: MarmotVoigt.cpp:370
Marmot::Matrix36d
Eigen::Matrix< double, 3, 6 > Matrix36d
Definition: MarmotTypedefs.h:53
MakeString
Definition: MarmotJournal.h:32
Marmot::Matrix36
Eigen::Matrix< double, 3, 6 > Matrix36
Definition: MarmotTypedefs.h:54