SIFEL Home page
SIFEL - SImple Finite ELements
MESHDECOMP
The MESHDECOMP is an open source project for decomposition of meshes, which will be used in parallel computing. The MESHDECOMP code is a part of SIFEL open source project and is located in PREP/PARTITIONING/ of SIFEL folder sturcture. The code uses keywords from SIFEL. The MESHDECOMP code has four modes.
- preprocessing - creates dual graph from finite element mesh. This dual graph is then used in graph partitioners - METIS, CHACO, PARTY and JOSTLE.
- postprocessing - creates decomposed mesh (several files with mesh topology) form output of mentioned partitioners.
- all - is complex and directly use METIS library for partitioning. In such a case, sequential mesh is input and decomposed mesh is output.
- aggregates - is for sequential computation with aggregates - BOSS preconditioning.
The syntax for usage is:
where
./meshdecomp file.dec
file.dec
is a file with informations about mesh and decomposition.
File is split into two parts - sec_files
and sec_part
.
The structure of the part sec_files
is following:
begsec_files # section with informations about sequential meshes and mesh description
topology_file file.top # file with sequential mesh
mesh_format sifel # format of sequential mesh - sifel or t3d
edge_numbering 1 # edge numbering
endsec_files
The sec_part
has different structure for each option of the processing. The first line includes the
type of processing. Syntax of sec_part
section:
begsec_part # section with partitioning data
All types of processing can be used in case of METIS. In all other cases, preprocessing or postprocessing
can be only used. Preprocessing creates dual graph for graph partitioners. There is structure
processing {preprocessing | postprocessing | all | aggregates}
endsec_part
sec_part
:
where the options have the following meaning:
partType {METIS| JOSTLE| CHACO| PARTY}
weigh_graph {noweight| nodalweight |edgeweight |nodealedgeweight |multiconstrain}
noweight
- unweighted graphnodalweight
- vertices of graph have only own weightsedgeweight
- edges of graph have only own weightsnodealedgeweight
- vertices and edges have own weightsmulticonstrain
- for multi constrained graphs
weight_option {default | user}
where the options have the following meaning:
default
- weights are computed in codeuser
- user defined weights
file_with_weights weightf
where weightf
is file with weights.
graph_output_file graphf
where
graphf
is file for output dual graph.
Several examples of file.dec
follows for the case of
preprocessing. Topology file.top with mesh is in the SIFEL format and dual unweighted
graph will be created for JOSTLE. Corresponding input file for the MESHDECOMP is in
file.dec produces resulting file file-graph.grf.
Another examples of input files for MESHDECOMP follows:
Input file for the mesh given in SIFEL format and dual graph with nodal weights created for JOSTLE with computed weights:
Input file for the mesh given in SIFEL format and dual graph with nodal weights created for JOSTLE with weights defined by user.
begsec_files
mesh description
topology_file file.top
mesh_format sifel
edge_numbering 1
endsec_files
begsec_part
processing preprocessing
partType JOSTLE
weight_graph nodalweight
weight_option default
graph_output_file file-graph
endsec_part
begsec_files
mesh description
topology_file file.top
mesh_format sifel
edge_numbering 1
endsec_files
begsec_part
processing preprocessing
partType JOSTLE
weight_graph nodalweight
weight_option user
graph_output_file file-graph
endsec_part
Postprocessing creates files with meshes for parallel computing. Creation of such meshes is based on output from
graph partitioners and on original sequential mesh. There is structure sec_part
which contains following
records:
mesh_description {all_nodes| bound_nodes| neg_bound_nodes}
- type of mesh description of parallel meshes - bound_nodes or all_nodes (see PARGEF manual),partType {METIS| JOSTLE| CHACO| PARTY}
,number_of_partitions npart
wherenpart
is number of partitions into which original mesh was decomposed,partitioning_file partf
wherepartf
is file with decomposition of the sequential mesh,output_file_name outputfname
where outputfname is filename for files with decomposed mesh.
Example of file_post.dec in case of postprocessing:
Mesh is in the SIFEL format and JOSTLE graph partitioner was used for decomposition. The mesh was decomposed into 4 subdomains and
results are stored in files file-decomp1.top
- file-decomp4.top
. The file.top
is the
same as in above examples. The file.grf.ptn contains output from JOSTLE.
begsec_files
mesh description
topology_file file.top
mesh_format sifel
mesh_description bound_nodes
edge_numbering 1
endsec_files
begsec_part
processing postprocessing
mesh_description bound_nodes
partType JOSTLE
number_of_partitions 4
partitioning_file file.grf.ptn
output_file_name file-decomp.top
The option All in processing can be use only with METIS partitioning and creates parallel topology
directly from sequential mesh with the help of METIS library. There is structure sec_part
with this option:
number_of_partitions npart
wherenpart
is number of partitions into which original mesh was decomposedweight_graph {noweight| nodalweight| edgeweight| nodealedgeweight| multiconstrain}
weight_option {default | user}
file_with_weights weightf
output_file_name outputfname
partitioning_technique {recursive | kway}
kway
and recursive
bisection is described in METIS manual.
If the number of partition is smaller than eight recursive
bisection is better than kway
.
Example of file.dec in case of all:
Mesh is in SIFEL format and METIS graph partitioner will be used for decomposition. The topology file
file.top is the same as in the above examples. The mesh will be decomposed into 4 subdomains
and results are stored in files file-dec1.top
- file-dec4.top
. The input file for the MESHDECOMP
file_metis.dec contains:
begsec_files
mesh description
topology_file file.top
mesh_format sifel
mesh_description bound_nodes
edge_numbering 1
endsec_files
begsec_part
processing all
mesh_description bound_nodes
number_of_partitions 4
weight_graph noweight
output_file_name file-dec.top
partitioning_technique recursive
endsec_part
Aggregates in processing can be use only with METIS partitioning and reprint sequential topology and
uses mesh description for aggregates computation. The structure of section is similar as in All processing.
Example of sec_part:
where naggreg is number of aggregates
begsec_part
processing aggregates
number_of_aggregates naggreg
output_file_name newfile.top
partitioning_technique recursive
endsec_part
Written by Jaroslav Broz 2010-11-11
