ASPECT
simulator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2011 - 2024 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 <deal.II/base/timer.h>
29 
31 
33 
35 
37 #include <deal.II/dofs/dof_tools.h>
38 
39 #include <deal.II/fe/fe_system.h>
40 #include <deal.II/fe/mapping.h>
42 
44 
45 #include <aspect/global.h>
72 #include <aspect/advection_field.h>
73 
74 #include <boost/iostreams/tee.hpp>
75 #include <boost/iostreams/stream.hpp>
76 
77 #include <memory>
78 #include <thread>
79 
80 namespace WorldBuilder
81 {
82  class World;
83 }
84 
85 
86 namespace aspect
87 {
88  template <int dim>
89  class MeltHandler;
90 
91  template <int dim>
92  class NewtonHandler;
93 
94  template <int dim>
96 
97  namespace StokesSolver
98  {
99  template <int dim>
100  class Direct;
101  }
102 
103  template <int dim, int velocity_degree>
105 
106  namespace MeshDeformation
107  {
108  template <int dim>
110  }
111 
112  template <int dim>
114 
115  namespace internal
116  {
117  namespace Assembly
118  {
119  namespace Scratch
120  {
121  template <int dim> struct StokesPreconditioner;
122  template <int dim> struct StokesSystem;
123  template <int dim> struct AdvectionSystem;
124  }
125 
126  namespace CopyData
127  {
128  template <int dim> struct StokesPreconditioner;
129  template <int dim> struct StokesSystem;
130  template <int dim> struct AdvectionSystem;
131  }
132  }
133  }
134 
135  namespace Assemblers
136  {
137  template <int dim> class Interface;
138  template <int dim> class Manager;
139  }
140 
142  {
146  double residual;
147  double residual_old;
150  std::pair<double,double> stokes_residuals;
151  };
152 
156  template <int dim>
158  {
160  :
161  scalar_moment_of_inertia(numbers::signaling_nan<double>()),
162  scalar_angular_momentum(numbers::signaling_nan<double>()),
163  scalar_rotation(numbers::signaling_nan<double>()),
164  tensor_moment_of_inertia(numbers::signaling_nan<SymmetricTensor<2,dim>>()),
165  tensor_angular_momentum(numbers::signaling_nan<Tensor<1,dim>>()),
166  tensor_rotation(numbers::signaling_nan<Tensor<1,dim>>())
167  {};
168 
176 
183  };
184 
188  DeclExceptionMsg(ExcNonlinearSolverNoConvergence,
189  "Nonlinear solver failed to converge in the prescribed number of steps. "
190  "Consider changing `Max nonlinear iterations` or `Nonlinear solver failure "
191  "strategy`.");
192 
200  template <int dim>
202  {
203  public:
217  Simulator (const MPI_Comm mpi_communicator,
218  ParameterHandler &prm);
219 
224  ~Simulator ();
225 
240  static
241  void declare_parameters (ParameterHandler &prm, const unsigned int mpi_rank);
242 
251  void run ();
252 
264  void
265  write_plugin_graph (std::ostream &output_stream) const;
266 
271 
276 
278 
279  private:
280 
300 
318  {
319  IntermediaryConstructorAction (const std::function<void ()> &action);
320  };
321 
336  void setup_dofs ();
337 
346  void setup_introspection ();
347 
359  void set_initial_temperature_and_compositional_fields ();
360 
376  void compute_initial_pressure_field ();
377 
383  void compute_initial_velocity_boundary_constraints (AffineConstraints<double> &constraints);
384 
390  void compute_current_velocity_boundary_constraints (AffineConstraints<double> &constraints);
391 
404  void compute_current_constraints ();
405 
419  double compute_pressure_scaling_factor () const;
420 
432  void start_timestep ();
433 
441  void solve_timestep ();
442 
454  void solve_no_advection_no_stokes ();
455 
466  void solve_no_advection_single_stokes ();
467 
479  void solve_no_advection_single_stokes_first_timestep_only ();
480 
493  void solve_no_advection_iterated_stokes ();
494 
507  void solve_no_advection_iterated_defect_correction_stokes ();
508 
520  void solve_single_advection_no_stokes ();
521 
533  void solve_single_advection_single_stokes ();
534 
547  void solve_single_advection_iterated_stokes ();
548 
561  void solve_single_advection_iterated_defect_correction_stokes ();
562 
582  void solve_single_advection_iterated_newton_stokes (bool use_newton_iterations);
583 
595  void solve_iterated_advection_no_stokes ();
596 
609  void solve_iterated_advection_and_stokes ();
610 
624  void solve_iterated_advection_and_defect_correction_stokes ();
625 
644  void solve_iterated_advection_and_newton_stokes (bool use_newton_iterations);
645 
654  void build_stokes_preconditioner ();
655 
663  void build_advection_preconditioner (const AdvectionField &advection_field,
665  const double diagonal_strengthening);
666 
673  void assemble_stokes_system ();
674 
689  double assemble_and_solve_temperature (const double &initial_residual = 0,
690  double *residual = nullptr);
691 
707  std::vector<double> assemble_and_solve_composition (const std::vector<double> &initial_residual = {},
708  const unsigned int nonlinear_iteration = 0,
709  std::vector<double> *residual = nullptr);
710 
725  double assemble_and_solve_stokes (const double &initial_nonlinear_residual = 0,
726  double *nonlinear_residual = nullptr);
727 
740  void do_one_defect_correction_Stokes_step(DefectCorrectionResiduals &dcr,
741  const bool use_picard);
742 
750  void assemble_advection_system (const AdvectionField &advection_field);
751 
762  double solve_advection (const AdvectionField &advection_field);
763 
768  void interpolate_particle_properties (const std::vector<AdvectionField> &advection_fields);
769 
846  std::pair<double,double>
847  solve_stokes (LinearAlgebra::BlockVector &solution_vector);
848 
861  void postprocess ();
862 
878  void refine_mesh (const unsigned int max_grid_level);
879 
895  unsigned int determine_last_good_snapshot() const;
896 
904  unsigned int determine_resume_snapshot() const;
905 
917  void create_snapshot(const bool is_additional_checkpoint = false);
918 
932  void resume_from_snapshot();
933 
940  template <class Archive>
941  void serialize (Archive &ar, const unsigned int version);
959  setup_system_matrix_coupling () const;
960 
968  void setup_system_matrix (const std::vector<IndexSet> &system_partitioning);
969 
981  void setup_system_preconditioner (const std::vector<IndexSet> &system_partitioning);
982 
1004  std::unique_ptr<Assemblers::Manager<dim>> assemblers;
1005 
1014  void set_assemblers ();
1015 
1026  void set_advection_assemblers ();
1027 
1037  void set_stokes_assemblers ();
1038 
1045  void assemble_stokes_preconditioner ();
1046 
1054  void
1055  local_assemble_stokes_preconditioner (const typename DoFHandler<dim>::active_cell_iterator &cell,
1058 
1066  void
1067  copy_local_to_global_stokes_preconditioner (const internal::Assembly::CopyData::StokesPreconditioner<dim> &data);
1068 
1076  void
1077  local_assemble_stokes_system (const typename DoFHandler<dim>::active_cell_iterator &cell,
1080 
1088  void
1089  copy_local_to_global_stokes_system (const internal::Assembly::CopyData::StokesSystem<dim> &data);
1090 
1098  void
1099  local_assemble_advection_face_terms(const AdvectionField &advection_field,
1100  const typename DoFHandler<dim>::active_cell_iterator &cell,
1110  void
1111  local_assemble_advection_system (const AdvectionField &advection_field,
1112  const Vector<double> &viscosity_per_cell,
1113  const typename DoFHandler<dim>::active_cell_iterator &cell,
1116 
1124  void
1125  copy_local_to_global_advection_system (const AdvectionField &advection_field,
1127 
1152  void make_pressure_rhs_compatible(LinearAlgebra::BlockVector &vector);
1153 
1163  template <typename T>
1164  void get_artificial_viscosity (Vector<T> &viscosity_per_cell,
1165  const AdvectionField &advection_field,
1166  const bool skip_interior_cells = false) const;
1167 
1200  double normalize_pressure(LinearAlgebra::BlockVector &vector) const;
1201 
1241  void denormalize_pressure(const double pressure_adjustment,
1242  LinearAlgebra::BlockVector &vector) const;
1243 
1252  void apply_limiter_to_dg_solutions (const AdvectionField &advection_field);
1253 
1270  void compute_unique_advection_support_points (const std::vector<AdvectionField> &advection_fields,
1271  std::vector<Point<dim>> &unique_support_points,
1272  std::vector<std::vector<unsigned int>> &support_point_index_by_field) const;
1273 
1296  void compute_reactions ();
1297 
1307  void update_solution_vectors_with_reaction_results (const unsigned int block_index,
1308  const LinearAlgebra::BlockVector &distributed_vector,
1309  const LinearAlgebra::BlockVector &distributed_reaction_vector);
1310 
1321  void initialize_current_linearization_point ();
1322 
1342  void interpolate_material_output_into_advection_field (const std::vector<AdvectionField> &adv_field);
1343 
1344 
1352  void interpolate_onto_velocity_system(const TensorFunction<1,dim> &func,
1353  LinearAlgebra::Vector &vec) const;
1354 
1372  double perform_line_search(const DefectCorrectionResiduals &dcr,
1373  const bool use_picard,
1374  const LinearAlgebra::BlockVector &search_direction);
1375 
1390  void setup_nullspace_constraints(AffineConstraints<double> &constraints);
1391 
1392 
1405  void remove_nullspace(LinearAlgebra::BlockVector &solution,
1406  LinearAlgebra::BlockVector &distributed_stokes_solution) const;
1407 
1423  compute_net_angular_momentum(const bool use_constant_density,
1424  const LinearAlgebra::BlockVector &solution,
1425  const bool limit_to_top_faces = false) const;
1426 
1443  void remove_net_angular_momentum(const bool use_constant_density,
1444  LinearAlgebra::BlockVector &relevant_dst,
1445  LinearAlgebra::BlockVector &tmp_distributed_stokes,
1446  const bool limit_to_top_faces = false) const;
1447 
1455  void replace_outflow_boundary_ids(const unsigned int boundary_id_offset,
1456  const bool is_composition,
1457  const unsigned int composition_index);
1458 
1466  void restore_outflow_boundary_ids(const unsigned int boundary_id_offset);
1467 
1481  void remove_net_linear_momentum(const bool use_constant_density,
1482  LinearAlgebra::BlockVector &relevant_dst,
1483  LinearAlgebra::BlockVector &tmp_distributed_stokes) const;
1484 
1492  double get_maximal_velocity (const LinearAlgebra::BlockVector &solution) const;
1493 
1506  double get_entropy_variation (const double average_field,
1507  const AdvectionField &advection_field) const;
1508 
1517  std::pair<double,double>
1518  get_extrapolated_advection_field_range (const AdvectionField &advection_field) const;
1519 
1528  void exchange_refinement_flags();
1529 
1530 
1539  void maybe_write_timing_output () const;
1540 
1548  bool maybe_write_checkpoint (const std::time_t last_checkpoint_time,
1549  const bool force_writing_checkpoint);
1550 
1567  bool maybe_do_initial_refinement (const unsigned int max_refinement_level);
1568 
1577  void maybe_refine_mesh (const double new_time_step,
1578  unsigned int &max_refinement_level);
1579 
1587  void advance_time (const double step_size);
1588 
1596  double
1597  compute_viscosity(internal::Assembly::Scratch::AdvectionSystem<dim> &scratch,
1598  const double global_u_infty,
1599  const double global_field_variation,
1600  const double average_field,
1601  const double global_entropy_variation,
1602  const double cell_diameter,
1603  const AdvectionField &advection_field) const;
1604 
1613  void
1614  compute_advection_system_residual(internal::Assembly::Scratch::AdvectionSystem<dim> &scratch,
1615  const double average_field,
1616  const AdvectionField &advection_field,
1617  double &max_residual,
1618  double &max_velocity,
1619  double &max_density,
1620  double &max_specific_heat,
1621  double &conductivity) const;
1622 
1637  bool
1638  stokes_matrix_depends_on_solution () const;
1639 
1649  bool
1650  stokes_A_block_is_symmetric () const;
1651 
1664  void
1665  check_consistency_of_formulation ();
1666 
1672  void
1673  select_default_solver_and_averaging ();
1674 
1685  void
1686  check_consistency_of_boundary_conditions () const;
1687 
1691  double
1692  compute_initial_newton_residual ();
1693 
1702  double
1703  compute_Eisenstat_Walker_linear_tolerance(const bool EisenstatWalkerChoiceOne,
1704  const double maximum_linear_stokes_solver_tolerance,
1705  const double linear_stokes_solver_tolerance,
1706  const double stokes_residual,
1707  const double newton_residual,
1708  const double newton_residual_old);
1709 
1719  void output_statistics();
1720 
1732  double
1733  compute_initial_stokes_residual();
1734 
1745 
1751  std::unique_ptr<MeltHandler<dim>> melt_handler;
1752 
1758  std::unique_ptr<NewtonHandler<dim>> newton_handler;
1759 
1761 
1763 
1771  std::unique_ptr<VolumeOfFluidHandler<dim>> volume_of_fluid_handler;
1772 
1774 
1775 
1777 
1782  std::ofstream log_file_stream;
1783 
1784  using TeeDevice = boost::iostreams::tee_device<std::ostream, std::ofstream>;
1785  using TeeStream = boost::iostreams::stream<TeeDevice>;
1786 
1789 
1795 
1806 
1823 
1825 
1831 
1837 
1844  unsigned int last_checkpoint_id;
1845 
1851 
1858 
1867 
1876  const std::shared_ptr<InitialTopographyModel::Interface<dim>> initial_topography_model;
1877  const std::unique_ptr<GeometryModel::Interface<dim>> geometry_model;
1879  const std::unique_ptr<MaterialModel::Interface<dim>> material_model;
1880  const std::unique_ptr<GravityModel::Interface<dim>> gravity_model;
1881 
1886  const std::unique_ptr<PrescribedStokesSolution::Interface<dim>> prescribed_stokes_solution;
1887 
1898  std::shared_ptr<InitialTemperature::Manager<dim>> initial_temperature_manager;
1899  std::shared_ptr<InitialComposition::Manager<dim>> initial_composition_manager;
1900 
1901  const std::unique_ptr<AdiabaticConditions::Interface<dim>> adiabatic_conditions;
1902 #ifdef ASPECT_WITH_WORLD_BUILDER
1903 
1914  std::shared_ptr<WorldBuilder::World> world_builder;
1915 #endif
1918  const std::unique_ptr<BoundaryHeatFlux::Interface<dim>> boundary_heat_flux;
1919 
1927  double time;
1928  double time_step;
1930  unsigned int timestep_number;
1931  unsigned int pre_refinement_step;
1932  unsigned int nonlinear_iteration;
1964 
1968 
1977  std::unique_ptr<Mapping<dim>> mapping;
1978 
1980 
1982 
1984 
1988  std::vector<Particle::Manager<dim>> particle_managers;
1989 
2003 
2009 
2016 
2024 
2044 
2050 
2064 
2069 
2071 
2072  // only used if is_compressible()
2074 
2075  // only used if operator split is enabled
2077 
2078 
2079 
2080  std::unique_ptr<LinearAlgebra::PreconditionAMG> Amg_preconditioner;
2081  std::unique_ptr<LinearAlgebra::PreconditionBase> Mp_preconditioner;
2082 
2088 
2104 
2110 
2116 
2121 
2131  std::unique_ptr<MeshDeformation::MeshDeformationHandler<dim>> mesh_deformation;
2132 
2136  std::unique_ptr<StokesMatrixFreeHandler<dim>> stokes_matrix_free;
2137 
2141  std::unique_ptr<StokesSolver::Direct<dim>> stokes_direct;
2142 
2143 
2144  friend class boost::serialization::access;
2145  friend class SimulatorAccess<dim>;
2147  friend class VolumeOfFluidHandler<dim>;
2148  friend class StokesMatrixFreeHandler<dim>;
2149  template <int dimension, int velocity_degree> friend class StokesMatrixFreeHandlerLocalSmoothingImplementation;
2150  template <int dimension, int velocity_degree> friend class StokesMatrixFreeHandlerGlobalCoarseningImplementation;
2151  friend struct Parameters<dim>;
2152  };
2153 }
2154 
2155 
2156 #endif
The NullspaceRemoval struct.
Definition: parameters.h:179
unsigned int nonlinear_iteration
Definition: simulator.h:1932
BoundaryVelocity::Manager< dim > boundary_velocity_manager
Definition: simulator.h:1916
const std::unique_ptr< AdiabaticConditions::Interface< dim > > adiabatic_conditions
Definition: simulator.h:1901
unsigned int linear_solver_failures
Definition: simulator.h:1934
std::shared_ptr< InitialComposition::Manager< dim > > initial_composition_manager
Definition: simulator.h:1899
void write_plugin_graph(std::ostream &output_stream)
parallel::distributed::Triangulation< dim > triangulation
Definition: simulator.h:1961
TimerOutput computing_timer
Definition: simulator.h:1824
BoundaryTemperature::Manager< dim > boundary_temperature_manager
Definition: simulator.h:1882
boost::iostreams::tee_device< std::ostream, std::ofstream > TeeDevice
Definition: simulator.h:1784
std::unique_ptr< StokesSolver::Direct< dim > > stokes_direct
Definition: simulator.h:2141
double pressure_scaling
Definition: simulator.h:2015
Tensor< 1, dim > tensor_rotation
Definition: simulator.h:182
double old_time_step
Definition: simulator.h:1929
Tensor< 1, dim > tensor_angular_momentum
Definition: simulator.h:181
AffineConstraints< double > constraints
Definition: simulator.h:2001
bool assemble_newton_stokes_system
Definition: simulator.h:2115
LinearAlgebra::BlockVector old_solution
Definition: simulator.h:2066
const IntermediaryConstructorAction post_geometry_model_creation_action
Definition: simulator.h:1878
std::unique_ptr< VolumeOfFluidHandler< dim > > volume_of_fluid_handler
Definition: simulator.h:1771
bool rebuild_stokes_matrix
Definition: simulator.h:2103
Parameters< dim > parameters
Definition: simulator.h:1744
SymmetricTensor< 2, dim > tensor_moment_of_inertia
Definition: simulator.h:180
AffineConstraints< double > current_constraints
Definition: simulator.h:2002
std::unique_ptr< MeshDeformation::MeshDeformationHandler< dim > > mesh_deformation
Definition: simulator.h:2131
LinearAlgebra::BlockVector system_rhs
Definition: simulator.h:2068
std::pair< double, double > stokes_residuals
Definition: simulator.h:150
std::vector< Particle::Manager< dim > > particle_managers
Definition: simulator.h:1988
std::thread output_statistics_thread
Definition: simulator.h:1866
LateralAveraging< dim > lateral_averaging
Definition: simulator.h:1952
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:1788
MeshRefinement::Manager< dim > mesh_refinement_manager
Definition: simulator.h:1965
std::size_t statistics_last_write_size
Definition: simulator.h:1821
const std::unique_ptr< MaterialModel::Interface< dim > > material_model
Definition: simulator.h:1879
#define DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
unsigned int nonlinear_solver_failures
Definition: simulator.h:1933
double last_pressure_normalization_adjustment
Definition: simulator.h:2008
double total_walltime_until_last_snapshot
Definition: simulator.h:1836
void declare_parameters(ParameterHandler &prm)
const std::unique_ptr< GeometryModel::Interface< dim > > geometry_model
Definition: simulator.h:1877
double initial_residual
LinearAlgebra::BlockVector operator_split_reaction_vector
Definition: simulator.h:2076
unsigned int last_regular_checkpoint_id
Definition: simulator.h:1850
DoFHandler< dim > dof_handler
Definition: simulator.h:1981
std::unique_ptr< StokesMatrixFreeHandler< dim > > stokes_matrix_free
Definition: simulator.h:2136
unsigned int last_checkpoint_id
Definition: simulator.h:1844
std::unique_ptr< Assemblers::Manager< dim > > assemblers
Definition: simulator.h:1004
bool rebuild_sparsity_and_matrices
Definition: simulator.h:2087
const IntermediaryConstructorAction post_signal_creation
Definition: simulator.h:1762
double global_Omega_diameter
Definition: simulator.h:1962
unsigned int timestep_number
Definition: simulator.h:1930
bool assemble_newton_stokes_matrix
Definition: simulator.h:2109
Manager< dim > World
Definition: world.h:39
ConditionalOStream pcout
Definition: simulator.h:1794
unsigned int pre_refinement_step
Definition: simulator.h:1931
TimeStepping::Manager< dim > time_stepping_manager
Definition: simulator.h:1943
std::size_t statistics_last_hash
Definition: simulator.h:1822
TableHandler statistics
Definition: simulator.h:1805
Introspection< dim > introspection
Definition: simulator.h:1773
MPI_Comm mpi_communicator
Definition: simulator.h:1776
typename Parameters< dim >::NullspaceRemoval NullspaceRemoval
Definition: simulator.h:275
LinearAlgebra::BlockSparseMatrix system_preconditioner_matrix
Definition: simulator.h:2063
bool do_pressure_rhs_compatibility_modification
Definition: simulator.h:2023
LinearAlgebra::BlockVector current_linearization_point
Definition: simulator.h:2070
BoundaryConvectiveHeating::Manager< dim > boundary_convective_heating_manager
Definition: simulator.h:1883
LinearAlgebra::BlockVector old_old_solution
Definition: simulator.h:2067
BoundaryTraction::Manager< dim > boundary_traction_manager
Definition: simulator.h:1917
LinearAlgebra::BlockVector pressure_shape_function_integrals
Definition: simulator.h:2073
unsigned int last_additional_checkpoint_id
Definition: simulator.h:1857
std::ofstream log_file_stream
Definition: simulator.h:1782
std::unique_ptr< LinearAlgebra::PreconditionAMG > Amg_preconditioner
Definition: simulator.h:2080
std::shared_ptr< InitialTemperature::Manager< dim > > initial_temperature_manager
Definition: simulator.h:1898
TeeDevice iostream_tee_device
Definition: simulator.h:1787
boost::iostreams::stream< TeeDevice > TeeStream
Definition: simulator.h:1785
LinearAlgebra::BlockSparseMatrix system_matrix
Definition: simulator.h:2043
#define DEAL_II_ENABLE_EXTRA_DIAGNOSTICS
std::unique_ptr< MeltHandler< dim > > melt_handler
Definition: simulator.h:1751
LinearAlgebra::BlockVector inverse_lumped_mass_matrix
Definition: simulator.h:2049
bool rebuild_stokes_preconditioner
Definition: simulator.h:2120
PrescribedSolution::Manager< dim > prescribed_solution_manager
Definition: simulator.h:1885
const std::shared_ptr< InitialTopographyModel::Interface< dim > > initial_topography_model
Definition: simulator.h:1876
std::unique_ptr< Mapping< dim > > mapping
Definition: simulator.h:1977
const std::unique_ptr< PrescribedStokesSolution::Interface< dim > > prescribed_stokes_solution
Definition: simulator.h:1886
HeatingModel::Manager< dim > heating_model_manager
Definition: simulator.h:1966
SimulatorSignals< dim > signals
Definition: simulator.h:1760
const std::unique_ptr< BoundaryHeatFlux::Interface< dim > > boundary_heat_flux
Definition: simulator.h:1918
const FESystem< dim > finite_element
Definition: simulator.h:1979
bool simulator_is_past_initialization
Definition: simulator.h:299
LinearAlgebra::BlockVector solution
Definition: simulator.h:2065
std::unique_ptr< NewtonHandler< dim > > newton_handler
Definition: simulator.h:1758
typename Parameters< dim >::NonlinearSolver NonlinearSolver
Definition: simulator.h:270
PrescribedDilation::Manager< dim > prescribed_dilation_manager
Definition: simulator.h:1967
Postprocess::Manager< dim > postprocess_manager
Definition: simulator.h:1983
const std::unique_ptr< GravityModel::Interface< dim > > gravity_model
Definition: simulator.h:1880
double newton_residual_for_derivative_scaling_factor
Definition: simulator.h:149
double global_volume
Definition: simulator.h:1963
BoundaryComposition::Manager< dim > boundary_composition_manager
Definition: simulator.h:1884
std::unique_ptr< LinearAlgebra::PreconditionBase > Mp_preconditioner
Definition: simulator.h:2081