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>
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>
70 #include <aspect/advection_field.h>
71 
72 #include <boost/iostreams/tee.hpp>
73 #include <boost/iostreams/stream.hpp>
74 
75 #include <memory>
76 #include <thread>
77 
78 namespace WorldBuilder
79 {
80  class World;
81 }
82 
83 
84 namespace aspect
85 {
86  template <int dim>
87  class MeltHandler;
88 
89  template <int dim>
90  class NewtonHandler;
91 
92  template <int dim>
94 
95  namespace StokesSolver
96  {
97  template <int dim>
98  class Direct;
99  }
100 
101  template <int dim, int velocity_degree>
103 
104  namespace MeshDeformation
105  {
106  template <int dim>
108  }
109 
110  template <int dim>
112 
113  namespace internal
114  {
115  namespace Assembly
116  {
117  namespace Scratch
118  {
119  template <int dim> struct StokesPreconditioner;
120  template <int dim> struct StokesSystem;
121  template <int dim> struct AdvectionSystem;
122  }
123 
124  namespace CopyData
125  {
126  template <int dim> struct StokesPreconditioner;
127  template <int dim> struct StokesSystem;
128  template <int dim> struct AdvectionSystem;
129  }
130  }
131  }
132 
133  namespace Assemblers
134  {
135  template <int dim> class Interface;
136  template <int dim> class Manager;
137  }
138 
140  {
144  double residual;
145  double residual_old;
148  std::pair<double,double> stokes_residuals;
149  };
150 
154  template <int dim>
156  {
158  :
159  scalar_moment_of_inertia(numbers::signaling_nan<double>()),
160  scalar_angular_momentum(numbers::signaling_nan<double>()),
161  scalar_rotation(numbers::signaling_nan<double>()),
162  tensor_moment_of_inertia(numbers::signaling_nan<SymmetricTensor<2,dim>>()),
163  tensor_angular_momentum(numbers::signaling_nan<Tensor<1,dim>>()),
164  tensor_rotation(numbers::signaling_nan<Tensor<1,dim>>())
165  {};
166 
174 
178  SymmetricTensor<2,dim> tensor_moment_of_inertia;
179  Tensor<1,dim> tensor_angular_momentum;
180  Tensor<1,dim> tensor_rotation;
181  };
182 
186  DeclExceptionMsg(ExcNonlinearSolverNoConvergence,
187  "Nonlinear solver failed to converge in the prescribed number of steps. "
188  "Consider changing `Max nonlinear iterations` or `Nonlinear solver failure "
189  "strategy`.");
190 
198  template <int dim>
199  class Simulator
200  {
201  public:
215  Simulator (const MPI_Comm mpi_communicator,
216  ParameterHandler &prm);
217 
222  ~Simulator ();
223 
238  static
239  void declare_parameters (ParameterHandler &prm, const unsigned int mpi_rank);
240 
249  void run ();
250 
262  void
263  write_plugin_graph (std::ostream &output_stream) const;
264 
269 
274 
276 
277  private:
278 
298 
316  {
317  IntermediaryConstructorAction (const std::function<void ()> &action);
318  };
319 
334  void setup_dofs ();
335 
344  void setup_introspection ();
345 
357  void set_initial_temperature_and_compositional_fields ();
358 
374  void compute_initial_pressure_field ();
375 
381  void compute_initial_velocity_boundary_constraints (AffineConstraints<double> &constraints);
382 
388  void compute_current_velocity_boundary_constraints (AffineConstraints<double> &constraints);
389 
402  void compute_current_constraints ();
403 
417  double compute_pressure_scaling_factor () const;
418 
430  void start_timestep ();
431 
439  void solve_timestep ();
440 
452  void solve_no_advection_no_stokes ();
453 
464  void solve_no_advection_single_stokes ();
465 
477  void solve_no_advection_single_stokes_first_timestep_only ();
478 
491  void solve_no_advection_iterated_stokes ();
492 
505  void solve_no_advection_iterated_defect_correction_stokes ();
506 
518  void solve_single_advection_no_stokes ();
519 
531  void solve_single_advection_single_stokes ();
532 
545  void solve_single_advection_iterated_stokes ();
546 
559  void solve_single_advection_iterated_defect_correction_stokes ();
560 
580  void solve_single_advection_iterated_newton_stokes (bool use_newton_iterations);
581 
593  void solve_iterated_advection_no_stokes ();
594 
607  void solve_iterated_advection_and_stokes ();
608 
622  void solve_iterated_advection_and_defect_correction_stokes ();
623 
642  void solve_iterated_advection_and_newton_stokes (bool use_newton_iterations);
643 
652  void build_stokes_preconditioner ();
653 
661  void build_advection_preconditioner (const AdvectionField &advection_field,
663  const double diagonal_strengthening);
664 
671  void assemble_stokes_system ();
672 
687  double assemble_and_solve_temperature (const double &initial_residual = 0,
688  double *residual = nullptr);
689 
705  std::vector<double> assemble_and_solve_composition (const std::vector<double> &initial_residual = {},
706  std::vector<double> *residual = nullptr);
707 
722  double assemble_and_solve_stokes (const double &initial_nonlinear_residual = 0,
723  double *nonlinear_residual = nullptr);
724 
737  void do_one_defect_correction_Stokes_step(DefectCorrectionResiduals &dcr,
738  const bool use_picard);
739 
747  void assemble_advection_system (const AdvectionField &advection_field);
748 
759  double solve_advection (const AdvectionField &advection_field);
760 
765  void interpolate_particle_properties (const std::vector<AdvectionField> &advection_fields);
766 
843  std::pair<double,double>
844  solve_stokes (LinearAlgebra::BlockVector &solution_vector);
845 
858  void postprocess ();
859 
875  void refine_mesh (const unsigned int max_grid_level);
876 
892  unsigned int determine_last_good_snapshot() const;
893 
905  void create_snapshot();
906 
920  void resume_from_snapshot();
921 
928  template <class Archive>
929  void serialize (Archive &ar, const unsigned int version);
946  Table<2,DoFTools::Coupling>
947  setup_system_matrix_coupling () const;
948 
956  void setup_system_matrix (const std::vector<IndexSet> &system_partitioning);
957 
969  void setup_system_preconditioner (const std::vector<IndexSet> &system_partitioning);
970 
992  std::unique_ptr<Assemblers::Manager<dim>> assemblers;
993 
1002  void set_assemblers ();
1003 
1014  void set_advection_assemblers ();
1015 
1025  void set_stokes_assemblers ();
1026 
1033  void assemble_stokes_preconditioner ();
1034 
1042  void
1043  local_assemble_stokes_preconditioner (const typename DoFHandler<dim>::active_cell_iterator &cell,
1046 
1054  void
1055  copy_local_to_global_stokes_preconditioner (const internal::Assembly::CopyData::StokesPreconditioner<dim> &data);
1056 
1064  void
1065  local_assemble_stokes_system (const typename DoFHandler<dim>::active_cell_iterator &cell,
1068 
1076  void
1077  copy_local_to_global_stokes_system (const internal::Assembly::CopyData::StokesSystem<dim> &data);
1078 
1086  void
1087  local_assemble_advection_face_terms(const AdvectionField &advection_field,
1088  const typename DoFHandler<dim>::active_cell_iterator &cell,
1098  void
1099  local_assemble_advection_system (const AdvectionField &advection_field,
1100  const Vector<double> &viscosity_per_cell,
1101  const typename DoFHandler<dim>::active_cell_iterator &cell,
1104 
1112  void
1113  copy_local_to_global_advection_system (const AdvectionField &advection_field,
1115 
1140  void make_pressure_rhs_compatible(LinearAlgebra::BlockVector &vector);
1141 
1151  template <typename T>
1152  void get_artificial_viscosity (Vector<T> &viscosity_per_cell,
1153  const AdvectionField &advection_field,
1154  const bool skip_interior_cells = false) const;
1155 
1188  double normalize_pressure(LinearAlgebra::BlockVector &vector) const;
1189 
1229  void denormalize_pressure(const double pressure_adjustment,
1230  LinearAlgebra::BlockVector &vector) const;
1231 
1240  void apply_limiter_to_dg_solutions (const AdvectionField &advection_field);
1241 
1258  void compute_unique_advection_support_points (const std::vector<AdvectionField> &advection_fields,
1259  std::vector<Point<dim>> &unique_support_points,
1260  std::vector<std::vector<unsigned int>> &support_point_index_by_field) const;
1261 
1284  void compute_reactions ();
1285 
1295  void update_solution_vectors_with_reaction_results (const unsigned int block_index,
1296  const LinearAlgebra::BlockVector &distributed_vector,
1297  const LinearAlgebra::BlockVector &distributed_reaction_vector);
1298 
1309  void initialize_current_linearization_point ();
1310 
1330  void interpolate_material_output_into_advection_field (const std::vector<AdvectionField> &adv_field);
1331 
1332 
1340  void interpolate_onto_velocity_system(const TensorFunction<1,dim> &func,
1341  LinearAlgebra::Vector &vec) const;
1342 
1360  double perform_line_search(const DefectCorrectionResiduals &dcr,
1361  const bool use_picard,
1362  LinearAlgebra::BlockVector &search_direction);
1363 
1378  void setup_nullspace_constraints(AffineConstraints<double> &constraints);
1379 
1380 
1393  void remove_nullspace(LinearAlgebra::BlockVector &solution,
1394  LinearAlgebra::BlockVector &distributed_stokes_solution) const;
1395 
1411  compute_net_angular_momentum(const bool use_constant_density,
1412  const LinearAlgebra::BlockVector &solution,
1413  const bool limit_to_top_faces = false) const;
1414 
1431  void remove_net_angular_momentum(const bool use_constant_density,
1432  LinearAlgebra::BlockVector &relevant_dst,
1433  LinearAlgebra::BlockVector &tmp_distributed_stokes,
1434  const bool limit_to_top_faces = false) const;
1435 
1443  void replace_outflow_boundary_ids(const unsigned int boundary_id_offset,
1444  const bool is_composition,
1445  const unsigned int composition_index);
1446 
1454  void restore_outflow_boundary_ids(const unsigned int boundary_id_offset);
1455 
1469  void remove_net_linear_momentum(const bool use_constant_density,
1470  LinearAlgebra::BlockVector &relevant_dst,
1471  LinearAlgebra::BlockVector &tmp_distributed_stokes) const;
1472 
1480  double get_maximal_velocity (const LinearAlgebra::BlockVector &solution) const;
1481 
1494  double get_entropy_variation (const double average_field,
1495  const AdvectionField &advection_field) const;
1496 
1505  std::pair<double,double>
1506  get_extrapolated_advection_field_range (const AdvectionField &advection_field) const;
1507 
1516  void exchange_refinement_flags();
1517 
1518 
1527  void maybe_write_timing_output () const;
1528 
1536  bool maybe_write_checkpoint (const std::time_t last_checkpoint_time,
1537  const bool force_writing_checkpoint);
1538 
1555  bool maybe_do_initial_refinement (const unsigned int max_refinement_level);
1556 
1565  void maybe_refine_mesh (const double new_time_step,
1566  unsigned int &max_refinement_level);
1567 
1575  void advance_time (const double step_size);
1576 
1584  double
1585  compute_viscosity(internal::Assembly::Scratch::AdvectionSystem<dim> &scratch,
1586  const double global_u_infty,
1587  const double global_field_variation,
1588  const double average_field,
1589  const double global_entropy_variation,
1590  const double cell_diameter,
1591  const AdvectionField &advection_field) const;
1592 
1601  void
1602  compute_advection_system_residual(internal::Assembly::Scratch::AdvectionSystem<dim> &scratch,
1603  const double average_field,
1604  const AdvectionField &advection_field,
1605  double &max_residual,
1606  double &max_velocity,
1607  double &max_density,
1608  double &max_specific_heat,
1609  double &conductivity) const;
1610 
1625  bool
1626  stokes_matrix_depends_on_solution () const;
1627 
1637  bool
1638  stokes_A_block_is_symmetric () const;
1639 
1652  void
1653  check_consistency_of_formulation ();
1654 
1660  void
1661  select_default_solver_and_averaging ();
1662 
1673  void
1674  check_consistency_of_boundary_conditions () const;
1675 
1679  double
1680  compute_initial_newton_residual ();
1681 
1690  double
1691  compute_Eisenstat_Walker_linear_tolerance(const bool EisenstatWalkerChoiceOne,
1692  const double maximum_linear_stokes_solver_tolerance,
1693  const double linear_stokes_solver_tolerance,
1694  const double stokes_residual,
1695  const double newton_residual,
1696  const double newton_residual_old);
1697 
1707  void output_statistics();
1708 
1720  double
1721  compute_initial_stokes_residual();
1722 
1733 
1739  std::unique_ptr<MeltHandler<dim>> melt_handler;
1740 
1746  std::unique_ptr<NewtonHandler<dim>> newton_handler;
1747 
1749 
1751 
1759  std::unique_ptr<VolumeOfFluidHandler<dim>> volume_of_fluid_handler;
1760 
1762 
1763 
1765 
1770  std::ofstream log_file_stream;
1771 
1772  using TeeDevice = boost::iostreams::tee_device<std::ostream, std::ofstream>;
1773  using TeeStream = boost::iostreams::stream<TeeDevice>;
1774 
1777 
1782  ConditionalOStream pcout;
1783 
1793  TableHandler statistics;
1794 
1811 
1812  mutable TimerOutput computing_timer;
1813 
1818  Timer wall_timer;
1819 
1825 
1831  unsigned int last_checkpoint_id;
1832 
1841 
1850  const std::shared_ptr<InitialTopographyModel::Interface<dim>> initial_topography_model;
1851  const std::unique_ptr<GeometryModel::Interface<dim>> geometry_model;
1853  const std::unique_ptr<MaterialModel::Interface<dim>> material_model;
1854  const std::unique_ptr<GravityModel::Interface<dim>> gravity_model;
1855 
1860  const std::unique_ptr<PrescribedStokesSolution::Interface<dim>> prescribed_stokes_solution;
1861 
1872  std::shared_ptr<InitialTemperature::Manager<dim>> initial_temperature_manager;
1873  std::shared_ptr<InitialComposition::Manager<dim>> initial_composition_manager;
1874 
1875  const std::unique_ptr<AdiabaticConditions::Interface<dim>> adiabatic_conditions;
1876 #ifdef ASPECT_WITH_WORLD_BUILDER
1877 
1888  std::shared_ptr<WorldBuilder::World> world_builder;
1889 #endif
1892  const std::unique_ptr<BoundaryHeatFlux::Interface<dim>> boundary_heat_flux;
1893 
1901  double time;
1902  double time_step;
1904  unsigned int timestep_number;
1905  unsigned int pre_refinement_step;
1906  unsigned int nonlinear_iteration;
1934  parallel::distributed::Triangulation<dim> triangulation;
1937 
1940 
1949  std::unique_ptr<Mapping<dim>> mapping;
1950 
1951  const FESystem<dim> finite_element;
1952 
1953  DoFHandler<dim> dof_handler;
1954 
1956 
1960  std::vector<Particle::Manager<dim>> particle_managers;
1961 
1973  AffineConstraints<double> constraints;
1974  AffineConstraints<double> current_constraints;
1975 
1981 
1988 
1996 
2016 
2022 
2036 
2041 
2043 
2044  // only used if is_compressible()
2046 
2047  // only used if operator split is enabled
2049 
2050 
2051 
2052  std::unique_ptr<LinearAlgebra::PreconditionAMG> Amg_preconditioner;
2053  std::unique_ptr<LinearAlgebra::PreconditionBase> Mp_preconditioner;
2054 
2060 
2065  private:
2066 
2072  std::unique_ptr<MeshDeformation::MeshDeformationHandler<dim>> mesh_deformation;
2073 
2077  std::unique_ptr<StokesMatrixFreeHandler<dim>> stokes_matrix_free;
2078 
2082  std::unique_ptr<StokesSolver::Direct<dim>> stokes_direct;
2083 
2084 
2085  friend class boost::serialization::access;
2086  friend class SimulatorAccess<dim>;
2088  friend class VolumeOfFluidHandler<dim>;
2089  friend class StokesMatrixFreeHandler<dim>;
2090  template <int dimension, int velocity_degree> friend class StokesMatrixFreeHandlerLocalSmoothingImplementation;
2091  template <int dimension, int velocity_degree> friend class StokesMatrixFreeHandlerGlobalCoarseningImplementation;
2092  friend struct Parameters<dim>;
2093  };
2094 }
2095 
2096 
2097 #endif
The NullspaceRemoval struct.
Definition: parameters.h:134
unsigned int nonlinear_iteration
Definition: simulator.h:1906
BoundaryVelocity::Manager< dim > boundary_velocity_manager
Definition: simulator.h:1890
const std::unique_ptr< AdiabaticConditions::Interface< dim > > adiabatic_conditions
Definition: simulator.h:1875
std::shared_ptr< InitialComposition::Manager< dim > > initial_composition_manager
Definition: simulator.h:1873
void write_plugin_graph(std::ostream &output_stream)
parallel::distributed::Triangulation< dim > triangulation
Definition: simulator.h:1934
TimerOutput computing_timer
Definition: simulator.h:1812
BoundaryTemperature::Manager< dim > boundary_temperature_manager
Definition: simulator.h:1856
boost::iostreams::tee_device< std::ostream, std::ofstream > TeeDevice
Definition: simulator.h:1772
std::unique_ptr< StokesSolver::Direct< dim > > stokes_direct
Definition: simulator.h:2082
::TrilinosWrappers::MPI::BlockVector BlockVector
Definition: global.h:269
double pressure_scaling
Definition: simulator.h:1987
Tensor< 1, dim > tensor_rotation
Definition: simulator.h:180
double old_time_step
Definition: simulator.h:1903
Tensor< 1, dim > tensor_angular_momentum
Definition: simulator.h:179
AffineConstraints< double > constraints
Definition: simulator.h:1973
bool assemble_newton_stokes_system
Definition: simulator.h:2058
LinearAlgebra::BlockVector old_solution
Definition: simulator.h:2038
const IntermediaryConstructorAction post_geometry_model_creation_action
Definition: simulator.h:1852
std::unique_ptr< VolumeOfFluidHandler< dim > > volume_of_fluid_handler
Definition: simulator.h:1759
bool rebuild_stokes_matrix
Definition: simulator.h:2056
Parameters< dim > parameters
Definition: simulator.h:1732
SymmetricTensor< 2, dim > tensor_moment_of_inertia
Definition: simulator.h:178
AffineConstraints< double > current_constraints
Definition: simulator.h:1974
std::unique_ptr< MeshDeformation::MeshDeformationHandler< dim > > mesh_deformation
Definition: simulator.h:2072
LinearAlgebra::BlockVector system_rhs
Definition: simulator.h:2040
std::pair< double, double > stokes_residuals
Definition: simulator.h:148
std::vector< Particle::Manager< dim > > particle_managers
Definition: simulator.h:1960
std::thread output_statistics_thread
Definition: simulator.h:1840
LateralAveraging< dim > lateral_averaging
Definition: simulator.h:1925
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:1776
::TrilinosWrappers::MPI::Vector Vector
Definition: global.h:263
MeshRefinement::Manager< dim > mesh_refinement_manager
Definition: simulator.h:1938
std::size_t statistics_last_write_size
Definition: simulator.h:1809
const std::unique_ptr< MaterialModel::Interface< dim > > material_model
Definition: simulator.h:1853
unsigned int nonlinear_solver_failures
Definition: simulator.h:1907
double last_pressure_normalization_adjustment
Definition: simulator.h:1980
::TrilinosWrappers::BlockSparseMatrix BlockSparseMatrix
Definition: global.h:280
double total_walltime_until_last_snapshot
Definition: simulator.h:1824
void declare_parameters(ParameterHandler &prm)
const std::unique_ptr< GeometryModel::Interface< dim > > geometry_model
Definition: simulator.h:1851
LinearAlgebra::BlockVector operator_split_reaction_vector
Definition: simulator.h:2048
DoFHandler< dim > dof_handler
Definition: simulator.h:1953
std::unique_ptr< StokesMatrixFreeHandler< dim > > stokes_matrix_free
Definition: simulator.h:2077
unsigned int last_checkpoint_id
Definition: simulator.h:1831
std::unique_ptr< Assemblers::Manager< dim > > assemblers
Definition: simulator.h:992
bool rebuild_sparsity_and_matrices
Definition: simulator.h:2055
const IntermediaryConstructorAction post_signal_creation
Definition: simulator.h:1750
double global_Omega_diameter
Definition: simulator.h:1935
unsigned int timestep_number
Definition: simulator.h:1904
bool assemble_newton_stokes_matrix
Definition: simulator.h:2057
Manager< dim > World
Definition: world.h:39
ConditionalOStream pcout
Definition: simulator.h:1782
unsigned int pre_refinement_step
Definition: simulator.h:1905
TimeStepping::Manager< dim > time_stepping_manager
Definition: simulator.h:1916
std::size_t statistics_last_hash
Definition: simulator.h:1810
TableHandler statistics
Definition: simulator.h:1793
Introspection< dim > introspection
Definition: simulator.h:1761
MPI_Comm mpi_communicator
Definition: simulator.h:1764
typename Parameters< dim >::NullspaceRemoval NullspaceRemoval
Definition: simulator.h:273
LinearAlgebra::BlockSparseMatrix system_preconditioner_matrix
Definition: simulator.h:2035
bool do_pressure_rhs_compatibility_modification
Definition: simulator.h:1995
LinearAlgebra::BlockVector current_linearization_point
Definition: simulator.h:2042
BoundaryConvectiveHeating::Manager< dim > boundary_convective_heating_manager
Definition: simulator.h:1857
LinearAlgebra::BlockVector old_old_solution
Definition: simulator.h:2039
BoundaryTraction::Manager< dim > boundary_traction_manager
Definition: simulator.h:1891
LinearAlgebra::BlockVector pressure_shape_function_integrals
Definition: simulator.h:2045
std::ofstream log_file_stream
Definition: simulator.h:1770
std::unique_ptr< LinearAlgebra::PreconditionAMG > Amg_preconditioner
Definition: simulator.h:2052
std::shared_ptr< InitialTemperature::Manager< dim > > initial_temperature_manager
Definition: simulator.h:1872
TeeDevice iostream_tee_device
Definition: simulator.h:1775
boost::iostreams::stream< TeeDevice > TeeStream
Definition: simulator.h:1773
LinearAlgebra::BlockSparseMatrix system_matrix
Definition: simulator.h:2015
std::unique_ptr< MeltHandler< dim > > melt_handler
Definition: simulator.h:1739
LinearAlgebra::BlockVector inverse_lumped_mass_matrix
Definition: simulator.h:2021
bool rebuild_stokes_preconditioner
Definition: simulator.h:2059
PrescribedSolution::Manager< dim > prescribed_solution_manager
Definition: simulator.h:1859
const std::shared_ptr< InitialTopographyModel::Interface< dim > > initial_topography_model
Definition: simulator.h:1850
std::unique_ptr< Mapping< dim > > mapping
Definition: simulator.h:1949
const std::unique_ptr< PrescribedStokesSolution::Interface< dim > > prescribed_stokes_solution
Definition: simulator.h:1860
HeatingModel::Manager< dim > heating_model_manager
Definition: simulator.h:1939
SimulatorSignals< dim > signals
Definition: simulator.h:1748
const std::unique_ptr< BoundaryHeatFlux::Interface< dim > > boundary_heat_flux
Definition: simulator.h:1892
const FESystem< dim > finite_element
Definition: simulator.h:1951
bool simulator_is_past_initialization
Definition: simulator.h:297
LinearAlgebra::BlockVector solution
Definition: simulator.h:2037
std::unique_ptr< NewtonHandler< dim > > newton_handler
Definition: simulator.h:1746
typename Parameters< dim >::NonlinearSolver NonlinearSolver
Definition: simulator.h:268
Postprocess::Manager< dim > postprocess_manager
Definition: simulator.h:1955
const std::unique_ptr< GravityModel::Interface< dim > > gravity_model
Definition: simulator.h:1854
double newton_residual_for_derivative_scaling_factor
Definition: simulator.h:147
double global_volume
Definition: simulator.h:1936
BoundaryComposition::Manager< dim > boundary_composition_manager
Definition: simulator.h:1858
std::unique_ptr< LinearAlgebra::PreconditionBase > Mp_preconditioner
Definition: simulator.h:2053
::TrilinosWrappers::PreconditionILU PreconditionILU
Definition: global.h:303