libMesh
Public Member Functions | List of all members
CheckpointIOTest Class Reference
Inheritance diagram for CheckpointIOTest:
[legend]

Public Member Functions

 CPPUNIT_TEST_SUITE (CheckpointIOTest)
 This test verifies that we can write files with the CheckpointIO object. More...
 
 CPPUNIT_TEST (testAsciiDistRepSplitter)
 
 CPPUNIT_TEST (testBinaryDistRepSplitter)
 
 CPPUNIT_TEST (testAsciiRepDistSplitter)
 
 CPPUNIT_TEST (testBinaryRepDistSplitter)
 
 CPPUNIT_TEST (testAsciiRepRepSplitter)
 
 CPPUNIT_TEST (testBinaryRepRepSplitter)
 
 CPPUNIT_TEST (testAsciiDistDistSplitter)
 
 CPPUNIT_TEST (testBinaryDistDistSplitter)
 
 CPPUNIT_TEST_SUITE_END ()
 
void setUp ()
 
void tearDown ()
 
template<typename MeshA , typename MeshB >
void testSplitter (bool binary, bool using_distmesh)
 
void testAsciiDistRepSplitter ()
 
void testBinaryDistRepSplitter ()
 
void testAsciiRepDistSplitter ()
 
void testBinaryRepDistSplitter ()
 
void testAsciiRepRepSplitter ()
 
void testBinaryRepRepSplitter ()
 
void testAsciiDistDistSplitter ()
 
void testBinaryDistDistSplitter ()
 

Detailed Description

Definition at line 14 of file checkpoint.C.

Member Function Documentation

◆ CPPUNIT_TEST() [1/8]

CheckpointIOTest::CPPUNIT_TEST ( testAsciiDistDistSplitter  )

◆ CPPUNIT_TEST() [2/8]

CheckpointIOTest::CPPUNIT_TEST ( testAsciiDistRepSplitter  )

◆ CPPUNIT_TEST() [3/8]

CheckpointIOTest::CPPUNIT_TEST ( testAsciiRepDistSplitter  )

◆ CPPUNIT_TEST() [4/8]

CheckpointIOTest::CPPUNIT_TEST ( testAsciiRepRepSplitter  )

◆ CPPUNIT_TEST() [5/8]

CheckpointIOTest::CPPUNIT_TEST ( testBinaryDistDistSplitter  )

◆ CPPUNIT_TEST() [6/8]

CheckpointIOTest::CPPUNIT_TEST ( testBinaryDistRepSplitter  )

◆ CPPUNIT_TEST() [7/8]

CheckpointIOTest::CPPUNIT_TEST ( testBinaryRepDistSplitter  )

◆ CPPUNIT_TEST() [8/8]

CheckpointIOTest::CPPUNIT_TEST ( testBinaryRepRepSplitter  )

◆ CPPUNIT_TEST_SUITE()

CheckpointIOTest::CPPUNIT_TEST_SUITE ( CheckpointIOTest  )

This test verifies that we can write files with the CheckpointIO object.

◆ CPPUNIT_TEST_SUITE_END()

CheckpointIOTest::CPPUNIT_TEST_SUITE_END ( )

◆ setUp()

void CheckpointIOTest::setUp ( )
inline

Definition at line 37 of file checkpoint.C.

38  {
39  }

◆ tearDown()

void CheckpointIOTest::tearDown ( )
inline

Definition at line 41 of file checkpoint.C.

42  {
43  }

◆ testAsciiDistDistSplitter()

void CheckpointIOTest::testAsciiDistDistSplitter ( )
inline

Definition at line 151 of file checkpoint.C.

152  {
153  testSplitter<DistributedMesh, DistributedMesh>(false, true);
154  }

◆ testAsciiDistRepSplitter()

void CheckpointIOTest::testAsciiDistRepSplitter ( )
inline

Definition at line 121 of file checkpoint.C.

122  {
123  testSplitter<DistributedMesh, ReplicatedMesh>(false, true);
124  }

◆ testAsciiRepDistSplitter()

void CheckpointIOTest::testAsciiRepDistSplitter ( )
inline

Definition at line 131 of file checkpoint.C.

132  {
133  testSplitter<ReplicatedMesh, DistributedMesh>(false, true);
134  }

◆ testAsciiRepRepSplitter()

void CheckpointIOTest::testAsciiRepRepSplitter ( )
inline

Definition at line 141 of file checkpoint.C.

142  {
143  testSplitter<ReplicatedMesh, ReplicatedMesh>(false, false);
144  }

◆ testBinaryDistDistSplitter()

void CheckpointIOTest::testBinaryDistDistSplitter ( )
inline

Definition at line 156 of file checkpoint.C.

157  {
158  testSplitter<DistributedMesh, DistributedMesh>(true, true);
159  }

◆ testBinaryDistRepSplitter()

void CheckpointIOTest::testBinaryDistRepSplitter ( )
inline

Definition at line 126 of file checkpoint.C.

127  {
128  testSplitter<DistributedMesh, ReplicatedMesh>(true, true);
129  }

◆ testBinaryRepDistSplitter()

void CheckpointIOTest::testBinaryRepDistSplitter ( )
inline

Definition at line 136 of file checkpoint.C.

137  {
138  testSplitter<ReplicatedMesh, DistributedMesh>(true, true);
139  }

◆ testBinaryRepRepSplitter()

void CheckpointIOTest::testBinaryRepRepSplitter ( )
inline

Definition at line 146 of file checkpoint.C.

147  {
148  testSplitter<ReplicatedMesh, ReplicatedMesh>(true, false);
149  }

