ASPECT
simulator.h
Go to the documentation of this file.
1 // ------------------------------------------------------
2 //
3 // SPDX-License-Identifier: GPL-2.0-or-later
4 //
5 // SPDX-FileCopyrightText: Copyright (C) 2011-2026 by the ASPECT authors.
6 //
7 // This file is part of ASPECT.
8 //
9 // Detailed license information governing the source code and
10 // contributions can be found in the folder LICENSES and in
11 // LICENSE and CONTRIBUTING.md at the top level directory.
12 //
13 // ------------------------------------------------------
14 
15 
16 #ifndef _aspect_simulator_h
17 #define _aspect_simulator_h
18 
19 #include <fstream>
20 
21 #include <deal.II/base/timer.h>
25 
27 
29 
31 
33 #include <deal.II/dofs/dof_tools.h>
34 
35 #include <deal.II/fe/fe_system.h>
36 #include <deal.II/fe/mapping.h>
38 
40 
41 #include <aspect/global.h>
68 #include <aspect/advection_field.h>
69 
70 #include <boost/iostreams/tee.hpp>
71 #include <boost/iostreams/stream.hpp>
72 
73 #include <memory>
74 #include <thread>
75 
76 namespace WorldBuilder
77 {
78  class World;
79 }
80 
81 
82 namespace aspect
83 {
84  template <int dim>
85  class MeltHandler;
86 
87  template <int dim>
88  class NewtonHandler;
89 
90  template <int dim>
92 
93  namespace StokesSolver
94  {
95  template <int dim>
96  class Interface;
97 
98  template <int dim>
99  class Direct;
100 
101  template <int dim>
102  class MatrixBased;
103  }
104 
105  template <int dim, int velocity_degree>
107 
108  namespace MeshDeformation
109  {
110  template <int dim>
112  }
113 
114  template <int dim>
116 
117  namespace internal
118  {
119  namespace Assembly
120  {
121  namespace Scratch
122  {
123  template <int dim> struct StokesPreconditioner;
124  template <int dim> struct StokesSystem;
125  template <int dim> struct AdvectionSystem;
126  }
127 
128  namespace CopyData
129  {
130  template <int dim> struct StokesPreconditioner;
131  template <int dim> struct StokesSystem;
132  template <int dim> struct AdvectionSystem;
133  }
134  }
135  }
136 
137  namespace Assemblers
138  {
139  template <int dim> class Interface;
140  template <int dim> class Manager;
141  }
142 
144  {
148  double residual;
149  double residual_old;
152  std::pair<double,double> stokes_residuals;
153  };
154 
158  template <int dim>
160  {
162  :
163  scalar_moment_of_inertia(numbers::signaling_nan<double>()),
164  scalar_angular_momentum(numbers::signaling_nan<double>()),
165  scalar_rotation(numbers::signaling_nan<double>()),
166  tensor_moment_of_inertia(numbers::signaling_nan<SymmetricTensor<2,dim>>()),
167  tensor_angular_momentum(numbers::signaling_nan<Tensor<1,dim>>()),
168  tensor_rotation(numbers::signaling_nan<Tensor<1,dim>>())
169  {};
170 
178 
185  };
186 
190  DeclExceptionMsg(ExcNonlinearSolverNoConvergence,
191  "Nonlinear solver failed to converge in the prescribed number of steps. "
192  "Consider changing `Max nonlinear iterations` or `Nonlinear solver failure "
193  "strategy`.");
194 
202  template <int dim>
204  {
205  public:
219  Simulator (const MPI_Comm mpi_communicator,
220  ParameterHandler &prm);
221 
226  ~Simulator ();
227 
242  static
243  void declare_parameters (ParameterHandler &prm, const unsigned int mpi_rank);
244 
253  void run ();
254 
266  void
267  write_plugin_graph (std::ostream &output_stream) const;
268 
273 
278 
280 
281  private:
282 
302 
320  {
321  IntermediaryConstructorAction (const std::function<void ()> &action);
322  };
323 
338  void setup_dofs ();
339 
348  void setup_introspection ();
349 
361  void set_initial_temperature_and_compositional_fields ();
362 
378  void compute_initial_pressure_field ();
379 
385  void compute_initial_velocity_boundary_constraints (AffineConstraints<double> &constraints);
386 
392  void compute_current_velocity_boundary_constraints (AffineConstraints<double> &constraints);
393 
406  void compute_current_constraints ();
407 
421  double compute_pressure_scaling_factor () const;
422 
434  void start_timestep ();
435 
443  void solve_timestep ();
444 
456  void solve_no_advection_no_stokes ();
457 
468  void solve_no_advection_single_stokes ();
469 
481  void solve_no_advection_single_stokes_first_timestep_only ();
482 
495  void solve_no_advection_iterated_stokes ();
496 
509  void solve_no_advection_iterated_defect_correction_stokes ();
510 
522  void solve_single_advection_no_stokes ();
523 
535  void solve_single_advection_single_stokes ();
536 
549  void solve_single_advection_iterated_stokes ();
550 
563  void solve_single_advection_iterated_defect_correction_stokes ();
564 
584  void solve_single_advection_iterated_newton_stokes (bool use_newton_iterations);
585 
597  void solve_iterated_advection_no_stokes ();
598 
611  void solve_iterated_advection_and_stokes ();
612 
626  void solve_iterated_advection_and_defect_correction_stokes ();
627 
646  void solve_iterated_advection_and_newton_stokes (bool use_newton_iterations);
647 
656  void build_stokes_preconditioner ();
657 
665  void build_advection_preconditioner (const AdvectionField &advection_field,
667  const double diagonal_strengthening);
668 
675  void assemble_stokes_system ();
676 
691  double assemble_and_solve_temperature (const double &initial_residual = 0,
692  double *residual = nullptr);
693 
709  std::vector<double> assemble_and_solve_composition (const std::vector<double> &initial_residual = {},
710  const unsigned int nonlinear_iteration = 0,
711  std::vector<double> *residual = nullptr);
712 
727  double assemble_and_solve_stokes (const double &initial_nonlinear_residual = 0,
728  double *nonlinear_residual = nullptr);
729 
742  void do_one_defect_correction_Stokes_step(DefectCorrectionResiduals &dcr,
743  const bool use_picard);
744 
752  void assemble_advection_system (const AdvectionField &advection_field);
753 
764  double solve_advection (const AdvectionField &advection_field);
765 
770  void interpolate_particle_properties (const std::vector<AdvectionField> &advection_fields);
771 
848  std::pair<double,double>
849  solve_stokes (LinearAlgebra::BlockVector &solution_vector);
850 
863  void postprocess ();
864 
880  void refine_mesh (const unsigned int max_grid_level);
881 
897  unsigned int determine_last_good_snapshot() const;
898 
906  unsigned int determine_resume_snapshot() const;
907 
919  void create_snapshot(const bool is_additional_checkpoint = false);
920 
934  void resume_from_snapshot();
935 
942  template <class Archive>
943  void serialize (Archive &ar, const unsigned int version);
961  setup_system_matrix_coupling () const;
962 
970  void setup_system_matrix (const std::vector<IndexSet> &system_partitioning);
971 
983  void setup_system_preconditioner (const std::vector<IndexSet> &system_partitioning);
984 
1006  std::unique_ptr<Assemblers::Manager<dim>> assemblers;
1007 
1016  void set_assemblers ();
1017 
1028  void set_advection_assemblers ();
1029 
1039  void set_stokes_assemblers ();
1040 
1047  void assemble_stokes_preconditioner ();
1048 
1056  void
1057  local_assemble_stokes_preconditioner (const typename DoFHandler<dim>::active_cell_iterator &cell,
1060 
1068  void
1069  copy_local_to_global_stokes_preconditioner (const internal::Assembly::CopyData::StokesPreconditioner<dim> &data);
1070 
1078  void
1079  local_assemble_stokes_system (const typename DoFHandler<dim>::active_cell_iterator &cell,
1082 
1090  void
1091  copy_local_to_global_stokes_system (const internal::Assembly::CopyData::StokesSystem<dim> &data);
1092 
1100  void
1101  local_assemble_advection_face_terms(const AdvectionField &advection_field,
1102  const typename DoFHandler<dim>::active_cell_iterator &cell,
1112  void
1113  local_assemble_advection_system (const AdvectionField &advection_field,
1114  const Vector<double> &viscosity_per_cell,
1115  const typename DoFHandler<dim>::active_cell_iterator &cell,
1118 
1126  void
1127  copy_local_to_global_advection_system (const AdvectionField &advection_field,
1129 
1154  void make_pressure_rhs_compatible(LinearAlgebra::BlockVector &vector);
1155 
1165  template <typename T>
1166  void get_artificial_viscosity (Vector<T> &viscosity_per_cell,
1167  const AdvectionField &advection_field,
1168  const bool skip_interior_cells = false) const;
1169 
1202  double normalize_pressure(LinearAlgebra::BlockVector &vector) const;
1203 
1243  void denormalize_pressure(const double pressure_adjustment,
1244  LinearAlgebra::BlockVector &vector) const;
1245 
1254  void apply_limiter_to_dg_solutions (const AdvectionField &advection_field);
1255 
1272  void compute_unique_advection_support_points (const std::vector<AdvectionField> &advection_fields,
1273  std::vector<Point<dim>> &unique_support_points,
1274  std::vector<std::vector<unsigned int>> &support_point_index_by_field) const;
1275 
1302  void compute_reactions (const std::vector<AdvectionField> &advection_fields_with_reactions);
1303 
1313  void update_solution_vectors_with_reaction_results (const unsigned int block_index,
1314  const LinearAlgebra::BlockVector &distributed_vector,
1315  const LinearAlgebra::BlockVector &distributed_reaction_vector);
1316 
1327  void initialize_current_linearization_point ();
1328 
1348  void interpolate_material_output_into_advection_field (const std::vector<AdvectionField> &adv_field);
1349 
1350 
1358  void interpolate_onto_velocity_system(const TensorFunction<1,dim> &func,
1359  LinearAlgebra::Vector &vec) const;
1360 
1378  double perform_line_search(const DefectCorrectionResiduals &dcr,
1379  const bool use_picard,
1380  const LinearAlgebra::BlockVector &search_direction);
1381 
1396  void setup_nullspace_constraints(AffineConstraints<double> &constraints);
1397 
1398 
1411  void remove_nullspace(LinearAlgebra::BlockVector &solution,
1412  LinearAlgebra::BlockVector &distributed_stokes_solution) const;
1413 
1429  compute_net_angular_momentum(const bool use_constant_density,
1430  const LinearAlgebra::BlockVector &solution,
1431  const bool limit_to_top_faces = false) const;
1432 
1449  void remove_net_angular_momentum(const bool use_constant_density,
1450  LinearAlgebra::BlockVector &relevant_dst,
1451  LinearAlgebra::BlockVector &tmp_distributed_stokes,
1452  const bool limit_to_top_faces = false) const;
1453 
1461  void replace_outflow_boundary_ids(const unsigned int boundary_id_offset,
1462  const bool is_composition,
1463  const unsigned int composition_index);
1464 
1472  void restore_outflow_boundary_ids(const unsigned int boundary_id_offset);
1473 
1487  void remove_net_linear_momentum(const bool use_constant_density,
1488  LinearAlgebra::BlockVector &relevant_dst,
1489  LinearAlgebra::BlockVector &tmp_distributed_stokes) const;
1490 
1498  double get_maximal_velocity (const LinearAlgebra::BlockVector &solution) const;
1499 
1512  double get_entropy_variation (const double average_field,
1513  const AdvectionField &advection_field) const;
1514 
1523  std::pair<double,double>
1524  get_extrapolated_advection_field_range (const AdvectionField &advection_field) const;
1525 
1535  void exchange_refinement_flags();
1536 
1537 
1542  bool synchronize_periodic_refinement_flags();
1543 
1544 
1549  void prepare_periodic_refinement();
1550 
1551 
1560  void maybe_write_timing_output () const;
1561 
1569  bool maybe_write_checkpoint (const std::time_t last_checkpoint_time,
1570  const bool force_writing_checkpoint);
1571 
1588  bool maybe_do_initial_refinement (const unsigned int max_refinement_level);
1589 
1598  void maybe_refine_mesh (const double new_time_step,
1599  unsigned int &max_refinement_level);
1600 
1608  void advance_time (const double step_size);
1609 
1617  double
1618  compute_viscosity(internal::Assembly::Scratch::AdvectionSystem<dim> &scratch,
1619  const double global_u_infty,
1620  const double global_field_variation,
1621  const double average_field,
1622  const double global_entropy_variation,
1623  const double cell_diameter,
1624  const AdvectionField &advection_field) const;
1625 
1634  void
1635  compute_advection_system_residual(internal::Assembly::Scratch::AdvectionSystem<dim> &scratch,
1636  const double average_field,
1637  const AdvectionField &advection_field,
1638  double &max_residual,
1639  double &max_velocity,
1640  double &max_density,
1641  double &max_specific_heat,
1642  double &conductivity) const;
1643 
1658  bool
1659  stokes_matrix_depends_on_solution () const;
1660 
1670  bool
1671  stokes_A_block_is_symmetric () const;
1672 
1681  bool
1682  is_stokes_matrix_free() const;
1683 
1696  void
1697  check_consistency_of_formulation ();
1698 
1704  void
1705  select_default_solver_and_averaging ();
1706 
1717  void
1718  check_consistency_of_boundary_conditions () const;
1719 
1723  double
1724  compute_initial_newton_residual ();
1725 
1734  double
1735  compute_Eisenstat_Walker_linear_tolerance(const bool EisenstatWalkerChoiceOne,
1736  const double maximum_linear_stokes_solver_tolerance,
1737  const double linear_stokes_solver_tolerance,
1738  const double stokes_residual,
1739  const double newton_residual,
1740  const double newton_residual_old);
1741 
1751  void output_statistics();
1752 
1764  double
1765  compute_initial_stokes_residual();
1766 
1777 
1783  std::unique_ptr<MeltHandler<dim>> melt_handler;
1784 
1790  std::unique_ptr<NewtonHandler<dim>> newton_handler;
1791 
1793 
1795 
1803  std::unique_ptr<VolumeOfFluidHandler<dim>> volume_of_fluid_handler;
1804 
1806 
1807 
1809 
1814  std::ofstream log_file_stream;
1815 
1816  using TeeDevice = boost::iostreams::tee_device<std::ostream, std::ofstream>;
1817  using TeeStream = boost::iostreams::stream<TeeDevice>;
1818 
1821 
1827 
1838 
1855 
1857 
1863 
1869 
1876  unsigned int last_checkpoint_id;
1877 
1883 
1890 
1899 
1908  const std::shared_ptr<InitialTopographyModel::Interface<dim>> initial_topography_model;
1909  const std::unique_ptr<GeometryModel::Interface<dim>> geometry_model;
1911  const std::unique_ptr<MaterialModel::Interface<dim>> material_model;
1912  const std::unique_ptr<GravityModel::Interface<dim>> gravity_model;
1913 
1918  const std::unique_ptr<PrescribedStokesSolution::Interface<dim>> prescribed_stokes_solution;
1919 
1930  std::shared_ptr<InitialTemperature::Manager<dim>> initial_temperature_manager;
1931  std::shared_ptr<InitialComposition::Manager<dim>> initial_composition_manager;
1932 
1933  const std::unique_ptr<AdiabaticConditions::Interface<dim>> adiabatic_conditions;
1934 #ifdef ASPECT_WITH_WORLD_BUILDER
1935 
1946  std::shared_ptr<WorldBuilder::World> world_builder;
1947 #endif
1950  const std::unique_ptr<BoundaryHeatFlux::Interface<dim>> boundary_heat_flux;
1951 
1959  double time;
1960  double time_step;
1962  unsigned int timestep_number;
1963  unsigned int pre_refinement_step;
1964  unsigned int nonlinear_iteration;
1996 
2000 
2009  std::unique_ptr<Mapping<dim>> mapping;
2010 
2012 
2014 
2016 
2020  std::vector<Particle::Manager<dim>> particle_managers;
2021 
2035 
2041 
2048 
2056 
2076 
2082 
2096 
2101 
2103 
2104  // only used if is_compressible()
2106 
2107  // only used if operator split is enabled
2109 
2110 
2111 
2112  std::unique_ptr<LinearAlgebra::PreconditionAMG> Amg_preconditioner;
2113  std::unique_ptr<LinearAlgebra::PreconditionBase> Mp_preconditioner;
2114 
2120 
2136 
2142 
2148 
2153 
2163  std::unique_ptr<MeshDeformation::MeshDeformationHandler<dim>> mesh_deformation;
2164 
2168  std::unique_ptr<StokesSolver::Interface<dim>> stokes_solver;
2169 
2170  friend class boost::serialization::access;
2171  friend class SimulatorAccess<dim>;
2173  friend class VolumeOfFluidHandler<dim>;
2174  friend class StokesMatrixFreeHandler<dim>;
2175  friend class StokesSolver::MatrixBased<dim>;
2176  template <int dimension, int velocity_degree> friend class StokesMatrixFreeHandlerLocalSmoothingImplementation;
2177  friend struct Parameters<dim>;
2178  };
2179 }
2180 
2181 
2182 #endif
The NullspaceRemoval struct.
Definition: parameters.h:173
unsigned int nonlinear_iteration
Definition: simulator.h:1964
BoundaryVelocity::Manager< dim > boundary_velocity_manager
Definition: simulator.h:1948
const std::unique_ptr< AdiabaticConditions::Interface< dim > > adiabatic_conditions
Definition: simulator.h:1933
unsigned int linear_solver_failures
Definition: simulator.h:1966
std::shared_ptr< InitialComposition::Manager< dim > > initial_composition_manager
Definition: simulator.h:1931
void write_plugin_graph(std::ostream &output_stream)
parallel::distributed::Triangulation< dim > triangulation
Definition: simulator.h:1993
TimerOutput computing_timer
Definition: simulator.h:1856
BoundaryTemperature::Manager< dim > boundary_temperature_manager
Definition: simulator.h:1914
boost::iostreams::tee_device< std::ostream, std::ofstream > TeeDevice
Definition: simulator.h:1816
double pressure_scaling
Definition: simulator.h:2047
Tensor< 1, dim > tensor_rotation
Definition: simulator.h:184
double old_time_step
Definition: simulator.h:1961
Tensor< 1, dim > tensor_angular_momentum
Definition: simulator.h:183
AffineConstraints< double > constraints
Definition: simulator.h:2033
bool assemble_newton_stokes_system
Definition: simulator.h:2147
LinearAlgebra::BlockVector old_solution
Definition: simulator.h:2098
const IntermediaryConstructorAction post_geometry_model_creation_action
Definition: simulator.h:1910
std::unique_ptr< VolumeOfFluidHandler< dim > > volume_of_fluid_handler
Definition: simulator.h:1803
bool rebuild_stokes_matrix
Definition: simulator.h:2135
Parameters< dim > parameters
Definition: simulator.h:1776
SymmetricTensor< 2, dim > tensor_moment_of_inertia
Definition: simulator.h:182
AffineConstraints< double > current_constraints
Definition: simulator.h:2034
std::unique_ptr< MeshDeformation::MeshDeformationHandler< dim > > mesh_deformation
Definition: simulator.h:2163
LinearAlgebra::BlockVector system_rhs
Definition: simulator.h:2100
std::pair< double, double > stokes_residuals
Definition: simulator.h:152
std::vector< Particle::Manager< dim > > particle_managers
Definition: simulator.h:2020
std::thread output_statistics_thread
Definition: simulator.h:1898
LateralAveraging< dim > lateral_averaging
Definition: simulator.h:1984
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:1820
MeshRefinement::Manager< dim > mesh_refinement_manager
Definition: simulator.h:1997
std::size_t statistics_last_write_size
Definition: simulator.h:1853
const std::unique_ptr< MaterialModel::Interface< dim > > material_model
Definition: simulator.h:1911
#define DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
unsigned int nonlinear_solver_failures
Definition: simulator.h:1965
double last_pressure_normalization_adjustment
Definition: simulator.h:2040
double total_walltime_until_last_snapshot
Definition: simulator.h:1868
void declare_parameters(ParameterHandler &prm)
const std::unique_ptr< GeometryModel::Interface< dim > > geometry_model
Definition: simulator.h:1909
double initial_residual
LinearAlgebra::BlockVector operator_split_reaction_vector
Definition: simulator.h:2108
unsigned int last_regular_checkpoint_id
Definition: simulator.h:1882
DoFHandler< dim > dof_handler
Definition: simulator.h:2013
unsigned int last_checkpoint_id
Definition: simulator.h:1876
std::unique_ptr< Assemblers::Manager< dim > > assemblers
Definition: simulator.h:1006
bool rebuild_sparsity_and_matrices
Definition: simulator.h:2119
const IntermediaryConstructorAction post_signal_creation
Definition: simulator.h:1794
double global_Omega_diameter
Definition: simulator.h:1994
unsigned int timestep_number
Definition: simulator.h:1962
bool assemble_newton_stokes_matrix
Definition: simulator.h:2141
Manager< dim > World
Definition: world.h:33
ConditionalOStream pcout
Definition: simulator.h:1826
unsigned int pre_refinement_step
Definition: simulator.h:1963
TimeStepping::Manager< dim > time_stepping_manager
Definition: simulator.h:1975
std::size_t statistics_last_hash
Definition: simulator.h:1854
TableHandler statistics
Definition: simulator.h:1837
Introspection< dim > introspection
Definition: simulator.h:1805
MPI_Comm mpi_communicator
Definition: simulator.h:1808
typename Parameters< dim >::NullspaceRemoval NullspaceRemoval
Definition: simulator.h:277
LinearAlgebra::BlockSparseMatrix system_preconditioner_matrix
Definition: simulator.h:2095
bool do_pressure_rhs_compatibility_modification
Definition: simulator.h:2055
LinearAlgebra::BlockVector current_linearization_point
Definition: simulator.h:2102
BoundaryConvectiveHeating::Manager< dim > boundary_convective_heating_manager
Definition: simulator.h:1915
LinearAlgebra::BlockVector old_old_solution
Definition: simulator.h:2099
BoundaryTraction::Manager< dim > boundary_traction_manager
Definition: simulator.h:1949
LinearAlgebra::BlockVector pressure_shape_function_integrals
Definition: simulator.h:2105
unsigned int last_additional_checkpoint_id
Definition: simulator.h:1889
std::ofstream log_file_stream
Definition: simulator.h:1814
std::unique_ptr< LinearAlgebra::PreconditionAMG > Amg_preconditioner
Definition: simulator.h:2112
std::unique_ptr< StokesSolver::Interface< dim > > stokes_solver
Definition: simulator.h:2168
std::shared_ptr< InitialTemperature::Manager< dim > > initial_temperature_manager
Definition: simulator.h:1930
TeeDevice iostream_tee_device
Definition: simulator.h:1819
boost::iostreams::stream< TeeDevice > TeeStream
Definition: simulator.h:1817
LinearAlgebra::BlockSparseMatrix system_matrix
Definition: simulator.h:2075
#define DEAL_II_ENABLE_EXTRA_DIAGNOSTICS
std::unique_ptr< MeltHandler< dim > > melt_handler
Definition: simulator.h:1783
LinearAlgebra::BlockVector inverse_lumped_mass_matrix
Definition: simulator.h:2081
bool rebuild_stokes_preconditioner
Definition: simulator.h:2152
PrescribedSolution::Manager< dim > prescribed_solution_manager
Definition: simulator.h:1917
const std::shared_ptr< InitialTopographyModel::Interface< dim > > initial_topography_model
Definition: simulator.h:1908
std::unique_ptr< Mapping< dim > > mapping
Definition: simulator.h:2009
const std::unique_ptr< PrescribedStokesSolution::Interface< dim > > prescribed_stokes_solution
Definition: simulator.h:1918
HeatingModel::Manager< dim > heating_model_manager
Definition: simulator.h:1998
SimulatorSignals< dim > signals
Definition: simulator.h:1792
const std::unique_ptr< BoundaryHeatFlux::Interface< dim > > boundary_heat_flux
Definition: simulator.h:1950
const FESystem< dim > finite_element
Definition: simulator.h:2011
bool simulator_is_past_initialization
Definition: simulator.h:301
LinearAlgebra::BlockVector solution
Definition: simulator.h:2097
std::unique_ptr< NewtonHandler< dim > > newton_handler
Definition: simulator.h:1790
typename Parameters< dim >::NonlinearSolver NonlinearSolver
Definition: simulator.h:272
PrescribedDilation::Manager< dim > prescribed_dilation_manager
Definition: simulator.h:1999
Postprocess::Manager< dim > postprocess_manager
Definition: simulator.h:2015
const std::unique_ptr< GravityModel::Interface< dim > > gravity_model
Definition: simulator.h:1912
double newton_residual_for_derivative_scaling_factor
Definition: simulator.h:151
double global_volume
Definition: simulator.h:1995
BoundaryComposition::Manager< dim > boundary_composition_manager
Definition: simulator.h:1916
std::unique_ptr< LinearAlgebra::PreconditionBase > Mp_preconditioner
Definition: simulator.h:2113