ASPECT
|
Public Member Functions | |
StokesMatrixFreeHandlerImplementation (Simulator< dim > &, ParameterHandler &prm) | |
~StokesMatrixFreeHandlerImplementation () override=default | |
std::pair< double, double > | solve (LinearAlgebra::BlockVector &solution_vector) override |
void | setup_dofs () override |
void | assemble () override |
void | build_preconditioner () override |
const DoFHandler< dim > & | get_dof_handler_v () const override |
const DoFHandler< dim > & | get_dof_handler_p () const override |
const DoFHandler< dim > & | get_dof_handler_projection () const override |
const AffineConstraints< double > & | get_constraints_v () const override |
const AffineConstraints< double > & | get_constraints_p () const override |
const MGTransferMF< dim, GMGNumberType > & | get_mg_transfer_A () const override |
const MGTransferMF< dim, GMGNumberType > & | get_mg_transfer_S () const override |
std::size_t | get_cell_data_memory_consumption () const override |
Public Member Functions inherited from aspect::StokesMatrixFreeHandler< dim > | |
virtual | ~StokesMatrixFreeHandler ()=default |
Static Public Member Functions | |
static void | declare_parameters (ParameterHandler &prm) |
Static Public Member Functions inherited from aspect::StokesMatrixFreeHandler< dim > | |
static void | declare_parameters (ParameterHandler &prm) |
Private Types | |
using | StokesMatrixType = MatrixFreeStokesOperators::StokesOperator< dim, velocity_degree, double > |
using | SchurComplementMatrixType = MatrixFreeStokesOperators::MassMatrixOperator< dim, velocity_degree-1, double > |
using | ABlockMatrixType = MatrixFreeStokesOperators::ABlockOperator< dim, velocity_degree, double > |
using | GMGSchurComplementMatrixType = MatrixFreeStokesOperators::MassMatrixOperator< dim, velocity_degree-1, GMGNumberType > |
using | GMGABlockMatrixType = MatrixFreeStokesOperators::ABlockOperator< dim, velocity_degree, GMGNumberType > |
Private Member Functions | |
void | parse_parameters (ParameterHandler &prm) |
void | evaluate_material_model () |
void | correct_stokes_rhs () |
Main class of the Matrix-free method. Here are all the functions for setup, assembly and solving the Stokes system.
We need to derive from StokesMatrixFreeHandler to be able to introduce a second template argument for the degree of the Stokes finite element. This way, the main simulator does not need to know about the degree by using a pointer to the base class and we can pick the desired velocity degree at runtime.
Definition at line 90 of file simulator.h.
|
private |
Definition at line 683 of file stokes_matrix_free.h.
|
private |
Definition at line 684 of file stokes_matrix_free.h.
|
private |
Definition at line 685 of file stokes_matrix_free.h.
|
private |
Definition at line 687 of file stokes_matrix_free.h.
|
private |
Definition at line 688 of file stokes_matrix_free.h.
aspect::StokesMatrixFreeHandlerImplementation< dim, velocity_degree >::StokesMatrixFreeHandlerImplementation | ( | Simulator< dim > & | , |
ParameterHandler & | prm | ||
) |
Initialize this class, allowing it to read in relevant parameters as well as giving it a reference to the Simulator that owns it, since it needs to make fairly extensive changes to the internals of the simulator.
|
overridedefault |
Destructor.
|
overridevirtual |
Solves the Stokes linear system using the matrix-free solver.
solution_vector | The existing solution vector that will be updated with the new solution. This vector is expected to have the block structure of the full solution vector, and its velocity and pressure blocks will be updated with the new solution. |
Implements aspect::StokesMatrixFreeHandler< dim >.
|
overridevirtual |
Allocates and sets up the members of the StokesMatrixFreeHandler. This is called by Simulator<dim>::setup_dofs()
Implements aspect::StokesMatrixFreeHandler< dim >.
|
overridevirtual |
Perform various tasks to update the linear system to solve for. Note that we are not assembling a matrix (as this is a matrix-free algorithm), but we are evaluating the material model and storing the information necessary for a later call to solve().
Implements aspect::StokesMatrixFreeHandler< dim >.
|
overridevirtual |
Computes and sets the diagonal for both the mass matrix operator and the A-block operators on each level for the purpose of smoothing inside the multigrid v-cycle.
Implements aspect::StokesMatrixFreeHandler< dim >.
|
static |
Declare parameters. (No actual parameters at the moment).
|
overridevirtual |
Return a reference to the DoFHandler that is used for velocity in the block GMG solver.
Implements aspect::StokesMatrixFreeHandler< dim >.
|
overridevirtual |
Return a reference to the DoFHandler that is used for pressure in the block GMG solver.
Implements aspect::StokesMatrixFreeHandler< dim >.
|
overridevirtual |
Return a reference to the DoFHandler that is used for the coefficient projection in the block GMG solver.
Implements aspect::StokesMatrixFreeHandler< dim >.
|
overridevirtual |
Return a pointer to the object that describes the velocity DoF constraints for the block GMG Stokes solver.
Implements aspect::StokesMatrixFreeHandler< dim >.
|
overridevirtual |
Return a pointer to the object that describes the pressure DoF constraints for the block GMG Stokes solver.
Implements aspect::StokesMatrixFreeHandler< dim >.
|
overridevirtual |
Return a pointer to the MGTransfer object used for the A block of the block GMG Stokes solver.
Implements aspect::StokesMatrixFreeHandler< dim >.
|
overridevirtual |
Return a pointer to the MGTransfer object used for the Schur complement block of the block GMG Stokes solver.
Implements aspect::StokesMatrixFreeHandler< dim >.
|
overridevirtual |
Return the memory consumption in bytes that are used to store equation data like viscosity to be able to apply the operators.
Implements aspect::StokesMatrixFreeHandler< dim >.
|
private |
Parse parameters.
|
private |
Evaluate the MaterialModel to query information like the viscosity and project this viscosity to the multigrid hierarchy. Also queries other parameters like pressure scaling.
|
private |
Add correction to system RHS for non-zero boundary condition. See description in StokesMatrixFreeHandler::correct_stokes_rhs() for more information.
|
private |
Definition at line 649 of file stokes_matrix_free.h.
|
private |
Definition at line 651 of file stokes_matrix_free.h.
|
private |
If true, it will time the key components of this matrix-free implementation, such as vmult of different matrices, solver IDR with the cheap preconditioner, etc.
Definition at line 657 of file stokes_matrix_free.h.
|
private |
The max/min of the evaluated viscosities.
Definition at line 662 of file stokes_matrix_free.h.
|
private |
Definition at line 663 of file stokes_matrix_free.h.
|
private |
Definition at line 665 of file stokes_matrix_free.h.
|
private |
Definition at line 666 of file stokes_matrix_free.h.
|
private |
Definition at line 667 of file stokes_matrix_free.h.
|
private |
Definition at line 669 of file stokes_matrix_free.h.
|
private |
Definition at line 670 of file stokes_matrix_free.h.
|
private |
Definition at line 671 of file stokes_matrix_free.h.
|
private |
Store the data for the Stokes operator (viscosity, etc.) for the active cells.
Definition at line 676 of file stokes_matrix_free.h.
|
private |
Store the data for the Stokes operator (viscosity, etc.) for each multigrid level.
Definition at line 681 of file stokes_matrix_free.h.
|
private |
Definition at line 690 of file stokes_matrix_free.h.
|
private |
Definition at line 691 of file stokes_matrix_free.h.
|
private |
Definition at line 692 of file stokes_matrix_free.h.
|
private |
Definition at line 694 of file stokes_matrix_free.h.
|
private |
Definition at line 695 of file stokes_matrix_free.h.
|
private |
Definition at line 697 of file stokes_matrix_free.h.
|
private |
Definition at line 698 of file stokes_matrix_free.h.
|
private |
Definition at line 700 of file stokes_matrix_free.h.
|
private |
Definition at line 701 of file stokes_matrix_free.h.
|
private |
Definition at line 702 of file stokes_matrix_free.h.
|
private |
Definition at line 704 of file stokes_matrix_free.h.
|
private |
Definition at line 705 of file stokes_matrix_free.h.
|
private |
Definition at line 707 of file stokes_matrix_free.h.