Reference documentation for deal.II version 9.4.1
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
Classes | Public Member Functions | Public Attributes | List of all members
Triangulation< dim, spacedim >::Signals Struct Reference

#include <deal.II/grid/tria.h>

Classes

class  LegacySignal
 

Public Member Functions

 Signals ()
 

Public Attributes

boost::signals2::signal< void()> create
 
boost::signals2::signal< void()> pre_refinement
 
boost::signals2::signal< void()> post_refinement
 
boost::signals2::signal< void()> pre_partition
 
boost::signals2::signal< void()> mesh_movement
 
boost::signals2::signal< void(const typename Triangulation< dim, spacedim >::cell_iterator &cell)> pre_coarsening_on_cell
 
boost::signals2::signal< void(const typename Triangulation< dim, spacedim >::cell_iterator &cell)> post_refinement_on_cell
 
boost::signals2::signal< void(const Triangulation< dim, spacedim > &destination_tria)> copy
 
boost::signals2::signal< void()> clear
 
boost::signals2::signal< void()> any_change
 
boost::signals2::signal< unsigned int(const cell_iterator &, const CellStatus), CellWeightSum< unsigned int > > weight
 
LegacySignal cell_weight
 
boost::signals2::signal< void()> pre_distributed_refinement
 
boost::signals2::signal< void()> post_p4est_refinement
 
boost::signals2::signal< void()> post_distributed_refinement
 
boost::signals2::signal< void()> pre_distributed_repartition
 
boost::signals2::signal< void()> post_distributed_repartition
 
boost::signals2::signal< void()> pre_distributed_save
 
boost::signals2::signal< void()> post_distributed_save
 
boost::signals2::signal< void()> pre_distributed_load
 
boost::signals2::signal< void()> post_distributed_load
 

Detailed Description

template<int dim, int spacedim = dim>
struct Triangulation< dim, spacedim >::Signals

A structure that has boost::signal objects for a number of actions that a triangulation can do to itself. Please refer to the "Getting notice when a triangulation changes" section in the general documentation of the Triangulation class for more information and examples.

For documentation on signals, see http://www.boost.org/doc/libs/release/libs/signals2 .

Definition at line 2073 of file tria.h.

Constructor & Destructor Documentation

◆ Signals()

template<int dim, int spacedim = dim>
Triangulation< dim, spacedim >::Signals::Signals ( )
inline

Constructor.

Connects a deprecated signal to its successor.

Definition at line 2219 of file tria.h.

Member Data Documentation

◆ create

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::create

This signal is triggered whenever the Triangulation::create_triangulation or Triangulation::copy_triangulation() is called. This signal is also triggered when loading a triangulation from an archive via Triangulation::load().

Definition at line 2082 of file tria.h.

◆ pre_refinement

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::pre_refinement

This signal is triggered at the beginning of execution of the Triangulation::execute_coarsening_and_refinement() function (which is itself called by other functions such as Triangulation::refine_global() ). At the time this signal is triggered, the triangulation is still unchanged.

Definition at line 2091 of file tria.h.

◆ post_refinement

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::post_refinement

This signal is triggered at the end of execution of the Triangulation::execute_coarsening_and_refinement() function when the triangulation has reached its final state.

Definition at line 2098 of file tria.h.

◆ pre_partition

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::pre_partition

This signal is triggered at the beginning of execution of the GridTools::partition_triangulation() and GridTools::partition_triangulation_zorder() functions. At the time this signal is triggered, the triangulation is still unchanged.

Definition at line 2106 of file tria.h.

◆ mesh_movement

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::mesh_movement

This signal is triggered when a function in deal.II moves the grid points of a mesh, e.g. GridTools::transform. Unfortunately, modification of a vertex in user code through cell_iterator->vertex(v) = xxxx cannot be detected by this method.

Definition at line 2115 of file tria.h.

◆ pre_coarsening_on_cell

template<int dim, int spacedim = dim>
boost::signals2::signal<void( const typename Triangulation<dim, spacedim>::cell_iterator &cell)> Triangulation< dim, spacedim >::Signals::pre_coarsening_on_cell

This signal is triggered for each cell that is going to be coarsened.

