Go to the documentation of this file.
42 template <
int sizeMaterialState >
85 double minimumStepSize,
87 double scaleDownFactor,
88 int nPassesToIncrease )
89 : initialStepSize( initialStepSize ),
90 minimumStepSize( minimumStepSize ),
91 scaleUpFactor( scaleUpFactor ),
92 scaleDownFactor( scaleDownFactor ),
93 nPassesToIncrease( nPassesToIncrease ),
94 currentProgress( 0.0 ),
95 currentSubstepSize( initialStepSize ),
106 return currentProgress >= 1.0;
112 if ( passedSubsteps >= nPassesToIncrease )
113 currentSubstepSize *= scaleUpFactor;
115 const double remainingProgress = 1.0 - currentProgress;
116 if ( remainingProgress < currentSubstepSize )
117 currentSubstepSize = remainingProgress;
120 currentProgress += currentSubstepSize;
122 return currentSubstepSize;
128 return currentProgress - currentSubstepSize;
134 currentProgress -= currentSubstepSize;
137 currentSubstepSize *= scaleDownFactor;
139 if ( currentSubstepSize < minimumStepSize )
149 elasticTangent.topLeftCorner( 6, 6 ) = CelT;
150 consistentTangent += currentSubstepSize * elasticTangent;
157 extendConsistentTangent( CelT );
158 consistentTangent.applyOnTheLeft( matTangent );
164 return consistentTangent.topLeftCorner( 6, 6 );
Definition: PerezFougetSubstepperTime.h:43
Eigen::Matrix< double, sizeMaterialState, sizeMaterialState > TangentSizedMatrix
Matrix to carry the Jacobian of a material state.
Definition: PerezFougetSubstepperTime.h:47
double currentProgress
Definition: PerezFougetSubstepperTime.h:71
const double scaleDownFactor
Definition: PerezFougetSubstepperTime.h:68
Definition: MarmotNumericalDifferentiation.h:34
void extendConsistentTangent(const Matrix6d &CelT)
Definition: PerezFougetSubstepperTime.h:146
int passedSubsteps
Definition: PerezFougetSubstepperTime.h:73
const int nPassesToIncrease
Definition: PerezFougetSubstepperTime.h:69
double getFinishedProgress()
get the total finished progress of the subincrementation process
Definition: PerezFougetSubstepperTime.h:126
Eigen::Matrix< double, 6, 6 > Matrix6d
Definition: MarmotTypedefs.h:35
Matrix6d consistentStiffness()
Definition: PerezFougetSubstepperTime.h:162
static bool notificationToMSG(const std::string &message)
double getNextSubstep()
get the next subincrement size
Definition: PerezFougetSubstepperTime.h:110
const double scaleUpFactor
Definition: PerezFougetSubstepperTime.h:68
const double initialStepSize
Definition: PerezFougetSubstepperTime.h:68
PerezFougetSubstepperTime(double initialStepSize, double minimumStepSize, double scaleUpFactor, double scaleDownFactor, int nPassesToIncrease)
Definition: PerezFougetSubstepperTime.h:84
bool decreaseSubstepSize()
decrease the next subincrement
Definition: PerezFougetSubstepperTime.h:132
bool isFinished()
Check if the subincrementation has finished.
Definition: PerezFougetSubstepperTime.h:104
const double minimumStepSize
Definition: PerezFougetSubstepperTime.h:68
TangentSizedMatrix consistentTangent
Definition: PerezFougetSubstepperTime.h:76
double currentSubstepSize
Definition: PerezFougetSubstepperTime.h:72
TangentSizedMatrix elasticTangent
Definition: PerezFougetSubstepperTime.h:75
static bool warningToMSG(const std::string &message)