suanPan
🧮 An Open Source, Parallel and Heterogeneous Finite Element Analysis Framework
Loading...
Searching...
No Matches
MultiplierBC Class Reference

A MultiplierBC class. More...

#include <BC.h>

Inheritance diagram for MultiplierBC:
Collaboration diagram for MultiplierBC:

Public Member Functions

int process (const shared_ptr< DomainBase > &) override
 Apply the BC to the system using Lagrangian multiplier method. It directly modifies the global stiffness matrix thus requires a mutex. Other global matrices shall also be modified to ensure the solution is trivial on target DoFs.
 
 PenaltyBC (unsigned, uvec &&, std::vector< Node::DOF > &&)
 
- Public Member Functions inherited from PenaltyBC
 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 uvecget_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
 
UniqueTagoperator= (const UniqueTag &)=delete
 
UniqueTagoperator= (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
 
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 ()
 

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::DOFdof_order
 
uvec target_node
 
uvec target_element
 
uvec target_dof
 

Detailed Description

A MultiplierBC class.

Member Function Documentation

◆ PenaltyBC()

PenaltyBC::PenaltyBC ( unsigned  T,
uvec &&  N,
std::vector< Node::DOF > &&  D 
)

◆ process()

int MultiplierBC::process ( const shared_ptr< DomainBase > &  D)
overridevirtual

Apply the BC to the system using Lagrangian multiplier method. It directly modifies the global stiffness matrix thus requires a mutex. Other global matrices shall also be modified to ensure the solution is trivial on target DoFs.

Implements ConditionalModifier.

Here is the caller graph for this function:

The documentation for this class was generated from the following files: