pub trait RONExportParallel<'a, C: Communicator + 'a>: ParallelGrid<C = C>{
// Provided method
fn export_as_ron(&'a self, filename: &str) { ... }
}
Expand description
Parallel grid export for RON
Provided Methods§
Sourcefn export_as_ron(&'a self, filename: &str)
fn export_as_ron(&'a self, filename: &str)
Export as RON
Examples found in repository?
More examples
examples/parallel_io.rs (line 34)
17fn main() {
18 let universe: Universe = mpi::initialize().unwrap();
19 let comm = universe.world();
20 let rank = comm.rank();
21
22 let g = if rank == 0 {
23 // Create a grid using the shapes module: unit_cube_boundary will mesh the surface of a cube
24 let serial_g = shapes::unit_cube_boundary::<f64>(4, 5, 4, ReferenceCellType::Triangle);
25
26 // Distribute this grid across processes
27 serial_g.distribute(&comm, GraphPartitioner::None)
28 } else {
29 let b = SingleElementGridBuilder::<f64>::new(3, (ReferenceCellType::Triangle, 1));
30 b.create_parallel_grid(&comm, 0)
31 };
32
33 // If the serde option is used, the raw grid data can be exported in RON format
34 g.export_as_ron("_unit_cube_boundary_parallel.ron");
35
36 // Wait for export to finish
37 comm.barrier();
38
39 // A grid can be re-imported from raw RON data. Note that it must be imported on the same number of processes as it was exported using
40 let g2 = ParallelGridImpl::<'_, _, SingleElementGrid::<f64, CiarletElement<f64, IdentityMap>>>::import_from_ron(&comm, "_unit_cube_boundary_parallel.ron");
41
42 // Print the first 5 cells of each grid on process 0
43 if rank == 0 {
44 println!("The first 5 cells of the grids");
45 for (cell, cell2) in izip!(g.local_grid().cell_iter(), g2.local_grid().cell_iter()).take(5)
46 {
47 println!(
48 "{:?} {:?}",
49 cell.topology().sub_entity_iter(0).collect::<Vec<_>>(),
50 cell2.topology().sub_entity_iter(0).collect::<Vec<_>>(),
51 );
52 }
53 }
54}