diff --git a/docs/sphinx/changelog.rst b/docs/sphinx/changelog.rst index 8e2dc38..9d41ee0 100644 --- a/docs/sphinx/changelog.rst +++ b/docs/sphinx/changelog.rst @@ -9,6 +9,10 @@ Changelog 0.5.0 (unreleased) ****************** +Internal Changes +================ +- Working towards removing floatVector in favor of specific sizes (:pull:`141`). By `Nathan Miller`_. + ****************** 0.4.4 (07-12-2024) ****************** diff --git a/src/cpp/tardigrade_hydra.cpp b/src/cpp/tardigrade_hydra.cpp index 90ed384..891736d 100644 --- a/src/cpp/tardigrade_hydra.cpp +++ b/src/cpp/tardigrade_hydra.cpp @@ -36,7 +36,7 @@ namespace tardigradeHydra{ hydraBase::hydraBase( const floatType &time, const floatType &deltaTime, const floatType &temperature, const floatType &previousTemperature, - const floatVector &deformationGradient, const floatVector &previousDeformationGradient, + const secondOrderTensor &deformationGradient, const secondOrderTensor &previousDeformationGradient, const floatVector &additionalDOF, const floatVector &previousAdditionalDOF, const floatVector &previousStateVariables, const floatVector ¶meters, const unsigned int numConfigurations, const unsigned int numNonLinearSolveStateVariables, @@ -155,7 +155,7 @@ namespace tardigradeHydra{ kernel_type kernel(LIBXSMM_GEMM_FLAG_NONE, dim, dim, dim, 1, 0 ); // Initialize the first configuration with the total deformation gradient - floatVector temp( sot_dim, 0 ); + secondOrderTensor temp( sot_dim, 0 ); #else Eigen::Map < Eigen::Matrix< floatType, 3, 3, Eigen::RowMajor> > mat2( NULL, 3, 3 ); #endif @@ -361,7 +361,7 @@ namespace tardigradeHydra{ TARDIGRADE_ERROR_TOOLS_CHECK( lowerIndex <= upperIndex, build_lower_index_out_of_range_error_string( lowerIndex, upperIndex ) ) - floatVector Fsc( sot_dim, 0 ); + secondOrderTensor Fsc( sot_dim, 0 ); for ( unsigned int i = 0; i < 3; i++ ){ Fsc[ dim * i + i ] = 1.; } #ifdef TARDIGRADE_HYDRA_USE_LLXSMM @@ -416,7 +416,7 @@ namespace tardigradeHydra{ for ( unsigned int index = lowerIndex; index < upperIndex; index++ ){ - floatVector Fm, FpT; + secondOrderTensor Fm, FpT; TARDIGRADE_ERROR_TOOLS_CATCH( Fm = getSubConfiguration( configurations, lowerIndex, index ) ); @@ -448,7 +448,7 @@ namespace tardigradeHydra{ } - floatVector hydraBase::getSubConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ){ + secondOrderTensor hydraBase::getSubConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ){ /*! * Get a sub-configuration \f$\bf{F}^{sc}\f$ defined as * @@ -462,7 +462,7 @@ namespace tardigradeHydra{ } - floatVector hydraBase::getPrecedingConfiguration( const unsigned int &index ){ + secondOrderTensor hydraBase::getPrecedingConfiguration( const unsigned int &index ){ /*! * Get the sub-configuration preceding but not including the index * @@ -473,7 +473,7 @@ namespace tardigradeHydra{ } - floatVector hydraBase::getFollowingConfiguration( const unsigned int &index ){ + secondOrderTensor hydraBase::getFollowingConfiguration( const unsigned int &index ){ /*! * Get the sub-configuration following but not including the index * @@ -484,7 +484,7 @@ namespace tardigradeHydra{ } - floatVector hydraBase::getConfiguration( const unsigned int &index ){ + secondOrderTensor hydraBase::getConfiguration( const unsigned int &index ){ /*! * Get the configuration indicated by the provided index * @@ -495,7 +495,7 @@ namespace tardigradeHydra{ } - floatVector hydraBase::getPreviousSubConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ){ + secondOrderTensor hydraBase::getPreviousSubConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ){ /*! * Get a previous sub-configuration \f$\bf{F}^{sc}\f$ defined as * @@ -509,7 +509,7 @@ namespace tardigradeHydra{ } - floatVector hydraBase::getPreviousPrecedingConfiguration( const unsigned int &index ){ + secondOrderTensor hydraBase::getPreviousPrecedingConfiguration( const unsigned int &index ){ /*! * Get the previous sub-configuration preceding but not including the index * @@ -520,7 +520,7 @@ namespace tardigradeHydra{ } - floatVector hydraBase::getPreviousFollowingConfiguration( const unsigned int &index ){ + secondOrderTensor hydraBase::getPreviousFollowingConfiguration( const unsigned int &index ){ /*! * Get the previous sub-configuration following but not including the index * @@ -531,7 +531,7 @@ namespace tardigradeHydra{ } - floatVector hydraBase::getPreviousConfiguration( const unsigned int &index ){ + secondOrderTensor hydraBase::getPreviousConfiguration( const unsigned int &index ){ /*! * Get the previous configuration indicated by the provided index * @@ -622,7 +622,7 @@ namespace tardigradeHydra{ } - void hydraBase::calculateFirstConfigurationJacobians( const floatVector &configurations, floatVector &dC1dC, floatVector &dC1dCn ){ + void hydraBase::calculateFirstConfigurationJacobians( const floatVector &configurations, fourthOrderTensor &dC1dC, floatVector &dC1dCn ){ /*! * Get the Jacobian of the first configuration w.r.t. the total mapping and the remaining configurations. * @@ -637,20 +637,17 @@ namespace tardigradeHydra{ const unsigned int sot_dim = getSOTDimension( ); const unsigned int num_configs = *getNumConfigurations( ); - dC1dC = floatVector( sot_dim * sot_dim, 0 ); + dC1dC = secondOrderTensor( sot_dim * sot_dim, 0 ); dC1dCn = floatVector( sot_dim * ( num_configs - 1 ) * sot_dim, 0 ); - floatVector eye( sot_dim, 0 ); - for ( unsigned int i = 0; i < dim; i++ ){ eye[ dim * i + i ] = 1; } + secondOrderTensor fullConfiguration = getSubConfiguration( configurations, 0, num_configs ); - floatVector fullConfiguration = getSubConfiguration( configurations, 0, num_configs ); - - floatVector invCsc = getSubConfiguration( configurations, 1, num_configs ); + secondOrderTensor invCsc = getSubConfiguration( configurations, 1, num_configs ); Eigen::Map < Eigen::Matrix< floatType, 3, 3, Eigen::RowMajor > > mat( invCsc.data( ), dim, dim ); mat = mat.inverse( ).eval( ); - floatVector dInvCscdCsc = tardigradeVectorTools::computeFlatDInvADA( invCsc, dim, dim ); + fourthOrderTensor dInvCscdCsc = tardigradeVectorTools::computeFlatDInvADA( invCsc, dim, dim ); floatVector dInvCscdCs = tardigradeVectorTools::matrixMultiply( dInvCscdCsc, getSubConfigurationJacobian( configurations, 1, num_configs ), sot_dim, sot_dim, sot_dim, num_configs * sot_dim ); @@ -693,7 +690,7 @@ namespace tardigradeHydra{ * Set the Jacobians of the first configuration w.r.t. the total configuration and the remaining sub-configurations */ - floatVector dF1dF; + secondOrderTensor dF1dF; floatVector dF1dFn; @@ -710,7 +707,7 @@ namespace tardigradeHydra{ * Set the Jacobians of the previous first configuration w.r.t. the total configuration and the remaining sub-configurations */ - floatVector dF1dF; + secondOrderTensor dF1dF; floatVector dF1dFn; @@ -1333,7 +1330,7 @@ namespace tardigradeHydra{ for ( unsigned int i = 1; i < num_local_configs; i++ ){ - Xmat[ i ] = floatVector( configurations->begin( ) + sot_dim * i, configurations->begin( ) + sot_dim * ( i + 1 ) ); + Xmat[ i ] = secondOrderTensor( configurations->begin( ) + sot_dim * i, configurations->begin( ) + sot_dim * ( i + 1 ) ); } diff --git a/src/cpp/tardigrade_hydra.h b/src/cpp/tardigrade_hydra.h index d512aa3..928ac35 100644 --- a/src/cpp/tardigrade_hydra.h +++ b/src/cpp/tardigrade_hydra.h @@ -217,6 +217,12 @@ namespace tardigradeHydra{ typedef std::vector< floatType > floatVector; //!< Define a vector of floats typedef std::vector< std::vector< floatType > > floatMatrix; //!< Define a matrix of floats + //Define tensors of known size + typedef std::vector< floatType > dimVector; //!< Dimension vector + typedef std::vector< floatType > secondOrderTensor; //!< Second order tensors + typedef std::vector< floatType > thirdOrderTensor; //!< Third order tensors + typedef std::vector< floatType > fourthOrderTensor; //!< Fourth order tensors + #ifdef TARDIGRADE_HYDRA_USE_LLXSMM typedef libxsmm_mmfunction kernel_type; //!< The libxsmm kernel type #endif @@ -615,7 +621,7 @@ namespace tardigradeHydra{ //! Main constructor for objects of type hydraBase. Sets all quantities required for most solves. hydraBase( const floatType &time, const floatType &deltaTime, const floatType &temperature, const floatType &previousTemperature, - const floatVector &deformationGradient, const floatVector &previousDeformationGradient, + const secondOrderTensor &deformationGradient, const secondOrderTensor &previousDeformationGradient, const floatVector &additionalDOF, const floatVector &previousAdditionalDOF, const floatVector &previousStateVariables, const floatVector ¶meters, const unsigned int numConfigurations, const unsigned int numNonLinearSolveStateVariables, @@ -645,10 +651,10 @@ namespace tardigradeHydra{ const floatType* getPreviousTemperature( ){ return &_previousTemperature; }; //! Get a reference to the deformation gradient - const floatVector* getDeformationGradient( ){ return &_deformationGradient; } + const secondOrderTensor* getDeformationGradient( ){ return &_deformationGradient; } //! Get a reference to the previous deformation gradient - const floatVector* getPreviousDeformationGradient( ){ return &_previousDeformationGradient; } + const secondOrderTensor* getPreviousDeformationGradient( ){ return &_previousDeformationGradient; } //! Get a reference to the additional degrees of freedom const floatVector* getAdditionalDOF( ){ return &_additionalDOF; } @@ -853,25 +859,25 @@ namespace tardigradeHydra{ } - floatVector getSubConfiguration( const floatVector &configurations, const unsigned int &lowerIndex, const unsigned int &upperIndex ); + secondOrderTensor getSubConfiguration( const floatVector &configurations, const unsigned int &lowerIndex, const unsigned int &upperIndex ); - floatVector getSubConfigurationJacobian( const floatVector &configurations, const unsigned int &lowerIndex, const unsigned int &upperIndex ); + secondOrderTensor getSubConfigurationJacobian( const floatVector &configurations, const unsigned int &lowerIndex, const unsigned int &upperIndex ); - floatVector getSubConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ); + secondOrderTensor getSubConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ); - floatVector getPrecedingConfiguration( const unsigned int &index ); + secondOrderTensor getPrecedingConfiguration( const unsigned int &index ); - floatVector getFollowingConfiguration( const unsigned int &index ); + secondOrderTensor getFollowingConfiguration( const unsigned int &index ); - floatVector getConfiguration( const unsigned int &index ); + secondOrderTensor getConfiguration( const unsigned int &index ); - floatVector getPreviousSubConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ); + secondOrderTensor getPreviousSubConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ); - floatVector getPreviousPrecedingConfiguration( const unsigned int &index ); + secondOrderTensor getPreviousPrecedingConfiguration( const unsigned int &index ); - floatVector getPreviousFollowingConfiguration( const unsigned int &index ); + secondOrderTensor getPreviousFollowingConfiguration( const unsigned int &index ); - floatVector getPreviousConfiguration( const unsigned int &index ); + secondOrderTensor getPreviousConfiguration( const unsigned int &index ); floatVector getSubConfigurationJacobian( const unsigned int &lowerIndex, const unsigned int &upperIndex ); @@ -996,7 +1002,7 @@ namespace tardigradeHydra{ virtual void updateUnknownVector( const floatVector &newUnknownVector ); - virtual void calculateFirstConfigurationJacobians( const floatVector &configurations, floatVector &dC1dC, floatVector &dC1dCn ); + virtual void calculateFirstConfigurationJacobians( const floatVector &configurations, fourthOrderTensor &dC1dC, floatVector &dC1dCn ); virtual void performArmijoTypeLineSearch( const floatVector &X0, const floatVector &deltaX ); @@ -1147,9 +1153,9 @@ namespace tardigradeHydra{ floatType _previousTemperature; //!< The previous temperature - floatVector _deformationGradient; //!< The current deformation gradient + secondOrderTensor _deformationGradient; //!< The current deformation gradient - floatVector _previousDeformationGradient; //!< The previous deformation gradient + secondOrderTensor _previousDeformationGradient; //!< The previous deformation gradient floatVector _additionalDOF; //!< The current additional degrees of freedom @@ -1307,11 +1313,11 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dResidualNormdX, floatVector, setdResidualNormdX ) - TARDIGRADE_HYDRA_DECLARE_NAMED_ITERATION_STORAGE( private, set_dF1dF, get_dF1dF, dF1dF, floatVector, setFirstConfigurationJacobians ) + TARDIGRADE_HYDRA_DECLARE_NAMED_ITERATION_STORAGE( private, set_dF1dF, get_dF1dF, dF1dF, secondOrderTensor, setFirstConfigurationJacobians ) TARDIGRADE_HYDRA_DECLARE_NAMED_ITERATION_STORAGE( private, set_dF1dFn, get_dF1dFn, dF1dFn, floatVector, setFirstConfigurationJacobians ) - TARDIGRADE_HYDRA_DECLARE_NAMED_PREVIOUS_STORAGE( private, set_previousdF1dF, get_previousdF1dF, previousdF1dF, floatVector, setPreviousFirstConfigurationJacobians ) + TARDIGRADE_HYDRA_DECLARE_NAMED_PREVIOUS_STORAGE( private, set_previousdF1dF, get_previousdF1dF, previousdF1dF, secondOrderTensor, setPreviousFirstConfigurationJacobians ) TARDIGRADE_HYDRA_DECLARE_NAMED_PREVIOUS_STORAGE( private, set_previousdF1dFn, get_previousdF1dFn, previousdF1dFn, floatVector, setPreviousFirstConfigurationJacobians ) diff --git a/src/cpp/tardigrade_hydraLinearElasticity.cpp b/src/cpp/tardigrade_hydraLinearElasticity.cpp index 6eb8b23..23d4a65 100644 --- a/src/cpp/tardigrade_hydraLinearElasticity.cpp +++ b/src/cpp/tardigrade_hydraLinearElasticity.cpp @@ -40,19 +40,19 @@ namespace tardigradeHydra{ * \param isPrevious: Flag for whether to set the current (false) or previous (true) elastic deformation gradient */ - const unsigned int dim = 3; - const unsigned int sot_dim = dim * dim; + constexpr unsigned int dim = 3; + constexpr unsigned int sot_dim = dim * dim; if ( isPrevious ){ - set_previousFe( floatVector( hydra->get_previousConfigurations( )->begin( ), - hydra->get_previousConfigurations( )->begin( ) + sot_dim ) ); + set_previousFe( secondOrderTensor( hydra->get_previousConfigurations( )->begin( ), + hydra->get_previousConfigurations( )->begin( ) + sot_dim ) ); } else{ - set_Fe( floatVector( hydra->get_configurations( )->begin( ), - hydra->get_configurations( )->begin( ) + sot_dim ) ); + set_Fe( secondOrderTensor( hydra->get_configurations( )->begin( ), + hydra->get_configurations( )->begin( ) + sot_dim ) ); } @@ -141,7 +141,7 @@ namespace tardigradeHydra{ * \param isPrevious: Flag for whether to compute the strain (false) or the previous strain (true) */ - const floatVector *Fe; + const secondOrderTensor *Fe; if ( isPrevious ){ @@ -154,9 +154,9 @@ namespace tardigradeHydra{ } - floatVector Ee; + secondOrderTensor Ee; - floatVector dEedFe; + fourthOrderTensor dEedFe; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeConstitutiveTools::computeGreenLagrangeStrain( *Fe, Ee, dEedFe ) ); @@ -223,10 +223,10 @@ namespace tardigradeHydra{ * \param isPrevious: Flag for whether to compute the current (false) or previous (true) PK2 stress */ - floatVector eye( get_Ee( )->size( ), 0 ); + secondOrderTensor eye( get_Ee( )->size( ), 0 ); tardigradeVectorTools::eye( eye ); - const floatVector *Ee; + const secondOrderTensor *Ee; if ( isPrevious ){ @@ -238,7 +238,7 @@ namespace tardigradeHydra{ Ee = get_Ee( ); } - floatVector PK2Stress = ( *getLambda( ) ) * tardigradeVectorTools::trace( *Ee ) * eye + 2 * ( *getMu( ) ) * ( *Ee ); + secondOrderTensor PK2Stress = ( *getLambda( ) ) * tardigradeVectorTools::trace( *Ee ) * eye + 2 * ( *getMu( ) ) * ( *Ee ); if ( isPrevious ){ @@ -281,13 +281,13 @@ namespace tardigradeHydra{ const unsigned int sot_dim = hydra->getSOTDimension( ); const unsigned int fot_dim = hydra->getFOTDimension( ); - floatVector eye( sot_dim, 0 ); + secondOrderTensor eye( sot_dim, 0 ); tardigradeVectorTools::eye( eye ); - floatVector EYE( fot_dim, 0 ); + fourthOrderTensor EYE( fot_dim, 0 ); tardigradeVectorTools::eye( EYE ); - floatVector dPK2StressdEe = ( *getLambda( ) ) * tardigradeVectorTools::matrixMultiply( eye, eye, sot_dim, 1, 1, sot_dim ) + 2 * ( *getMu( ) ) * EYE; + fourthOrderTensor dPK2StressdEe = ( *getLambda( ) ) * tardigradeVectorTools::matrixMultiply( eye, eye, sot_dim, 1, 1, sot_dim ) + 2 * ( *getMu( ) ) * EYE; set_dPK2StressdEe( dPK2StressdEe ); @@ -321,7 +321,7 @@ namespace tardigradeHydra{ const unsigned int sot_dim = hydra->getSOTDimension( ); - floatVector dPK2StressdFe = tardigradeVectorTools::matrixMultiply( *get_dPK2StressdEe( ), *get_dEedFe( ), sot_dim, sot_dim, sot_dim, sot_dim ); + fourthOrderTensor dPK2StressdFe = tardigradeVectorTools::matrixMultiply( *get_dPK2StressdEe( ), *get_dEedFe( ), sot_dim, sot_dim, sot_dim, sot_dim ); set_dPK2StressdFe( dPK2StressdFe ); @@ -333,7 +333,7 @@ namespace tardigradeHydra{ * deformation gradient */ - floatVector dPK2StressdPreviousFe( get_PK2Stress( )->size( ) * get_previousEe( )->size( ), 0 ); + fourthOrderTensor dPK2StressdPreviousFe( get_PK2Stress( )->size( ) * get_previousEe( )->size( ), 0 ); set_dPK2StressdPreviousFe( dPK2StressdPreviousFe ); @@ -347,7 +347,7 @@ namespace tardigradeHydra{ const unsigned int sot_dim = hydra->getSOTDimension( ); - floatVector previousdPK2StressdFe = tardigradeVectorTools::matrixMultiply( *get_previousdPK2StressdEe( ), *get_previousdEedFe( ), sot_dim, sot_dim, sot_dim, sot_dim ); + fourthOrderTensor previousdPK2StressdFe = tardigradeVectorTools::matrixMultiply( *get_previousdPK2StressdEe( ), *get_previousdEedFe( ), sot_dim, sot_dim, sot_dim, sot_dim ); set_previousdPK2StressdFe( previousdPK2StressdFe ); @@ -364,15 +364,15 @@ namespace tardigradeHydra{ unsigned int num_configs = *hydra->getNumConfigurations( ); - const floatVector *Fe; + const secondOrderTensor *Fe; - const floatVector *dFedF; + const fourthOrderTensor *dFedF; const floatVector *dFedFn; - const floatVector *PK2Stress; + const secondOrderTensor *PK2Stress; - const floatVector *dPK2StressdFe; + const fourthOrderTensor *dPK2StressdFe; if ( isPrevious ){ @@ -402,19 +402,19 @@ namespace tardigradeHydra{ } // Compute the Second Piola-Kirchhoff stress and it's gradients - floatVector dPK2StressdF = tardigradeVectorTools::matrixMultiply( *dPK2StressdFe, *dFedF, sot_dim, sot_dim, sot_dim, sot_dim ); + fourthOrderTensor dPK2StressdF = tardigradeVectorTools::matrixMultiply( *dPK2StressdFe, *dFedF, sot_dim, sot_dim, sot_dim, sot_dim ); floatVector dPK2StressdFn = tardigradeVectorTools::matrixMultiply( *dPK2StressdFe, *dFedFn, sot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ); // Map the PK2 stress to the current configuration - floatVector cauchyStress; - floatVector dCauchyStressdPK2Stress; - floatVector dCauchyStressdFe; + secondOrderTensor cauchyStress; + fourthOrderTensor dCauchyStressdPK2Stress; + fourthOrderTensor dCauchyStressdFe; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeConstitutiveTools::pushForwardPK2Stress( *PK2Stress, *Fe, cauchyStress, dCauchyStressdPK2Stress, dCauchyStressdFe ) ); - floatVector dCauchyStressdF = tardigradeVectorTools::matrixMultiply( dCauchyStressdPK2Stress, dPK2StressdF, sot_dim, sot_dim, sot_dim, sot_dim ) - + tardigradeVectorTools::matrixMultiply( dCauchyStressdFe, *dFedF, sot_dim, sot_dim, sot_dim, sot_dim ); + fourthOrderTensor dCauchyStressdF = tardigradeVectorTools::matrixMultiply( dCauchyStressdPK2Stress, dPK2StressdF, sot_dim, sot_dim, sot_dim, sot_dim ) + + tardigradeVectorTools::matrixMultiply( dCauchyStressdFe, *dFedF, sot_dim, sot_dim, sot_dim, sot_dim ); floatVector dCauchyStressdFn = tardigradeVectorTools::matrixMultiply( dCauchyStressdPK2Stress, dPK2StressdFn, sot_dim, sot_dim, sot_dim, sot_dim * ( num_configs - 1 ) ) + tardigradeVectorTools::matrixMultiply( dCauchyStressdFe, *dFedFn, sot_dim, sot_dim, sot_dim, sot_dim * ( num_configs - 1 ) ); @@ -440,7 +440,7 @@ namespace tardigradeHydra{ set_dCauchyStressdFn( dCauchyStressdFn ); - floatVector dPK2StressdPreviousF = tardigradeVectorTools::matrixMultiply( *get_dPK2StressdPreviousFe( ), *get_previousdFedF( ), sot_dim, sot_dim, sot_dim, sot_dim ); + fourthOrderTensor dPK2StressdPreviousF = tardigradeVectorTools::matrixMultiply( *get_dPK2StressdPreviousFe( ), *get_previousdFedF( ), sot_dim, sot_dim, sot_dim, sot_dim ); floatVector dPK2StressdPreviousFn = tardigradeVectorTools::matrixMultiply( *get_dPK2StressdPreviousFe( ), *get_previousdFedFn( ), sot_dim, sot_dim, sot_dim, sot_dim * ( num_configs - 1 ) ); @@ -576,7 +576,7 @@ namespace tardigradeHydra{ * Set the residual value */ - const floatVector *cauchyStress = getStress( ); + const secondOrderTensor *cauchyStress = getStress( ); TARDIGRADE_ERROR_TOOLS_CATCH( setResidual( *cauchyStress - *hydra->getStress( ) ) ); diff --git a/src/cpp/tardigrade_hydraLinearElasticity.h b/src/cpp/tardigrade_hydraLinearElasticity.h index 5907a95..c57009f 100644 --- a/src/cpp/tardigrade_hydraLinearElasticity.h +++ b/src/cpp/tardigrade_hydraLinearElasticity.h @@ -61,7 +61,7 @@ namespace tardigradeHydra{ typedef double floatType; //!< Define the float values type. typedef std::vector< floatType > floatVector; //!< Define a vector of floats typedef std::vector< std::vector< floatType > > floatMatrix; //!< Define a matrix of floats - + /*! * A residual class for a linear-elastic material model where the stress is computed * in the reference configuration and pushed forward to the current configuration. @@ -209,59 +209,59 @@ namespace tardigradeHydra{ floatType _mu; - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, Fe, floatVector, setFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, Fe, secondOrderTensor, setFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dFedF, floatVector, setdFedF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dFedF, fourthOrderTensor, setdFedF ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dFedFn, floatVector, setdFedFn ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dFedFn, floatVector, setdFedFn ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousFe, floatVector, setPreviousFe ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousFe, secondOrderTensor, setPreviousFe ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdFedF, floatVector, setPreviousdFedF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdFedF, fourthOrderTensor, setPreviousdFedF ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdFedFn, floatVector, setPreviousdFedFn ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdFedFn, floatVector, setPreviousdFedFn ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, Ee, floatVector, setEe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, Ee, secondOrderTensor, setEe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dEedFe, floatVector, setdEedFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dEedFe, fourthOrderTensor, setdEedFe ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousEe, floatVector, setPreviousEe ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousEe, secondOrderTensor, setPreviousEe ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdEedFe, floatVector, setPreviousdEedFe ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdEedFe, fourthOrderTensor, setPreviousdEedFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, PK2Stress, floatVector, setPK2Stress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, PK2Stress, secondOrderTensor, setPK2Stress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2StressdEe, floatVector, setdPK2StressdEe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2StressdEe, fourthOrderTensor, setdPK2StressdEe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2StressdFe, floatVector, setdPK2StressdFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2StressdFe, fourthOrderTensor, setdPK2StressdFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2StressdPreviousFe, floatVector, setdPK2StressdPreviousFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2StressdPreviousFe, fourthOrderTensor, setdPK2StressdPreviousFe ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPK2Stress, floatVector, setPreviousPK2Stress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPK2Stress, secondOrderTensor, setPreviousPK2Stress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPK2StressdEe, floatVector, setPreviousdPK2StressdEe ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPK2StressdEe, fourthOrderTensor, setPreviousdPK2StressdEe ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPK2StressdFe, floatVector, setPreviousdPK2StressdFe ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPK2StressdFe, fourthOrderTensor, setPreviousdPK2StressdFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, cauchyStress, floatVector, setCauchyStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, cauchyStress, secondOrderTensor, setCauchyStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdPK2Stress, floatVector, setdCauchyStressdPK2Stress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdPK2Stress, fourthOrderTensor, setdCauchyStressdPK2Stress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdF, floatVector, setdCauchyStressdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdF, fourthOrderTensor, setdCauchyStressdF ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdFn, floatVector, setdCauchyStressdFn ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdFn, floatVector, setdCauchyStressdFn ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdPreviousF, floatVector, setdCauchyStressdPreviousF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdPreviousF, fourthOrderTensor, setdCauchyStressdPreviousF ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdPreviousFn, floatVector, setdCauchyStressdPreviousFn ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdPreviousFn, floatVector, setdCauchyStressdPreviousFn ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousCauchyStress, floatVector, setPreviousCauchyStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousCauchyStress, secondOrderTensor, setPreviousCauchyStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdCauchyStressdPK2Stress, floatVector, setPreviousdCauchyStressdPK2Stress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdCauchyStressdPK2Stress, fourthOrderTensor, setPreviousdCauchyStressdPK2Stress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdCauchyStressdF, floatVector, setPreviousdCauchyStressdF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdCauchyStressdF, fourthOrderTensor, setPreviousdCauchyStressdF ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdCauchyStressdFn, floatVector, setPreviousdCauchyStressdFn ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdCauchyStressdFn, floatVector, setPreviousdCauchyStressdFn ) }; diff --git a/src/cpp/tardigrade_hydraLinearViscoelasticity.cpp b/src/cpp/tardigrade_hydraLinearViscoelasticity.cpp index 28a08f8..e1a8b68 100644 --- a/src/cpp/tardigrade_hydraLinearViscoelasticity.cpp +++ b/src/cpp/tardigrade_hydraLinearViscoelasticity.cpp @@ -198,7 +198,7 @@ namespace tardigradeHydra{ floatType Je; - floatVector Fehat; + secondOrderTensor Fehat; TARDIGRADE_ERROR_TOOLS_CATCH( decomposeDeformation( *get_Fe( ), Je, Fehat ) ); @@ -215,7 +215,7 @@ namespace tardigradeHydra{ floatType previousJe; - floatVector previousFehat; + secondOrderTensor previousFehat; TARDIGRADE_ERROR_TOOLS_CATCH( decomposeDeformation( *get_previousFe( ), previousJe, previousFehat ) ); @@ -225,7 +225,7 @@ namespace tardigradeHydra{ } - void residual::decomposeDeformation( const floatVector &F, floatType &J, floatVector &Fhat ){ + void residual::decomposeDeformation( const secondOrderTensor &F, floatType &J, secondOrderTensor &Fhat ){ /*! * Decompose a deformation into volumetric and isochoric parts where * @@ -254,7 +254,7 @@ namespace tardigradeHydra{ const unsigned int dim = hydra->getDimension( ); - const floatVector *Fe; + const secondOrderTensor *Fe; if ( isPrevious ){ @@ -267,7 +267,7 @@ namespace tardigradeHydra{ } - floatVector dJedFe = tardigradeVectorTools::computeDDetADA( *Fe, dim, dim ); + secondOrderTensor dJedFe = tardigradeVectorTools::computeDDetADA( *Fe, dim, dim ); if ( isPrevious ){ @@ -334,9 +334,9 @@ namespace tardigradeHydra{ const floatType *Je; - const floatVector *Fe; + const secondOrderTensor *Fe; - const floatVector *dJedFe; + const secondOrderTensor *dJedFe; if ( isPrevious ){ @@ -357,7 +357,7 @@ namespace tardigradeHydra{ } - floatVector dFehatdFe( sot_dim * sot_dim, 0 ); + fourthOrderTensor dFehatdFe( sot_dim * sot_dim, 0 ); tardigradeVectorTools::eye< floatType >( dFehatdFe ); dFehatdFe *= std::pow( ( *Je ), -1. / 3 ); @@ -669,7 +669,7 @@ namespace tardigradeHydra{ const floatType *Je; - const floatVector *dJedFe; + const secondOrderTensor *dJedFe; const floatType *previousJe = get_previousJe( ); @@ -988,11 +988,11 @@ namespace tardigradeHydra{ const unsigned int sot_dim = dim * dim; - const floatVector *Fehat; + const secondOrderTensor *Fehat; - const floatVector *previousFehat = get_previousFehat( ); + const secondOrderTensor *previousFehat = get_previousFehat( ); - const floatVector *dFehatdFe; + const fourthOrderTensor *dFehatdFe; floatType time; @@ -1033,13 +1033,13 @@ namespace tardigradeHydra{ // Compute the strain measures - floatVector isochoricStrain, previousIsochoricStrain; - floatVector dEehatdFehat, previousdEehatdFehat; + secondOrderTensor isochoricStrain, previousIsochoricStrain; + fourthOrderTensor dEehatdFehat, previousdEehatdFehat; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeConstitutiveTools::computeGreenLagrangeStrain( *Fehat, isochoricStrain, dEehatdFehat ) ); TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeConstitutiveTools::computeGreenLagrangeStrain( *previousFehat, previousIsochoricStrain, previousdEehatdFehat ) ); - floatVector dEehatdFe = tardigradeVectorTools::matrixMultiply( dEehatdFehat, *dFehatdFe, sot_dim, sot_dim, sot_dim, sot_dim ); + fourthOrderTensor dEehatdFe = tardigradeVectorTools::matrixMultiply( dEehatdFehat, *dFehatdFe, sot_dim, sot_dim, sot_dim, sot_dim ); // Get the previous state variable values @@ -1050,23 +1050,23 @@ namespace tardigradeHydra{ TARDIGRADE_ERROR_TOOLS_CATCH( decomposeStateVariableVector( previousVolumetricStateVariables, previousIsochoricStateVariables ) ); - floatVector PK2IsochoricStress; + secondOrderTensor PK2IsochoricStress; - floatVector deltaPK2IsochoricStress; + secondOrderTensor deltaPK2IsochoricStress; floatVector currentIsochoricStateVariables; floatMatrix _dPK2IsochoricStressdEe; - floatVector dPK2IsochoricStressdEe; + fourthOrderTensor dPK2IsochoricStressdEe; - floatVector dPK2IsochoricStressdRateMultiplier; + secondOrderTensor dPK2IsochoricStressdRateMultiplier; floatMatrix _dPK2IsochoricStressdPreviousEe; - floatVector dPK2IsochoricStressdPreviousEe; + fourthOrderTensor dPK2IsochoricStressdPreviousEe; - floatVector dPK2IsochoricStressdPreviousRateMultiplier; + secondOrderTensor dPK2IsochoricStressdPreviousRateMultiplier; floatMatrix _dPK2IsochoricStressdPreviousIsochoricISVs; @@ -1135,7 +1135,7 @@ namespace tardigradeHydra{ set_dPK2IsochoricStressdT( dPK2IsochoricStressdRateMultiplier * ( *dIsochoricRateMultiplierdT ) ); - floatVector previousdEehatdFe = tardigradeVectorTools::matrixMultiply( previousdEehatdFehat, *get_previousdFehatdFe( ), sot_dim, sot_dim, sot_dim, sot_dim ); + fourthOrderTensor previousdEehatdFe = tardigradeVectorTools::matrixMultiply( previousdEehatdFehat, *get_previousdFehatdFe( ), sot_dim, sot_dim, sot_dim, sot_dim ); set_dPK2IsochoricStressdPreviousFe( tardigradeVectorTools::matrixMultiply( dPK2IsochoricStressdPreviousEe, previousdEehatdFe, sot_dim, sot_dim, sot_dim, sot_dim ) ); @@ -1337,10 +1337,10 @@ namespace tardigradeHydra{ * \param isPrevious: Flag for if to compute the current (false) or previous (true) PK2 stress */ - floatVector eye( hydra->getSOTDimension( ), 0 ); + secondOrderTensor eye( hydra->getSOTDimension( ), 0 ); tardigradeVectorTools::eye( eye ); - const floatVector *isochoric; + const secondOrderTensor *isochoric; const floatType *mean; @@ -1359,7 +1359,7 @@ namespace tardigradeHydra{ } - floatVector PK2Stress = ( *isochoric ) + ( *mean ) * eye; + secondOrderTensor PK2Stress = ( *isochoric ) + ( *mean ) * eye; if ( isPrevious ){ @@ -1402,12 +1402,12 @@ namespace tardigradeHydra{ const unsigned int dim = hydra->getDimension( ); const unsigned int sot_dim = dim * dim; - floatVector eye( sot_dim, 0 ); + secondOrderTensor eye( sot_dim, 0 ); tardigradeVectorTools::eye( eye ); - const floatVector *dIsodFe; + const fourthOrderTensor *dIsodFe; - const floatVector *dMeandFe; + const secondOrderTensor *dMeandFe; if ( isPrevious ){ @@ -1424,7 +1424,7 @@ namespace tardigradeHydra{ } - floatVector dPK2StressdFe = *dIsodFe + tardigradeVectorTools::matrixMultiply( eye, *dMeandFe, sot_dim, 1, 1, sot_dim ); + fourthOrderTensor dPK2StressdFe = *dIsodFe + tardigradeVectorTools::matrixMultiply( eye, *dMeandFe, sot_dim, 1, 1, sot_dim ); if ( isPrevious ){ @@ -1455,10 +1455,10 @@ namespace tardigradeHydra{ * Set the derivative of the second Piola-Kirchhoff stress w.r.t. the temperature */ - floatVector eye( hydra->getSOTDimension( ), 0 ); + secondOrderTensor eye( hydra->getSOTDimension( ), 0 ); tardigradeVectorTools::eye( eye ); - floatVector dPK2StressdT = *get_dPK2IsochoricStressdT( ) + *get_dPK2MeanStressdT( ) * eye; + secondOrderTensor dPK2StressdT = *get_dPK2IsochoricStressdT( ) + *get_dPK2MeanStressdT( ) * eye; set_dPK2StressdT( dPK2StressdT ); @@ -1469,10 +1469,10 @@ namespace tardigradeHydra{ * Set the derivative of the second Piola-Kirchhoff stress w.r.t. the previous temperature */ - floatVector eye( hydra->getSOTDimension( ), 0 ); + secondOrderTensor eye( hydra->getSOTDimension( ), 0 ); tardigradeVectorTools::eye( eye ); - floatVector dPK2StressdPreviousT = *get_dPK2IsochoricStressdPreviousT( ) + *get_dPK2MeanStressdPreviousT( ) * eye; + secondOrderTensor dPK2StressdPreviousT = *get_dPK2IsochoricStressdPreviousT( ) + *get_dPK2MeanStressdPreviousT( ) * eye; set_dPK2StressdPreviousT( dPK2StressdPreviousT ); @@ -1483,10 +1483,10 @@ namespace tardigradeHydra{ * Set the prevoius derivative of the second Piola-Kirchhoff stress w.r.t. the temperature */ - floatVector eye( hydra->getSOTDimension( ), 0 ); + secondOrderTensor eye( hydra->getSOTDimension( ), 0 ); tardigradeVectorTools::eye( eye ); - floatVector dPK2StressdT = *get_previousdPK2IsochoricStressdT( ) + *get_previousdPK2MeanStressdT( ) * eye; + secondOrderTensor dPK2StressdT = *get_previousdPK2IsochoricStressdT( ) + *get_previousdPK2MeanStressdT( ) * eye; set_previousdPK2StressdT( dPK2StressdT ); @@ -1500,7 +1500,7 @@ namespace tardigradeHydra{ const unsigned int sot_dim = hydra->getSOTDimension( ); const unsigned int num_isvs = get_dPK2MeanStressdPreviousISVs( )->size( ); - floatVector eye( sot_dim, 0 ); + secondOrderTensor eye( sot_dim, 0 ); tardigradeVectorTools::eye( eye ); floatVector dPK2StressdPreviousISVs = *get_dPK2IsochoricStressdPreviousISVs( ) + tardigradeVectorTools::matrixMultiply( eye, *get_dPK2MeanStressdPreviousISVs( ), sot_dim, 1, 1, num_isvs ); @@ -1516,7 +1516,7 @@ namespace tardigradeHydra{ const unsigned int sot_dim = hydra->getSOTDimension( ); - floatVector dCauchyStressdT = tardigradeVectorTools::matrixMultiply( *get_dCauchyStressdPK2Stress( ), *get_dPK2StressdT( ), sot_dim, sot_dim, sot_dim, 1 ); + secondOrderTensor dCauchyStressdT = tardigradeVectorTools::matrixMultiply( *get_dCauchyStressdPK2Stress( ), *get_dPK2StressdT( ), sot_dim, sot_dim, sot_dim, 1 ); set_dCauchyStressdT( dCauchyStressdT ); @@ -1529,7 +1529,7 @@ namespace tardigradeHydra{ const unsigned int sot_dim = hydra->getSOTDimension( ); - floatVector dCauchyStressdPreviousT = tardigradeVectorTools::matrixMultiply( *get_dCauchyStressdPK2Stress( ), *get_dPK2StressdPreviousT( ), sot_dim, sot_dim, sot_dim, 1 ); + secondOrderTensor dCauchyStressdPreviousT = tardigradeVectorTools::matrixMultiply( *get_dCauchyStressdPK2Stress( ), *get_dPK2StressdPreviousT( ), sot_dim, sot_dim, sot_dim, 1 ); set_dCauchyStressdPreviousT( dCauchyStressdPreviousT ); @@ -1557,7 +1557,7 @@ namespace tardigradeHydra{ const unsigned int sot_dim = hydra->getSOTDimension( ); - floatVector previousdCauchyStressdT = tardigradeVectorTools::matrixMultiply( *get_dCauchyStressdPK2Stress( ), *get_previousdPK2StressdT( ), sot_dim, sot_dim, sot_dim, 1 ); + secondOrderTensor previousdCauchyStressdT = tardigradeVectorTools::matrixMultiply( *get_dCauchyStressdPK2Stress( ), *get_previousdPK2StressdT( ), sot_dim, sot_dim, sot_dim, 1 ); set_previousdCauchyStressdT( previousdCauchyStressdT ); diff --git a/src/cpp/tardigrade_hydraLinearViscoelasticity.h b/src/cpp/tardigrade_hydraLinearViscoelasticity.h index 917aec8..af115ee 100644 --- a/src/cpp/tardigrade_hydraLinearViscoelasticity.h +++ b/src/cpp/tardigrade_hydraLinearViscoelasticity.h @@ -123,7 +123,7 @@ namespace tardigradeHydra{ //! Get the time constants for the isochoric moduli const floatVector* getIsochoricTaus( ){ return &_isochoricTaus; } - virtual void decomposeDeformation( const floatVector &F, floatType &J, floatVector &Fhat ); + virtual void decomposeDeformation( const secondOrderTensor &F, floatType &J, secondOrderTensor &Fhat ); //! Get a pointer to the number of volumetric temperature parameters const floatVector* getVolumetricTemperatureParameters( ){ return &_volumetricTemperatureParameters; } @@ -333,113 +333,113 @@ namespace tardigradeHydra{ // Friend classes friend class tardigradeHydra::linearViscoelasticity::unit_test::residualTester; //!< Friend class which allows modification of private variables. ONLY TO BE USED FOR TESTING! - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, Je, floatType, decomposeElasticDeformation ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, Je, floatType, decomposeElasticDeformation ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, Fehat, floatVector, decomposeElasticDeformation ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, Fehat, secondOrderTensor, decomposeElasticDeformation ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousJe, floatType, decomposePreviousElasticDeformation ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousJe, floatType, decomposePreviousElasticDeformation ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousFehat, floatVector, decomposePreviousElasticDeformation ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousFehat, secondOrderTensor, decomposePreviousElasticDeformation ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dJedFe, floatVector, setdJedFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dJedFe, secondOrderTensor, setdJedFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dFehatdFe, floatVector, setdFehatdFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dFehatdFe, fourthOrderTensor, setdFehatdFe ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdJedFe, floatVector, setPreviousdJedFe ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdJedFe, secondOrderTensor, setPreviousdJedFe ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdFehatdFe, floatVector, setPreviousdFehatdFe ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdFehatdFe, fourthOrderTensor, setPreviousdFehatdFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, volumetricRateMultiplier, floatType, setVolumetricRateMultiplier ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, volumetricRateMultiplier, floatType, setVolumetricRateMultiplier ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousVolumetricRateMultiplier, floatType, setPreviousVolumetricRateMultiplier ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousVolumetricRateMultiplier, floatType, setPreviousVolumetricRateMultiplier ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, isochoricRateMultiplier, floatType, setIsochoricRateMultiplier ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, isochoricRateMultiplier, floatType, setIsochoricRateMultiplier ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousIsochoricRateMultiplier, floatType, setPreviousIsochoricRateMultiplier ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousIsochoricRateMultiplier, floatType, setPreviousIsochoricRateMultiplier ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVolumetricRateMultiplierdT, floatType, setdVolumetricRateMultiplierdT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVolumetricRateMultiplierdT, floatType, setdVolumetricRateMultiplierdT ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousVolumetricRateMultiplierdPreviousT, floatType, setdPreviousVolumetricRateMultiplierdPreviousT ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousVolumetricRateMultiplierdPreviousT, floatType, setdPreviousVolumetricRateMultiplierdPreviousT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dIsochoricRateMultiplierdT, floatType, setdIsochoricRateMultiplierdT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dIsochoricRateMultiplierdT, floatType, setdIsochoricRateMultiplierdT ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousIsochoricRateMultiplierdPreviousT, floatType, setdPreviousIsochoricRateMultiplierdPreviousT ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousIsochoricRateMultiplierdPreviousT, floatType, setdPreviousIsochoricRateMultiplierdPreviousT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, volumetricViscoelasticStateVariables, floatVector, setUpdatedVolumetricViscoelasticStateVariables ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, volumetricViscoelasticStateVariables, floatVector, setUpdatedVolumetricViscoelasticStateVariables ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, isochoricViscoelasticStateVariables, floatVector, setUpdatedIsochoricViscoelasticStateVariables ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, isochoricViscoelasticStateVariables, floatVector, setUpdatedIsochoricViscoelasticStateVariables ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, PK2MeanStress, floatType, setPK2MeanStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, PK2MeanStress, floatType, setPK2MeanStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, PK2IsochoricStress, floatVector, setPK2IsochoricStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, PK2IsochoricStress, secondOrderTensor, setPK2IsochoricStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2MeanStressdT, floatType, setdPK2MeanStressdT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2MeanStressdT, floatType, setdPK2MeanStressdT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2MeanStressdFe, floatVector, setdPK2MeanStressdFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2MeanStressdFe, fourthOrderTensor, setdPK2MeanStressdFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2MeanStressdPreviousT, floatType, setdPK2MeanStressdPreviousT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2MeanStressdPreviousT, floatType, setdPK2MeanStressdPreviousT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2MeanStressdPreviousFe, floatVector, setdPK2MeanStressdPreviousFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2MeanStressdPreviousFe, secondOrderTensor, setdPK2MeanStressdPreviousFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2MeanStressdPreviousISVs, floatVector, setdPK2MeanStressdPreviousISVs ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2MeanStressdPreviousISVs, floatVector, setdPK2MeanStressdPreviousISVs ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVolumetricISVsdT, floatVector, setdVolumetricISVsdT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVolumetricISVsdT, floatVector, setdVolumetricISVsdT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVolumetricISVsdFe, floatVector, setdVolumetricISVsdFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVolumetricISVsdFe, floatVector, setdVolumetricISVsdFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVolumetricISVsdPreviousT, floatVector, setdVolumetricISVsdPreviousT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVolumetricISVsdPreviousT, floatVector, setdVolumetricISVsdPreviousT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVolumetricISVsdPreviousFe, floatVector, setdVolumetricISVsdPreviousFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVolumetricISVsdPreviousFe, floatVector, setdVolumetricISVsdPreviousFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVolumetricISVsdPreviousISVs, floatVector, setdPK2MeanStressdPreviousISVs ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVolumetricISVsdPreviousISVs, floatVector, setdPK2MeanStressdPreviousISVs ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2IsochoricStressdT, floatVector, setdPK2IsochoricStressdT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2IsochoricStressdT, secondOrderTensor, setdPK2IsochoricStressdT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2IsochoricStressdFe, floatVector, setdPK2IsochoricStressdFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2IsochoricStressdFe, secondOrderTensor, setdPK2IsochoricStressdFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2IsochoricStressdPreviousT, floatVector, setdPK2IsochoricStressdPreviousT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2IsochoricStressdPreviousT, secondOrderTensor, setdPK2IsochoricStressdPreviousT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2IsochoricStressdPreviousFe, floatVector, setdPK2IsochoricStressdPreviousFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2IsochoricStressdPreviousFe, fourthOrderTensor, setdPK2IsochoricStressdPreviousFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2IsochoricStressdPreviousISVs, floatVector, setdPK2IsochoricStressdPreviousISVs ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2IsochoricStressdPreviousISVs, floatVector, setdPK2IsochoricStressdPreviousISVs ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dIsochoricISVsdT, floatVector, setdIsochoricISVsdT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dIsochoricISVsdT, floatVector, setdIsochoricISVsdT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dIsochoricISVsdFe, floatVector, setdIsochoricISVsdFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dIsochoricISVsdFe, floatVector, setdIsochoricISVsdFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dIsochoricISVsdPreviousT, floatVector, setdIsochoricISVsdPreviousT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dIsochoricISVsdPreviousT, floatVector, setdIsochoricISVsdPreviousT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dIsochoricISVsdPreviousFe, floatVector, setdIsochoricISVsdPreviousFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dIsochoricISVsdPreviousFe, floatVector, setdIsochoricISVsdPreviousFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dIsochoricISVsdPreviousISVs, floatVector, setdIsochoricISVsdPreviousISVs ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dIsochoricISVsdPreviousISVs, floatVector, setdIsochoricISVsdPreviousISVs ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, previousPK2MeanStress, floatType, setPreviousPK2MeanStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, previousPK2MeanStress, floatType, setPreviousPK2MeanStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, previousPK2IsochoricStress, floatVector, setPreviousPK2IsochoricStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, previousPK2IsochoricStress, secondOrderTensor, setPreviousPK2IsochoricStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, previousdPK2MeanStressdT, floatType, setPreviousdPK2MeanStressdT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, previousdPK2MeanStressdT, floatType, setPreviousdPK2MeanStressdT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, previousdPK2MeanStressdFe, floatVector, setPreviousdPK2MeanStressdFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, previousdPK2MeanStressdFe, secondOrderTensor, setPreviousdPK2MeanStressdFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, previousdPK2IsochoricStressdT, floatVector, setPreviousdPK2IsochoricStressdT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, previousdPK2IsochoricStressdT, secondOrderTensor, setPreviousdPK2IsochoricStressdT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, previousdPK2IsochoricStressdFe, floatVector, setPreviousdPK2IsochoricStressdFe ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, previousdPK2IsochoricStressdFe, fourthOrderTensor, setPreviousdPK2IsochoricStressdFe ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2StressdT, floatVector, setdPK2StressdT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2StressdT, secondOrderTensor, setdPK2StressdT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2StressdPreviousT, floatVector, setdPK2StressdPreviousT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2StressdPreviousT, secondOrderTensor, setdPK2StressdPreviousT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2StressdPreviousISVs, floatVector, setdPK2StressdPreviousISVs ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPK2StressdPreviousISVs, floatVector, setdPK2StressdPreviousISVs ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPK2StressdT, floatVector, setPreviousdPK2StressdT ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPK2StressdT, secondOrderTensor, setPreviousdPK2StressdT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdT, floatVector, setdCauchyStressdT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdT, secondOrderTensor, setdCauchyStressdT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdPreviousT, floatVector, setdCauchyStressdPreviousT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdPreviousT, secondOrderTensor, setdCauchyStressdPreviousT ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdPreviousISVs, floatVector, setdCauchyStressdPreviousISVs ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dCauchyStressdPreviousISVs, floatVector, setdCauchyStressdPreviousISVs ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdCauchyStressdT, floatVector, setPreviousdCauchyStressdT ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdCauchyStressdT, secondOrderTensor, setPreviousdCauchyStressdT ) }; diff --git a/src/cpp/tardigrade_hydraMassChange.cpp b/src/cpp/tardigrade_hydraMassChange.cpp index e786f1d..fbbcfbb 100644 --- a/src/cpp/tardigrade_hydraMassChange.cpp +++ b/src/cpp/tardigrade_hydraMassChange.cpp @@ -27,8 +27,8 @@ namespace tardigradeHydra{ set_massChangeRate( ( *hydra->getAdditionalDOF( ) )[ 1 ] ); - set_directionVector( floatVector( hydra->getAdditionalDOF( )->begin( ) + 2, - hydra->getAdditionalDOF( )->begin( ) + 5 ) ); + set_directionVector( dimVector( hydra->getAdditionalDOF( )->begin( ) + 2, + hydra->getAdditionalDOF( )->begin( ) + 5 ) ); set_previousDensity( ( *hydra->getPreviousAdditionalDOF( ) )[ 0 ] ); @@ -196,7 +196,7 @@ namespace tardigradeHydra{ const unsigned int dim = hydra->getDimension( ); - const floatVector *directionVector; + const dimVector *directionVector; if ( isPrevious ){ @@ -211,7 +211,7 @@ namespace tardigradeHydra{ floatType normDirectionVector = tardigradeVectorTools::l2norm( *directionVector ); - floatVector unitDirectionVector( dim, 0 ); + dimVector unitDirectionVector( dim, 0 ); if ( std::isfinite( 1. / normDirectionVector ) ){ @@ -261,7 +261,7 @@ namespace tardigradeHydra{ const unsigned int sot_dim = dim * dim; - const floatVector *directionVector; + const dimVector *directionVector; if ( isPrevious ){ @@ -276,9 +276,9 @@ namespace tardigradeHydra{ floatType normDirectionVector = tardigradeVectorTools::l2norm( *directionVector ); - floatVector unitDirectionVector( dim, 0 ); + dimVector unitDirectionVector( dim, 0 ); - floatVector dUnitDirectionVectordDirectionVector( sot_dim, 0 ); + secondOrderTensor dUnitDirectionVectordDirectionVector( sot_dim, 0 ); if ( std::isfinite( 1. / normDirectionVector ) ){ @@ -353,7 +353,7 @@ namespace tardigradeHydra{ const floatType *velocityGradientTrace = get_massChangeVelocityGradientTrace( ); - const floatVector *unitDirectionVector; + const dimVector *unitDirectionVector; if ( isPrevious ){ @@ -370,7 +370,7 @@ namespace tardigradeHydra{ } - floatVector velocityGradient( sot_dim, 0 ); + secondOrderTensor velocityGradient( sot_dim, 0 ); floatType a = ( *velocityGradientTrace ) / ( 3. - 2. * ( *massDirectionMixingParameter ) ); @@ -437,9 +437,9 @@ namespace tardigradeHydra{ const floatType *dVelocityGradientTracedMassChangeRate; - const floatVector *unitDirectionVector; + const dimVector *unitDirectionVector; - const floatVector *dUnitDirectionVectordDirectionVector; + const secondOrderTensor *dUnitDirectionVectordDirectionVector; if ( isPrevious ){ @@ -468,13 +468,13 @@ namespace tardigradeHydra{ } - floatVector velocityGradient( sot_dim, 0 ); + secondOrderTensor velocityGradient( sot_dim, 0 ); - floatVector dVelocityGradientdDensity( sot_dim, 0 ); + secondOrderTensor dVelocityGradientdDensity( sot_dim, 0 ); - floatVector dVelocityGradientdMassChangeRate( sot_dim, 0 ); + secondOrderTensor dVelocityGradientdMassChangeRate( sot_dim, 0 ); - floatVector dVelocityGradientdDirectionVector( tot_dim, 0 ); + thirdOrderTensor dVelocityGradientdDirectionVector( tot_dim, 0 ); floatType a = ( *velocityGradientTrace ) / ( 3. - 2. * ( *massDirectionMixingParameter ) ); @@ -661,7 +661,7 @@ namespace tardigradeHydra{ const unsigned int num_configs = *hydra->getNumConfigurations( ); - const floatVector *dF1dF; + const fourthOrderTensor *dF1dF; const floatVector *dF1dFn; @@ -690,7 +690,7 @@ namespace tardigradeHydra{ } - floatVector dpFdF( sot_dim * sot_dim, 0 ); + fourthOrderTensor dpFdF( sot_dim * sot_dim, 0 ); floatVector dpFdFn( sot_dim * sot_dim * ( num_configs - 1 ), 0 ); @@ -802,9 +802,9 @@ namespace tardigradeHydra{ * \param &isPrevious: Flag for whether this is being computed for the current or previous timestep */ - const floatVector *velocityGradient; + const secondOrderTensor *velocityGradient; - const floatVector *precedingDeformationGradient; + const secondOrderTensor *precedingDeformationGradient; if ( isPrevious ){ @@ -821,7 +821,7 @@ namespace tardigradeHydra{ } - floatVector intermediateVelocityGradient; + secondOrderTensor intermediateVelocityGradient; tardigradeConstitutiveTools::pullBackVelocityGradient( *velocityGradient, *precedingDeformationGradient, intermediateVelocityGradient ); @@ -853,17 +853,17 @@ namespace tardigradeHydra{ const unsigned int num_configs = *hydra->getNumConfigurations( ); - const floatVector *velocityGradient; + const secondOrderTensor *velocityGradient; - const floatVector *precedingDeformationGradient; + const secondOrderTensor *precedingDeformationGradient; - const floatVector *dLdRho; + const secondOrderTensor *dLdRho; - const floatVector *dLdC; + const secondOrderTensor *dLdC; - const floatVector *dLdGradC; + const thirdOrderTensor *dLdGradC; - const floatVector *dPFdF; + const fourthOrderTensor *dPFdF; const floatVector *dPFdFn; @@ -902,19 +902,19 @@ namespace tardigradeHydra{ } - floatVector intermediateVelocityGradient; + secondOrderTensor intermediateVelocityGradient; - floatVector dILdL, dILdPF; + fourthOrderTensor dILdL, dILdPF; tardigradeConstitutiveTools::pullBackVelocityGradient( *velocityGradient, *precedingDeformationGradient, intermediateVelocityGradient, dILdL, dILdPF ); - floatVector dILdRho( sot_dim, 0 ); + secondOrderTensor dILdRho( sot_dim, 0 ); - floatVector dILdC( sot_dim, 0 ); + secondOrderTensor dILdC( sot_dim, 0 ); - floatVector dILdGradC( tot_dim, 0 ); + thirdOrderTensor dILdGradC( tot_dim, 0 ); - floatVector dILdF( sot_dim * sot_dim, 0 ); + fourthOrderTensor dILdF( sot_dim * sot_dim, 0 ); floatVector dILdFn( ( num_configs - 1 ) * sot_dim * sot_dim, 0 ); @@ -1094,13 +1094,13 @@ namespace tardigradeHydra{ * Set the mass-change deformation gradient */ - const floatVector *intermediateVelocityGradient = get_massChangeIntermediateVelocityGradient( ); + const secondOrderTensor *intermediateVelocityGradient = get_massChangeIntermediateVelocityGradient( ); - const floatVector *previousIntermediateVelocityGradient = get_previousMassChangeIntermediateVelocityGradient( ); + const secondOrderTensor *previousIntermediateVelocityGradient = get_previousMassChangeIntermediateVelocityGradient( ); - const floatVector previousMassChangeDeformationGradient = hydra->getPreviousConfiguration( *getMassChangeConfigurationIndex( ) ); + const secondOrderTensor previousMassChangeDeformationGradient = hydra->getPreviousConfiguration( *getMassChangeConfigurationIndex( ) ); - floatVector massChangeDeformationGradient; + secondOrderTensor massChangeDeformationGradient; TARDIGRADE_ERROR_TOOLS_CATCH( tardigradeConstitutiveTools::evolveFExponentialMap( *hydra->getDeltaTime( ), previousMassChangeDeformationGradient, *previousIntermediateVelocityGradient, *intermediateVelocityGradient, @@ -1126,41 +1126,41 @@ namespace tardigradeHydra{ const unsigned int num_configs = *hydra->getNumConfigurations( ); - const floatVector *intermediateVelocityGradient = get_massChangeIntermediateVelocityGradient( ); + const secondOrderTensor *intermediateVelocityGradient = get_massChangeIntermediateVelocityGradient( ); - const floatVector *dLdRho = get_dMassChangeIntermediateVelocityGradientdDensity( ); + const secondOrderTensor *dLdRho = get_dMassChangeIntermediateVelocityGradientdDensity( ); - const floatVector *dLdC = get_dMassChangeIntermediateVelocityGradientdMassChangeRate( ); + const secondOrderTensor *dLdC = get_dMassChangeIntermediateVelocityGradientdMassChangeRate( ); - const floatVector *dLdGradC = get_dMassChangeIntermediateVelocityGradientdDirectionVector( ); + const thirdOrderTensor *dLdGradC = get_dMassChangeIntermediateVelocityGradientdDirectionVector( ); - const floatVector *dLdF = get_dMassChangeIntermediateVelocityGradientdDeformationGradient( ); + const fourthOrderTensor *dLdF = get_dMassChangeIntermediateVelocityGradientdDeformationGradient( ); const floatVector *dLdFn = get_dMassChangeIntermediateVelocityGradientdSubDeformationGradients( ); - const floatVector *previousIntermediateVelocityGradient = get_previousMassChangeIntermediateVelocityGradient( ); + const secondOrderTensor *previousIntermediateVelocityGradient = get_previousMassChangeIntermediateVelocityGradient( ); - const floatVector previousMassChangeDeformationGradient = hydra->getPreviousConfiguration( *getMassChangeConfigurationIndex( ) ); + const secondOrderTensor previousMassChangeDeformationGradient = hydra->getPreviousConfiguration( *getMassChangeConfigurationIndex( ) ); - floatVector massChangeDeformationGradient; + secondOrderTensor massChangeDeformationGradient; - floatVector dFmdL; + fourthOrderTensor dFmdL; if ( computePrevious ){ - const floatVector *dLpdRho = get_dPreviousMassChangeIntermediateVelocityGradientdPreviousDensity( ); + const secondOrderTensor *dLpdRho = get_dPreviousMassChangeIntermediateVelocityGradientdPreviousDensity( ); - const floatVector *dLpdC = get_dPreviousMassChangeIntermediateVelocityGradientdPreviousMassChangeRate( ); + const secondOrderTensor *dLpdC = get_dPreviousMassChangeIntermediateVelocityGradientdPreviousMassChangeRate( ); - const floatVector *dLpdGradC = get_dPreviousMassChangeIntermediateVelocityGradientdPreviousDirectionVector( ); + const thirdOrderTensor *dLpdGradC = get_dPreviousMassChangeIntermediateVelocityGradientdPreviousDirectionVector( ); - const floatVector *dLpdF = get_dPreviousMassChangeIntermediateVelocityGradientdPreviousDeformationGradient( ); + const fourthOrderTensor *dLpdF = get_dPreviousMassChangeIntermediateVelocityGradientdPreviousDeformationGradient( ); const floatVector *dLpdFn = get_dPreviousMassChangeIntermediateVelocityGradientdPreviousSubDeformationGradients( ); - floatVector dFmdFp; + fourthOrderTensor dFmdFp; - floatVector dFmdLp; + fourthOrderTensor dFmdLp; TARDIGRADE_ERROR_TOOLS_CATCH( tardigradeConstitutiveTools::evolveFExponentialMap( *hydra->getDeltaTime( ), previousMassChangeDeformationGradient, *previousIntermediateVelocityGradient, *intermediateVelocityGradient, @@ -1168,13 +1168,13 @@ namespace tardigradeHydra{ dFmdL, dFmdFp, dFmdLp, *getIntegrationParameter( ) ) ) - floatVector dFmdPreviousRho( sot_dim, 0 ); + secondOrderTensor dFmdPreviousRho( sot_dim, 0 ); - floatVector dFmdPreviousC( sot_dim, 0 ); + secondOrderTensor dFmdPreviousC( sot_dim, 0 ); - floatVector dFmdPreviousGradC( tot_dim, 0 ); + thirdOrderTensor dFmdPreviousGradC( tot_dim, 0 ); - floatVector dFmdPreviousF( sot_dim * sot_dim, 0 ); + fourthOrderTensor dFmdPreviousF( sot_dim * sot_dim, 0 ); floatVector dFmdPreviousFn( ( num_configs - 1 ) * sot_dim * sot_dim, 0 ); @@ -1232,13 +1232,13 @@ namespace tardigradeHydra{ } - floatVector dFmdRho( sot_dim, 0 ); + secondOrderTensor dFmdRho( sot_dim, 0 ); - floatVector dFmdC( sot_dim, 0 ); + secondOrderTensor dFmdC( sot_dim, 0 ); - floatVector dFmdGradC( tot_dim, 0 ); + thirdOrderTensor dFmdGradC( tot_dim, 0 ); - floatVector dFmdF( sot_dim * sot_dim, 0 ); + fourthOrderTensor dFmdF( sot_dim * sot_dim, 0 ); floatVector dFmdFn( ( num_configs - 1 ) * sot_dim * sot_dim, 0 ); @@ -1385,8 +1385,8 @@ namespace tardigradeHydra{ const unsigned int massChangeConfigurationIndex = *getMassChangeConfigurationIndex( ); - setResidual( *get_massChangeDeformationGradient( ) - floatVector( hydra->get_configurations( )->begin( ) + massChangeConfigurationIndex * 9, - hydra->get_configurations( )->begin( ) + ( massChangeConfigurationIndex + 1 ) * 9 ) ); + setResidual( *get_massChangeDeformationGradient( ) - secondOrderTensor( hydra->get_configurations( )->begin( ) + massChangeConfigurationIndex * 9, + hydra->get_configurations( )->begin( ) + ( massChangeConfigurationIndex + 1 ) * 9 ) ); } @@ -1430,7 +1430,7 @@ namespace tardigradeHydra{ const unsigned int sot_dim = hydra->getSOTDimension( ); - setdRdT( floatVector( sot_dim, 0 ) ); + setdRdT( secondOrderTensor( sot_dim, 0 ) ); } @@ -1456,11 +1456,11 @@ namespace tardigradeHydra{ const unsigned int num_additional_dof = hydra->getAdditionalDOF( )->size( ); - const floatVector *dMassChangeDeformationdDensity = get_dMassChangeDeformationGradientdDensity( ); + const secondOrderTensor *dMassChangeDeformationdDensity = get_dMassChangeDeformationGradientdDensity( ); - const floatVector *dMassChangeDeformationdMassChangeRate = get_dMassChangeDeformationGradientdMassChangeRate( ); + const secondOrderTensor *dMassChangeDeformationdMassChangeRate = get_dMassChangeDeformationGradientdMassChangeRate( ); - const floatVector *dMassChangeDeformationdDirectionVector = get_dMassChangeDeformationGradientdDirectionVector( ); + const thirdOrderTensor *dMassChangeDeformationdDirectionVector = get_dMassChangeDeformationGradientdDirectionVector( ); floatVector dRdAdditionalDOF( num_equations * num_additional_dof, 0 ); @@ -1510,7 +1510,7 @@ namespace tardigradeHydra{ const unsigned int configuration = *getMassChangeConfigurationIndex( ); - const floatVector *massChangeDeformationGradient = get_massChangeDeformationGradient( ); + const secondOrderTensor *massChangeDeformationGradient = get_massChangeDeformationGradient( ); indices = std::vector< unsigned int >( sot_dim, sot_dim * configuration ); diff --git a/src/cpp/tardigrade_hydraMassChange.h b/src/cpp/tardigrade_hydraMassChange.h index 9e2e611..7b42535 100644 --- a/src/cpp/tardigrade_hydraMassChange.h +++ b/src/cpp/tardigrade_hydraMassChange.h @@ -262,9 +262,9 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, previousMassChangeRate, floatType, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, directionVector, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, directionVector, dimVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, previousDirectionVector, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, previousDirectionVector, dimVector, unexpectedError ) TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, massDirectionMixingParameter, floatType, unexpectedError ) @@ -280,85 +280,85 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousMassChangeVelocityGradientTracedPreviousMassChangeRate, floatType, setdPreviousMassChangeVelocityGradientTracedPreviousMassChangeRate ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, unitDirectionVector, floatVector, setUnitDirectionVector ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, unitDirectionVector, dimVector, setUnitDirectionVector ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousUnitDirectionVector, floatVector, setPreviousUnitDirectionVector ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousUnitDirectionVector, dimVector, setPreviousUnitDirectionVector ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUnitDirectionVectordDirectionVector, floatVector, setdUnitDirectionVectordDirectionVector ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUnitDirectionVectordDirectionVector, secondOrderTensor, setdUnitDirectionVectordDirectionVector ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousUnitDirectionVectordPreviousDirectionVector, floatVector, setdPreviousUnitDirectionVectordPreviousDirectionVector ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousUnitDirectionVectordPreviousDirectionVector, secondOrderTensor, setdPreviousUnitDirectionVectordPreviousDirectionVector ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, massChangeVelocityGradient, floatVector, setMassChangeVelocityGradient ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, massChangeVelocityGradient, dimVector, setMassChangeVelocityGradient ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeVelocityGradientdDensity, floatVector, setdMassChangeVelocityGradientdDensity ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeVelocityGradientdDensity, dimVector, setdMassChangeVelocityGradientdDensity ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeVelocityGradientdMassChangeRate, floatVector, setdMassChangeVelocityGradientdMassChangeRate ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeVelocityGradientdMassChangeRate, dimVector, setdMassChangeVelocityGradientdMassChangeRate ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeVelocityGradientdDirectionVector, floatVector, setdMassChangeVelocityGradientdDirectionVector ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeVelocityGradientdDirectionVector, secondOrderTensor, setdMassChangeVelocityGradientdDirectionVector ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousMassChangeVelocityGradient, floatVector, setPreviousMassChangeVelocityGradient ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousMassChangeVelocityGradient, dimVector, setPreviousMassChangeVelocityGradient ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousMassChangeVelocityGradientdPreviousDensity, floatVector, setdPreviousMassChangeVelocityGradientdPreviousDensity ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousMassChangeVelocityGradientdPreviousDensity, secondOrderTensor, setdPreviousMassChangeVelocityGradientdPreviousDensity ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousMassChangeVelocityGradientdPreviousMassChangeRate, floatVector, setdPreviousMassChangeVelocityGradientdPreviousMassChangeRate ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousMassChangeVelocityGradientdPreviousMassChangeRate, secondOrderTensor, setdPreviousMassChangeVelocityGradientdPreviousMassChangeRate ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousMassChangeVelocityGradientdPreviousDirectionVector, floatVector, setdPreviousMassChangeVelocityGradientdPreviousDirectionVector ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousMassChangeVelocityGradientdPreviousDirectionVector, thirdOrderTensor, setdPreviousMassChangeVelocityGradientdPreviousDirectionVector ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, precedingDeformationGradient, floatVector, setPrecedingDeformationGradient ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, precedingDeformationGradient, secondOrderTensor, setPrecedingDeformationGradient ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingDeformationGradientdDeformationGradient, floatVector, setdPrecedingDeformationGradientdDeformationGradient ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingDeformationGradientdDeformationGradient, fourthOrderTensor, setdPrecedingDeformationGradientdDeformationGradient ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingDeformationGradientdSubDeformationGradients, floatVector, setdPrecedingDeformationGradientdSubDeformationGradients ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPrecedingDeformationGradient, floatVector, setPreviousPrecedingDeformationGradient ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPrecedingDeformationGradient, secondOrderTensor, setPreviousPrecedingDeformationGradient ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousPrecedingDeformationGradientdPreviousDeformationGradient, floatVector, setdPreviousPrecedingDeformationGradientdPreviousDeformationGradient ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousPrecedingDeformationGradientdPreviousDeformationGradient, fourthOrderTensor, setdPreviousPrecedingDeformationGradientdPreviousDeformationGradient ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousPrecedingDeformationGradientdPreviousSubDeformationGradients, floatVector, setdPreviousPrecedingDeformationGradientdPreviousSubDeformationGradients ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, massChangeIntermediateVelocityGradient, floatVector, setMassChangeIntermediateVelocityGradient ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, massChangeIntermediateVelocityGradient, secondOrderTensor, setMassChangeIntermediateVelocityGradient ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeIntermediateVelocityGradientdDensity, floatVector, setdMassChangeIntermediateVelocityGradientdDensity ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeIntermediateVelocityGradientdDensity, secondOrderTensor, setdMassChangeIntermediateVelocityGradientdDensity ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeIntermediateVelocityGradientdMassChangeRate, floatVector, setdMassChangeIntermediateVelocityGradientdMassChangeRate ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeIntermediateVelocityGradientdMassChangeRate, secondOrderTensor, setdMassChangeIntermediateVelocityGradientdMassChangeRate ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeIntermediateVelocityGradientdDirectionVector, floatVector, setdMassChangeIntermediateVelocityGradientdDirectionVector ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeIntermediateVelocityGradientdDirectionVector, thirdOrderTensor, setdMassChangeIntermediateVelocityGradientdDirectionVector ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeIntermediateVelocityGradientdDeformationGradient, floatVector, setdMassChangeIntermediateVelocityGradientdDeformationGradient ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeIntermediateVelocityGradientdDeformationGradient, fourthOrderTensor, setdMassChangeIntermediateVelocityGradientdDeformationGradient ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeIntermediateVelocityGradientdSubDeformationGradients, floatVector, setdMassChangeIntermediateVelocityGradientdSubDeformationGradients ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousMassChangeIntermediateVelocityGradient, floatVector, setPreviousMassChangeIntermediateVelocityGradient ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousMassChangeIntermediateVelocityGradient, secondOrderTensor, setPreviousMassChangeIntermediateVelocityGradient ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousMassChangeIntermediateVelocityGradientdPreviousDensity, floatVector, setdPreviousMassChangeIntermediateVelocityGradientdPreviousDensity ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousMassChangeIntermediateVelocityGradientdPreviousDensity, secondOrderTensor, setdPreviousMassChangeIntermediateVelocityGradientdPreviousDensity ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousMassChangeIntermediateVelocityGradientdPreviousMassChangeRate, floatVector, setdPreviousMassChangeIntermediateVelocityGradientdPreviousMassChangeRate ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousMassChangeIntermediateVelocityGradientdPreviousMassChangeRate, secondOrderTensor, setdPreviousMassChangeIntermediateVelocityGradientdPreviousMassChangeRate ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousMassChangeIntermediateVelocityGradientdPreviousDirectionVector, floatVector, setdPreviousMassChangeIntermediateVelocityGradientdPreviousDirectionVector ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousMassChangeIntermediateVelocityGradientdPreviousDirectionVector, thirdOrderTensor, setdPreviousMassChangeIntermediateVelocityGradientdPreviousDirectionVector ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPreviousMassChangeIntermediateVelocityGradientdPreviousDeformationGradient, floatVector, setdPreviousMassChangeIntermediateVelocityGradientdPreviousDeformationGradient ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPreviousMassChangeIntermediateVelocityGradientdPreviousDeformationGradient, fourthOrderTensor, setdPreviousMassChangeIntermediateVelocityGradientdPreviousDeformationGradient ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPreviousMassChangeIntermediateVelocityGradientdPreviousSubDeformationGradients, floatVector, setdPreviousMassChangeIntermediateVelocityGradientdPreviousSubDeformationGradients ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, massChangeDeformationGradient, floatVector, setMassChangeDeformationGradient ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, massChangeDeformationGradient, secondOrderTensor, setMassChangeDeformationGradient ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeDeformationGradientdDensity, floatVector, setdMassChangeDeformationGradientdDensity ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeDeformationGradientdDensity, secondOrderTensor, setdMassChangeDeformationGradientdDensity ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeDeformationGradientdMassChangeRate, floatVector, setdMassChangeDeformationGradientdMassChangeRate ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeDeformationGradientdMassChangeRate, secondOrderTensor, setdMassChangeDeformationGradientdMassChangeRate ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeDeformationGradientdDirectionVector, floatVector, setdMassChangeDeformationGradientdDirectionVector ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeDeformationGradientdDirectionVector, thirdOrderTensor, setdMassChangeDeformationGradientdDirectionVector ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeDeformationGradientdDeformationGradient, floatVector, setdMassChangeDeformationGradientdDeformationGradient ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeDeformationGradientdDeformationGradient, fourthOrderTensor, setdMassChangeDeformationGradientdDeformationGradient ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMassChangeDeformationGradientdSubDeformationGradients, floatVector, setdMassChangeDeformationGradientdSubDeformationGradients ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dMassChangeDeformationGradientdPreviousDensity, floatVector, setdMassChangeDeformationGradientdPreviousDensity ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dMassChangeDeformationGradientdPreviousDensity, secondOrderTensor, setdMassChangeDeformationGradientdPreviousDensity ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dMassChangeDeformationGradientdPreviousMassChangeRate, floatVector, setdMassChangeDeformationGradientdPreviousMassChangeRate ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dMassChangeDeformationGradientdPreviousMassChangeRate, secondOrderTensor, setdMassChangeDeformationGradientdPreviousMassChangeRate ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dMassChangeDeformationGradientdPreviousDirectionVector, floatVector, setdMassChangeDeformationGradientdPreviousDirectionVector ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dMassChangeDeformationGradientdPreviousDirectionVector, thirdOrderTensor, setdMassChangeDeformationGradientdPreviousDirectionVector ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dMassChangeDeformationGradientdPreviousDeformationGradient, floatVector, setdMassChangeDeformationGradientdPreviousDeformationGradient ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dMassChangeDeformationGradientdPreviousDeformationGradient, fourthOrderTensor, setdMassChangeDeformationGradientdPreviousDeformationGradient ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dMassChangeDeformationGradientdPreviousSubDeformationGradients, floatVector, setdMassChangeDeformationGradientdPreviousSubDeformationGradients ) diff --git a/src/cpp/tardigrade_hydraMicromorphic.cpp b/src/cpp/tardigrade_hydraMicromorphic.cpp index 296efc8..b29145a 100644 --- a/src/cpp/tardigrade_hydraMicromorphic.cpp +++ b/src/cpp/tardigrade_hydraMicromorphic.cpp @@ -13,9 +13,9 @@ namespace tardigradeHydra{ hydraBaseMicromorphic::hydraBaseMicromorphic( const floatType &time, const floatType &deltaTime, const floatType &temperature, const floatType &previousTemperature, - const floatVector &deformationGradient, const floatVector &previousDeformationGradient, - const floatVector µDeformation, const floatVector &previousMicroDeformation, - const floatVector &gradientMicroDeformation, const floatVector &previousGradientMicroDeformation, + const secondOrderTensor &deformationGradient, const secondOrderTensor &previousDeformationGradient, + const secondOrderTensor µDeformation, const secondOrderTensor &previousMicroDeformation, + const thirdOrderTensor &gradientMicroDeformation, const thirdOrderTensor &previousGradientMicroDeformation, const floatVector &additionalDOF, const floatVector &previousAdditionalDOF, const floatVector &previousStateVariables, const floatVector ¶meters, const unsigned int numConfigurations, const unsigned int numNonLinearSolveStateVariables, @@ -94,8 +94,8 @@ namespace tardigradeHydra{ floatMatrix tmp( num_configs - 1 ); for ( unsigned int i = 1; i < num_configs; i++ ){ - tmp[ i - 1 ] = floatVector( configurations->begin( ) + sot_dim * i, - configurations->begin( ) + sot_dim * ( i + 1 ) ); + tmp[ i - 1 ] = secondOrderTensor( configurations->begin( ) + sot_dim * i, + configurations->begin( ) + sot_dim * ( i + 1 ) ); } Xmat[ 1 ] = tardigradeVectorTools::appendVectors( tmp ); @@ -103,8 +103,8 @@ namespace tardigradeHydra{ // Add the initial values of the micro configurations for ( unsigned int i = 1; i < num_configs; i++ ){ - tmp[ i - 1 ] = floatVector( microConfigurations->begin( ) + sot_dim * i, - microConfigurations->begin( ) + sot_dim * ( i + 1 ) ); + tmp[ i - 1 ] = secondOrderTensor( microConfigurations->begin( ) + sot_dim * i, + microConfigurations->begin( ) + sot_dim * ( i + 1 ) ); } Xmat[ 2 ] = tardigradeVectorTools::appendVectors( tmp ); @@ -112,8 +112,8 @@ namespace tardigradeHydra{ // Add the initial values of the micro-gradient configurations for ( unsigned int i = 1; i < num_configs; i++ ){ - tmp[ i - 1 ] = floatVector( gradientMicroConfigurations->begin( ) + tot_dim * i, - gradientMicroConfigurations->begin( ) + tot_dim * ( i + 1 ) ); + tmp[ i - 1 ] = thirdOrderTensor( gradientMicroConfigurations->begin( ) + tot_dim * i, + gradientMicroConfigurations->begin( ) + tot_dim * ( i + 1 ) ); } Xmat[ 3 ] = tardigradeVectorTools::appendVectors( tmp ); @@ -206,7 +206,7 @@ namespace tardigradeHydra{ const unsigned int tot_dim = getTOTDimension( ); const unsigned int num_configs = *getNumConfigurations( ); - gradientMicroConfigurations = tardigradeVectorTools::appendVectors( { floatVector( tot_dim, 0 ), + gradientMicroConfigurations = tardigradeVectorTools::appendVectors( { thirdOrderTensor( tot_dim, 0 ), floatVector( data_vector->begin( ) + start_index, data_vector->begin( ) + start_index + ( num_configs - 1 ) * tot_dim ) } ); @@ -301,7 +301,7 @@ namespace tardigradeHydra{ } - floatVector hydraBaseMicromorphic::getSubMicroConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ){ + secondOrderTensor hydraBaseMicromorphic::getSubMicroConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ){ /*! * Get a sub-micro configuration \f$\bf{\chi}^{sc}\f$ defined as * @@ -315,7 +315,7 @@ namespace tardigradeHydra{ } - floatVector hydraBaseMicromorphic::getPrecedingMicroConfiguration( const unsigned int &index ){ + secondOrderTensor hydraBaseMicromorphic::getPrecedingMicroConfiguration( const unsigned int &index ){ /*! * Get the sub-micro configuration preceding but not including the index * @@ -326,7 +326,7 @@ namespace tardigradeHydra{ } - floatVector hydraBaseMicromorphic::getFollowingMicroConfiguration( const unsigned int &index ){ + secondOrderTensor hydraBaseMicromorphic::getFollowingMicroConfiguration( const unsigned int &index ){ /*! * Get the sub-micro configuration following but not including the index * @@ -337,7 +337,7 @@ namespace tardigradeHydra{ } - floatVector hydraBaseMicromorphic::getMicroConfiguration( const unsigned int &index ){ + secondOrderTensor hydraBaseMicromorphic::getMicroConfiguration( const unsigned int &index ){ /*! * Get the micro configuration indicated by the provided index * @@ -348,7 +348,7 @@ namespace tardigradeHydra{ } - floatVector hydraBaseMicromorphic::getPreviousSubMicroConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ){ + secondOrderTensor hydraBaseMicromorphic::getPreviousSubMicroConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ){ /*! * Get a previous sub-micro configuration \f$\bf{\chi}^{sc}\f$ defined as * @@ -362,7 +362,7 @@ namespace tardigradeHydra{ } - floatVector hydraBaseMicromorphic::getPreviousPrecedingMicroConfiguration( const unsigned int &index ){ + secondOrderTensor hydraBaseMicromorphic::getPreviousPrecedingMicroConfiguration( const unsigned int &index ){ /*! * Get the previous sub-micro configuration preceding but not including the index * @@ -373,7 +373,7 @@ namespace tardigradeHydra{ } - floatVector hydraBaseMicromorphic::getPreviousFollowingMicroConfiguration( const unsigned int &index ){ + secondOrderTensor hydraBaseMicromorphic::getPreviousFollowingMicroConfiguration( const unsigned int &index ){ /*! * Get the previous sub-micro configuration following but not including the index * @@ -384,7 +384,7 @@ namespace tardigradeHydra{ } - floatVector hydraBaseMicromorphic::getPreviousMicroConfiguration( const unsigned int &index ){ + secondOrderTensor hydraBaseMicromorphic::getPreviousMicroConfiguration( const unsigned int &index ){ /*! * Get the previous micro configuration indicated by the provided index * @@ -478,7 +478,7 @@ namespace tardigradeHydra{ * Set the Jacobians of the first micro configuration w.r.t. the total micro configuration and the remaining sub-micro configurations */ - floatVector dChi1dChi; + fourthOrderTensor dChi1dChi; floatVector dChi1dChin; @@ -495,7 +495,7 @@ namespace tardigradeHydra{ * Set the Jacobians of the previous first micro configuration w.r.t. the total micro configuration and the remaining sub-micro configurations */ - floatVector previousdChi1dChi; + secondOrderTensor previousdChi1dChi; floatVector previousdChi1dChin; @@ -514,11 +514,11 @@ namespace tardigradeHydra{ floatVector dGradChi1dCn; - floatVector dGradChi1dChi; + fifthOrderTensor dGradChi1dChi; floatVector dGradChi1dChin; - floatVector dGradChi1dGradChi; + sixthOrderTensor dGradChi1dGradChi; floatVector dGradChi1dGradChin; @@ -546,11 +546,11 @@ namespace tardigradeHydra{ floatVector previousdGradChi1dCn; - floatVector previousdGradChi1dChi; + fifthOrderTensor previousdGradChi1dChi; floatVector previousdGradChi1dChin; - floatVector previousdGradChi1dGradChi; + sixthOrderTensor previousdGradChi1dGradChi; floatVector previousdGradChi1dGradChin; @@ -571,7 +571,7 @@ namespace tardigradeHydra{ } - void hydraBaseMicromorphic::calculateFirstConfigurationGradChi( const floatVector &configurations, const floatVector µConfigurations, const floatVector &gradientMicroConfiguration, floatVector &gradientMicroConfigurations ){ + void hydraBaseMicromorphic::calculateFirstConfigurationGradChi( const floatVector &configurations, const floatVector µConfigurations, const thirdOrderTensor &gradientMicroConfiguration, floatVector &gradientMicroConfigurations ){ /*! * Calculate the value of the gradient of the first micro-configuration given all of the configurations, the micro-configurations, * the spatial gradient of the micro deformation in the reference configuration, and the gradients of the micro-configurations @@ -589,11 +589,11 @@ namespace tardigradeHydra{ const unsigned int num_configs = *getNumConfigurations( ); // Compute the gradient in the reference configuration - floatVector gradientChi1Reference( tot_dim, 0 );// = gradientMicroConfiguration; // Initialize to the total gradient in the reference configuration + thirdOrderTensor gradientChi1Reference( tot_dim, 0 );// = gradientMicroConfiguration; // Initialize to the total gradient in the reference configuration - floatVector temp_tot1( tot_dim, 0 ); + thirdOrderTensor temp_tot1( tot_dim, 0 ); - floatVector chiPrecede( sot_dim, 0. ); + secondOrderTensor chiPrecede( sot_dim, 0. ); for ( unsigned int i = 0; i < dim; i++ ){ chiPrecede[ dim * i + i ] = 1.; } Eigen::Map< Eigen::Matrix< floatType, 3, 3, Eigen::RowMajor > > chip_map( chiPrecede.data( ), dim, dim ); @@ -629,7 +629,7 @@ namespace tardigradeHydra{ std::copy( gradientChi1Reference.begin( ), gradientChi1Reference.end( ), temp_tot1.begin( ) ); std::fill( gradientChi1Reference.begin( ), gradientChi1Reference.end( ), 0 ); - floatVector chiFollow = getSubConfiguration( microConfigurations, index + 1, *getNumConfigurations( ) ); + secondOrderTensor chiFollow = getSubConfiguration( microConfigurations, index + 1, *getNumConfigurations( ) ); for ( unsigned int i = 0; i < dim; i++ ){ @@ -653,7 +653,7 @@ namespace tardigradeHydra{ std::copy( gradientChi1Reference.begin( ), gradientChi1Reference.end( ), temp_tot1.begin( ) ); std::fill( gradientChi1Reference.begin( ), gradientChi1Reference.end( ), 0 ); - floatVector FFollow = getSubConfiguration( configurations, index + 1, *getNumConfigurations( ) ); + secondOrderTensor FFollow = getSubConfiguration( configurations, index + 1, *getNumConfigurations( ) ); for ( unsigned int i = 0; i < dim; i++ ){ @@ -679,11 +679,11 @@ namespace tardigradeHydra{ gradientChi1Reference += gradientMicroConfiguration; // Map the gradient of the micro-configuration to the reference of the first configuration - floatVector invChiFollow = getSubConfiguration( microConfigurations, 1, num_configs ); + secondOrderTensor invChiFollow = getSubConfiguration( microConfigurations, 1, num_configs ); Eigen::Map < Eigen::Matrix< floatType, 3, 3, Eigen::RowMajor> > mat( invChiFollow.data(), 3, 3 ); mat = mat.inverse( ).eval( ); - floatVector invFFollow = getSubConfiguration( configurations, 1, num_configs ); + secondOrderTensor invFFollow = getSubConfiguration( configurations, 1, num_configs ); new (&mat) Eigen::Map < Eigen::Matrix< floatType, 3, 3, Eigen::RowMajor> >( invFFollow.data(), 3, 3 ); mat = mat.inverse( ).eval( ); @@ -729,12 +729,12 @@ namespace tardigradeHydra{ } - void hydraBaseMicromorphic::calculateFirstConfigurationGradChiJacobian( const floatVector &configurations, const floatVector µConfigurations, - const floatVector &gradientMicroConfiguration, const floatVector &gradientMicroConfigurations, - const floatVector &dChi1dChi, const floatVector &dChi1dChin, + void hydraBaseMicromorphic::calculateFirstConfigurationGradChiJacobian( const floatVector &configurations, const floatVector µConfigurations, + const thirdOrderTensor &gradientMicroConfiguration, const floatVector &gradientMicroConfigurations, + const fourthOrderTensor &dChi1dChi, const floatVector &dChi1dChin, floatVector &dGradChi1dCn, - floatVector &dGradChi1dChi, floatVector &dGradChi1dChin, - floatVector &dGradChi1dGradChi, floatVector &dGradChi1dGradChin ){ + fifthOrderTensor &dGradChi1dChi, floatVector &dGradChi1dChin, + sixthOrderTensor &dGradChi1dGradChi, floatVector &dGradChi1dGradChin ){ /*! * Calculate the value of the jacobian of the gradient of the first micro-configuration given all of the configurations, the micro-configurations, * the spatial gradient of the micro deformation in the reference configuration, and the gradients of the micro-configurations @@ -758,31 +758,28 @@ namespace tardigradeHydra{ const unsigned int tot_dim = getTOTDimension( ); const unsigned int num_configs = *getNumConfigurations( ); - floatVector eye( sot_dim, 0 ); - tardigradeVectorTools::eye( eye ); - // Compute the gradient in the reference configuration - floatVector gradientChi1Reference( tot_dim, 0 ); + thirdOrderTensor gradientChi1Reference( tot_dim, 0 ); floatVector dGradientChi1ReferencedCn( tot_dim * ( num_configs - 1 ) * sot_dim, 0 ); - floatVector dGradientChi1ReferencedChi( tot_dim * sot_dim, 0 ); + fifthOrderTensor dGradientChi1ReferencedChi( tot_dim * sot_dim, 0 ); floatVector dGradientChi1ReferencedChin( tot_dim * ( num_configs - 1 ) * sot_dim, 0 ); floatVector dGradientChi1ReferencedGradChin( tot_dim * ( num_configs - 1 ) * tot_dim, 0 ); - floatVector temp_tot1( tot_dim, 0 ); + thirdOrderTensor temp_tot1( tot_dim, 0 ); - floatVector temp_tot2( tot_dim, 0 ); + thirdOrderTensor temp_tot2( tot_dim, 0 ); - floatVector temp_tot2a( tot_dim, 0 ); + thirdOrderTensor temp_tot2a( tot_dim, 0 ); - floatVector temp_tot3( tot_dim, 0 ); + thirdOrderTensor temp_tot3( tot_dim, 0 ); - floatVector temp_tot3a( tot_dim, 0 ); + thirdOrderTensor temp_tot3a( tot_dim, 0 ); - floatVector chiPrecede( sot_dim, 0 ), chiFollow( sot_dim, 0 ), FFollow( sot_dim, 0 ); + secondOrderTensor chiPrecede( sot_dim, 0 ), chiFollow( sot_dim, 0 ), FFollow( sot_dim, 0 ); for ( unsigned int index = 1; index < num_configs; index++ ){ @@ -793,7 +790,7 @@ namespace tardigradeHydra{ floatVector dChiPrecededChis = getSubConfigurationJacobian( microConfigurations, 0, index ); - floatVector dChiPrecededChi( sot_dim * sot_dim, 0 ); + fourthOrderTensor dChiPrecededChi( sot_dim * sot_dim, 0 ); floatVector dChiPrecededChin( sot_dim * ( num_configs - 1 ) * sot_dim, 0 ); @@ -1006,17 +1003,17 @@ namespace tardigradeHydra{ FFollow = getSubConfiguration( configurations, 1, num_configs ); - floatVector invChiFollow = chiFollow; + secondOrderTensor invChiFollow = chiFollow; Eigen::Map < Eigen::Matrix< floatType, 3, 3, Eigen::RowMajor> > mat( invChiFollow.data(), 3, 3 ); mat = mat.inverse( ).eval( ); - floatVector invChiFollow_T = invChiFollow; + secondOrderTensor invChiFollow_T = invChiFollow; new (&mat) Eigen::Map < Eigen::Matrix< floatType, 3, 3, Eigen::RowMajor> >( invChiFollow_T.data(), 3, 3 ); mat = mat.transpose( ).eval( ); - floatVector invFFollow = FFollow; + secondOrderTensor invFFollow = FFollow; new (&mat) Eigen::Map < Eigen::Matrix< floatType, 3, 3, Eigen::RowMajor> >( invFFollow.data(), 3, 3 ); mat = mat.inverse( ).eval( ); - floatVector invFFollow_T = invFFollow; + secondOrderTensor invFFollow_T = invFFollow; new (&mat) Eigen::Map < Eigen::Matrix< floatType, 3, 3, Eigen::RowMajor> >( invFFollow_T.data(), 3, 3 ); mat = mat.transpose( ).eval( ); @@ -1024,9 +1021,9 @@ namespace tardigradeHydra{ floatVector dFFollowdFs = getSubConfigurationJacobian( configurations, 1, num_configs ); - floatVector dInvChiFollowdChiFollow = tardigradeVectorTools::computeFlatDInvADA( invChiFollow, dim, dim ); + fourthOrderTensor dInvChiFollowdChiFollow = tardigradeVectorTools::computeFlatDInvADA( invChiFollow, dim, dim ); - floatVector dInvFFollowdFFollow = tardigradeVectorTools::computeFlatDInvADA( invFFollow, dim, dim ); + fourthOrderTensor dInvFFollowdFFollow = tardigradeVectorTools::computeFlatDInvADA( invFFollow, dim, dim ); floatVector dInvChiFollowdChin( sot_dim * sot_dim * ( num_configs - 1 ), 0 ); @@ -1048,11 +1045,11 @@ namespace tardigradeHydra{ } - dGradChi1dChi = floatVector( tot_dim * sot_dim, 0 ); + dGradChi1dChi = fifthOrderTensor( tot_dim * sot_dim, 0 ); dGradChi1dChin = floatVector( tot_dim * ( num_configs - 1 ) * sot_dim, 0 ); - dGradChi1dGradChi = floatVector( tot_dim * tot_dim, 0 ); + dGradChi1dGradChi = sixthOrderTensor( tot_dim * tot_dim, 0 ); dGradChi1dCn = floatVector( tot_dim * ( num_configs - 1 ) * sot_dim, 0 ); @@ -1061,7 +1058,7 @@ namespace tardigradeHydra{ std::fill( temp_tot1.begin( ), temp_tot1.end( ), 0. ); std::fill( temp_tot2.begin( ), temp_tot2.end( ), 0. ); - floatVector temp_fiot( tot_dim * sot_dim, 0 ); + fifthOrderTensor temp_fiot( tot_dim * sot_dim, 0 ); floatVector temp_siot1( tot_dim * ( num_configs - 1 ) * sot_dim, 0 ); floatVector temp_siot2( tot_dim * ( num_configs - 1 ) * sot_dim, 0 ); diff --git a/src/cpp/tardigrade_hydraMicromorphic.h b/src/cpp/tardigrade_hydraMicromorphic.h index 5fc9431..aa1eec8 100644 --- a/src/cpp/tardigrade_hydraMicromorphic.h +++ b/src/cpp/tardigrade_hydraMicromorphic.h @@ -14,6 +14,10 @@ namespace tardigradeHydra{ + //Define tensors of known size + typedef std::vector< floatType > fifthOrderTensor; //!< Fifth order tensors + typedef std::vector< floatType > sixthOrderTensor; //!< Sixth order tensors + //! The base class for hydra framework micromorphic material models class hydraBaseMicromorphic : public hydraBase{ @@ -23,10 +27,10 @@ namespace tardigradeHydra{ hydraBaseMicromorphic( const floatType &time, const floatType &deltaTime, const floatType &temperature, const floatType &previousTemperature, - const floatVector &deformationGradient, const floatVector &previousDeformationGradient, - const floatVector µDeformation, const floatVector &previousMicroDeformation, - const floatVector &gradientMicroDeformation, const floatVector &previousGradientMicroDeformation, - const floatVector &additionalDOF, const floatVector &previousAdditionalDOF, + const secondOrderTensor &deformationGradient, const secondOrderTensor &previousDeformationGradient, + const secondOrderTensor µDeformation, const secondOrderTensor &previousMicroDeformation, + const thirdOrderTensor &gradientMicroDeformation, const thirdOrderTensor &previousGradientMicroDeformation, + const floatVector &additionalDOF, const floatVector &previousAdditionalDOF, const floatVector &previousStateVariables, const floatVector ¶meters, const unsigned int numConfigurations, const unsigned int numNonLinearSolveStateVariables, const unsigned int dimension=3, const unsigned int configuration_unknown_count=45, @@ -35,32 +39,32 @@ namespace tardigradeHydra{ const bool use_preconditioner=false, const unsigned int preconditioner_type=0 ); //! Get the current micro-deformation tensor - const floatVector *getMicroDeformation( ){ return &_microDeformation; } + const secondOrderTensor *getMicroDeformation( ){ return &_microDeformation; } //! Get the previous micro-deformation tensor - const floatVector *getPreviousMicroDeformation( ){ return &_previousMicroDeformation; } + const secondOrderTensor *getPreviousMicroDeformation( ){ return &_previousMicroDeformation; } //! Get the current spatial gradient w.r.t. the reference configuration of the micro-deformation tensor - const floatVector *getGradientMicroDeformation( ){ return &_gradientMicroDeformation; } + const thirdOrderTensor *getGradientMicroDeformation( ){ return &_gradientMicroDeformation; } //! Get the previous spatial gradient w.r.t. the reference configuration of the micro-deformation tensor - const floatVector *getPreviousGradientMicroDeformation( ){ return &_previousGradientMicroDeformation; } + const thirdOrderTensor *getPreviousGradientMicroDeformation( ){ return &_previousGradientMicroDeformation; } - floatVector getSubMicroConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ); + secondOrderTensor getSubMicroConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ); - floatVector getPrecedingMicroConfiguration( const unsigned int &index ); + secondOrderTensor getPrecedingMicroConfiguration( const unsigned int &index ); - floatVector getFollowingMicroConfiguration( const unsigned int &index ); + secondOrderTensor getFollowingMicroConfiguration( const unsigned int &index ); - floatVector getMicroConfiguration( const unsigned int &index ); + secondOrderTensor getMicroConfiguration( const unsigned int &index ); - floatVector getPreviousSubMicroConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ); + secondOrderTensor getPreviousSubMicroConfiguration( const unsigned int &lowerIndex, const unsigned int &upperIndex ); - floatVector getPreviousPrecedingMicroConfiguration( const unsigned int &index ); + secondOrderTensor getPreviousPrecedingMicroConfiguration( const unsigned int &index ); - floatVector getPreviousFollowingMicroConfiguration( const unsigned int &index ); + secondOrderTensor getPreviousFollowingMicroConfiguration( const unsigned int &index ); - floatVector getPreviousMicroConfiguration( const unsigned int &index ); + secondOrderTensor getPreviousMicroConfiguration( const unsigned int &index ); floatVector getSubMicroConfigurationJacobian( const unsigned int &lowerIndex, const unsigned int &upperIndex ); @@ -99,13 +103,13 @@ namespace tardigradeHydra{ private: - floatVector _microDeformation; //!< The current micro-deformation + secondOrderTensor _microDeformation; //!< The current micro-deformation - floatVector _previousMicroDeformation; //!< The previous micro-deformation + secondOrderTensor _previousMicroDeformation; //!< The previous micro-deformation - floatVector _gradientMicroDeformation; //!< The spatial gradient of the micro-deformation w.r.t. the reference coordinates + thirdOrderTensor _gradientMicroDeformation; //!< The spatial gradient of the micro-deformation w.r.t. the reference coordinates - floatVector _previousGradientMicroDeformation; //!< The previous spatial gradient of the micro-deformation w.r.t. the reference coordinates + thirdOrderTensor _previousGradientMicroDeformation; //!< The previous spatial gradient of the micro-deformation w.r.t. the reference coordinates void setFirstMicroConfigurationJacobians( ); @@ -126,46 +130,46 @@ namespace tardigradeHydra{ const floatVector &gradientMicroConfiguration, const floatVector &gradientMicroConfigurations, const floatVector &dChi1dChi, const floatVector &dChi1dChin, floatVector &dGradChi1dCn, - floatVector &dGradChi1dChi, floatVector &dGradChi1dChin, - floatVector &dGradChi1dGradChi, floatVector &dGradChi1dGradChin ); + fifthOrderTensor &dGradChi1dChi, floatVector &dGradChi1dChin, + sixthOrderTensor &dGradChi1dGradChi, floatVector &dGradChi1dGradChin ); - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, microConfigurations, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, microConfigurations, floatVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, inverseMicroConfigurations, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, inverseMicroConfigurations, floatVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, gradientMicroConfigurations, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, gradientMicroConfigurations, floatVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousMicroConfigurations, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousMicroConfigurations, floatVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousInverseMicroConfigurations, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousInverseMicroConfigurations, floatVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousGradientMicroConfigurations, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousGradientMicroConfigurations, floatVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dChi1dChi, floatVector, setFirstMicroConfigurationJacobians ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dChi1dChi, fourthOrderTensor, setFirstMicroConfigurationJacobians ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dChi1dChin, floatVector, setFirstMicroConfigurationJacobians ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dChi1dChin, floatVector, setFirstMicroConfigurationJacobians ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdChi1dChi, floatVector, setPreviousFirstMicroConfigurationJacobians ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdChi1dChi, fourthOrderTensor, setPreviousFirstMicroConfigurationJacobians ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdChi1dChin, floatVector, setPreviousFirstMicroConfigurationJacobians ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdChi1dChin, floatVector, setPreviousFirstMicroConfigurationJacobians ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dGradChi1dFn, floatVector, setFirstGradientMicroConfigurationJacobians ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dGradChi1dFn, floatVector, setFirstGradientMicroConfigurationJacobians ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dGradChi1dChi, floatVector, setFirstGradientMicroConfigurationJacobians ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dGradChi1dChi, fifthOrderTensor, setFirstGradientMicroConfigurationJacobians ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dGradChi1dChin, floatVector, setFirstGradientMicroConfigurationJacobians ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dGradChi1dChin, floatVector, setFirstGradientMicroConfigurationJacobians ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dGradChi1dGradChi, floatVector, setFirstGradientMicroConfigurationJacobians ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dGradChi1dGradChi, sixthOrderTensor, setFirstGradientMicroConfigurationJacobians ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dGradChi1dGradChin, floatVector, setFirstGradientMicroConfigurationJacobians ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dGradChi1dGradChin, floatVector, setFirstGradientMicroConfigurationJacobians ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdGradChi1dFn, floatVector, setPreviousFirstGradientMicroConfigurationJacobians ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdGradChi1dFn, floatVector, setPreviousFirstGradientMicroConfigurationJacobians ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdGradChi1dChi, floatVector, setPreviousFirstGradientMicroConfigurationJacobians ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdGradChi1dChi, fifthOrderTensor, setPreviousFirstGradientMicroConfigurationJacobians ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdGradChi1dChin, floatVector, setPreviousFirstGradientMicroConfigurationJacobians ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdGradChi1dChin, floatVector, setPreviousFirstGradientMicroConfigurationJacobians ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdGradChi1dGradChi, floatVector, setPreviousFirstGradientMicroConfigurationJacobians ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdGradChi1dGradChi, sixthOrderTensor, setPreviousFirstGradientMicroConfigurationJacobians ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdGradChi1dGradChin, floatVector, setPreviousFirstGradientMicroConfigurationJacobians ) diff --git a/src/cpp/tardigrade_hydraMicromorphicDruckerPragerPlasticity.cpp b/src/cpp/tardigrade_hydraMicromorphicDruckerPragerPlasticity.cpp index edcdcfe..b8b24a6 100644 --- a/src/cpp/tardigrade_hydraMicromorphicDruckerPragerPlasticity.cpp +++ b/src/cpp/tardigrade_hydraMicromorphicDruckerPragerPlasticity.cpp @@ -67,8 +67,8 @@ namespace tardigradeHydra{ } - void computeSecondOrderDruckerPragerYieldEquation( const variableVector &stressMeasure, const variableType &cohesion, - const variableVector &precedingDeformationGradient, + void computeSecondOrderDruckerPragerYieldEquation( const secondOrderTensor &stressMeasure, const variableType &cohesion, + const secondOrderTensor &precedingDeformationGradient, const parameterType &frictionAngle, const parameterType &beta, variableType &yieldValue ){ /*! @@ -97,12 +97,12 @@ namespace tardigradeHydra{ TARDIGRADE_ERROR_TOOLS_CATCH( tardigradeHydra::micromorphicDruckerPragerPlasticity::computeDruckerPragerInternalParameters( frictionAngle, beta, AAngle, BAngle ) ); //Compute the right Cauchy-Green deformation tensor - floatVector rightCauchyGreen; + secondOrderTensor rightCauchyGreen; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeConstitutiveTools::computeRightCauchyGreen( precedingDeformationGradient, rightCauchyGreen ) ); //Compute the decomposition of the stress variableType pressure; - variableVector deviatoricReferenceStress; + secondOrderTensor deviatoricReferenceStress; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeMicromorphicTools::computeSecondOrderReferenceStressDecomposition( stressMeasure, rightCauchyGreen, deviatoricReferenceStress, pressure ) ); @@ -115,11 +115,11 @@ namespace tardigradeHydra{ } - void computeSecondOrderDruckerPragerYieldEquation( const variableVector &referenceStressMeasure, const variableType &cohesion, - const variableVector &precedingDeformationGradient, + void computeSecondOrderDruckerPragerYieldEquation( const secondOrderTensor &referenceStressMeasure, const variableType &cohesion, + const secondOrderTensor &precedingDeformationGradient, const parameterType &frictionAngle, const parameterType &beta, - variableType &yieldValue, variableVector &dFdStress, variableType &dFdc, - variableVector &dFdPrecedingF, double tol ){ + variableType &yieldValue, secondOrderTensor &dFdStress, variableType &dFdc, + secondOrderTensor &dFdPrecedingF, double tol ){ /*! * Compute the second-order Drucker Prager Yield equation * @@ -158,24 +158,24 @@ namespace tardigradeHydra{ TARDIGRADE_ERROR_TOOLS_CATCH( computeDruckerPragerInternalParameters( frictionAngle, beta, AAngle, BAngle ) ); //Compute the right Cauchy-Green deformation tensor - floatVector rightCauchyGreen; - floatVector dRCGdPrecedingF; + secondOrderTensor rightCauchyGreen; + fourthOrderTensor dRCGdPrecedingF; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeConstitutiveTools::computeRightCauchyGreen( precedingDeformationGradient, rightCauchyGreen, dRCGdPrecedingF ) ); //Compute the decomposition of the stress variableType pressure; - variableVector deviatoricReferenceStress; + secondOrderTensor deviatoricReferenceStress; - variableVector dDevStressdStress, dDevStressdRCG; - variableVector dPressuredStress, dPressuredRCG; + fourthOrderTensor dDevStressdStress, dDevStressdRCG; + secondOrderTensor dPressuredStress, dPressuredRCG; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeMicromorphicTools::computeSecondOrderReferenceStressDecomposition( referenceStressMeasure, rightCauchyGreen, deviatoricReferenceStress, pressure, dDevStressdStress, dDevStressdRCG, dPressuredStress, dPressuredRCG ) ); - variableVector dDevStressdPrecedingF = tardigradeVectorTools::matrixMultiply( dDevStressdRCG, dRCGdPrecedingF, sot_dim, sot_dim, sot_dim, sot_dim ); - variableVector dPressuredPrecedingF = tardigradeVectorTools::matrixMultiply( dPressuredRCG, dRCGdPrecedingF, 1, sot_dim, sot_dim, sot_dim ); + fourthOrderTensor dDevStressdPrecedingF = tardigradeVectorTools::matrixMultiply( dDevStressdRCG, dRCGdPrecedingF, sot_dim, sot_dim, sot_dim, sot_dim ); + secondOrderTensor dPressuredPrecedingF = tardigradeVectorTools::matrixMultiply( dPressuredRCG, dRCGdPrecedingF, 1, sot_dim, sot_dim, sot_dim ); //Compute the l2norm of the deviatoric stress variableType normDevStress = tardigradeVectorTools::l2norm( deviatoricReferenceStress ); @@ -184,7 +184,7 @@ namespace tardigradeHydra{ yieldValue = normDevStress - ( AAngle * cohesion - BAngle * pressure ); //Evaluate the jacobians - variableVector devStressDirection = deviatoricReferenceStress / ( normDevStress + tol ); + secondOrderTensor devStressDirection = deviatoricReferenceStress / ( normDevStress + tol ); dFdStress = BAngle * dPressuredStress; dFdStress += tardigradeVectorTools::matrixMultiply( devStressDirection, dDevStressdStress, 1, sot_dim, sot_dim, sot_dim ); @@ -195,12 +195,12 @@ namespace tardigradeHydra{ dFdPrecedingF += tardigradeVectorTools::matrixMultiply( devStressDirection, dDevStressdPrecedingF, 1, sot_dim, sot_dim, sot_dim ); } - void computeSecondOrderDruckerPragerYieldEquation( const variableVector &stressMeasure, const variableType &cohesion, - const variableVector &precedingDeformationGradient, + void computeSecondOrderDruckerPragerYieldEquation( const secondOrderTensor &stressMeasure, const variableType &cohesion, + const secondOrderTensor &precedingDeformationGradient, const parameterType &frictionAngle, const parameterType &beta, - variableType &yieldValue, variableVector &dFdStress, variableType &dFdc, - variableVector &dFdPrecedingF, variableVector &d2FdStress2, - variableVector &d2FdStressdPrecedingF, double tol ){ + variableType &yieldValue, secondOrderTensor &dFdStress, variableType &dFdc, + secondOrderTensor &dFdPrecedingF, fourthOrderTensor &d2FdStress2, + fourthOrderTensor &d2FdStressdPrecedingF, double tol ){ /*! * Compute the second-order Drucker Prager Yield equation * @@ -247,30 +247,31 @@ namespace tardigradeHydra{ TARDIGRADE_ERROR_TOOLS_CATCH( computeDruckerPragerInternalParameters( frictionAngle, beta, AAngle, BAngle ) ); //Compute the right Cauchy-Green deformation tensor - floatVector rightCauchyGreen; - floatVector dRCGdPrecedingF; + secondOrderTensor rightCauchyGreen; + fourthOrderTensor dRCGdPrecedingF; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeConstitutiveTools::computeRightCauchyGreen( precedingDeformationGradient, rightCauchyGreen, dRCGdPrecedingF ) ); //Compute the decomposition of the stress variableType pressure; - variableVector deviatoricReferenceStress; + secondOrderTensor deviatoricReferenceStress; - variableVector dDevStressdStress, dDevStressdRCG; - variableVector dPressuredStress, dPressuredRCG; + fourthOrderTensor dDevStressdStress, dDevStressdRCG; + secondOrderTensor dPressuredStress, dPressuredRCG; - variableVector d2DevStressdStressdRCG, d2PressuredStressdRCG; + sixthOrderTensor d2DevStressdStressdRCG; + fourthOrderTensor d2PressuredStressdRCG; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeMicromorphicTools::computeSecondOrderReferenceStressDecomposition( stressMeasure, rightCauchyGreen, deviatoricReferenceStress, pressure, dDevStressdStress, dDevStressdRCG, dPressuredStress, dPressuredRCG, d2DevStressdStressdRCG, d2PressuredStressdRCG ) ) - variableVector dDevStressdPrecedingF = tardigradeVectorTools::matrixMultiply( dDevStressdRCG, dRCGdPrecedingF, sot_dim, sot_dim, sot_dim, sot_dim ); - variableVector dPressuredPrecedingF = tardigradeVectorTools::matrixMultiply( dPressuredRCG, dRCGdPrecedingF, 1, sot_dim, sot_dim, sot_dim ); + fourthOrderTensor dDevStressdPrecedingF = tardigradeVectorTools::matrixMultiply( dDevStressdRCG, dRCGdPrecedingF, sot_dim, sot_dim, sot_dim, sot_dim ); + secondOrderTensor dPressuredPrecedingF = tardigradeVectorTools::matrixMultiply( dPressuredRCG, dRCGdPrecedingF, 1, sot_dim, sot_dim, sot_dim ); - variableVector d2DevStressdStressdPrecedingF( sot_dim * sot_dim * sot_dim, 0 ); + sixthOrderTensor d2DevStressdStressdPrecedingF( sot_dim * sot_dim * sot_dim, 0 ); - variableVector d2PressuredStressdPrecedingF( sot_dim * sot_dim, 0 ); + fourthOrderTensor d2PressuredStressdPrecedingF( sot_dim * sot_dim, 0 ); for ( unsigned int I = 0; I < deviatoricReferenceStress.size( ); I++ ){ @@ -301,7 +302,7 @@ namespace tardigradeHydra{ yieldValue = normDevStress - ( AAngle * cohesion - BAngle * pressure ); //Evaluate the jacobians - variableVector devStressDirection = deviatoricReferenceStress / ( normDevStress + tol ); + secondOrderTensor devStressDirection = deviatoricReferenceStress / ( normDevStress + tol ); dFdStress = BAngle * dPressuredStress; dFdStress += tardigradeVectorTools::matrixMultiply( devStressDirection, dDevStressdStress, 1, sot_dim, sot_dim, sot_dim ); @@ -312,7 +313,7 @@ namespace tardigradeHydra{ dFdPrecedingF += tardigradeVectorTools::matrixMultiply( devStressDirection, dDevStressdPrecedingF, 1, sot_dim, sot_dim, sot_dim ); //Evaluate the second-order jacobians - variableVector dDevStressDirectiondDevStress( sot_dim * sot_dim, 0 ); + fourthOrderTensor dDevStressDirectiondDevStress( sot_dim * sot_dim, 0 ); for ( unsigned int i = 0; i < sot_dim; i++ ){ dDevStressDirectiondDevStress[ sot_dim * i + i ] = 1. / ( normDevStress + tol ); } dDevStressDirectiondDevStress -= tardigradeVectorTools::matrixMultiply( devStressDirection, devStressDirection, sot_dim, 1, 1, sot_dim ) / ( normDevStress + tol ); @@ -329,11 +330,11 @@ namespace tardigradeHydra{ } - void computeHigherOrderDruckerPragerYieldEquation( const variableVector &stressMeasure, - const variableVector &cohesion, - const variableVector &precedingDeformationGradient, + void computeHigherOrderDruckerPragerYieldEquation( const thirdOrderTensor &stressMeasure, + const dimVector &cohesion, + const secondOrderTensor &precedingDeformationGradient, const parameterType &frictionAngle, const parameterType &beta, - variableVector &yieldValue ){ + dimVector &yieldValue ){ /*! * Compute the higher-order Drucker Prager Yield equation * @@ -359,18 +360,18 @@ namespace tardigradeHydra{ TARDIGRADE_ERROR_TOOLS_CATCH( computeDruckerPragerInternalParameters( frictionAngle, beta, AAngle, BAngle ) ) //Compute the right Cauchy-Green deformation tensor - floatVector rightCauchyGreen; + secondOrderTensor rightCauchyGreen; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeConstitutiveTools::computeRightCauchyGreen( precedingDeformationGradient, rightCauchyGreen ) ); //Compute the decomposition of the stress - variableVector pressure; - variableVector deviatoricReferenceStress; + dimVector pressure; + thirdOrderTensor deviatoricReferenceStress; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeMicromorphicTools::computeHigherOrderReferenceStressDecomposition( stressMeasure, rightCauchyGreen, deviatoricReferenceStress, pressure ) ); //Compute the l2norm of the deviatoric stress - variableVector normDevStress; + dimVector normDevStress; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeMicromorphicTools::computeHigherOrderStressNorm( deviatoricReferenceStress, normDevStress ) ); //Evaluate the yield equation @@ -378,12 +379,12 @@ namespace tardigradeHydra{ } - void computeHigherOrderDruckerPragerYieldEquation( const variableVector &stressMeasure, - const variableVector &cohesion, - const variableVector &precedingDeformationGradient, + void computeHigherOrderDruckerPragerYieldEquation( const thirdOrderTensor &stressMeasure, + const dimVector &cohesion, + const secondOrderTensor &precedingDeformationGradient, const parameterType &frictionAngle, const parameterType &beta, - variableVector &yieldValue, variableVector &dFdStress, variableVector &dFdc, - variableVector &dFdPrecedingF ){ + dimVector &yieldValue, fourthOrderTensor &dFdStress, secondOrderTensor &dFdc, + thirdOrderTensor &dFdPrecedingF ){ /*! * Compute the higher-order Drucker Prager Yield equation * @@ -419,23 +420,25 @@ namespace tardigradeHydra{ TARDIGRADE_ERROR_TOOLS_CATCH( computeDruckerPragerInternalParameters( frictionAngle, beta, AAngle, BAngle ) ); //Compute the right Cauchy-Green deformation tensor - floatVector rightCauchyGreen; - floatVector dRCGdPrecedingF; + secondOrderTensor rightCauchyGreen; + fourthOrderTensor dRCGdPrecedingF; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeConstitutiveTools::computeRightCauchyGreen( precedingDeformationGradient, rightCauchyGreen, dRCGdPrecedingF ) ); //Compute the decomposition of the stress - variableVector pressure; - variableVector deviatoricReferenceStress; + dimVector pressure; + thirdOrderTensor deviatoricReferenceStress; - variableVector dDevStressdStress, dDevStressdRCG; - variableVector dPressuredStress, dPressuredRCG; + sixthOrderTensor dDevStressdStress; + fifthOrderTensor dDevStressdRCG; + fourthOrderTensor dPressuredStress; + thirdOrderTensor dPressuredRCG; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeMicromorphicTools::computeHigherOrderReferenceStressDecomposition( stressMeasure, rightCauchyGreen, deviatoricReferenceStress, pressure, dDevStressdStress, dDevStressdRCG, dPressuredStress, dPressuredRCG ) ); - floatVector dDevStressdPrecedingF( tot_dim * sot_dim, 0. ); - floatVector dPressuredPrecedingF( dim * sot_dim, 0 ); + fifthOrderTensor dDevStressdPrecedingF( tot_dim * sot_dim, 0. ); + thirdOrderTensor dPressuredPrecedingF( dim * sot_dim, 0 ); Eigen::Map< Eigen::Matrix< floatType, sot_dim, sot_dim, Eigen::RowMajor > > dRCGdPrecedingF_mat( dRCGdPrecedingF.data( ), sot_dim, sot_dim ); @@ -449,8 +452,8 @@ namespace tardigradeHydra{ dPressuredPrecedingF_mat = ( dPressuredRCG_mat * dRCGdPrecedingF_mat ).eval( ); //Compute the l2norm of the deviatoric stress - variableVector normDevStress; - variableVector dNormDevStressdDevStress; + dimVector normDevStress; + fourthOrderTensor dNormDevStressdDevStress; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeMicromorphicTools::computeHigherOrderStressNorm( deviatoricReferenceStress, normDevStress, dNormDevStressdDevStress ) ); //Evaluate the yield equation @@ -466,7 +469,7 @@ namespace tardigradeHydra{ dFdStress_mat = ( dFdStress_mat + dNormDevStressdDevStress_mat * dDevStressdStress_mat ).eval( ); - dFdc = variableVector( cohesion.size( ) * cohesion.size( ), 0 ); + dFdc = secondOrderTensor( cohesion.size( ) * cohesion.size( ), 0 ); for ( unsigned int i = 0; i < dim; i++ ){ dFdc[ dim * i + i ] = -AAngle; } dFdPrecedingF = BAngle * dPressuredPrecedingF; @@ -477,13 +480,13 @@ namespace tardigradeHydra{ } - void computeHigherOrderDruckerPragerYieldEquation( const variableVector &stressMeasure, - const variableVector &cohesion, - const variableVector &precedingDeformationGradient, + void computeHigherOrderDruckerPragerYieldEquation( const thirdOrderTensor &stressMeasure, + const dimVector &cohesion, + const secondOrderTensor &precedingDeformationGradient, const parameterType &frictionAngle, const parameterType &beta, - variableVector &yieldValue, variableVector &dFdStress, variableVector &dFdc, - variableVector &dFdPrecedingF, variableVector &d2FdStress2, - variableVector &d2FdStressdPrecedingF ){ + dimVector &yieldValue, fourthOrderTensor &dFdStress, secondOrderTensor &dFdc, + thirdOrderTensor &dFdPrecedingF, seventhOrderTensor &d2FdStress2, + sixthOrderTensor &d2FdStressdPrecedingF ){ /*! * Compute the higher-order Drucker Prager Yield equation * @@ -525,25 +528,28 @@ namespace tardigradeHydra{ TARDIGRADE_ERROR_TOOLS_CATCH( computeDruckerPragerInternalParameters( frictionAngle, beta, AAngle, BAngle ) ); //Compute the right Cauchy-Green deformation tensor - floatVector rightCauchyGreen; - floatVector dRCGdPrecedingF; + secondOrderTensor rightCauchyGreen; + fourthOrderTensor dRCGdPrecedingF; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeConstitutiveTools::computeRightCauchyGreen( precedingDeformationGradient, rightCauchyGreen, dRCGdPrecedingF ) ); //Compute the decomposition of the stress - variableVector pressure; - variableVector deviatoricReferenceStress; + dimVector pressure; + thirdOrderTensor deviatoricReferenceStress; - variableVector dDevStressdStress, dDevStressdRCG; - variableVector dPressuredStress, dPressuredRCG; + sixthOrderTensor dDevStressdStress; + fifthOrderTensor dDevStressdRCG; + fourthOrderTensor dPressuredStress; + thirdOrderTensor dPressuredRCG; - variableVector d2DevStressdStressdRCG, d2PressuredStressdRCG; + seventhOrderTensor d2DevStressdStressdRCG; + fifthOrderTensor d2PressuredStressdRCG; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeMicromorphicTools::computeHigherOrderReferenceStressDecomposition( stressMeasure, rightCauchyGreen, deviatoricReferenceStress, pressure, dDevStressdStress, dDevStressdRCG, dPressuredStress, dPressuredRCG, d2DevStressdStressdRCG, d2PressuredStressdRCG ) ) - floatVector dDevStressdPrecedingF( tot_dim * sot_dim, 0. ); - floatVector dPressuredPrecedingF( dim * sot_dim, 0 ); + fifthOrderTensor dDevStressdPrecedingF( tot_dim * sot_dim, 0. ); + thirdOrderTensor dPressuredPrecedingF( dim * sot_dim, 0 ); Eigen::Map< Eigen::Matrix< floatType, sot_dim, sot_dim, Eigen::RowMajor > > dRCGdPrecedingF_mat( dRCGdPrecedingF.data( ), sot_dim, sot_dim ); @@ -556,9 +562,9 @@ namespace tardigradeHydra{ dDevStressdPrecedingF_mat = ( dDevStressdRCG_mat * dRCGdPrecedingF_mat ).eval( ); dPressuredPrecedingF_mat = ( dPressuredRCG_mat * dRCGdPrecedingF_mat ).eval( ); - variableVector d2DevStressdStressdPrecedingF( siot_dim * sot_dim, 0 ); + eighthOrderTensor d2DevStressdStressdPrecedingF( siot_dim * sot_dim, 0 ); - variableVector d2PressuredStressdPrecedingF( dim * tot_dim * sot_dim, 0 ); + sixthOrderTensor d2PressuredStressdPrecedingF( dim * tot_dim * sot_dim, 0 ); Eigen::Map< Eigen::Matrix< floatType, siot_dim, sot_dim, Eigen::RowMajor > > d2DevStressdStressdRCG_mat( d2DevStressdStressdRCG.data( ), siot_dim, sot_dim ); Eigen::Map< Eigen::Matrix< floatType, siot_dim, sot_dim, Eigen::RowMajor > > d2DevStressdStressdPrecedingF_mat( d2DevStressdStressdPrecedingF.data( ), siot_dim, sot_dim ); @@ -570,9 +576,9 @@ namespace tardigradeHydra{ d2PressuredStressdPrecedingF_mat = ( d2PressuredStressdRCG_mat * dRCGdPrecedingF_mat ).eval( ); //Compute the l2norm of the deviatoric stress - variableVector normDevStress; - variableVector dNormDevStressdDevStress; - variableVector d2NormDevStressdDevStress2; + thirdOrderTensor normDevStress; + fourthOrderTensor dNormDevStressdDevStress; + seventhOrderTensor d2NormDevStressdDevStress2; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeMicromorphicTools::computeHigherOrderStressNorm( deviatoricReferenceStress, normDevStress, dNormDevStressdDevStress, d2NormDevStressdDevStress2 ) ) @@ -590,7 +596,7 @@ namespace tardigradeHydra{ dFdStress_mat = ( dFdStress_mat + dNormDevStressdDevStress_mat * dDevStressdStress_mat ).eval( ); - dFdc = variableVector( cohesion.size( ) * cohesion.size( ), 0 ); + dFdc = secondOrderTensor( cohesion.size( ) * cohesion.size( ), 0 ); for ( unsigned int i = 0; i < dim; i++ ){ dFdc[ dim * i + i ] = -AAngle; } dFdPrecedingF = BAngle * dPressuredPrecedingF; @@ -600,11 +606,11 @@ namespace tardigradeHydra{ dFdPrecedingF_mat = ( dFdPrecedingF_mat + dNormDevStressdDevStress_mat * dDevStressdPrecedingF_mat ).eval( ); //Construct the second-order jacobians - d2FdStress2 = variableVector( dim * tot_dim * tot_dim, 0 ); - d2FdStressdPrecedingF = variableVector( dim * tot_dim * sot_dim, 0 ); + d2FdStress2 = seventhOrderTensor( dim * tot_dim * tot_dim, 0 ); + d2FdStressdPrecedingF = sixthOrderTensor( dim * tot_dim * sot_dim, 0 ); - floatVector temp_siot1( dim * tot_dim * sot_dim, 0 ); - floatVector temp_seot1( dim * tot_dim * tot_dim, 0 ); + sixthOrderTensor temp_siot1( dim * tot_dim * sot_dim, 0 ); + seventhOrderTensor temp_seot1( dim * tot_dim * tot_dim, 0 ); for ( unsigned int KLMN = 0; KLMN < fot_dim; KLMN++ ){ for ( unsigned int ABC = 0; ABC < tot_dim; ABC++ ){ @@ -661,10 +667,10 @@ namespace tardigradeHydra{ } void computePlasticMacroVelocityGradient( const variableType ¯oGamma, const variableType µGamma, - const variableVector &inverseElasticRightCauchyGreen, - const variableVector ¯oFlowDirection, - const variableVector µFlowDirection, - variableVector &plasticMacroVelocityGradient ){ + const secondOrderTensor &inverseElasticRightCauchyGreen, + const secondOrderTensor ¯oFlowDirection, + const secondOrderTensor µFlowDirection, + secondOrderTensor &plasticMacroVelocityGradient ){ /*! * Compute the plastic macro velocity gradient in the intermediate configuration. * @@ -688,7 +694,7 @@ namespace tardigradeHydra{ TARDIGRADE_ERROR_TOOLS_CHECK( microFlowDirection.size() == dim * dim, "The micro flow direction tensor must be 3D" ); //Compute the macro-scale velocity gradient - plasticMacroVelocityGradient = variableVector( dim * dim, 0 ); + plasticMacroVelocityGradient = secondOrderTensor( dim * dim, 0 ); for ( unsigned int Bb = 0; Bb < dim; Bb++ ){ @@ -710,12 +716,12 @@ namespace tardigradeHydra{ } void computePlasticMacroVelocityGradient( const variableType ¯oGamma, const variableType µGamma, - const variableVector &inverseElasticRightCauchyGreen, - const variableVector ¯oFlowDirection, - const variableVector µFlowDirection, - variableVector &plasticMacroVelocityGradient, - variableVector &dPlasticMacroLdMacroGamma, - variableVector &dPlasticMacroLdMicroGamma ){ + const secondOrderTensor &inverseElasticRightCauchyGreen, + const secondOrderTensor ¯oFlowDirection, + const secondOrderTensor µFlowDirection, + secondOrderTensor &plasticMacroVelocityGradient, + secondOrderTensor &dPlasticMacroLdMacroGamma, + secondOrderTensor &dPlasticMacroLdMicroGamma ){ /*! * Compute the plastic macro velocity gradient in the intermediate configuration. * @@ -741,8 +747,8 @@ namespace tardigradeHydra{ macroFlowDirection, microFlowDirection, plasticMacroVelocityGradient ) ) - dPlasticMacroLdMacroGamma = variableVector( dim * dim, 0 ); - dPlasticMacroLdMicroGamma = variableVector( dim * dim, 0 ); + dPlasticMacroLdMacroGamma = secondOrderTensor( dim * dim, 0 ); + dPlasticMacroLdMicroGamma = secondOrderTensor( dim * dim, 0 ); for ( unsigned int Bb = 0; Bb < dim; Bb++ ){ @@ -765,15 +771,15 @@ namespace tardigradeHydra{ } void computePlasticMacroVelocityGradient( const variableType ¯oGamma, const variableType µGamma, - const variableVector &inverseElasticRightCauchyGreen, - const variableVector ¯oFlowDirection, - const variableVector µFlowDirection, - variableVector &plasticMacroVelocityGradient, - variableVector &dPlasticMacroLdMacroGamma, - variableVector &dPlasticMacroLdMicroGamma, - variableVector &dPlasticMacroLdElasticRCG, - variableVector &dPlasticMacroLdMacroFlowDirection, - variableVector &dPlasticMacroLdMicroFlowDirection ){ + const secondOrderTensor &inverseElasticRightCauchyGreen, + const secondOrderTensor ¯oFlowDirection, + const secondOrderTensor µFlowDirection, + secondOrderTensor &plasticMacroVelocityGradient, + secondOrderTensor &dPlasticMacroLdMacroGamma, + secondOrderTensor &dPlasticMacroLdMicroGamma, + fourthOrderTensor &dPlasticMacroLdElasticRCG, + fourthOrderTensor &dPlasticMacroLdMacroFlowDirection, + fourthOrderTensor &dPlasticMacroLdMicroFlowDirection ){ /*! * Compute the plastic macro velocity gradient in the intermediate configuration. * @@ -807,9 +813,9 @@ namespace tardigradeHydra{ dPlasticMacroLdMacroGamma, dPlasticMacroLdMicroGamma ); ) - dPlasticMacroLdElasticRCG = variableVector( sot_dim * sot_dim, 0 ); - dPlasticMacroLdMacroFlowDirection = variableVector( sot_dim * sot_dim, 0 ); - dPlasticMacroLdMicroFlowDirection = variableVector( sot_dim * sot_dim, 0 ); + dPlasticMacroLdElasticRCG = fourthOrderTensor( sot_dim * sot_dim, 0 ); + dPlasticMacroLdMacroFlowDirection = fourthOrderTensor( sot_dim * sot_dim, 0 ); + dPlasticMacroLdMicroFlowDirection = fourthOrderTensor( sot_dim * sot_dim, 0 ); for ( unsigned int Bb = 0; Bb < dim; Bb++ ){ @@ -839,10 +845,10 @@ namespace tardigradeHydra{ } - void computePlasticMicroVelocityGradient( const variableType µGamma, const variableVector &elasticMicroRightCauchyGreen, - const variableVector &elasticPsi, const variableVector &inverseElasticPsi, - const variableVector µFlowDirection, - variableVector &plasticMicroVelocityGradient ){ + void computePlasticMicroVelocityGradient( const variableType µGamma, const secondOrderTensor &elasticMicroRightCauchyGreen, + const secondOrderTensor &elasticPsi, const secondOrderTensor &inverseElasticPsi, + const secondOrderTensor µFlowDirection, + secondOrderTensor &plasticMicroVelocityGradient ){ /*! * Compute the plastic micro velocity gradient * @@ -871,11 +877,11 @@ namespace tardigradeHydra{ TARDIGRADE_ERROR_TOOLS_CHECK( microFlowDirection.size() == dim * dim, "The micro flow direction of the elastic micro plastic flow direction is not 3D" ); - plasticMicroVelocityGradient = variableVector( sot_dim, 0 ); + plasticMicroVelocityGradient = secondOrderTensor( sot_dim, 0 ); //NOTE: I'm making the second inverse elastic Psi be the transpose of what was done previously. // I think the way it was is a bug since it isn't consistent with the form in my dissertation. - variableVector temp_sot( sot_dim, 0 ); + secondOrderTensor temp_sot( sot_dim, 0 ); for ( unsigned int Bb = 0; Bb < dim; Bb++ ){ @@ -927,11 +933,11 @@ namespace tardigradeHydra{ } - void computePlasticMicroVelocityGradient( const variableType µGamma, const variableVector &elasticMicroRightCauchyGreen, - const variableVector &elasticPsi, const variableVector &inverseElasticPsi, - const variableVector µFlowDirection, - variableVector &plasticMicroVelocityGradient, - variableVector &dPlasticMicroLdMicroGamma ){ + void computePlasticMicroVelocityGradient( const variableType µGamma, const secondOrderTensor &elasticMicroRightCauchyGreen, + const secondOrderTensor &elasticPsi, const secondOrderTensor &inverseElasticPsi, + const secondOrderTensor µFlowDirection, + secondOrderTensor &plasticMicroVelocityGradient, + secondOrderTensor &dPlasticMicroLdMicroGamma ){ /*! * Compute the plastic micro velocity gradient * @@ -962,10 +968,10 @@ namespace tardigradeHydra{ TARDIGRADE_ERROR_TOOLS_CHECK( microFlowDirection.size() == dim * dim, "The micro flow direction of the elastic micro plastic flow direction is not 3D" ); - plasticMicroVelocityGradient = variableVector( dim * dim, 0 ); - dPlasticMicroLdMicroGamma = variableVector( dim * dim, 0 ); + plasticMicroVelocityGradient = secondOrderTensor( dim * dim, 0 ); + dPlasticMicroLdMicroGamma = secondOrderTensor( dim * dim, 0 ); - variableVector temp_sot( sot_dim, 0 ); + secondOrderTensor temp_sot( sot_dim, 0 ); for ( unsigned int Bb = 0; Bb < dim; Bb++ ){ @@ -1019,14 +1025,14 @@ namespace tardigradeHydra{ } - void computePlasticMicroVelocityGradient( const variableType µGamma, const variableVector &elasticMicroRightCauchyGreen, - const variableVector &elasticPsi, const variableVector &inverseElasticPsi, - const variableVector µFlowDirection, - variableVector &plasticMicroVelocityGradient, - variableVector &dPlasticMicroLdMicroGamma, - variableVector &dPlasticMicroLdElasticMicroRCG, - variableVector &dPlasticMicroLdElasticPsi, - variableVector &dPlasticMicroLdMicroFlowDirection ){ + void computePlasticMicroVelocityGradient( const variableType µGamma, const secondOrderTensor &elasticMicroRightCauchyGreen, + const secondOrderTensor &elasticPsi, const secondOrderTensor &inverseElasticPsi, + const secondOrderTensor µFlowDirection, + secondOrderTensor &plasticMicroVelocityGradient, + secondOrderTensor &dPlasticMicroLdMicroGamma, + fourthOrderTensor &dPlasticMicroLdElasticMicroRCG, + fourthOrderTensor &dPlasticMicroLdElasticPsi, + fourthOrderTensor &dPlasticMicroLdMicroFlowDirection ){ /*! * Compute the plastic micro velocity gradient * @@ -1065,17 +1071,17 @@ namespace tardigradeHydra{ ) //Assemble the Jacobians - dPlasticMicroLdElasticMicroRCG = variableVector( sot_dim * sot_dim, 0 ); + dPlasticMicroLdElasticMicroRCG = fourthOrderTensor( sot_dim * sot_dim, 0 ); - dPlasticMicroLdElasticPsi = variableVector( sot_dim * sot_dim, 0 ); + dPlasticMicroLdElasticPsi = fourthOrderTensor( sot_dim * sot_dim, 0 ); - dPlasticMicroLdMicroFlowDirection = variableVector( sot_dim * sot_dim, 0 ); + dPlasticMicroLdMicroFlowDirection = fourthOrderTensor( sot_dim * sot_dim, 0 ); - variableVector temp_sot1( sot_dim, 0 ); + secondOrderTensor temp_sot1( sot_dim, 0 ); - variableVector temp_sot1a( sot_dim, 0 ); + secondOrderTensor temp_sot1a( sot_dim, 0 ); - variableVector temp_sot1b( sot_dim, 0 ); + secondOrderTensor temp_sot1b( sot_dim, 0 ); for ( unsigned int Ob = 0; Ob < dim; Ob++ ){ @@ -1107,7 +1113,7 @@ namespace tardigradeHydra{ } - variableVector temp_fot1( fot_dim, 0 ); + fourthOrderTensor temp_fot1( fot_dim, 0 ); for ( unsigned int Bb = 0; Bb < dim; Bb++ ){ @@ -1137,11 +1143,11 @@ namespace tardigradeHydra{ } - void computePlasticMicroGradientVelocityGradient( const variableVector µGradientGamma, const variableVector &elasticPsi, - const variableVector &inverseElasticPsi, const variableVector &elasticGamma, - const variableVector µGradientFlowDirection, - const variableVector &plasticMicroVelocityGradient, - variableVector &plasticMicroGradientVelocityGradient ){ + void computePlasticMicroGradientVelocityGradient( const dimVector µGradientGamma, const secondOrderTensor &elasticPsi, + const secondOrderTensor &inverseElasticPsi, const thirdOrderTensor &elasticGamma, + const thirdOrderTensor µGradientFlowDirection, + const secondOrderTensor &plasticMicroVelocityGradient, + thirdOrderTensor &plasticMicroGradientVelocityGradient ){ /*! * Compute the plastic micro gradient velocity gradient. * @@ -1158,7 +1164,7 @@ namespace tardigradeHydra{ * \param &plasticMicroGradientVelocityGradient: The plastic micro gradient velocity gradient. */ - variableVector skewTerm; + thirdOrderTensor skewTerm; return computePlasticMicroGradientVelocityGradient( microGradientGamma, elasticPsi, inverseElasticPsi, elasticGamma, microGradientFlowDirection, plasticMicroVelocityGradient, plasticMicroGradientVelocityGradient, @@ -1166,12 +1172,12 @@ namespace tardigradeHydra{ } - void computePlasticMicroGradientVelocityGradient( const variableVector µGradientGamma, const variableVector &elasticPsi, - const variableVector &inverseElasticPsi, const variableVector &elasticGamma, - const variableVector µGradientFlowDirection, - const variableVector &plasticMicroVelocityGradient, - variableVector &plasticMicroGradientVelocityGradient, - variableVector &skewTerm ){ + void computePlasticMicroGradientVelocityGradient( const dimVector µGradientGamma, const secondOrderTensor &elasticPsi, + const secondOrderTensor &inverseElasticPsi, const thirdOrderTensor &elasticGamma, + const thirdOrderTensor µGradientFlowDirection, + const secondOrderTensor &plasticMicroVelocityGradient, + thirdOrderTensor &plasticMicroGradientVelocityGradient, + thirdOrderTensor &skewTerm ){ /*! * Compute the plastic micro gradient velocity gradient. * @@ -1207,9 +1213,9 @@ namespace tardigradeHydra{ TARDIGRADE_ERROR_TOOLS_CHECK( plasticMicroVelocityGradient.size() == sot_dim, "The plastic micro velocity gradient must be 3D" ); //Assemble the 'skew' term - skewTerm = variableVector( tot_dim, 0 ); - variableVector temp_sot( tot_dim, 0 ); - variableVector temp_tot( tot_dim, 0 ); + skewTerm = thirdOrderTensor( tot_dim, 0 ); + secondOrderTensor temp_sot( sot_dim, 0 ); + thirdOrderTensor temp_tot( tot_dim, 0 ); for ( unsigned int Db = 0; Db < dim; Db++ ){ @@ -1252,7 +1258,7 @@ namespace tardigradeHydra{ } - plasticMicroGradientVelocityGradient = variableVector( dim * dim * dim, 0 ); + plasticMicroGradientVelocityGradient = thirdOrderTensor( dim * dim * dim, 0 ); std::fill( temp_tot.begin( ), temp_tot.end( ), 0 ); @@ -1297,13 +1303,13 @@ namespace tardigradeHydra{ } - void computePlasticMicroGradientVelocityGradient( const variableVector µGradientGamma, const variableVector &elasticPsi, - const variableVector &inverseElasticPsi, const variableVector &elasticGamma, - const variableVector µGradientFlowDirection, - const variableVector &plasticMicroVelocityGradient, - variableVector &plasticMicroGradientVelocityGradient, - variableVector &dPlasticMicroGradientLdMicroGradientGamma, - variableVector &dPlasticMicroGradientLdPlasticMicroL ){ + void computePlasticMicroGradientVelocityGradient( const dimVector µGradientGamma, const secondOrderTensor &elasticPsi, + const secondOrderTensor &inverseElasticPsi, const thirdOrderTensor &elasticGamma, + const thirdOrderTensor µGradientFlowDirection, + const secondOrderTensor &plasticMicroVelocityGradient, + thirdOrderTensor &plasticMicroGradientVelocityGradient, + fourthOrderTensor &dPlasticMicroGradientLdMicroGradientGamma, + fifthOrderTensor &dPlasticMicroGradientLdPlasticMicroL ){ /*! * Compute the plastic micro gradient velocity gradient. * @@ -1324,7 +1330,7 @@ namespace tardigradeHydra{ * velocity gradient w.r.t. the platic micro velocity gradient. */ - variableVector skewTerm; + thirdOrderTensor skewTerm; return computePlasticMicroGradientVelocityGradient( microGradientGamma, elasticPsi, inverseElasticPsi, elasticGamma, microGradientFlowDirection, plasticMicroVelocityGradient, plasticMicroGradientVelocityGradient, skewTerm, @@ -1332,14 +1338,14 @@ namespace tardigradeHydra{ dPlasticMicroGradientLdPlasticMicroL ); } - void computePlasticMicroGradientVelocityGradient( const variableVector µGradientGamma, const variableVector &elasticPsi, - const variableVector &inverseElasticPsi, const variableVector &elasticGamma, - const variableVector µGradientFlowDirection, - const variableVector &plasticMicroVelocityGradient, - variableVector &plasticMicroGradientVelocityGradient, - variableVector &skewTerm, - variableVector &dPlasticMicroGradientLdMicroGradientGamma, - variableVector &dPlasticMicroGradientLdPlasticMicroL ){ + void computePlasticMicroGradientVelocityGradient( const dimVector µGradientGamma, const secondOrderTensor &elasticPsi, + const secondOrderTensor &inverseElasticPsi, const thirdOrderTensor &elasticGamma, + const thirdOrderTensor µGradientFlowDirection, + const secondOrderTensor &plasticMicroVelocityGradient, + thirdOrderTensor &plasticMicroGradientVelocityGradient, + thirdOrderTensor &skewTerm, + fourthOrderTensor &dPlasticMicroGradientLdMicroGradientGamma, + fifthOrderTensor &dPlasticMicroGradientLdPlasticMicroL ){ /*! * Compute the plastic micro gradient velocity gradient. * @@ -1375,8 +1381,8 @@ namespace tardigradeHydra{ ) - dPlasticMicroGradientLdPlasticMicroL = variableVector( tot_dim * sot_dim, 0 ); - dPlasticMicroGradientLdMicroGradientGamma = variableVector( tot_dim * dim, 0 ); + dPlasticMicroGradientLdPlasticMicroL = fifthOrderTensor( tot_dim * sot_dim, 0 ); + dPlasticMicroGradientLdMicroGradientGamma = fourthOrderTensor( tot_dim * dim, 0 ); for ( unsigned int Lb = 0; Lb < dim; Lb++ ){ @@ -1410,16 +1416,16 @@ namespace tardigradeHydra{ } - void computePlasticMicroGradientVelocityGradient( const variableVector µGradientGamma, const variableVector &elasticPsi, - const variableVector &inverseElasticPsi, const variableVector &elasticGamma, - const variableVector µGradientFlowDirection, - const variableVector &plasticMicroVelocityGradient, - variableVector &plasticMicroGradientVelocityGradient, - variableVector &dPlasticMicroGradientLdMicroGradientGamma, - variableVector &dPlasticMicroGradientLdPlasticMicroL, - variableVector &dPlasticMicroGradientLdElasticPsi, - variableVector &dPlasticMicroGradientLdElasticGamma, - variableVector &dPlasticMicroGradientLdMicroGradientFlowDirection ){ + void computePlasticMicroGradientVelocityGradient( const dimVector µGradientGamma, const secondOrderTensor &elasticPsi, + const secondOrderTensor &inverseElasticPsi, const thirdOrderTensor &elasticGamma, + const thirdOrderTensor µGradientFlowDirection, + const secondOrderTensor &plasticMicroVelocityGradient, + thirdOrderTensor &plasticMicroGradientVelocityGradient, + fourthOrderTensor &dPlasticMicroGradientLdMicroGradientGamma, + fifthOrderTensor &dPlasticMicroGradientLdPlasticMicroL, + fifthOrderTensor &dPlasticMicroGradientLdElasticPsi, + sixthOrderTensor &dPlasticMicroGradientLdElasticGamma, + sixthOrderTensor &dPlasticMicroGradientLdMicroGradientFlowDirection ){ /*! * Compute the plastic micro gradient velocity gradient. * @@ -1451,7 +1457,7 @@ namespace tardigradeHydra{ constexpr unsigned int sot_dim = dim * dim; constexpr unsigned int tot_dim = sot_dim * dim; - variableVector skewTerm; + thirdOrderTensor skewTerm; TARDIGRADE_ERROR_TOOLS_CATCH( computePlasticMicroGradientVelocityGradient( microGradientGamma, elasticPsi, inverseElasticPsi, @@ -1463,17 +1469,17 @@ namespace tardigradeHydra{ ) - dPlasticMicroGradientLdElasticPsi = variableVector( tot_dim * sot_dim, 0 ); + dPlasticMicroGradientLdElasticPsi = fifthOrderTensor( tot_dim * sot_dim, 0 ); - dPlasticMicroGradientLdElasticGamma = variableVector( tot_dim * tot_dim, 0 ); + dPlasticMicroGradientLdElasticGamma = sixthOrderTensor( tot_dim * tot_dim, 0 ); - dPlasticMicroGradientLdMicroGradientFlowDirection = variableVector( tot_dim * dim * tot_dim, 0 ); + dPlasticMicroGradientLdMicroGradientFlowDirection = seventhOrderTensor( tot_dim * dim * tot_dim, 0 ); - floatVector temp_sot1( sot_dim, 0 ); + secondOrderTensor temp_sot1( sot_dim, 0 ); - floatVector temp_tot1( tot_dim, 0 ); + thirdOrderTensor temp_tot1( tot_dim, 0 ); - floatVector temp_tot2( tot_dim, 0 ); + thirdOrderTensor temp_tot2( tot_dim, 0 ); for ( unsigned int Db = 0; Db < dim; Db++ ){ @@ -1556,16 +1562,16 @@ namespace tardigradeHydra{ } void evolvePlasticMicroGradChi( const variableType &Dt, - const variableVector ¤tPlasticMicroDeformation, - const variableVector ¤tPlasticMacroVelocityGradient, - const variableVector ¤tPlasticMicroVelocityGradient, - const variableVector ¤tPlasticMicroGradientVelocityGradient, - const variableVector &previousPlasticMicroDeformation, - const variableVector &previousPlasticMicroGradient, - const variableVector &previousPlasticMacroVelocityGradient, - const variableVector &previousPlasticMicroVelocityGradient, - const variableVector &previousPlasticMicroGradientVelocityGradient, - variableVector ¤tPlasticMicroGradient, + const secondOrderTensor ¤tPlasticMicroDeformation, + const secondOrderTensor ¤tPlasticMacroVelocityGradient, + const secondOrderTensor ¤tPlasticMicroVelocityGradient, + const thirdOrderTensor ¤tPlasticMicroGradientVelocityGradient, + const secondOrderTensor &previousPlasticMicroDeformation, + const thirdOrderTensor &previousPlasticMicroGradient, + const secondOrderTensor &previousPlasticMacroVelocityGradient, + const secondOrderTensor &previousPlasticMicroVelocityGradient, + const thirdOrderTensor &previousPlasticMicroGradientVelocityGradient, + thirdOrderTensor ¤tPlasticMicroGradient, const parameterType alpha ){ /*! * Evolve the plastic micro gradient of the micro-deformation measure in the intermediate configuration. @@ -1591,7 +1597,7 @@ namespace tardigradeHydra{ * \param alpha: The integration parameter (0 is explicit, 1 is implicit). */ - variableVector LHS; + sixthOrderTensor LHS; evolvePlasticMicroGradChi( Dt, currentPlasticMicroDeformation, currentPlasticMacroVelocityGradient, currentPlasticMicroVelocityGradient, currentPlasticMicroGradientVelocityGradient, @@ -1602,17 +1608,17 @@ namespace tardigradeHydra{ } void evolvePlasticMicroGradChi( const variableType &Dt, - const variableVector ¤tPlasticMicroDeformation, - const variableVector ¤tPlasticMacroVelocityGradient, - const variableVector ¤tPlasticMicroVelocityGradient, - const variableVector ¤tPlasticMicroGradientVelocityGradient, - const variableVector &previousPlasticMicroDeformation, - const variableVector &previousPlasticMicroGradient, - const variableVector &previousPlasticMacroVelocityGradient, - const variableVector &previousPlasticMicroVelocityGradient, - const variableVector &previousPlasticMicroGradientVelocityGradient, - variableVector ¤tPlasticMicroGradient, - variableVector &LHS, + const secondOrderTensor ¤tPlasticMicroDeformation, + const secondOrderTensor ¤tPlasticMacroVelocityGradient, + const secondOrderTensor ¤tPlasticMicroVelocityGradient, + const thirdOrderTensor ¤tPlasticMicroGradientVelocityGradient, + const secondOrderTensor &previousPlasticMicroDeformation, + const secondOrderTensor &previousPlasticMicroGradient, + const secondOrderTensor &previousPlasticMacroVelocityGradient, + const secondOrderTensor &previousPlasticMicroVelocityGradient, + const thirdOrderTensor &previousPlasticMicroGradientVelocityGradient, + thirdOrderTensor ¤tPlasticMicroGradient, + sixthOrderTensor &LHS, const parameterType alpha ){ /*! * Evolve the plastic micro gradient of the micro-deformation measure in the intermediate configuration. @@ -1664,9 +1670,9 @@ namespace tardigradeHydra{ TARDIGRADE_ERROR_TOOLS_CHECK( previousPlasticMicroGradientVelocityGradient.size() == tot_dim, "The previous plastic micro gradient velocity gradient must be 3D" ); //Assemble the A term ( forcing term ) and the fourth order A term - variableVector DtAtilde( tot_dim, 0 ); - variableVector previousFourthA( fot_dim, 0 ); - variableVector currentFourthA( fot_dim, 0 ); + thirdOrderTensor DtAtilde( tot_dim, 0 ); + fourthOrderTensor previousFourthA( fot_dim, 0 ); + fourthOrderTensor currentFourthA( fot_dim, 0 ); for ( unsigned int Db = 0; Db < dim; Db++ ){ @@ -1703,9 +1709,9 @@ namespace tardigradeHydra{ } //Assemble the right-hand side and left-hand side term - variableVector RHS = DtAtilde; + thirdOrderTensor RHS = DtAtilde; RHS += previousPlasticMicroGradient; - LHS = variableVector( tot_dim * tot_dim, 0 ); + LHS = sixthOrderTensor( tot_dim * tot_dim, 0 ); for ( unsigned int i = 0; i < tot_dim; i++ ){ LHS[ tot_dim * i + i ] = 1; } for ( unsigned int Db = 0; Db < dim; Db++ ){ @@ -1733,20 +1739,20 @@ namespace tardigradeHydra{ } void evolvePlasticMicroGradChi( const variableType &Dt, - const variableVector ¤tPlasticMicroDeformation, - const variableVector ¤tPlasticMacroVelocityGradient, - const variableVector ¤tPlasticMicroVelocityGradient, - const variableVector ¤tPlasticMicroGradientVelocityGradient, - const variableVector &previousPlasticMicroDeformation, - const variableVector &previousPlasticMicroGradient, - const variableVector &previousPlasticMacroVelocityGradient, - const variableVector &previousPlasticMicroVelocityGradient, - const variableVector &previousPlasticMicroGradientVelocityGradient, - variableVector ¤tPlasticMicroGradient, - variableVector &dCurrentPlasticMicroGradientdPlasticMicroDeformation, - variableVector &dCurrentPlasticMicroGradientdPlasticMacroVelocityGradient, - variableVector &dCurrentPlasticMicroGradientdPlasticMicroVelocityGradient, - variableVector &dCurrentPlasticMicroGradientdPlasticMicroGradientVelocityGradient, + const secondOrderTensor ¤tPlasticMicroDeformation, + const secondOrderTensor ¤tPlasticMacroVelocityGradient, + const secondOrderTensor ¤tPlasticMicroVelocityGradient, + const thirdOrderTensor ¤tPlasticMicroGradientVelocityGradient, + const secondOrderTensor &previousPlasticMicroDeformation, + const thirdOrderTensor &previousPlasticMicroGradient, + const secondOrderTensor &previousPlasticMacroVelocityGradient, + const secondOrderTensor &previousPlasticMicroVelocityGradient, + const thirdOrderTensor &previousPlasticMicroGradientVelocityGradient, + thirdOrderTensor ¤tPlasticMicroGradient, + fifthOrderTensor &dCurrentPlasticMicroGradientdPlasticMicroDeformation, + fifthOrderTensor &dCurrentPlasticMicroGradientdPlasticMacroVelocityGradient, + fifthOrderTensor &dCurrentPlasticMicroGradientdPlasticMicroVelocityGradient, + sixthOrderTensor &dCurrentPlasticMicroGradientdPlasticMicroGradientVelocityGradient, const parameterType alpha ){ /*! * Evolve the plastic micro gradient of the micro-deformation measure in the intermediate configuration. @@ -1787,7 +1793,7 @@ namespace tardigradeHydra{ constexpr unsigned int fot_dim = tot_dim * dim; //Compute the new currentPlasticMicroGradient - variableVector LHS; + sixthOrderTensor LHS; TARDIGRADE_ERROR_TOOLS_CATCH( evolvePlasticMicroGradChi( Dt, currentPlasticMicroDeformation, currentPlasticMacroVelocityGradient, currentPlasticMicroVelocityGradient, currentPlasticMicroGradientVelocityGradient, @@ -1799,14 +1805,14 @@ namespace tardigradeHydra{ //Compute the negative partial derivatives w.r.t. currentFourthA and the current part of DtAtilde //We do this in vector form so that we can interface with Eigen easier - variableVector negdRdCurrentDtAtilde( dim * dim * dim * dim * dim * dim, 0 ); - variableVector negdRdCurrentFourthA( dim * dim * dim * dim * dim * dim * dim, 0 ); + sixthOrderTensor negdRdCurrentDtAtilde( dim * dim * dim * dim * dim * dim, 0 ); + seventhOrderTensor negdRdCurrentFourthA( dim * dim * dim * dim * dim * dim * dim, 0 ); //Also assemble jacobians of the A terms - variableVector dCurrentDTAtildedPlasticMicroDeformation( tot_dim * sot_dim, 0 ); - variableVector dCurrentDTAtildedPlasticMicroGradientVelocityGradient( tot_dim * tot_dim, 0 ); - variableVector dCurrentFourthAdMacroVelocityGradient( fot_dim * sot_dim, 0 ); - variableVector dCurrentFourthAdMicroVelocityGradient( fot_dim * sot_dim, 0 ); + fifthOrderTensor dCurrentDTAtildedPlasticMicroDeformation( tot_dim * sot_dim, 0 ); + sixthOrderTensor dCurrentDTAtildedPlasticMicroGradientVelocityGradient( tot_dim * tot_dim, 0 ); + sixthOrderTensor dCurrentFourthAdMacroVelocityGradient( fot_dim * sot_dim, 0 ); + sixthOrderTensor dCurrentFourthAdMicroVelocityGradient( fot_dim * sot_dim, 0 ); for ( unsigned int Db = 0; Db < dim; Db++ ){ for ( unsigned int B = 0; B < dim; B++ ){ @@ -1835,8 +1841,8 @@ namespace tardigradeHydra{ } //Solve for the Jacobians - variableVector dCurrentPlasticMicroGradientdCurrentDTAtilde( dim * dim * dim * dim * dim * dim ); - variableVector dCurrentPlasticMicroGradientdCurrentFourthA( dim * dim * dim * dim * dim * dim * dim ); + sixthOrderTensor dCurrentPlasticMicroGradientdCurrentDTAtilde( dim * dim * dim * dim * dim * dim ); + seventhOrderTensor dCurrentPlasticMicroGradientdCurrentFourthA( dim * dim * dim * dim * dim * dim * dim ); Eigen::Map< const Eigen::Matrix< variableType, -1, -1, Eigen::RowMajor > > LHSMat( LHS.data(), tot_dim, tot_dim ); Eigen::Map< const Eigen::Matrix< variableType, -1, -1, Eigen::RowMajor > > nDRDCDA( negdRdCurrentDtAtilde.data(), tot_dim, tot_dim ); @@ -1866,25 +1872,25 @@ namespace tardigradeHydra{ } void evolvePlasticMicroGradChi( const variableType &Dt, - const variableVector ¤tPlasticMicroDeformation, - const variableVector ¤tPlasticMacroVelocityGradient, - const variableVector ¤tPlasticMicroVelocityGradient, - const variableVector ¤tPlasticMicroGradientVelocityGradient, - const variableVector &previousPlasticMicroDeformation, - const variableVector &previousPlasticMicroGradient, - const variableVector &previousPlasticMacroVelocityGradient, - const variableVector &previousPlasticMicroVelocityGradient, - const variableVector &previousPlasticMicroGradientVelocityGradient, - variableVector ¤tPlasticMicroGradient, - variableVector &dCurrentPlasticMicroGradientdPlasticMicroDeformation, - variableVector &dCurrentPlasticMicroGradientdPlasticMacroVelocityGradient, - variableVector &dCurrentPlasticMicroGradientdPlasticMicroVelocityGradient, - variableVector &dCurrentPlasticMicroGradientdPlasticMicroGradientVelocityGradient, - variableVector &dCurrentPlasticMicroGradientdPreviousPlasticMicroDeformation, - variableVector &dCurrentPlasticMicroGradientdPreviousPlasticMicroGradient, - variableVector &dCurrentPlasticMicroGradientdPreviousPlasticMacroVelocityGradient, - variableVector &dCurrentPlasticMicroGradientdPreviousPlasticMicroVelocityGradient, - variableVector &dCurrentPlasticMicroGradientdPreviousPlasticMicroGradientVelocityGradient, + const secondOrderTensor ¤tPlasticMicroDeformation, + const secondOrderTensor ¤tPlasticMacroVelocityGradient, + const secondOrderTensor ¤tPlasticMicroVelocityGradient, + const thirdOrderTensor ¤tPlasticMicroGradientVelocityGradient, + const secondOrderTensor &previousPlasticMicroDeformation, + const thirdOrderTensor &previousPlasticMicroGradient, + const secondOrderTensor &previousPlasticMacroVelocityGradient, + const secondOrderTensor &previousPlasticMicroVelocityGradient, + const thirdOrderTensor &previousPlasticMicroGradientVelocityGradient, + thirdOrderTensor ¤tPlasticMicroGradient, + fifthOrderTensor &dCurrentPlasticMicroGradientdPlasticMicroDeformation, + fifthOrderTensor &dCurrentPlasticMicroGradientdPlasticMacroVelocityGradient, + fifthOrderTensor &dCurrentPlasticMicroGradientdPlasticMicroVelocityGradient, + sixthOrderTensor &dCurrentPlasticMicroGradientdPlasticMicroGradientVelocityGradient, + fifthOrderTensor &dCurrentPlasticMicroGradientdPreviousPlasticMicroDeformation, + sixthOrderTensor &dCurrentPlasticMicroGradientdPreviousPlasticMicroGradient, + sixthOrderTensor &dCurrentPlasticMicroGradientdPreviousPlasticMacroVelocityGradient, + sixthOrderTensor &dCurrentPlasticMicroGradientdPreviousPlasticMicroVelocityGradient, + sixthOrderTensor &dCurrentPlasticMicroGradientdPreviousPlasticMicroGradientVelocityGradient, const parameterType alpha ){ /*! * Evolve the plastic micro gradient of the micro-deformation measure in the intermediate configuration. @@ -1936,7 +1942,7 @@ namespace tardigradeHydra{ constexpr unsigned int fot_dim = tot_dim * dim; //Compute the new currentPlasticMicroGradient - variableVector LHS; + sixthOrderTensor LHS; TARDIGRADE_ERROR_TOOLS_CATCH( evolvePlasticMicroGradChi( Dt, currentPlasticMicroDeformation, currentPlasticMacroVelocityGradient, currentPlasticMicroVelocityGradient, currentPlasticMicroGradientVelocityGradient, @@ -1948,21 +1954,21 @@ namespace tardigradeHydra{ //Compute the negative partial derivatives w.r.t. currentFourthA and the current part of DtAtilde //We do this in vector form so that we can interface with Eigen easier - variableVector negdRdCurrentDtAtilde( tot_dim * tot_dim, 0 ); - variableVector negdRdCurrentFourthA( tot_dim * fot_dim, 0 ); + sixthOrderTensor negdRdCurrentDtAtilde( tot_dim * tot_dim, 0 ); + seventhOrderTensor negdRdCurrentFourthA( tot_dim * fot_dim, 0 ); //Also assemble jacobians of the A terms - variableVector dCurrentDTAtildedPlasticMicroDeformation( tot_dim * sot_dim, 0 ); - variableVector dCurrentDTAtildedPlasticMicroGradientVelocityGradient( tot_dim * tot_dim, 0 ); - variableVector dCurrentFourthAdMacroVelocityGradient( fot_dim * sot_dim, 0 ); - variableVector dCurrentFourthAdMicroVelocityGradient( fot_dim * sot_dim, 0 ); + fifthOrderTensor dCurrentDTAtildedPlasticMicroDeformation( tot_dim * sot_dim, 0 ); + sixthOrderTensor dCurrentDTAtildedPlasticMicroGradientVelocityGradient( tot_dim * tot_dim, 0 ); + sixthOrderTensor dCurrentFourthAdMacroVelocityGradient( fot_dim * sot_dim, 0 ); + sixthOrderTensor dCurrentFourthAdMicroVelocityGradient( fot_dim * sot_dim, 0 ); - variableVector dPreviousDTAtildedPlasticMicroDeformation( tot_dim * sot_dim, 0 ); - variableVector dPreviousDTAtildedPlasticMicroGradientVelocityGradient( tot_dim * tot_dim, 0 ); + fifthOrderTensor dPreviousDTAtildedPlasticMicroDeformation( tot_dim * sot_dim, 0 ); + sixthOrderTensor dPreviousDTAtildedPlasticMicroGradientVelocityGradient( tot_dim * tot_dim, 0 ); - variableVector dRHSdPreviousPlasticMicroGradient( tot_dim * tot_dim, 0 ); - variableVector dRHSdPreviousPlasticMacroVelocityGradient( tot_dim * sot_dim, 0 ); - variableVector dRHSdPreviousPlasticMicroVelocityGradient( tot_dim * sot_dim, 0 ); + sixthOrderTensor dRHSdPreviousPlasticMicroGradient( tot_dim * tot_dim, 0 ); + fifthOrderTensor dRHSdPreviousPlasticMacroVelocityGradient( tot_dim * sot_dim, 0 ); + fifthOrderTensor dRHSdPreviousPlasticMicroVelocityGradient( tot_dim * sot_dim, 0 ); for ( unsigned int Db = 0; Db < dim; Db++ ){ for ( unsigned int B = 0; B < dim; B++ ){ @@ -2012,11 +2018,11 @@ namespace tardigradeHydra{ } } - floatVector dCurrentPlasticMicroGradientdCurrentDTAtilde( tot_dim * tot_dim, 0 ); - floatVector dCurrentPlasticMicroGradientdCurrentFourthA( tot_dim * fot_dim, 0 ); - dCurrentPlasticMicroGradientdPreviousPlasticMicroGradient = floatVector( tot_dim * tot_dim, 0 ); - dCurrentPlasticMicroGradientdPreviousPlasticMacroVelocityGradient = floatVector( tot_dim * sot_dim, 0 ); - dCurrentPlasticMicroGradientdPreviousPlasticMicroVelocityGradient = floatVector( tot_dim * sot_dim, 0 ); + sixthOrderTensor dCurrentPlasticMicroGradientdCurrentDTAtilde( tot_dim * tot_dim, 0 ); + seventhOrderTensor dCurrentPlasticMicroGradientdCurrentFourthA( tot_dim * fot_dim, 0 ); + dCurrentPlasticMicroGradientdPreviousPlasticMicroGradient = sixthOrderTensor( tot_dim * tot_dim, 0 ); + dCurrentPlasticMicroGradientdPreviousPlasticMacroVelocityGradient = fifthOrderTensor( tot_dim * sot_dim, 0 ); + dCurrentPlasticMicroGradientdPreviousPlasticMicroVelocityGradient = fifthOrderTensor( tot_dim * sot_dim, 0 ); //Solve for the Jacobians Eigen::Map< const Eigen::Matrix< variableType, -1, -1, Eigen::RowMajor > > LHSMat( LHS.data(), tot_dim, tot_dim ); @@ -2065,18 +2071,18 @@ namespace tardigradeHydra{ } void evolvePlasticDeformation( const variableType &Dt, - const variableVector ¤tPlasticMacroVelocityGradient, - const variableVector ¤tPlasticMicroVelocityGradient, - const variableVector ¤tPlasticMicroGradientVelocityGradient, - const variableVector &previousPlasticDeformationGradient, - const variableVector &previousPlasticMicroDeformation, - const variableVector &previousPlasticMicroGradient, - const variableVector &previousPlasticMacroVelocityGradient, - const variableVector &previousPlasticMicroVelocityGradient, - const variableVector &previousPlasticMicroGradientVelocityGradient, - variableVector ¤tPlasticDeformationGradient, - variableVector ¤tPlasticMicroDeformation, - variableVector ¤tPlasticMicroGradient, + const secondOrderTensor ¤tPlasticMacroVelocityGradient, + const secondOrderTensor ¤tPlasticMicroVelocityGradient, + const thirdOrderTensor ¤tPlasticMicroGradientVelocityGradient, + const secondOrderTensor &previousPlasticDeformationGradient, + const secondOrderTensor &previousPlasticMicroDeformation, + const thirdOrderTensor &previousPlasticMicroGradient, + const secondOrderTensor &previousPlasticMacroVelocityGradient, + const secondOrderTensor &previousPlasticMicroVelocityGradient, + const thirdOrderTensor &previousPlasticMicroGradientVelocityGradient, + secondOrderTensor ¤tPlasticDeformationGradient, + secondOrderTensor ¤tPlasticMicroDeformation, + thirdOrderTensor ¤tPlasticMicroGradient, const parameterType alphaMacro, const parameterType alphaMicro, const parameterType alphaMicroGradient ){ @@ -2138,23 +2144,23 @@ namespace tardigradeHydra{ } void evolvePlasticDeformation( const variableType &Dt, - const variableVector ¤tPlasticMacroVelocityGradient, - const variableVector ¤tPlasticMicroVelocityGradient, - const variableVector ¤tPlasticMicroGradientVelocityGradient, - const variableVector &previousPlasticDeformationGradient, - const variableVector &previousPlasticMicroDeformation, - const variableVector &previousPlasticMicroGradient, - const variableVector &previousPlasticMacroVelocityGradient, - const variableVector &previousPlasticMicroVelocityGradient, - const variableVector &previousPlasticMicroGradientVelocityGradient, - variableVector ¤tPlasticDeformationGradient, - variableVector ¤tPlasticMicroDeformation, - variableVector ¤tPlasticMicroGradient, - variableVector &dPlasticFdPlasticMacroL, - variableVector &dPlasticMicroDeformationdPlasticMicroL, - variableVector &dPlasticMicroGradientdPlasticMacroL, - variableVector &dPlasticMicroGradientdPlasticMicroL, - variableVector &dPlasticMicroGradientdPlasticMicroGradientL, + const secondOrderTensor ¤tPlasticMacroVelocityGradient, + const secondOrderTensor ¤tPlasticMicroVelocityGradient, + const thirdOrderTensor ¤tPlasticMicroGradientVelocityGradient, + const secondOrderTensor &previousPlasticDeformationGradient, + const secondOrderTensor &previousPlasticMicroDeformation, + const thirdOrderTensor &previousPlasticMicroGradient, + const secondOrderTensor &previousPlasticMacroVelocityGradient, + const secondOrderTensor &previousPlasticMicroVelocityGradient, + const thirdOrderTensor &previousPlasticMicroGradientVelocityGradient, + secondOrderTensor ¤tPlasticDeformationGradient, + secondOrderTensor ¤tPlasticMicroDeformation, + thirdOrderTensor ¤tPlasticMicroGradient, + fourthOrderTensor &dPlasticFdPlasticMacroL, + fourthOrderTensor &dPlasticMicroDeformationdPlasticMicroL, + fifthOrderTensor &dPlasticMicroGradientdPlasticMacroL, + fifthOrderTensor &dPlasticMicroGradientdPlasticMicroL, + sixthOrderTensor &dPlasticMicroGradientdPlasticMicroGradientL, const parameterType alphaMacro, const parameterType alphaMicro, const parameterType alphaMicroGradient ){ @@ -2218,7 +2224,7 @@ namespace tardigradeHydra{ // dPlasticMicroDeformationdPlasticMicroL, alphaMicro ); ) - variableVector dPlasticMicroGradientdPlasticMicroDeformation; + fifthOrderTensor dPlasticMicroGradientdPlasticMicroDeformation; TARDIGRADE_ERROR_TOOLS_CATCH( evolvePlasticMicroGradChi( Dt, currentPlasticMicroDeformation, currentPlasticMacroVelocityGradient, currentPlasticMicroVelocityGradient, currentPlasticMicroGradientVelocityGradient, @@ -2236,32 +2242,32 @@ namespace tardigradeHydra{ } void evolvePlasticDeformation( const variableType &Dt, - const variableVector ¤tPlasticMacroVelocityGradient, - const variableVector ¤tPlasticMicroVelocityGradient, - const variableVector ¤tPlasticMicroGradientVelocityGradient, - const variableVector &previousPlasticDeformationGradient, - const variableVector &previousPlasticMicroDeformation, - const variableVector &previousPlasticMicroGradient, - const variableVector &previousPlasticMacroVelocityGradient, - const variableVector &previousPlasticMicroVelocityGradient, - const variableVector &previousPlasticMicroGradientVelocityGradient, - variableVector ¤tPlasticDeformationGradient, - variableVector ¤tPlasticMicroDeformation, - variableVector ¤tPlasticMicroGradient, - variableVector &dPlasticFdPlasticMacroL, - variableVector &dPlasticMicroDeformationdPlasticMicroL, - variableVector &dPlasticMicroGradientdPlasticMacroL, - variableVector &dPlasticMicroGradientdPlasticMicroL, - variableVector &dPlasticMicroGradientdPlasticMicroGradientL, - variableVector &dPlasticFdPreviousPlasticF, - variableVector &dPlasticFdPreviousPlasticMacroL, - variableVector &dPlasticMicroDeformationdPreviousPlasticMicroDeformation, - variableVector &dPlasticMicroDeformationdPreviousPlasticMicroL, - variableVector &dPlasticMicroGradientdPreviousPlasticMicroDeformation, - variableVector &dPlasticMicroGradientdPreviousPlasticMicroGradient, - variableVector &dPlasticMicroGradientdPreviousPlasticMacroL, - variableVector &dPlasticMicroGradientdPreviousPlasticMicroL, - variableVector &dPlasticMicroGradientdPreviousPlasticMicroGradientL, + const secondOrderTensor ¤tPlasticMacroVelocityGradient, + const secondOrderTensor ¤tPlasticMicroVelocityGradient, + const thirdOrderTensor ¤tPlasticMicroGradientVelocityGradient, + const secondOrderTensor &previousPlasticDeformationGradient, + const secondOrderTensor &previousPlasticMicroDeformation, + const thirdOrderTensor &previousPlasticMicroGradient, + const secondOrderTensor &previousPlasticMacroVelocityGradient, + const secondOrderTensor &previousPlasticMicroVelocityGradient, + const thirdOrderTensor &previousPlasticMicroGradientVelocityGradient, + secondOrderTensor ¤tPlasticDeformationGradient, + secondOrderTensor ¤tPlasticMicroDeformation, + thirdOrderTensor ¤tPlasticMicroGradient, + fourthOrderTensor &dPlasticFdPlasticMacroL, + fourthOrderTensor &dPlasticMicroDeformationdPlasticMicroL, + fifthOrderTensor &dPlasticMicroGradientdPlasticMacroL, + fifthOrderTensor &dPlasticMicroGradientdPlasticMicroL, + sixthOrderTensor &dPlasticMicroGradientdPlasticMicroGradientL, + fourthOrderTensor &dPlasticFdPreviousPlasticF, + fourthOrderTensor &dPlasticFdPreviousPlasticMacroL, + fourthOrderTensor &dPlasticMicroDeformationdPreviousPlasticMicroDeformation, + fourthOrderTensor &dPlasticMicroDeformationdPreviousPlasticMicroL, + fifthOrderTensor &dPlasticMicroGradientdPreviousPlasticMicroDeformation, + fifthOrderTensor &dPlasticMicroGradientdPreviousPlasticMicroGradient, + fifthOrderTensor &dPlasticMicroGradientdPreviousPlasticMacroL, + fifthOrderTensor &dPlasticMicroGradientdPreviousPlasticMicroL, + sixthOrderTensor &dPlasticMicroGradientdPreviousPlasticMicroGradientL, const parameterType alphaMacro, const parameterType alphaMicro, const parameterType alphaMicroGradient ){ @@ -2345,7 +2351,7 @@ namespace tardigradeHydra{ // dPlasticMicroDeformationdPreviousPlasticMicroL, alphaMicro ); ) - variableVector dPlasticMicroGradientdPlasticMicroDeformation; + fifthOrderTensor dPlasticMicroGradientdPlasticMicroDeformation; TARDIGRADE_ERROR_TOOLS_CATCH( evolvePlasticMicroGradChi( Dt, currentPlasticMicroDeformation, currentPlasticMacroVelocityGradient, currentPlasticMicroVelocityGradient, currentPlasticMicroGradientVelocityGradient, @@ -2445,9 +2451,9 @@ namespace tardigradeHydra{ const floatVector *stress; - floatVector Fp; + secondOrderTensor Fp; - floatVector chip; + secondOrderTensor chip; if ( isPrevious ){ @@ -2469,18 +2475,18 @@ namespace tardigradeHydra{ } // Extract the stresses from the stress vector - floatVector PK2Stress( stress->begin( ), stress->begin( ) + 1 * sot_dim ); + secondOrderTensor PK2Stress( stress->begin( ), stress->begin( ) + 1 * sot_dim ); - floatVector referenceSymmetricMicroStress( stress->begin( ) + 1 * sot_dim, stress->begin( ) + 2 * sot_dim ); + secondOrderTensor referenceSymmetricMicroStress( stress->begin( ) + 1 * sot_dim, stress->begin( ) + 2 * sot_dim ); - floatVector referenceHigherOrderStress( stress->begin( ) + 2 * sot_dim, stress->begin( ) + 2 * sot_dim + tot_dim ); + thirdOrderTensor referenceHigherOrderStress( stress->begin( ) + 2 * sot_dim, stress->begin( ) + 2 * sot_dim + tot_dim ); // Push the stresses forward to the current configuration of the plastic configuration - floatVector macroDrivingStress; + secondOrderTensor macroDrivingStress; - floatVector symmetricMicroDrivingStress; + secondOrderTensor symmetricMicroDrivingStress; - floatVector higherOrderDrivingStress; + thirdOrderTensor higherOrderDrivingStress; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeMicromorphicTools::pushForwardPK2Stress( PK2Stress, Fp, macroDrivingStress ) ); @@ -2727,19 +2733,19 @@ namespace tardigradeHydra{ floatVector dFpdSubFs; - const floatVector *dF1dF; + const fourthOrderTensor *dF1dF; const floatVector *dF1dFn; floatVector dChipdSubChis; - const floatVector *dChi1dChi; + const fourthOrderTensor *dChi1dChi; const floatVector *dChi1dChin; - floatVector Fp; + secondOrderTensor Fp; - floatVector chip; + secondOrderTensor chip; if ( isPrevious ){ @@ -2785,11 +2791,11 @@ namespace tardigradeHydra{ } // Assemble the derivatives of the deformation gradient map - floatVector dFpdF( sot_dim * sot_dim, 0 ); + fourthOrderTensor dFpdF( sot_dim * sot_dim, 0 ); floatVector dFpdFn( sot_dim * ( num_configs - 1 ) * sot_dim, 0 ); - floatVector dChipdChi( sot_dim * sot_dim, 0 ); + fourthOrderTensor dChipdChi( sot_dim * sot_dim, 0 ); floatVector dChipdChin( sot_dim * ( num_configs - 1 ) * sot_dim, 0 ); @@ -2826,32 +2832,32 @@ namespace tardigradeHydra{ } // Extract the stresses from the stress vector - floatVector PK2Stress( stress->begin( ), stress->begin( ) + 1 * sot_dim ); + secondOrderTensor PK2Stress( stress->begin( ), stress->begin( ) + 1 * sot_dim ); - floatVector referenceSymmetricMicroStress( stress->begin( ) + 1 * sot_dim, stress->begin( ) + 2 * sot_dim );; + secondOrderTensor referenceSymmetricMicroStress( stress->begin( ) + 1 * sot_dim, stress->begin( ) + 2 * sot_dim );; - floatVector referenceHigherOrderStress( stress->begin( ) + 2 * sot_dim, stress->begin( ) + 2 * sot_dim + tot_dim ); + thirdOrderTensor referenceHigherOrderStress( stress->begin( ) + 2 * sot_dim, stress->begin( ) + 2 * sot_dim + tot_dim ); // Push the stresses forward to the current configuration of the plastic configuration - floatVector macroDrivingStress; + secondOrderTensor macroDrivingStress; - floatVector symmetricMicroDrivingStress; + secondOrderTensor symmetricMicroDrivingStress; - floatVector higherOrderDrivingStress; + thirdOrderTensor higherOrderDrivingStress; - floatVector dMacrodFp; + fourthOrderTensor dMacrodFp; - floatVector dMacrodPK2; + fourthOrderTensor dMacrodPK2; - floatVector dMicrodFp; + fourthOrderTensor dMicrodFp; - floatVector dMicrodSigma; + fourthOrderTensor dMicrodSigma; - floatVector dHigherdFp; + fifthOrderTensor dHigherdFp; - floatVector dHigherdChip; + fifthOrderTensor dHigherdChip; - floatVector dHigherdM; + sixthOrderTensor dHigherdM; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeMicromorphicTools::pushForwardPK2Stress( PK2Stress, Fp, macroDrivingStress, dMacrodPK2, dMacrodFp ) ); @@ -3326,15 +3332,15 @@ namespace tardigradeHydra{ const floatType *microCohesion; - const floatVector *microGradientCohesion; + const dimVector *microGradientCohesion; - const floatVector *macroDrivingStress; + const secondOrderTensor *macroDrivingStress; - const floatVector *microDrivingStress; + const secondOrderTensor *microDrivingStress; - const floatVector *microGradientDrivingStress; + const thirdOrderTensor *microGradientDrivingStress; - const floatVector *precedingDeformationGradient; + const secondOrderTensor *precedingDeformationGradient; const floatVector *macroFlowParameters = get_macroFlowParameters( ); @@ -3383,10 +3389,12 @@ namespace tardigradeHydra{ floatType dMacroFlowdCohesion, dMicroFlowdCohesion; - floatVector dMacroFlowdDrivingStress, dMicroFlowdDrivingStress, - dMacroFlowdPrecedingF, dMicroFlowdPrecedingF; + secondOrderTensor dMacroFlowdDrivingStress, dMicroFlowdDrivingStress, + dMacroFlowdPrecedingF, dMicroFlowdPrecedingF; - floatVector dMicroGradientFlowdDrivingStress, dMicroGradientFlowdCohesion, dMicroGradientFlowdPrecedingF; + fourthOrderTensor dMicroGradientFlowdDrivingStress; + secondOrderTensor dMicroGradientFlowdCohesion; + thirdOrderTensor dMicroGradientFlowdPrecedingF; TARDIGRADE_ERROR_TOOLS_CATCH( computeSecondOrderDruckerPragerYieldEquation( *macroDrivingStress, *macroCohesion, *precedingDeformationGradient, ( *macroFlowParameters )[ 0 ], ( *macroFlowParameters )[ 1 ], @@ -3650,39 +3658,39 @@ namespace tardigradeHydra{ const floatType *microCohesion; - const floatVector *microGradientCohesion; + const dimVector *microGradientCohesion; - const floatVector *macroDrivingStress; + const secondOrderTensor *macroDrivingStress; - const floatVector *microDrivingStress; + const secondOrderTensor *microDrivingStress; - const floatVector *microGradientDrivingStress; + const thirdOrderTensor *microGradientDrivingStress; - const floatVector *dMacroDrivingStressdStress; + const fourthOrderTensor *dMacroDrivingStressdStress; - const floatVector *dMacroDrivingStressdF; + const fourthOrderTensor *dMacroDrivingStressdF; const floatVector *dMacroDrivingStressdFn; - const floatVector *dMicroDrivingStressdStress; + const fourthOrderTensor *dMicroDrivingStressdStress; - const floatVector *dMicroDrivingStressdF; + const fourthOrderTensor *dMicroDrivingStressdF; const floatVector *dMicroDrivingStressdFn; - const floatVector *dMicroGradientDrivingStressdStress; + const sixthOrderTensor *dMicroGradientDrivingStressdStress; - const floatVector *dMicroGradientDrivingStressdF; + const fifthOrderTensor *dMicroGradientDrivingStressdF; const floatVector *dMicroGradientDrivingStressdFn; - const floatVector *dMicroGradientDrivingStressdChi; + const fifthOrderTensor *dMicroGradientDrivingStressdChi; const floatVector *dMicroGradientDrivingStressdChin; - const floatVector *precedingDeformationGradient; + const secondOrderTensor *precedingDeformationGradient; - const floatVector *dPrecedingFdF; + const fourthOrderTensor *dPrecedingFdF; const floatVector *dPrecedingFdFn; @@ -3785,14 +3793,18 @@ namespace tardigradeHydra{ floatType dMacroFlowdCohesion, dMicroFlowdCohesion; - floatVector dMacroFlowdDrivingStress, dMicroFlowdDrivingStress, - dMacroFlowdPrecedingF, dMicroFlowdPrecedingF; + secondOrderTensor dMacroFlowdDrivingStress, dMicroFlowdDrivingStress, + dMacroFlowdPrecedingF, dMicroFlowdPrecedingF; - floatVector dMicroGradientFlowdDrivingStress, dMicroGradientFlowdCohesion, dMicroGradientFlowdPrecedingF; + fourthOrderTensor dMicroGradientFlowdDrivingStress; + secondOrderTensor dMicroGradientFlowdCohesion; + thirdOrderTensor dMicroGradientFlowdPrecedingF; - floatVector d2MacroFlowdDrivingStress2, d2MacroFlowdDrivingStressdPrecedingF, - d2MicroFlowdDrivingStress2, d2MicroFlowdDrivingStressdPrecedingF, - d2MicroGradientFlowdDrivingStress2, d2MicroGradientFlowdDrivingStressdPrecedingF; + fourthOrderTensor d2MacroFlowdDrivingStress2, d2MacroFlowdDrivingStressdPrecedingF, + d2MicroFlowdDrivingStress2, d2MicroFlowdDrivingStressdPrecedingF; + + seventhOrderTensor d2MicroGradientFlowdDrivingStress2; + sixthOrderTensor d2MicroGradientFlowdDrivingStressdPrecedingF; TARDIGRADE_ERROR_TOOLS_CATCH( computeSecondOrderDruckerPragerYieldEquation( *macroDrivingStress, *macroCohesion, *precedingDeformationGradient, ( *macroFlowParameters )[ 0 ], ( *macroFlowParameters )[ 1 ], @@ -3809,19 +3821,19 @@ namespace tardigradeHydra{ tempVectorYield, dMicroGradientFlowdDrivingStress, dMicroGradientFlowdCohesion, dMicroGradientFlowdPrecedingF, d2MicroGradientFlowdDrivingStress2, d2MicroGradientFlowdDrivingStressdPrecedingF ) ); - floatVector d2MacroFlowdDrivingStressdMacroStress( sot_dim * sot_dim, 0 ); + fourthOrderTensor d2MacroFlowdDrivingStressdMacroStress( sot_dim * sot_dim, 0 ); - floatVector d2MicroFlowdDrivingStressdMicroStress( sot_dim * sot_dim, 0 ); + fourthOrderTensor d2MicroFlowdDrivingStressdMicroStress( sot_dim * sot_dim, 0 ); - floatVector d2MicroGradientFlowdDrivingStressdMicroGradientStress( dim * tot_dim * tot_dim, 0 ); + seventhOrderTensor d2MicroGradientFlowdDrivingStressdMicroGradientStress( dim * tot_dim * tot_dim, 0 ); - floatVector d2MacroFlowdDrivingStressdF( sot_dim * sot_dim, 0 ); + fourthOrderTensor d2MacroFlowdDrivingStressdF( sot_dim * sot_dim, 0 ); - floatVector d2MicroFlowdDrivingStressdF( sot_dim * sot_dim, 0 ); + fourthOrderTensor d2MicroFlowdDrivingStressdF( sot_dim * sot_dim, 0 ); - floatVector d2MicroGradientFlowdDrivingStressdF( dim * tot_dim * sot_dim, 0 ); + sixthOrderTensor d2MicroGradientFlowdDrivingStressdF( dim * tot_dim * sot_dim, 0 ); - floatVector d2MicroGradientFlowdDrivingStressdChi( dim * tot_dim * sot_dim, 0 ); + sixthOrderTensor d2MicroGradientFlowdDrivingStressdChi( dim * tot_dim * sot_dim, 0 ); floatVector d2MacroFlowdDrivingStressdFn( sot_dim * ( num_configs - 1 ) * sot_dim, 0 ); @@ -4101,8 +4113,8 @@ namespace tardigradeHydra{ floatType microCohesion = ( *get_microHardeningParameters( ) )[ 0 ] + ( *get_microHardeningParameters( ) )[ 1 ] * ( *plasticStrainLikeISVs )[ 1 ]; - floatVector microGradientCohesion = ( *get_microGradientHardeningParameters( ) )[ 0 ] + ( *get_microGradientHardeningParameters( ) )[ 1 ] * floatVector( plasticStrainLikeISVs->begin( ) + 2, - plasticStrainLikeISVs->end( ) ); + dimVector microGradientCohesion = ( *get_microGradientHardeningParameters( ) )[ 0 ] + ( *get_microGradientHardeningParameters( ) )[ 1 ] * dimVector( plasticStrainLikeISVs->begin( ) + 2, + plasticStrainLikeISVs->end( ) ); if ( isPrevious ){ @@ -4241,8 +4253,8 @@ namespace tardigradeHydra{ dMicroCohesiondISVs[ get_plasticMultipliers( )->size( ) + 1 ] = ( *get_microHardeningParameters( ) )[ 1 ]; - floatVector microGradientCohesion = ( *get_microGradientHardeningParameters( ) )[ 0 ] + ( *get_microGradientHardeningParameters( ) )[ 1 ] * floatVector( plasticStrainLikeISVs->begin( ) + 2, - plasticStrainLikeISVs->end( ) ); + dimVector microGradientCohesion = ( *get_microGradientHardeningParameters( ) )[ 0 ] + ( *get_microGradientHardeningParameters( ) )[ 1 ] * dimVector( plasticStrainLikeISVs->begin( ) + 2, + plasticStrainLikeISVs->end( ) ); for ( unsigned int i = 2; i < num_psisvs; i++ ){ @@ -4312,7 +4324,7 @@ namespace tardigradeHydra{ const floatType *dMicroFlowdc; - const floatVector *dMicroGradientFlowdc; + const secondOrderTensor *dMicroGradientFlowdc; const floatVector *plasticMultipliers; @@ -4399,7 +4411,7 @@ namespace tardigradeHydra{ const floatType *dMicroFlowdc; - const floatVector *dMicroGradientFlowdc; + const secondOrderTensor *dMicroGradientFlowdc; const floatVector *plasticMultipliers; @@ -4620,19 +4632,19 @@ namespace tardigradeHydra{ * \param isPrevious: A flag for if the current (false) or previous (true) values should be calculated */ - const floatVector *macroDrivingStress; + const secondOrderTensor *macroDrivingStress; - const floatVector *microDrivingStress; + const secondOrderTensor *microDrivingStress; - const floatVector *microGradientDrivingStress; + const thirdOrderTensor *microGradientDrivingStress; const floatType *macroCohesion; const floatType *microCohesion; - const floatVector *microGradientCohesion; + const dimVector *microGradientCohesion; - const floatVector *precedingDeformationGradient; + const secondOrderTensor *precedingDeformationGradient; const floatVector *macroYieldParameters = get_macroYieldParameters( ); @@ -4679,7 +4691,7 @@ namespace tardigradeHydra{ floatType microYield; - floatVector microGradientYield; + dimVector microGradientYield; TARDIGRADE_ERROR_TOOLS_CATCH( computeSecondOrderDruckerPragerYieldEquation( *macroDrivingStress, *macroCohesion, *precedingDeformationGradient, ( *macroYieldParameters )[ 0 ], ( *macroYieldParameters )[ 1 ], @@ -4979,31 +4991,31 @@ namespace tardigradeHydra{ const unsigned int num_configs = *hydra->getNumConfigurations( ); - const floatVector *macroDrivingStress; + const secondOrderTensor *macroDrivingStress; - const floatVector *microDrivingStress; + const secondOrderTensor *microDrivingStress; - const floatVector *microGradientDrivingStress; + const thirdOrderTensor *microGradientDrivingStress; const floatType *macroCohesion; const floatType *microCohesion; - const floatVector *microGradientCohesion; + const dimVector *microGradientCohesion; const floatVector *dMacroCohesiondStateVariables; - const floatVector *dMacroDrivingStressdStress; + const fourthOrderTensor *dMacroDrivingStressdStress; - const floatVector *dMacroDrivingStressdF; + const fourthOrderTensor *dMacroDrivingStressdF; const floatVector *dMacroDrivingStressdFn; const floatVector *dMicroCohesiondStateVariables; - const floatVector *dMicroDrivingStressdStress; + const fourthOrderTensor *dMicroDrivingStressdStress; - const floatVector *dMicroDrivingStressdF; + const fourthOrderTensor *dMicroDrivingStressdF; const floatVector *dMicroDrivingStressdFn; @@ -5011,17 +5023,17 @@ namespace tardigradeHydra{ const floatVector *dMicroGradientDrivingStressdStress; - const floatVector *dMicroGradientDrivingStressdF; + const fourthOrderTensor *dMicroGradientDrivingStressdF; const floatVector *dMicroGradientDrivingStressdFn; - const floatVector *dMicroGradientDrivingStressdChi; + const fourthOrderTensor *dMicroGradientDrivingStressdChi; const floatVector *dMicroGradientDrivingStressdChin; const floatVector *precedingDeformationGradient; - const floatVector *dPrecedingFdF; + const fourthOrderTensor *dPrecedingFdF; const floatVector *dPrecedingFdFn; @@ -5134,25 +5146,25 @@ namespace tardigradeHydra{ floatType microYield; - floatVector microGradientYield; + dimVector microGradientYield; - floatVector dMacroYielddDrivingStress; + secondOrderTensor dMacroYielddDrivingStress; floatType dMacroYielddCohesion; - floatVector dMacroYielddPrecedingF; + secondOrderTensor dMacroYielddPrecedingF; - floatVector dMicroYielddDrivingStress; + secondOrderTensor dMicroYielddDrivingStress; floatType dMicroYielddCohesion; - floatVector dMicroYielddPrecedingF; + secondOrderTensor dMicroYielddPrecedingF; - floatVector dMicroGradientYielddDrivingStress; + fourthOrderTensor dMicroGradientYielddDrivingStress; - floatVector dMicroGradientYielddCohesion; + secondOrderTensor dMicroGradientYielddCohesion; - floatVector dMicroGradientYielddPrecedingF; + thirdOrderTensor dMicroGradientYielddPrecedingF; TARDIGRADE_ERROR_TOOLS_CATCH( computeSecondOrderDruckerPragerYieldEquation( *macroDrivingStress, *macroCohesion, *precedingDeformationGradient, ( *macroYieldParameters )[ 0 ], ( *macroYieldParameters )[ 1 ], @@ -5167,37 +5179,37 @@ namespace tardigradeHydra{ microGradientYield, dMicroGradientYielddDrivingStress, dMicroGradientYielddCohesion, dMicroGradientYielddPrecedingF ) ); - floatVector dMacroYielddStress = tardigradeVectorTools::matrixMultiply( dMacroYielddDrivingStress, *dMacroDrivingStressdStress, 1, sot_dim, sot_dim, sot_dim ); + secondOrderTensor dMacroYielddStress = tardigradeVectorTools::matrixMultiply( dMacroYielddDrivingStress, *dMacroDrivingStressdStress, 1, sot_dim, sot_dim, sot_dim ); floatVector dMacroYielddStateVariables = dMacroYielddCohesion * ( *dMacroCohesiondStateVariables ); - floatVector dMacroYielddF = tardigradeVectorTools::matrixMultiply( dMacroYielddDrivingStress, *dMacroDrivingStressdF, 1, sot_dim, sot_dim, sot_dim ) - + tardigradeVectorTools::matrixMultiply( dMacroYielddPrecedingF, *dPrecedingFdF, 1, sot_dim, sot_dim, sot_dim); + secondOrderTensor dMacroYielddF = tardigradeVectorTools::matrixMultiply( dMacroYielddDrivingStress, *dMacroDrivingStressdF, 1, sot_dim, sot_dim, sot_dim ) + + tardigradeVectorTools::matrixMultiply( dMacroYielddPrecedingF, *dPrecedingFdF, 1, sot_dim, sot_dim, sot_dim); floatVector dMacroYielddFn = tardigradeVectorTools::matrixMultiply( dMacroYielddDrivingStress, *dMacroDrivingStressdFn, 1, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ) + tardigradeVectorTools::matrixMultiply( dMacroYielddPrecedingF, *dPrecedingFdFn, 1, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ); - floatVector dMicroYielddStress = tardigradeVectorTools::matrixMultiply( dMicroYielddDrivingStress, *dMicroDrivingStressdStress, 1, sot_dim, sot_dim, sot_dim ); + secondOrderTensor dMicroYielddStress = tardigradeVectorTools::matrixMultiply( dMicroYielddDrivingStress, *dMicroDrivingStressdStress, 1, sot_dim, sot_dim, sot_dim ); floatVector dMicroYielddStateVariables = dMicroYielddCohesion * ( *dMicroCohesiondStateVariables ); - floatVector dMicroYielddF = tardigradeVectorTools::matrixMultiply( dMicroYielddDrivingStress, *dMicroDrivingStressdF, 1, sot_dim, sot_dim, sot_dim ) - + tardigradeVectorTools::matrixMultiply( dMicroYielddPrecedingF, *dPrecedingFdF, 1, sot_dim, sot_dim, sot_dim ); + secondOrderTensor dMicroYielddF = tardigradeVectorTools::matrixMultiply( dMicroYielddDrivingStress, *dMicroDrivingStressdF, 1, sot_dim, sot_dim, sot_dim ) + + tardigradeVectorTools::matrixMultiply( dMicroYielddPrecedingF, *dPrecedingFdF, 1, sot_dim, sot_dim, sot_dim ); floatVector dMicroYielddFn = tardigradeVectorTools::matrixMultiply( dMicroYielddDrivingStress, *dMicroDrivingStressdFn, 1, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ) + tardigradeVectorTools::matrixMultiply( dMicroYielddPrecedingF, *dPrecedingFdFn, 1, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ); - floatVector dMicroGradientYielddStress = tardigradeVectorTools::matrixMultiply( dMicroGradientYielddDrivingStress, *dMicroGradientDrivingStressdStress, 3, tot_dim, tot_dim, tot_dim ); + fourthOrderTensor dMicroGradientYielddStress = tardigradeVectorTools::matrixMultiply( dMicroGradientYielddDrivingStress, *dMicroGradientDrivingStressdStress, 3, tot_dim, tot_dim, tot_dim ); floatVector dMicroGradientYielddStateVariables = tardigradeVectorTools::matrixMultiply( dMicroGradientYielddCohesion, *dMicroGradientCohesiondStateVariables, 3, 3, 3, dMicroGradientCohesiondStateVariables->size( ) / 3 ); - floatVector dMicroGradientYielddF = tardigradeVectorTools::matrixMultiply( dMicroGradientYielddDrivingStress, *dMicroGradientDrivingStressdF, 3, tot_dim, tot_dim, sot_dim ) + thirdOrderTensor dMicroGradientYielddF = tardigradeVectorTools::matrixMultiply( dMicroGradientYielddDrivingStress, *dMicroGradientDrivingStressdF, 3, tot_dim, tot_dim, sot_dim ) + tardigradeVectorTools::matrixMultiply( dMicroGradientYielddPrecedingF, *dPrecedingFdF, 3, sot_dim, sot_dim, sot_dim ); floatVector dMicroGradientYielddFn = tardigradeVectorTools::matrixMultiply( dMicroGradientYielddDrivingStress, *dMicroGradientDrivingStressdFn, 3, tot_dim, tot_dim, ( num_configs - 1 ) * sot_dim ) + tardigradeVectorTools::matrixMultiply( dMicroGradientYielddPrecedingF, *dPrecedingFdFn, 3, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ); - floatVector dMicroGradientYielddChi = tardigradeVectorTools::matrixMultiply( dMicroGradientYielddDrivingStress, *dMicroGradientDrivingStressdChi, 3, tot_dim, tot_dim, sot_dim ); + thirdOrderTensor dMicroGradientYielddChi = tardigradeVectorTools::matrixMultiply( dMicroGradientYielddDrivingStress, *dMicroGradientDrivingStressdChi, 3, tot_dim, tot_dim, sot_dim ); floatVector dMicroGradientYielddChin = tardigradeVectorTools::matrixMultiply( dMicroGradientYielddDrivingStress, *dMicroGradientDrivingStressdChin, 3, tot_dim, tot_dim, ( num_configs - 1 ) * sot_dim ); @@ -5365,7 +5377,7 @@ namespace tardigradeHydra{ floatVector dPrecedingFdSubFs; - const floatVector *dF1dF; + const fourthOrderTensor *dF1dF; const floatVector *dF1dFn; @@ -5394,7 +5406,7 @@ namespace tardigradeHydra{ // Construct the derivatives of the preceding F - floatVector dPrecedingFdF( sot_dim * sot_dim, 0 ); + fourthOrderTensor dPrecedingFdF( sot_dim * sot_dim, 0 ); floatVector dPrecedingFdFn( sot_dim * ( num_configs - 1 ) * sot_dim, 0 ); @@ -5528,7 +5540,7 @@ namespace tardigradeHydra{ floatVector dPrecedingChidSubChis; - const floatVector *dChi1dChi; + const fourthOrderTensor *dChi1dChi; const floatVector *dChi1dChin; @@ -5557,7 +5569,7 @@ namespace tardigradeHydra{ // Construct the derivatives of the preceding F - floatVector dPrecedingChidChi( sot_dim * sot_dim, 0 ); + fourthOrderTensor dPrecedingChidChi( sot_dim * sot_dim, 0 ); floatVector dPrecedingChidChin( sot_dim * ( num_configs - 1 ) * sot_dim, 0 ); @@ -5633,14 +5645,14 @@ namespace tardigradeHydra{ if ( isPrevious ){ - set_previousPrecedingGradientMicroDeformation( floatVector( hydra->get_previousGradientMicroConfigurations( )->begin( ), - hydra->get_previousGradientMicroConfigurations( )->begin( ) + tot_dim ) ); //TODO: Generalize this expression + set_previousPrecedingGradientMicroDeformation( thirdOrderTensor( hydra->get_previousGradientMicroConfigurations( )->begin( ), + hydra->get_previousGradientMicroConfigurations( )->begin( ) + tot_dim ) ); //TODO: Generalize this expression } else{ - set_precedingGradientMicroDeformation( floatVector( hydra->get_gradientMicroConfigurations( )->begin( ), - hydra->get_gradientMicroConfigurations( )->begin( ) + tot_dim ) ); //TODO: Generalize this expression + set_precedingGradientMicroDeformation( thirdOrderTensor( hydra->get_gradientMicroConfigurations( )->begin( ), + hydra->get_gradientMicroConfigurations( )->begin( ) + tot_dim ) ); //TODO: Generalize this expression } @@ -5747,8 +5759,8 @@ namespace tardigradeHydra{ if ( isPrevious ){ - set_previousPrecedingGradientMicroDeformation( floatVector( hydra->get_previousGradientMicroConfigurations( )->begin( ), - hydra->get_previousGradientMicroConfigurations( )->begin( ) + tot_dim ) ); //TODO: Generalize this expression + set_previousPrecedingGradientMicroDeformation( thirdOrderTensor( hydra->get_previousGradientMicroConfigurations( )->begin( ), + hydra->get_previousGradientMicroConfigurations( )->begin( ) + tot_dim ) ); //TODO: Generalize this expression set_previousdPrecedingGradientMicroDeformationdFn( *hydra->get_previousdGradChi1dFn( ) ); @@ -5763,8 +5775,8 @@ namespace tardigradeHydra{ } else{ - set_precedingGradientMicroDeformation( floatVector( hydra->get_gradientMicroConfigurations( )->begin( ), - hydra->get_gradientMicroConfigurations( )->begin( ) + tot_dim ) ); //TODO: Generalize this expression + set_precedingGradientMicroDeformation( thirdOrderTensor( hydra->get_gradientMicroConfigurations( )->begin( ), + hydra->get_gradientMicroConfigurations( )->begin( ) + tot_dim ) ); //TODO: Generalize this expression // set_dPrecedingGradientMicroDeformationdFn( *hydra->get_dGradChi1dFn( ) ); @@ -5847,19 +5859,19 @@ namespace tardigradeHydra{ const unsigned int tot_dim = hydra->getTOTDimension( ); - const floatVector *precedingDeformationGradient; + const secondOrderTensor *precedingDeformationGradient; - const floatVector *precedingMicroDeformation; + const secondOrderTensor *precedingMicroDeformation; - const floatVector *precedingGradientMicroDeformation; + const thirdOrderTensor *precedingGradientMicroDeformation; const floatVector *plasticMultipliers; - const floatVector *dMacroFlowdDrivingStress; + const secondOrderTensor *dMacroFlowdDrivingStress; - const floatVector *dMicroFlowdDrivingStress; + const secondOrderTensor *dMicroFlowdDrivingStress; - const floatVector *dMicroGradientFlowdDrivingStress; + const fourthOrderTensor *dMicroGradientFlowdDrivingStress; if ( isPrevious ){ @@ -5897,30 +5909,30 @@ namespace tardigradeHydra{ } // Form the preceding RCG and its inverse - floatVector precedingRCG; + secondOrderTensor precedingRCG; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeConstitutiveTools::computeRightCauchyGreen( *precedingDeformationGradient, precedingRCG ) ); - floatVector inversePrecedingRCG = precedingRCG; + secondOrderTensor inversePrecedingRCG = precedingRCG; Eigen::Map < Eigen::Matrix< floatType, 3, 3, Eigen::RowMajor> > mat( inversePrecedingRCG.data(), 3, 3 ); mat = mat.inverse( ).eval( ); // Form the precedingPsi and its inverse - floatVector precedingPsi; + secondOrderTensor precedingPsi; TARDIGRADE_ERROR_TOOLS_CATCH( precedingPsi = tardigradeVectorTools::matrixMultiply( *precedingDeformationGradient, *precedingMicroDeformation, dim, dim, dim, dim, true, false ) ); - floatVector inversePrecedingPsi = precedingPsi; + secondOrderTensor inversePrecedingPsi = precedingPsi; new (&mat ) Eigen::Map < Eigen::Matrix< floatType, 3, 3, Eigen::RowMajor> >( inversePrecedingPsi.data(), 3, 3 ); mat = mat.inverse( ).eval( ); // Form the preceding micro RCG and its inverse - floatVector precedingMicroRCG; + secondOrderTensor precedingMicroRCG; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeConstitutiveTools::computeRightCauchyGreen( *precedingMicroDeformation, precedingMicroRCG ) ); // Form Gamma - floatVector precedingGamma( tot_dim, 0 ); + thirdOrderTensor precedingGamma( tot_dim, 0 ); for ( unsigned int i = 0; i < dim; i++ ){ for ( unsigned int I = 0; I < dim; I++ ){ @@ -5940,11 +5952,11 @@ namespace tardigradeHydra{ } - floatVector macroVelocityGradient; + secondOrderTensor macroVelocityGradient; - floatVector microVelocityGradient; + secondOrderTensor microVelocityGradient; - floatVector gradientMicroVelocityGradient; + thirdOrderTensor gradientMicroVelocityGradient; TARDIGRADE_ERROR_TOOLS_CATCH( computePlasticMacroVelocityGradient( ( *plasticMultipliers )[ 0 ], ( *plasticMultipliers )[ 1 ], @@ -6360,57 +6372,57 @@ namespace tardigradeHydra{ const unsigned int num_configs = *hydra->getNumConfigurations( ); - const floatVector *precedingDeformationGradient; + const secondOrderTensor *precedingDeformationGradient; - const floatVector *dPrecedingFdF; + const fourthOrderTensor *dPrecedingFdF; const floatVector *dPrecedingFdFn; - const floatVector *dPrecedingChidChi; + const fourthOrderTensor *dPrecedingChidChi; const floatVector *dPrecedingChidChin; const floatVector *dPrecedingGradChidFn; - const floatVector *dPrecedingGradChidChi; + const fifthOrderTensor *dPrecedingGradChidChi; const floatVector *dPrecedingGradChidChin; - const floatVector *dPrecedingGradChidGradChi; + const sixthOrderTensor *dPrecedingGradChidGradChi; const floatVector *dPrecedingGradChidGradChin; - const floatVector *precedingMicroDeformation; + const secondOrderTensor *precedingMicroDeformation; - const floatVector *precedingGradientMicroDeformation; + const thirdOrderTensor *precedingGradientMicroDeformation; const floatVector *plasticMultipliers; - const floatVector *dMacroFlowdDrivingStress; + const secondOrderTensor *dMacroFlowdDrivingStress; - const floatVector *dMicroFlowdDrivingStress; + const secondOrderTensor *dMicroFlowdDrivingStress; - const floatVector *dMicroGradientFlowdDrivingStress; + const fourthOrderTensor *dMicroGradientFlowdDrivingStress; - const floatVector *d2MacroFlowdDrivingStressdStress; + const seventhOrderTensor *d2MacroFlowdDrivingStressdStress; - const floatVector *d2MacroFlowdDrivingStressdF; + const fourthOrderTensor *d2MacroFlowdDrivingStressdF; const floatVector *d2MacroFlowdDrivingStressdFn; - const floatVector *d2MicroFlowdDrivingStressdF; + const fourthOrderTensor *d2MicroFlowdDrivingStressdF; const floatVector *d2MicroFlowdDrivingStressdFn; - const floatVector *d2MicroFlowdDrivingStressdStress; + const fourthOrderTensor *d2MicroFlowdDrivingStressdStress; - const floatVector *d2MicroGradientFlowdDrivingStressdStress; + const seventhOrderTensor *d2MicroGradientFlowdDrivingStressdStress; - const floatVector *d2MicroGradientFlowdDrivingStressdF; + const sixthOrderTensor *d2MicroGradientFlowdDrivingStressdF; const floatVector *d2MicroGradientFlowdDrivingStressdFn; - const floatVector *d2MicroGradientFlowdDrivingStressdChi; + const sixthOrderTensor *d2MicroGradientFlowdDrivingStressdChi; const floatVector *d2MicroGradientFlowdDrivingStressdChin; @@ -6530,28 +6542,28 @@ namespace tardigradeHydra{ } // Form the preceding RCG and its inverse - floatVector precedingRCG; + secondOrderTensor precedingRCG; - floatVector dRCGdPrecedingF; + secondOrderTensor dRCGdPrecedingF; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeConstitutiveTools::computeRightCauchyGreen( *precedingDeformationGradient, precedingRCG, dRCGdPrecedingF ) ); - floatVector inversePrecedingRCG = precedingRCG; + secondOrderTensor inversePrecedingRCG = precedingRCG; Eigen::Map < Eigen::Matrix< floatType, 3, 3, Eigen::RowMajor> > mat( inversePrecedingRCG.data(), 3, 3 ); mat = mat.inverse( ).eval( ); - floatVector dRCGdF = tardigradeVectorTools::matrixMultiply( dRCGdPrecedingF, *dPrecedingFdF, sot_dim, sot_dim, sot_dim, sot_dim ); + fourthOrderTensor dRCGdF = tardigradeVectorTools::matrixMultiply( dRCGdPrecedingF, *dPrecedingFdF, sot_dim, sot_dim, sot_dim, sot_dim ); floatVector dRCGdFn = tardigradeVectorTools::matrixMultiply( dRCGdPrecedingF, *dPrecedingFdFn, sot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ); // Form the precedingPsi and its inverse - floatVector precedingPsi; + secondOrderTensor precedingPsi; TARDIGRADE_ERROR_TOOLS_CATCH( precedingPsi = tardigradeVectorTools::matrixMultiply( *precedingDeformationGradient, *precedingMicroDeformation, dim, dim, dim, dim, true, false ) ); - floatVector dPsidPrecedingF( sot_dim * sot_dim, 0 ); + fourthOrderTensor dPsidPrecedingF( sot_dim * sot_dim, 0 ); - floatVector dPsidPrecedingChi( sot_dim * sot_dim, 0 ); + fourthOrderTensor dPsidPrecedingChi( sot_dim * sot_dim, 0 ); for ( unsigned int I = 0; I < dim; I++ ){ //TODO: Try to improve the cache access here @@ -6569,35 +6581,35 @@ namespace tardigradeHydra{ } - floatVector dPsidF = tardigradeVectorTools::matrixMultiply( dPsidPrecedingF, *dPrecedingFdF , sot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ); + fourthOrderTensor dPsidF = tardigradeVectorTools::matrixMultiply( dPsidPrecedingF, *dPrecedingFdF , sot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ); floatVector dPsidFn = tardigradeVectorTools::matrixMultiply( dPsidPrecedingF, *dPrecedingFdFn , sot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ); - floatVector dPsidChi = tardigradeVectorTools::matrixMultiply( dPsidPrecedingChi, *dPrecedingChidChi , sot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ); + fourthOrderTensor dPsidChi = tardigradeVectorTools::matrixMultiply( dPsidPrecedingChi, *dPrecedingChidChi , sot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ); floatVector dPsidChin = tardigradeVectorTools::matrixMultiply( dPsidPrecedingChi, *dPrecedingChidChin, sot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ); - floatVector inversePrecedingPsi = precedingPsi; + secondOrderTensor inversePrecedingPsi = precedingPsi; new (&mat) Eigen::Map < Eigen::Matrix< floatType, 3, 3, Eigen::RowMajor> >( inversePrecedingPsi.data(), 3, 3 ); mat = mat.inverse( ).eval( ); // Form the preceding micro RCG and its inverse - floatVector precedingMicroRCG; + secondOrderTensor precedingMicroRCG; - floatVector dMicroRCGdPrecedingChi; + fourthOrderTensor dMicroRCGdPrecedingChi; TARDIGRADE_ERROR_TOOLS_CATCH_NODE_POINTER( tardigradeConstitutiveTools::computeRightCauchyGreen( *precedingMicroDeformation, precedingMicroRCG, dMicroRCGdPrecedingChi ) ); - floatVector dMicroRCGdChi = tardigradeVectorTools::matrixMultiply( dMicroRCGdPrecedingChi, *dPrecedingChidChi, sot_dim, sot_dim, sot_dim, sot_dim ); + fourthOrderTensor dMicroRCGdChi = tardigradeVectorTools::matrixMultiply( dMicroRCGdPrecedingChi, *dPrecedingChidChi, sot_dim, sot_dim, sot_dim, sot_dim ); floatVector dMicroRCGdChin = tardigradeVectorTools::matrixMultiply( dMicroRCGdPrecedingChi, *dPrecedingChidChin, sot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ); // Form Gamma - floatVector precedingGamma( tot_dim, 0 ); + thirdOrderTensor precedingGamma( tot_dim, 0 ); - floatVector dPrecedingGammadPrecedingF( tot_dim * sot_dim, 0 ); + fifthOrderTensor dPrecedingGammadPrecedingF( tot_dim * sot_dim, 0 ); - floatVector dPrecedingGammadPrecedingGradChi( tot_dim * tot_dim, 0 ); + sixthOrderTensor dPrecedingGammadPrecedingGradChi( tot_dim * tot_dim, 0 ); for ( unsigned int i = 0; i < dim; i++ ){ //TODO: Try to improve the cache access here @@ -6624,52 +6636,52 @@ namespace tardigradeHydra{ } - floatVector dPrecedingGammadF = tardigradeVectorTools::matrixMultiply( dPrecedingGammadPrecedingF, *dPrecedingFdF, tot_dim, sot_dim, sot_dim, sot_dim ); + fifthOrderTensor dPrecedingGammadF = tardigradeVectorTools::matrixMultiply( dPrecedingGammadPrecedingF, *dPrecedingFdF, tot_dim, sot_dim, sot_dim, sot_dim ); floatVector dPrecedingGammadFn = tardigradeVectorTools::matrixMultiply( dPrecedingGammadPrecedingF, *dPrecedingFdFn, tot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ) + tardigradeVectorTools::matrixMultiply( dPrecedingGammadPrecedingGradChi, *dPrecedingGradChidFn, tot_dim, tot_dim, tot_dim, ( num_configs - 1 ) * sot_dim ); - floatVector dPrecedingGammadChi = tardigradeVectorTools::matrixMultiply( dPrecedingGammadPrecedingGradChi, *dPrecedingGradChidChi, tot_dim, tot_dim, tot_dim, sot_dim ); + fifthOrderTensor dPrecedingGammadChi = tardigradeVectorTools::matrixMultiply( dPrecedingGammadPrecedingGradChi, *dPrecedingGradChidChi, tot_dim, tot_dim, tot_dim, sot_dim ); floatVector dPrecedingGammadChin = tardigradeVectorTools::matrixMultiply( dPrecedingGammadPrecedingGradChi, *dPrecedingGradChidChin, tot_dim, tot_dim, tot_dim, ( num_configs - 1 ) * sot_dim ); - floatVector dPrecedingGammadGradChi = tardigradeVectorTools::matrixMultiply( dPrecedingGammadPrecedingGradChi, *dPrecedingGradChidGradChi, tot_dim, tot_dim, tot_dim, tot_dim ); + sixthOrderTensor dPrecedingGammadGradChi = tardigradeVectorTools::matrixMultiply( dPrecedingGammadPrecedingGradChi, *dPrecedingGradChidGradChi, tot_dim, tot_dim, tot_dim, tot_dim ); floatVector dPrecedingGammadGradChin = tardigradeVectorTools::matrixMultiply( dPrecedingGammadPrecedingGradChi, *dPrecedingGradChidGradChin, tot_dim, tot_dim, tot_dim, ( num_configs - 1 ) * tot_dim ); - floatVector macroVelocityGradient; + secondOrderTensor macroVelocityGradient; - floatVector microVelocityGradient; + secondOrderTensor microVelocityGradient; - floatVector gradientMicroVelocityGradient; + thirdOrderTensor gradientMicroVelocityGradient; - floatVector dPlasticMacroLdMacroGamma; + secondOrderTensor dPlasticMacroLdMacroGamma; - floatVector dPlasticMacroLdMicroGamma; + secondOrderTensor dPlasticMacroLdMicroGamma; - floatVector dPlasticMacroLdPrecedingRCG; + fourthOrderTensor dPlasticMacroLdPrecedingRCG; - floatVector dPlasticMacroLdMacroFlowDirection; + fourthOrderTensor dPlasticMacroLdMacroFlowDirection; - floatVector dPlasticMacroLdMicroFlowDirection; + fourthOrderTensor dPlasticMacroLdMicroFlowDirection; - floatVector dPlasticMicroLdMicroGamma; + secondOrderTensor dPlasticMicroLdMicroGamma; - floatVector dPlasticMicroLdPrecedingMicroRCG; + fourthOrderTensor dPlasticMicroLdPrecedingMicroRCG; - floatVector dPlasticMicroLdPrecedingPsi; + fourthOrderTensor dPlasticMicroLdPrecedingPsi; - floatVector dPlasticMicroLdMicroFlowDirection; + fourthOrderTensor dPlasticMicroLdMicroFlowDirection; - floatVector dPlasticGradientMicroLdMicroGradientGamma; + fourthOrderTensor dPlasticGradientMicroLdMicroGradientGamma; - floatVector dPlasticGradientMicroLdPlasticMicroL; + fifthOrderTensor dPlasticGradientMicroLdPlasticMicroL; - floatVector dPlasticGradientMicroLdPrecedingPsi; + fifthOrderTensor dPlasticGradientMicroLdPrecedingPsi; - floatVector dPlasticGradientMicroLdPrecedingGamma; + sixthOrderTensor dPlasticGradientMicroLdPrecedingGamma; - floatVector dPlasticGradientMicroLdMicroGradientFlowDirection; + sixthOrderTensor dPlasticGradientMicroLdMicroGradientFlowDirection; TARDIGRADE_ERROR_TOOLS_CATCH( computePlasticMacroVelocityGradient( ( *plasticMultipliers )[ 0 ], ( *plasticMultipliers )[ 1 ], @@ -6697,23 +6709,23 @@ namespace tardigradeHydra{ ) // Assemble the Jacobians - floatVector dPlasticMacroLdMacroStress = tardigradeVectorTools::matrixMultiply( dPlasticMacroLdMacroFlowDirection, *d2MacroFlowdDrivingStressdStress, sot_dim, sot_dim, sot_dim, sot_dim ); + secondOrderTensor dPlasticMacroLdMacroStress = tardigradeVectorTools::matrixMultiply( dPlasticMacroLdMacroFlowDirection, *d2MacroFlowdDrivingStressdStress, sot_dim, sot_dim, sot_dim, sot_dim ); - floatVector dPlasticMacroLdMicroStress = tardigradeVectorTools::matrixMultiply( dPlasticMacroLdMicroFlowDirection, *d2MicroFlowdDrivingStressdStress, sot_dim, sot_dim, sot_dim, sot_dim ); + secondOrderTensor dPlasticMacroLdMicroStress = tardigradeVectorTools::matrixMultiply( dPlasticMacroLdMicroFlowDirection, *d2MicroFlowdDrivingStressdStress, sot_dim, sot_dim, sot_dim, sot_dim ); - floatVector dPlasticMicroLdMicroStress = tardigradeVectorTools::matrixMultiply( dPlasticMicroLdMicroFlowDirection, *d2MicroFlowdDrivingStressdStress, sot_dim, sot_dim, sot_dim, sot_dim ); + secondOrderTensor dPlasticMicroLdMicroStress = tardigradeVectorTools::matrixMultiply( dPlasticMicroLdMicroFlowDirection, *d2MicroFlowdDrivingStressdStress, sot_dim, sot_dim, sot_dim, sot_dim ); - floatVector dPlasticGradientMicroLdMicroStress = tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPlasticMicroL, dPlasticMicroLdMicroStress, tot_dim, sot_dim, sot_dim, sot_dim ); + fifthOrderTensor dPlasticGradientMicroLdMicroStress = tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPlasticMicroL, dPlasticMicroLdMicroStress, tot_dim, sot_dim, sot_dim, sot_dim ); - floatVector dPlasticGradientMicroLdHigherOrderStress = tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdMicroGradientFlowDirection, *d2MicroGradientFlowdDrivingStressdStress, - tot_dim, 3 * tot_dim, 3 * tot_dim, tot_dim ); + sixthOrderTensor dPlasticGradientMicroLdHigherOrderStress = tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdMicroGradientFlowDirection, *d2MicroGradientFlowdDrivingStressdStress, + tot_dim, 3 * tot_dim, 3 * tot_dim, tot_dim ); - floatVector dPlasticMacroLdF = tardigradeVectorTools::matrixMultiply( dPlasticMacroLdMacroFlowDirection, *d2MacroFlowdDrivingStressdF, - sot_dim, sot_dim, sot_dim, sot_dim ) - + tardigradeVectorTools::matrixMultiply( dPlasticMacroLdMicroFlowDirection, *d2MicroFlowdDrivingStressdF, - sot_dim, sot_dim, sot_dim, sot_dim ) - + tardigradeVectorTools::matrixMultiply( dPlasticMacroLdPrecedingRCG, dRCGdF, - sot_dim, sot_dim, sot_dim, sot_dim ); + secondOrderTensor dPlasticMacroLdF = tardigradeVectorTools::matrixMultiply( dPlasticMacroLdMacroFlowDirection, *d2MacroFlowdDrivingStressdF, + sot_dim, sot_dim, sot_dim, sot_dim ) + + tardigradeVectorTools::matrixMultiply( dPlasticMacroLdMicroFlowDirection, *d2MicroFlowdDrivingStressdF, + sot_dim, sot_dim, sot_dim, sot_dim ) + + tardigradeVectorTools::matrixMultiply( dPlasticMacroLdPrecedingRCG, dRCGdF, + sot_dim, sot_dim, sot_dim, sot_dim ); floatVector dPlasticMacroLdFn = tardigradeVectorTools::matrixMultiply( dPlasticMacroLdMacroFlowDirection, *d2MacroFlowdDrivingStressdFn, sot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ) @@ -6722,10 +6734,10 @@ namespace tardigradeHydra{ + tardigradeVectorTools::matrixMultiply( dPlasticMacroLdPrecedingRCG, dRCGdFn, sot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ); - floatVector dPlasticMicroLdF = tardigradeVectorTools::matrixMultiply( dPlasticMicroLdMicroFlowDirection, *d2MicroFlowdDrivingStressdF, - sot_dim, sot_dim, sot_dim, sot_dim ) - + tardigradeVectorTools::matrixMultiply( dPlasticMicroLdPrecedingPsi, dPsidF, - sot_dim, sot_dim, sot_dim, sot_dim ); + secondOrderTensor dPlasticMicroLdF = tardigradeVectorTools::matrixMultiply( dPlasticMicroLdMicroFlowDirection, *d2MicroFlowdDrivingStressdF, + sot_dim, sot_dim, sot_dim, sot_dim ) + + tardigradeVectorTools::matrixMultiply( dPlasticMicroLdPrecedingPsi, dPsidF, + sot_dim, sot_dim, sot_dim, sot_dim ); floatVector dPlasticMicroLdFn = tardigradeVectorTools::matrixMultiply( dPlasticMicroLdMicroFlowDirection, *d2MicroFlowdDrivingStressdFn, sot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ) @@ -6741,33 +6753,33 @@ namespace tardigradeHydra{ + tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdMicroGradientFlowDirection, *d2MicroGradientFlowdDrivingStressdFn, tot_dim, 3 * tot_dim, 3 * tot_dim, ( num_configs - 1 ) * sot_dim ); - floatVector dPlasticGradientMicroLdF = tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPlasticMicroL, dPlasticMicroLdF, - tot_dim, sot_dim, sot_dim, sot_dim ) - + tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPrecedingPsi, dPsidF, - tot_dim, sot_dim, sot_dim, sot_dim ) - + tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPrecedingGamma, dPrecedingGammadF, - tot_dim, tot_dim, tot_dim, sot_dim ) - + tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdMicroGradientFlowDirection, *d2MicroGradientFlowdDrivingStressdF, - tot_dim, 3 * tot_dim, 3 * tot_dim, sot_dim ); + fifthOrderTensor dPlasticGradientMicroLdF = tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPlasticMicroL, dPlasticMicroLdF, + tot_dim, sot_dim, sot_dim, sot_dim ) + + tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPrecedingPsi, dPsidF, + tot_dim, sot_dim, sot_dim, sot_dim ) + + tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPrecedingGamma, dPrecedingGammadF, + tot_dim, tot_dim, tot_dim, sot_dim ) + + tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdMicroGradientFlowDirection, *d2MicroGradientFlowdDrivingStressdF, + tot_dim, 3 * tot_dim, 3 * tot_dim, sot_dim ); - floatVector dPlasticMicroLdChi = tardigradeVectorTools::matrixMultiply( dPlasticMicroLdPrecedingPsi, dPsidChi, - sot_dim, sot_dim, sot_dim, sot_dim ) - + tardigradeVectorTools::matrixMultiply( dPlasticMicroLdPrecedingMicroRCG, dMicroRCGdChi, - sot_dim, sot_dim, sot_dim, sot_dim ); + secondOrderTensor dPlasticMicroLdChi = tardigradeVectorTools::matrixMultiply( dPlasticMicroLdPrecedingPsi, dPsidChi, + sot_dim, sot_dim, sot_dim, sot_dim ) + + tardigradeVectorTools::matrixMultiply( dPlasticMicroLdPrecedingMicroRCG, dMicroRCGdChi, + sot_dim, sot_dim, sot_dim, sot_dim ); floatVector dPlasticMicroLdChin = tardigradeVectorTools::matrixMultiply( dPlasticMicroLdPrecedingPsi, dPsidChin, sot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ) + tardigradeVectorTools::matrixMultiply( dPlasticMicroLdPrecedingMicroRCG, dMicroRCGdChin, sot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ); - floatVector dPlasticGradientMicroLdChi = tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPlasticMicroL, dPlasticMicroLdChi, - tot_dim, sot_dim, sot_dim, sot_dim ) - + tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPrecedingPsi, dPsidChi, - tot_dim, sot_dim, sot_dim, sot_dim ) - + tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPrecedingGamma, dPrecedingGammadChi, - tot_dim, tot_dim, tot_dim, sot_dim ) - + tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdMicroGradientFlowDirection, *d2MicroGradientFlowdDrivingStressdChi, - tot_dim, 3 * tot_dim, 3 * tot_dim, sot_dim ); + fifthOrderTensor dPlasticGradientMicroLdChi = tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPlasticMicroL, dPlasticMicroLdChi, + tot_dim, sot_dim, sot_dim, sot_dim ) + + tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPrecedingPsi, dPsidChi, + tot_dim, sot_dim, sot_dim, sot_dim ) + + tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPrecedingGamma, dPrecedingGammadChi, + tot_dim, tot_dim, tot_dim, sot_dim ) + + tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdMicroGradientFlowDirection, *d2MicroGradientFlowdDrivingStressdChi, + tot_dim, 3 * tot_dim, 3 * tot_dim, sot_dim ); floatVector dPlasticGradientMicroLdChin = tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPlasticMicroL, dPlasticMicroLdChin, tot_dim, sot_dim, sot_dim, ( num_configs - 1 ) * sot_dim ) @@ -6778,8 +6790,8 @@ namespace tardigradeHydra{ + tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdMicroGradientFlowDirection, *d2MicroGradientFlowdDrivingStressdChin, tot_dim, 3 * tot_dim, 3 * tot_dim, ( num_configs - 1 ) * sot_dim ); - floatVector dPlasticGradientMicroLdGradChi = tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPrecedingGamma, dPrecedingGammadGradChi, - tot_dim, tot_dim, tot_dim, tot_dim ); + sixthOrderTensor dPlasticGradientMicroLdGradChi = tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPrecedingGamma, dPrecedingGammadGradChi, + tot_dim, tot_dim, tot_dim, tot_dim ); floatVector dPlasticGradientMicroLdGradChin = tardigradeVectorTools::matrixMultiply( dPlasticGradientMicroLdPrecedingGamma, dPrecedingGammadGradChin, tot_dim, tot_dim, tot_dim, ( num_configs - 1 ) * tot_dim ); @@ -6952,20 +6964,20 @@ namespace tardigradeHydra{ const unsigned int plasticConfigurationIndex = *getPlasticConfigurationIndex( ); - floatVector updatedPlasticDeformationGradient; + secondOrderTensor updatedPlasticDeformationGradient; - floatVector updatedPlasticMicroDeformation; + secondOrderTensor updatedPlasticMicroDeformation; - floatVector updatedPlasticGradientMicroDeformation; + thirdOrderTensor updatedPlasticGradientMicroDeformation; - const floatVector previousPlasticDeformationGradient = floatVector( hydra->get_previousConfigurations( )->begin( ) + sot_dim * plasticConfigurationIndex, - hydra->get_previousConfigurations( )->begin( ) + sot_dim * ( plasticConfigurationIndex + 1 ) ); + const secondOrderTensor previousPlasticDeformationGradient = secondOrderTensor( hydra->get_previousConfigurations( )->begin( ) + sot_dim * plasticConfigurationIndex, + hydra->get_previousConfigurations( )->begin( ) + sot_dim * ( plasticConfigurationIndex + 1 ) ); - const floatVector previousPlasticMicroDeformation = floatVector( hydra->get_previousMicroConfigurations( )->begin( ) + sot_dim * plasticConfigurationIndex, - hydra->get_previousMicroConfigurations( )->begin( ) + sot_dim * ( plasticConfigurationIndex + 1 ) ); + const secondOrderTensor previousPlasticMicroDeformation = secondOrderTensor( hydra->get_previousMicroConfigurations( )->begin( ) + sot_dim * plasticConfigurationIndex, + hydra->get_previousMicroConfigurations( )->begin( ) + sot_dim * ( plasticConfigurationIndex + 1 ) ); - const floatVector previousPlasticGradientMicroDeformation = floatVector( hydra->get_previousGradientMicroConfigurations( )->begin( ) + tot_dim * plasticConfigurationIndex, - hydra->get_previousGradientMicroConfigurations( )->begin( ) + tot_dim * ( plasticConfigurationIndex + 1 ) ); + const thirdOrderTensor previousPlasticGradientMicroDeformation = thirdOrderTensor( hydra->get_previousGradientMicroConfigurations( )->begin( ) + tot_dim * plasticConfigurationIndex, + hydra->get_previousGradientMicroConfigurations( )->begin( ) + tot_dim * ( plasticConfigurationIndex + 1 ) ); TARDIGRADE_ERROR_TOOLS_CATCH( evolvePlasticDeformation( *hydra->getDeltaTime( ), @@ -7389,46 +7401,42 @@ namespace tardigradeHydra{ const unsigned int plasticConfigurationIndex = *getPlasticConfigurationIndex( ); - floatVector updatedPlasticDeformationGradient; - - floatVector updatedPlasticMicroDeformation; - - floatVector updatedPlasticGradientMicroDeformation; + secondOrderTensor updatedPlasticDeformationGradient; - const floatVector previousPlasticDeformationGradient = floatVector( hydra->get_previousConfigurations( )->begin( ) + sot_dim * plasticConfigurationIndex, - hydra->get_previousConfigurations( )->begin( ) + sot_dim * ( plasticConfigurationIndex + 1 ) ); + secondOrderTensor updatedPlasticMicroDeformation; - const floatVector previousPlasticMicroDeformation = floatVector( hydra->get_previousMicroConfigurations( )->begin( ) + sot_dim * plasticConfigurationIndex, - hydra->get_previousMicroConfigurations( )->begin( ) + sot_dim * ( plasticConfigurationIndex + 1 ) ); + thirdOrderTensor updatedPlasticGradientMicroDeformation; - const floatVector previousPlasticGradientMicroDeformation = floatVector( hydra->get_previousGradientMicroConfigurations( )->begin( ) + tot_dim * plasticConfigurationIndex, - hydra->get_previousGradientMicroConfigurations( )->begin( ) + tot_dim * ( plasticConfigurationIndex + 1 ) ); + const secondOrderTensor previousPlasticDeformationGradient = secondOrderTensor( hydra->get_previousConfigurations( )->begin( ) + sot_dim * plasticConfigurationIndex, + hydra->get_previousConfigurations( )->begin( ) + sot_dim * ( plasticConfigurationIndex + 1 ) ); - floatVector dPlasticFdPlasticMacroL; + const secondOrderTensor previousPlasticMicroDeformation = secondOrderTensor( hydra->get_previousMicroConfigurations( )->begin( ) + sot_dim * plasticConfigurationIndex, + hydra->get_previousMicroConfigurations( )->begin( ) + sot_dim * ( plasticConfigurationIndex + 1 ) ); - floatVector dPlasticMicroDeformationdPlasticMicroL; + const thirdOrderTensor previousPlasticGradientMicroDeformation = thirdOrderTensor( hydra->get_previousGradientMicroConfigurations( )->begin( ) + tot_dim * plasticConfigurationIndex, + hydra->get_previousGradientMicroConfigurations( )->begin( ) + tot_dim * ( plasticConfigurationIndex + 1 ) ); - floatVector dPlasticGradientMicroDeformationdPlasticMacroL; + fourthOrderTensor dPlasticFdPlasticMacroL; - floatVector dPlasticGradientMicroDeformationdPlasticMicroL; + fourthOrderTensor dPlasticMicroDeformationdPlasticMicroL; - floatVector dPlasticGradientMicroDeformationdPlasticGradientMicroL; + fifthOrderTensor dPlasticGradientMicroDeformationdPlasticMacroL; - floatVector dPlasticFdPreviousPlasticF; + fifthOrderTensor dPlasticGradientMicroDeformationdPlasticMicroL; - floatVector dPlasticFdPreviousPlasticMacroL; + sixthOrderTensor dPlasticGradientMicroDeformationdPlasticGradientMicroL; if ( addPreviousGradients ){ - floatVector dPlasticFdPreviousPlasticF; - floatVector dPlasticFdPreviousPlasticMacroL; - floatVector dPlasticMicroDeformationdPreviousPlasticMicroDeformation; - floatVector dPlasticMicroDeformationdPreviousPlasticMicroL; - floatVector dPlasticGradientMicroDeformationdPreviousPlasticMicroDeformation; - floatVector dPlasticGradientMicroDeformationdPreviousPlasticMicroGradient; - floatVector dPlasticGradientMicroDeformationdPreviousPlasticMacroL; - floatVector dPlasticGradientMicroDeformationdPreviousPlasticMicroL; - floatVector dPlasticGradientMicroDeformationdPreviousPlasticGradientMicroL; + fourthOrderTensor dPlasticFdPreviousPlasticF; + fourthOrderTensor dPlasticFdPreviousPlasticMacroL; + fourthOrderTensor dPlasticMicroDeformationdPreviousPlasticMicroDeformation; + fourthOrderTensor dPlasticMicroDeformationdPreviousPlasticMicroL; + fifthOrderTensor dPlasticGradientMicroDeformationdPreviousPlasticMicroDeformation; + sixthOrderTensor dPlasticGradientMicroDeformationdPreviousPlasticMicroGradient; + fifthOrderTensor dPlasticGradientMicroDeformationdPreviousPlasticMacroL; + fifthOrderTensor dPlasticGradientMicroDeformationdPreviousPlasticMicroL; + sixthOrderTensor dPlasticGradientMicroDeformationdPreviousPlasticGradientMicroL; TARDIGRADE_ERROR_TOOLS_CATCH( evolvePlasticDeformation( *hydra->getDeltaTime( ), @@ -7813,7 +7821,7 @@ namespace tardigradeHydra{ const floatType *microYield = get_microYield( ); - const floatVector *microGradientYield = get_microGradientYield( ); + const dimVector *microGradientYield = get_microGradientYield( ); floatVector residual( get_plasticStateVariables( )->size( ), 0 ); @@ -7930,13 +7938,13 @@ namespace tardigradeHydra{ const unsigned int numISVs = get_plasticStateVariables( )->size( ); - const floatVector *dMacroYielddStress = get_dMacroYielddStress( ); + const secondOrderTensor *dMacroYielddStress = get_dMacroYielddStress( ); const floatVector *dMacroYielddFn = get_dMacroYielddFn( ); const floatVector *dMacroYielddStateVariables = get_dMacroYielddStateVariables( ); - const floatVector *dMicroYielddStress = get_dMicroYielddStress( ); + const secondOrderTensor *dMicroYielddStress = get_dMicroYielddStress( ); const floatVector *dMicroYielddFn = get_dMicroYielddFn( ); @@ -7956,7 +7964,7 @@ namespace tardigradeHydra{ const floatType *microYield = get_microYield( ); - const floatVector *microGradientYield = get_microGradientYield( ); + const dimVector *microGradientYield = get_microGradientYield( ); floatVector jacobian( numISVs * numUnknowns, 0 ); @@ -8157,19 +8165,19 @@ namespace tardigradeHydra{ const unsigned int numPlasticMultipliers = *getNumPlasticMultipliers( ); - const floatVector *dMacroYielddF = get_dMacroYielddF( ); + const secondOrderTensor *dMacroYielddF = get_dMacroYielddF( ); - const floatVector *dMicroYielddF = get_dMicroYielddF( ); + const secondOrderTensor *dMicroYielddF = get_dMicroYielddF( ); - const floatVector *dMicroGradientYielddF = get_dMicroGradientYielddF( ); + const thirdOrderTensor *dMicroGradientYielddF = get_dMicroGradientYielddF( ); - const floatVector *dMicroGradientYielddChi = get_dMicroGradientYielddChi( ); + const thirdOrderTensor *dMicroGradientYielddChi = get_dMicroGradientYielddChi( ); const floatType *macroYield = get_macroYield( ); const floatType *microYield = get_microYield( ); - const floatVector *microGradientYield = get_microGradientYield( ); + const dimVector *microGradientYield = get_microGradientYield( ); floatVector dRdD( get_plasticStateVariables( )->size( ) * numConfigurationUnknowns, 0 ); @@ -8324,25 +8332,25 @@ namespace tardigradeHydra{ const unsigned int tot_dim = hydra->getTOTDimension( ); - const floatVector *updatedPlasticDeformationGradient; + const secondOrderTensor *updatedPlasticDeformationGradient; - const floatVector *updatedPlasticMicroDeformation; + const secondOrderTensor *updatedPlasticMicroDeformation; - const floatVector *updatedPlasticGradientMicroDeformation; + const thirdOrderTensor *updatedPlasticGradientMicroDeformation; const floatVector *stateVariableResiduals; // Get the trial plastic deformation measures unsigned int plasticConfigurationIndex = *getPlasticConfigurationIndex( ); - const floatVector plasticDeformationGradient = floatVector( hydra->get_configurations( )->begin( ) + sot_dim * plasticConfigurationIndex, - hydra->get_configurations( )->begin( ) + sot_dim * ( plasticConfigurationIndex + 1 ) ); + const secondOrderTensor plasticDeformationGradient = secondOrderTensor( hydra->get_configurations( )->begin( ) + sot_dim * plasticConfigurationIndex, + hydra->get_configurations( )->begin( ) + sot_dim * ( plasticConfigurationIndex + 1 ) ); - const floatVector plasticMicroDeformation = floatVector( hydra->get_microConfigurations( )->begin( ) + sot_dim * plasticConfigurationIndex, - hydra->get_microConfigurations( )->begin( ) + sot_dim * ( plasticConfigurationIndex + 1 ) ); + const secondOrderTensor plasticMicroDeformation = secondOrderTensor( hydra->get_microConfigurations( )->begin( ) + sot_dim * plasticConfigurationIndex, + hydra->get_microConfigurations( )->begin( ) + sot_dim * ( plasticConfigurationIndex + 1 ) ); - const floatVector plasticGradientMicroDeformation = floatVector( hydra->get_gradientMicroConfigurations( )->begin( ) + tot_dim * plasticConfigurationIndex, - hydra->get_gradientMicroConfigurations( )->begin( ) + tot_dim * ( plasticConfigurationIndex + 1 ) ); + const thirdOrderTensor plasticGradientMicroDeformation = thirdOrderTensor( hydra->get_gradientMicroConfigurations( )->begin( ) + tot_dim * plasticConfigurationIndex, + hydra->get_gradientMicroConfigurations( )->begin( ) + tot_dim * ( plasticConfigurationIndex + 1 ) ); // Get the updated plastic deformation measures TARDIGRADE_ERROR_TOOLS_CATCH( @@ -8391,15 +8399,15 @@ namespace tardigradeHydra{ const unsigned int numISVs = stateVariableIndices.size( ); - const floatVector *dUpdatedPlasticDeformationGradientdMacroStress; + const fourthOrderTensor *dUpdatedPlasticDeformationGradientdMacroStress; - const floatVector *dUpdatedPlasticDeformationGradientdMicroStress; + const fourthOrderTensor *dUpdatedPlasticDeformationGradientdMicroStress; const floatVector *dUpdatedPlasticDeformationGradientdFn; const floatVector *dUpdatedPlasticDeformationGradientdStateVariables; - const floatVector *dUpdatedPlasticMicroDeformationdMicroStress; + const fourthOrderTensor *dUpdatedPlasticMicroDeformationdMicroStress; const floatVector *dUpdatedPlasticMicroDeformationdFn; @@ -8407,11 +8415,11 @@ namespace tardigradeHydra{ const floatVector *dUpdatedPlasticMicroDeformationdStateVariables; - const floatVector *dUpdatedPlasticGradientMicroDeformationdMacroStress; + const fifthOrderTensor *dUpdatedPlasticGradientMicroDeformationdMacroStress; - const floatVector *dUpdatedPlasticGradientMicroDeformationdMicroStress; + const fifthOrderTensor *dUpdatedPlasticGradientMicroDeformationdMicroStress; - const floatVector *dUpdatedPlasticGradientMicroDeformationdHigherOrderStress; + const sixthOrderTensor *dUpdatedPlasticGradientMicroDeformationdHigherOrderStress; const floatVector *dUpdatedPlasticGradientMicroDeformationdFn; @@ -8613,17 +8621,17 @@ namespace tardigradeHydra{ const std::vector< unsigned int > stateVariableIndices = *getStateVariableIndices( ); - const floatVector *dUpdatedPlasticDeformationGradientdF; + const fourthOrderTensor *dUpdatedPlasticDeformationGradientdF; - const floatVector *dUpdatedPlasticMicroDeformationdF; + const fourthOrderTensor *dUpdatedPlasticMicroDeformationdF; - const floatVector *dUpdatedPlasticMicroDeformationdChi; + const fourthOrderTensor *dUpdatedPlasticMicroDeformationdChi; - const floatVector *dUpdatedPlasticGradientMicroDeformationdF; + const fifthOrderTensor *dUpdatedPlasticGradientMicroDeformationdF; - const floatVector *dUpdatedPlasticGradientMicroDeformationdChi; + const fifthOrderTensor *dUpdatedPlasticGradientMicroDeformationdChi; - const floatVector *dUpdatedPlasticGradientMicroDeformationdGradChi; + const sixthOrderTensor *dUpdatedPlasticGradientMicroDeformationdGradChi; const floatVector *dStateVariableResidualsdD; @@ -8755,8 +8763,8 @@ namespace tardigradeHydra{ dx.begin( ) + plasticDeformationStop ); // Check the macro plastic deformation - floatType norm = tardigradeVectorTools::l2norm( floatVector( deltaPlasticDeformations.begin( ), - deltaPlasticDeformations.begin( ) + numSecondOrderTensor ) ); + floatType norm = tardigradeVectorTools::l2norm( secondOrderTensor( deltaPlasticDeformations.begin( ), + deltaPlasticDeformations.begin( ) + numSecondOrderTensor ) ); if ( norm > *getMaxMacroPlasticDeltaNorm( ) ){ @@ -8769,8 +8777,8 @@ namespace tardigradeHydra{ } // Check the micro plastic deformation - norm = tardigradeVectorTools::l2norm( floatVector( deltaPlasticDeformations.begin( ) + numSecondOrderTensor, - deltaPlasticDeformations.begin( ) + 2 * numSecondOrderTensor ) ); + norm = tardigradeVectorTools::l2norm( secondOrderTensor( deltaPlasticDeformations.begin( ) + numSecondOrderTensor, + deltaPlasticDeformations.begin( ) + 2 * numSecondOrderTensor ) ); if ( norm > *getMaxMicroPlasticDeltaNorm( ) ){ @@ -8783,8 +8791,8 @@ namespace tardigradeHydra{ } // Check the micro gradient plastic deformation - norm = tardigradeVectorTools::l2norm( floatVector( deltaPlasticDeformations.begin( ) + 2 * numSecondOrderTensor, - deltaPlasticDeformations.begin( ) + 2 * numSecondOrderTensor + numThirdOrderTensor ) ); + norm = tardigradeVectorTools::l2norm( thirdOrderTensor( deltaPlasticDeformations.begin( ) + 2 * numSecondOrderTensor, + deltaPlasticDeformations.begin( ) + 2 * numSecondOrderTensor + numThirdOrderTensor ) ); if ( norm > *getMaxMicroGradientPlasticDeltaNorm( ) ){ diff --git a/src/cpp/tardigrade_hydraMicromorphicDruckerPragerPlasticity.h b/src/cpp/tardigrade_hydraMicromorphicDruckerPragerPlasticity.h index 8437962..356327e 100644 --- a/src/cpp/tardigrade_hydraMicromorphicDruckerPragerPlasticity.h +++ b/src/cpp/tardigrade_hydraMicromorphicDruckerPragerPlasticity.h @@ -73,297 +73,300 @@ namespace tardigradeHydra{ typedef std::vector< constantType > constantVector; //!< Define a vector of constants typedef std::vector< std::vector< constantType > > constantMatrix; //!< Define a matrix of constants + typedef std::vector< floatType > seventhOrderTensor; //!< A seventh order tensor + typedef std::vector< floatType > eighthOrderTensor; //!< A eighth order tensor + void computeDruckerPragerInternalParameters( const parameterType &frictionAngle, const parameterType &beta, parameterType &A, parameterType &B ); - void computeSecondOrderDruckerPragerYieldEquation( const floatVector &stressMeasure, - const floatType &cohesion, - const floatVector &precedingDeformationGradient, + void computeSecondOrderDruckerPragerYieldEquation( const secondOrderTensor &stressMeasure, + const floatType &cohesion, + const secondOrderTensor &precedingDeformationGradient, const parameterType &frictionAngle, const parameterType &beta, floatType &yieldValue ); - void computeSecondOrderDruckerPragerYieldEquation( const floatVector &stressMeasure, - const floatType &cohesion, - const floatVector &precedingDeformationGradient, + void computeSecondOrderDruckerPragerYieldEquation( const secondOrderTensor &stressMeasure, + const floatType &cohesion, + const secondOrderTensor &precedingDeformationGradient, const parameterType &frictionAngle, const parameterType &beta, - floatType &yieldValue, floatVector &dFdStress, floatType &dFdc, - floatVector &dFdPrecedingF, double tol = 1e-9 ); + floatType &yieldValue, secondOrderTensor &dFdStress, floatType &dFdc, + secondOrderTensor &dFdPrecedingF, double tol = 1e-9 ); - void computeSecondOrderDruckerPragerYieldEquation( const floatVector &stressMeasure, - const floatType &cohesion, - const floatVector &precedingDeformationGradient, + void computeSecondOrderDruckerPragerYieldEquation( const secondOrderTensor &stressMeasure, + const floatType &cohesion, + const secondOrderTensor &precedingDeformationGradient, const parameterType &frictionAngle, const parameterType &beta, - floatType &yieldValue, floatVector &dFdStress, floatType &dFdc, - floatVector &dFdPrecedingF, floatVector &d2FdStress2, - floatVector &d2FdStressdPrecedingF, double tol = 1e-9 ); + floatType &yieldValue, secondOrderTensor &dFdStress, floatType &dFdc, + secondOrderTensor &dFdPrecedingF, fourthOrderTensor &d2FdStress2, + fourthOrderTensor &d2FdStressdPrecedingF, double tol = 1e-9 ); - void computeHigherOrderDruckerPragerYieldEquation( const variableVector &stressMeasure, - const variableVector &cohesion, - const variableVector &precedingDeformationGradient, + void computeHigherOrderDruckerPragerYieldEquation( const thirdOrderTensor &stressMeasure, + const dimVector &cohesion, + const secondOrderTensor &precedingDeformationGradient, const parameterType &frictionAngle, const parameterType &beta, - variableVector &yieldValue ); + dimVector &yieldValue ); - void computeHigherOrderDruckerPragerYieldEquation( const variableVector &stressMeasure, - const variableVector &cohesion, - const variableVector &precedingDeformationGradient, + void computeHigherOrderDruckerPragerYieldEquation( const thirdOrderTensor &stressMeasure, + const dimVector &cohesion, + const secondOrderTensor &precedingDeformationGradient, const parameterType &frictionAngle, const parameterType &beta, - variableVector &yieldValue, variableVector &dFdStress, variableVector &dFdc, - variableVector &dFdPrecedingF ); + dimVector &yieldValue, fourthOrderTensor &dFdStress, dimVector &dFdc, + thirdOrderTensor &dFdPrecedingF ); - void computeHigherOrderDruckerPragerYieldEquation( const variableVector &stressMeasure, - const variableVector &cohesion, - const variableVector &precedingDeformationGradient, + void computeHigherOrderDruckerPragerYieldEquation( const thirdOrderTensor &stressMeasure, + const dimVector &cohesion, + const secondOrderTensor &precedingDeformationGradient, const parameterType &frictionAngle, const parameterType &beta, - variableVector &yieldValue, variableVector &dFdStress, variableVector &dFdc, - variableVector &dFdPrecedingF, variableVector &d2FdStress2, - variableVector &d2FdStressdPrecedingF ); + dimVector &yieldValue, thirdOrderTensor &dFdStress, dimVector &dFdc, + thirdOrderTensor &dFdPrecedingF, seventhOrderTensor &d2FdStress2, + sixthOrderTensor &d2FdStressdPrecedingF ); void computePlasticMacroVelocityGradient( const variableType ¯oGamma, const variableType µGamma, - const variableVector &inverseElasticRightCauchyGreen, - const variableVector ¯oFlowDirection, - const variableVector µFlowDirection, - variableVector &plasticMacroVelocityGradient ); + const secondOrderTensor &inverseElasticRightCauchyGreen, + const secondOrderTensor ¯oFlowDirection, + const secondOrderTensor µFlowDirection, + secondOrderTensor &plasticMacroVelocityGradient ); void computePlasticMacroVelocityGradient( const variableType ¯oGamma, const variableType µGamma, - const variableVector &inverseElasticRightCauchyGreen, - const variableVector ¯oFlowDirection, - const variableVector µFlowDirection, - variableVector &plasticMacroVelocityGradient, - variableVector &dPlasticMacroLdMacroGamma, - variableVector &dPlasticMacroLdMicroGamma ); + const secondOrderTensor &inverseElasticRightCauchyGreen, + const secondOrderTensor ¯oFlowDirection, + const secondOrderTensor µFlowDirection, + secondOrderTensor &plasticMacroVelocityGradient, + secondOrderTensor &dPlasticMacroLdMacroGamma, + secondOrderTensor &dPlasticMacroLdMicroGamma ); void computePlasticMacroVelocityGradient( const variableType ¯oGamma, const variableType µGamma, - const variableVector &inverseElasticRightCauchyGreen, - const variableVector ¯oFlowDirection, - const variableVector µFlowDirection, - variableVector &plasticMacroVelocityGradient, - variableVector &dPlasticMacroLdMacroGamma, - variableVector &dPlasticMacroLdMicroGamma, - variableVector &dPlasticMacroLdElasticRCG, - variableVector &dPlasticMacroLdMacroFlowDirection, - variableVector &dPlasticMacroLdMicroFlowDirection ); - - void computePlasticMicroVelocityGradient( const variableType µGamma, const variableVector &elasticMicroRightCauchyGreen, - const variableVector &elasticPsi, const variableVector &inverseElasticPsi, - const variableVector µFlowDirection, - variableVector &plasticMicroVelocityGradient ); - - void computePlasticMicroVelocityGradient( const variableType µGamma, const variableVector &elasticMicroRightCauchyGreen, - const variableVector &elasticPsi, const variableVector &inverseElasticPsi, - const variableVector µFlowDirection, - variableVector &plasticMicroVelocityGradient, - variableVector &dPlasticMicroLdMicroGamma ); - - void computePlasticMicroVelocityGradient( const variableType µGamma, const variableVector &elasticMicroRightCauchyGreen, - const variableVector &elasticPsi, const variableVector &inverseElasticPsi, - const variableVector µFlowDirection, - variableVector &plasticMicroVelocityGradient, - variableVector &dPlasticMicroLdMicroGamma, - variableVector &dPlasticMicroLdElasticMicroRCG, - variableVector &dPlasticMicroLdElasticPsi, - variableVector &dPlasticMicroLdMicroFlowDirection ); - - void computePlasticMicroGradientVelocityGradient( const variableVector µGradientGamma, const variableVector &elasticPsi, - const variableVector &inverseElasticPsi, const variableVector &elasticGamma, - const variableVector µGradientFlowDirection, - const variableVector &plasticMicroVelocityGradient, - variableVector &plasticMicroGradientVelocityGradient ); - - void computePlasticMicroGradientVelocityGradient( const variableVector µGradientGamma, const variableVector &elasticPsi, - const variableVector &inverseElasticPsi, const variableVector &elasticGamma, - const variableVector µGradientFlowDirection, - const variableVector &plasticMicroVelocityGradient, - variableVector &plasticMicroGradientVelocityGradient, - variableVector &skewTerm ); - - void computePlasticMicroGradientVelocityGradient( const variableVector µGradientGamma, const variableVector &elasticPsi, - const variableVector &inverseElasticPsi, const variableVector &elasticGamma, - const variableVector µGradientFlowDirection, - const variableVector &plasticMicroVelocityGradient, - variableVector &plasticMicroGradientVelocityGradient, - variableVector &dPlasticMicroGradientLdMicroGradientGamma, - variableVector &dPlasticMicroGradientLdPlasticMicroL ); - - void computePlasticMicroGradientVelocityGradient( const variableVector µGradientGamma, const variableVector &elasticPsi, - const variableVector &inverseElasticPsi, const variableVector &elasticGamma, - const variableVector µGradientFlowDirection, - const variableVector &plasticMicroVelocityGradient, - variableVector &plasticMicroGradientVelocityGradient, - variableVector &skewTerm, - variableVector &dPlasticMicroGradientLdMicroGradientGamma, - variableVector &dPlasticMicroGradientLdPlasticMicroL ); - - void computePlasticMicroGradientVelocityGradient( const variableVector µGradientGamma, const variableVector &elasticPsi, - const variableVector &inverseElasticPsi, const variableVector &elasticGamma, - const variableVector µGradientFlowDirection, - const variableVector &plasticMicroVelocityGradient, - variableVector &plasticMicroGradientVelocityGradient, - variableVector &dPlasticMicroGradientLdMicroGradientGamma, - variableVector &dPlasticMicroGradientLdPlasticMicroL, - variableVector &dPlasticMicroGradientLdElasticPsi, - variableVector &dPlasticMicroGradientLdElasticGamma, - variableVector &dPlasticMicroGradientLdMicroGradientFlowDirection ); - - void computePlasticMicroGradientVelocityGradient( const variableVector µGradientGamma, const variableVector &elasticPsi, - const variableVector &inverseElasticPsi, const variableVector &elasticGamma, - const variableVector µGradientFlowDirection, - const variableVector &plasticMicroVelocityGradient, - variableVector &plasticMicroGradientVelocityGradient, - variableVector &dPlasticMicroGradientLdMicroGradientGamma, - variableVector &dPlasticMicroGradientLdPlasticMicroL ); - - void computePlasticMicroGradientVelocityGradient( const variableVector µGradientGamma, const variableVector &elasticPsi, - const variableVector &inverseElasticPsi, const variableVector &elasticGamma, - const variableVector µGradientFlowDirection, - const variableVector &plasticMicroVelocityGradient, - variableVector &plasticMicroGradientVelocityGradient, - variableVector &skewTerm, - variableVector &dPlasticMicroGradientLdMicroGradientGamma, - variableVector &dPlasticMicroGradientLdPlasticMicroL ); - - void computePlasticMicroGradientVelocityGradient( const variableVector µGradientGamma, const variableVector &elasticPsi, - const variableVector &inverseElasticPsi, const variableVector &elasticGamma, - const variableVector µGradientFlowDirection, - const variableVector &plasticMicroVelocityGradient, - variableVector &plasticMicroGradientVelocityGradient, - variableVector &dPlasticMicroGradientLdMicroGradientGamma, - variableVector &dPlasticMicroGradientLdPlasticMicroL, - variableVector &dPlasticMicroGradientLdElasticPsi, - variableVector &dPlasticMicroGradientLdElasticGamma, - variableVector &dPlasticMicroGradientLdMicroGradientFlowDirection ); + const secondOrderTensor &inverseElasticRightCauchyGreen, + const secondOrderTensor ¯oFlowDirection, + const secondOrderTensor µFlowDirection, + secondOrderTensor &plasticMacroVelocityGradient, + secondOrderTensor &dPlasticMacroLdMacroGamma, + secondOrderTensor &dPlasticMacroLdMicroGamma, + fourthOrderTensor &dPlasticMacroLdElasticRCG, + fourthOrderTensor &dPlasticMacroLdMacroFlowDirection, + fourthOrderTensor &dPlasticMacroLdMicroFlowDirection ); + + void computePlasticMicroVelocityGradient( const variableType µGamma, const secondOrderTensor &elasticMicroRightCauchyGreen, + const secondOrderTensor &elasticPsi, const secondOrderTensor &inverseElasticPsi, + const secondOrderTensor µFlowDirection, + secondOrderTensor &plasticMicroVelocityGradient ); + + void computePlasticMicroVelocityGradient( const variableType µGamma, const secondOrderTensor &elasticMicroRightCauchyGreen, + const secondOrderTensor &elasticPsi, const secondOrderTensor &inverseElasticPsi, + const secondOrderTensor µFlowDirection, + secondOrderTensor &plasticMicroVelocityGradient, + secondOrderTensor &dPlasticMicroLdMicroGamma ); + + void computePlasticMicroVelocityGradient( const variableType µGamma, const secondOrderTensor &elasticMicroRightCauchyGreen, + const secondOrderTensor &elasticPsi, const secondOrderTensor &inverseElasticPsi, + const secondOrderTensor µFlowDirection, + secondOrderTensor &plasticMicroVelocityGradient, + secondOrderTensor &dPlasticMicroLdMicroGamma, + fourthOrderTensor &dPlasticMicroLdElasticMicroRCG, + fourthOrderTensor &dPlasticMicroLdElasticPsi, + fourthOrderTensor &dPlasticMicroLdMicroFlowDirection ); + + void computePlasticMicroGradientVelocityGradient( const dimVector µGradientGamma, const secondOrderTensor &elasticPsi, + const secondOrderTensor &inverseElasticPsi, const thirdOrderTensor &elasticGamma, + const thirdOrderTensor µGradientFlowDirection, + const secondOrderTensor &plasticMicroVelocityGradient, + thirdOrderTensor &plasticMicroGradientVelocityGradient ); + + void computePlasticMicroGradientVelocityGradient( const dimVector µGradientGamma, const secondOrderTensor &elasticPsi, + const secondOrderTensor &inverseElasticPsi, const thirdOrderTensor &elasticGamma, + const thirdOrderTensor µGradientFlowDirection, + const secondOrderTensor &plasticMicroVelocityGradient, + thirdOrderTensor &plasticMicroGradientVelocityGradient, + thirdOrderTensor &skewTerm ); + + void computePlasticMicroGradientVelocityGradient( const dimVector µGradientGamma, const secondOrderTensor &elasticPsi, + const secondOrderTensor &inverseElasticPsi, const thirdOrderTensor &elasticGamma, + const thirdOrderTensor µGradientFlowDirection, + const secondOrderTensor &plasticMicroVelocityGradient, + thirdOrderTensor &plasticMicroGradientVelocityGradient, + fourthOrderTensor &dPlasticMicroGradientLdMicroGradientGamma, + fifthOrderTensor &dPlasticMicroGradientLdPlasticMicroL ); + + void computePlasticMicroGradientVelocityGradient( const dimVector µGradientGamma, const secondOrderTensor &elasticPsi, + const secondOrderTensor &inverseElasticPsi, const thirdOrderTensor &elasticGamma, + const thirdOrderTensor µGradientFlowDirection, + const secondOrderTensor &plasticMicroVelocityGradient, + thirdOrderTensor &plasticMicroGradientVelocityGradient, + thirdOrderTensor &skewTerm, + fourthOrderTensor &dPlasticMicroGradientLdMicroGradientGamma, + fifthOrderTensor &dPlasticMicroGradientLdPlasticMicroL ); + + void computePlasticMicroGradientVelocityGradient( const dimVector µGradientGamma, const secondOrderTensor &elasticPsi, + const secondOrderTensor &inverseElasticPsi, const thirdOrderTensor &elasticGamma, + const thirdOrderTensor µGradientFlowDirection, + const secondOrderTensor &plasticMicroVelocityGradient, + thirdOrderTensor &plasticMicroGradientVelocityGradient, + fourthOrderTensor &dPlasticMicroGradientLdMicroGradientGamma, + fifthOrderTensor &dPlasticMicroGradientLdPlasticMicroL, + fifthOrderTensor &dPlasticMicroGradientLdElasticPsi, + sixthOrderTensor &dPlasticMicroGradientLdElasticGamma, + sixthOrderTensor &dPlasticMicroGradientLdMicroGradientFlowDirection ); + + void computePlasticMicroGradientVelocityGradient( const dimVector µGradientGamma, const secondOrderTensor &elasticPsi, + const secondOrderTensor &inverseElasticPsi, const thirdOrderTensor &elasticGamma, + const thirdOrderTensor µGradientFlowDirection, + const secondOrderTensor &plasticMicroVelocityGradient, + thirdOrderTensor &plasticMicroGradientVelocityGradient, + fourthOrderTensor &dPlasticMicroGradientLdMicroGradientGamma, + fifthOrderTensor &dPlasticMicroGradientLdPlasticMicroL ); + + void computePlasticMicroGradientVelocityGradient( const dimVector µGradientGamma, const secondOrderTensor &elasticPsi, + const secondOrderTensor &inverseElasticPsi, const thirdOrderTensor &elasticGamma, + const thirdOrderTensor µGradientFlowDirection, + const secondOrderTensor &plasticMicroVelocityGradient, + thirdOrderTensor &plasticMicroGradientVelocityGradient, + thirdOrderTensor &skewTerm, + fourthOrderTensor &dPlasticMicroGradientLdMicroGradientGamma, + fifthOrderTensor &dPlasticMicroGradientLdPlasticMicroL ); + + void computePlasticMicroGradientVelocityGradient( const dimVector µGradientGamma, const secondOrderTensor &elasticPsi, + const secondOrderTensor &inverseElasticPsi, const thirdOrderTensor &elasticGamma, + const thirdOrderTensor µGradientFlowDirection, + const secondOrderTensor &plasticMicroVelocityGradient, + thirdOrderTensor &plasticMicroGradientVelocityGradient, + fourthOrderTensor &dPlasticMicroGradientLdMicroGradientGamma, + fifthOrderTensor &dPlasticMicroGradientLdPlasticMicroL, + fifthOrderTensor &dPlasticMicroGradientLdElasticPsi, + sixthOrderTensor &dPlasticMicroGradientLdElasticGamma, + sixthOrderTensor &dPlasticMicroGradientLdMicroGradientFlowDirection ); void evolvePlasticMicroGradChi( const variableType &Dt, - const variableVector ¤tPlasticMicroDeformation, - const variableVector ¤tPlasticMacroVelocityGradient, - const variableVector ¤tPlasticMicroVelocityGradient, - const variableVector ¤tPlasticMicroGradientVelocityGradient, - const variableVector &previousPlasticMicroDeformation, - const variableVector &previousPlasticMicroGradient, - const variableVector &previousPlasticMacroVelocityGradient, - const variableVector &previousPlasticMicroVelocityGradient, - const variableVector &previousPlasticMicroGradientVelocityGradient, - variableVector ¤tPlasticMicroGradient, + const secondOrderTensor ¤tPlasticMicroDeformation, + const secondOrderTensor ¤tPlasticMacroVelocityGradient, + const secondOrderTensor ¤tPlasticMicroVelocityGradient, + const thirdOrderTensor ¤tPlasticMicroGradientVelocityGradient, + const secondOrderTensor &previousPlasticMicroDeformation, + const thirdOrderTensor &previousPlasticMicroGradient, + const secondOrderTensor &previousPlasticMacroVelocityGradient, + const secondOrderTensor &previousPlasticMicroVelocityGradient, + const thirdOrderTensor &previousPlasticMicroGradientVelocityGradient, + thirdOrderTensor ¤tPlasticMicroGradient, const parameterType alpha = 0.5 ); void evolvePlasticMicroGradChi( const variableType &Dt, - const variableVector ¤tPlasticMicroDeformation, - const variableVector ¤tPlasticMacroVelocityGradient, - const variableVector ¤tPlasticMicroVelocityGradient, - const variableVector ¤tPlasticMicroGradientVelocityGradient, - const variableVector &previousPlasticMicroDeformation, - const variableVector &previousPlasticMicroGradient, - const variableVector &previousPlasticMacroVelocityGradient, - const variableVector &previousPlasticMicroVelocityGradient, - const variableVector &previousPlasticMicroGradientVelocityGradient, - variableVector ¤tPlasticMicroGradient, - variableVector &LHS, + const secondOrderTensor ¤tPlasticMicroDeformation, + const secondOrderTensor ¤tPlasticMacroVelocityGradient, + const secondOrderTensor ¤tPlasticMicroVelocityGradient, + const thirdOrderTensor ¤tPlasticMicroGradientVelocityGradient, + const secondOrderTensor &previousPlasticMicroDeformation, + const thirdOrderTensor &previousPlasticMicroGradient, + const secondOrderTensor &previousPlasticMacroVelocityGradient, + const secondOrderTensor &previousPlasticMicroVelocityGradient, + const thirdOrderTensor &previousPlasticMicroGradientVelocityGradient, + thirdOrderTensor ¤tPlasticMicroGradient, + sixthOrderTensor &LHS, const parameterType alpha = 0.5 ); void evolvePlasticMicroGradChi( const variableType &Dt, - const variableVector ¤tPlasticMicroDeformation, - const variableVector ¤tPlasticMacroVelocityGradient, - const variableVector ¤tPlasticMicroVelocityGradient, - const variableVector ¤tPlasticMicroGradientVelocityGradient, - const variableVector &previousPlasticMicroDeformation, - const variableVector &previousPlasticMicroGradient, - const variableVector &previousPlasticMacroVelocityGradient, - const variableVector &previousPlasticMicroVelocityGradient, - const variableVector &previousPlasticMicroGradientVelocityGradient, - variableVector ¤tPlasticMicroGradient, - variableVector &dCurrentPlasticMicroGradientdPlasticMicroDeformation, - variableVector &dCurrentPlasticMicroGradientdPlasticMacroVelocityGradient, - variableVector &dCurrentPlasticMicroGradientdPlasticMicroVelocityGradient, - variableVector &dCurrentPlasticMicroGradientdPlasticMicroGradientVelocityGradient, + const secondOrderTensor ¤tPlasticMicroDeformation, + const secondOrderTensor ¤tPlasticMacroVelocityGradient, + const secondOrderTensor ¤tPlasticMicroVelocityGradient, + const thirdOrderTensor ¤tPlasticMicroGradientVelocityGradient, + const secondOrderTensor &previousPlasticMicroDeformation, + const thirdOrderTensor &previousPlasticMicroGradient, + const secondOrderTensor &previousPlasticMacroVelocityGradient, + const secondOrderTensor &previousPlasticMicroVelocityGradient, + const thirdOrderTensor &previousPlasticMicroGradientVelocityGradient, + thirdOrderTensor ¤tPlasticMicroGradient, + fifthOrderTensor &dCurrentPlasticMicroGradientdPlasticMicroDeformation, + fifthOrderTensor &dCurrentPlasticMicroGradientdPlasticMacroVelocityGradient, + fifthOrderTensor &dCurrentPlasticMicroGradientdPlasticMicroVelocityGradient, + sixthOrderTensor &dCurrentPlasticMicroGradientdPlasticMicroGradientVelocityGradient, const parameterType alpha = 0.5 ); void evolvePlasticMicroGradChi( const variableType &Dt, - const variableVector ¤tPlasticMicroDeformation, - const variableVector ¤tPlasticMacroVelocityGradient, - const variableVector ¤tPlasticMicroVelocityGradient, - const variableVector ¤tPlasticMicroGradientVelocityGradient, - const variableVector &previousPlasticMicroDeformation, - const variableVector &previousPlasticMicroGradient, - const variableVector &previousPlasticMacroVelocityGradient, - const variableVector &previousPlasticMicroVelocityGradient, - const variableVector &previousPlasticMicroGradientVelocityGradient, - variableVector ¤tPlasticMicroGradient, - variableVector &dCurrentPlasticMicroGradientdPlasticMicroDeformation, - variableVector &dCurrentPlasticMicroGradientdPlasticMacroVelocityGradient, - variableVector &dCurrentPlasticMicroGradientdPlasticMicroVelocityGradient, - variableVector &dCurrentPlasticMicroGradientdPlasticMicroGradientVelocityGradient, - variableVector &dCurrentPlasticMicroGradientdPreviousPlasticMicroDeformation, - variableVector &dCurrentPlasticMicroGradientdPreviousPlasticMicroGradient, - variableVector &dCurrentPlasticMicroGradientdPreviousPlasticMacroVelocityGradient, - variableVector &dCurrentPlasticMicroGradientdPreviousPlasticMicroVelocityGradient, - variableVector &dCurrentPlasticMicroGradientdPreviousPlasticMicroGradientVelocityGradient, + const secondOrderTensor ¤tPlasticMicroDeformation, + const secondOrderTensor ¤tPlasticMacroVelocityGradient, + const secondOrderTensor ¤tPlasticMicroVelocityGradient, + const thirdOrderTensor ¤tPlasticMicroGradientVelocityGradient, + const secondOrderTensor &previousPlasticMicroDeformation, + const thirdOrderTensor &previousPlasticMicroGradient, + const secondOrderTensor &previousPlasticMacroVelocityGradient, + const secondOrderTensor &previousPlasticMicroVelocityGradient, + const thirdOrderTensor &previousPlasticMicroGradientVelocityGradient, + thirdOrderTensor ¤tPlasticMicroGradient, + fifthOrderTensor &dCurrentPlasticMicroGradientdPlasticMicroDeformation, + fifthOrderTensor &dCurrentPlasticMicroGradientdPlasticMacroVelocityGradient, + fifthOrderTensor &dCurrentPlasticMicroGradientdPlasticMicroVelocityGradient, + sixthOrderTensor &dCurrentPlasticMicroGradientdPlasticMicroGradientVelocityGradient, + fifthOrderTensor &dCurrentPlasticMicroGradientdPreviousPlasticMicroDeformation, + sixthOrderTensor &dCurrentPlasticMicroGradientdPreviousPlasticMicroGradient, + fifthOrderTensor &dCurrentPlasticMicroGradientdPreviousPlasticMacroVelocityGradient, + fifthOrderTensor &dCurrentPlasticMicroGradientdPreviousPlasticMicroVelocityGradient, + sixthOrderTensor &dCurrentPlasticMicroGradientdPreviousPlasticMicroGradientVelocityGradient, const parameterType alpha = 0.5 ); void evolvePlasticDeformation( const variableType &Dt, - const variableVector ¤tPlasticMacroVelocityGradient, - const variableVector ¤tPlasticMicroVelocityGradient, - const variableVector ¤tPlasticMicroGradientVelocityGradient, - const variableVector &previousPlasticDeformationGradient, - const variableVector &previousPlasticMicroDeformation, - const variableVector &previousPlasticMicroGradient, - const variableVector &previousPlasticMacroVelocityGradient, - const variableVector &previousPlasticMicroVelocityGradient, - const variableVector &previousPlasticMicroGradientVelocityGradient, - variableVector ¤tPlasticDeformationGradient, - variableVector ¤tPlasticMicroDeformation, - variableVector ¤tPlasticMicroGradient, + const secondOrderTensor ¤tPlasticMacroVelocityGradient, + const secondOrderTensor ¤tPlasticMicroVelocityGradient, + const thirdOrderTensor ¤tPlasticMicroGradientVelocityGradient, + const secondOrderTensor &previousPlasticDeformationGradient, + const secondOrderTensor &previousPlasticMicroDeformation, + const thirdOrderTensor &previousPlasticMicroGradient, + const secondOrderTensor &previousPlasticMacroVelocityGradient, + const secondOrderTensor &previousPlasticMicroVelocityGradient, + const thirdOrderTensor &previousPlasticMicroGradientVelocityGradient, + secondOrderTensor ¤tPlasticDeformationGradient, + secondOrderTensor ¤tPlasticMicroDeformation, + thirdOrderTensor ¤tPlasticMicroGradient, const parameterType alphaMacro = 0.5, const parameterType alphaMicro = 0.5, const parameterType alphaMicroGradient = 0.5 ); void evolvePlasticDeformation( const variableType &Dt, - const variableVector ¤tPlasticMacroVelocityGradient, - const variableVector ¤tPlasticMicroVelocityGradient, - const variableVector ¤tPlasticMicroGradientVelocityGradient, - const variableVector &previousPlasticDeformationGradient, - const variableVector &previousPlasticMicroDeformation, - const variableVector &previousPlasticMicroGradient, - const variableVector &previousPlasticMacroVelocityGradient, - const variableVector &previousPlasticMicroVelocityGradient, - const variableVector &previousPlasticMicroGradientVelocityGradient, - variableVector ¤tPlasticDeformationGradient, - variableVector ¤tPlasticMicroDeformation, - variableVector ¤tPlasticMicroGradient, - variableVector &dPlasticFdPlasticMacroL, - variableVector &dPlasticMicroDeformationdPlasticMicroL, - variableVector &dPlasticMicroGradientdPlasticMacroL, - variableVector &dPlasticMicroGradientdPlasticMicroL, - variableVector &dPlasticMicroGradientdPlasticMicroGradientL, + const secondOrderTensor ¤tPlasticMacroVelocityGradient, + const secondOrderTensor ¤tPlasticMicroVelocityGradient, + const thirdOrderTensor ¤tPlasticMicroGradientVelocityGradient, + const secondOrderTensor &previousPlasticDeformationGradient, + const secondOrderTensor &previousPlasticMicroDeformation, + const thirdOrderTensor &previousPlasticMicroGradient, + const secondOrderTensor &previousPlasticMacroVelocityGradient, + const secondOrderTensor &previousPlasticMicroVelocityGradient, + const thirdOrderTensor &previousPlasticMicroGradientVelocityGradient, + secondOrderTensor ¤tPlasticDeformationGradient, + secondOrderTensor ¤tPlasticMicroDeformation, + thirdOrderTensor ¤tPlasticMicroGradient, + fourthOrderTensor &dPlasticFdPlasticMacroL, + fourthOrderTensor &dPlasticMicroDeformationdPlasticMicroL, + fifthOrderTensor &dPlasticMicroGradientdPlasticMacroL, + fifthOrderTensor &dPlasticMicroGradientdPlasticMicroL, + sixthOrderTensor &dPlasticMicroGradientdPlasticMicroGradientL, const parameterType alphaMacro = 0.5, const parameterType alphaMicro = 0.5, const parameterType alphaMicroGradient = 0.5 ); void evolvePlasticDeformation( const variableType &Dt, - const variableVector ¤tPlasticMacroVelocityGradient, - const variableVector ¤tPlasticMicroVelocityGradient, - const variableVector ¤tPlasticMicroGradientVelocityGradient, - const variableVector &previousPlasticDeformationGradient, - const variableVector &previousPlasticMicroDeformation, - const variableVector &previousPlasticMicroGradient, - const variableVector &previousPlasticMacroVelocityGradient, - const variableVector &previousPlasticMicroVelocityGradient, - const variableVector &previousPlasticMicroGradientVelocityGradient, - variableVector ¤tPlasticDeformationGradient, - variableVector ¤tPlasticMicroDeformation, - variableVector ¤tPlasticMicroGradient, - variableVector &dPlasticFdPlasticMacroL, - variableVector &dPlasticMicroDeformationdPlasticMicroL, - variableVector &dPlasticMicroGradientdPlasticMacroL, - variableVector &dPlasticMicroGradientdPlasticMicroL, - variableVector &dPlasticMicroGradientdPlasticMicroGradientL, - variableVector &dPlasticFdPreviousPlasticF, - variableVector &dPlasticFdPreviousPlasticMacroL, - variableVector &dPlasticMicroDeformationdPreviousPlasticMicroDeformation, - variableVector &dPlasticMicroDeformationdPreviousPlasticMicroL, - variableVector &dPlasticMicroGradientdPreviousPlasticMicroDeformation, - variableVector &dPlasticMicroGradientdPreviousPlasticMicroGradient, - variableVector &dPlasticMicroGradientdPreviousPlasticMacroL, - variableVector &dPlasticMicroGradientdPreviousPlasticMicroL, - variableVector &dPlasticMicroGradientdPreviousPlasticMicroGradientL, + const secondOrderTensor ¤tPlasticMacroVelocityGradient, + const secondOrderTensor ¤tPlasticMicroVelocityGradient, + const thirdOrderTensor ¤tPlasticMicroGradientVelocityGradient, + const secondOrderTensor &previousPlasticDeformationGradient, + const secondOrderTensor &previousPlasticMicroDeformation, + const thirdOrderTensor &previousPlasticMicroGradient, + const secondOrderTensor &previousPlasticMacroVelocityGradient, + const secondOrderTensor &previousPlasticMicroVelocityGradient, + const thirdOrderTensor &previousPlasticMicroGradientVelocityGradient, + secondOrderTensor ¤tPlasticDeformationGradient, + secondOrderTensor ¤tPlasticMicroDeformation, + thirdOrderTensor ¤tPlasticMicroGradient, + fourthOrderTensor &dPlasticFdPlasticMacroL, + fourthOrderTensor &dPlasticMicroDeformationdPlasticMicroL, + fifthOrderTensor &dPlasticMicroGradientdPlasticMacroL, + fifthOrderTensor &dPlasticMicroGradientdPlasticMicroL, + sixthOrderTensor &dPlasticMicroGradientdPlasticMicroGradientL, + fourthOrderTensor &dPlasticFdPreviousPlasticF, + fourthOrderTensor &dPlasticFdPreviousPlasticMacroL, + fourthOrderTensor &dPlasticMicroDeformationdPreviousPlasticMicroDeformation, + fourthOrderTensor &dPlasticMicroDeformationdPreviousPlasticMicroL, + fifthOrderTensor &dPlasticMicroGradientdPreviousPlasticMicroDeformation, + sixthOrderTensor &dPlasticMicroGradientdPreviousPlasticMicroGradient, + fifthOrderTensor &dPlasticMicroGradientdPreviousPlasticMacroL, + fifthOrderTensor &dPlasticMicroGradientdPreviousPlasticMicroL, + sixthOrderTensor &dPlasticMicroGradientdPreviousPlasticMicroGradientL, const parameterType alphaMacro = 0.5, const parameterType alphaMicro = 0.5, const parameterType alphaMicroGradient = 0.5 ); @@ -1050,43 +1053,43 @@ namespace tardigradeHydra{ floatType _maxMicroGradientPlasticDeltaNorm = 1.; //!< The maximum allowable value of the norm of the change in micro gradient plasticity for a given nonlinear iteration - TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, macroHardeningParameters, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, macroHardeningParameters, floatVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, microHardeningParameters, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, microHardeningParameters, floatVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, microGradientHardeningParameters, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, microGradientHardeningParameters, floatVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, macroFlowParameters, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, macroFlowParameters, floatVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, microFlowParameters, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, microFlowParameters, floatVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, microGradientFlowParameters, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, microGradientFlowParameters, floatVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, macroYieldParameters, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, macroYieldParameters, floatVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, microYieldParameters, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, microYieldParameters, floatVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, microGradientYieldParameters, floatVector, unexpectedError ) + TARDIGRADE_HYDRA_DECLARE_CONSTANT_STORAGE( private, microGradientYieldParameters, floatVector, unexpectedError ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, macroDrivingStress, floatVector, setMacroDrivingStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, macroDrivingStress, secondOrderTensor, setMacroDrivingStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, symmetricMicroDrivingStress, floatVector, setSymmetricMicroDrivingStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, symmetricMicroDrivingStress, secondOrderTensor, setSymmetricMicroDrivingStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, higherOrderDrivingStress, floatVector, setHigherOrderDrivingStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, higherOrderDrivingStress, thirdOrderTensor, setHigherOrderDrivingStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMacroDrivingStressdMacroStress, floatVector, setdMacroDrivingStressdMacroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMacroDrivingStressdMacroStress, fourthOrderTensor, setdMacroDrivingStressdMacroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dSymmetricMicroDrivingStressdMicroStress, floatVector, setdSymmetricMicroDrivingStressdMicroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dSymmetricMicroDrivingStressdMicroStress, fourthOrderTensor, setdSymmetricMicroDrivingStressdMicroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dHigherOrderDrivingStressdHigherOrderStress, floatVector, setdHigherOrderDrivingStressdHigherOrderStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dHigherOrderDrivingStressdHigherOrderStress, sixthOrderTensor, setdHigherOrderDrivingStressdHigherOrderStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMacroDrivingStressdF, floatVector, setdMacroDrivingStressdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMacroDrivingStressdF, fourthOrderTensor, setdMacroDrivingStressdF ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dSymmetricMicroDrivingStressdF, floatVector, setdSymmetricMicroDrivingStressdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dSymmetricMicroDrivingStressdF, fourthOrderTensor, setdSymmetricMicroDrivingStressdF ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dHigherOrderDrivingStressdF, floatVector, setdHigherOrderDrivingStressdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dHigherOrderDrivingStressdF, fifthOrderTensor, setdHigherOrderDrivingStressdF ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dHigherOrderDrivingStressdChi, floatVector, setdHigherOrderDrivingStressdChi ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dHigherOrderDrivingStressdChi, fifthOrderTensor, setdHigherOrderDrivingStressdChi ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMacroDrivingStressdFn, floatVector, setdMacroDrivingStressdFn ) @@ -1096,25 +1099,25 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dHigherOrderDrivingStressdChin, floatVector, setdHigherOrderDrivingStressdChin ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousMacroDrivingStress, floatVector, setPreviousMacroDrivingStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousMacroDrivingStress, secondOrderTensor, setPreviousMacroDrivingStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousSymmetricMicroDrivingStress, floatVector, setPreviousSymmetricMicroDrivingStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousSymmetricMicroDrivingStress, secondOrderTensor, setPreviousSymmetricMicroDrivingStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousHigherOrderDrivingStress, floatVector, setPreviousHigherOrderDrivingStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousHigherOrderDrivingStress, thirdOrderTensor, setPreviousHigherOrderDrivingStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMacroDrivingStressdMacroStress, floatVector, setPreviousdMacroDrivingStressdMacroStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMacroDrivingStressdMacroStress, fourthOrderTensor, setPreviousdMacroDrivingStressdMacroStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdSymmetricMicroDrivingStressdMicroStress, floatVector, setPreviousdSymmetricMicroDrivingStressdMicroStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdSymmetricMicroDrivingStressdMicroStress, fourthOrderTensor, setPreviousdSymmetricMicroDrivingStressdMicroStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdHigherOrderDrivingStressdHigherOrderStress, floatVector, setPreviousdHigherOrderDrivingStressdHigherOrderStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdHigherOrderDrivingStressdHigherOrderStress, sixthOrderTensor, setPreviousdHigherOrderDrivingStressdHigherOrderStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMacroDrivingStressdF, floatVector, setPreviousdMacroDrivingStressdF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMacroDrivingStressdF, fourthOrderTensor, setPreviousdMacroDrivingStressdF ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdSymmetricMicroDrivingStressdF, floatVector, setPreviousdSymmetricMicroDrivingStressdF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdSymmetricMicroDrivingStressdF, fourthOrderTensor, setPreviousdSymmetricMicroDrivingStressdF ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdHigherOrderDrivingStressdF, floatVector, setPreviousdHigherOrderDrivingStressdF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdHigherOrderDrivingStressdF, fifthOrderTensor, setPreviousdHigherOrderDrivingStressdF ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdHigherOrderDrivingStressdChi, floatVector, setPreviousdHigherOrderDrivingStressdChi ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdHigherOrderDrivingStressdChi, fifthOrderTensor, setPreviousdHigherOrderDrivingStressdChi ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMacroDrivingStressdFn, floatVector, setPreviousdMacroDrivingStressdFn ) @@ -1144,7 +1147,7 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroCohesiondStateVariables, floatVector, setdMicroCohesiondStateVariables ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, microGradientCohesion, floatVector, setMicroGradientCohesion ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, microGradientCohesion, dimVector, setMicroGradientCohesion ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroGradientCohesiondStateVariables, floatVector, setdMicroGradientCohesiondStateVariables ) @@ -1156,75 +1159,75 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroCohesiondStateVariables, floatVector, setPreviousdMicroCohesiondStateVariables ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousMicroGradientCohesion, floatVector, setPreviousMicroGradientCohesion ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousMicroGradientCohesion, dimVector, setPreviousMicroGradientCohesion ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroGradientCohesiondStateVariables, floatVector, setPreviousdMicroGradientCohesiondStateVariables ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMacroFlowdc, floatType, setdMacroFlowdc ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMacroFlowdDrivingStress, floatVector, setdMacroFlowdDrivingStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMacroFlowdDrivingStress, secondOrderTensor, setdMacroFlowdDrivingStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MacroFlowdDrivingStressdStress, floatVector, setd2MacroFlowdDrivingStressdStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MacroFlowdDrivingStressdStress, fourthOrderTensor, setd2MacroFlowdDrivingStressdStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MacroFlowdDrivingStressdF, floatVector, setd2MacroFlowdDrivingStressdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MacroFlowdDrivingStressdF, fourthOrderTensor, setd2MacroFlowdDrivingStressdF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MacroFlowdDrivingStressdFn, floatVector, setd2MacroFlowdDrivingStressdFn ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroFlowdc, floatType, setdMicroFlowdc ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroFlowdDrivingStress, floatVector, setdMicroFlowdDrivingStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroFlowdDrivingStress, secondOrderTensor, setdMicroFlowdDrivingStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MicroFlowdDrivingStressdStress, floatVector, setd2MicroFlowdDrivingStressdStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MicroFlowdDrivingStressdStress, fourthOrderTensor, setd2MicroFlowdDrivingStressdStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MicroFlowdDrivingStressdF, floatVector, setd2MicroFlowdDrivingStressdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MicroFlowdDrivingStressdF, fourthOrderTensor, setd2MicroFlowdDrivingStressdF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MicroFlowdDrivingStressdFn, floatVector, setd2MicroFlowdDrivingStressdFn ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroGradientFlowdc, floatVector, setdMicroGradientFlowdc ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroGradientFlowdc, secondOrderTensor, setdMicroGradientFlowdc ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroGradientFlowdDrivingStress, floatVector, setdMicroGradientFlowdDrivingStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroGradientFlowdDrivingStress, fourthOrderTensor, setdMicroGradientFlowdDrivingStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MicroGradientFlowdDrivingStressdStress, floatVector, setd2MicroGradientFlowdDrivingStressdStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MicroGradientFlowdDrivingStressdStress, fifthOrderTensor, setd2MicroGradientFlowdDrivingStressdStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MicroGradientFlowdDrivingStressdF, floatVector, setd2MicroGradientFlowdDrivingStressdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MicroGradientFlowdDrivingStressdF, fifthOrderTensor, setd2MicroGradientFlowdDrivingStressdF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MicroGradientFlowdDrivingStressdFn, floatVector, setd2MicroGradientFlowdDrivingStressdFn ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MicroGradientFlowdDrivingStressdChi, floatVector, setd2MicroGradientFlowdDrivingStressdChi ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MicroGradientFlowdDrivingStressdChi, fifthOrderTensor, setd2MicroGradientFlowdDrivingStressdChi ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, d2MicroGradientFlowdDrivingStressdChin, floatVector, setd2MicroGradientFlowdDrivingStressdChin ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMacroFlowdc, floatType, setPreviousdMacroFlowdc ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMacroFlowdc, floatType, setPreviousdMacroFlowdc ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMacroFlowdDrivingStress, floatVector, setPreviousdMacroFlowdDrivingStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMacroFlowdDrivingStress, secondOrderTensor, setPreviousdMacroFlowdDrivingStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MacroFlowdDrivingStressdStress, floatVector, setPreviousd2MacroFlowdDrivingStressdStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MacroFlowdDrivingStressdStress, fourthOrderTensor, setPreviousd2MacroFlowdDrivingStressdStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MacroFlowdDrivingStressdF, floatVector, setPreviousd2MacroFlowdDrivingStressdF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MacroFlowdDrivingStressdF, fourthOrderTensor, setPreviousd2MacroFlowdDrivingStressdF ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MacroFlowdDrivingStressdFn, floatVector, setPreviousd2MacroFlowdDrivingStressdFn ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroFlowdc, floatType, setPreviousdMicroFlowdc ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroFlowdDrivingStress, floatVector, setPreviousdMicroFlowdDrivingStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroFlowdDrivingStress, secondOrderTensor, setPreviousdMicroFlowdDrivingStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MicroFlowdDrivingStressdStress, floatVector, setPreviousd2MicroFlowdDrivingStressdStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MicroFlowdDrivingStressdStress, fourthOrderTensor, setPreviousd2MicroFlowdDrivingStressdStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MicroFlowdDrivingStressdF, floatVector, setPreviousd2MicroFlowdDrivingStressdF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MicroFlowdDrivingStressdF, fourthOrderTensor, setPreviousd2MicroFlowdDrivingStressdF ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MicroFlowdDrivingStressdFn, floatVector, setPreviousd2MicroFlowdDrivingStressdFn ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroGradientFlowdc, floatVector, setPreviousdMicroGradientFlowdc ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroGradientFlowdc, secondOrderTensor, setPreviousdMicroGradientFlowdc ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroGradientFlowdDrivingStress, floatVector, setPreviousdMicroGradientFlowdDrivingStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroGradientFlowdDrivingStress, fourthOrderTensor, setPreviousdMicroGradientFlowdDrivingStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MicroGradientFlowdDrivingStressdStress, floatVector, setPreviousd2MicroGradientFlowdDrivingStressdStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MicroGradientFlowdDrivingStressdStress, seventhOrderTensor, setPreviousd2MicroGradientFlowdDrivingStressdStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MicroGradientFlowdDrivingStressdF, floatVector, setPreviousd2MicroGradientFlowdDrivingStressdF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MicroGradientFlowdDrivingStressdF, sixthOrderTensor, setPreviousd2MicroGradientFlowdDrivingStressdF ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MicroGradientFlowdDrivingStressdFn, floatVector, setPreviousd2MicroGradientFlowdDrivingStressdFn ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MicroGradientFlowdDrivingStressdChi, floatVector, setPreviousd2MicroGradientFlowdDrivingStressdChi ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MicroGradientFlowdDrivingStressdChi, sixthOrderTensor, setPreviousd2MicroGradientFlowdDrivingStressdChi ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousd2MicroGradientFlowdDrivingStressdChin, floatVector, setPreviousd2MicroGradientFlowdDrivingStressdChin ) @@ -1244,111 +1247,111 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, macroYield, floatType, setMacroYield ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMacroYielddStress, floatVector, setdMacroYielddStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMacroYielddStress, secondOrderTensor, setdMacroYielddStress ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMacroYielddStateVariables, floatVector, setdMacroYielddStateVariables ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMacroYielddF, floatVector, setdMacroYielddF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMacroYielddF, secondOrderTensor, setdMacroYielddF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMacroYielddFn, floatVector, setdMacroYielddFn ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, microYield, floatType, setMicroYield ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroYielddStress, floatVector, setdMicroYielddStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroYielddStress, secondOrderTensor, setdMicroYielddStress ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroYielddStateVariables, floatVector, setdMicroYielddStateVariables ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroYielddF, floatVector, setdMicroYielddF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroYielddF, secondOrderTensor, setdMicroYielddF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroYielddFn, floatVector, setdMicroYielddFn ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, microGradientYield, floatVector, setMicroGradientYield ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroGradientYielddStress, floatVector, setdMicroGradientYielddStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroGradientYielddStress, fourthOrderTensor, setdMicroGradientYielddStress ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroGradientYielddStateVariables, floatVector, setdMicroGradientYielddStateVariables ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroGradientYielddF, floatVector, setdMicroGradientYielddF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroGradientYielddF, fourthOrderTensor, setdMicroGradientYielddF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroGradientYielddFn, floatVector, setdMicroGradientYielddFn ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroGradientYielddChi, floatVector, setdMicroGradientYielddChi ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroGradientYielddChi, fourthOrderTensor, setdMicroGradientYielddChi ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dMicroGradientYielddChin, floatVector, setdMicroGradientYielddChin ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousMacroYield, floatType, setPreviousMacroYield ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMacroYielddStress, floatVector, setPreviousdMacroYielddStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMacroYielddStress, secondOrderTensor, setPreviousdMacroYielddStress ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMacroYielddStateVariables, floatVector, setPreviousdMacroYielddStateVariables ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMacroYielddF, floatVector, setPreviousdMacroYielddF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMacroYielddF, secondOrderTensor, setPreviousdMacroYielddF ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMacroYielddFn, floatVector, setPreviousdMacroYielddFn ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousMicroYield, floatType, setPreviousMicroYield ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroYielddStress, floatVector, setPreviousdMicroYielddStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroYielddStress, secondOrderTensor, setPreviousdMicroYielddStress ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroYielddStateVariables, floatVector, setPreviousdMicroYielddStateVariables ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroYielddF, floatVector, setPreviousdMicroYielddF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroYielddF, secondOrderTensor, setPreviousdMicroYielddF ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroYielddFn, floatVector, setPreviousdMicroYielddFn ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousMicroGradientYield, floatVector, setPreviousMicroGradientYield ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousMicroGradientYield, dimVector, setPreviousMicroGradientYield ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroGradientYielddStress, floatVector, setPreviousdMicroGradientYielddStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroGradientYielddStress, fourthOrderTensor, setPreviousdMicroGradientYielddStress ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroGradientYielddStateVariables, floatVector, setPreviousdMicroGradientYielddStateVariables ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroGradientYielddF, floatVector, setPreviousdMicroGradientYielddF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroGradientYielddF, fourthOrderTensor, setPreviousdMicroGradientYielddF ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroGradientYielddFn, floatVector, setPreviousdMicroGradientYielddFn ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroGradientYielddChi, floatVector, setPreviousdMicroGradientYielddChi ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroGradientYielddChi, fourthOrderTensor, setPreviousdMicroGradientYielddChi ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdMicroGradientYielddChin, floatVector, setPreviousdMicroGradientYielddChin ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, precedingDeformationGradient, floatVector, setPrecedingDeformationGradient ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, precedingDeformationGradient, secondOrderTensor, setPrecedingDeformationGradient ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingDeformationGradientdF, floatVector, setdPrecedingDeformationGradientdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingDeformationGradientdF, fourthOrderTensor, setdPrecedingDeformationGradientdF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingDeformationGradientdFn, floatVector, setdPrecedingDeformationGradientdFn ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPrecedingDeformationGradient, floatVector, setPreviousPrecedingDeformationGradient ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPrecedingDeformationGradient, secondOrderTensor, setPreviousPrecedingDeformationGradient ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPrecedingDeformationGradientdF, floatVector, setPreviousdPrecedingDeformationGradientdF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPrecedingDeformationGradientdF, fourthOrderTensor, setPreviousdPrecedingDeformationGradientdF ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPrecedingDeformationGradientdFn, floatVector, setPreviousdPrecedingDeformationGradientdFn ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, precedingMicroDeformation, floatVector, setPrecedingMicroDeformation ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, precedingMicroDeformation, secondOrderTensor, setPrecedingMicroDeformation ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingMicroDeformationdChi, floatVector, setdPrecedingMicroDeformationdChi ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingMicroDeformationdChi, fourthOrderTensor, setdPrecedingMicroDeformationdChi ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingMicroDeformationdChin, floatVector, setdPrecedingMicroDeformationdChin ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPrecedingMicroDeformation, floatVector, setPreviousPrecedingMicroDeformation ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPrecedingMicroDeformation, secondOrderTensor, setPreviousPrecedingMicroDeformation ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPrecedingMicroDeformationdChi, floatVector, setPreviousdPrecedingMicroDeformationdChi ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPrecedingMicroDeformationdChi, fourthOrderTensor, setPreviousdPrecedingMicroDeformationdChi ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPrecedingMicroDeformationdChin, floatVector, setPreviousdPrecedingMicroDeformationdChin ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, plasticMacroVelocityGradient, floatVector, setPlasticMacroVelocityGradient ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, plasticMacroVelocityGradient, secondOrderTensor, setPlasticMacroVelocityGradient ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPlasticMacroVelocityGradient, floatVector, setPreviousPlasticMacroVelocityGradient ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPlasticMacroVelocityGradient, secondOrderTensor, setPreviousPlasticMacroVelocityGradient ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMacroVelocityGradientdMacroStress, floatVector, setdPlasticMacroVelocityGradientdMacroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMacroVelocityGradientdMacroStress, fourthOrderTensor, setdPlasticMacroVelocityGradientdMacroStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticMacroVelocityGradientdMacroStress, floatVector, setPreviousdPlasticMacroVelocityGradientdMacroStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticMacroVelocityGradientdMacroStress, fourthOrderTensor, setPreviousdPlasticMacroVelocityGradientdMacroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMacroVelocityGradientdMicroStress, floatVector, setdPlasticMacroVelocityGradientdMicroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMacroVelocityGradientdMicroStress, fourthOrderTensor, setdPlasticMacroVelocityGradientdMicroStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticMacroVelocityGradientdMicroStress, floatVector, setPreviousdPlasticMacroVelocityGradientdMicroStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticMacroVelocityGradientdMicroStress, fourthOrderTensor, setPreviousdPlasticMacroVelocityGradientdMicroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMacroVelocityGradientdF, floatVector, setdPlasticMacroVelocityGradientdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMacroVelocityGradientdF, fourthOrderTensor, setdPlasticMacroVelocityGradientdF ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticMacroVelocityGradientdF, floatVector, setPreviousdPlasticMacroVelocityGradientdF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticMacroVelocityGradientdF, fourthOrderTensor, setPreviousdPlasticMacroVelocityGradientdF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMacroVelocityGradientdFn, floatVector, setdPlasticMacroVelocityGradientdFn ) @@ -1358,25 +1361,25 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticMacroVelocityGradientdStateVariables, floatVector, setPreviousdPlasticMacroVelocityGradientdStateVariables ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, plasticMicroVelocityGradient, floatVector, setPlasticMicroVelocityGradient ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, plasticMicroVelocityGradient, secondOrderTensor, setPlasticMicroVelocityGradient ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPlasticMicroVelocityGradient, floatVector, setPreviousPlasticMicroVelocityGradient ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPlasticMicroVelocityGradient, secondOrderTensor, setPreviousPlasticMicroVelocityGradient ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMicroVelocityGradientdMicroStress, floatVector, setdPlasticMicroVelocityGradientdMicroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMicroVelocityGradientdMicroStress, fourthOrderTensor, setdPlasticMicroVelocityGradientdMicroStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticMicroVelocityGradientdMicroStress, floatVector, setPreviousdPlasticMicroVelocityGradientdMicroStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticMicroVelocityGradientdMicroStress, fourthOrderTensor, setPreviousdPlasticMicroVelocityGradientdMicroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMicroVelocityGradientdF, floatVector, setdPlasticMicroVelocityGradientdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMicroVelocityGradientdF, fourthOrderTensor, setdPlasticMicroVelocityGradientdF ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticMicroVelocityGradientdF, floatVector, setPreviousdPlasticMicroVelocityGradientdF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticMicroVelocityGradientdF, fourthOrderTensor, setPreviousdPlasticMicroVelocityGradientdF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMicroVelocityGradientdFn, floatVector, setdPlasticMicroVelocityGradientdFn ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticMicroVelocityGradientdFn, floatVector, setPreviousdPlasticMicroVelocityGradientdFn ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMicroVelocityGradientdChi, floatVector, setdPlasticMicroVelocityGradientdChi ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMicroVelocityGradientdChi, fourthOrderTensor, setdPlasticMicroVelocityGradientdChi ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticMicroVelocityGradientdChi, floatVector, setPreviousdPlasticMicroVelocityGradientdChi ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticMicroVelocityGradientdChi, fourthOrderTensor, setPreviousdPlasticMicroVelocityGradientdChi ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMicroVelocityGradientdChin, floatVector, setdPlasticMicroVelocityGradientdChin ) @@ -1386,61 +1389,61 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticMicroVelocityGradientdStateVariables, floatVector, setPreviousdPlasticMicroVelocityGradientdStateVariables ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, precedingGradientMicroDeformation, floatVector, setPrecedingGradientMicroDeformation ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, precedingGradientMicroDeformation, thirdOrderTensor, setPrecedingGradientMicroDeformation ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingGradientMicroDeformationdFn, floatVector, setdPrecedingGradientMicroDeformationdFn ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingGradientMicroDeformationdChi, floatVector, setdPrecedingGradientMicroDeformationdChi ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingGradientMicroDeformationdChi, fifthOrderTensor, setdPrecedingGradientMicroDeformationdChi ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingGradientMicroDeformationdChin, floatVector, setdPrecedingGradientMicroDeformationdChin ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingGradientMicroDeformationdGradChi, floatVector, setdPrecedingGradientMicroDeformationdGradChi ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingGradientMicroDeformationdGradChi, sixthOrderTensor, setdPrecedingGradientMicroDeformationdGradChi ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPrecedingGradientMicroDeformationdGradChin, floatVector, setdPrecedingGradientMicroDeformationdGradChin ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPrecedingGradientMicroDeformation, floatVector, setPreviousPrecedingGradientMicroDeformation ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPrecedingGradientMicroDeformation, thirdOrderTensor, setPreviousPrecedingGradientMicroDeformation ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPrecedingGradientMicroDeformationdFn, floatVector, setPreviousdPrecedingGradientMicroDeformationdFn ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPrecedingGradientMicroDeformationdChi, floatVector, setPreviousdPrecedingGradientMicroDeformationdChi ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPrecedingGradientMicroDeformationdChi, fifthOrderTensor, setPreviousdPrecedingGradientMicroDeformationdChi ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPrecedingGradientMicroDeformationdChin, floatVector, setPreviousdPrecedingGradientMicroDeformationdChin ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPrecedingGradientMicroDeformationdGradChi, floatVector, setPreviousdPrecedingGradientMicroDeformationdGradChi ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPrecedingGradientMicroDeformationdGradChi, sixthOrderTensor, setPreviousdPrecedingGradientMicroDeformationdGradChi ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPrecedingGradientMicroDeformationdGradChin, floatVector, setPreviousdPrecedingGradientMicroDeformationdGradChin ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, plasticGradientMicroVelocityGradient, floatVector, setPlasticGradientMicroVelocityGradient ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, plasticGradientMicroVelocityGradient, thirdOrderTensor, setPlasticGradientMicroVelocityGradient ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPlasticGradientMicroVelocityGradient, floatVector, setPreviousPlasticGradientMicroVelocityGradient ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPlasticGradientMicroVelocityGradient, thirdOrderTensor, setPreviousPlasticGradientMicroVelocityGradient ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticGradientMicroVelocityGradientdMicroStress, floatVector, setdPlasticGradientMicroVelocityGradientdMicroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticGradientMicroVelocityGradientdMicroStress, fifthOrderTensor, setdPlasticGradientMicroVelocityGradientdMicroStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticGradientMicroVelocityGradientdMicroStress, floatVector, setPreviousdPlasticGradientMicroVelocityGradientdMicroStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticGradientMicroVelocityGradientdMicroStress, fifthOrderTensor, setPreviousdPlasticGradientMicroVelocityGradientdMicroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticGradientMicroVelocityGradientdHigherOrderStress, floatVector, setdPlasticGradientMicroVelocityGradientdHigherOrderStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticGradientMicroVelocityGradientdHigherOrderStress, sixthOrderTensor, setdPlasticGradientMicroVelocityGradientdHigherOrderStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticGradientMicroVelocityGradientdHigherOrderStress, floatVector, setPreviousdPlasticGradientMicroVelocityGradientdHigherOrderStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticGradientMicroVelocityGradientdHigherOrderStress, sixthOrderTensor, setPreviousdPlasticGradientMicroVelocityGradientdHigherOrderStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticGradientMicroVelocityGradientdF, floatVector, setdPlasticGradientMicroVelocityGradientdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticGradientMicroVelocityGradientdF, fifthOrderTensor, setdPlasticGradientMicroVelocityGradientdF ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticGradientMicroVelocityGradientdF, floatVector, setPreviousdPlasticGradientMicroVelocityGradientdF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticGradientMicroVelocityGradientdF, fifthOrderTensor, setPreviousdPlasticGradientMicroVelocityGradientdF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticGradientMicroVelocityGradientdFn, floatVector, setdPlasticGradientMicroVelocityGradientdFn ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticGradientMicroVelocityGradientdFn, floatVector, setPreviousdPlasticGradientMicroVelocityGradientdFn ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticGradientMicroVelocityGradientdChi, floatVector, setdPlasticGradientMicroVelocityGradientdChi ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticGradientMicroVelocityGradientdChi, fifthOrderTensor, setdPlasticGradientMicroVelocityGradientdChi ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticGradientMicroVelocityGradientdChi, floatVector, setPreviousdPlasticGradientMicroVelocityGradientdChi ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticGradientMicroVelocityGradientdChi, fifthOrderTensor, setPreviousdPlasticGradientMicroVelocityGradientdChi ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticGradientMicroVelocityGradientdChin, floatVector, setdPlasticGradientMicroVelocityGradientdChin ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticGradientMicroVelocityGradientdChin, floatVector, setPreviousdPlasticGradientMicroVelocityGradientdChin ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticGradientMicroVelocityGradientdGradChi, floatVector, setdPlasticGradientMicroVelocityGradientdGradChi ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticGradientMicroVelocityGradientdGradChi, sixthOrderTensor, setdPlasticGradientMicroVelocityGradientdGradChi ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticGradientMicroVelocityGradientdGradChi, floatVector, setPreviousdPlasticGradientMicroVelocityGradientdGradChi ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticGradientMicroVelocityGradientdGradChi, sixthOrderTensor, setPreviousdPlasticGradientMicroVelocityGradientdGradChi ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticGradientMicroVelocityGradientdGradChin, floatVector, setdPlasticGradientMicroVelocityGradientdGradChin ) @@ -1450,23 +1453,23 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousdPlasticGradientMicroVelocityGradientdStateVariables, floatVector, setPreviousdPlasticGradientMicroVelocityGradientdStateVariables ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, updatedPlasticDeformationGradient, floatVector, setUpdatedPlasticDeformationGradient ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, updatedPlasticDeformationGradient, secondOrderTensor, setUpdatedPlasticDeformationGradient ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, updatedPlasticMicroDeformation, floatVector, setUpdatedPlasticMicroDeformation ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, updatedPlasticMicroDeformation, secondOrderTensor, setUpdatedPlasticMicroDeformation ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, updatedPlasticGradientMicroDeformation, floatVector, setUpdatedPlasticGradientMicroDeformation ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, updatedPlasticGradientMicroDeformation, thirdOrderTensor, setUpdatedPlasticGradientMicroDeformation ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticDeformationGradientdMacroStress, floatVector, setdUpdatedPlasticDeformationGradientdMacroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticDeformationGradientdMacroStress, fourthOrderTensor, setdUpdatedPlasticDeformationGradientdMacroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticDeformationGradientdPreviousMacroStress, floatVector, setdUpdatedPlasticDeformationGradientdPreviousMacroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticDeformationGradientdPreviousMacroStress, fourthOrderTensor, setdUpdatedPlasticDeformationGradientdPreviousMacroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticDeformationGradientdMicroStress, floatVector, setdUpdatedPlasticDeformationGradientdMicroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticDeformationGradientdMicroStress, fourthOrderTensor, setdUpdatedPlasticDeformationGradientdMicroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticDeformationGradientdPreviousMicroStress, floatVector, setdUpdatedPlasticDeformationGradientdPreviousMicroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticDeformationGradientdPreviousMicroStress, fourthOrderTensor, setdUpdatedPlasticDeformationGradientdPreviousMicroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticDeformationGradientdF, floatVector, setdUpdatedPlasticDeformationGradientdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticDeformationGradientdF, fourthOrderTensor, setdUpdatedPlasticDeformationGradientdF ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticDeformationGradientdPreviousF, floatVector, setdUpdatedPlasticDeformationGradientdPreviousF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticDeformationGradientdPreviousF, fourthOrderTensor, setdUpdatedPlasticDeformationGradientdPreviousF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticDeformationGradientdFn, floatVector, setdUpdatedPlasticDeformationGradientdFn ) @@ -1476,21 +1479,21 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticDeformationGradientdPreviousStateVariables, floatVector, setdUpdatedPlasticDeformationGradientdPreviousStateVariables ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdMicroStress, floatVector, setdUpdatedPlasticMicroDeformationdMicroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdMicroStress, fourthOrderTensor, setdUpdatedPlasticMicroDeformationdMicroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdPreviousMicroStress, floatVector, setdUpdatedPlasticMicroDeformationdPreviousMicroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdPreviousMicroStress, fourthOrderTensor, setdUpdatedPlasticMicroDeformationdPreviousMicroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdF, floatVector, setdUpdatedPlasticMicroDeformationdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdF, fourthOrderTensor, setdUpdatedPlasticMicroDeformationdF ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdPreviousF, floatVector, setdUpdatedPlasticMicroDeformationdPreviousF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdPreviousF, fourthOrderTensor, setdUpdatedPlasticMicroDeformationdPreviousF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdFn, floatVector, setdUpdatedPlasticMicroDeformationdFn ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdPreviousFn, floatVector, setdUpdatedPlasticMicroDeformationdPreviousFn ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdChi, floatVector, setdUpdatedPlasticMicroDeformationdChi ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdChi, fourthOrderTensor, setdUpdatedPlasticMicroDeformationdChi ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdPreviousChi, floatVector, setdUpdatedPlasticMicroDeformationdPreviousChi ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdPreviousChi, fourthOrderTensor, setdUpdatedPlasticMicroDeformationdPreviousChi ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdChin, floatVector, setdUpdatedPlasticMicroDeformationdChin ) @@ -1500,37 +1503,37 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticMicroDeformationdPreviousStateVariables, floatVector, setdUpdatedPlasticMicroDeformationdPreviousStateVariables ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdMacroStress, floatVector, setdUpdatedPlasticGradientMicroDeformationdMacroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdMacroStress, fifthOrderTensor, setdUpdatedPlasticGradientMicroDeformationdMacroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdPreviousMacroStress, floatVector, setdUpdatedPlasticGradientMicroDeformationdPreviousMacroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdPreviousMacroStress, fifthOrderTensor, setdUpdatedPlasticGradientMicroDeformationdPreviousMacroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdMicroStress, floatVector, setdUpdatedPlasticGradientMicroDeformationdMicroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdMicroStress, fifthOrderTensor, setdUpdatedPlasticGradientMicroDeformationdMicroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdPreviousMicroStress, floatVector, setdUpdatedPlasticGradientMicroDeformationdPreviousMicroStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdPreviousMicroStress, fifthOrderTensor, setdUpdatedPlasticGradientMicroDeformationdPreviousMicroStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdHigherOrderStress, floatVector, setdUpdatedPlasticGradientMicroDeformationdHigherOrderStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdHigherOrderStress, sixthOrderTensor, setdUpdatedPlasticGradientMicroDeformationdHigherOrderStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdPreviousHigherOrderStress, floatVector, setdUpdatedPlasticGradientMicroDeformationdPreviousHigherOrderStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdPreviousHigherOrderStress, sixthOrderTensor, setdUpdatedPlasticGradientMicroDeformationdPreviousHigherOrderStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdF, floatVector, setdUpdatedPlasticGradientMicroDeformationdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdF, fifthOrderTensor, setdUpdatedPlasticGradientMicroDeformationdF ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdPreviousF, floatVector, setdUpdatedPlasticGradientMicroDeformationdPreviousF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdPreviousF, fifthOrderTensor, setdUpdatedPlasticGradientMicroDeformationdPreviousF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdFn, floatVector, setdUpdatedPlasticGradientMicroDeformationdFn ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdPreviousFn, floatVector, setdUpdatedPlasticGradientMicroDeformationdPreviousFn ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdChi, floatVector, setdUpdatedPlasticGradientMicroDeformationdChi ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdChi, fifthOrderTensor, setdUpdatedPlasticGradientMicroDeformationdChi ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdPreviousChi, floatVector, setdUpdatedPlasticGradientMicroDeformationdPreviousChi ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdPreviousChi, fifthOrderTensor, setdUpdatedPlasticGradientMicroDeformationdPreviousChi ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdChin, floatVector, setdUpdatedPlasticGradientMicroDeformationdChin ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdPreviousChin, floatVector, setdUpdatedPlasticGradientMicroDeformationdPreviousChin ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdGradChi, floatVector, setdUpdatedPlasticGradientMicroDeformationdGradChi ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdGradChi, sixthOrderTensor, setdUpdatedPlasticGradientMicroDeformationdGradChi ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdPreviousGradChi, floatVector, setdUpdatedPlasticGradientMicroDeformationdPreviousGradChi ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdPreviousGradChi, sixthOrderTensor, setdUpdatedPlasticGradientMicroDeformationdPreviousGradChi ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dUpdatedPlasticGradientMicroDeformationdGradChin, floatVector, setdUpdatedPlasticGradientMicroDeformationdGradChin ) diff --git a/src/cpp/tardigrade_hydraPeryznaViscoplasticity.h b/src/cpp/tardigrade_hydraPeryznaViscoplasticity.h index 3b91e94..5debd0e 100644 --- a/src/cpp/tardigrade_hydraPeryznaViscoplasticity.h +++ b/src/cpp/tardigrade_hydraPeryznaViscoplasticity.h @@ -446,43 +446,43 @@ namespace tardigradeHydra{ floatVector _parameters; - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, drivingStress, floatVector, setDrivingStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, drivingStress, secondOrderTensor, setDrivingStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousDrivingStress, floatVector, setPreviousDrivingStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousDrivingStress, secondOrderTensor, setPreviousDrivingStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dDrivingStressdCauchyStress, floatVector, setdDrivingStressdCauchyStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dDrivingStressdCauchyStress, fourthOrderTensor, setdDrivingStressdCauchyStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dDrivingStressdF, floatVector, setdDrivingStressdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dDrivingStressdF, fourthOrderTensor, setdDrivingStressdF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dDrivingStressdSubFs, floatVector, setdDrivingStressdSubFs ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousDrivingStressdPreviousCauchyStress, floatVector, setdPreviousDrivingStressdPreviousCauchyStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousDrivingStressdPreviousCauchyStress, fourthOrderTensor, setdPreviousDrivingStressdPreviousCauchyStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousDrivingStressdPreviousF, floatVector, setdPreviousDrivingStressdPreviousF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousDrivingStressdPreviousF, fourthOrderTensor, setdPreviousDrivingStressdPreviousF ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousDrivingStressdPreviousSubFs, floatVector, setdPreviousDrivingStressdPreviousSubFs ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, flowDirection, floatVector, setFlowDirection ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, flowDirection, secondOrderTensor, setFlowDirection ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousFlowDirection, floatVector, setPreviousFlowDirection ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousFlowDirection, secondOrderTensor, setPreviousFlowDirection ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dFlowDirectiondCauchyStress, floatVector, setdFlowDirectiondCauchyStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dFlowDirectiondCauchyStress, fourthOrderTensor, setdFlowDirectiondCauchyStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dFlowDirectiondF, floatVector, setdFlowDirectiondF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dFlowDirectiondF, fourthOrderTensor, setdFlowDirectiondF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dFlowDirectiondSubFs, floatVector, setdFlowDirectiondSubFs ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousFlowDirectiondPreviousCauchyStress, floatVector, setdPreviousFlowDirectiondPreviousCauchyStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousFlowDirectiondPreviousCauchyStress, fourthOrderTensor, setdPreviousFlowDirectiondPreviousCauchyStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousFlowDirectiondPreviousF, floatVector, setdPreviousFlowDirectiondPreviousF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousFlowDirectiondPreviousF, fourthOrderTensor, setdPreviousFlowDirectiondPreviousF ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousFlowDirectiondPreviousSubFs, floatVector, setdPreviousFlowDirectiondPreviousSubFs ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, yieldFunction, floatType, setYieldFunction ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dYieldFunctiondCauchyStress, floatVector, setdYieldFunctiondCauchyStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dYieldFunctiondCauchyStress, secondOrderTensor, setdYieldFunctiondCauchyStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dYieldFunctiondF, floatVector, setdYieldFunctiondF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dYieldFunctiondF, secondOrderTensor, setdYieldFunctiondF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dYieldFunctiondSubFs, floatVector, setdYieldFunctiondSubFs ) @@ -490,9 +490,9 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousYieldFunction, floatType, setPreviousYieldFunction ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousYieldFunctiondPreviousCauchyStress, floatVector, setdPreviousYieldFunctiondPreviousCauchyStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousYieldFunctiondPreviousCauchyStress, secondOrderTensor, setdPreviousYieldFunctiondPreviousCauchyStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousYieldFunctiondPreviousF, floatVector, setdPreviousYieldFunctiondPreviousF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousYieldFunctiondPreviousF, secondOrderTensor, setdPreviousYieldFunctiondPreviousF ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousYieldFunctiondPreviousSubFs, floatVector, setdPreviousYieldFunctiondPreviousSubFs ) @@ -524,9 +524,9 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, plasticMultiplier, floatType, setPlasticMultiplier ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMultiplierdCauchyStress, floatVector, setdPlasticMultiplierdCauchyStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMultiplierdCauchyStress, secondOrderTensor, setdPlasticMultiplierdCauchyStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMultiplierdF, floatVector, setdPlasticMultiplierdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMultiplierdF, secondOrderTensor, setdPlasticMultiplierdF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticMultiplierdSubFs, floatVector, setdPlasticMultiplierdSubFs ) @@ -536,9 +536,9 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousPlasticMultiplier, floatType, setPreviousPlasticMultiplier ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousPlasticMultiplierdPreviousCauchyStress, floatVector, setdPreviousPlasticMultiplierdPreviousCauchyStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousPlasticMultiplierdPreviousCauchyStress, secondOrderTensor, setdPreviousPlasticMultiplierdPreviousCauchyStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousPlasticMultiplierdPreviousF, floatVector, setdPreviousPlasticMultiplierdPreviousF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousPlasticMultiplierdPreviousF, secondOrderTensor, setdPreviousPlasticMultiplierdPreviousF ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousPlasticMultiplierdPreviousSubFs, floatVector, setdPreviousPlasticMultiplierdPreviousSubFs ) @@ -546,27 +546,27 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousPlasticMultiplierdPreviousStateVariables, floatVector, setdPreviousPlasticMultiplierdPreviousStateVariables ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, velocityGradient, floatVector, setVelocityGradient ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, velocityGradient, secondOrderTensor, setVelocityGradient ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVelocityGradientdCauchyStress, floatVector, setdVelocityGradientdCauchyStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVelocityGradientdCauchyStress, fourthOrderTensor, setdVelocityGradientdCauchyStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVelocityGradientdF, floatVector, setdVelocityGradientdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVelocityGradientdF, fourthOrderTensor, setdVelocityGradientdF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVelocityGradientdSubFs, floatVector, setdVelocityGradientdSubFs ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVelocityGradientdT, floatVector, setdVelocityGradientdT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVelocityGradientdT, secondOrderTensor, setdVelocityGradientdT ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dVelocityGradientdStateVariables, floatVector, setdVelocityGradientdStateVariables ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousVelocityGradient, floatVector, setPreviousVelocityGradient ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, previousVelocityGradient, secondOrderTensor, setPreviousVelocityGradient ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousVelocityGradientdPreviousCauchyStress, floatVector, setdPreviousVelocityGradientdPreviousCauchyStress ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousVelocityGradientdPreviousCauchyStress, fourthOrderTensor, setdPreviousVelocityGradientdPreviousCauchyStress ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousVelocityGradientdPreviousF, floatVector, setdPreviousVelocityGradientdPreviousF ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousVelocityGradientdPreviousF, fourthOrderTensor, setdPreviousVelocityGradientdPreviousF ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousVelocityGradientdPreviousSubFs, floatVector, setdPreviousVelocityGradientdPreviousSubFs ) - TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousVelocityGradientdPreviousT, floatVector, setdPreviousVelocityGradientdPreviousT ) + TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousVelocityGradientdPreviousT, secondOrderTensor, setdPreviousVelocityGradientdPreviousT ) TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousVelocityGradientdPreviousStateVariables, floatVector, setdPreviousVelocityGradientdPreviousStateVariables ) @@ -594,25 +594,25 @@ namespace tardigradeHydra{ TARDIGRADE_HYDRA_DECLARE_PREVIOUS_STORAGE( private, dPreviousStateVariableEvolutionRatesdPreviousStateVariables, floatVector, setdPreviousStateVariableEvolutionRatesdPreviousStateVariables ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, plasticDeformationGradient, floatVector, setPlasticDeformationGradient ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, plasticDeformationGradient, secondOrderTensor, setPlasticDeformationGradient ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdCauchyStress, floatVector, setdPlasticDeformationGradientdCauchyStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdCauchyStress, fourthOrderTensor, setdPlasticDeformationGradientdCauchyStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdF, floatVector, setdPlasticDeformationGradientdF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdF, fourthOrderTensor, setdPlasticDeformationGradientdF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdSubFs, floatVector, setdPlasticDeformationGradientdSubFs ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdT, floatVector, setdPlasticDeformationGradientdT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdT, secondOrderTensor, setdPlasticDeformationGradientdT ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdStateVariables, floatVector, setdPlasticDeformationGradientdStateVariables ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdPreviousCauchyStress, floatVector, setdPlasticDeformationGradientdPreviousCauchyStress ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdPreviousCauchyStress, fourthOrderTensor, setdPlasticDeformationGradientdPreviousCauchyStress ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdPreviousF, floatVector, setdPlasticDeformationGradientdPreviousF ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdPreviousF, fourthOrderTensor, setdPlasticDeformationGradientdPreviousF ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdPreviousSubFs, floatVector, setdPlasticDeformationGradientdPreviousSubFs ) - TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdPreviousT, floatVector, setdPlasticDeformationGradientdPreviousT ) + TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdPreviousT, secondOrderTensor, setdPlasticDeformationGradientdPreviousT ) TARDIGRADE_HYDRA_DECLARE_ITERATION_STORAGE( private, dPlasticDeformationGradientdPreviousStateVariables, floatVector, setdPlasticDeformationGradientdPreviousStateVariables )