ASPECT
Public Attributes | Static Public Attributes | List of all members
aspect::SimulatorSignals< dim > Struct Template Reference

Public Attributes

boost::signals2::signal< void(std::vector< VariableDeclaration< dim >> &)> edit_finite_element_variables
 
boost::signals2::signal< void(typename parallel::distributed::Triangulation< dim > &)> pre_set_initial_state
 
boost::signals2::signal< void(const SimulatorAccess< dim > &)> post_set_initial_state
 
boost::signals2::signal< void(const SimulatorAccess< dim > &)> start_timestep
 
boost::signals2::signal< void(const SimulatorAccess< dim > &, AffineConstraints< double > &)> post_constraints_creation
 
boost::signals2::signal< void(const SimulatorAccess< dim > &, Parameters< dim > &parameters)> edit_parameters_pre_setup_dofs
 
boost::signals2::signal< void(typename parallel::distributed::Triangulation< dim > &)> pre_refinement_store_user_data
 
boost::signals2::signal< void(typename parallel::distributed::Triangulation< dim > &)> post_refinement_load_user_data
 
boost::signals2::signal< void(typename parallel::distributed::Triangulation< dim > &)> pre_compute_no_normal_flux_constraints
 
boost::signals2::signal< void(typename parallel::distributed::Triangulation< dim > &)> post_compute_no_normal_flux_constraints
 
boost::signals2::signal< void(typename parallel::distributed::Triangulation< dim > &)> pre_checkpoint_store_user_data
 
boost::signals2::signal< void(typename parallel::distributed::Triangulation< dim > &)> post_resume_load_user_data
 
boost::signals2::signal< double(const double pressure_scaling, const double reference_viscosity, const double length_scale)> modify_pressure_scaling
 
boost::signals2::signal< void(const SimulatorAccess< dim > &, const unsigned int number_S_iterations, const unsigned int number_A_iterations, const SolverControl &solver_control_cheap, const SolverControl &solver_control_expensive)> post_stokes_solver
 
boost::signals2::signal< void(const SimulatorAccess< dim > &, const bool solved_temperature_field, const unsigned int compositional_index, const SolverControl &solver_control)> post_advection_solver
 
boost::signals2::signal< void(const SolverControl &)> post_nonlinear_solver
 
boost::signals2::signal< void(const SimulatorAccess< dim > &, const unsigned int iteration_count)> post_ARKode_solve
 
boost::signals2::signal< void(const SimulatorAccess< dim > &)> post_mesh_deformation
 
boost::signals2::signal< void(const SimulatorAccess< dim > &, aspect::Assemblers::Manager< dim > &)> set_assemblers
 
boost::signals2::signal< void(DataOut< dim > &)> pre_data_out_build_patches
 

Static Public Attributes

static boost::signals2::signal< void(const unsigned int aspect_dim, ParameterHandler &prm)> declare_additional_parameters
 
static boost::signals2::signal< void(const Parameters< dim > &, ParameterHandler &)> parse_additional_parameters
 

Detailed Description

template<int dim>
struct aspect::SimulatorSignals< dim >

A class that collects the definition of signals that can be triggered at different points in a computation. A signal is in essence an event that is triggered whenever the program passes a certain point in a computation. Parties interested in any of these signals can attach "slots" to a signal. A slot is, in essence, a function that is called whenever the signal is triggered. Multiple slots (or none) can be attached to the same signal. To be as general as possible, slots are not actually just pointers to functions, but std::function objects that have a certain signature. Consequently, they can have much more complicated types than just function pointers, such as objects with an operator() or lambda functions.

The documentation of each of the signals below indicates when exactly it is called.

Definition at line 49 of file simulator_access.h.

Member Data Documentation

§ edit_finite_element_variables

template<int dim>
boost::signals2::signal<void (std::vector<VariableDeclaration<dim>> &)> aspect::SimulatorSignals< dim >::edit_finite_element_variables

