Go to the documentation of this file.
31 #include "autodiff/forward/real.hpp"
36 namespace KelvinChain {
59 autodiff::Real< k, double > tau_( tau * k );
62 val *= autodiff::derivatives( phi, autodiff::along( 1. ), autodiff::at( tau_ ) )[k];
69 double spacing = 10. )
73 autodiff::Real< k, double > tau_( tau * k );
74 val_ *= autodiff::derivatives( phi, autodiff::along( 1. ), autodiff::at( tau_ ) )[k];
80 { 1e-14, tauMin / sqrt( spacing ) },
89 bool gaussQuadrature =
false )
91 Properties elasticModuli( retardationTimes.size() );
92 double spacing = retardationTimes( 1 ) / retardationTimes( 0 );
94 for (
int i = 0; i < retardationTimes.size(); i++ ) {
95 double tau = retardationTimes( i );
96 if ( !gaussQuadrature ) {
97 elasticModuli( i ) = 1. / ( log( spacing ) * evaluatePostWidderFormula< k >( phi, tau ) );
100 elasticModuli( i ) = 1. /
101 ( log( spacing ) / 2. *
102 ( evaluatePostWidderFormula< k >( phi, tau * pow( spacing, -sqrt( 3. ) / 6. ) ) +
103 evaluatePostWidderFormula< k >( phi, tau * pow( spacing, sqrt( 3. ) / 6. ) ) ) );
107 return elasticModuli;
115 Eigen::Ref< StateVarMatrix > stateVars,
123 double& uniaxialCompliance,
125 const double factor );
double evaluatePostWidderFormula(std::function< autodiff::Real< k, double >(autodiff::Real< k, double >) > phi, double tau)
Definition: MarmotKelvinChain.h:55
void evaluateKelvinChain(const double dT, Properties elasticModuli, Properties retardationTimes, StateVarMatrix stateVars, double &uniaxialCompliance, Marmot::Vector6d &dStrain, const double factor)
Definition: MarmotKelvinChain.cpp:18
void computeLambdaAndBeta(double dT, double tau, double &lambda, double &beta)
Definition: MarmotKelvinChain.cpp:57
@ simpson
Definition: MarmotNumericalIntegration.h:37
Eigen::Map< StateVarMatrix > mapStateVarMatrix
Definition: MarmotKelvinChain.h:42
Eigen::Matrix< double, 6, 6 > Matrix6d
Definition: MarmotTypedefs.h:35
Definition: MarmotKelvinChain.h:34
Eigen::Map< Properties > mapProperties
Definition: MarmotKelvinChain.h:39
double approximateZerothCompliance(std::function< autodiff::Real< k, double >(autodiff::Real< k, double >) > phi, double tauMin, double spacing=10.)
Definition: MarmotKelvinChain.h:67
void updateStateVarMatrix(const double dT, Properties elasticModuli, Properties retardationTimes, Eigen::Ref< StateVarMatrix > stateVars, const Marmot::Vector6d &dStress, const Marmot::Matrix6d &unitComplianceMatrix)
double integrateScalarFunction(scalar_to_scalar_function_type f, const std::tuple< double, double > integrationLimits, const int n, const integrationRule intRule)
Definition: MarmotNumericalIntegration.cpp:8
Properties computeElasticModuli(std::function< autodiff::Real< k, double >(autodiff::Real< k, double >) > phi, Properties retardationTimes, bool gaussQuadrature=false)
Definition: MarmotKelvinChain.h:87
Properties generateRetardationTimes(int n, double min, double spacing)
Definition: MarmotKelvinChain.cpp:10
Eigen::Matrix< double, 6, Eigen::Dynamic > StateVarMatrix
Definition: MarmotKelvinChain.h:41
Eigen::VectorXd Properties
Definition: MarmotKelvinChain.h:38
Eigen::Matrix< double, 6, 1 > Vector6d
Definition: MarmotTypedefs.h:43
std::function< double(const double x) > scalar_to_scalar_function_type
Definition: MarmotNumericalIntegration.h:35
@ value
Definition: MarmotKelvinChain.h:46
Definition: MarmotKelvinChain.h:45
NSized N(double xi)
Definition: MarmotFiniteElement1D.cpp:15