![]() |
ASPECT
|
Public Member Functions | |
StokesMatrixFreeHandlerImplementation (Simulator< dim > &, ParameterHandler &prm) | |
~StokesMatrixFreeHandlerImplementation () override=default | |
std::pair< double, double > | solve () override |
void | setup_dofs () override |
virtual 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 MGTransferMatrixFree< dim, GMGNumberType > & | get_mg_transfer_A () const override |
const MGTransferMatrixFree< dim, GMGNumberType > & | get_mg_transfer_S () const override |
std::size_t | get_cell_data_memory_consumption () const override |
![]() | |
virtual | ~StokesMatrixFreeHandler ()=default |
Static Public Member Functions | |
static void | declare_parameters (ParameterHandler &prm) |
![]() | |
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 672 of file stokes_matrix_free.h.
|
private |
Definition at line 673 of file stokes_matrix_free.h.
|
private |
Definition at line 674 of file stokes_matrix_free.h.
|
private |
Definition at line 676 of file stokes_matrix_free.h.
|
private |
Definition at line 677 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 matrix-free. This is called by Simulator<dim>::solve_stokes().
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 638 of file stokes_matrix_free.h.
|
private |
Definition at line 640 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 646 of file stokes_matrix_free.h.
|
private |
The max/min of the evaluated viscosities.
Definition at line 651 of file stokes_matrix_free.h.
|
private |
Definition at line 652 of file stokes_matrix_free.h.
|
private |
Definition at line 654 of file stokes_matrix_free.h.
|
private |
Definition at line 655 of file stokes_matrix_free.h.
|
private |
Definition at line 656 of file stokes_matrix_free.h.
|
private |
Definition at line 658 of file stokes_matrix_free.h.
|
private |
Definition at line 659 of file stokes_matrix_free.h.
|
private |
Definition at line 660 of file stokes_matrix_free.h.
|
private |
Store the data for the Stokes operator (viscosity, etc.) for the active cells.
Definition at line 665 of file stokes_matrix_free.h.
|
private |
Store the data for the Stokes operator (viscosity, etc.) for each multigrid level.
Definition at line 670 of file stokes_matrix_free.h.
|
private |
Definition at line 679 of file stokes_matrix_free.h.
|
private |
Definition at line 680 of file stokes_matrix_free.h.
|
private |
Definition at line 681 of file stokes_matrix_free.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 686 of file stokes_matrix_free.h.
|
private |
Definition at line 687 of file stokes_matrix_free.h.
|
private |
Definition at line 689 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 693 of file stokes_matrix_free.h.
|
private |
Definition at line 694 of file stokes_matrix_free.h.
|
private |
Definition at line 696 of file stokes_matrix_free.h.