suanPan
|
A GroupMultiplierBC class handles boundary conditions. More...
#include <GroupMultiplierBC.h>
Public Member Functions | |
int | process (const shared_ptr< DomainBase > &) override |
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... | |
int | process_resistance (const shared_ptr< DomainBase > &) override |
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... | |
GroupPenaltyBC (unsigned, unsigned, uvec &&, uvec &&) | |
GroupPenaltyBC (unsigned, unsigned, uvec &&, char) | |
Public Member Functions inherited from GroupPenaltyBC | |
GroupPenaltyBC (unsigned, unsigned, uvec &&, uvec &&) | |
GroupPenaltyBC (unsigned, unsigned, uvec &&, char) | |
int | initialize (const shared_ptr< DomainBase > &) override |
int | process (const shared_ptr< DomainBase > &) override |
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... | |
int | process_resistance (const shared_ptr< DomainBase > &) override |
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... | |
Public Member Functions inherited from MultiplierBC | |
int | process (const shared_ptr< DomainBase > &) override |
method to apply the BC to the system. More... | |
int | process_resistance (const shared_ptr< DomainBase > &) override |
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... | |
PenaltyBC (unsigned, unsigned, uvec &&, uvec &&) | |
the constructor uses DoF vector. More... | |
PenaltyBC (unsigned, unsigned, uvec &&, char) | |
the constructor uses predefined TYPE: "XSYMM", "YSYMM", "ZSYMM", "ENCASTRE", "PINNED". More... | |
Public Member Functions inherited from PenaltyBC | |
PenaltyBC (unsigned, unsigned, uvec &&, uvec &&) | |
the constructor uses DoF vector. More... | |
PenaltyBC (unsigned, unsigned, uvec &&, char) | |
the constructor uses predefined TYPE: "XSYMM", "YSYMM", "ZSYMM", "ENCASTRE", "PINNED". More... | |
int | process (const shared_ptr< DomainBase > &) override |
method to apply the PenaltyBC to the system. More... | |
int | process_resistance (const shared_ptr< DomainBase > &) override |
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... | |
Public Member Functions inherited from Constraint | |
Constraint (unsigned, unsigned, unsigned, uvec &&, uvec &&, unsigned) | |
Constraint (const Constraint &)=delete | |
Constraint (Constraint &&)=delete | |
Constraint & | operator= (const Constraint &)=delete |
Constraint & | operator= (Constraint &&)=delete |
~Constraint () override=default | |
const sp_vec & | get_resistance () const |
const sp_mat & | get_stiffness () const |
const vec & | get_auxiliary_resistance () const |
const vec & | get_auxiliary_load () const |
const sp_mat & | get_auxiliary_stiffness () const |
void | set_multiplier_size (unsigned) |
At the beginning of each sub-step, it is assumed that constraints are not active (constraining conditions are not satisfied). The process(const shared_ptr<DomainBase>&) checks the constraining conditions for each iteration, and activates the multiplier(s) if conditions are met. The activation will be valid for all subsequent iterations in the same sub-step to avoid numerical instability. More... | |
unsigned | get_multiplier_size () const |
Public Member Functions inherited from ConditionalModifier | |
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 | |
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 () |
Additional Inherited Members | |
Protected Member Functions inherited from ConditionalModifier | |
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 inherited from GroupPenaltyBC | |
const uvec | groups |
Protected Attributes inherited from Constraint | |
unsigned | num_size |
vec | trial_lambda = zeros(num_size) |
vec | current_lambda = zeros(num_size) |
sp_vec | resistance |
sp_mat | stiffness |
vec | auxiliary_resistance |
vec | auxiliary_load |
sp_mat | auxiliary_stiffness |
Protected Attributes inherited from ConditionalModifier | |
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< Amplitude > | magnitude |
Static Protected Attributes inherited from Constraint | |
static double | multiplier = 1E8 |
A GroupMultiplierBC class handles boundary conditions.
The GroupMultiplierBC class is in charge of applying boundary conditions to the system. The GroupMultiplierBC class only takes care of homogeneous Dirichlet conditions. Non-homogeneous displacement boundary conditions are treated as Load so that can be solved iteratively. Others are handled by general constraint class such as MPC. The GroupMultiplierBC class stores the boundary condition category, type, node(s) and corresponding DoF(s). The Domain invokes process(const shared_ptr<Domain>&)
method to modify the global stiffness matrix.
GroupPenaltyBC::GroupPenaltyBC | ( | unsigned | T, |
unsigned | S, | ||
uvec && | N, | ||
char | TP | ||
) |
GroupPenaltyBC::GroupPenaltyBC | ( | unsigned | T, |
unsigned | S, | ||
uvec && | N, | ||
uvec && | D | ||
) |
|
overridevirtual |
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.
Implements ConditionalModifier.
|
overridevirtual |
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.
Reimplemented from ConditionalModifier.