29#ifndef RIGIDWALLPENALTY_H
30#define RIGIDWALLPENALTY_H
37 template<
DOF... D>
void set_handler() {
throw std::logic_error(
"not implemented"); }
56 RigidWallPenalty(
unsigned,
unsigned,
unsigned, vec&&, vec&&,
double,
unsigned);
57 RigidWallPenalty(
unsigned,
unsigned,
unsigned, vec&&, vec&&, vec&&,
double,
unsigned);
59 int process(
const shared_ptr<DomainBase>&)
override;
66template<>
inline void RigidWallPenalty::set_handler<DOF::U1>() {
67 checker_handler = check_dof_definition<DOF::U1>;
68 current_velocity_handler = get_current_velocity<DOF::U1>;
69 incre_acceleration_handler = get_incre_acceleration<DOF::U1>;
70 trial_position_handler = get_trial_position<DOF::U1>;
71 trial_displacement_handler = get_trial_displacement<DOF::U1>;
72 trial_velocity_handler = get_trial_velocity<DOF::U1>;
73 trial_acceleration_handler = get_trial_acceleration<DOF::U1>;
76template<>
inline void RigidWallPenalty::set_handler<DOF::U1, DOF::U2>() {
77 checker_handler = check_dof_definition<DOF::U1, DOF::U2>;
78 current_velocity_handler = get_current_velocity<DOF::U1, DOF::U2>;
79 incre_acceleration_handler = get_incre_acceleration<DOF::U1, DOF::U2>;
80 trial_position_handler = get_trial_position<DOF::U1, DOF::U2>;
81 trial_displacement_handler = get_trial_displacement<DOF::U1, DOF::U2>;
82 trial_velocity_handler = get_trial_velocity<DOF::U1, DOF::U2>;
83 trial_acceleration_handler = get_trial_acceleration<DOF::U1, DOF::U2>;
86template<>
inline void RigidWallPenalty::set_handler<DOF::U1, DOF::U2, DOF::U3>() {
87 checker_handler = check_dof_definition<DOF::U1, DOF::U2, DOF::U3>;
88 current_velocity_handler = get_current_velocity<DOF::U1, DOF::U2, DOF::U3>;
89 incre_acceleration_handler = get_incre_acceleration<DOF::U1, DOF::U2, DOF::U3>;
90 trial_position_handler = get_trial_position<DOF::U1, DOF::U2, DOF::U3>;
91 trial_displacement_handler = get_trial_displacement<DOF::U1, DOF::U2, DOF::U3>;
92 trial_velocity_handler = get_trial_velocity<DOF::U1, DOF::U2, DOF::U3>;
93 trial_acceleration_handler = get_trial_acceleration<DOF::U1, DOF::U2, DOF::U3>;
A Constraint class.
Definition: Constraint.h:36
Definition: RigidWallPenalty.h:96
RigidWallPenalty1D(unsigned, unsigned, unsigned, vec &&, vec &&, double)
Definition: RigidWallPenalty.cpp:79
Definition: RigidWallPenalty.h:101
RigidWallPenalty2D(unsigned, unsigned, unsigned, vec &&, vec &&, double)
Definition: RigidWallPenalty.cpp:82
Definition: RigidWallPenalty.h:107
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
Col< double >(* trial_velocity_handler)(const shared_ptr< Node > &)
Definition: RigidWallPenalty.h:52
const vec origin
Definition: RigidWallPenalty.h:44
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 >(* trial_displacement_handler)(const shared_ptr< Node > &)
Definition: RigidWallPenalty.h:51
Col< double >(* trial_position_handler)(const shared_ptr< Node > &)
Definition: RigidWallPenalty.h:50
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
Col< double >(* incre_acceleration_handler)(const shared_ptr< Node > &)
Definition: RigidWallPenalty.h:49
void set_handler()
Definition: RigidWallPenalty.h:37
Col< double >(* current_velocity_handler)(const shared_ptr< Node > &)
Definition: RigidWallPenalty.h:48
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