ASPECT
interface.h
Go to the documentation of this file.
1 // ------------------------------------------------------
2 //
3 // SPDX-License-Identifier: GPL-2.0-or-later
4 //
5 // SPDX-FileCopyrightText: Copyright (C) 2025 by the ASPECT authors.
6 //
7 // This file is part of ASPECT.
8 //
9 // Detailed license information governing the source code and
10 // contributions can be found in the folder LICENSES and in
11 // LICENSE and CONTRIBUTING.md at the top level directory.
12 //
13 // ------------------------------------------------------
14 
15 #ifndef _aspect_simulator_solver_interface_h
16 #define _aspect_simulator_solver_interface_h
17 
18 #include <aspect/global.h>
20 
21 
22 namespace aspect
23 {
24  namespace StokesSolver
25  {
31  {
33  :
34  initial_nonlinear_residual(numbers::signaling_nan<double>()),
35  final_linear_residual(numbers::signaling_nan<double>()),
37  {}
38 
45 
52  };
53 
57  template <int dim>
58  class Interface: public SimulatorAccess<dim>, public Plugins::InterfaceBase
59  {
60  public:
83  virtual
84  SolverOutputs solve(const LinearAlgebra::BlockSparseMatrix &system_matrix,
85  const LinearAlgebra::BlockVector &system_rhs,
86  const bool solve_newton_system,
87  const double last_pressure_normalization_adjustment,
88  LinearAlgebra::BlockVector &solution_vector) = 0;
89 
93  virtual
94  std::string name() const = 0;
95  };
96  }
97 }
98 
99 #endif