◆ testSplitter()

template<typename MeshA , typename MeshB >
void CheckpointIOTest::testSplitter ( bool  binary,
bool  using_distmesh 
)
inline

Definition at line 47 of file checkpoint.C.

48  {
49  // The CheckpointIO-based splitter requires XDR.
50 #ifdef LIBMESH_HAVE_XDR
51 
52  // In this test, we partition the mesh into n_procs parts. Don't
53  // try to partition a DistributedMesh into more parts than we have
54  // processors, though.
55  const unsigned int n_procs = using_distmesh ?
56  std::min(static_cast<processor_id_type>(2), TestCommWorld->size()) :
57  2;
58 
59  // The number of elements in the original mesh. For verification
60  // later.
61  dof_id_type original_n_elem = 0;
62 
63  const std::string filename =
64  std::string("checkpoint_splitter.cp") + (binary ? "r" : "a");
65 
66  {
67  MeshA mesh(*TestCommWorld);
68 
70  4, 4,
71  0., 1.,
72  0., 1.,
73  QUAD4);
74 
75  // Store the number of elements that were in the original mesh.
76  original_n_elem = mesh.n_elem();
77 
78  // Partition the mesh into n_procs pieces
79  mesh.partition(n_procs);
80 
81  // Write out checkpoint files for each piece. Since on a
82  // ReplicatedMesh we might have more pieces than we do
83  // processors, some processors may have to write out more than
84  // one piece.
85  CheckpointIO cpr(mesh);
86  cpr.current_processor_ids().clear();
87  for (processor_id_type pid = mesh.processor_id(); pid < n_procs; pid += mesh.n_processors())
88  cpr.current_processor_ids().push_back(pid);
89  cpr.current_n_processors() = n_procs;
90  cpr.binary() = binary;
91  cpr.parallel() = true;
92  cpr.write(filename);
93  }
94 
95  TestCommWorld->barrier();
96 
97  // Test that we can read in the files we wrote and sum up to the
98  // same total number of elements.
99  {
100  MeshB mesh(*TestCommWorld);
101  CheckpointIO cpr(mesh);
102  cpr.current_n_processors() = n_procs;
103  cpr.binary() = binary;
104  cpr.read(filename);
105 
106  std::size_t read_in_elements = 0;
107 
108  for (unsigned pid=mesh.processor_id(); pid<n_procs; pid += mesh.n_processors())
109  {
110  read_in_elements += std::distance(mesh.pid_elements_begin(pid),
111  mesh.pid_elements_end(pid));
112  }
113  mesh.comm().sum(read_in_elements);
114 
115  // Verify that we read in exactly as many elements as we started with.
116  CPPUNIT_ASSERT_EQUAL(static_cast<dof_id_type>(read_in_elements), original_n_elem);
117  }
118 #endif // LIBMESH_HAVE_XDR
119  }

References libMesh::CheckpointIO::binary(), libMesh::MeshTools::Generation::build_square(), libMesh::ParallelObject::comm(), libMesh::CheckpointIO::current_n_processors(), libMesh::CheckpointIO::current_processor_ids(), distance(), mesh, libMesh::MeshBase::n_elem(), libMesh::ParallelObject::n_processors(), libMesh::CheckpointIO::parallel(), libMesh::MeshBase::partition(), libMesh::MeshBase::pid_elements_begin(), libMesh::MeshBase::pid_elements_end(), libMesh::ParallelObject::processor_id(), libMesh::QUAD4, libMesh::CheckpointIO::read(), TestCommWorld, and libMesh::CheckpointIO::write().


The documentation for this class was generated from the following file:
libMesh::MeshBase::pid_elements_begin
virtual element_iterator pid_elements_begin(processor_id_type proc_id)=0
Iterate over all elements with a specified processor id.
libMesh::dof_id_type
uint8_t dof_id_type
Definition: id_types.h:67
libMesh::MeshBase::pid_elements_end
virtual element_iterator pid_elements_end(processor_id_type proc_id)=0
libMesh::MeshBase::n_elem
virtual dof_id_type n_elem() const =0
libMesh::ParallelObject::comm
const Parallel::Communicator & comm() const
Definition: parallel_object.h:94
mesh
MeshBase & mesh
Definition: mesh_communication.C:1257
libMesh::MeshTools::Generation::build_square
void build_square(UnstructuredMesh &mesh, const unsigned int nx, const unsigned int ny, const Real xmin=0., const Real xmax=1., const Real ymin=0., const Real ymax=1., const ElemType type=INVALID_ELEM, const bool gauss_lobatto_grid=false)
A specialized build_cube() for 2D meshes.
Definition: mesh_generation.C:1501
libMesh::ParallelObject::n_processors
processor_id_type n_processors() const
Definition: parallel_object.h:100
libMesh::ParallelObject::processor_id
processor_id_type processor_id() const
Definition: parallel_object.h:106
libMesh::QUAD4
Definition: enum_elem_type.h:41
TestCommWorld
libMesh::Parallel::Communicator * TestCommWorld
Definition: driver.C:111
libMesh::processor_id_type
uint8_t processor_id_type
Definition: id_types.h:104
distance
Real distance(const Point &p)
Definition: subdomains_ex3.C:50
libMesh::CheckpointIO
The CheckpointIO class can be used to write simplified restart files that can be used to restart simu...
Definition: checkpoint_io.h:60
libMesh::MeshBase::partition
virtual void partition(const unsigned int n_parts)
Call the default partitioner (currently metis_partition()).
Definition: mesh_base.C:599