ASPECT
stokes_matrix_free.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) 2011-2026 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_stokes_matrix_free_h
16 #define _aspect_simulator_solver_stokes_matrix_free_h
17 
18 #include <aspect/global.h>
19 #include <aspect/parameters.h>
21 
22 namespace aspect
23 {
28 
33  template <int dim>
35  {
36  public:
41  virtual void setup_dofs()=0;
42 
46  virtual void setup_multigrid_hierarchy();
47 
51  virtual const std::vector<std::shared_ptr<const Triangulation<dim, dim>>> &
52  get_multigrid_triangulations() const = 0;
53 
62  virtual void assemble(LinearAlgebra::BlockVector &system_rhs)=0;
63 
69  virtual void build_preconditioner()=0;
70 
74  static
76 
80  virtual std::size_t get_dof_handler_memory_consumption() const = 0;
81 
85  virtual std::size_t get_mg_transfer_memory_consumption() const = 0;
86 
90  virtual std::size_t get_constraint_memory_consumption() const = 0;
91 
96  virtual std::size_t get_cell_data_memory_consumption() const = 0;
97  };
98 
102  template <int dim>
103  std::unique_ptr<StokesMatrixFreeHandler<dim>> create_matrix_free_solver(Simulator<dim> &simulator, const Parameters<dim> &parameters);
104 
105 
106 
107 }
108 
109 #endif
virtual std::size_t get_dof_handler_memory_consumption() const =0
virtual void setup_multigrid_hierarchy()
virtual void assemble(LinearAlgebra::BlockVector &system_rhs)=0
virtual std::size_t get_mg_transfer_memory_consumption() const =0
virtual std::size_t get_cell_data_memory_consumption() const =0
std::unique_ptr< StokesMatrixFreeHandler< dim > > create_matrix_free_solver(Simulator< dim > &simulator, const Parameters< dim > &parameters)
virtual const std::vector< std::shared_ptr< const Triangulation< dim, dim > > > & get_multigrid_triangulations() const =0
virtual void build_preconditioner()=0
static void declare_parameters(ParameterHandler &prm)
virtual std::size_t get_constraint_memory_consumption() const =0
ObserverPointer< const Simulator< dim >, SimulatorAccess< dim > > simulator