A signal that is called before the list of finite element variables is used to construct the Introspection class.

The functions (slots) that can attach to this signal need to take one argument: A std::vector of VariableDeclaration<dim> representing the collection of finite element variables, that can be modified and will be used to construct the final finite element system later.

Definition at line 77 of file simulator_signals.h.

§ pre_set_initial_state

template<int dim>
boost::signals2::signal<void (typename parallel::distributed::Triangulation<dim> &)> aspect::SimulatorSignals< dim >::pre_set_initial_state

A signal that is called before setting up the initial conditions.

The functions (slots) that can attach to this signal need to take one argument: A SimulatorAccess object that describes the simulator.

Definition at line 85 of file simulator_signals.h.

§ post_set_initial_state

template<int dim>
boost::signals2::signal<void (const SimulatorAccess<dim> &)> aspect::SimulatorSignals< dim >::post_set_initial_state

A signal that is called after setting up the initial conditions.

The functions (slots) that can attach to this signal need to take one argument: A SimulatorAccess object that describes the simulator.

Definition at line 93 of file simulator_signals.h.

§ start_timestep

template<int dim>
boost::signals2::signal<void (const SimulatorAccess<dim> &)> aspect::SimulatorSignals< dim >::start_timestep

A signal that is called at the beginning of each time step.

The functions (slots) that can attach to this signal need to take one argument: A SimulatorAccess object that describes the simulator.

Definition at line 101 of file simulator_signals.h.

§ post_constraints_creation

template<int dim>
boost::signals2::signal<void (const SimulatorAccess<dim> &, AffineConstraints<double> &)> aspect::SimulatorSignals< dim >::post_constraints_creation

A signal that is called at the end of setting up the constraints for the current time step. This allows to add more constraints on degrees of freedom, for example to fix the velocity at certain points.

The functions (slots) that can attach to this signal need to take two arguments: A SimulatorAccess object that describes the simulator to act on, and an (output) argument that indicates the constraints to be computed.

Definition at line 115 of file simulator_signals.h.

§ edit_parameters_pre_setup_dofs

template<int dim>
boost::signals2::signal<void (const SimulatorAccess<dim> &, Parameters<dim> &parameters)> aspect::SimulatorSignals< dim >::edit_parameters_pre_setup_dofs

A signal that is called at the start of setup_dofs(). This allows for editing of the parameters struct on the fly (such as changing boundary conditions) to give ASPECT different behavior in mid-run than it otherwise would have.

The functions that connect to this signal must take two arguments, a SimulatorAccess object that describes the simulator, and an object of type aspect::Parameters<dim>, which is the current parameters object that the simulator is working with.

Definition at line 129 of file simulator_signals.h.

§ pre_refinement_store_user_data

template<int dim>
boost::signals2::signal<void (typename parallel::distributed::Triangulation<dim> &)> aspect::SimulatorSignals< dim >::pre_refinement_store_user_data

A signal that is called before every mesh_refinement. This signal allows for registering functions that store data that is related to mesh cells and needs to be transferred with the cells during the repartitioning.

The functions that connect to this signal must take a reference to a parallel::distributed::Triangulation object as argument. This argument will point to the triangulation used by the Simulator class.

Definition at line 141 of file simulator_signals.h.

§ post_refinement_load_user_data

template<int dim>
boost::signals2::signal<void (typename parallel::distributed::Triangulation<dim> &)> aspect::SimulatorSignals< dim >::post_refinement_load_user_data

A signal that is called after every mesh_refinement. This signal allows for registering functions that load data related to mesh cells and that was transferred with the cells during the repartitioning.

The functions that connect to this signal must take a reference to a parallel::distributed::Triangulation object as argument. This argument will point to the triangulation used by the Simulator class.

Definition at line 152 of file simulator_signals.h.

§ pre_compute_no_normal_flux_constraints

