Description
Nonlinear static analysis for a mechanism that is rotating/moving in steady state.
If SetAutomaticSpeedAndAccelerationComputation(true), the rotation/movement, if any, is automaticlally assigned via rheonomic constraints. Example, an elastic turbine blade that rotates via a ChLinkMotorRotationAngle: the motor will impose a steady state rotation that creates centrifugal forces, so the analysis will generate an elongated blade (the ChStaticNonLinearAnalysis cannot capture centrifugal and gyroscopical effects because it resets all speeds/acceleration to zero during its iteration). WARNING at the moment this is ok only for undeformed finite elements! If SetAutomaticSpeedAndAccelerationComputation(false), it is up to you to provide an iteration callback that keeps the speeds and accelerations updated as needed.
#include <ChStaticAnalysis.h>
Classes | |
class | IterationCallback |
Class to be used as a callback interface for updating the system at each iteration, for example for incrementing the load or for updating the speeds and accelerations of the parts. More... | |
Public Member Functions | |
ChStaticNonLinearRheonomicAnalysis (ChIntegrableIIorder &integrable) | |
virtual void | StaticAnalysis () override |
Performs the static analysis, doing a non-linear solve. | |
void | SetVerbose (bool verbose) |
Enable/disable verbose output (default: false) | |
void | SetMaxIterations (int max_iters) |
Set the max number of iterations for the Newton Raphson procedure (default: 10). | |
void | SetIncrementalSteps (int incr_steps) |
Set the number of steps that, for the first iterations, make the residual grow linearly (default: 6). More... | |
void | SetCorrectionTolerance (double reltol, double abstol) |
Set stopping criteria based on WRMS norm of correction and the specified relative and absolute tolerances. More... | |
void | SetResidualTolerance (double tol) |
Set stopping criteria based on norm of residual and the specified tolerance. More... | |
int | GetMaxIterations () const |
Get the max number of iterations for the Newton Raphson procedure. | |
int | GetIncrementalSteps () const |
Set the number of steps that, for the first iterations, make the residual grow linearly. | |
void | SetCallbackIterationBegin (std::shared_ptr< IterationCallback > my_callback) |
Set the callback to be called at each iteration. | |
void | SetAutomaticSpeedAndAccelerationComputation (bool mv) |
If enabled, the algorithm automatically computes the speed and accelerations of the system by using the rheonomic constraints. More... | |
Public Member Functions inherited from chrono::ChStaticAnalysis | |
ChStaticAnalysis (ChIntegrableIIorder &integrable) | |
ChIntegrable * | GetIntegrable () |
Get the integrable object. | |
const ChState & | GetX () const |
Access the state, position part, at current analysis. | |
const ChVectorDynamic & | GetL () const |
Access the Lagrange multipliers, if any. | |
Additional Inherited Members | |
Protected Attributes inherited from chrono::ChStaticAnalysis | |
ChIntegrableIIorder * | m_integrable |
ChState | X |
ChVectorDynamic | L |
Member Function Documentation
◆ SetAutomaticSpeedAndAccelerationComputation()
|
inline |
If enabled, the algorithm automatically computes the speed and accelerations of the system by using the rheonomic constraints.
WARNING!!! this is working only for non-stretched finite elements at the moment! If not enabled, as by default, you can use an IterationCallback to update the speeds and accelerations using your c++ code.
◆ SetCorrectionTolerance()
void chrono::ChStaticNonLinearRheonomicAnalysis::SetCorrectionTolerance | ( | double | reltol, |
double | abstol | ||
) |
Set stopping criteria based on WRMS norm of correction and the specified relative and absolute tolerances.
This is the default, with reltol = 1e-4, abstol = 1e-8. The Newton Raphson procedure is stopped if the WRMS norm of the correction vector (based on the current state) is less than 1.
◆ SetIncrementalSteps()
void chrono::ChStaticNonLinearRheonomicAnalysis::SetIncrementalSteps | ( | int | incr_steps | ) |
Set the number of steps that, for the first iterations, make the residual grow linearly (default: 6).
If =0, no incremental application of residual, so it is a classic Newton Raphson iteration, otherwise acts as a continuation strategy. For values > 0 , it might help convergence. Must be less than maxiters.
◆ SetResidualTolerance()
void chrono::ChStaticNonLinearRheonomicAnalysis::SetResidualTolerance | ( | double | tol | ) |
Set stopping criteria based on norm of residual and the specified tolerance.
The Newton Raphson is stopped when the infinity norm of the residual is below the tolerance.
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono/timestepper/ChStaticAnalysis.h
- /builds/uwsbel/chrono/src/chrono/timestepper/ChStaticAnalysis.cpp