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 Interface;
101 
102  template <int dim>
103  class Direct;
104 
105  template <int dim>
106  class MatrixBased;
107  }
108 
109  template <int dim, int velocity_degree>
111 
112  namespace MeshDeformation
113  {
114  template <int dim>
116  }
117 
118  template <int dim>
120 
121  namespace internal
122  {
123  namespace Assembly
124  {
125  namespace Scratch
126  {
127  template <int dim> struct StokesPreconditioner;
128  template <int dim> struct StokesSystem;
129  template <int dim> struct AdvectionSystem;
130  }
131 
132  namespace CopyData
133  {
134  template <int dim> struct StokesPreconditioner;
135  template <int dim> struct StokesSystem;
136  template <int dim> struct AdvectionSystem;
137  }
138  }
139  }
140 
141  namespace Assemblers
142  {
143  template <int dim> class Interface;
144  template <int dim> class Manager;
145  }
146 
148  {
152  double residual;
153  double residual_old;
156  std::pair<double,double> stokes_residuals;
157  };
158 
162  template <int dim>
164  {
166  :
167  scalar_moment_of_inertia(numbers::signaling_nan<double>()),
168  scalar_angular_momentum(numbers::signaling_nan<double>()),
169  scalar_rotation(numbers::signaling_nan<double>()),
170  tensor_moment_of_inertia(numbers::signaling_nan<SymmetricTensor<2,dim>>()),
171  tensor_angular_momentum(numbers::signaling_nan<Tensor<1,dim>>()),
172  tensor_rotation(numbers::signaling_nan<Tensor<1,dim>>())
173  {};
174 
182 
189  };
190 
194  DeclExceptionMsg(ExcNonlinearSolverNoConvergence,
195  "Nonlinear solver failed to converge in the prescribed number of steps. "
196  "Consider changing `Max nonlinear iterations` or `Nonlinear solver failure "
197  "strategy`.");
198 
206  template <int dim>
208  {
209  public:
223  Simulator (const MPI_Comm mpi_communicator,
224  ParameterHandler &prm);
225 
230  ~Simulator ();
231 
246  static
247  void declare_parameters (ParameterHandler &prm, const unsigned int mpi_rank);
248 
257  void run ();
258 
270  void
271  write_plugin_graph (std::ostream &output_stream) const;
272 
277 
282 
284 
285  private:
286 
306 
324  {
325  IntermediaryConstructorAction (const std::function<void ()> &action);
326  };
327 
342  void setup_dofs ();
343 
352  void setup_introspection ();
353 
365  void set_initial_temperature_and_compositional_fields ();
366 
382  void compute_initial_pressure_field ();
383 
389  void compute_initial_velocity_boundary_constraints (AffineConstraints<double> &constraints);
390 
396  void compute_current_velocity_boundary_constraints (AffineConstraints<double> &constraints);
397 
410  void compute_current_constraints ();
411 
425  double compute_pressure_scaling_factor () const;
426 
438  void start_timestep ();
439 
447  void solve_timestep ();
448 
460  void solve_no_advection_no_stokes ();
461 
472  void solve_no_advection_single_stokes ();
473 
485  void solve_no_advection_single_stokes_first_timestep_only ();
486 
499  void solve_no_advection_iterated_stokes ();
500 
513  void solve_no_advection_iterated_defect_correction_stokes ();
514 
526  void solve_single_advection_no_stokes ();
527 
539  void solve_single_advection_single_stokes ();
540 
553  void solve_single_advection_iterated_stokes ();
554 
567  void solve_single_advection_iterated_defect_correction_stokes ();
568 
588  void solve_single_advection_iterated_newton_stokes (bool use_newton_iterations);
589 
601  void solve_iterated_advection_no_stokes ();
602 
615  void solve_iterated_advection_and_stokes ();
616 
630  void solve_iterated_advection_and_defect_correction_stokes ();
631 
650  void solve_iterated_advection_and_newton_stokes (bool use_newton_iterations);
651 
660  void build_stokes_preconditioner ();
661 
669  void build_advection_preconditioner (const AdvectionField &advection_field,
671  const double diagonal_strengthening);
672 
679  void assemble_stokes_system ();
680 
695  double assemble_and_solve_temperature (const double &initial_residual = 0,
696  double *residual = nullptr);
697 
713  std::vector<double> assemble_and_solve_composition (const std::vector<double> &initial_residual = {},
714  const unsigned int nonlinear_iteration = 0,
715  std::vector<double> *residual = nullptr);
716 
731  double assemble_and_solve_stokes (const double &initial_nonlinear_residual = 0,
732  double *nonlinear_residual = nullptr);
733 
746  void do_one_defect_correction_Stokes_step(DefectCorrectionResiduals &dcr,
747  const bool use_picard);
748 
756  void assemble_advection_system (const AdvectionField &advection_field);
757 
768  double solve_advection (const AdvectionField &advection_field);
769 
774  void interpolate_particle_properties (const std::vector<AdvectionField> &advection_fields);
775 
852  std::pair<double,double>
853  solve_stokes (LinearAlgebra::BlockVector &solution_vector);
854 
867  void postprocess ();
868 
884  void refine_mesh (const unsigned int max_grid_level);
885 
901  unsigned int determine_last_good_snapshot() const;
902 
910  unsigned int determine_resume_snapshot() const;
911 
923  void create_snapshot(const bool is_additional_checkpoint = false);
924 
938  void resume_from_snapshot();
939 
946  template <class Archive>
947  void serialize (Archive &ar, const unsigned int version);
965  setup_system_matrix_coupling () const;
966 
974  void setup_system_matrix (const std::vector<IndexSet> &system_partitioning);
975 
987  void setup_system_preconditioner (const std::vector<IndexSet> &system_partitioning);
988 
1010  std::unique_ptr<Assemblers::Manager<dim>> assemblers;
1011 
1020  void set_assemblers ();
1021 
1032  void set_advection_assemblers ();
1033 
1043  void set_stokes_assemblers ();
1044 
1051  void assemble_stokes_preconditioner ();
1052 
1060  void
1061  local_assemble_stokes_preconditioner (const typename DoFHandler<dim>::active_cell_iterator &cell,
1064 
1072  void
1073  copy_local_to_global_stokes_preconditioner (const internal::Assembly::CopyData::StokesPreconditioner<dim> &data);
1074 
1082  void
1083  local_assemble_stokes_system (const typename DoFHandler<dim>::active_cell_iterator &cell,
1086 
1094  void
1095  copy_local_to_global_stokes_system (const internal::Assembly::CopyData::StokesSystem<dim> &data);
1096 
1104  void
1105  local_assemble_advection_face_terms(const AdvectionField &advection_field,
1106  const typename DoFHandler<dim>::active_cell_iterator &cell,
1116  void
1117  local_assemble_advection_system (const AdvectionField &advection_field,
1118  const Vector<double> &viscosity_per_cell,
1119  const typename DoFHandler<dim>::active_cell_iterator &cell,
1122 
1130  void
1131  copy_local_to_global_advection_system (const AdvectionField &advection_field,
1133 
1158  void make_pressure_rhs_compatible(LinearAlgebra::BlockVector &vector);
1159 
1169  template <typename T>
1170  void get_artificial_viscosity (Vector<T> &viscosity_per_cell,
1171  const AdvectionField &advection_field,
1172  const bool skip_interior_cells = false) const;
1173 
1206  double normalize_pressure(LinearAlgebra::BlockVector &vector) const;
1207 
1247  void denormalize_pressure(const double pressure_adjustment,
1248  LinearAlgebra::BlockVector &vector) const;
1249 
1258  void apply_limiter_to_dg_solutions (const AdvectionField &advection_field);
1259 
1276  void compute_unique_advection_support_points (const std::vector<AdvectionField> &advection_fields,
1277  std::vector<Point<dim>> &unique_support_points,
1278  std::vector<std::vector<unsigned int>> &support_point_index_by_field) const;
1279 
1302  void compute_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 
1534  void exchange_refinement_flags();
1535 
1536 
1545  void maybe_write_timing_output () const;
1546 
1554  bool maybe_write_checkpoint (const std::time_t last_checkpoint_time,
1555  const bool force_writing_checkpoint);
1556 
1573  bool maybe_do_initial_refinement (const unsigned int max_refinement_level);
1574 
1583  void maybe_refine_mesh (const double new_time_step,
1584  unsigned int &max_refinement_level);
1585 
1593  void advance_time (const double step_size);
1594 
1602  double
1603  compute_viscosity(internal::Assembly::Scratch::AdvectionSystem<dim> &scratch,
1604  const double global_u_infty,
1605  const double global_field_variation,
1606  const double average_field,
1607  const double global_entropy_variation,
1608  const double cell_diameter,
1609  const AdvectionField &advection_field) const;
1610 
1619  void
1620  compute_advection_system_residual(internal::Assembly::Scratch::AdvectionSystem<dim> &scratch,
1621  const double average_field,
1622  const AdvectionField &advection_field,
1623  double &max_residual,
1624  double &max_velocity,
1625  double &max_density,
1626  double &max_specific_heat,
1627  double &conductivity) const;
1628 
1643  bool
1644  stokes_matrix_depends_on_solution () const;
1645 
1655  bool
1656  stokes_A_block_is_symmetric () const;
1657 
1666  bool
1667  is_stokes_matrix_free() const;
1668 
1681  void
1682  check_consistency_of_formulation ();
1683 
1689  void
1690  select_default_solver_and_averaging ();
1691 
1702  void
1703  check_consistency_of_boundary_conditions () const;
1704 
1708  double
1709  compute_initial_newton_residual ();
1710 
1719  double
1720  compute_Eisenstat_Walker_linear_tolerance(const bool EisenstatWalkerChoiceOne,
1721  const double maximum_linear_stokes_solver_tolerance,
1722  const double linear_stokes_solver_tolerance,
1723  const double stokes_residual,
1724  const double newton_residual,
1725  const double newton_residual_old);
1726 
1736  void output_statistics();
1737 
1749  double
1750  compute_initial_stokes_residual();
1751 
1762 
1768  std::unique_ptr<MeltHandler<dim>> melt_handler;
1769 
1775  std::unique_ptr<NewtonHandler<dim>> newton_handler;
1776 
1778 
1780 
1788  std::unique_ptr<VolumeOfFluidHandler<dim>> volume_of_fluid_handler;
1789 
1791 
1792 
1794 
1799  std::ofstream log_file_stream;
1800 
1801  using TeeDevice = boost::iostreams::tee_device<std::ostream, std::ofstream>;
1802  using TeeStream = boost::iostreams::stream<TeeDevice>;
1803 
1806 
1812 
1823 
1840 
1842 
1848 
1854 
1861  unsigned int last_checkpoint_id;
1862 
1868 
1875 
1884 
1893  const std::shared_ptr<InitialTopographyModel::Interface<dim>> initial_topography_model;
1894  const std::unique_ptr<GeometryModel::Interface<dim>> geometry_model;
1896  const std::unique_ptr<MaterialModel::Interface<dim>> material_model;
1897  const std::unique_ptr<GravityModel::Interface<dim>> gravity_model;
1898 
1903  const std::unique_ptr<PrescribedStokesSolution::Interface<dim>> prescribed_stokes_solution;
1904 
1915  std::shared_ptr<InitialTemperature::Manager<dim>> initial_temperature_manager;
1916  std::shared_ptr<InitialComposition::Manager<dim>> initial_composition_manager;
1917 
1918  const std::unique_ptr<AdiabaticConditions::Interface<dim>> adiabatic_conditions;
1919 #ifdef ASPECT_WITH_WORLD_BUILDER
1920 
1931  std::shared_ptr<WorldBuilder::World> world_builder;
1932 #endif
1935  const std::unique_ptr<BoundaryHeatFlux::Interface<dim>> boundary_heat_flux;
1936 
1944  double time;
1945  double time_step;
1947  unsigned int timestep_number;
1948  unsigned int pre_refinement_step;
1949  unsigned int nonlinear_iteration;
1981 
1985 
1994  std::unique_ptr<Mapping<dim>> mapping;
1995 
1997 
1999 
2001 
2005  std::vector<Particle::Manager<dim>> particle_managers;
2006 
2020 
2026 
2033 
2041 
2061 
2067 
2081 
2086 
2088 
2089  // only used if is_compressible()
2091 
2092  // only used if operator split is enabled
2094 
2095 
2096 
2097  std::unique_ptr<LinearAlgebra::PreconditionAMG> Amg_preconditioner;
2098  std::unique_ptr<LinearAlgebra::PreconditionBase> Mp_preconditioner;
2099 
2105 
2121 
2127 
2133 
2138 
2148  std::unique_ptr<MeshDeformation::MeshDeformationHandler<dim>> mesh_deformation;
2149 
2153  std::unique_ptr<StokesSolver::Interface<dim>> stokes_solver;
2154 
2155  friend class boost::serialization::access;
2156  friend class SimulatorAccess<dim>;
2158  friend class VolumeOfFluidHandler<dim>;
2159  friend class StokesMatrixFreeHandler<dim>;
2160  friend class StokesSolver::MatrixBased<dim>;
2161  template <int dimension, int velocity_degree> friend class StokesMatrixFreeHandlerLocalSmoothingImplementation;
2162  template <int dimension, int velocity_degree> friend class StokesMatrixFreeHandlerGlobalCoarseningImplementation;
2163  friend struct Parameters<dim>;
2164  };
2165 }
2166 
2167 
2168 #endif
The NullspaceRemoval struct.
Definition: parameters.h:179
unsigned int nonlinear_iteration
Definition: simulator.h:1949
BoundaryVelocity::Manager< dim > boundary_velocity_manager
Definition: simulator.h:1933
const std::unique_ptr< AdiabaticConditions::Interface< dim > > adiabatic_conditions
Definition: simulator.h:1918
unsigned int linear_solver_failures
Definition: simulator.h:1951
std::shared_ptr< InitialComposition::Manager< dim > > initial_composition_manager
Definition: simulator.h:1916
void write_plugin_graph(std::ostream &output_stream)
parallel::distributed::Triangulation< dim > triangulation
Definition: simulator.h:1978
TimerOutput computing_timer
Definition: simulator.h:1841
BoundaryTemperature::Manager< dim > boundary_temperature_manager
Definition: simulator.h:1899
boost::iostreams::tee_device< std::ostream, std::ofstream > TeeDevice
Definition: simulator.h:1801
double pressure_scaling
Definition: simulator.h:2032
Tensor< 1, dim > tensor_rotation
Definition: simulator.h:188
double old_time_step
Definition: simulator.h:1946
Tensor< 1, dim > tensor_angular_momentum
Definition: simulator.h:187
AffineConstraints< double > constraints
Definition: simulator.h:2018
bool assemble_newton_stokes_system
Definition: simulator.h:2132
LinearAlgebra::BlockVector old_solution
Definition: simulator.h:2083
const IntermediaryConstructorAction post_geometry_model_creation_action
Definition: simulator.h:1895
std::unique_ptr< VolumeOfFluidHandler< dim > > volume_of_fluid_handler
Definition: simulator.h:1788
bool rebuild_stokes_matrix
Definition: simulator.h:2120
Parameters< dim > parameters
Definition: simulator.h:1761
SymmetricTensor< 2, dim > tensor_moment_of_inertia
Definition: simulator.h:186
AffineConstraints< double > current_constraints
Definition: simulator.h:2019
std::unique_ptr< MeshDeformation::MeshDeformationHandler< dim > > mesh_deformation
Definition: simulator.h:2148
LinearAlgebra::BlockVector system_rhs
Definition: simulator.h:2085
std::pair< double, double > stokes_residuals
Definition: simulator.h:156
std::vector< Particle::Manager< dim > > particle_managers
Definition: simulator.h:2005
std::thread output_statistics_thread
Definition: simulator.h:1883
LateralAveraging< dim > lateral_averaging
Definition: simulator.h:1969
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:1805
MeshRefinement::Manager< dim > mesh_refinement_manager
Definition: simulator.h:1982
std::size_t statistics_last_write_size
Definition: simulator.h:1838
const std::unique_ptr< MaterialModel::Interface< dim > > material_model
Definition: simulator.h:1896
#define DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
unsigned int nonlinear_solver_failures
Definition: simulator.h:1950
double last_pressure_normalization_adjustment
Definition: simulator.h:2025
double total_walltime_until_last_snapshot
Definition: simulator.h:1853
void declare_parameters(ParameterHandler &prm)
const std::unique_ptr< GeometryModel::Interface< dim > > geometry_model
Definition: simulator.h:1894
double initial_residual
LinearAlgebra::BlockVector operator_split_reaction_vector
Definition: simulator.h:2093
unsigned int last_regular_checkpoint_id
Definition: simulator.h:1867
DoFHandler< dim > dof_handler
Definition: simulator.h:1998
unsigned int last_checkpoint_id
Definition: simulator.h:1861
std::unique_ptr< Assemblers::Manager< dim > > assemblers
Definition: simulator.h:1010
bool rebuild_sparsity_and_matrices
Definition: simulator.h:2104
const IntermediaryConstructorAction post_signal_creation
Definition: simulator.h:1779
double global_Omega_diameter
Definition: simulator.h:1979
unsigned int timestep_number
Definition: simulator.h:1947
bool assemble_newton_stokes_matrix
Definition: simulator.h:2126
Manager< dim > World
Definition: world.h:39
ConditionalOStream pcout
Definition: simulator.h:1811
unsigned int pre_refinement_step
Definition: simulator.h:1948
TimeStepping::Manager< dim > time_stepping_manager
Definition: simulator.h:1960
std::size_t statistics_last_hash
Definition: simulator.h:1839
TableHandler statistics
Definition: simulator.h:1822
Introspection< dim > introspection
Definition: simulator.h:1790
MPI_Comm mpi_communicator
Definition: simulator.h:1793
typename Parameters< dim >::NullspaceRemoval NullspaceRemoval
Definition: simulator.h:281
LinearAlgebra::BlockSparseMatrix system_preconditioner_matrix
Definition: simulator.h:2080
bool do_pressure_rhs_compatibility_modification
Definition: simulator.h:2040
LinearAlgebra::BlockVector current_linearization_point
Definition: simulator.h:2087
BoundaryConvectiveHeating::Manager< dim > boundary_convective_heating_manager
Definition: simulator.h:1900
LinearAlgebra::BlockVector old_old_solution
Definition: simulator.h:2084
BoundaryTraction::Manager< dim > boundary_traction_manager
Definition: simulator.h:1934
LinearAlgebra::BlockVector pressure_shape_function_integrals
Definition: simulator.h:2090
unsigned int last_additional_checkpoint_id
Definition: simulator.h:1874
std::ofstream log_file_stream
Definition: simulator.h:1799
std::unique_ptr< LinearAlgebra::PreconditionAMG > Amg_preconditioner
Definition: simulator.h:2097
std::unique_ptr< StokesSolver::Interface< dim > > stokes_solver
Definition: simulator.h:2153
std::shared_ptr< InitialTemperature::Manager< dim > > initial_temperature_manager
Definition: simulator.h:1915
TeeDevice iostream_tee_device
Definition: simulator.h:1804
boost::iostreams::stream< TeeDevice > TeeStream
Definition: simulator.h:1802
LinearAlgebra::BlockSparseMatrix system_matrix
Definition: simulator.h:2060
#define DEAL_II_ENABLE_EXTRA_DIAGNOSTICS
std::unique_ptr< MeltHandler< dim > > melt_handler
Definition: simulator.h:1768
LinearAlgebra::BlockVector inverse_lumped_mass_matrix
Definition: simulator.h:2066
bool rebuild_stokes_preconditioner
Definition: simulator.h:2137
PrescribedSolution::Manager< dim > prescribed_solution_manager
Definition: simulator.h:1902
const std::shared_ptr< InitialTopographyModel::Interface< dim > > initial_topography_model
Definition: simulator.h:1893
std::unique_ptr< Mapping< dim > > mapping
Definition: simulator.h:1994
const std::unique_ptr< PrescribedStokesSolution::Interface< dim > > prescribed_stokes_solution
Definition: simulator.h:1903
HeatingModel::Manager< dim > heating_model_manager
Definition: simulator.h:1983
SimulatorSignals< dim > signals
Definition: simulator.h:1777
const std::unique_ptr< BoundaryHeatFlux::Interface< dim > > boundary_heat_flux
Definition: simulator.h:1935
const FESystem< dim > finite_element
Definition: simulator.h:1996
bool simulator_is_past_initialization
Definition: simulator.h:305
LinearAlgebra::BlockVector solution
Definition: simulator.h:2082
std::unique_ptr< NewtonHandler< dim > > newton_handler
Definition: simulator.h:1775
typename Parameters< dim >::NonlinearSolver NonlinearSolver
Definition: simulator.h:276
PrescribedDilation::Manager< dim > prescribed_dilation_manager
Definition: simulator.h:1984
Postprocess::Manager< dim > postprocess_manager
Definition: simulator.h:2000
const std::unique_ptr< GravityModel::Interface< dim > > gravity_model
Definition: simulator.h:1897
double newton_residual_for_derivative_scaling_factor
Definition: simulator.h:155
double global_volume
Definition: simulator.h:1980
BoundaryComposition::Manager< dim > boundary_composition_manager
Definition: simulator.h:1901
std::unique_ptr< LinearAlgebra::PreconditionBase > Mp_preconditioner
Definition: simulator.h:2098