|
| | Integrator (unsigned=0) |
| |
| | Integrator (const Integrator &)=delete |
| |
| | Integrator (Integrator &&)=delete |
| |
| Integrator & | operator= (const Integrator &)=delete |
| |
| Integrator & | operator= (Integrator &&)=delete |
| |
| | ~Integrator () override |
| |
| void | set_domain (const weak_ptr< DomainBase > &) |
| |
| const weak_ptr< DomainBase > & | get_domain () const |
| |
| virtual int | initialize () |
| |
| void | set_time_step_switch (bool) |
| |
| bool | allow_to_change_time_step () const |
| |
| virtual int | process_load () |
| |
| virtual int | process_constraint () |
| |
| virtual int | process_criterion () |
| |
| virtual int | process_modifier () |
| |
| virtual int | process_load_resistance () |
| |
| virtual int | process_constraint_resistance () |
| |
| void | record () const |
| |
| virtual void | assemble_resistance () |
| |
| virtual void | assemble_matrix () |
| |
| virtual vec | get_force_residual () |
| |
| virtual vec | get_displacement_residual () |
| |
| virtual vec | get_auxiliary_residual () |
| |
| virtual sp_mat | get_reference_load () |
| |
| virtual sp_mat | get_auxiliary_stiffness () |
| |
| virtual void | update_load () |
| |
| virtual void | update_constraint () |
| |
| virtual void | update_trial_load_factor (double) |
| |
| virtual void | update_trial_load_factor (const vec &) |
| |
| virtual void | update_trial_displacement (const vec &) |
| |
| void | update_trial_time (double) |
| |
| void | update_incre_time (double) |
| |
| virtual int | update_trial_status () |
| |
| virtual int | update_incre_status () |
| |
| virtual int | update_internal (const mat &) |
| |
| mat | solve (const mat &) |
| |
| mat | solve (const sp_mat &) |
| |
| mat | solve (mat &&) |
| |
| mat | solve (sp_mat &&) |
| |
| virtual int | solve (mat &, const mat &) |
| |
| virtual int | solve (mat &, const sp_mat &) |
| |
| virtual int | solve (mat &, mat &&) |
| |
| virtual int | solve (mat &, sp_mat &&) |
| |
| virtual void | erase_machine_error () const |
| |
| virtual void | stage_and_commit_status () |
| |
| virtual void | stage_status () |
| |
| virtual void | commit_status () |
| |
| virtual void | clear_status () |
| |
| virtual void | reset_status () |
| |
| virtual void | update_parameter (double) |
| |
| virtual void | update_compatibility () const |
| |
| virtual vec | from_incre_velocity (const vec &, const uvec &) |
| |
| virtual vec | from_incre_acceleration (const vec &, const uvec &) |
| |
| vec | from_total_velocity (const vec &, const uvec &) |
| |
| vec | from_total_acceleration (const vec &, const uvec &) |
| |
| vec | from_incre_velocity (double, const uvec &) |
| |
| vec | from_incre_acceleration (double, const uvec &) |
| |
| vec | from_total_velocity (double, const uvec &) |
| |
| vec | from_total_acceleration (double, const uvec &) |
| |
| | Tag (unsigned=0) |
| |
| | Tag (const Tag &)=default |
| |
| | Tag (Tag &&)=default |
| |
| Tag & | operator= (const Tag &)=delete |
| |
| Tag & | operator= (Tag &&)=delete |
| |
| virtual | ~Tag ()=default |
| |
| void | set_tag (unsigned) const |
| |
| unsigned | get_tag () const |
| |
| void | enable () |
| |
| void | disable () |
| |
| void | guard () |
| |
| void | unguard () |
| |
| bool | is_active () const |
| |
| bool | is_guarded () const |
| |
| virtual void | print () |
| |
The Integrator class is basically a wrapper of the DomainBase class with regard to some status changing methods.
By default, the Step object calls DomainBase(Workshop) object to update displacement/resistance/stiffness independently. When it comes to dynamic analysis (time integration is involved), it is necessary to compute the equivalent load/stiffness by combining several quantities.
The Integrator object is acting like an agent between Workshop and Step, that can modify corresponding quantities to account for dynamic effect.
- Author
- tlc
- Date
- 27/08/2017
- Version
- 0.1.2
| vec Integrator::from_incre_acceleration |
( |
const vec & |
, |
|
|
const uvec & |
encoding |
|
) |
| |
|
virtual |
When external loads are applied, they can be applied in forms of displacement/velocity/acceleration. The time integration methods, by default, form effective stiffness matrices in displacement domain. That is, in AX=B, A is the effective stiffness matrix and X is the displacement increment. Thus, loads in velocity/acceleration must be converted to displacement. This cannot be done arbitrarily due to compatibility issues. This method takes acceleration increment and converts it to displacement increment.
Reimplemented in Newmark, GSSSS, GeneralizedAlpha, and BatheTwoStep.
| vec Integrator::from_incre_velocity |
( |
const vec & |
, |
|
|
const uvec & |
encoding |
|
) |
| |
|
virtual |
When external loads are applied, they can be applied in forms of displacement/velocity/acceleration. The time integration methods, by default, form effective stiffness matrices in displacement domain. That is, in AX=B, A is the effective stiffness matrix and X is the displacement increment. Thus, loads in velocity/acceleration must be converted to displacement. This cannot be done arbitrarily due to compatibility issues. This method takes velocity increment and converts it to displacement increment.
Reimplemented in Newmark, GSSSS, GeneralizedAlpha, and BatheTwoStep.
| int Integrator::process_constraint |
( |
| ) |
|
|
virtual |
The main task of this method is to apply constraints (of various forms implemented in various methods). Combinations of different types need to be considered: 1) homogeneous, 2) inhomogeneous, 3) linear, 4) nonlinear. Combinations of different methods need to be considered: 1) penalty, 2) multiplier. On exit, the global stiffness matrix should be updated, the global residual vector should be updated.
Reimplemented in WilsonPenzienNewmark, LeeNewmarkFull, LeeNewmark, GSSSS, and GeneralizedAlpha.
| void Integrator::update_compatibility |
( |
| ) |
const |
|
virtual |
Make sure that the trial displacement/velocity/acceleration are consistent with each other. When starting a new trial state, the trial displacement is identical to the current displacement. This essentially means that the displacement increment is zero. To have such a trial state with the given time step, the trial velocity and acceleration shall be updated to be compatible with the trial displacement.
On exit, trial velocity and acceleration should be computed from current/trial displacement.
Reimplemented in Newmark, GSSSS, GeneralizedAlpha, and BatheTwoStep.