SpECTRE  v2024.05.11
imex::SolveImplicitSector< SystemVariablesTag, ImplicitSector > Struct Template Reference

Perform the implicit solve for one implicit sector. More...

#include <SolveImplicitSector.hpp>

Public Types

using SystemVariables = typename SystemVariablesTag::type
 
using SectorVariables = Variables< typename ImplicitSector::tensors >
 
using return_tags = tmpl::list< SystemVariablesTag, imex::Tags::ImplicitHistory< ImplicitSector >, Tags::SolveFailures< ImplicitSector > >
 
using argument_tags = tmpl::append< tmpl::list<::Tags::TimeStepper< ImexTimeStepper >, ::Tags::TimeStep, Tags::Mode, Tags::SolveTolerance >, tmpl::join< evolution_data_tags > >
 

Static Public Member Functions

template<typename... ForwardArgs>
static void apply (const gsl::not_null< SystemVariables * > system_variables, const gsl::not_null< TimeSteppers::History< SectorVariables > * > implicit_history, const gsl::not_null< Scalar< DataVector > * > solve_failures, const ImexTimeStepper &time_stepper, const TimeDelta &time_step, const Mode implicit_solve_mode, const double implicit_solve_tolerance, const ForwardArgs &... forward_args)
 

Detailed Description

template<typename SystemVariablesTag, typename ImplicitSector>
struct imex::SolveImplicitSector< SystemVariablesTag, ImplicitSector >

Perform the implicit solve for one implicit sector.

This will update the tensors in the implicit sector and clean up the corresponding time stepper history. A new history entry is not added, because that should be done with the same values of the variables used for the explicit portion of the time derivative, which may still undergo variable-fixing-like corrections.

Warning
This will use the value of Tags::Time from the DataBox. Most of the time, the value appropriate for evaluating the explicit RHS is stored there, so it will likely need to be set to the appropriate value for the implicit RHS for the duration of this mutation.

The documentation for this struct was generated from the following file: