21 namespace Elasticity {
24 enum Direction { NONE = 0, X = 1, Y = 2, Z = 4,
25 XY = 1+2, XZ = 1+4, YZ = 2+4,
80 return s <<
"u_"<< char(
'w'+d.
dof) <<
" in node "<< d.
node;
105 MPC(
int n,
int d,
double c =
double(0)) : slave(n,d,c) {
iceq = -1; }
113 void addMaster(
int n,
int d,
double c =
double(1),
double tol =
double(1.0e-8))
115 if (c < -tol || c > tol) master.push_back(
DOF(n,d,c));
121 if (pos < master.size())
122 master[pos].coeff = c;
128 if (pos < master.size())
129 master.erase(master.begin()+pos);
147 friend std::ostream&
operator<<(std::ostream& s,
const MPC& mpc);
152 std::vector<DOF> master;
156 typedef std::set<MPC*,MPC::Less> MPCSet;
159 typedef std::map<int,MPC*> MPCMap;
DOF(int n, int d, double c=double(0))
Convenience constructor creating a valid DOF object.
Definition: mpc.hh:75
MPC(int n, int d, double c=double(0))
Constructor creating a constraint for a specified slave DOF with no master DOFs.
Definition: mpc.hh:105
double coeff
The constrained value, or master DOF scaling coefficient.
Definition: mpc.hh:85
size_t getNoMaster() const
Returns the number of master DOFs.
Definition: mpc.hh:144
A struct for representing one term (DOF number and associated coefficient) in a MPC equation...
Definition: mpc.hh:66
static bool compareSlaveDofOnly
Indicates whether only the slave dof number should affect sorting.
Definition: mpc.hh:96
friend std::ostream & operator<<(std::ostream &s, const DOF &d)
Global stream operator printing a DOF instance.
Definition: mpc.hh:78
void removeMaster(size_t pos)
Removes the pos'th master DOF from the constraint equation.
Definition: mpc.hh:126
const DOF & getMaster(size_t i) const
Returns a reference to the i'th master DOF.
Definition: mpc.hh:141
void addOffset(double offset)
Increments the c0 coefficient by a given offset.
Definition: mpc.hh:133
const DOF & getSlave() const
Returns a reference to the slave DOF.
Definition: mpc.hh:139
void addMaster(int n, int d, double c=double(1), double tol=double(1.0e-8))
Adds a master DOF to the constraint equation.
Definition: mpc.hh:113
DOF()
Default constructor.
Definition: mpc.hh:69
void setSlaveCoeff(double c0)
Assigns a new c0 coefficient to the constraint equation.
Definition: mpc.hh:136
void updateMaster(size_t pos, double c)
Updates the coefficient of the pos'th master DOF.
Definition: mpc.hh:119
friend std::ostream & operator<<(std::ostream &s, const MPC &mpc)
Global stream operator printing a constraint equation.
Definition: mpc.cpp:61
int iceq
Global constraint equation identifier.
Definition: mpc.hh:149
int dof
Local DOF number within node.
Definition: mpc.hh:84
Comparison predicate for MPCs.
Definition: mpc.hh:89
int node
Node number identifying this DOF.
Definition: mpc.hh:83
A class for representing a general multi-point constraint equation.
Definition: mpc.hh:58
bool operator()(const MPC *lhs, const MPC *rhs) const
Comparison operator used when inserting an MPC-pointer into a set<MPC*,MPC::Less> object...
Definition: mpc.cpp:37