21 #ifndef _aspect_simulator_solver_stokes_matrix_free_global_coarsening_h 22 #define _aspect_simulator_solver_stokes_matrix_free_global_coarsening_h 28 #include <deal.II/matrix_free/matrix_free.h> 29 #include <deal.II/matrix_free/operators.h> 30 #include <deal.II/matrix_free/fe_evaluation.h> 32 #include <deal.II/multigrid/mg_constrained_dofs.h> 33 #include <deal.II/multigrid/multigrid.h> 34 #include <deal.II/multigrid/mg_transfer_matrix_free.h> 35 #include <deal.II/multigrid/mg_transfer_global_coarsening.templates.h> 36 #include <deal.II/multigrid/mg_tools.h> 37 #include <deal.II/multigrid/mg_coarse.h> 38 #include <deal.II/multigrid/mg_smoother.h> 39 #include <deal.II/multigrid/mg_matrix.h> 53 template <
int dim,
int velocity_degree>
78 std::string
name()
const override;
102 const bool solve_newton_system,
103 const double last_pressure_normalization_adjustment,
202 MGLevelObject<MatrixFreeStokesOperators::OperatorCellData<dim, GMGNumberType>>
level_cell_data;
228 std::vector<std::shared_ptr<const Triangulation<dim, dim>>>
trias;
237 #if DEAL_II_VERSION_GTE(9,6,0) 240 using transfer_t = MGTransferGlobalCoarsening<dim, ::LinearAlgebra::distributed::Vector<GMGNumberType>>;
242 MGLevelObject<MGTwoLevelTransfer<dim, ::LinearAlgebra::distributed::Vector<GMGNumberType>>>
transfers_v;
243 MGLevelObject<MGTwoLevelTransfer<dim, ::LinearAlgebra::distributed::Vector<GMGNumberType>>>
transfers_p;
std::size_t get_cell_data_memory_consumption() const override
StokesMatrixType stokes_matrix
MGLevelObject< DoFHandler< dim > > dofhandlers_projection
MGLevelObject< DoFHandler< dim > > dofhandlers_p
void parse_parameters(ParameterHandler &prm) override
MGLevelObject< GMGSchurComplementMatrixType > mg_matrices_Schur_complement
std::size_t get_mg_transfer_memory_consumption() const override
const Simulator< dim > * simulator
BTBlockOperatorType BT_block
::TrilinosWrappers::MPI::BlockVector BlockVector
std::vector< std::shared_ptr< const Triangulation< dim, dim > > > trias
MGTransferGlobalCoarsening< dim, ::LinearAlgebra::distributed::Vector< GMGNumberType >> transfer_t
~StokesMatrixFreeHandlerGlobalCoarseningImplementation() override=default
std::unique_ptr< transfer_t > mg_transfer_A_block
MGConstrainedDoFs mg_constrained_dofs_projection
ABlockMatrixType A_block_matrix
MGLevelObject< AffineConstraints< double > > constraints_v
std::unique_ptr< transfer_t > mg_transfer_Schur_complement
void build_preconditioner() override
MGLevelObject< MatrixFreeStokesOperators::OperatorCellData< dim, GMGNumberType > > level_cell_data
StokesSolver::SolverOutputs solve(const LinearAlgebra::BlockSparseMatrix &system_matrix, const LinearAlgebra::BlockVector &system_rhs, const bool solve_newton_system, const double last_pressure_normalization_adjustment, LinearAlgebra::BlockVector &solution_vector) override
MGLevelObject< MGTwoLevelTransfer< dim, ::LinearAlgebra::distributed::Vector< GMGNumberType > > > transfers_p
static void declare_parameters(ParameterHandler &prm)
void correct_stokes_rhs()
::TrilinosWrappers::BlockSparseMatrix BlockSparseMatrix
MatrixFreeStokesOperators::OperatorCellData< dim, GMGNumberType > active_cell_data
std::size_t get_constraint_memory_consumption() const override
void setup_dofs() override
void evaluate_material_model()
std::string name() const override
::MGTransferMatrixFree< dim, NumberType > MGTransferMF
MGLevelObject< GMGABlockMatrixType > mg_matrices_A_block
MGLevelObject< DoFHandler< dim > > dofhandlers_v
MGLevelObject< MGTwoLevelTransfer< dim, ::LinearAlgebra::distributed::Vector< GMGNumberType > > > transfers_v
std::size_t get_dof_handler_memory_consumption() const override
FESystem< dim > fe_projection
MGConstrainedDoFs mg_constrained_dofs_Schur_complement
MGConstrainedDoFs mg_constrained_dofs_A_block
std::vector< std::shared_ptr< MatrixFree< dim, double > > > matrix_free_objects
SchurComplementMatrixType Schur_complement_block_matrix
StokesMatrixFreeHandlerGlobalCoarseningImplementation(Simulator< dim > &simulator, const Parameters< dim > ¶meters)
void initialize() override
MGLevelObject< AffineConstraints< double > > constraints_p