Sierra Toolkit
Version of the Day
|
![]() |
This use case demonstrates unequal element weights. A single-element-thick column of hex elements is constructed in the x-direction. Weights are assigned to elements such that a perfect rebalance is possible with Proc_Rank+1 elements placed on each processor. This is achieved when running on #procs < 4, but Zoltan does not produce the optimal new distribution for 4 or more procs.
The following hex8 mesh is used in this use case:
Global node and element numbering <pre> 3 7 11 15 19 +-------+-------+-------+-------+ +-------+ / / / / /| / /| 4/ 8/ 12/ 16/ 20/ | / / | Z Y +-------+-------+-------+-------+ | ...... +-------+ | | / | | | | | +18 | | / |/ | e1 | e2 | e3 | e4 | / | eN | / *--X | | | | |/ | |/ +-------+-------+-------+-------+ +-------+ 1 5 9 13 17 </pre> where N = #elements = (#procs)(#procs+1)/2 Local node numbering <pre> 8 7 +-------+ / /| 5/ 6/ | +-------+ | | | +3 | e1 | / | |/ +-------+ 1 2 </pre>
The mesh is constructed on proc 0 using the HexFixture class and unequal element weights are assigned as follows:
See UseCase_Rebal_1.cpp for the complete source listing.
This use case demonstrates element weights comprised of contributions from nodes, edges, faces and elements over a subset of the mesh. A 3x3x3 cube of hex8 elements is constructed on proc 0 and weights are assigned to a subset of mesh entities. The mesh and weights are assigned as follows:
Global node and element numbering <pre> +-------+-------+-------+ + + + / / / /| /| /| / / / / | / | / | +-------+-------+-------+ | + | + | / / / /| + /| + / + / / / / | /| / | /| / | +-------+-------+-------+ |/ | + |/ | + | / / / /| + | /| + | / | / / / / | /| + / | /| + / + +-------+-------+-------+ |/ | /| + |/ | /| + | + | | | | + |/ | | + |/ | | | | e1 | e2 | e3 | /| + | | /| + | | | | | | |/ | /| + |/ | /| + | + + +-------+-------+-------+ |/ | / + |/ | / + / | | | | + |/ | + |/ | / | e1 | e2 | e3 | /| + | /| + | + | | | |/ | / |/ | / | / +-------+-------+-------+ |/ + |/ + / | | | | + | + | + | e1 | e2 | e3 | / | / | / | | | |/ |/ |/ +-------+-------+-------+ + + + x = 0 </pre>
Weight_elems = 1.0 Z Y Local node numbering Weight_faces = 10.0 | / Weight_edges = 100.0 |/ 8 7 Weight_nodes = 1000.0 *--X +-------+ / /| 5/ 6/ | +-------+ | | | +3 | e1 | / | |/ +-------+ 1 2
where all 27 elements are assigned weights along with the 9 faces, 12 edges and 4 nodes on the plane at x = 0.
The use case passes if the amount of imbalance following a rebalance is below 1.45 for 3 procs and below 1.1 for 2 or 4 procs.
See UseCase_Rebal_2.cpp for the complete source listing.
This use case sets up a 2D mesh of quad4 elements and then establishes a constraint realtion between the top and bottom of the mesh as would be needed to enforce periodic boundary conditions.
The following quad4 mesh is manually constructed on proc 0:
Global node and element numbering <pre> 21 22 23 24 25 +-------+-------+-------+-------+ y = top | | | | | | e13 | e14 | e15 | e16 | | | | |5 | 16 +-------+-------+-------+-------+ 20 | | | | | | e9 | e10 | e11 | e12 | | | | | | 11 +-------+-------+-------+-------+ 15 | | | | | | e5 | e6 | e7 | e8 | | |5 | | | 6 +-------+-------+-------+-------+ 10 | | | | | | e1 | e2 | e3 | e4 | | | | | | +-------+-------+-------+-------+ y = bottom 1 2 3 4 5 </pre>
Local node numbering:
3 4 +-------+ Y | | | | e1 | | | | *--> X +-------+ 1 2
and the two sets of nodes at y=bottom and y=top are related through constraint relations as follows:
The use case passes if the load imbalance of the new partition is below the nominal value of 1.5.
See UseCase_Rebal_3.cpp for the complete source listing.
This use case demonstrates additional user customization following a default rebalance in order to enforce constraints for new partitions. In this case, the constraint is that two quad4 elements sharing edge #7 be collocated on the same proc following rebalance. This is enforced using a greedy sideset class which inherits the determine_new_partition method.
The following quad4 mesh is used in this use case:
Global node and element numbering
13 14 15 16 +-------+-------+-------+ | | | | | e7 | e8 | e9 | | | | | 9 +-------+-------+-------+ 12 Y | | | | | | e4 | e5 | e6 | | | | | | *--> X 5 +-------+-------+-------+ 8 | | | | | e1 | e2 | e3 | | | | | +-------+-------+-------+ 1 2 3 4
Local node numbering
3 4 +-------+ | | | e1 | | | +-------+ 1 2
See UseCase_Rebal_4.cpp for the complete source listing.