template<int dim>
boost::signals2::signal<void (typename parallel::distributed::Triangulation<dim> &)> aspect::SimulatorSignals< dim >::pre_compute_no_normal_flux_constraints

A signal that is called before the computation of tangential boundary conditions for which normal vectors are needed, i.e. calls to the compute_no_normal_flux_constraints function for both the velocity variable in the main simulator and the mesh velocity variable in models with mesh deformation.

The functions that connect to this signal must take a reference to a parallel::distributed::Triangulation object as argument. This argument will point to the triangulation used by the Simulator class.

Definition at line 166 of file simulator_signals.h.

§ post_compute_no_normal_flux_constraints

template<int dim>
boost::signals2::signal<void (typename parallel::distributed::Triangulation<dim> &)> aspect::SimulatorSignals< dim >::post_compute_no_normal_flux_constraints

A signal that is called after the computation of tangential boundary conditions for which normal vectors are needed, i.e. calls to the compute_no_normal_flux_constraints function for both the velocity variable in the main simulator and the mesh velocity variable in models with mesh deformation.

The functions that connect to this signal must take a reference to a parallel::distributed::Triangulation object as argument. This argument will point to the triangulation used by the Simulator class.

Definition at line 180 of file simulator_signals.h.

§ pre_checkpoint_store_user_data

template<int dim>
boost::signals2::signal<void (typename parallel::distributed::Triangulation<dim> &)> aspect::SimulatorSignals< dim >::pre_checkpoint_store_user_data

A signal that is called before the creation of every checkpoint. This signal allows for registering functions that store data related to mesh cells.

The functions that connect to this signal must take a reference to a parallel::distributed::Triangulation object as argument. This argument will point to the triangulation used by the Simulator class.

Definition at line 191 of file simulator_signals.h.

§ post_resume_load_user_data

template<int dim>
boost::signals2::signal<void (typename parallel::distributed::Triangulation<dim> &)> aspect::SimulatorSignals< dim >::post_resume_load_user_data

A signal that is called after resuming from a checkpoint. This signal allows for registering functions that load data related to mesh cells that was previously stored in the checkpoint. Note that before calling Triangulation::notify_ready_to_unpack() the function needs to call register_attach_data() with the appropriate arguments to restore the state of the triangulation.

The functions that connect to this signal must take a reference to a parallel::distributed::Triangulation object as argument. This argument will point to the triangulation used by the Simulator class.

Definition at line 205 of file simulator_signals.h.

§ modify_pressure_scaling

template<int dim>
boost::signals2::signal<double (const double pressure_scaling, const double reference_viscosity, const double length_scale)> aspect::SimulatorSignals< dim >::modify_pressure_scaling

This signal is called whenever the pressure scaling is computed, see Simulator::compute_pressure_scaling_factor(), and allows inspection and/or modification of the computed factor.

The argument pressure_scaling contains the computed pressure scaling (the ratio of the reference viscosity reference_viscosity computed by averaging the viscosity in the domain and the length scale length_scale reported by the geometry model). The return value of this functions will replace the computed value, therefore no changes are made if you return the value pressure_scaling.

Definition at line 219 of file simulator_signals.h.

§ declare_additional_parameters

template<int dim>
template boost::signals2::signal< void(const unsigned int aspect_dim, ParameterHandler &prm)> aspect::SimulatorSignals< dim >::declare_additional_parameters
static

A signal that is called at the beginning of the program. It gives user extensions the ability to declare additional parameters via the provided argument. User extensions connected to this signal will likely also want to connect to the parse_additional_parameters signal.

The first argument to functions that connect to this signal denotes the dimension in which ASPECT will be run. Functions connected to this signal can declare additional runtime parameters in the second argument.

Definition at line 234 of file simulator_signals.h.

§ parse_additional_parameters

template<int dim>
template boost::signals2::signal< void(const Parameters< 3 > &, ParameterHandler &)> aspect::SimulatorSignals< dim >::parse_additional_parameters
static

