dynLattice
Loading...
Searching...
No Matches
DirichletModel.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <jem/io/Writer.h>
10#include <jem/util/Properties.h>
11#include <jive/Array.h>
12#include <jive/fem/NodeSet.h>
13#include <jive/model/Model.h>
14#include <jive/model/ModelFactory.h>
15#include <jive/model/Names.h>
16#include <jive/util/Assignable.h>
17#include <jive/util/Constraints.h>
18#include <jive/util/DofSpace.h>
19#include <jive/util/Globdat.h>
20
21using jem::Float;
22using jem::idx_t;
23using jem::IllegalInputException;
24using jem::newInstance;
25using jem::NIL;
26using jem::Ref;
27using jem::SliceFrom;
28using jem::String;
29using jem::System;
30using jem::io::Writer;
31using jem::util::Properties;
32using jive::IdxVector;
33using jive::StringVector;
34using jive::Vector;
35using jive::fem::NodeSet;
36using jive::model::Model;
37using jive::util::Assignable;
38using jive::util::Constraints;
39using jive::util::DofSpace;
40using jive::util::Globdat;
41
42//-----------------------------------------------------------------------
43// class DirichletModel
44//-----------------------------------------------------------------------
45
49class DirichletModel : public Model
50{
51public:
59
62 static const char *TYPE_NAME;
63
64 static const char *MAX_DISP_PROP;
65 static const char *DISP_INCR_PROP;
66 static const char *DISP_RATE_PROP;
67 static const char *INIT_DISP_PROP;
68 static const char *NODES_PROP;
69 static const char *DOF_PROP;
70 static const char *FACTORS_PROP;
71 static const char *LOADED_PROP;
73
74 JEM_DECLARE_CLASS(DirichletModel, Model);
75
78 explicit DirichletModel
79
80 (const String &name = "dirichlet");
81
85 virtual void configure
86
87 (const Properties &props, const Properties &globdat) override;
88
92 virtual void getConfig
93
94 (const Properties &conf, const Properties &globdat) const override;
95
101 virtual bool takeAction
102
103 (const String &action, const Properties &params,
104 const Properties &globdat) override;
105
112 static Ref<Model> makeNew
113
114 (const String &name, const Properties &conf,
115 const Properties &props, const Properties &globdat);
116
118 static void declare();
119
120protected:
121 virtual ~DirichletModel();
122
123protected:
126 void init_
127
128 (const Properties &globdat);
129
133 void advance_
134
135 (const Properties &globdat);
136
142
143 (const Properties &params, const Properties &globdat);
144
149 void checkCommit_
150
151 (const Properties &params, const Properties &globdat);
152
157 void commit_
158
159 (const Properties &params, const Properties &globdat);
160
164 void setDT_
165
166 (const Properties &params);
167
168private:
171 Ref<DofSpace> dofs_;
172 Ref<Constraints> cons_;
173 Assignable<NodeSet> nodes_;
175
178 idx_t ngroups_;
179 IdxVector idofs_;
181
184 double dispScale0_;
185 double dispScale_;
186 double dispIncr_;
187 double dispRate_;
188 Method method_;
190
193 StringVector nodeGroups_;
194 StringVector dofTypes_;
195 Vector factors_;
197
200 double dispIncr0_;
201 double maxDispVal_;
202 double initDisp_;
203 Properties lbcProps_;
204 String varName_;
206};
Model for applying Dirichlet boundary conditions with displacement control.
Definition DirichletModel.h:50
static const char * TYPE_NAME
Definition DirichletModel.h:62
static const char * MAX_DISP_PROP
Maximum displacement value.
Definition DirichletModel.h:64
static const char * FACTORS_PROP
Displacement factors.
Definition DirichletModel.h:70
static const char * NODES_PROP
Node groups.
Definition DirichletModel.h:68
void init_(const Properties &globdat)
Initialize model state and DOF mappings.
Definition DirichletModel.cpp:289
static const char * INIT_DISP_PROP
Initial displacement.
Definition DirichletModel.h:67
void checkCommit_(const Properties &params, const Properties &globdat)
Check if current state should be committed.
Definition DirichletModel.cpp:374
void advance_(const Properties &globdat)
Advance to next time step.
Definition DirichletModel.cpp:304
virtual ~DirichletModel()
Definition DirichletModel.cpp:77
void setDT_(const Properties &params)
Set time step size for displacement control.
Definition DirichletModel.cpp:413
Method
Displacement control methods.
Definition DirichletModel.h:54
@ LOADSCALE
Load scale factor control.
Definition DirichletModel.h:57
@ INCREMENT
Displacement increment control.
Definition DirichletModel.h:56
@ RATE
Displacement rate control.
Definition DirichletModel.h:55
static void declare()
Register DirichletModel type with ModelFactory.
Definition DirichletModel.cpp:439
static Ref< Model > makeNew(const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
Factory method for creating new DirichletModel instances.
Definition DirichletModel.cpp:278
static const char * DISP_RATE_PROP
Displacement rate.
Definition DirichletModel.h:66
static const char * DISP_INCR_PROP
Displacement increment.
Definition DirichletModel.h:65
static const char * LOADED_PROP
Loaded node group index.
Definition DirichletModel.h:71
virtual bool takeAction(const String &action, const Properties &params, const Properties &globdat) override
Handle model actions (INIT, GET_CONSTRAINTS, ADVANCE, etc.)
Definition DirichletModel.cpp:87
static const char * DOF_PROP
Degree of freedom types.
Definition DirichletModel.h:69
virtual void configure(const Properties &props, const Properties &globdat) override
Configure Dirichlet boundary conditions from properties.
Definition DirichletModel.cpp:171
void commit_(const Properties &params, const Properties &globdat)
Commit current displacement state.
Definition DirichletModel.cpp:397
virtual void getConfig(const Properties &conf, const Properties &globdat) const override
Get current configuration.
Definition DirichletModel.cpp:243
void applyConstraints_(const Properties &params, const Properties &globdat)
Apply displacement constraints to system.
Definition DirichletModel.cpp:328