dynLattice
Loading...
Searching...
No Matches
NeumannModel.h
Go to the documentation of this file.
1
11#pragma once
12
13#include <jem/base/Object.h>
14#include <jem/io/Writer.h>
15#include <jive/Array.h>
16#include <jive/fem/NodeGroup.h>
17#include <jive/model/Model.h>
18#include <jive/model/ModelFactory.h>
19#include <jive/util/Assignable.h>
20#include <jive/util/XDofSpace.h>
21
22using jem::Float;
23using jem::idx_t;
24using jem::IllegalInputException;
25using jem::newInstance;
26using jem::Ref;
27using jem::SliceFrom;
28using jem::String;
29using jem::System;
30using jem::io::Writer;
31using jem::util::Properties;
32using jive::IntVector;
33using jive::StringVector;
34using jive::Vector;
35using jive::fem::NodeGroup;
36using jive::fem::NodeSet;
37using jive::model::Model;
38using jive::util::Assignable;
39using jive::util::Constraints;
40using jive::util::DofSpace;
41using jive::util::XDofSpace;
42
43//-----------------------------------------------------------------------
44// class NeumannModel
45//-----------------------------------------------------------------------
46
61class NeumannModel : public Model
62{
63 public:
66 static const char *TYPE_NAME;
67 static const char *LOAD_INCR_PROP;
68 static const char *INIT_LOAD_PROP;
69 static const char *MIN_LOAD_PROP;
70 static const char *MAX_LOAD_PROP;
71 static const char *REDUCTION_PROP;
72 static const char *NODES_PROP;
73 static const char *DOF_PROP;
74 static const char *FACTORS_PROP;
76
77 JEM_DECLARE_CLASS(NeumannModel, Model);
78
81 explicit NeumannModel(const String &name);
82
86 virtual void configure(const Properties &props,
87 const Properties &globdat) override;
88
92 virtual void getConfig(const Properties &conf,
93 const Properties &globdat) const override;
94
100 virtual bool takeAction(const String &action,
101 const Properties &params,
102 const Properties &globdat) override;
103
106 void setLoadIncr(double incr);
107
110 inline double getLoadIncr() const;
111
118 static Ref<Model> makeNew(const String &name,
119 const Properties &conf,
120 const Properties &props,
121 const Properties &globdat);
122
124 static void declare();
125
126 protected:
128 virtual ~NeumannModel();
129
130 private:
133 void init_(const Properties &globdat);
134
138 void getExtVector_(const Vector &fext,
139 const Properties &globdat) const;
140
145 void getExtVector_(const Vector &fext,
146 const Properties &globdat,
147 const double scale) const;
148
151 void advance_(const Properties &globdat);
152
156 void commit_(const Properties &params,
157 const Properties &globdat);
158
162 void reduceStep_(const Properties &params,
163 const Properties &globdat);
164
168 void increaseStep_(const Properties &params,
169 const Properties &globdat);
170
171 private:
172 Ref<DofSpace> dofs_;
173 Assignable<NodeSet> nodes_;
174
175 idx_t ngroups_;
176 IntVector idofs_;
177
178 double loadScale0_;
179 double loadScale_;
180 double loadIncr_;
181
182 // Input specification for boundary conditions
183 StringVector nodeGroups_;
184 StringVector dofTypes_;
185 Vector factors_;
186
187 // Configuration parameters
188 double reduction_;
189 double loadIncr0_;
190 double minLoadIncr_;
191 double maxLoadVal_;
192 double initLoad_;
193
194 String varName_;
195 bool extScale_;
196};
Model for applying Neumann boundary conditions on node groups.
Definition NeumannModel.h:62
static const char * MIN_LOAD_PROP
Minimum load increment property.
Definition NeumannModel.h:69
static const char * TYPE_NAME
Model type name.
Definition NeumannModel.h:66
virtual ~NeumannModel()
Protected destructor.
Definition NeumannModel.cpp:86
static const char * DOF_PROP
DOF types property.
Definition NeumannModel.h:73
static const char * INIT_LOAD_PROP
Initial load property.
Definition NeumannModel.h:68
static const char * FACTORS_PROP
Load factors property.
Definition NeumannModel.h:74
void setLoadIncr(double incr)
Set load increment.
Definition NeumannModel.cpp:260
static const char * NODES_PROP
Node groups property.
Definition NeumannModel.h:72
static const char * MAX_LOAD_PROP
Maximum load value property.
Definition NeumannModel.h:70
virtual void configure(const Properties &props, const Properties &globdat) override
Configure the model from properties.
Definition NeumannModel.cpp:166
virtual bool takeAction(const String &action, const Properties &params, const Properties &globdat) override
Handle model actions.
Definition NeumannModel.cpp:96
virtual void getConfig(const Properties &conf, const Properties &globdat) const override
Get current model configuration.
Definition NeumannModel.cpp:216
double getLoadIncr() const
Get current load increment.
Definition NeumannModel.cpp:270
static void declare()
Declare model type to factory.
Definition NeumannModel.cpp:431
static const char * REDUCTION_PROP
Load reduction factor property.
Definition NeumannModel.h:71
static const char * LOAD_INCR_PROP
Load increment property.
Definition NeumannModel.h:67
static Ref< Model > makeNew(const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
Create new NeumannModel instance.
Definition NeumannModel.cpp:241