15#ifndef dealii_petsc_ts_h
16#define dealii_petsc_ts_h
20#ifdef DEAL_II_WITH_PETSC
33# if defined(DEAL_II_HAVE_CXX20)
91 const std::string &
ts_type =
"",
324 typename AMatrixType = PMatrixType>
325# if defined(DEAL_II_HAVE_CXX20) && \
326 !defined(DEAL_II_DOXYGEN_DO_NOT_PARSE_REQUIRES_CLAUSES)
328 std::constructible_from<VectorType, Vec>) &&
330 std::constructible_from<PMatrixType, Mat>) &&
332 std::constructible_from<AMatrixType, Mat>))
348 const MPI_Comm mpi_comm = PETSC_COMM_WORLD);
461 solve(VectorType &y, AMatrixType &
A, PMatrixType &
P);
473 const VectorType &y_dot,
493 const VectorType &y_dot,
507 std::function<void(
const real_type t,
const VectorType &y, VectorType &res)>
538 const unsigned int step_number)>
562 const VectorType &ydot,
577 std::function<void(
const VectorType &src, VectorType &dst)>
622 const unsigned int step,
641 std::function<void(
const std::vector<VectorType> &all_in,
642 std::vector<VectorType> &all_out)>
real_type initial_step_size
real_type absolute_tolerance
std::string ts_adapt_type
void add_parameters(ParameterHandler &prm)
real_type relative_tolerance
real_type minimum_step_size
std::string options_prefix
bool ignore_algebraic_lte
real_type maximum_step_size
void reinit(const TimeStepperData &data)
std::exception_ptr pending_exception
unsigned int solve(VectorType &y, PMatrixType &P)
std::function< void(const real_type t, const unsigned int step, const VectorType &y, bool &resize)> decide_for_coarsening_and_refinement
real_type get_time_step()
void setup_algebraic_constraints(const VectorType &y)
std::function< void(const real_type t, const VectorType &y, const VectorType &y_dot, VectorType &res)> implicit_function
MPI_Comm get_mpi_communicator() const
std::function< void(const real_type t, const VectorType &y, AMatrixType &A, PMatrixType &P)> explicit_jacobian
unsigned int get_step_number()
TimeStepper(const TimeStepperData &data=TimeStepperData(), const MPI_Comm mpi_comm=PETSC_COMM_WORLD)
SmartPointer< AMatrixType, TimeStepper > A
unsigned int solve(VectorType &y, AMatrixType &A, PMatrixType &P)
std::function< void(const real_type t, const VectorType &y, const unsigned int step_number)> monitor
std::function< void(const real_type t, const VectorType &y, const VectorType &y_dot, const real_type alpha, AMatrixType &A, PMatrixType &P)> implicit_jacobian
std::function< IndexSet()> algebraic_components
std::function< void(const real_type t, VectorType &y)> distribute
std::function< void(const real_type t, const VectorType &y, const VectorType &ydot, const real_type alpha)> setup_jacobian
SmartPointer< PMatrixType, TimeStepper > P
std::function< void(const real_type t, const VectorType &y, VectorType &res)> explicit_function
unsigned int solve(VectorType &y)
std::function< void(const VectorType &src, VectorType &dst)> solve_with_jacobian
void set_matrices(AMatrixType &A, PMatrixType &P)
PreconditionShell solve_with_jacobian_pc
std::function< void(const std::vector< VectorType > &all_in, std::vector< VectorType > &all_out)> interpolate
void set_matrix(PMatrixType &P)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
TimeStepperData(const std::string &options_prefix="", const std::string &ts_type="", const real_type initial_time=0.0, const real_type final_time=0.0, const real_type initial_step_size=0.0, const int max_steps=-1, const bool match_step=false, const bool restart_if_remesh=false, const std::string &ts_adapt_type="none", const real_type minimum_step_size=-1.0, const real_type maximum_step_size=-1.0, const real_type absolute_tolerance=-1.0, const real_type relative_tolerance=-1.0, const bool ignore_algebraic_lte=true)