|
SpECTRE
v2026.04.01
|
A complete nonlinear elliptic solver stack. Use to compose an executable. More...
#include <Solver.hpp>
Classes | |
| struct | RandomizeInitialGuess |
Public Types | |
| using | system = System |
| using | background_tag |
| using | initial_guess_tag |
| using | fields_tag = ::Tags::Variables<typename system::primal_fields> |
| These are the fields we solve for. | |
| using | fluxes_tag = ::Tags::Variables<typename system::primal_fluxes> |
| These are the fluxes corresponding to the fields, i.e. essentially their first derivatives. These are background fields for the linearized sources. | |
| using | fixed_sources_tag = db::add_tag_prefix<::Tags::FixedSource, fields_tag> |
| These are the fixed sources, i.e. the RHS of the equations. | |
| using | operator_applied_to_fields_tag |
| using | amr_iteration_id |
| using | nonlinear_solver |
| The nonlinear solver algorithm. | |
| using | nonlinear_solver_iteration_id |
| using | linear_solver |
| The linear solver algorithm. We use GMRES since the operator is not necessarily symmetric. Using CG here would be an optimization for symmetric problems. | |
| using | linear_solver_iteration_id |
| using | multigrid |
| Precondition each linear solver iteration with a multigrid V-cycle. | |
| using | subdomain_operator |
| Smooth each multigrid level with a number of Schwarz smoothing steps. | |
| using | subdomain_preconditioners |
| using | schwarz_smoother |
| using | vars_tag = typename linear_solver::operand_tag |
| For the GMRES linear solver we need to apply the DG operator to its internal "operand" in every iteration of the algorithm. | |
| using | operator_applied_to_vars_tag |
| using | fluxes_vars_tag |
| The correction fluxes can be stored in an arbitrary tag. We don't need to access them anywhere, they're just a memory buffer for the linearized operator. | |
| using | observe_fields |
| Fields that may be observed to monitor the state of the solver. | |
| using | observed_reduction_data_tags |
| Collect all reduction tags for observers. | |
| template<bool Linearized> | |
| using | dg_operator |
| using | build_matrix |
| using | build_matrix_actions |
| using | init_analytic_solution_action |
| using | initialization_actions |
| using | register_actions |
| template<typename Label> | |
| using | smooth_actions |
| using | subdomain_init_tags |
| using | communicated_overlap_tags |
| This data needs to be communicated on subdomain overlap regions. | |
| using | init_subdomain_action |
| template<typename StepActions> | |
| using | linear_solve_actions |
| template<typename StepActions> | |
| using | nonlinear_solve_actions |
| template<typename StepActions> | |
| using | solve_actions |
| template<typename Tag> | |
| using | overlaps_tag |
| using | amr_projectors |
| using | component_list |
Static Public Attributes | |
| static constexpr size_t | volume_dim = Dim |
| static constexpr bool | is_linear |
A complete nonlinear elliptic solver stack. Use to compose an executable.
The elliptic solver stack is described in detail in [210].
Uses Metavariables to instantiate parallel components.
| using elliptic::Solver< Metavariables, Dim, System >::amr_iteration_id |
| using elliptic::Solver< Metavariables, Dim, System >::background_tag |
| using elliptic::Solver< Metavariables, Dim, System >::build_matrix |
| using elliptic::Solver< Metavariables, Dim, System >::build_matrix_actions |
| using elliptic::Solver< Metavariables, Dim, System >::communicated_overlap_tags |
This data needs to be communicated on subdomain overlap regions.
| using elliptic::Solver< Metavariables, Dim, System >::component_list |
| using elliptic::Solver< Metavariables, Dim, System >::dg_operator |
| using elliptic::Solver< Metavariables, Dim, System >::fluxes_vars_tag |
The correction fluxes can be stored in an arbitrary tag. We don't need to access them anywhere, they're just a memory buffer for the linearized operator.
| using elliptic::Solver< Metavariables, Dim, System >::init_analytic_solution_action |
| using elliptic::Solver< Metavariables, Dim, System >::init_subdomain_action |
| using elliptic::Solver< Metavariables, Dim, System >::initial_guess_tag |
| using elliptic::Solver< Metavariables, Dim, System >::initialization_actions |
| using elliptic::Solver< Metavariables, Dim, System >::linear_solve_actions |
| using elliptic::Solver< Metavariables, Dim, System >::linear_solver |
The linear solver algorithm. We use GMRES since the operator is not necessarily symmetric. Using CG here would be an optimization for symmetric problems.
| using elliptic::Solver< Metavariables, Dim, System >::linear_solver_iteration_id |
| using elliptic::Solver< Metavariables, Dim, System >::multigrid |
Precondition each linear solver iteration with a multigrid V-cycle.
| using elliptic::Solver< Metavariables, Dim, System >::nonlinear_solve_actions |
| using elliptic::Solver< Metavariables, Dim, System >::nonlinear_solver |
The nonlinear solver algorithm.
| using elliptic::Solver< Metavariables, Dim, System >::nonlinear_solver_iteration_id |
| using elliptic::Solver< Metavariables, Dim, System >::observe_fields |
Fields that may be observed to monitor the state of the solver.
| using elliptic::Solver< Metavariables, Dim, System >::observed_reduction_data_tags |
Collect all reduction tags for observers.
| using elliptic::Solver< Metavariables, Dim, System >::operator_applied_to_fields_tag |
| using elliptic::Solver< Metavariables, Dim, System >::operator_applied_to_vars_tag |
| using elliptic::Solver< Metavariables, Dim, System >::overlaps_tag |
| using elliptic::Solver< Metavariables, Dim, System >::register_actions |
| using elliptic::Solver< Metavariables, Dim, System >::schwarz_smoother |
| using elliptic::Solver< Metavariables, Dim, System >::smooth_actions |
| using elliptic::Solver< Metavariables, Dim, System >::subdomain_init_tags |
| using elliptic::Solver< Metavariables, Dim, System >::subdomain_operator |
Smooth each multigrid level with a number of Schwarz smoothing steps.
| using elliptic::Solver< Metavariables, Dim, System >::subdomain_preconditioners |
|
staticconstexpr |