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{
56public:
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
93protected:
94 virtual ~GroupInputModule();
95
96private:
98 idx_t numNodes_;
99
104 void configure_(const Properties &conf,
105 const Properties &props,
106 const Properties &globdat);
107
110 void makeNodeGroups_(const Properties &globdat);
111
112 //=======================================================================
113 // class NGroup_
114 //=======================================================================
115
120 class NGroup_ : public Object
121 {
122 public:
124 explicit NGroup_();
125
127 ~NGroup_();
128
133 void configure(const Properties &conf,
134 const Properties &props,
135 const String &name);
136
139 void makeGroup(const Properties &globdat);
140
143 static const char *X_NAMES[3];
144 static const double PI;
146
147 StringVector knownTypes;
148
150 enum Check
151 {
152 NONE,
153 VALUE,
154 BOUNDS
155 };
156
157 private:
161 void findCandidates_(const ElementSet &elems,
162 const Properties &globdat);
163
166 void findNodes_(const NodeSet &nodes);
167
171 void store_(const NodeSet &nodes,
172 const Properties &globdat);
173
176 idx_t rank_;
177 bool all_;
178 double eps_;
179 double angle_;
180 double radius_;
182
184 Array<Check> doX_;
185
187 Tuple<Vector, 3> xvals_;
188
190 Tuple<String, 3> xtype_;
191
193 Matrix xbounds_;
194
197 IdxVector inodes_;
198 String myName_;
199 StringVector restrictTo_;
200 IdxVector restrictPartial_;
202 };
203
204 //=======================================================================
205 // class EGroup_
206 //=======================================================================
207
212 class EGroup_ : public Object
213 {
214 public:
216 explicit EGroup_();
217
219 ~EGroup_();
220
225 void configure(const Properties &conf,
226 const Properties &props,
227 const String &name);
228
231 void makeGroup(const Properties &globdat);
232
235 static const char *X_NAMES[3];
236 static const double PI;
238
239 StringVector knownTypes;
240
242 enum Check
243 {
244 NONE,
245 VALUE,
246 BOUNDS
247 };
248
249 private:
253 void findElems_(const ElementSet &elems,
254 const Properties &globdat);
255
259 void store_(const ElementSet &elems,
260 const Properties &globdat);
261
264 idx_t rank_;
265 bool all_;
266 double eps_;
268
270 Array<Check> doX_;
271
273 Tuple<Vector, 3> xvals_;
274
276 Tuple<String, 3> xtype_;
277
279 Tuple<bool, 3> completely_;
280
282 Matrix xbounds_;
283
286 IdxVector ielems_;
287 String myName_;
288 String parent_;
290 };
291};
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()
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