ASPECT
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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>
69 #include <aspect/advection_field.h>
70 
71 #include <boost/iostreams/tee.hpp>
72 #include <boost/iostreams/stream.hpp>
73 
74 #include <memory>
75 #include <thread>
76 
77 namespace WorldBuilder
78 {
79  class World;
80 }
81 
82 
83 namespace aspect
84 {
85  template <int dim>
86  class MeltHandler;
87 
88  template <int dim>
89  class NewtonHandler;
90 
91  template <int dim>
93 
94  namespace StokesSolver
95  {
96  template <int dim>
97  class Direct;
98  }
99 
100  template <int dim, int velocity_degree>
102 
103  namespace MeshDeformation
104  {
105  template <int dim>
107  }
108 
109  template <int dim>
111 
112  namespace internal
113  {
114  namespace Assembly
115  {
116  namespace Scratch
117  {
118  template <int dim> struct StokesPreconditioner;
119  template <int dim> struct StokesSystem;
120  template <int dim> struct AdvectionSystem;
121  }
122 
123  namespace CopyData
124  {
125  template <int dim> struct StokesPreconditioner;
126  template <int dim> struct StokesSystem;
127  template <int dim> struct AdvectionSystem;
128  }
129  }
130  }
131 
132  namespace Assemblers
133  {
134  template <int dim> class Interface;
135  template <int dim> class Manager;
136  }
137 
139  {
143  double residual;
144  double residual_old;
147  std::pair<double,double> stokes_residuals;
148  };
149 
153  template <int dim>
155  {
157  :
158  scalar_moment_of_inertia(numbers::signaling_nan<double>()),
159  scalar_angular_momentum(numbers::signaling_nan<double>()),
160  scalar_rotation(numbers::signaling_nan<double>()),
161  tensor_moment_of_inertia(numbers::signaling_nan<SymmetricTensor<2,dim>>()),
162  tensor_angular_momentum(numbers::signaling_nan<Tensor<1,dim>>()),
163  tensor_rotation(numbers::signaling_nan<Tensor<1,dim>>())
164  {};
165 
173 
177  SymmetricTensor<2,dim> tensor_moment_of_inertia;
178  Tensor<1,dim> tensor_angular_momentum;
179  Tensor<1,dim> tensor_rotation;
180  };
181 
185  DeclExceptionMsg(ExcNonlinearSolverNoConvergence,
186  "Nonlinear solver failed to converge in the prescribed number of steps. "
187  "Consider changing `Max nonlinear iterations` or `Nonlinear solver failure "
188  "strategy`.");
189 
197  template <int dim>
198  class Simulator
199  {
200  public:
214  Simulator (const MPI_Comm mpi_communicator,
215  ParameterHandler &prm);
216 
221  ~Simulator ();
222 
234  static
235  void declare_parameters (ParameterHandler &prm);
236 
245  void run ();
246 
258  void
259  write_plugin_graph (std::ostream &output_stream) const;
260 
265 
270 
272 
273  private:
274 
294 
312  {
313  IntermediaryConstructorAction (const std::function<void ()> &action);
314  };
315 
330  void setup_dofs ();
331 
340  void setup_introspection ();
341 
353  void set_initial_temperature_and_compositional_fields ();
354 
370  void compute_initial_pressure_field ();
371 
377  void compute_initial_velocity_boundary_constraints (AffineConstraints<double> &constraints);
378 
384  void compute_current_velocity_boundary_constraints (AffineConstraints<double> &constraints);
385 
398  void compute_current_constraints ();
399 
413  double compute_pressure_scaling_factor () const;
414 
426  void start_timestep ();
427 
435  void solve_timestep ();
436 
448  void solve_single_advection_single_stokes ();
449 
462  void solve_no_advection_iterated_stokes ();
463 
474  void solve_no_advection_single_stokes ();
475 
487  void solve_first_timestep_only_single_stokes ();
488 
501  void solve_iterated_advection_and_stokes ();
502 
515  void solve_single_advection_iterated_stokes ();
516 
529  void solve_no_advection_iterated_defect_correction_stokes ();
530 
543  void solve_single_advection_iterated_defect_correction_stokes ();
544 
558  void solve_iterated_advection_and_defect_correction_stokes ();
559 
578  void solve_iterated_advection_and_newton_stokes (bool use_newton_iterations);
579 
599  void solve_single_advection_and_iterated_newton_stokes (bool use_newton_iterations);
600 
612  void solve_single_advection_no_stokes ();
613 
625  void solve_no_advection_no_stokes ();
626 
635  void build_stokes_preconditioner ();
636 
644  void build_advection_preconditioner (const AdvectionField &advection_field,
646  const double diagonal_strengthening);
647 
654  void assemble_stokes_system ();
655 
670  double assemble_and_solve_temperature (const double &initial_residual = 0,
671  double *residual = nullptr);
672 
688  std::vector<double> assemble_and_solve_composition (const std::vector<double> &initial_residual = {},
689  std::vector<double> *residual = nullptr);
690 
705  double assemble_and_solve_stokes (const double &initial_nonlinear_residual = 0,
706  double *nonlinear_residual = nullptr);
707 
720  void do_one_defect_correction_Stokes_step(DefectCorrectionResiduals &dcr,
721  const bool use_picard);
722 
730  void assemble_advection_system (const AdvectionField &advection_field);
731 
742  double solve_advection (const AdvectionField &advection_field);
743 
748  void interpolate_particle_properties (const std::vector<AdvectionField> &advection_fields);
749 
826  std::pair<double,double>
827  solve_stokes (LinearAlgebra::BlockVector &solution_vector);
828 
841  void postprocess ();
842 
858  void refine_mesh (const unsigned int max_grid_level);
859 
875  unsigned int determine_last_good_snapshot() const;
876 
888  void create_snapshot();
889 
903  void resume_from_snapshot();
904 
911  template <class Archive>
912  void serialize (Archive &ar, const unsigned int version);
929  Table<2,DoFTools::Coupling>
930  setup_system_matrix_coupling () const;
931 
939  void setup_system_matrix (const std::vector<IndexSet> &system_partitioning);
940 
952  void setup_system_preconditioner (const std::vector<IndexSet> &system_partitioning);
953 
975  std::unique_ptr<Assemblers::Manager<dim>> assemblers;
976 
985  void set_assemblers ();
986 
997  void set_advection_assemblers ();
998 
1008  void set_stokes_assemblers ();
1009 
1016  void assemble_stokes_preconditioner ();
1017 
1025  void
1026  local_assemble_stokes_preconditioner (const typename DoFHandler<dim>::active_cell_iterator &cell,
1029 
1037  void
1038  copy_local_to_global_stokes_preconditioner (const internal::Assembly::CopyData::StokesPreconditioner<dim> &data);
1039 
1047  void
1048  local_assemble_stokes_system (const typename DoFHandler<dim>::active_cell_iterator &cell,
1051 
1059  void
1060  copy_local_to_global_stokes_system (const internal::Assembly::CopyData::StokesSystem<dim> &data);
1061 
1069  void
1070  local_assemble_advection_face_terms(const AdvectionField &advection_field,
1071  const typename DoFHandler<dim>::active_cell_iterator &cell,
1081  void
1082  local_assemble_advection_system (const AdvectionField &advection_field,
1083  const Vector<double> &viscosity_per_cell,
1084  const typename DoFHandler<dim>::active_cell_iterator &cell,
1087 
1095  void
1096  copy_local_to_global_advection_system (const AdvectionField &advection_field,
1098 
1123  void make_pressure_rhs_compatible(LinearAlgebra::BlockVector &vector);
1124 
1134  template <typename T>
1135  void get_artificial_viscosity (Vector<T> &viscosity_per_cell,
1136  const AdvectionField &advection_field,
1137  const bool skip_interior_cells = false) const;
1138 
1171  double normalize_pressure(LinearAlgebra::BlockVector &vector) const;
1172 
1212  void denormalize_pressure(const double pressure_adjustment,
1213  LinearAlgebra::BlockVector &vector) const;
1214 
1223  void apply_limiter_to_dg_solutions (const AdvectionField &advection_field);
1224 
1241  void compute_unique_advection_support_points (const std::vector<AdvectionField> &advection_fields,
1242  std::vector<Point<dim>> &unique_support_points,
1243  std::vector<std::vector<unsigned int>> &support_point_index_by_field) const;
1244 
1267  void compute_reactions ();
1268 
1278  void update_solution_vectors_with_reaction_results (const unsigned int block_index,
1279  const LinearAlgebra::BlockVector &distributed_vector,
1280  const LinearAlgebra::BlockVector &distributed_reaction_vector);
1281 
1292  void initialize_current_linearization_point ();
1293 
1313  void interpolate_material_output_into_advection_field (const std::vector<AdvectionField> &adv_field);
1314 
1315 
1323  void interpolate_onto_velocity_system(const TensorFunction<1,dim> &func,
1324  LinearAlgebra::Vector &vec) const;
1325 
1326 
1341  void setup_nullspace_constraints(AffineConstraints<double> &constraints);
1342 
1343 
1356  void remove_nullspace(LinearAlgebra::BlockVector &solution,
1357  LinearAlgebra::BlockVector &distributed_stokes_solution) const;
1358 
1374  compute_net_angular_momentum(const bool use_constant_density,
1375  const LinearAlgebra::BlockVector &solution,
1376  const bool limit_to_top_faces = false) const;
1377 
1394  void remove_net_angular_momentum(const bool use_constant_density,
1395  LinearAlgebra::BlockVector &relevant_dst,
1396  LinearAlgebra::BlockVector &tmp_distributed_stokes,
1397  const bool limit_to_top_faces = false) const;
1398 
1406  void replace_outflow_boundary_ids(const unsigned int boundary_id_offset,
1407  const bool is_composition,
1408  const unsigned int composition_index);
1409 
1417  void restore_outflow_boundary_ids(const unsigned int boundary_id_offset);
1418 
1432  void remove_net_linear_momentum(const bool use_constant_density,
1433  LinearAlgebra::BlockVector &relevant_dst,
1434  LinearAlgebra::BlockVector &tmp_distributed_stokes) const;
1435 
1443  double get_maximal_velocity (const LinearAlgebra::BlockVector &solution) const;
1444 
1457  double get_entropy_variation (const double average_field,
1458  const AdvectionField &advection_field) const;
1459 
1468  std::pair<double,double>
1469  get_extrapolated_advection_field_range (const AdvectionField &advection_field) const;
1470 
1479  void exchange_refinement_flags();
1480 
1481 
1490  void maybe_write_timing_output () const;
1491 
1499  bool maybe_write_checkpoint (const std::time_t last_checkpoint_time,
1500  const bool force_writing_checkpoint);
1501 
1518  bool maybe_do_initial_refinement (const unsigned int max_refinement_level);
1519 
1528  void maybe_refine_mesh (const double new_time_step,
1529  unsigned int &max_refinement_level);
1530 
1538  void advance_time (const double step_size);
1539 
1547  double
1548  compute_viscosity(internal::Assembly::Scratch::AdvectionSystem<dim> &scratch,
1549  const double global_u_infty,
1550  const double global_field_variation,
1551  const double average_field,
1552  const double global_entropy_variation,
1553  const double cell_diameter,
1554  const AdvectionField &advection_field) const;
1555 
1564  void
1565  compute_advection_system_residual(internal::Assembly::Scratch::AdvectionSystem<dim> &scratch,
1566  const double average_field,
1567  const AdvectionField &advection_field,
1568  double &max_residual,
1569  double &max_velocity,
1570  double &max_density,
1571  double &max_specific_heat,
1572  double &conductivity) const;
1573 
1588  bool
1589  stokes_matrix_depends_on_solution () const;
1590 
1600  bool
1601  stokes_A_block_is_symmetric () const;
1602 
1615  void
1616  check_consistency_of_formulation ();
1617 
1623  void
1624  select_default_solver_and_averaging ();
1625 
1636  void
1637  check_consistency_of_boundary_conditions () const;
1638 
1642  double
1643  compute_initial_newton_residual ();
1644 
1653  double
1654  compute_Eisenstat_Walker_linear_tolerance(const bool EisenstatWalkerChoiceOne,
1655  const double maximum_linear_stokes_solver_tolerance,
1656  const double linear_stokes_solver_tolerance,
1657  const double stokes_residual,
1658  const double newton_residual,
1659  const double newton_residual_old);
1660 
1670  void output_statistics();
1671 
1683  double
1684  compute_initial_stokes_residual();
1685 
1696 
1702  std::unique_ptr<MeltHandler<dim>> melt_handler;
1703 
1709  std::unique_ptr<NewtonHandler<dim>> newton_handler;
1710 
1712 
1714 
1722  std::unique_ptr<VolumeOfFluidHandler<dim>> volume_of_fluid_handler;
1723 
1725 
1726 
1728 
1733  std::ofstream log_file_stream;
1734 
1735  using TeeDevice = boost::iostreams::tee_device<std::ostream, std::ofstream>;
1736  using TeeStream = boost::iostreams::stream<TeeDevice>;
1737 
1740 
1745  ConditionalOStream pcout;
1746 
1756  TableHandler statistics;
1757 
1774 
1775  mutable TimerOutput computing_timer;
1776 
1781  Timer wall_timer;
1782 
1788 
1794  unsigned int last_checkpoint_id;
1795 
1804 
1813  const std::shared_ptr<InitialTopographyModel::Interface<dim>> initial_topography_model;
1814  const std::unique_ptr<GeometryModel::Interface<dim>> geometry_model;
1816  const std::unique_ptr<MaterialModel::Interface<dim>> material_model;
1817  const std::unique_ptr<GravityModel::Interface<dim>> gravity_model;
1818 
1822  const std::unique_ptr<PrescribedStokesSolution::Interface<dim>> prescribed_stokes_solution;
1823 
1834  std::shared_ptr<InitialTemperature::Manager<dim>> initial_temperature_manager;
1835  std::shared_ptr<InitialComposition::Manager<dim>> initial_composition_manager;
1836 
1837  const std::unique_ptr<AdiabaticConditions::Interface<dim>> adiabatic_conditions;
1838 #ifdef ASPECT_WITH_WORLD_BUILDER
1839 
1850  std::shared_ptr<WorldBuilder::World> world_builder;
1851 #endif
1854  const std::unique_ptr<BoundaryHeatFlux::Interface<dim>> boundary_heat_flux;
1855 
1863  double time;
1864  double time_step;
1866  unsigned int timestep_number;
1867  unsigned int pre_refinement_step;
1868  unsigned int nonlinear_iteration;
1896  parallel::distributed::Triangulation<dim> triangulation;
1899 
1902 
1911  std::unique_ptr<Mapping<dim>> mapping;
1912 
1913  const FESystem<dim> finite_element;
1914 
1915  DoFHandler<dim> dof_handler;
1916 
1918 
1922  std::vector<Particle::Manager<dim>> particle_managers;
1923 
1935  AffineConstraints<double> constraints;
1936  AffineConstraints<double> current_constraints;
1937 
1943 
1950 
1958 
1978 
1984 
1998 
2003 
2005 
2006  // only used if is_compressible()
2008 
2009  // only used if operator split is enabled
2011 
2012 
2013 
2014  std::unique_ptr<LinearAlgebra::PreconditionAMG> Amg_preconditioner;
2015  std::unique_ptr<LinearAlgebra::PreconditionBase> Mp_preconditioner;
2016 
2022 
2027  private:
2028 
2034  std::unique_ptr<MeshDeformation::MeshDeformationHandler<dim>> mesh_deformation;
2035 
2039  std::unique_ptr<StokesMatrixFreeHandler<dim>> stokes_matrix_free;
2040 
2044  std::unique_ptr<StokesSolver::Direct<dim>> stokes_direct;
2045 
2046 
2047  friend class boost::serialization::access;
2048  friend class SimulatorAccess<dim>;
2050  friend class VolumeOfFluidHandler<dim>;
2051  friend class StokesMatrixFreeHandler<dim>;
2052  template <int dimension, int velocity_degree> friend class StokesMatrixFreeHandlerLocalSmoothingImplementation;
2053  friend struct Parameters<dim>;
2054  };
2055 }
2056 
2057 
2058 #endif
The NullspaceRemoval struct.
Definition: parameters.h:133
unsigned int nonlinear_iteration
Definition: simulator.h:1868
BoundaryVelocity::Manager< dim > boundary_velocity_manager
Definition: simulator.h:1852
const std::unique_ptr< AdiabaticConditions::Interface< dim > > adiabatic_conditions
Definition: simulator.h:1837
std::shared_ptr< InitialComposition::Manager< dim > > initial_composition_manager
Definition: simulator.h:1835
void write_plugin_graph(std::ostream &output_stream)
parallel::distributed::Triangulation< dim > triangulation
Definition: simulator.h:1896
TimerOutput computing_timer
Definition: simulator.h:1775
BoundaryTemperature::Manager< dim > boundary_temperature_manager
Definition: simulator.h:1819
boost::iostreams::tee_device< std::ostream, std::ofstream > TeeDevice
Definition: simulator.h:1735
std::unique_ptr< StokesSolver::Direct< dim > > stokes_direct
Definition: simulator.h:2044
::TrilinosWrappers::MPI::BlockVector BlockVector
Definition: global.h:269
double pressure_scaling
Definition: simulator.h:1949
Tensor< 1, dim > tensor_rotation
Definition: simulator.h:179
double old_time_step
Definition: simulator.h:1865
Tensor< 1, dim > tensor_angular_momentum
Definition: simulator.h:178
AffineConstraints< double > constraints
Definition: simulator.h:1935
bool assemble_newton_stokes_system
Definition: simulator.h:2020
LinearAlgebra::BlockVector old_solution
Definition: simulator.h:2000
const IntermediaryConstructorAction post_geometry_model_creation_action
Definition: simulator.h:1815
std::unique_ptr< VolumeOfFluidHandler< dim > > volume_of_fluid_handler
Definition: simulator.h:1722
bool rebuild_stokes_matrix
Definition: simulator.h:2018
Parameters< dim > parameters
Definition: simulator.h:1695
SymmetricTensor< 2, dim > tensor_moment_of_inertia
Definition: simulator.h:177
AffineConstraints< double > current_constraints
Definition: simulator.h:1936
std::unique_ptr< MeshDeformation::MeshDeformationHandler< dim > > mesh_deformation
Definition: simulator.h:2034
LinearAlgebra::BlockVector system_rhs
Definition: simulator.h:2002
std::pair< double, double > stokes_residuals
Definition: simulator.h:147
std::vector< Particle::Manager< dim > > particle_managers
Definition: simulator.h:1922
std::thread output_statistics_thread
Definition: simulator.h:1803
LateralAveraging< dim > lateral_averaging
Definition: simulator.h:1887
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:1739
::TrilinosWrappers::MPI::Vector Vector
Definition: global.h:263
MeshRefinement::Manager< dim > mesh_refinement_manager
Definition: simulator.h:1900
std::size_t statistics_last_write_size
Definition: simulator.h:1772
const std::unique_ptr< MaterialModel::Interface< dim > > material_model
Definition: simulator.h:1816
unsigned int nonlinear_solver_failures
Definition: simulator.h:1869
double last_pressure_normalization_adjustment
Definition: simulator.h:1942
::TrilinosWrappers::BlockSparseMatrix BlockSparseMatrix
Definition: global.h:280
double total_walltime_until_last_snapshot
Definition: simulator.h:1787
void declare_parameters(ParameterHandler &prm)
const std::unique_ptr< GeometryModel::Interface< dim > > geometry_model
Definition: simulator.h:1814
LinearAlgebra::BlockVector operator_split_reaction_vector
Definition: simulator.h:2010
DoFHandler< dim > dof_handler
Definition: simulator.h:1915
std::unique_ptr< StokesMatrixFreeHandler< dim > > stokes_matrix_free
Definition: simulator.h:2039
unsigned int last_checkpoint_id
Definition: simulator.h:1794
std::unique_ptr< Assemblers::Manager< dim > > assemblers
Definition: simulator.h:975
bool rebuild_sparsity_and_matrices
Definition: simulator.h:2017
const IntermediaryConstructorAction post_signal_creation
Definition: simulator.h:1713
double global_Omega_diameter
Definition: simulator.h:1897
unsigned int timestep_number
Definition: simulator.h:1866
bool assemble_newton_stokes_matrix
Definition: simulator.h:2019
Manager< dim > World
Definition: world.h:39
ConditionalOStream pcout
Definition: simulator.h:1745
unsigned int pre_refinement_step
Definition: simulator.h:1867
TimeStepping::Manager< dim > time_stepping_manager
Definition: simulator.h:1878
std::size_t statistics_last_hash
Definition: simulator.h:1773
TableHandler statistics
Definition: simulator.h:1756
Introspection< dim > introspection
Definition: simulator.h:1724
MPI_Comm mpi_communicator
Definition: simulator.h:1727
typename Parameters< dim >::NullspaceRemoval NullspaceRemoval
Definition: simulator.h:269
LinearAlgebra::BlockSparseMatrix system_preconditioner_matrix
Definition: simulator.h:1997
bool do_pressure_rhs_compatibility_modification
Definition: simulator.h:1957
LinearAlgebra::BlockVector current_linearization_point
Definition: simulator.h:2004
BoundaryConvectiveHeating::Manager< dim > boundary_convective_heating_manager
Definition: simulator.h:1820
LinearAlgebra::BlockVector old_old_solution
Definition: simulator.h:2001
BoundaryTraction::Manager< dim > boundary_traction_manager
Definition: simulator.h:1853
LinearAlgebra::BlockVector pressure_shape_function_integrals
Definition: simulator.h:2007
std::ofstream log_file_stream
Definition: simulator.h:1733
std::unique_ptr< LinearAlgebra::PreconditionAMG > Amg_preconditioner
Definition: simulator.h:2014
std::shared_ptr< InitialTemperature::Manager< dim > > initial_temperature_manager
Definition: simulator.h:1834
TeeDevice iostream_tee_device
Definition: simulator.h:1738
boost::iostreams::stream< TeeDevice > TeeStream
Definition: simulator.h:1736
LinearAlgebra::BlockSparseMatrix system_matrix
Definition: simulator.h:1977
std::unique_ptr< MeltHandler< dim > > melt_handler
Definition: simulator.h:1702
LinearAlgebra::BlockVector inverse_lumped_mass_matrix
Definition: simulator.h:1983
bool rebuild_stokes_preconditioner
Definition: simulator.h:2021
const std::shared_ptr< InitialTopographyModel::Interface< dim > > initial_topography_model
Definition: simulator.h:1813
std::unique_ptr< Mapping< dim > > mapping
Definition: simulator.h:1911
const std::unique_ptr< PrescribedStokesSolution::Interface< dim > > prescribed_stokes_solution
Definition: simulator.h:1822
HeatingModel::Manager< dim > heating_model_manager
Definition: simulator.h:1901
SimulatorSignals< dim > signals
Definition: simulator.h:1711
const std::unique_ptr< BoundaryHeatFlux::Interface< dim > > boundary_heat_flux
Definition: simulator.h:1854
const FESystem< dim > finite_element
Definition: simulator.h:1913
bool simulator_is_past_initialization
Definition: simulator.h:293
LinearAlgebra::BlockVector solution
Definition: simulator.h:1999
std::unique_ptr< NewtonHandler< dim > > newton_handler
Definition: simulator.h:1709
typename Parameters< dim >::NonlinearSolver NonlinearSolver
Definition: simulator.h:264
Postprocess::Manager< dim > postprocess_manager
Definition: simulator.h:1917
const std::unique_ptr< GravityModel::Interface< dim > > gravity_model
Definition: simulator.h:1817
double newton_residual_for_derivative_scaling_factor
Definition: simulator.h:146
double global_volume
Definition: simulator.h:1898
BoundaryComposition::Manager< dim > boundary_composition_manager
Definition: simulator.h:1821
std::unique_ptr< LinearAlgebra::PreconditionBase > Mp_preconditioner
Definition: simulator.h:2015
::TrilinosWrappers::PreconditionILU PreconditionILU
Definition: global.h:303