ASPECT
simulator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2011 - 2026 by the authors of the ASPECT code.
3 
4  This file is part of ASPECT.
5 
6  ASPECT is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2, or (at your option)
9  any later version.
10 
11  ASPECT is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with ASPECT; see the file LICENSE. If not see
18  <http://www.gnu.org/licenses/>.
19 */
20 
21 
22 #ifndef _aspect_simulator_h
23 #define _aspect_simulator_h
24 
25 #include <fstream>
26 
27 #include <deal.II/base/timer.h>
31 
33 
35 
37 
39 #include <deal.II/dofs/dof_tools.h>
40 
41 #include <deal.II/fe/fe_system.h>
42 #include <deal.II/fe/mapping.h>
44 
46 
47 #include <aspect/global.h>
74 #include <aspect/advection_field.h>
75 
76 #include <boost/iostreams/tee.hpp>
77 #include <boost/iostreams/stream.hpp>
78 
79 #include <memory>
80 #include <thread>
81 
82 namespace WorldBuilder
83 {
84  class World;
85 }
86 
87 
88 namespace aspect
89 {
90  template <int dim>
91  class MeltHandler;
92 
93  template <int dim>
94  class NewtonHandler;
95 
96  template <int dim>
98 
99  namespace StokesSolver
100  {
101  template <int dim>
102  class Interface;
103 
104  template <int dim>
105  class Direct;
106 
107  template <int dim>
108  class MatrixBased;
109  }
110 
111  template <int dim, int velocity_degree>
113 
114  namespace MeshDeformation
115  {
116  template <int dim>
118  }
119 
120  template <int dim>
122 
123  namespace internal
124  {
125  namespace Assembly
126  {
127  namespace Scratch
128  {
129  template <int dim> struct StokesPreconditioner;
130  template <int dim> struct StokesSystem;
131  template <int dim> struct AdvectionSystem;
132  }
133 
134  namespace CopyData
135  {
136  template <int dim> struct StokesPreconditioner;
137  template <int dim> struct StokesSystem;
138  template <int dim> struct AdvectionSystem;
139  }
140  }
141  }
142 
143  namespace Assemblers
144  {
145  template <int dim> class Interface;
146  template <int dim> class Manager;
147  }
148 
150  {
154  double residual;
155  double residual_old;
158  std::pair<double,double> stokes_residuals;
159  };
160 
164  template <int dim>
166  {
168  :
169  scalar_moment_of_inertia(numbers::signaling_nan<double>()),
170  scalar_angular_momentum(numbers::signaling_nan<double>()),
171  scalar_rotation(numbers::signaling_nan<double>()),
172  tensor_moment_of_inertia(numbers::signaling_nan<SymmetricTensor<2,dim>>()),
173  tensor_angular_momentum(numbers::signaling_nan<Tensor<1,dim>>()),
174  tensor_rotation(numbers::signaling_nan<Tensor<1,dim>>())
175  {};
176 
184 
191  };
192 
196  DeclExceptionMsg(ExcNonlinearSolverNoConvergence,
197  "Nonlinear solver failed to converge in the prescribed number of steps. "
198  "Consider changing `Max nonlinear iterations` or `Nonlinear solver failure "
199  "strategy`.");
200 
208  template <int dim>
210  {
211  public:
225  Simulator (const MPI_Comm mpi_communicator,
226  ParameterHandler &prm);
227 
232  ~Simulator ();
233 
248  static
249  void declare_parameters (ParameterHandler &prm, const unsigned int mpi_rank);
250 
259  void run ();
260 
272  void
273  write_plugin_graph (std::ostream &output_stream) const;
274 
279 
284 
286 
287  private:
288 
308 
326  {
327  IntermediaryConstructorAction (const std::function<void ()> &action);
328  };
329 
344  void setup_dofs ();
345 
354  void setup_introspection ();
355 
367  void set_initial_temperature_and_compositional_fields ();
368 
384  void compute_initial_pressure_field ();
385 
391  void compute_initial_velocity_boundary_constraints (AffineConstraints<double> &constraints);
392 
398  void compute_current_velocity_boundary_constraints (AffineConstraints<double> &constraints);
399 
412  void compute_current_constraints ();
413 
427  double compute_pressure_scaling_factor () const;
428 
440  void start_timestep ();
441 
449  void solve_timestep ();
450 
462  void solve_no_advection_no_stokes ();
463 
474  void solve_no_advection_single_stokes ();
475 
487  void solve_no_advection_single_stokes_first_timestep_only ();
488 
501  void solve_no_advection_iterated_stokes ();
502 
515  void solve_no_advection_iterated_defect_correction_stokes ();
516 
528  void solve_single_advection_no_stokes ();
529 
541  void solve_single_advection_single_stokes ();
542 
555  void solve_single_advection_iterated_stokes ();
556 
569  void solve_single_advection_iterated_defect_correction_stokes ();
570 
590  void solve_single_advection_iterated_newton_stokes (bool use_newton_iterations);
591 
603  void solve_iterated_advection_no_stokes ();
604 
617  void solve_iterated_advection_and_stokes ();
618 
632  void solve_iterated_advection_and_defect_correction_stokes ();
633 
652  void solve_iterated_advection_and_newton_stokes (bool use_newton_iterations);
653 
662  void build_stokes_preconditioner ();
663 
671  void build_advection_preconditioner (const AdvectionField &advection_field,
673  const double diagonal_strengthening);
674 
681  void assemble_stokes_system ();
682 
697  double assemble_and_solve_temperature (const double &initial_residual = 0,
698  double *residual = nullptr);
699 
715  std::vector<double> assemble_and_solve_composition (const std::vector<double> &initial_residual = {},
716  const unsigned int nonlinear_iteration = 0,
717  std::vector<double> *residual = nullptr);
718 
733  double assemble_and_solve_stokes (const double &initial_nonlinear_residual = 0,
734  double *nonlinear_residual = nullptr);
735 
748  void do_one_defect_correction_Stokes_step(DefectCorrectionResiduals &dcr,
749  const bool use_picard);
750 
758  void assemble_advection_system (const AdvectionField &advection_field);
759 
770  double solve_advection (const AdvectionField &advection_field);
771 
776  void interpolate_particle_properties (const std::vector<AdvectionField> &advection_fields);
777 
854  std::pair<double,double>
855  solve_stokes (LinearAlgebra::BlockVector &solution_vector);
856 
869  void postprocess ();
870 
886  void refine_mesh (const unsigned int max_grid_level);
887 
903  unsigned int determine_last_good_snapshot() const;
904 
912  unsigned int determine_resume_snapshot() const;
913 
925  void create_snapshot(const bool is_additional_checkpoint = false);
926 
940  void resume_from_snapshot();
941 
948  template <class Archive>
949  void serialize (Archive &ar, const unsigned int version);
967  setup_system_matrix_coupling () const;
968 
976  void setup_system_matrix (const std::vector<IndexSet> &system_partitioning);
977 
989  void setup_system_preconditioner (const std::vector<IndexSet> &system_partitioning);
990 
1012  std::unique_ptr<Assemblers::Manager<dim>> assemblers;
1013 
1022  void set_assemblers ();
1023 
1034  void set_advection_assemblers ();
1035 
1045  void set_stokes_assemblers ();
1046 
1053  void assemble_stokes_preconditioner ();
1054 
1062  void
1063  local_assemble_stokes_preconditioner (const typename DoFHandler<dim>::active_cell_iterator &cell,
1066 
1074  void
1075  copy_local_to_global_stokes_preconditioner (const internal::Assembly::CopyData::StokesPreconditioner<dim> &data);
1076 
1084  void
1085  local_assemble_stokes_system (const typename DoFHandler<dim>::active_cell_iterator &cell,
1088 
1096  void
1097  copy_local_to_global_stokes_system (const internal::Assembly::CopyData::StokesSystem<dim> &data);
1098 
1106  void
1107  local_assemble_advection_face_terms(const AdvectionField &advection_field,
1108  const typename DoFHandler<dim>::active_cell_iterator &cell,
1118  void
1119  local_assemble_advection_system (const AdvectionField &advection_field,
1120  const Vector<double> &viscosity_per_cell,
1121  const typename DoFHandler<dim>::active_cell_iterator &cell,
1124 
1132  void
1133  copy_local_to_global_advection_system (const AdvectionField &advection_field,
1135 
1160  void make_pressure_rhs_compatible(LinearAlgebra::BlockVector &vector);
1161 
1171  template <typename T>
1172  void get_artificial_viscosity (Vector<T> &viscosity_per_cell,
1173  const AdvectionField &advection_field,
1174  const bool skip_interior_cells = false) const;
1175 
1208  double normalize_pressure(LinearAlgebra::BlockVector &vector) const;
1209 
1249  void denormalize_pressure(const double pressure_adjustment,
1250  LinearAlgebra::BlockVector &vector) const;
1251 
1260  void apply_limiter_to_dg_solutions (const AdvectionField &advection_field);
1261 
1278  void compute_unique_advection_support_points (const std::vector<AdvectionField> &advection_fields,
1279  std::vector<Point<dim>> &unique_support_points,
1280  std::vector<std::vector<unsigned int>> &support_point_index_by_field) const;
1281 
1308  void compute_reactions (const std::vector<AdvectionField> &advection_fields_with_reactions);
1309 
1319  void update_solution_vectors_with_reaction_results (const unsigned int block_index,
1320  const LinearAlgebra::BlockVector &distributed_vector,
1321  const LinearAlgebra::BlockVector &distributed_reaction_vector);
1322 
1333  void initialize_current_linearization_point ();
1334 
1354  void interpolate_material_output_into_advection_field (const std::vector<AdvectionField> &adv_field);
1355 
1356 
1364  void interpolate_onto_velocity_system(const TensorFunction<1,dim> &func,
1365  LinearAlgebra::Vector &vec) const;
1366 
1384  double perform_line_search(const DefectCorrectionResiduals &dcr,
1385  const bool use_picard,
1386  const LinearAlgebra::BlockVector &search_direction);
1387 
1402  void setup_nullspace_constraints(AffineConstraints<double> &constraints);
1403 
1404 
1417  void remove_nullspace(LinearAlgebra::BlockVector &solution,
1418  LinearAlgebra::BlockVector &distributed_stokes_solution) const;
1419 
1435  compute_net_angular_momentum(const bool use_constant_density,
1436  const LinearAlgebra::BlockVector &solution,
1437  const bool limit_to_top_faces = false) const;
1438 
1455  void remove_net_angular_momentum(const bool use_constant_density,
1456  LinearAlgebra::BlockVector &relevant_dst,
1457  LinearAlgebra::BlockVector &tmp_distributed_stokes,
1458  const bool limit_to_top_faces = false) const;
1459 
1467  void replace_outflow_boundary_ids(const unsigned int boundary_id_offset,
1468  const bool is_composition,
1469  const unsigned int composition_index);
1470 
1478  void restore_outflow_boundary_ids(const unsigned int boundary_id_offset);
1479 
1493  void remove_net_linear_momentum(const bool use_constant_density,
1494  LinearAlgebra::BlockVector &relevant_dst,
1495  LinearAlgebra::BlockVector &tmp_distributed_stokes) const;
1496 
1504  double get_maximal_velocity (const LinearAlgebra::BlockVector &solution) const;
1505 
1518  double get_entropy_variation (const double average_field,
1519  const AdvectionField &advection_field) const;
1520 
1529  std::pair<double,double>
1530  get_extrapolated_advection_field_range (const AdvectionField &advection_field) const;
1531 
1541  void exchange_refinement_flags();
1542 
1543 
1548  bool synchronize_periodic_refinement_flags();
1549 
1550 
1555  void prepare_periodic_refinement();
1556 
1557 
1566  void maybe_write_timing_output () const;
1567 
1575  bool maybe_write_checkpoint (const std::time_t last_checkpoint_time,
1576  const bool force_writing_checkpoint);
1577 
1594  bool maybe_do_initial_refinement (const unsigned int max_refinement_level);
1595 
1604  void maybe_refine_mesh (const double new_time_step,
1605  unsigned int &max_refinement_level);
1606 
1614  void advance_time (const double step_size);
1615 
1623  double
1624  compute_viscosity(internal::Assembly::Scratch::AdvectionSystem<dim> &scratch,
1625  const double global_u_infty,
1626  const double global_field_variation,
1627  const double average_field,
1628  const double global_entropy_variation,
1629  const double cell_diameter,
1630  const AdvectionField &advection_field) const;
1631 
1640  void
1641  compute_advection_system_residual(internal::Assembly::Scratch::AdvectionSystem<dim> &scratch,
1642  const double average_field,
1643  const AdvectionField &advection_field,
1644  double &max_residual,
1645  double &max_velocity,
1646  double &max_density,
1647  double &max_specific_heat,
1648  double &conductivity) const;
1649 
1664  bool
1665  stokes_matrix_depends_on_solution () const;
1666 
1676  bool
1677  stokes_A_block_is_symmetric () const;
1678 
1687  bool
1688  is_stokes_matrix_free() const;
1689 
1702  void
1703  check_consistency_of_formulation ();
1704 
1710  void
1711  select_default_solver_and_averaging ();
1712 
1723  void
1724  check_consistency_of_boundary_conditions () const;
1725 
1729  double
1730  compute_initial_newton_residual ();
1731 
1740  double
1741  compute_Eisenstat_Walker_linear_tolerance(const bool EisenstatWalkerChoiceOne,
1742  const double maximum_linear_stokes_solver_tolerance,
1743  const double linear_stokes_solver_tolerance,
1744  const double stokes_residual,
1745  const double newton_residual,
1746  const double newton_residual_old);
1747 
1757  void output_statistics();
1758 
1770  double
1771  compute_initial_stokes_residual();
1772 
1783 
1789  std::unique_ptr<MeltHandler<dim>> melt_handler;
1790 
1796  std::unique_ptr<NewtonHandler<dim>> newton_handler;
1797 
1799 
1801 
1809  std::unique_ptr<VolumeOfFluidHandler<dim>> volume_of_fluid_handler;
1810 
1812 
1813 
1815 
1820  std::ofstream log_file_stream;
1821 
1822  using TeeDevice = boost::iostreams::tee_device<std::ostream, std::ofstream>;
1823  using TeeStream = boost::iostreams::stream<TeeDevice>;
1824 
1827 
1833 
1844 
1861 
1863 
1869 
1875 
1882  unsigned int last_checkpoint_id;
1883 
1889 
1896 
1905 
1914  const std::shared_ptr<InitialTopographyModel::Interface<dim>> initial_topography_model;
1915  const std::unique_ptr<GeometryModel::Interface<dim>> geometry_model;
1917  const std::unique_ptr<MaterialModel::Interface<dim>> material_model;
1918  const std::unique_ptr<GravityModel::Interface<dim>> gravity_model;
1919 
1924  const std::unique_ptr<PrescribedStokesSolution::Interface<dim>> prescribed_stokes_solution;
1925 
1936  std::shared_ptr<InitialTemperature::Manager<dim>> initial_temperature_manager;
1937  std::shared_ptr<InitialComposition::Manager<dim>> initial_composition_manager;
1938 
1939  const std::unique_ptr<AdiabaticConditions::Interface<dim>> adiabatic_conditions;
1940 #ifdef ASPECT_WITH_WORLD_BUILDER
1941 
1952  std::shared_ptr<WorldBuilder::World> world_builder;
1953 #endif
1956  const std::unique_ptr<BoundaryHeatFlux::Interface<dim>> boundary_heat_flux;
1957 
1965  double time;
1966  double time_step;
1968  unsigned int timestep_number;
1969  unsigned int pre_refinement_step;
1970  unsigned int nonlinear_iteration;
2002 
2006 
2015  std::unique_ptr<Mapping<dim>> mapping;
2016 
2018 
2020 
2022 
2026  std::vector<Particle::Manager<dim>> particle_managers;
2027 
2041 
2047 
2054 
2062 
2082 
2088 
2102 
2107 
2109 
2110  // only used if is_compressible()
2112 
2113  // only used if operator split is enabled
2115 
2116 
2117 
2118  std::unique_ptr<LinearAlgebra::PreconditionAMG> Amg_preconditioner;
2119  std::unique_ptr<LinearAlgebra::PreconditionBase> Mp_preconditioner;
2120 
2126 
2142 
2148 
2154 
2159 
2169  std::unique_ptr<MeshDeformation::MeshDeformationHandler<dim>> mesh_deformation;
2170 
2174  std::unique_ptr<StokesSolver::Interface<dim>> stokes_solver;
2175 
2176  friend class boost::serialization::access;
2177  friend class SimulatorAccess<dim>;
2179  friend class VolumeOfFluidHandler<dim>;
2180  friend class StokesMatrixFreeHandler<dim>;
2181  friend class StokesSolver::MatrixBased<dim>;
2182  template <int dimension, int velocity_degree> friend class StokesMatrixFreeHandlerLocalSmoothingImplementation;
2183  friend struct Parameters<dim>;
2184  };
2185 }
2186 
2187 
2188 #endif
The NullspaceRemoval struct.
Definition: parameters.h:179
unsigned int nonlinear_iteration
Definition: simulator.h:1970
BoundaryVelocity::Manager< dim > boundary_velocity_manager
Definition: simulator.h:1954
const std::unique_ptr< AdiabaticConditions::Interface< dim > > adiabatic_conditions
Definition: simulator.h:1939
unsigned int linear_solver_failures
Definition: simulator.h:1972
std::shared_ptr< InitialComposition::Manager< dim > > initial_composition_manager
Definition: simulator.h:1937
void write_plugin_graph(std::ostream &output_stream)
parallel::distributed::Triangulation< dim > triangulation
Definition: simulator.h:1999
TimerOutput computing_timer
Definition: simulator.h:1862
BoundaryTemperature::Manager< dim > boundary_temperature_manager
Definition: simulator.h:1920
boost::iostreams::tee_device< std::ostream, std::ofstream > TeeDevice
Definition: simulator.h:1822
double pressure_scaling
Definition: simulator.h:2053
Tensor< 1, dim > tensor_rotation
Definition: simulator.h:190
double old_time_step
Definition: simulator.h:1967
Tensor< 1, dim > tensor_angular_momentum
Definition: simulator.h:189
AffineConstraints< double > constraints
Definition: simulator.h:2039
bool assemble_newton_stokes_system
Definition: simulator.h:2153
LinearAlgebra::BlockVector old_solution
Definition: simulator.h:2104
const IntermediaryConstructorAction post_geometry_model_creation_action
Definition: simulator.h:1916
std::unique_ptr< VolumeOfFluidHandler< dim > > volume_of_fluid_handler
Definition: simulator.h:1809
bool rebuild_stokes_matrix
Definition: simulator.h:2141
Parameters< dim > parameters
Definition: simulator.h:1782
SymmetricTensor< 2, dim > tensor_moment_of_inertia
Definition: simulator.h:188
AffineConstraints< double > current_constraints
Definition: simulator.h:2040
std::unique_ptr< MeshDeformation::MeshDeformationHandler< dim > > mesh_deformation
Definition: simulator.h:2169
LinearAlgebra::BlockVector system_rhs
Definition: simulator.h:2106
std::pair< double, double > stokes_residuals
Definition: simulator.h:158
std::vector< Particle::Manager< dim > > particle_managers
Definition: simulator.h:2026
std::thread output_statistics_thread
Definition: simulator.h:1904
LateralAveraging< dim > lateral_averaging
Definition: simulator.h:1990
DeclExceptionMsg(ExcNonlinearSolverNoConvergence, "Nonlinear solver failed to converge in the prescribed number of steps. " "Consider changing `Max nonlinear iterations` or `Nonlinear solver failure " "strategy`.")
TeeStream iostream_tee_stream
Definition: simulator.h:1826
MeshRefinement::Manager< dim > mesh_refinement_manager
Definition: simulator.h:2003
std::size_t statistics_last_write_size
Definition: simulator.h:1859
const std::unique_ptr< MaterialModel::Interface< dim > > material_model
Definition: simulator.h:1917
#define DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
unsigned int nonlinear_solver_failures
Definition: simulator.h:1971
double last_pressure_normalization_adjustment
Definition: simulator.h:2046
double total_walltime_until_last_snapshot
Definition: simulator.h:1874
void declare_parameters(ParameterHandler &prm)
const std::unique_ptr< GeometryModel::Interface< dim > > geometry_model
Definition: simulator.h:1915
double initial_residual
LinearAlgebra::BlockVector operator_split_reaction_vector
Definition: simulator.h:2114
unsigned int last_regular_checkpoint_id
Definition: simulator.h:1888
DoFHandler< dim > dof_handler
Definition: simulator.h:2019
unsigned int last_checkpoint_id
Definition: simulator.h:1882
std::unique_ptr< Assemblers::Manager< dim > > assemblers
Definition: simulator.h:1012
bool rebuild_sparsity_and_matrices
Definition: simulator.h:2125
const IntermediaryConstructorAction post_signal_creation
Definition: simulator.h:1800
double global_Omega_diameter
Definition: simulator.h:2000
unsigned int timestep_number
Definition: simulator.h:1968
bool assemble_newton_stokes_matrix
Definition: simulator.h:2147
Manager< dim > World
Definition: world.h:39
ConditionalOStream pcout
Definition: simulator.h:1832
unsigned int pre_refinement_step
Definition: simulator.h:1969
TimeStepping::Manager< dim > time_stepping_manager
Definition: simulator.h:1981
std::size_t statistics_last_hash
Definition: simulator.h:1860
TableHandler statistics
Definition: simulator.h:1843
Introspection< dim > introspection
Definition: simulator.h:1811
MPI_Comm mpi_communicator
Definition: simulator.h:1814
typename Parameters< dim >::NullspaceRemoval NullspaceRemoval
Definition: simulator.h:283
LinearAlgebra::BlockSparseMatrix system_preconditioner_matrix
Definition: simulator.h:2101
bool do_pressure_rhs_compatibility_modification
Definition: simulator.h:2061
LinearAlgebra::BlockVector current_linearization_point
Definition: simulator.h:2108
BoundaryConvectiveHeating::Manager< dim > boundary_convective_heating_manager
Definition: simulator.h:1921
LinearAlgebra::BlockVector old_old_solution
Definition: simulator.h:2105
BoundaryTraction::Manager< dim > boundary_traction_manager
Definition: simulator.h:1955
LinearAlgebra::BlockVector pressure_shape_function_integrals
Definition: simulator.h:2111
unsigned int last_additional_checkpoint_id
Definition: simulator.h:1895
std::ofstream log_file_stream
Definition: simulator.h:1820
std::unique_ptr< LinearAlgebra::PreconditionAMG > Amg_preconditioner
Definition: simulator.h:2118
std::unique_ptr< StokesSolver::Interface< dim > > stokes_solver
Definition: simulator.h:2174
std::shared_ptr< InitialTemperature::Manager< dim > > initial_temperature_manager
Definition: simulator.h:1936
TeeDevice iostream_tee_device
Definition: simulator.h:1825
boost::iostreams::stream< TeeDevice > TeeStream
Definition: simulator.h:1823
LinearAlgebra::BlockSparseMatrix system_matrix
Definition: simulator.h:2081
#define DEAL_II_ENABLE_EXTRA_DIAGNOSTICS
std::unique_ptr< MeltHandler< dim > > melt_handler
Definition: simulator.h:1789
LinearAlgebra::BlockVector inverse_lumped_mass_matrix
Definition: simulator.h:2087
bool rebuild_stokes_preconditioner
Definition: simulator.h:2158
PrescribedSolution::Manager< dim > prescribed_solution_manager
Definition: simulator.h:1923
const std::shared_ptr< InitialTopographyModel::Interface< dim > > initial_topography_model
Definition: simulator.h:1914
std::unique_ptr< Mapping< dim > > mapping
Definition: simulator.h:2015
const std::unique_ptr< PrescribedStokesSolution::Interface< dim > > prescribed_stokes_solution
Definition: simulator.h:1924
HeatingModel::Manager< dim > heating_model_manager
Definition: simulator.h:2004
SimulatorSignals< dim > signals
Definition: simulator.h:1798
const std::unique_ptr< BoundaryHeatFlux::Interface< dim > > boundary_heat_flux
Definition: simulator.h:1956
const FESystem< dim > finite_element
Definition: simulator.h:2017
bool simulator_is_past_initialization
Definition: simulator.h:307
LinearAlgebra::BlockVector solution
Definition: simulator.h:2103
std::unique_ptr< NewtonHandler< dim > > newton_handler
Definition: simulator.h:1796
typename Parameters< dim >::NonlinearSolver NonlinearSolver
Definition: simulator.h:278
PrescribedDilation::Manager< dim > prescribed_dilation_manager
Definition: simulator.h:2005
Postprocess::Manager< dim > postprocess_manager
Definition: simulator.h:2021
const std::unique_ptr< GravityModel::Interface< dim > > gravity_model
Definition: simulator.h:1918
double newton_residual_for_derivative_scaling_factor
Definition: simulator.h:157
double global_volume
Definition: simulator.h:2001
BoundaryComposition::Manager< dim > boundary_composition_manager
Definition: simulator.h:1922
std::unique_ptr< LinearAlgebra::PreconditionBase > Mp_preconditioner
Definition: simulator.h:2119