Note
This signal is triggered with the immediate parent cell of a set of active cells as argument. The children of this parent cell will subsequently be coarsened away.

Definition at line 2126 of file tria.h.

◆ post_refinement_on_cell

template<int dim, int spacedim = dim>
boost::signals2::signal<void( const typename Triangulation<dim, spacedim>::cell_iterator &cell)> Triangulation< dim, spacedim >::Signals::post_refinement_on_cell

This signal is triggered for each cell that just has been refined.

Note
The signal parameter cell corresponds to the immediate parent cell of a set of newly created active cells.

Definition at line 2136 of file tria.h.

◆ copy

template<int dim, int spacedim = dim>
boost::signals2::signal<void( const Triangulation<dim, spacedim> &destination_tria)> Triangulation< dim, spacedim >::Signals::copy

This signal is triggered whenever the triangulation owning the signal is copied by another triangulation using Triangulation::copy_triangulation() (i.e. it is triggered on the old triangulation, but the new one is passed as an argument).

Definition at line 2146 of file tria.h.

◆ clear

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::clear

This signal is triggered whenever the Triangulation::clear() function is called and in the destructor of the triangulation. This signal is also triggered when loading a triangulation from an archive via Triangulation::load() as the previous content of the triangulation is first destroyed.

The signal is triggered before the data structures of the triangulation are destroyed. In other words, the functions attached to this signal get a last look at the triangulation, for example to save information stored as part of the triangulation.

Definition at line 2161 of file tria.h.

◆ any_change

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::any_change

This is a catch-all signal that is triggered whenever the create, post_refinement, or clear signals are triggered. In effect, it can be used to indicate to an object connected to the signal that the triangulation has been changed, whatever the exact cause of the change.

Note
The cell-level signals pre_coarsening_on_cell and post_refinement_on_cell are not connected to this signal.

Definition at line 2172 of file tria.h.

◆ weight

template<int dim, int spacedim = dim>
boost::signals2::signal<unsigned int(const cell_iterator &, const CellStatus), CellWeightSum<unsigned int> > Triangulation< dim, spacedim >::Signals::weight

This signal is triggered for each cell during every automatic or manual repartitioning. It is intended to allow a weighted repartitioning of the domain to balance the computational load across processes in a different way than balancing the number of cells. Any connected function is expected to take an iterator to a cell, and a CellStatus argument that indicates whether this cell is going to be refined, coarsened or left untouched (see the documentation of the CellStatus enum for more information). The function is expected to return an unsigned integer, which is interpreted as the additional computational load of this cell.

In serial and parallel shared applications, partitioning happens after refinement. So all cells will have the CELL_PERSIST status.

In parallel distributed applications, partitioning happens during refinement. If this cell is going to be coarsened, the signal is called for the parent cell and you need to provide the weight of the future parent cell. If this cell is going to be refined, the function is called on all children while cell_iterator refers to their parent cell. In this case, you need to pick a weight for each individual child based on information given by the parent cell.

If several functions are connected to this signal, their return values will be summed to calculate the final weight of a cell. This allows different parts of a larger code base to have their own functions computing the weight of a cell; for example in a code that does both finite element and particle computations on each cell, the code could separate the computation of a cell's weight into two functions, each implemented in their respective files, that provide the finite element-based and the particle-based weights.

This function is used in step-68 and implicitly in step-75 using the parallel::CellWeights class.

Definition at line 2212 of file tria.h.

◆ cell_weight

template<int dim, int spacedim = dim>
LegacySignal Triangulation< dim, spacedim >::Signals::cell_weight

This signal is triggered for each cell during every automatic or manual repartitioning. It is intended to allow a weighted repartitioning of the domain to balance the computational load across processes in a different way than balancing the number of cells. Any connected function is expected to take an iterator to a cell, and a CellStatus argument that indicates whether this cell is going to be refined, coarsened or left untouched (see the documentation of the CellStatus enum for more information). The function is expected to return an unsigned integer, which is interpreted as the additional computational load of this cell.

In serial and parallel shared applications, partitioning happens after refinement. So all cells will have the CELL_PERSIST status.

