dynLattice
Loading...
Searching...
No Matches
GroupInputModule.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <jem/base/Class.h>
10#include <jive/app/Module.h>
11#include <jive/fem/ElementGroup.h>
12#include <jive/fem/ElementSet.h>
13#include <jive/fem/NodeSet.h>
14#include <jive/util/Assignable.h>
15#include <jive/util/Constraints.h>
16#include <jive/util/Globdat.h>
17#include <jive/util/XDofSpace.h>
18
19using jem::ALL;
20using jem::Array;
21using jem::Error;
22using jem::idx_t;
23using jem::max;
24using jem::maxOf;
25using jem::min;
26using jem::newInstance;
27using jem::Ref;
28using jem::String;
29using jem::System;
30using jem::Tuple;
31using jem::util::Properties;
32
33using jive::IdxVector;
34using jive::Matrix;
35using jive::StringVector;
36using jive::Vector;
37using jive::app::Module;
38using jive::fem::ElementGroup;
39using jive::fem::ElementSet;
40using jive::fem::NodeSet;
41using jive::util::Assignable;
42using jive::util::Constraints;
43using jive::util::Globdat;
44using jive::util::XDofSpace;
45
46//-----------------------------------------------------------------------
47// class GroupInputModule
48//-----------------------------------------------------------------------
49
54class GroupInputModule : public Module
55{
56 public:
57 JEM_DECLARE_CLASS(GroupInputModule, Module);
58
61 static const char *TYPE_NAME;
62 static const char *NODE_GROUPS;
63 static const char *ELEM_GROUPS;
65
68 explicit GroupInputModule(const String &name = "groupInput");
69
75 virtual Status init(const Properties &conf,
76 const Properties &props,
77 const Properties &globdat) override;
78
85 static Ref<Module> makeNew(const String &name,
86 const Properties &conf,
87 const Properties &props,
88 const Properties &globdat);
89
91 static void declare();
92
93 protected:
95 virtual ~GroupInputModule();
96
97 private:
99 idx_t numNodes_;
100
101 //=======================================================================
102 // class NGroup_
103 //=======================================================================
104
109 class NGroup_ : public Object
110 {
111 public:
113 explicit NGroup_();
114
116 ~NGroup_();
117
122 void configure(const Properties &conf,
123 const Properties &props,
124 const String &name);
125
128 void makeGroup(const Properties &globdat);
129
132 static const char *X_NAMES[3];
133 static const double PI;
135
136 StringVector knownTypes;
137
139 enum Check
140 {
141 NONE,
142 VALUE,
143 BOUNDS
144 };
145
146 private:
150 void findCandidates_(const ElementSet &elems,
151 const Properties &globdat);
152
155 void findNodes_(const NodeSet &nodes);
156
160 void store_(const NodeSet &nodes,
161 const Properties &globdat);
162
165 idx_t rank_;
166 bool all_;
167 double eps_;
168 double angle_;
169 double radius_;
171
173 Array<Check> doX_;
174
176 Tuple<Vector, 3> xvals_;
177
179 Tuple<String, 3> xtype_;
180
182 Matrix xbounds_;
183
186 IdxVector inodes_;
187 String myName_;
188 StringVector restrictTo_;
189 IdxVector restrictPartial_;
191 };
192
193 //=======================================================================
194 // class EGroup_
195 //=======================================================================
196
201 class EGroup_ : public Object
202 {
203 public:
205 explicit EGroup_();
206
208 ~EGroup_();
209
214 void configure(const Properties &conf,
215 const Properties &props,
216 const String &name);
217
220 void makeGroup(const Properties &globdat);
221
224 static const char *X_NAMES[3];
225 static const double PI;
227
228 StringVector knownTypes;
229
231 enum Check
232 {
233 NONE,
234 VALUE,
235 BOUNDS
236 };
237
238 private:
242 void findElems_(const ElementSet &elems,
243 const Properties &globdat);
244
248 void store_(const ElementSet &elems,
249 const Properties &globdat);
250
253 idx_t rank_;
254 bool all_;
255 double eps_;
257
259 Array<Check> doX_;
260
262 Tuple<Vector, 3> xvals_;
263
265 Tuple<String, 3> xtype_;
266
268 Tuple<bool, 3> completely_;
269
271 Matrix xbounds_;
272
275 IdxVector ielems_;
276 String myName_;
277 String parent_;
279 };
280};
Module for generating node and element groups from input specifications.
Definition GroupInputModule.h:55
static const char * NODE_GROUPS
Node groups property.
Definition GroupInputModule.h:62
static const char * TYPE_NAME
Module type name.
Definition GroupInputModule.h:61
static void declare()
Register GroupInputModule type with ModuleFactory.
Definition GroupInputModule.cpp:149
static const char * ELEM_GROUPS
Element groups property.
Definition GroupInputModule.h:63
static Ref< Module > makeNew(const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
Factory method for creating new GroupInputModule instances.
Definition GroupInputModule.cpp:132
virtual ~GroupInputModule()
Protected destructor.
Definition GroupInputModule.cpp:59
virtual Status init(const Properties &conf, const Properties &props, const Properties &globdat) override
Initialize the module and create groups.
Definition GroupInputModule.cpp:69