Reference documentation for deal.II version 9.5.0
|
A namespace for TriangulationDescription::Description utility functions.
Description< dim, spacedim > TriangulationDescription::Utilities::create_description_from_triangulation | ( | const ::Triangulation< dim, spacedim > & | tria, |
const MPI_Comm | comm, | ||
const TriangulationDescription::Settings | settings = TriangulationDescription::Settings::default_setting , |
||
const unsigned int | my_rank_in = numbers::invalid_unsigned_int |
||
) |
Construct TriangulationDescription::Description from a given partitioned triangulation tria
and a specified process. The input triangulation can be either a serial triangulation of type Triangulation which has been colored (subdomain_id and/or level_subdomain_id has been set) or a distributed triangulation of type parallel::distributed::Triangulation, where the partitioning is adopted unaltered.
Example for a serial Triangulation:
Example for parallel::distributed::Triangulation (partitioning can be skipped, since the triangulation has already been partitioned by p4est):
tria | Partitioned input triangulation. |
comm | MPI_Communicator to be used. In the case of parallel::distributed::Triangulation, the communicators have to match. |
settings | See the description of the Settings enumerator. |
my_rank_in | Construct Description for the specified rank (only working for serial triangulations that have been partitioned by functions like GridTools::partition_triangulation()). |
Definition at line 726 of file tria_description.cc.
Description< dim, spacedim > TriangulationDescription::Utilities::create_description_from_triangulation | ( | const Triangulation< dim, spacedim > & | tria, |
const LinearAlgebra::distributed::Vector< double, MemorySpace::Host > & | partition, | ||
const TriangulationDescription::Settings | settings = TriangulationDescription::Settings::default_setting |
||
) |
Similar to the above function but the owner of active cells are provided by a cell vector (see also parallel::TriangulationBase::global_active_cell_index_partitioner() and CellAccessor::global_active_cell_index()). This function allows to repartition distributed Triangulation objects.
If the setup of multigrid levels is requested, they are partitioned according to a first-child policy.
partition
.tria
can be set up on a subcommunicator of the communicator of partitioner
. All processes that are not part of that subcommunicator need to set up the local triangulation with the special-purpose communicator MPI_COMM_NULL.partition
only describes the partitioning of the active level. Description< dim, spacedim > TriangulationDescription::Utilities::create_description_from_triangulation | ( | const Triangulation< dim, spacedim > & | tria, |
const LinearAlgebra::distributed::Vector< double, MemorySpace::Host > & | partition, | ||
const std::vector< LinearAlgebra::distributed::Vector< double, MemorySpace::Host > > & | mg_partitions, | ||
const TriangulationDescription::Settings | settings = TriangulationDescription::Settings::default_setting |
||
) |
Similar to the above function but allowing the user to prescribe the partitioning of the multigrid levels.
Description< dim, spacedim > TriangulationDescription::Utilities::create_description_from_triangulation_in_groups | ( | const std::function< void(::Triangulation< dim, spacedim > &)> & | serial_grid_generator, |
const std::function< void(::Triangulation< dim, spacedim > &, const MPI_Comm, const unsigned int)> & | serial_grid_partitioner, | ||
const MPI_Comm | comm, | ||
const int | group_size = 1 , |
||
const typename Triangulation< dim, spacedim >::MeshSmoothing | smoothing = ::Triangulation<dim, spacedim>::none , |
||
const TriangulationDescription::Settings | setting = TriangulationDescription::Settings::default_setting |
||
) |
Construct a TriangulationDescription::Description. In contrast to the function above, this function is also responsible for creating a serial triangulation and for its partitioning (by calling the provided std::function
objects). Internally only selected processes ( every n-th/each root of a group of size group_size) create a serial triangulation and the TriangulationDescription::Description for all processes in its group, which is communicated.
This function can also be used to read an external mesh only once (by the root process and a group consisting all processes). The following code snippet shows a modified version of the example provided in the documentation of create_description_from_triangulation(). Function calls that only need to be performed by the root process (read and partition mesh) have been moved into std::function
objects.
serial_grid_generator | A function which creates a serial triangulation. |
serial_grid_partitioner | A function which can partition a serial triangulation, i.e., sets the sudomain_ids of the active cells. The function takes as the first argument a serial triangulation, as the second argument the MPI communicator, and as the third argument the group size. |
comm | MPI communicator. |
group_size | The size of each group. |
smoothing | Mesh smoothing type. |
setting | See the description of the Settings enumerator. |
smoothing
parameter is extended with the limit_level_difference_at_vertices flag. Definition at line 790 of file tria_description.cc.
Description< dim, spacedim > TriangulationDescription::Utilities::create_description_from_triangulation | ( | const Triangulation< dim, spacedim > & | tria, |
const LinearAlgebra::distributed::Vector< double > & | partition, | ||
const TriangulationDescription::Settings | settings | ||
) |
Definition at line 920 of file tria_description.cc.
Description< dim, spacedim > TriangulationDescription::Utilities::create_description_from_triangulation | ( | const Triangulation< dim, spacedim > & | tria, |
const LinearAlgebra::distributed::Vector< double > & | partition, | ||
const std::vector< LinearAlgebra::distributed::Vector< double > > & | partitions_mg, | ||
const TriangulationDescription::Settings | settings_in | ||
) |
Definition at line 987 of file tria_description.cc.