ASPECT
simulator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2011 - 2022 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>
26 #include <deal.II/base/parameter_handler.h>
27 #include <deal.II/base/conditional_ostream.h>
28 #include <deal.II/base/symmetric_tensor.h>
29 
30 DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
31 
32 #include <deal.II/lac/affine_constraints.h>
33 
34 #include <deal.II/distributed/tria.h>
35 
36 #include <deal.II/dofs/dof_handler.h>
37 #include <deal.II/dofs/dof_tools.h>
38 
39 #include <deal.II/fe/fe_system.h>
40 #include <deal.II/fe/mapping.h>
41 #include <deal.II/base/tensor_function.h>
42 
43 DEAL_II_ENABLE_EXTRA_DIAGNOSTICS
44 
45 #include <aspect/global.h>
67 #include <aspect/particle/world.h>
68 
69 #include <boost/iostreams/tee.hpp>
70 #include <boost/iostreams/stream.hpp>
71 
72 #include <memory>
73 #include <thread>
74 
75 
76 namespace aspect
77 {
78  using namespace dealii;
79 
80  template <int dim>
81  class MeltHandler;
82 
83  template <int dim>
84  class NewtonHandler;
85 
86  template <int dim>
88 
89  template <int dim, int velocity_degree>
91 
92  namespace MeshDeformation
93  {
94  template <int dim>
96  }
97 
98  template <int dim>
100 
101  namespace internal
102  {
103  namespace Assembly
104  {
105  namespace Scratch
106  {
107  template <int dim> struct StokesPreconditioner;
108  template <int dim> struct StokesSystem;
109  template <int dim> struct AdvectionSystem;
110  }
111 
112  namespace CopyData
113  {
114  template <int dim> struct StokesPreconditioner;
115  template <int dim> struct StokesSystem;
116  template <int dim> struct AdvectionSystem;
117  }
118  }
119  }
120 
121  namespace Assemblers
122  {
123  template <int dim> class Interface;
124  template <int dim> class Manager;
125  }
126 
128  {
132  double residual;
133  double residual_old;
136  std::pair<double,double> stokes_residuals;
137  };
138 
142  template <int dim>
144  {
146  :
147  scalar_moment_of_inertia(numbers::signaling_nan<double>()),
148  scalar_angular_momentum(numbers::signaling_nan<double>()),
149  scalar_rotation(numbers::signaling_nan<double>()),
150  tensor_moment_of_inertia(numbers::signaling_nan<SymmetricTensor<2,dim>>()),
151  tensor_angular_momentum(numbers::signaling_nan<Tensor<1,dim>>()),
152  tensor_rotation(numbers::signaling_nan<Tensor<1,dim>>())
153  {};
154 
162 
166  SymmetricTensor<2,dim> tensor_moment_of_inertia;
167  Tensor<1,dim> tensor_angular_momentum;
168  Tensor<1,dim> tensor_rotation;
169  };
170 
178  template <int dim>
179  class Simulator
180  {
181  public:
195  Simulator (const MPI_Comm mpi_communicator,
196  ParameterHandler &prm);
197 
202  ~Simulator ();
203 
215  static
216  void declare_parameters (ParameterHandler &prm);
217 
226  void run ();
227 
239  void
240  write_plugin_graph (std::ostream &output_stream) const;
241 
246 
251 
252 
260  {
265  enum FieldType { temperature_field, compositional_field };
266 
272 
278  const unsigned int compositional_variable;
279 
291  AdvectionField (const FieldType field_type,
292  const unsigned int compositional_variable = numbers::invalid_unsigned_int);
293 
301  static
303 
311  static
312  AdvectionField composition (const unsigned int compositional_variable);
313 
317  bool
318  is_temperature () const;
319 
324  bool
325  is_discontinuous (const Introspection<dim> &introspection) const;
326 
332  advection_method (const Introspection<dim> &introspection) const;
333 
338  unsigned int component_index(const Introspection<dim> &introspection) const;
339 
344  unsigned int block_index(const Introspection<dim> &introspection) const;
345 
352  unsigned int field_index() const;
353 
359  unsigned int base_element(const Introspection<dim> &introspection) const;
360 
367  FEValuesExtractors::Scalar scalar_extractor(const Introspection<dim> &introspection) const;
368 
373  unsigned int polynomial_degree(const Introspection<dim> &introspection) const;
374  };
375 
376  private:
377 
397 
415  {
416  IntermediaryConstructorAction (const std::function<void ()> &action);
417  };
418 
433  void setup_dofs ();
434 
443  void setup_introspection ();
444 
456  void set_initial_temperature_and_compositional_fields ();
457 
473  void compute_initial_pressure_field ();
474 
480  void compute_initial_velocity_boundary_constraints (AffineConstraints<double> &constraints);
481 
487  void compute_current_velocity_boundary_constraints (AffineConstraints<double> &constraints);
488 
501  void compute_current_constraints ();
502 
516  double compute_pressure_scaling_factor () const;
517 
529  void start_timestep ();
530 
538  void solve_timestep ();
539 
551  void solve_single_advection_single_stokes ();
552 
565  void solve_no_advection_iterated_stokes ();
566 
577  void solve_no_advection_single_stokes ();
578 
590  void solve_first_timestep_only_single_stokes ();
591 
604  void solve_iterated_advection_and_stokes ();
605 
618  void solve_single_advection_iterated_stokes ();
619 
632  void solve_no_advection_iterated_defect_correction_stokes ();
633 
646  void solve_single_advection_iterated_defect_correction_stokes ();
647 
661  void solve_iterated_advection_and_defect_correction_stokes ();
662 
677  void solve_iterated_advection_and_newton_stokes ();
678 
694  void solve_single_advection_iterated_newton_stokes ();
695 
707  void solve_single_advection_no_stokes ();
708 
720  void solve_no_advection_no_stokes ();
721 
730  void build_stokes_preconditioner ();
731 
739  void build_advection_preconditioner (const AdvectionField &advection_field,
741  const double diagonal_strengthening);
742 
749  void assemble_stokes_system ();
750 
760  double assemble_and_solve_temperature (const bool compute_initial_residual = false,
761  double *initial_residual = nullptr);
762 
775  std::vector<double> assemble_and_solve_composition (const bool compute_initial_residual = false,
776  std::vector<double> *initial_residual = nullptr);
777 
795  double assemble_and_solve_stokes (const bool compute_initial_residual = false,
796  double *initial_nonlinear_residual = nullptr);
797 
809  void assemble_and_solve_defect_correction_Stokes(DefectCorrectionResiduals &dcr,
810  const bool use_picard);
811 
819  void assemble_advection_system (const AdvectionField &advection_field);
820 
831  double solve_advection (const AdvectionField &advection_field);
832 
839  void interpolate_particle_properties (const AdvectionField &advection_field);
840 
845  void interpolate_particle_properties (const std::vector<AdvectionField> &advection_fields);
846 
917  std::pair<double,double>
918  solve_stokes ();
919 
923  std::pair<double,double>
924  solve_stokes_block_gmg ();
925 
938  void postprocess ();
939 
955  void refine_mesh (const unsigned int max_grid_level);
956 
977  void create_snapshot();
978 
992  void resume_from_snapshot();
993 
1000  template <class Archive>
1001  void serialize (Archive &ar, const unsigned int version);
1018  Table<2,DoFTools::Coupling>
1019  setup_system_matrix_coupling () const;
1020 
1028  void setup_system_matrix (const std::vector<IndexSet> &system_partitioning);
1029 
1041  void setup_system_preconditioner (const std::vector<IndexSet> &system_partitioning);
1042 
1064  std::unique_ptr<Assemblers::Manager<dim>> assemblers;
1065 
1074  void set_assemblers ();
1075 
1086  void set_advection_assemblers ();
1087 
1097  void set_stokes_assemblers ();
1098 
1105  void assemble_stokes_preconditioner ();
1106 
1114  void
1115  local_assemble_stokes_preconditioner (const typename DoFHandler<dim>::active_cell_iterator &cell,
1118 
1126  void
1127  copy_local_to_global_stokes_preconditioner (const internal::Assembly::CopyData::StokesPreconditioner<dim> &data);
1128 
1136  void
1137  local_assemble_stokes_system (const typename DoFHandler<dim>::active_cell_iterator &cell,
1140 
1148  void
1149  copy_local_to_global_stokes_system (const internal::Assembly::CopyData::StokesSystem<dim> &data);
1150 
1158  void
1159  local_assemble_advection_face_terms(const AdvectionField &advection_field,
1160  const typename DoFHandler<dim>::active_cell_iterator &cell,
1170  void
1171  local_assemble_advection_system (const AdvectionField &advection_field,
1172  const Vector<double> &viscosity_per_cell,
1173  const typename DoFHandler<dim>::active_cell_iterator &cell,
1176 
1184  void
1185  copy_local_to_global_advection_system (const AdvectionField &advection_field,
1187 
1212  void make_pressure_rhs_compatible(LinearAlgebra::BlockVector &vector);
1213 
1223  template <typename T>
1224  void get_artificial_viscosity (Vector<T> &viscosity_per_cell,
1225  const AdvectionField &advection_field,
1226  const bool skip_interior_cells = false) const;
1227 
1239  void compute_Vs_anomaly(Vector<float> &values) const;
1240 
1255  void compute_Vp_anomaly(Vector<float> &values) const;
1256 
1297  double normalize_pressure(LinearAlgebra::BlockVector &vector) const;
1298 
1343  void denormalize_pressure(const double pressure_adjustment,
1345  const LinearAlgebra::BlockVector &relevant_vector) const;
1346 
1355  void apply_limiter_to_dg_solutions (const AdvectionField &advection_field);
1356 
1357 
1380  void compute_reactions ();
1381 
1391  void update_solution_vectors_with_reaction_results (const unsigned int block_index,
1392  const LinearAlgebra::BlockVector &distributed_vector,
1393  const LinearAlgebra::BlockVector &distributed_reaction_vector);
1394 
1405  void initialize_current_linearization_point ();
1406 
1426  void interpolate_material_output_into_advection_field (const AdvectionField &adv_field);
1427 
1428 
1436  void interpolate_onto_velocity_system(const TensorFunction<1,dim> &func,
1437  LinearAlgebra::Vector &vec);
1438 
1439 
1454  void setup_nullspace_constraints(AffineConstraints<double> &constraints);
1455 
1456 
1468  void remove_nullspace(LinearAlgebra::BlockVector &relevant_dst,
1469  LinearAlgebra::BlockVector &tmp_distributed_stokes);
1470 
1486  compute_net_angular_momentum(const bool use_constant_density,
1487  const LinearAlgebra::BlockVector &solution,
1488  const bool limit_to_top_faces = false) const;
1489 
1506  void remove_net_angular_momentum( const bool use_constant_density,
1507  LinearAlgebra::BlockVector &relevant_dst,
1508  LinearAlgebra::BlockVector &tmp_distributed_stokes,
1509  const bool limit_to_top_faces = false);
1510 
1518  void replace_outflow_boundary_ids(const unsigned int boundary_id_offset);
1519 
1527  void restore_outflow_boundary_ids(const unsigned int boundary_id_offset);
1528 
1542  void remove_net_linear_momentum( const bool use_constant_density,
1543  LinearAlgebra::BlockVector &relevant_dst,
1544  LinearAlgebra::BlockVector &tmp_distributed_stokes);
1545 
1553  double get_maximal_velocity (const LinearAlgebra::BlockVector &solution) const;
1554 
1567  double get_entropy_variation (const double average_field,
1568  const AdvectionField &advection_field) const;
1569 
1578  std::pair<double,double>
1579  get_extrapolated_advection_field_range (const AdvectionField &advection_field) const;
1580 
1589  void exchange_refinement_flags();
1590 
1591 
1600  void maybe_write_timing_output () const;
1601 
1609  bool maybe_write_checkpoint (const time_t last_checkpoint_time,
1610  const bool force_writing_checkpoint);
1611 
1628  bool maybe_do_initial_refinement (const unsigned int max_refinement_level);
1629 
1638  void maybe_refine_mesh (const double new_time_step,
1639  unsigned int &max_refinement_level);
1640 
1648  void advance_time (const double step_size);
1649 
1657  double
1658  compute_viscosity(internal::Assembly::Scratch::AdvectionSystem<dim> &scratch,
1659  const double global_u_infty,
1660  const double global_field_variation,
1661  const double average_field,
1662  const double global_entropy_variation,
1663  const double cell_diameter,
1664  const AdvectionField &advection_field) const;
1665 
1674  void
1675  compute_advection_system_residual(internal::Assembly::Scratch::AdvectionSystem<dim> &scratch,
1676  const double average_field,
1677  const AdvectionField &advection_field,
1678  double &max_residual,
1679  double &max_velocity,
1680  double &max_density,
1681  double &max_specific_heat,
1682  double &conductivity) const;
1683 
1698  bool
1699  stokes_matrix_depends_on_solution () const;
1700 
1713  void
1714  check_consistency_of_formulation ();
1715 
1726  void
1727  check_consistency_of_boundary_conditions () const;
1728 
1732  double
1733  compute_initial_newton_residual (const LinearAlgebra::BlockVector &linearized_stokes_initial_guess);
1734 
1743  double
1744  compute_Eisenstat_Walker_linear_tolerance(const bool EisenstatWalkerChoiceOne,
1745  const double maximum_linear_stokes_solver_tolerance,
1746  const double linear_stokes_solver_tolerance,
1747  const double stokes_residual,
1748  const double newton_residual,
1749  const double newton_residual_old);
1750 
1760  void output_statistics();
1761 
1773  double
1774  compute_initial_stokes_residual();
1775 
1786 
1792  std::unique_ptr<MeltHandler<dim>> melt_handler;
1793 
1799  std::unique_ptr<NewtonHandler<dim>> newton_handler;
1800 
1802 
1804 
1812  std::unique_ptr<VolumeOfFluidHandler<dim>> volume_of_fluid_handler;
1813 
1815 
1816 
1818 
1823  std::ofstream log_file_stream;
1824 
1825  using TeeDevice = boost::iostreams::tee_device<std::ostream, std::ofstream>;
1826  using TeeStream = boost::iostreams::stream<TeeDevice>;
1827 
1830 
1835  ConditionalOStream pcout;
1836 
1846  TableHandler statistics;
1847 
1864 
1865  mutable TimerOutput computing_timer;
1866 
1871  Timer wall_timer;
1872 
1878 
1887 
1896  const std::unique_ptr<InitialTopographyModel::Interface<dim>> initial_topography_model;
1897  const std::unique_ptr<GeometryModel::Interface<dim>> geometry_model;
1899  const std::unique_ptr<MaterialModel::Interface<dim>> material_model;
1900  const std::unique_ptr<GravityModel::Interface<dim>> gravity_model;
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
1934  std::map<types::boundary_id,std::unique_ptr<BoundaryTraction::Interface<dim>>> boundary_traction;
1935  const std::unique_ptr<BoundaryHeatFlux::Interface<dim>> boundary_heat_flux;
1936 
1940  std::unique_ptr<Particle::World<dim>> particle_world;
1941 
1946  ::Particles::ParticleHandler<dim> particle_handler_copy;
1947 
1955  double time;
1956  double time_step;
1958  unsigned int timestep_number;
1959  unsigned int pre_refinement_step;
1960  unsigned int nonlinear_iteration;
1987  parallel::distributed::Triangulation<dim> triangulation;
1990 
1993 
2002  std::unique_ptr<Mapping<dim>> mapping;
2003 
2004  const FESystem<dim> finite_element;
2005 
2006  DoFHandler<dim> dof_handler;
2007 
2009 
2021  AffineConstraints<double> constraints;
2022  AffineConstraints<double> current_constraints;
2023 
2029 
2036 
2044 
2064 
2078 
2083 
2085 
2086  // only used if is_compressible()
2088 
2089  // only used if operator split is enabled
2091 
2092 
2093 
2094  std::unique_ptr<LinearAlgebra::PreconditionAMG> Amg_preconditioner;
2095  std::unique_ptr<LinearAlgebra::PreconditionBase> Mp_preconditioner;
2096 
2102 
2107  private:
2108 
2114  std::unique_ptr<MeshDeformation::MeshDeformationHandler<dim>> mesh_deformation;
2115 
2119  std::unique_ptr<StokesMatrixFreeHandler<dim>> stokes_matrix_free;
2120 
2121  friend class boost::serialization::access;
2122  friend class SimulatorAccess<dim>;
2123  friend class MeshDeformation::MeshDeformationHandler<dim>; // MeshDeformationHandler needs access to the internals of the Simulator
2124  friend class VolumeOfFluidHandler<dim>; // VolumeOfFluidHandler needs access to the internals of the Simulator
2125  friend class StokesMatrixFreeHandler<dim>;
2126  template <int dimension, int velocity_degree>
2128  friend struct Parameters<dim>;
2129  };
2130 }
2131 
2132 
2133 #endif
The NullspaceRemoval struct.
Definition: parameters.h:103
unsigned int nonlinear_iteration
Definition: simulator.h:1960
BoundaryVelocity::Manager< dim > boundary_velocity_manager
Definition: simulator.h:1933
const std::unique_ptr< AdiabaticConditions::Interface< dim > > adiabatic_conditions
Definition: simulator.h:1918
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:1987
TimerOutput computing_timer
Definition: simulator.h:1865
BoundaryTemperature::Manager< dim > boundary_temperature_manager
Definition: simulator.h:1901
boost::iostreams::tee_device< std::ostream, std::ofstream > TeeDevice
Definition: simulator.h:1825
::TrilinosWrappers::MPI::BlockVector BlockVector
Definition: global.h:239
double pressure_scaling
Definition: simulator.h:2035
Tensor< 1, dim > tensor_rotation
Definition: simulator.h:168
double old_time_step
Definition: simulator.h:1957
Tensor< 1, dim > tensor_angular_momentum
Definition: simulator.h:167
AffineConstraints< double > constraints
Definition: simulator.h:2021
bool assemble_newton_stokes_system
Definition: simulator.h:2100
LinearAlgebra::BlockVector old_solution
Definition: simulator.h:2080
const IntermediaryConstructorAction post_geometry_model_creation_action
Definition: simulator.h:1898
std::unique_ptr< VolumeOfFluidHandler< dim > > volume_of_fluid_handler
Definition: simulator.h:1812
bool rebuild_stokes_matrix
Definition: simulator.h:2098
Parameters< dim > parameters
Definition: simulator.h:1785
SymmetricTensor< 2, dim > tensor_moment_of_inertia
Definition: simulator.h:166
AffineConstraints< double > current_constraints
Definition: simulator.h:2022
StructuredDataLookup< dim > DEAL_II_DEPRECATED
std::map< types::boundary_id, std::unique_ptr< BoundaryTraction::Interface< dim > > > boundary_traction
Definition: simulator.h:1934
std::unique_ptr< MeshDeformation::MeshDeformationHandler< dim > > mesh_deformation
Definition: simulator.h:2114
LinearAlgebra::BlockVector system_rhs
Definition: simulator.h:2082
std::pair< double, double > stokes_residuals
Definition: simulator.h:136
std::thread output_statistics_thread
Definition: simulator.h:1886
LateralAveraging< dim > lateral_averaging
Definition: simulator.h:1978
TeeStream iostream_tee_stream
Definition: simulator.h:1829
::TrilinosWrappers::MPI::Vector Vector
Definition: global.h:233
MeshRefinement::Manager< dim > mesh_refinement_manager
Definition: simulator.h:1991
std::size_t statistics_last_write_size
Definition: simulator.h:1862
const std::unique_ptr< MaterialModel::Interface< dim > > material_model
Definition: simulator.h:1899
::Particles::ParticleHandler< dim > particle_handler_copy
Definition: simulator.h:1946
double last_pressure_normalization_adjustment
Definition: simulator.h:2028
::TrilinosWrappers::BlockSparseMatrix BlockSparseMatrix
Definition: global.h:250
double total_walltime_until_last_snapshot
Definition: simulator.h:1877
void declare_parameters(ParameterHandler &prm)
const std::unique_ptr< GeometryModel::Interface< dim > > geometry_model
Definition: simulator.h:1897
LinearAlgebra::BlockVector operator_split_reaction_vector
Definition: simulator.h:2090
DoFHandler< dim > dof_handler
Definition: simulator.h:2006
std::unique_ptr< StokesMatrixFreeHandler< dim > > stokes_matrix_free
Definition: simulator.h:2119
std::unique_ptr< Assemblers::Manager< dim > > assemblers
Definition: simulator.h:1064
bool rebuild_sparsity_and_matrices
Definition: simulator.h:2097
const IntermediaryConstructorAction post_signal_creation
Definition: simulator.h:1803
double global_Omega_diameter
Definition: simulator.h:1988
unsigned int timestep_number
Definition: simulator.h:1958
bool assemble_newton_stokes_matrix
Definition: simulator.h:2099
ConditionalOStream pcout
Definition: simulator.h:1835
unsigned int pre_refinement_step
Definition: simulator.h:1959
TimeStepping::Manager< dim > time_stepping_manager
Definition: simulator.h:1969
std::size_t statistics_last_hash
Definition: simulator.h:1863
TableHandler statistics
Definition: simulator.h:1846
Introspection< dim > introspection
Definition: simulator.h:1814
MPI_Comm mpi_communicator
Definition: simulator.h:1817
typename Parameters< dim >::NullspaceRemoval NullspaceRemoval
Definition: simulator.h:250
LinearAlgebra::BlockSparseMatrix system_preconditioner_matrix
Definition: simulator.h:2077
bool do_pressure_rhs_compatibility_modification
Definition: simulator.h:2043
LinearAlgebra::BlockVector current_linearization_point
Definition: simulator.h:2084
LinearAlgebra::BlockVector old_old_solution
Definition: simulator.h:2081
LinearAlgebra::BlockVector pressure_shape_function_integrals
Definition: simulator.h:2087
std::ofstream log_file_stream
Definition: simulator.h:1823
std::unique_ptr< LinearAlgebra::PreconditionAMG > Amg_preconditioner
Definition: simulator.h:2094
std::shared_ptr< InitialTemperature::Manager< dim > > initial_temperature_manager
Definition: simulator.h:1915
TeeDevice iostream_tee_device
Definition: simulator.h:1828
boost::iostreams::stream< TeeDevice > TeeStream
Definition: simulator.h:1826
LinearAlgebra::BlockSparseMatrix system_matrix
Definition: simulator.h:2063
std::unique_ptr< MeltHandler< dim > > melt_handler
Definition: simulator.h:1792
bool rebuild_stokes_preconditioner
Definition: simulator.h:2101
const unsigned int compositional_variable
Definition: simulator.h:278
std::unique_ptr< Mapping< dim > > mapping
Definition: simulator.h:2002
const std::unique_ptr< PrescribedStokesSolution::Interface< dim > > prescribed_stokes_solution
Definition: simulator.h:1903
HeatingModel::Manager< dim > heating_model_manager
Definition: simulator.h:1992
SimulatorSignals< dim > signals
Definition: simulator.h:1801
const std::unique_ptr< BoundaryHeatFlux::Interface< dim > > boundary_heat_flux
Definition: simulator.h:1935
const FESystem< dim > finite_element
Definition: simulator.h:2004
bool simulator_is_past_initialization
Definition: simulator.h:396
std::unique_ptr< Particle::World< dim > > particle_world
Definition: simulator.h:1940
Definition: compat.h:88
const std::unique_ptr< InitialTopographyModel::Interface< dim > > initial_topography_model
Definition: simulator.h:1896
LinearAlgebra::BlockVector solution
Definition: simulator.h:2079
std::unique_ptr< NewtonHandler< dim > > newton_handler
Definition: simulator.h:1799
typename Parameters< dim >::NonlinearSolver NonlinearSolver
Definition: simulator.h:245
Postprocess::Manager< dim > postprocess_manager
Definition: simulator.h:2008
const std::unique_ptr< GravityModel::Interface< dim > > gravity_model
Definition: simulator.h:1900
double newton_residual_for_derivative_scaling_factor
Definition: simulator.h:135
double global_volume
Definition: simulator.h:1989
BoundaryComposition::Manager< dim > boundary_composition_manager
Definition: simulator.h:1902
std::unique_ptr< LinearAlgebra::PreconditionBase > Mp_preconditioner
Definition: simulator.h:2095
::TrilinosWrappers::PreconditionILU PreconditionILU
Definition: global.h:273