dynLattice
Loading...
Searching...
No Matches
JointContactModel.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <jem/base/Class.h>
10
12#include <jem/base/ClassTemplate.h>
13#include <jem/util/ArrayBuffer.h>
14#include <jem/util/Properties.h>
15#include <jive/Array.h>
16#include <jive/algebra/MatrixBuilder.h>
17#include <jive/algebra/NullMatrixBuilder.h>
18#include <jive/app/Names.h>
19#include <jive/fem/ElementSet.h>
20#include <jive/fem/NodeGroup.h>
21#include <jive/implict/Names.h>
22#include <jive/model/Model.h>
23#include <jive/util/Assignable.h>
24#include <jive/util/DofSpace.h>
25#include <jive/util/FuncUtils.h>
26
27using jem::Array;
28using jem::numeric::Function;
29using jem::util::ArrayBuffer;
30using jive::idx_t;
31using jive::IdxVector;
32using jive::Matrix;
33using jive::Properties;
34using jive::Ref;
35using jive::String;
36using jive::Vector;
37using jive::algebra::MatrixBuilder;
38using jive::algebra::NullMatrixBuilder;
39using jive::fem::ElementSet;
40using jive::fem::NodeGroup;
41using jive::fem::NodeSet;
42using jive::model::Model;
43using jive::util::Assignable;
44using jive::util::DofSpace;
45using jive::util::FuncUtils;
46
51class JointContactModel : public Model
52{
53public:
54 JEM_DECLARE_CLASS(JointContactModel, Model);
55
58 static const char *TYPE_NAME;
59 static const char *PENALTY_PROP;
60 static const char *RADIUS_PROP;
61 static const char *VERBOSE_PROP;
63
69 explicit JointContactModel
70
71 (const String &name,
72 const Properties &conf,
73 const Properties &props,
74 const Properties &globdat);
75
81 virtual bool takeAction
82
83 (const String &action,
84 const Properties &params,
85 const Properties &globdat) override;
86
93 static Ref<Model> makeNew
94
95 (const String &name,
96 const Properties &conf,
97 const Properties &props,
98 const Properties &globdat);
99
101 static void declare();
102
103protected:
106 virtual void findContacts_
107
108 (const Vector &disp);
109
116 virtual void computeContacts_
117
118 (MatrixBuilder &mbld,
119 const Vector &fint,
120 const IdxVector &nodesA,
121 const IdxVector &nodesB,
122 const Vector &disp);
123
129 virtual void computeContact_
130
131 (Matrix contactStiffness,
132 Vector contactForce,
133 Vector posA,
134 Vector posB);
135
136private:
139 Assignable<NodeSet> allNodes_;
140 Assignable<ElementSet> allElems_;
141 IdxVector jointList_;
142 Ref<DofSpace> dofs_;
144
147 ArrayBuffer<idx_t> contactsA_;
148 ArrayBuffer<idx_t> contactsB_;
149 Ref<Function> updCond_;
151
154 double penalty_;
155 double radius_;
156 bool verbose_;
158};
Special Cosserat rod model implementation.
Contact model for spherical joint interactions.
Definition JointContactModel.h:52
virtual void computeContact_(Matrix contactStiffness, Vector contactForce, Vector posA, Vector posB)
Compute single contact interaction.
Definition JointContactModel.cpp:310
static Ref< Model > makeNew(const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
Factory method for creating new JointContactModel instances.
Definition JointContactModel.cpp:337
virtual bool takeAction(const String &action, const Properties &params, const Properties &globdat) override
Handle model actions for contact mechanics.
Definition JointContactModel.cpp:89
virtual void computeContacts_(MatrixBuilder &mbld, const Vector &fint, const IdxVector &nodesA, const IdxVector &nodesB, const Vector &disp)
Compute contact effects for detected contact pairs.
Definition JointContactModel.cpp:255
static const char * VERBOSE_PROP
Verbose output flag.
Definition JointContactModel.h:61
static const char * RADIUS_PROP
Joint radius.
Definition JointContactModel.h:60
virtual void findContacts_(const Vector &disp)
Find pairs of joints in contact.
Definition JointContactModel.cpp:207
static void declare()
Register JointContactModel type with ModelFactory.
Definition JointContactModel.cpp:348
static const char * TYPE_NAME
Model type name.
Definition JointContactModel.h:58
static const char * PENALTY_PROP
Penalty parameter.
Definition JointContactModel.h:59