In parallel distributed applications, partitioning happens during refinement. If this cell is going to be coarsened, the signal is called for the parent cell and you need to provide the weight of the future parent cell. If this cell is going to be refined, the function is called on all children while cell_iterator refers to their parent cell. In this case, you need to pick a weight for each individual child based on information given by the parent cell.

If several functions are connected to this signal, their return values will be summed to calculate the final weight of a cell. This allows different parts of a larger code base to have their own functions computing the weight of a cell; for example in a code that does both finite element and particle computations on each cell, the code could separate the computation of a cell's weight into two functions, each implemented in their respective files, that provide the finite element-based and the particle-based weights.

This function is used in step-68 and implicitly in step-75 using the parallel::CellWeights class.

As a reference, a value of 1000 is added for every cell to the total weight. This means a signal return value of 1000 (resulting in a weight of 2000) means that it is twice as expensive for a process to handle this particular cell.

Deprecated:
Use the weight signal instead which omits the base weight. You can invoke the old behavior by connecting a function to the signal that returns the base weight as follows. This function should be added in addition to the one that actually computes the weight.
triangulation.signals.weight.connect(
[](const typename Triangulation<dim>::cell_iterator &,
-> unsigned int { return 1000; });
const ::parallel::distributed::Triangulation< dim, spacedim > * triangulation

Definition at line 2366 of file tria.h.

◆ pre_distributed_refinement

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::pre_distributed_refinement

This signal is triggered at the beginning of execution of the parallel::distributed::Triangulation::execute_coarsening_and_refinement() function (which is itself called by other functions such as Triangulation::refine_global() ). At the time this signal is triggered, the triangulation is still unchanged. This signal is different from the pre_refinement signal, because in the parallel distributed case the pre_refinement signal is triggered multiple times without a way to distinguish the last signal call.

Definition at line 2379 of file tria.h.

◆ post_p4est_refinement

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::post_p4est_refinement

This signal is triggered during execution of the parallel::distributed::Triangulation::execute_coarsening_and_refinement() function. At the time this signal is triggered, the p4est oracle has been refined and the cell relations have been updated. The triangulation is unchanged otherwise, and the p4est oracle has not yet been repartitioned.

Definition at line 2388 of file tria.h.

◆ post_distributed_refinement

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::post_distributed_refinement

This signal is triggered at the end of execution of the parallel::distributed::Triangulation::execute_coarsening_and_refinement() function when the triangulation has reached its final state. This signal is different from the post_refinement signal, because in the parallel distributed case the post_refinement signal is triggered multiple times without a way to distinguish the last signal call.

Definition at line 2398 of file tria.h.

◆ pre_distributed_repartition

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::pre_distributed_repartition

This signal is triggered at the beginning of execution of the parallel::distributed::Triangulation::repartition() function. At the time this signal is triggered, the triangulation is still unchanged.

Definition at line 2405 of file tria.h.

◆ post_distributed_repartition

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::post_distributed_repartition

This signal is triggered at the end of execution of the parallel::distributed::Triangulation::repartition() function when the triangulation has reached its final state.

Definition at line 2412 of file tria.h.

◆ pre_distributed_save

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::pre_distributed_save

This signal is triggered at the beginning of execution of the parallel::distributed::Triangulation::save() function. At the time this signal is triggered, the triangulation is still unchanged.

Definition at line 2420 of file tria.h.

◆ post_distributed_save

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::post_distributed_save

This signal is triggered at the end of execution of the parallel::distributed::Triangulation::save() function when the triangulation has reached its final state.

Definition at line 2427 of file tria.h.

◆ pre_distributed_load

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::pre_distributed_load

This signal is triggered at the beginning of execution of the parallel::distributed::Triangulation::load() function. At the time this signal is triggered, the triangulation is still unchanged.

Definition at line 2435 of file tria.h.

◆ post_distributed_load

template<int dim, int spacedim = dim>
boost::signals2::signal<void()> Triangulation< dim, spacedim >::Signals::post_distributed_load

This signal is triggered at the end of execution of the parallel::distributed::Triangulation::load() function when the triangulation has reached its final state.

Definition at line 2442 of file tria.h.


The documentation for this struct was generated from the following file: