29 #ifndef RIGIDWALLPENALTY_H
30 #define RIGIDWALLPENALTY_H
37 template<
DOF... D>
void set_handler() {
throw std::logic_error(
"not implemented"); }
55 RigidWallPenalty(
unsigned,
unsigned,
unsigned, vec&&, vec&&,
double,
unsigned);
56 RigidWallPenalty(
unsigned,
unsigned,
unsigned, vec&&, vec&&, vec&&,
double,
unsigned);
58 int process(
const shared_ptr<DomainBase>&)
override;
65 template<>
inline void RigidWallPenalty::set_handler<DOF::U1>() {
66 checker_handler = check_dof_definition<DOF::U1>;
67 current_velocity_handler = get_current_velocity<DOF::U1>;
68 incre_acceleration_handler = get_incre_acceleration<DOF::U1>;
69 trial_position_handler = get_trial_position<DOF::U1>;
70 trial_displacement_handler = get_trial_displacement<DOF::U1>;
71 trial_velocity_handler = get_trial_velocity<DOF::U1>;
72 trial_acceleration_handler = get_trial_acceleration<DOF::U1>;
75 template<>
inline void RigidWallPenalty::set_handler<DOF::U1, DOF::U2>() {
76 checker_handler = check_dof_definition<DOF::U1, DOF::U2>;
77 current_velocity_handler = get_current_velocity<DOF::U1, DOF::U2>;
78 incre_acceleration_handler = get_incre_acceleration<DOF::U1, DOF::U2>;
79 trial_position_handler = get_trial_position<DOF::U1, DOF::U2>;
80 trial_displacement_handler = get_trial_displacement<DOF::U1, DOF::U2>;
81 trial_velocity_handler = get_trial_velocity<DOF::U1, DOF::U2>;
82 trial_acceleration_handler = get_trial_acceleration<DOF::U1, DOF::U2>;
85 template<>
inline void RigidWallPenalty::set_handler<DOF::U1, DOF::U2, DOF::U3>() {
86 checker_handler = check_dof_definition<DOF::U1, DOF::U2, DOF::U3>;
87 current_velocity_handler = get_current_velocity<DOF::U1, DOF::U2, DOF::U3>;
88 incre_acceleration_handler = get_incre_acceleration<DOF::U1, DOF::U2, DOF::U3>;
89 trial_position_handler = get_trial_position<DOF::U1, DOF::U2, DOF::U3>;
90 trial_displacement_handler = get_trial_displacement<DOF::U1, DOF::U2, DOF::U3>;
91 trial_velocity_handler = get_trial_velocity<DOF::U1, DOF::U2, DOF::U3>;
92 trial_acceleration_handler = get_trial_acceleration<DOF::U1, DOF::U2, DOF::U3>;
A Constraint class.
Definition: Constraint.h:36
Definition: RigidWallPenalty.h:95
RigidWallPenalty1D(unsigned, unsigned, unsigned, vec &&, vec &&, double)
Definition: RigidWallPenalty.cpp:79
Definition: RigidWallPenalty.h:100
RigidWallPenalty2D(unsigned, unsigned, unsigned, vec &&, vec &&, double)
Definition: RigidWallPenalty.cpp:82
Definition: RigidWallPenalty.h:106
RigidWallPenalty3D(unsigned, unsigned, unsigned, vec &&, vec &&, double)
Definition: RigidWallPenalty.cpp:93
A RigidWall class.
Definition: RigidWallPenalty.h:35
Col< double >(* trial_acceleration_handler)(const shared_ptr< Node > &)
Definition: RigidWallPenalty.h:53
const vec origin
Definition: RigidWallPenalty.h:44
Col< double >(* trial_displacement_handler)(const shared_ptr< Node > &)
Definition: RigidWallPenalty.h:51
bool(* checker_handler)(const shared_ptr< Node > &)
Definition: RigidWallPenalty.h:47
void clear_status() override
Definition: RigidWallPenalty.cpp:75
const double alpha
Definition: RigidWallPenalty.h:41
Col< double >(* current_velocity_handler)(const shared_ptr< Node > &)
Definition: RigidWallPenalty.h:48
Col< double >(* incre_acceleration_handler)(const shared_ptr< Node > &)
Definition: RigidWallPenalty.h:49
void reset_status() override
Definition: RigidWallPenalty.cpp:77
const unsigned n_dim
Definition: RigidWallPenalty.h:39
int process(const shared_ptr< DomainBase > &) override
This method provides all necessary pieces of typical constraints/loads required, including additional...
Definition: RigidWallPenalty.cpp:40
const double length_b
Definition: RigidWallPenalty.h:45
const vec edge_a
Definition: RigidWallPenalty.h:43
void commit_status() override
Definition: RigidWallPenalty.cpp:73
const double length_a
Definition: RigidWallPenalty.h:45
void set_handler()
Definition: RigidWallPenalty.h:37
Col< double >(* trial_velocity_handler)(const shared_ptr< Node > &)
Definition: RigidWallPenalty.h:52
Col< double >(* trial_position_handler)(const shared_ptr< Node > &)
Definition: RigidWallPenalty.h:50
const vec outer_norm
Definition: RigidWallPenalty.h:44
RigidWallPenalty(unsigned, unsigned, unsigned, vec &&, vec &&, double, unsigned)
Definition: RigidWallPenalty.cpp:22
const vec edge_b
Definition: RigidWallPenalty.h:43