A signal that is called at the beginning of the program, after reading the input file. It gives user extensions the ability to read additional parameters from the provided argument. The first argument indicates an object that represents all of the other parameters (that have already been parsed at this point).

User extensions connected to this signal will likely also want to connect to the declare_additional_parameters signal.

Definition at line 247 of file simulator_signals.h.

§ post_stokes_solver

template<int dim>
boost::signals2::signal<void (const SimulatorAccess<dim> &, const unsigned int number_S_iterations, const unsigned int number_A_iterations, const SolverControl &solver_control_cheap, const SolverControl &solver_control_expensive)> aspect::SimulatorSignals< dim >::post_stokes_solver

A signal that is triggered when the iterative Stokes solver (either matrix-based or matrix-free) is done. The signal is not called when using a direct solver because the kind of information passed on by this signal does not exist when using a direct solver.

Arguments to this signal are a reference to the SimulatorAccess, the number of preconditioner inner solver iterations for the \(S\) and \(A\) block of the system, and two information objects that contain information about the success of the solve, the number of outer GMRES iterations and the residual history for the cheap and expensive solver phase.

Definition at line 265 of file simulator_signals.h.

§ post_advection_solver

template<int dim>
boost::signals2::signal<void (const SimulatorAccess<dim> &, const bool solved_temperature_field, const unsigned int compositional_index, const SolverControl &solver_control)> aspect::SimulatorSignals< dim >::post_advection_solver

A signal that is triggered when the iterative advection solver is done. Arguments are a reference to the SimulatorAccess, a bool indicating whether the temperature field or a compositional field was solved, a composition index that describes which compositional field was solved, and an information object that contains information about the number of iterations and history of residuals.

Definition at line 278 of file simulator_signals.h.

§ post_nonlinear_solver

template<int dim>
boost::signals2::signal<void (const SolverControl &)> aspect::SimulatorSignals< dim >::post_nonlinear_solver

A signal that is triggered when the nonlinear solver scheme is done. The signal parameter is an object that contains information about the final state (failure/success), number of iterations and history of residuals of the nonlinear solver. If there is no nonlinear solver (only a single solve), the SolverControl object will report a successful state, a single iteration and a remaining residual of zero.

Definition at line 289 of file simulator_signals.h.

§ post_ARKode_solve

template<int dim>
boost::signals2::signal<void (const SimulatorAccess<dim> &, const unsigned int iteration_count)> aspect::SimulatorSignals< dim >::post_ARKode_solve

A signal that is triggered when ARKode is done solving an ODE. Arguments are a reference to the SimulatorAccess and an iteration count describing how many iterations ARKode required to solve the ODE.

Definition at line 298 of file simulator_signals.h.

§ post_mesh_deformation

template<int dim>
boost::signals2::signal<void (const SimulatorAccess<dim> &)> aspect::SimulatorSignals< dim >::post_mesh_deformation

A signal that is triggered when mesh deformation has occurred. The arguments to this signal is a reference to the SimulatorAccess object.

Definition at line 305 of file simulator_signals.h.

§ set_assemblers

template<int dim>
boost::signals2::signal<void (const SimulatorAccess<dim> &, aspect::Assemblers::Manager<dim> &)> aspect::SimulatorSignals< dim >::set_assemblers

A signal that is triggered at the end of the set_assemblers() function that allows modification of the assembly objects active in this simulation.

Definition at line 313 of file simulator_signals.h.

§ pre_data_out_build_patches

template<int dim>
boost::signals2::signal<void (DataOut<dim> &)> aspect::SimulatorSignals< dim >::pre_data_out_build_patches

A signal that is called before the build_patches() function is called during the creation of the visualization output. This signal allows for registering functions that take a DataOut object and can for example be used to select only certain cells of the mesh to be built into patches through calling the DataOut member function set_cell_selection().

Definition at line 322 of file simulator_signals.h.


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