Virtual class for defining how the solution between two steps is going to be carried out.
More...
#include <Algorithm.hpp>
Virtual class for defining how the solution between two steps is going to be carried out.
- See also
- Linear.hpp NewtonRaphson.hpp
◆ Algorithm()
Algorithm::Algorithm |
( |
const std::shared_ptr< Mesh > & |
mesh, |
|
|
unsigned int |
flag = 1 , |
|
|
double |
NormFactor = 1.0 |
|
) |
| |
◆ ~Algorithm()
virtual Algorithm::~Algorithm |
( |
| ) |
|
|
pure virtual |
◆ ComputeConvergence()
double Algorithm::ComputeConvergence |
( |
const Eigen::VectorXd & |
Force, |
|
|
const Eigen::VectorXd & |
Delta, |
|
|
const Eigen::VectorXd & |
delta, |
|
|
unsigned int |
k |
|
) |
| |
Computes convergence tests for this algorithm.
- Parameters
-
Force | The residual force vector. |
Delta | The accumulated incremental displacement vector. |
delta | The incremental displacement vector . |
isFirstIteration | Whether this step in Algorithm is the first iteration. |
- Note
- If Algorithm::flag = 1: Unbalanced Force Norm.
-
If Algorithm::flag = 2: Increment Displacement Norm.
-
If Algorithm::flag = 3: Energy Incremental Norm.
-
If Algorithm::flag = 4: Relative Unbalanced Force Norm.
-
If Algorithm::flag = 5: Relative Incremental Displacement Norm.
-
If Algorithm::flag = 6: Relative Energy Incremental Norm.
-
If Algorithm::flag = 7: Total Relative Increment Displacement Norm.
-
If Algorithm::flag = 8: Maximum Number of Iterations.
◆ ComputeNewIncrement()
virtual bool Algorithm::ComputeNewIncrement |
( |
std::shared_ptr< Mesh > & |
mesh, |
|
|
unsigned int |
i |
|
) |
| |
|
pure virtual |
Computes a new incremental solution.
- Parameters
-
mesh | The finite element Mesh object. |
i | The time step number to be solved. |
- Returns
- Whether or not the algorithm was successful.
Implemented in NewtonRaphson, and Linear.
◆ GetDisplacementIncrement()
virtual const Eigen::VectorXd& Algorithm::GetDisplacementIncrement |
( |
| ) |
|
|
pure virtual |
Gets the displacement increment.
- Returns
- The incremental displacement vector.
Implemented in NewtonRaphson, and Linear.
◆ ReducedParallelResidual()
void Algorithm::ReducedParallelResidual |
( |
const Eigen::VectorXd & |
Feff, |
|
|
double & |
Residual |
|
) |
| |
Construct the residual vector force from each processor.
- Parameters
-
Feff | The residual vector in this partition. |
Residual | The value of the residual vector norm. |
- Note
- In parallel execution Feff is gathered across processors.
◆ ReverseStatesIncrements()
void Algorithm::ReverseStatesIncrements |
( |
std::shared_ptr< Mesh > & |
mesh | ) |
|
◆ SetIntegrator()
virtual void Algorithm::SetIntegrator |
( |
std::shared_ptr< Integrator > & |
integrator | ) |
|
|
pure virtual |
Sets the integrator for this algorithm.
- Parameters
-
integrator | Pointer to the Integrator to obtain the effective stiffness and force. |
Implemented in NewtonRaphson, and Linear.
◆ SetLoadFactor()
virtual void Algorithm::SetLoadFactor |
( |
double |
factor | ) |
|
|
pure virtual |
Set the load factor.
- Parameters
-
factor | The incremental load factor. |
Implemented in NewtonRaphson, and Linear.
◆ UpdateStatesIncrements()
void Algorithm::UpdateStatesIncrements |
( |
std::shared_ptr< Mesh > & |
mesh, |
|
|
const Eigen::VectorXd & |
dU |
|
) |
| |
◆ flag
unsigned int Algorithm::flag |
|
private |
Convergence test to be performed.
◆ NormFactor
double Algorithm::NormFactor |
|
private |
Relative Unbalanced Factor.
◆ Total2FreeMatrix
Eigen::SparseMatrix<double> Algorithm::Total2FreeMatrix |
|
protected |