dynLattice
Loading...
Searching...
No Matches
HingeModel.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <jem/base/Class.h>
10#include <jem/util/ArrayBuffer.h>
11#include <jem/util/Properties.h>
12#include <jem/util/StringUtils.h>
13
14#include <jive/Array.h>
15#include <jive/algebra/MatrixBuilder.h>
16#include <jive/fem/ElementGroup.h>
17#include <jive/fem/ElementSet.h>
18#include <jive/fem/NodeSet.h>
19#include <jive/fem/XElementSet.h>
20#include <jive/fem/XNodeSet.h>
21#include <jive/implict/Names.h>
22#include <jive/model/Actions.h>
23#include <jive/model/Model.h>
24#include <jive/model/ModelFactory.h>
25#include <jive/model/StateVector.h>
26#include <jive/solver/Solver.h>
27#include <jive/util/Assignable.h>
28#include <jive/util/Constraints.h>
29#include <jive/util/DofSpace.h>
30#include <jive/util/FuncUtils.h>
31
33#include "utils/helpers.h"
34#include "utils/testing.h"
35
36using jem::newInstance;
37using jem::Ref;
38using jem::String;
39using jem::numeric::Function;
40using jem::util::Properties;
41
42using jive::BoolMatrix;
43using jive::StringVector;
44using jive::algebra::MatrixBuilder;
45using jive::fem::ElementGroup;
46using jive::fem::ElementSet;
47using jive::fem::NodeSet;
48using jive::fem::XElementSet;
49using jive::fem::XNodeSet;
50using jive::model::Model;
51using jive::util::Assignable;
52using jive::util::Constraints;
53using jive::util::DofSpace;
54using jive::util::FuncUtils;
55
56typedef jem::util::ArrayBuffer<idx_t> IdxBuffer;
57
62class HingeModel : public Model
63{
64public:
67 static const char *TYPE_NAME;
68 static const char *YIELD_PROP;
70
71 JEM_DECLARE_CLASS(HingeModel, Model);
72
78 explicit HingeModel
79
80 (const String &name,
81 const Properties &conf,
82 const Properties &props,
83 const Properties &globdat);
84
90 virtual bool takeAction
91
92 (const String &action,
93 const Properties &params,
94 const Properties &globdat) override;
95
102 static Ref<Model> makeNew
103
104 (const String &name,
105 const Properties &conf,
106 const Properties &props,
107 const Properties &globdat);
108
110 static void declare();
111
112private:
117 ElementGroup createHinges_(const String &elementName, const Properties &globdat);
118
121 void updForces_(const Vector &fint);
122
125 bool evalPlastic_(const Vector &disp);
126
129 void init_(const Properties &globdat);
130
133 void getCons_();
134
135private:
138 Assignable<ElementGroup> egroup_;
139 Assignable<NodeSet> nodes_;
140 Assignable<ElementSet> elems_;
141 Ref<DofSpace> dofs_;
142 Ref<Constraints> cons_;
144
147 IdxVector jtypes_;
148 StringVector jnames_;
149 String elName_;
151
154 double prec_;
155 idx_t maxIter_;
156 idx_t iiter_;
158
161 Ref<Material> material_;
162 Ref<Function> yieldCond_;
163 Vector ell_;
164 Matrix intForces_;
165 Matrix intForcesOld_;
166 Matrix plasticDisp_;
168};
jem::util::ArrayBuffer< idx_t > IdxBuffer
Definition HingeModel.h:56
Special Cosserat rod model implementation.
Model for plastic hinges connecting multiple Cosserat rod elements.
Definition HingeModel.h:63
static Ref< Model > makeNew(const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
Factory method for creating new HingeModel instances.
Definition HingeModel.cpp:358
static const char * YIELD_PROP
Yield condition property.
Definition HingeModel.h:68
virtual bool takeAction(const String &action, const Properties &params, const Properties &globdat) override
Handle model actions (INIT, GET_MATRIX, GET_INT_VECTOR, etc.)
Definition HingeModel.cpp:86
static void declare()
Register HingeModel type with ModelFactory.
Definition HingeModel.cpp:373
static const char * TYPE_NAME
Model type name.
Definition HingeModel.h:67
file containing some basic helper functions
several compiler macros for faster testing of variables