|
suanPan
🧮 An Open Source, Parallel and Heterogeneous Finite Element Analysis Framework
|
#include <BC.h>
Public Member Functions | |
| PenaltyBC (unsigned, uvec &&, std::vector< Node::DOF > &&) | |
| int | initialize (const shared_ptr< DomainBase > &) override |
| int | process (const shared_ptr< DomainBase > &) override |
| Apply the BC to the system using penalty method. It effectively adds a diagonal matrix to the global stiffness matrix. | |
| int | process_resistance (const shared_ptr< DomainBase > &) final |
| Process and update resistance. | |
Public Member Functions inherited from Constraint | |
| Constraint (unsigned, unsigned, std::vector< Node::DOF > &&, std::vector< Node::DOF > &&, unsigned) | |
| 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) |
| unsigned | get_multiplier_size () const |
Public Member Functions inherited from ConditionalModifier | |
| ConditionalModifier (unsigned, unsigned, std::vector< Node::DOF > &&, std::vector< Node::DOF > &&) | |
| virtual void | stage (const shared_ptr< DomainBase > &) |
| Some algorithms need to manually modify some variables after solving. | |
| std::set< uword > | get_involving_nodes (const shared_ptr< DomainBase > &) const |
| Return a set of all nodes involved. | |
| const uvec & | get_node_dof () const |
| void | deinitialize () |
| bool | is_initialized () const |
| void | set_start_step (unsigned) |
| unsigned | get_start_step () const |
| void | set_end_step (unsigned) |
| unsigned | get_end_step () const |
| virtual bool | is_connected () const |
| Indicate if this modifier can be deemed as an element that needs to account for connectivity. | |
| bool | validate_step (const shared_ptr< DomainBase > &) const |
| Validate itself against the current active step to see if itself needs to be applied. | |
| virtual void | update_status (const vec &) |
| virtual void | clear_status () |
| virtual void | commit_status () |
| virtual void | reset_status () |
Public Member Functions inherited from UniqueTag | |
| UniqueTag (const UniqueTag &)=delete | |
| UniqueTag (UniqueTag &&)=delete | |
| UniqueTag & | operator= (const UniqueTag &)=delete |
| UniqueTag & | operator= (UniqueTag &&)=delete |
| ~UniqueTag () override=default | |
| Tag (unsigned=0) | |
| Tag (const Tag &)=default | |
| Tag (Tag &&) noexcept=default | |
Public Member Functions inherited from Tag | |
| Tag (unsigned=0) | |
| Tag (const Tag &)=default | |
| Tag (Tag &&) noexcept=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 () |
Friends | |
| void | set_constraint_multiplier (double) |
Additional Inherited Members | |
Protected Member Functions inherited from ConditionalModifier | |
| double | get_amplitude (const shared_ptr< DomainBase > &) const |
| const std::vector< Node::DOF > & | get_dof_component () const |
| Return the DoF components, falls back to the DoF order. | |
| bool | validate_node (const shared_ptr< DomainBase > &) const |
| bool | validate_element (const shared_ptr< DomainBase > &) const |
| uvec | collect_node_dof (const shared_ptr< DomainBase > &) const |
Protected Attributes inherited from Constraint | |
| unsigned | lagrangian_size |
| vec | trial_lambda {lagrangian_size, fill::zeros} |
| vec | current_lambda {lagrangian_size, fill::zeros} |
| sp_vec | resistance |
| sp_mat | stiffness |
| vec | auxiliary_resistance |
| vec | auxiliary_load |
| sp_mat | auxiliary_stiffness |
Protected Attributes inherited from ConditionalModifier | |
| unsigned | start_step {1u} |
| unsigned | end_step {static_cast<unsigned>(-1)} |
| const std::vector< Node::DOF > | dof_order |
| uvec | target_node |
| uvec | target_element |
| uvec | target_dof |
A PenaltyBC class.
The PenaltyBC class is in charge of applying boundary conditions to the system. The PenaltyBC 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 PenaltyBC 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.
|
overridevirtual |
Reimplemented from ConditionalModifier.
|
overridevirtual |
Apply the BC to the system using penalty method. It effectively adds a diagonal matrix to the global stiffness matrix.
Implements ConditionalModifier.
|
finalvirtual |
Process and update resistance.
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.
|
friend |