A ConditionalModifier class.
More...
#include <ConditionalModifier.h>
|
| ConditionalModifier (unsigned, unsigned, unsigned, uvec &&, uvec &&) |
|
virtual int | initialize (const shared_ptr< DomainBase > &) |
|
virtual int | process (const shared_ptr< DomainBase > &)=0 |
| This method provides all necessary pieces of typical constraints/loads required, including additional blocks in original global stiffness, border matrix resistance of multiplier, external loads. More...
|
|
virtual int | process_resistance (const shared_ptr< DomainBase > &) |
| For some algorithms, the global stiffness is formed only once in each substep. After calling solver, the storage may contain factorization. It is not correct to modify it in those algorithms. This method should provide updated constraint/load resistance but must not touch global stiffness. More...
|
|
virtual void | stage (const shared_ptr< DomainBase > &) |
| Some algorithms needs to manually modify some variables after solving. Typical example is the predictor–corrector type algorithms. This method is called before committing trial status to perform necessary operations. More...
|
|
const uvec & | get_node_encoding () const |
|
const uvec & | get_dof_encoding () const |
|
void | set_initialized (bool) const |
|
bool | is_initialized () const |
|
void | set_start_step (unsigned) |
|
unsigned | get_start_step () const |
|
void | set_end_step (unsigned) |
|
unsigned | get_end_step () const |
|
void | set_connected (bool) const |
| Some constraints may modify global stiffness matrix so that it needs to be treated as an element which may affect bandwidth of banded storage. By calling this method, the RCM reordering algorithm will take this constraint into consideration. Make sure it is called in the constructor. More...
|
|
bool | is_connected () const |
|
bool | validate_step (const shared_ptr< DomainBase > &) const |
|
virtual void | update_status (const vec &) |
|
virtual void | commit_status () |
|
virtual void | clear_status () |
|
virtual void | reset_status () |
|
| 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 () |
|
A ConditionalModifier class.
The ConditionalModifier class.
TODO: update node/element tags from groups need to be done in each iteration
- Author
- tlc
- Date
- 07/03/2021
- Version
- 0.1.0
◆ ConditionalModifier()
ConditionalModifier::ConditionalModifier |
( |
unsigned |
T, |
|
|
unsigned |
ST, |
|
|
unsigned |
AT, |
|
|
uvec && |
N, |
|
|
uvec && |
D |
|
) |
| |
◆ clear_status()
void ConditionalModifier::clear_status |
( |
| ) |
|
|
virtual |
◆ commit_status()
void ConditionalModifier::commit_status |
( |
| ) |
|
|
virtual |
◆ get_all_nodal_active_dof()
uvec ConditionalModifier::get_all_nodal_active_dof |
( |
const shared_ptr< DomainBase > & |
D | ) |
|
|
protected |
Generate active DoF vector from all nodes in the model.
- Returns
- vector of active DoFs
◆ get_dof_encoding()
const uvec & ConditionalModifier::get_dof_encoding |
( |
| ) |
const |
◆ get_end_step()
unsigned ConditionalModifier::get_end_step |
( |
| ) |
const |
◆ get_nodal_active_dof()
uvec ConditionalModifier::get_nodal_active_dof |
( |
const shared_ptr< DomainBase > & |
D | ) |
|
|
protected |
Generate active DoF vector from assigned nodes.
- Returns
- vector of active DoFs
◆ get_node_encoding()
const uvec & ConditionalModifier::get_node_encoding |
( |
| ) |
const |
◆ get_start_step()
unsigned ConditionalModifier::get_start_step |
( |
| ) |
const |
◆ initialize()
int ConditionalModifier::initialize |
( |
const shared_ptr< DomainBase > & |
D | ) |
|
|
virtual |
Reimplemented in GroupPenaltyBC, Embed, FixedLength, MPC, NodeFacet, NodeLine, ParticleCollision, RestitutionWallPenalty, RigidWallMultiplier, GroupBodyForce, GroupNodalDisplacement, GroupNodalForce, LineUDL, NodalDisplacement, and SupportMotion.
◆ is_connected()
bool ConditionalModifier::is_connected |
( |
| ) |
const |
◆ is_initialized()
bool ConditionalModifier::is_initialized |
( |
| ) |
const |
◆ process()
virtual int ConditionalModifier::process |
( |
const shared_ptr< DomainBase > & |
| ) |
|
|
pure virtual |
This method provides all necessary pieces of typical constraints/loads required, including additional blocks in original global stiffness, border matrix resistance of multiplier, external loads.
- Returns
- success flag
Implemented in GroupMultiplierBC, GroupPenaltyBC, MultiplierBC, PenaltyBC, Embed, FixedLength, MaxForce, MPC, NodeFacet, NodeLine, ParticleCollision, RestitutionWallPenalty, RigidWallMultiplier, RigidWallPenalty, BodyForce, LineUDL2D, LineUDL3D, NodalAcceleration, NodalDisplacement, NodalForce, ReferenceForce, SupportDisplacement, SupportVelocity, and SupportAcceleration.
◆ process_resistance()
int ConditionalModifier::process_resistance |
( |
const shared_ptr< DomainBase > & |
D | ) |
|
|
virtual |
For some algorithms, the global stiffness is formed only once in each substep. After calling solver, the storage may contain factorization. It is not correct to modify it in those algorithms. This method should provide updated constraint/load resistance but must not touch global stiffness.
- Returns
- success flag
Reimplemented in GroupMultiplierBC, GroupPenaltyBC, MultiplierBC, PenaltyBC, and ParticleCollision.
◆ reset_status()
void ConditionalModifier::reset_status |
( |
| ) |
|
|
virtual |
◆ set_connected()
void ConditionalModifier::set_connected |
( |
bool |
B | ) |
const |
Some constraints may modify global stiffness matrix so that it needs to be treated as an element which may affect bandwidth of banded storage. By calling this method, the RCM reordering algorithm will take this constraint into consideration. Make sure it is called in the constructor.
◆ set_end_step()
void ConditionalModifier::set_end_step |
( |
unsigned |
ST | ) |
|
◆ set_initialized()
void ConditionalModifier::set_initialized |
( |
bool |
B | ) |
const |
◆ set_start_step()
void ConditionalModifier::set_start_step |
( |
unsigned |
ST | ) |
|
◆ stage()
virtual void ConditionalModifier::stage |
( |
const shared_ptr< DomainBase > & |
| ) |
|
|
inlinevirtual |
Some algorithms needs to manually modify some variables after solving. Typical example is the predictor–corrector type algorithms. This method is called before committing trial status to perform necessary operations.
Reimplemented in RestitutionWallPenalty.
◆ update_status()
void ConditionalModifier::update_status |
( |
const vec & |
| ) |
|
|
virtual |
◆ validate_step()
bool ConditionalModifier::validate_step |
( |
const shared_ptr< DomainBase > & |
D | ) |
const |
◆ amplitude_tag
const unsigned ConditionalModifier::amplitude_tag |
|
protected |
◆ connected
const bool ConditionalModifier::connected = false |
|
protected |
◆ dof_encoding
uvec ConditionalModifier::dof_encoding |
|
protected |
◆ dof_reference
uvec ConditionalModifier::dof_reference |
|
protected |
◆ end_step
unsigned ConditionalModifier::end_step = static_cast<unsigned>(-1) |
|
protected |
◆ initialized
const bool ConditionalModifier::initialized = false |
|
protected |
◆ magnitude
shared_ptr<Amplitude> ConditionalModifier::magnitude |
|
protected |
◆ node_encoding
uvec ConditionalModifier::node_encoding |
|
protected |
◆ start_step
unsigned ConditionalModifier::start_step |
|
protected |
The documentation for this class was generated from the following files: