suanPan
ConditionalModifier Class Referenceabstract

A ConditionalModifier class. More...

#include <ConditionalModifier.h>

Inheritance diagram for ConditionalModifier:
Collaboration diagram for ConditionalModifier:

Public Member Functions

 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 ()
 
- Public Member Functions inherited from Tag
 Tag (unsigned=0)
 
 Tag (const Tag &)=default
 
 Tag (Tag &&)=default
 
Tagoperator= (const Tag &)=delete
 
Tagoperator= (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 ()
 

Protected Member Functions

uvec get_nodal_active_dof (const shared_ptr< DomainBase > &)
 Generate active DoF vector from assigned nodes. More...
 
uvec get_all_nodal_active_dof (const shared_ptr< DomainBase > &)
 Generate active DoF vector from all nodes in the model. More...
 

Protected Attributes

const bool initialized = false
 
const bool connected = false
 
unsigned start_step
 
unsigned end_step = static_cast<unsigned>(-1)
 
const unsigned amplitude_tag
 
uvec node_encoding
 
uvec dof_reference
 
uvec dof_encoding
 
shared_ptr< Amplitudemagnitude
 

Detailed Description

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

Constructor & Destructor Documentation

◆ ConditionalModifier()

ConditionalModifier::ConditionalModifier ( unsigned  T,
unsigned  ST,
unsigned  AT,
uvec &&  N,
uvec &&  D 
)

Member Function Documentation

◆ clear_status()

void ConditionalModifier::clear_status ( )
virtual

Reimplemented in FixedLength, MaxForce, NodeFacet, NodeLine, RestitutionWallPenalty, and RigidWallPenalty.

Here is the call graph for this function:

◆ 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
Here is the caller graph for this function:

◆ 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
Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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.

Here is the caller graph for this function:

◆ 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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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.

Here is the caller graph for this function:

◆ set_end_step()

void ConditionalModifier::set_end_step ( unsigned  ST)
Here is the caller graph for this function:

◆ set_initialized()

void ConditionalModifier::set_initialized ( bool  B) const
Here is the caller graph for this function:

◆ 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

Reimplemented in FixedLength, NodeFacet, and NodeLine.

◆ validate_step()

bool ConditionalModifier::validate_step ( const shared_ptr< DomainBase > &  D) const
Here is the call graph for this function:

Member Data Documentation

◆ 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: