-New: Add a function, which creates a parallel::fullydistributed::ConstructionData from a
+New: Add a function, which creates a TriangulationDescription::Description from a
serial and a distributed triangulation. This data structure can be used to initialize
parallel::fullydistributed::Triangulation.
<br>
-New: Add Boost serialization function to dealii::fullydistributed::CellData and
-dealii::fullydistributed::ConstructionData.
+New: Add Boost serialization function to dealii::TriangulationDescription::CellData and
+dealii::TriangulationDescription::Description.
<br>
(Peter Munch, 2019/09/13)
-New: Allow to create parallel::fullydistributed::ConstructionData
+New: Allow to create TriangulationDescription::Description
by groups, in which only one process actually creates
-ConstructionDatas and distributes them within the group.
+TriangulationDescription::Descriptions and distributes them within the group.
<br>
(Peter Munch, 2019/09/13)
* and boundary_id of each cell.
*
* The ingredients listed above are bundled in the struct
- * parallel::fullydistributed::ConstructionData. The user has to fill this
+ * TriangulationDescription::Description. The user has to fill this
* data structure - in a pre-processing step - before actually creating the
- * triangulation. Predefined functions to create ConstructionData
- * can be found in the namespace dealii::fullydistributed::Utilities.
+ * triangulation. Predefined functions to create
+ * TriangulationDescription::Description can be found in the namespace
+ * TriangulationDescription::Utilities.
*
- * Once the ConstructionData `construction_data` has been constructed, the
- * triangulation `tria` can be created by calling
+ * Once the TriangulationDescription::Description `construction_data` has
+ * been constructed, the triangulation `tria` can be created by calling
* `tria.create_triangulation(construction_data);`.
*
* @note This triangulation supports: 1D/2D/3D, hanging nodes,
* a serial triangulation and for its partitioning (by calling the
* provided `std::functions' objects). Internally only selected processes (
* every n-th/each root of a group of size group_size) create a serial
- * triangulation and the ConstructionData for all processes in its group,
- * which is communicated.
+ * triangulation and the TriangulationDescription::Description for all
+ * processes in its group, which is communicated.
*
* @note A reasonable group size is the size of a NUMA domain or the
* size of a compute node.
&construction_data)
{
// check if the communicator of this parallel triangulation has been used
- // to construct the ConstructionData
+ // to construct the TriangulationDescription::Description
Assert(construction_data.comm == this->mpi_communicator,
ExcMessage("MPI communicators do not match!"));
ExcMessage("MPI communicators do not match."));
// First, figure out for what rank we are supposed to build the
- // ConstructionData object
+ // TriangulationDescription::Description object
unsigned int my_rank = my_rank_in;
Assert(my_rank == numbers::invalid_unsigned_int ||
my_rank < dealii::Utilities::MPI::n_mpi_processes(comm),
std::vector<char> buffer;
dealii::Utilities::pack(construction_data, buffer, false);
- // 3c) send ConstructionData
+ // 3c) send TriangulationDescription::Description
const auto ierr = MPI_Send(buffer.data(),
buffer.size(),
MPI_CHAR,
AssertThrowMPI(ierr);
}
- // 4) create ConstructionData for this process (root of group)
+ // 4) create TriangulationDescription::Description for this process
+ // (root of group)
return create_description_from_triangulation(
tria, comm, construct_multilevel_hierarchy, my_rank);
}
else
{
- // 3a) recv packed ConstructionData from group-root process
+ // 3a) recv packed TriangulationDescription::Description from
+ // group-root process
// (counter-part of 3c of root process)
MPI_Status status;
auto ierr = MPI_Probe(group_root, mpi_tag, comm, &status);
&status);
AssertThrowMPI(ierr);
- // 3b) unpack ConstructionData (counter-part of 3b of root process)
+ // 3b) unpack TriangulationDescription::Description (counter-part of
+ // 3b of root process)
auto construction_data =
dealii::Utilities::template unpack<Description<dim, spacedim>>(
buf, false);
// ---------------------------------------------------------------------
-// Create the ConstructionData with
+// Create the TriangulationDescription::Description with
// create_description_from_triangulation_in_groups, i.e. by a set of
// master processes.
void
test(int n_refinements, MPI_Comm comm)
{
- // 1) create ConstructionData with create_description_from_triangulation
+ // 1) create TriangulationDescription::Description with
+ // create_description_from_triangulation
Triangulation<dim> basetria(
Triangulation<dim>::limit_level_difference_at_vertices);
GridGenerator::hyper_L(basetria);
TriangulationDescription::Utilities::create_description_from_triangulation(
basetria, comm, true);
- // 2) create ConstructionData with
+ // 2) create TriangulationDescription::Description with
// create_description_from_triangulation_in_groups
auto construction_data_2 = TriangulationDescription::Utilities::
create_description_from_triangulation_in_groups<dim, spacedim>(
3 /* group size */,
true);
- // 3a) serialize first ConstructionData and print
+ // 3a) serialize first TriangulationDescription::Description and print
{
std::ostringstream oss;
boost::archive::text_oarchive oa(oss, boost::archive::no_header);
deallog << oss.str() << std::endl;
}
- // 3b) serialize second ConstructionData and print
+ // 3b) serialize second TriangulationDescription::Description and print
{
std::ostringstream oss;
boost::archive::text_oarchive oa(oss, boost::archive::no_header);
// 4) the result has to be identical
AssertThrow((construction_data_1 == construction_data_2 &&
construction_data_1.comm == construction_data_2.comm),
- ExcMessage("ConstructionDatas are not the same!"));
+ ExcMessage(
+ "TriangulationDescription::Descriptions are not the same!"));
}
int
// ---------------------------------------------------------------------
-// check serialization for ConstructionData<dim, spacedim>
+// check serialization for TriangulationDescription::Description<dim, spacedim>
#include <deal.II/distributed/fully_distributed_tria.h>
#include <deal.II/distributed/tria.h>
TriangulationDescription::Utilities::create_description_from_triangulation(
basetria, comm);
- // compare equal ConstructionDatas
+ // compare equal TriangulationDescription::Descriptions
auto t2 = t1;
verify(t1, t2);
TriangulationDescription::Utilities::create_description_from_triangulation(
basetria, comm);
- // compare different ConstructionDatas
+ // compare different TriangulationDescription::Descriptions
verify(t1, t3);
}