Loading [MathJax]/extensions/tex2jax.js
ug4
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
distributed_grid.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2010-2015: G-CSC, Goethe University Frankfurt
3 * Author: Sebastian Reiter
4 *
5 * This file is part of UG4.
6 *
7 * UG4 is free software: you can redistribute it and/or modify it under the
8 * terms of the GNU Lesser General Public License version 3 (as published by the
9 * Free Software Foundation) with the following additional attribution
10 * requirements (according to LGPL/GPL v3 §7):
11 *
12 * (1) The following notice must be displayed in the Appropriate Legal Notices
13 * of covered and combined works: "Based on UG4 (www.ug4.org/license)".
14 *
15 * (2) The following notice must be displayed at a prominent place in the
16 * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
17 *
18 * (3) The following bibliography is recommended for citation and must be
19 * preserved in all covered files:
20 * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
21 * parallel geometric multigrid solver on hierarchically distributed grids.
22 * Computing and visualization in science 16, 4 (2013), 151-164"
23 * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
24 * flexible software system for simulating pde based models on high performance
25 * computers. Computing and visualization in science 16, 4 (2013), 165-179"
26 *
27 * This program is distributed in the hope that it will be useful,
28 * but WITHOUT ANY WARRANTY; without even the implied warranty of
29 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30 * GNU Lesser General Public License for more details.
31 */
32
33#ifndef __H__LIB_GRID__DISTRIBUTED_GRID__
34#define __H__LIB_GRID__DISTRIBUTED_GRID__
35
36#include <map>
37#include <vector>
39#include "lib_grid/multi_grid.h"
41#include "distro_adjuster.h"
42
43namespace ug
44{
45
48
50
67
68
70
88{
89 public:
93
94 // assignment
95 void assign(MultiGrid& grid);
96
98 inline const MultiGrid* get_assigned_grid() const {return m_pGrid;}
99
100 // layout access
104 inline const GridLayoutMap& grid_layout_map() const {return m_gridLayoutMap;}
105
107
116 void grid_layouts_changed(bool addedElemsOnly = false);
117
119
124 byte get_status(GridObject* go) const;
125 inline byte get_status(Vertex* vrt) const {return elem_info(vrt).get_status();}
126 inline byte get_status(Edge* edge) const {return elem_info(edge).get_status();}
127 inline byte get_status(Face* face) const {return elem_info(face).get_status();}
128 inline byte get_status(Volume* vol) const {return elem_info(vol).get_status();}
132
134 template <class TGeomObj>
135 bool contains_status(TGeomObj* o, byte status) const {return (get_status(o) & status) == status;}
136
138
140 template<class TElem>
141 inline bool is_ghost(TElem* elem) const;
142
144 template<class TElem>
145 inline bool is_in_horizontal_interface(TElem* elem) const;
146
148 template<class TElem>
149 inline bool is_in_vertical_interface(TElem* elem) const;
150
151 // element creation
153
156
158
161
162 // element deletion
165
168
170 template <class TElem>
171 bool is_interface_element(TElem* elem);
172
176 template <class TElem>
178 std::vector<std::pair<int, size_t> >& vEntriesOut,
179 TElem* elem, byte statusType, bool clearContainer = true);
180
181
183
189
190
192
203
206
208 // grid callbacks
209 virtual void grid_to_be_destroyed(Grid* grid);
210
211 // vertex callbacks
212 virtual void vertex_created(Grid* grid, Vertex* vrt,
213 GridObject* pParent = NULL,
214 bool replacesParent = false);
215
216 virtual void edge_created(Grid* grid, Edge* e,
217 GridObject* pParent = NULL,
218 bool replacesParent = false);
219
220 virtual void face_created(Grid* grid, Face* f,
221 GridObject* pParent = NULL,
222 bool replacesParent = false);
223
224 virtual void volume_created(Grid* grid, Volume* v,
225 GridObject* pParent = NULL,
226 bool replacesParent = false);
227
228 virtual void vertex_to_be_erased(Grid* grid, Vertex* vrt,
229 Vertex* replacedBy = NULL);
230
231 virtual void edge_to_be_erased(Grid* grid, Edge* e,
232 Edge* replacedBy = NULL);
233
234 virtual void face_to_be_erased(Grid* grid, Face* f,
235 Face* replacedBy = NULL);
236
237 virtual void volume_to_be_erased(Grid* grid, Volume* vol,
238 Volume* replacedBy = NULL);
239
240 protected:
242
243 void set_grid(Grid* grid);
244
246 void free_grid_data();
247
248 template <class TGeomObj>
249 void reset_elem_infos();
250
251 /* Currently unused. See implementation for more details.
252 template <class TElem>
253 void set_preliminary_ghost_states();
254
255 void update_ghost_states();
256 */
257
258 template <class TGeomObj, class TLayoutMap>
259 void update_elem_info(TLayoutMap& layoutMap, int nodeType,
260 byte newStatus, bool addStatus = false);
261
262 template <class TGeomObj>
264
266 template <class TElem>
267 void handle_created_element(TElem* pElem, GridObject* pParent,
268 bool replacesParent);
269
270 template <class TElem, class TScheduledElemMap, class TParent>
271 void schedule_element_for_insertion(TScheduledElemMap& elemMap,
272 TElem* elem,
273 TParent* pParent);
274
276
277 template <class TScheduledElemMap>
278 void perform_ordered_element_insertion(TScheduledElemMap& elemMap);
279
280 template <class TElem>
281 void add_element_to_interface(TElem* pElem, int procID);
282
283 template <class TElem>
284 void element_to_be_erased(TElem* elem);
285
287 template <class TElem>
288 void create_missing_constrained_h_interfaces(std::vector<TElem*>& newConstrainedElems);
289
290 protected:
292
296 template <class TGeomObj>
298 {
299 public:
300 // types
301 typedef typename GridLayoutMap::template Types<TGeomObj>
303 typedef typename Interface::iterator InterfaceElemIter;
304 //typedef std::pair<Interface*, InterfaceElemIter> Entry;
305
306 struct Entry{
307 Entry() {}
308 Entry(Interface* intfc, InterfaceElemIter intfcElemIter, int intfcType) :
309 m_interface(intfc), m_interfaceElemIter(intfcElemIter),
310 m_interfaceType(intfcType) {}
311
315 };
316
317 typedef std::list<Entry> EntryList;
318 typedef typename EntryList::iterator EntryIterator;
319 typedef typename EntryList::const_iterator ConstEntryIterator;
320
321 // methods
323
324 ~ElementInfo() {if(has_data()) m_data.reset();}
325
326 void reset()
327 {
328 if(has_data()){
329 //todo: reuse m_data
330 m_data.reset();
331 }
332 }
333
334 void add_entry(Interface* interface,
336 int intfcType) {data().m_entries.push_back(Entry(interface, iter, intfcType));}
337
338 void remove_entry(Interface* interface) {data().m_entries.erase(find_entry(interface));}
339
341
342 inline EntryIterator entries_begin() {assert(has_data()); return m_data->m_entries.begin();}
343 inline EntryIterator entries_end() {assert(has_data()); return m_data->m_entries.end();}
344
345 inline ConstEntryIterator entries_begin() const {assert(has_data()); return m_data->m_entries.begin();}
346 inline ConstEntryIterator entries_end() const {assert(has_data()); return m_data->m_entries.end();}
349 size_t get_local_id(EntryIterator iter) const {return iter->m_interface->get_local_id(iter->m_interfaceElemIter);}
350 size_t get_local_id(ConstEntryIterator iter) const {return iter->m_interface->get_local_id(iter->m_interfaceElemIter);}
351 int get_target_proc(EntryIterator iter) const {return iter->m_interface->get_target_proc();}
352 int get_target_proc(ConstEntryIterator iter) const {return iter->m_interface->get_target_proc();}
353 Interface* get_interface(EntryIterator iter) {return iter->m_interface;}
354 int get_interface_type(EntryIterator iter) const {return iter->m_interfaceType;}
355 int get_interface_type(ConstEntryIterator iter) const {return iter->m_interfaceType;}
356
359 { assert(has_data());
360 for(EntryIterator iter = entries_begin(); iter != entries_end(); ++iter){
361 if(iter->m_interface == interface)
362 return iter;
363 }
364 return entries_end();
365 }
366
367 void set_status(byte status)
368 {
369 if(!has_data() && (status == ES_NONE))
370 return;
371 data().m_status = status;
372 }
373 byte get_status() const
374 {
375 if(!has_data()) return ES_NONE;
376 return m_data->m_status;
377 }
378
380 {
381 if(!has_data()) return false;
382 return !m_data->m_entries.empty();
383 }
384
385 protected:
391
393 inline Data& data()
394 {
395 if(!has_data())
396 m_data.get() = new Data;
397 return *m_data;
398 }
399
400 inline bool has_data() const {return m_data.get() != NULL;}
401
403
407 };
408
413
418
420
426 {
427 ScheduledElement(GridObject* obj, int procID) :
428 geomObj(obj), connectedProcID(procID) {}
429
432 };
433
434 typedef std::multimap<size_t, ScheduledElement> ScheduledElemMap;
435
436 protected:
437 inline ElemInfoVrt& elem_info(Vertex* ele) {return m_aaElemInfoVRT[ele];}
438 inline ElemInfoEdge& elem_info(Edge* ele) {return m_aaElemInfoEDGE[ele];}
439 inline ElemInfoFace& elem_info(Face* ele) {return m_aaElemInfoFACE[ele];}
440 inline ElemInfoVol& elem_info(Volume* ele) {return m_aaElemInfoVOL[ele];}
441
442 inline const ElemInfoVrt& elem_info(Vertex* ele) const {return m_aaElemInfoVRT[ele];}
443 inline const ElemInfoEdge& elem_info(Edge* ele) const {return m_aaElemInfoEDGE[ele];}
444 inline const ElemInfoFace& elem_info(Face* ele) const {return m_aaElemInfoFACE[ele];}
445 inline const ElemInfoVol& elem_info(Volume* ele) const {return m_aaElemInfoVOL[ele];}
446
450 inline void got_new_constrained_vertical(Volume*) {UG_THROW("There are no constrained volumes!");}
451
452
453 protected:
456
458
461
466
471
476
477 std::vector<Vertex*> m_newConstrainedVerticalVrts;
480
482};
483
485
486}// end of namespace
487
489// include implementation
491
492#endif
Definition smart_pointer.h:108
A generic specialization of IAttachment.
Definition attachment_pipe.h:263
Be careful when creating copies of ElementInfo.
Definition distributed_grid.h:298
Data & data()
returns the data object. Creates it if necessary.
Definition distributed_grid.h:393
size_t get_local_id(ConstEntryIterator iter) const
Definition distributed_grid.h:350
int get_interface_type(ConstEntryIterator iter) const
Definition distributed_grid.h:355
void reset()
Definition distributed_grid.h:326
void remove_entry(Interface *interface)
Definition distributed_grid.h:338
GridLayoutMap::template Types< TGeomObj >::Interface Interface
Definition distributed_grid.h:302
int get_target_proc(EntryIterator iter) const
Definition distributed_grid.h:351
OwnedPtr< Data > m_data
OwnedPtr is required to transfer ownership of the data-ptr during copy-operations.
Definition distributed_grid.h:406
Interface * get_interface(EntryIterator iter)
Definition distributed_grid.h:353
ConstEntryIterator entries_begin() const
Note: This method may only be called if is_interface_entry() returns true.
Definition distributed_grid.h:345
bool has_data() const
Definition distributed_grid.h:400
std::list< Entry > EntryList
Definition distributed_grid.h:317
int get_interface_type(EntryIterator iter) const
Definition distributed_grid.h:354
EntryIterator entries_end()
Note: This method may only be called if is_interface_entry() returns true.
Definition distributed_grid.h:343
int get_target_proc(ConstEntryIterator iter) const
Definition distributed_grid.h:352
ElementInfo()
Definition distributed_grid.h:322
EntryList::iterator EntryIterator
Definition distributed_grid.h:318
bool is_interface_element()
Definition distributed_grid.h:379
byte get_status() const
Definition distributed_grid.h:373
void add_entry(Interface *interface, InterfaceElemIter iter, int intfcType)
Definition distributed_grid.h:334
void set_status(byte status)
Definition distributed_grid.h:367
EntryList::const_iterator ConstEntryIterator
Definition distributed_grid.h:319
EntryIterator entries_begin()
Note: This method may only be called if is_interface_entry() returns true.
Definition distributed_grid.h:342
Interface::iterator InterfaceElemIter
Definition distributed_grid.h:303
EntryIterator find_entry(Interface *interface)
Note: This method may only be called if is_interface_entry() returns true.
Definition distributed_grid.h:358
ConstEntryIterator entries_end() const
Note: This method may only be called if is_interface_entry() returns true.
Definition distributed_grid.h:346
size_t get_local_id(EntryIterator iter) const
Definition distributed_grid.h:349
~ElementInfo()
Definition distributed_grid.h:324
manages the layouts and interfaces which are associated with a distributed grid.
Definition distributed_grid.h:88
Grid::FaceAttachmentAccessor< AElemInfoFace > m_aaElemInfoFACE
Definition distributed_grid.h:469
ElemInfoVol & elem_info(Volume *ele)
Definition distributed_grid.h:440
GridLayoutMap & grid_layout_map()
Definition distributed_grid.h:103
void collect_interface_entries(std::vector< std::pair< int, size_t > > &vEntriesOut, TElem *elem, byte statusType, bool clearContainer=true)
Definition distributed_grid_impl.hpp:79
void add_element_to_interface(TElem *pElem, int procID)
Definition distributed_grid.cpp:438
void handle_created_element(TElem *pElem, GridObject *pParent, bool replacesParent)
vertex_created, edge_created, ... callbacks call this method.
Definition distributed_grid.cpp:570
void free_grid_data()
free's all grid related data
Definition distributed_grid.cpp:129
ScheduledElemMap m_volMap
holds all elements that were scheduled by volumes
Definition distributed_grid.h:475
virtual void grid_to_be_destroyed(Grid *grid)
Definition distributed_grid.cpp:145
AElemInfoFace m_aElemInfoFace
Definition distributed_grid.h:464
virtual void volume_created(Grid *grid, Volume *v, GridObject *pParent=NULL, bool replacesParent=false)
Notified whenever a new element of the given type is created in the given grid.
Definition distributed_grid.cpp:695
byte get_status(Volume *vol) const
returns the status of the given object.
Definition distributed_grid.h:128
const ElemInfoFace & elem_info(Face *ele) const
Definition distributed_grid.h:444
void set_distro_adjuster(SmartPtr< DistroAdjuster > adj)
set a global distribution adjuster
Definition distributed_grid.h:202
std::vector< Edge * > m_newConstrainedVerticalEdges
Definition distributed_grid.h:478
ScheduledElemMap m_edgeMap
holds all elements that were scheduled by edges
Definition distributed_grid.h:473
ElemInfoFace & elem_info(Face *ele)
Definition distributed_grid.h:439
bool is_in_horizontal_interface(TElem *elem) const
returns true if the element is contained in a horizontal interface
Definition distributed_grid_impl.hpp:51
byte get_status(Vertex *vrt) const
returns the status of the given object.
Definition distributed_grid.h:125
virtual ~DistributedGridManager()
Definition distributed_grid.cpp:76
ElementInfo< Vertex > ElemInfoVrt
Definition distributed_grid.h:409
std::vector< Vertex * > m_newConstrainedVerticalVrts
Definition distributed_grid.h:477
SmartPtr< DistroAdjuster > m_spDistroAdjuster
Definition distributed_grid.h:481
std::multimap< size_t, ScheduledElement > ScheduledElemMap
Definition distributed_grid.h:434
void begin_element_deletion()
call this method before you start deleting elements in the associated grid
Definition distributed_grid.cpp:705
byte get_status(GridObject *go) const
returns the status of the given object.
Definition distributed_grid.cpp:379
void clear_scheduled_elements()
Definition distributed_grid.cpp:525
DistributedGridManager()
Definition distributed_grid.cpp:47
void got_new_constrained_vertical(Vertex *v)
Definition distributed_grid.h:447
void set_grid(Grid *grid)
performs registration and deregistration at a grid.
Definition distributed_grid.cpp:98
MultiGrid * m_pGrid
Definition distributed_grid.h:454
virtual void vertex_created(Grid *grid, Vertex *vrt, GridObject *pParent=NULL, bool replacesParent=false)
Notified whenever a new element of the given type is created in the given grid.
Definition distributed_grid.cpp:673
virtual void face_to_be_erased(Grid *grid, Face *f, Face *replacedBy=NULL)
Notified whenever an element of the given type is erased from the given grid.
Definition distributed_grid.cpp:1261
ScheduledElemMap m_faceMap
holds all elements that were scheduled by faces
Definition distributed_grid.h:474
ElemInfoEdge & elem_info(Edge *ele)
Definition distributed_grid.h:438
MultiGrid * get_assigned_grid()
Definition distributed_grid.h:97
void grid_layouts_changed(bool addedElemsOnly=false)
call this method if you altered the layout externally.
Definition distributed_grid.cpp:280
void got_new_constrained_vertical(Face *f)
Definition distributed_grid.h:449
void got_new_constrained_vertical(Volume *)
Definition distributed_grid.h:450
const ElemInfoEdge & elem_info(Edge *ele) const
Definition distributed_grid.h:443
const MultiGrid * get_assigned_grid() const
Definition distributed_grid.h:98
const GridLayoutMap & grid_layout_map() const
Definition distributed_grid.h:104
Attachment< ElemInfoEdge > AElemInfoEdge
Definition distributed_grid.h:415
virtual void face_created(Grid *grid, Face *f, GridObject *pParent=NULL, bool replacesParent=false)
Notified whenever a new element of the given type is created in the given grid.
Definition distributed_grid.cpp:688
void begin_ordered_element_insertion()
call this method before you start creating new elements in the associated grid.
Definition distributed_grid.cpp:400
void create_missing_constrained_h_interfaces(std::vector< TElem * > &newConstrainedElems)
Definition distributed_grid.cpp:1042
bool m_interfaceManagementEnabled
only for debug purposes
Definition distributed_grid.h:457
Grid::VertexAttachmentAccessor< AElemInfoVrt > m_aaElemInfoVRT
Definition distributed_grid.h:467
ElementInfo< Edge > ElemInfoEdge
Definition distributed_grid.h:410
void schedule_element_for_insertion(TScheduledElemMap &elemMap, TElem *elem, TParent *pParent)
Definition distributed_grid.cpp:537
virtual void vertex_to_be_erased(Grid *grid, Vertex *vrt, Vertex *replacedBy=NULL)
Notified whenever an element of the given type is erased from the given grid.
Definition distributed_grid.cpp:1247
bool is_interface_element(TElem *elem)
returns true if an element is in one or more interfaces
Definition distributed_grid_impl.hpp:44
void enable_interface_management(bool bEnable)
Enables or disables interface managment. Use with care!
Definition distributed_grid.h:188
void update_all_elem_infos()
Definition distributed_grid.cpp:307
GridLayoutMap m_gridLayoutMap
Definition distributed_grid.h:455
void reset_elem_infos()
Definition distributed_grid.cpp:324
virtual void edge_created(Grid *grid, Edge *e, GridObject *pParent=NULL, bool replacesParent=false)
Notified whenever a new element of the given type is created in the given grid.
Definition distributed_grid.cpp:681
AElemInfoVol m_aElemInfoVol
Definition distributed_grid.h:465
void got_new_constrained_vertical(Edge *e)
Definition distributed_grid.h:448
ElementInfo< Face > ElemInfoFace
Definition distributed_grid.h:411
SmartPtr< DistroAdjuster > distro_adjuster()
get the distribution adjuster
Definition distributed_grid.h:205
Attachment< ElemInfoVrt > AElemInfoVrt
Definition distributed_grid.h:414
Grid::VolumeAttachmentAccessor< AElemInfoVol > m_aaElemInfoVOL
Definition distributed_grid.h:470
Grid::EdgeAttachmentAccessor< AElemInfoEdge > m_aaElemInfoEDGE
Definition distributed_grid.h:468
ElemInfoVrt & elem_info(Vertex *ele)
Definition distributed_grid.h:437
ElementInfo< Volume > ElemInfoVol
Definition distributed_grid.h:412
std::vector< Face * > m_newConstrainedVerticalFaces
Definition distributed_grid.h:479
const ElemInfoVrt & elem_info(Vertex *ele) const
Definition distributed_grid.h:442
bool is_ghost(TElem *elem) const
returns true if the element is a ghost
Definition distributed_grid_impl.hpp:67
void end_ordered_element_insertion()
call this method when you're done with element creation.
Definition distributed_grid.cpp:505
byte get_status(Face *face) const
returns the status of the given object.
Definition distributed_grid.h:127
Attachment< ElemInfoFace > AElemInfoFace
Definition distributed_grid.h:416
bool contains_status(TGeomObj *o, byte status) const
returns true if the status of the given object contains the given status.
Definition distributed_grid.h:135
bool is_in_vertical_interface(TElem *elem) const
returns true if the element is contained in a vertical interface
Definition distributed_grid_impl.hpp:59
bool m_bOrderedInsertionMode
Definition distributed_grid.h:459
AElemInfoVrt m_aElemInfoVrt
Definition distributed_grid.h:462
void perform_ordered_element_insertion(TScheduledElemMap &elemMap)
Definition distributed_grid.cpp:474
bool m_bElementDeletionMode
Definition distributed_grid.h:460
void update_elem_info(TLayoutMap &layoutMap, int nodeType, byte newStatus, bool addStatus=false)
Definition distributed_grid.cpp:337
byte get_status(Edge *edge) const
returns the status of the given object.
Definition distributed_grid.h:126
void assign(MultiGrid &grid)
Definition distributed_grid.cpp:92
virtual void edge_to_be_erased(Grid *grid, Edge *e, Edge *replacedBy=NULL)
Notified whenever an element of the given type is erased from the given grid.
Definition distributed_grid.cpp:1254
AElemInfoEdge m_aElemInfoEdge
Definition distributed_grid.h:463
void end_element_deletion()
call this method after you're done deleting elements from the associated grid
Definition distributed_grid.cpp:1175
ScheduledElemMap m_vrtMap
holds all elements that were scheduled by vertices
Definition distributed_grid.h:472
virtual void volume_to_be_erased(Grid *grid, Volume *vol, Volume *replacedBy=NULL)
Notified whenever an element of the given type is erased from the given grid.
Definition distributed_grid.cpp:1268
const ElemInfoVol & elem_info(Volume *ele) const
Definition distributed_grid.h:445
Attachment< ElemInfoVol > AElemInfoVol
Definition distributed_grid.h:417
void element_to_be_erased(TElem *elem)
Definition distributed_grid.cpp:1227
Base-class for edges.
Definition grid_base_objects.h:397
Faces are 2-dimensional objects.
Definition grid_base_objects.h:510
Manages the elements of a grid and their interconnection.
Definition grid.h:132
lets you access layouts by type and key
Definition parallel_grid_layout.h:152
The base class for all geometric objects, such as vertices, edges, faces, volumes,...
Definition grid_base_objects.h:157
Definition grid_observer.h:80
Definition multi_grid.h:72
Holds and automatically deletes a pointer, similar to std::auto_ptr. USE WITH CARE!
Definition owned_pointer.h:63
Base-class for all vertex-types.
Definition grid_base_objects.h:231
Volumes are 3-dimensional objects.
Definition grid_base_objects.h:754
ElementStatusTypes
the states with which elements are marked in ug::DistributedGridManager
Definition distributed_grid.h:56
@ ES_V_SLAVE
Definition distributed_grid.h:61
@ ES_IN_INTERFACE
Definition distributed_grid.h:65
@ ES_H_MASTER
Definition distributed_grid.h:58
@ ES_NONE
Definition distributed_grid.h:57
@ ES_SCHEDULED_FOR_INTERFACE
Definition distributed_grid.h:64
@ ES_V_MASTER
Definition distributed_grid.h:60
@ ES_H_SLAVE
Definition distributed_grid.h:59
#define UG_THROW(msg)
Definition error.h:57
the ug namespace
@ INT_NONE
Definition parallel_grid_layout.h:103
@ INT_V_MASTER
vertical master node
Definition parallel_grid_layout.h:106
@ INT_H_MASTER
horizontal master node
Definition parallel_grid_layout.h:104
@ INT_H_SLAVE
horizontal slave node
Definition parallel_grid_layout.h:105
@ INT_V_SLAVE
vertical slave node
Definition parallel_grid_layout.h:107
Definition parser_node.h:59
Definition distributed_grid.h:386
EntryList m_entries
Definition distributed_grid.h:388
byte m_status
Definition distributed_grid.h:389
Data()
Definition distributed_grid.h:387
Definition distributed_grid.h:306
Interface * m_interface
Definition distributed_grid.h:312
int m_interfaceType
Definition distributed_grid.h:314
Entry()
Definition distributed_grid.h:307
Entry(Interface *intfc, InterfaceElemIter intfcElemIter, int intfcType)
Definition distributed_grid.h:308
InterfaceElemIter m_interfaceElemIter
Definition distributed_grid.h:313
Used to schedule an element for insertion during ordered-insertion-mode.
Definition distributed_grid.h:426
ScheduledElement(GridObject *obj, int procID)
Definition distributed_grid.h:427
int connectedProcID
Definition distributed_grid.h:431
GridObject * geomObj
Definition distributed_grid.h:430