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];
72 autodiff::Real< k, double > tau_( tau * k );
73 val_ *= autodiff::derivatives( phi, autodiff::along( 1. ), autodiff::at( tau_ ) )[k];
79 { 1e-14, tauMin / sqrt( 10. ) },
88 bool gaussQuadrature =
false )
90 Properties elasticModuli( retardationTimes.size() );
91 double spacing = log( retardationTimes( 1 ) / retardationTimes( 0 ) );
93 for (
int i = 0; i < retardationTimes.size(); i++ ) {
94 double tau = retardationTimes( i );
95 if ( !gaussQuadrature )
96 elasticModuli( i ) = 1. / ( spacing * evaluatePostWidderFormula< k >( phi, tau ) );
98 elasticModuli( i ) = 1. / ( spacing / 2. *
99 ( evaluatePostWidderFormula< k >( phi, tau * pow( 10., -sqrt( 3. ) / 6. ) ) +
100 evaluatePostWidderFormula< k >( phi, tau * pow( 10., sqrt( 3. ) / 6. ) ) ) );
103 return elasticModuli;
111 Eigen::Ref< StateVarMatrix > stateVars,
119 double& uniaxialCompliance,
121 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
void updateStateVarMatrix(const double dT, Properties elasticModuli, Properties retardationTimes, Eigen::Ref< StateVarMatrix > stateVars, const Marmot::Vector6d &dStress, const Marmot::Matrix6d &unitComplianceMatrix)
double approximateZerothCompliance(std::function< autodiff::Real< k, double >(autodiff::Real< k, double >) > phi, double tauMin)
Definition: MarmotKelvinChain.h:67
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:86
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