![]() |
Chi-Tech
|
Modules | |
| chi_mesh.ExtruderMeshGenerator | |
| chi_mesh.FromFileMeshGenerator | |
| chi_mesh.MeshGenerator | |
| chi_mesh.OrthogonalMeshGenerator | |
We split a MeshGenerator's execution into a phase that generates an unpartitioned mesh and a phase that then converts this mesh into partitioned chi_mesh::MeshContinuum (with both steps customizable). The phase that creates the MeshContinuum object can be hooked up to a partitioner that can also be designed to be pluggable.
In this example we created a set of nodes (monotonically increasing in value) for use with the chi_mesh.OrthogonalMeshGenerator. We supplied the same set twice meaning the generator will build a 2D mesh.
We did not specify a partitioner and therefore the generator will use the chi.PETScGraphPartitioner with type="parmetis" by default. Using 8 processes, we can see the mesh and it's partitioning below.
In this example we created a mesh by reading it from a file, using the chi_mesh.FromFileMeshGenerator. The types of file-types we can support is ever growing. At the time of writing this we support the following formats:
.obj Wavefront.msh gmesh,.e ExodusII,.vtu VTK Unstructured grid,.pvtu Pieced VTK Unstructured grid,.case Ensight GoldUsing 8 processes, we can see the mesh and it's partitioning below.
In this example we use an chi_mesh.ExtruderMeshGenerator with another mesh generator as an input to create an extruded mesh. Using 8 processes, we can see the mesh and it's partitioning below.
ChiTech now has a set of Graph Partitioners (i.e. based off GraphPartitioner) that support different forms of partitioning, for example we have:
"parmetis").An example of changing the partitioning to PETSc's "average" option is shown below:
Another example using the KBAGraphPartitioner is shown below