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 =
"",
328 typename AMatrixType = PMatrixType>
329# if defined(DEAL_II_HAVE_CXX20) && \
330 !defined(DEAL_II_DOXYGEN_DO_NOT_PARSE_REQUIRES_CLAUSES)
332 std::constructible_from<VectorType, Vec>) &&
334 std::constructible_from<PMatrixType, Mat>) &&
336 std::constructible_from<AMatrixType, Mat>))
352 const MPI_Comm mpi_comm = PETSC_COMM_WORLD);
465 solve(VectorType &y, AMatrixType &
A, PMatrixType &
P);
477 const VectorType &y_dot,
497 const VectorType &y_dot,
511 std::function<void(
const real_type t,
const VectorType &y, VectorType &res)>
542 const unsigned int step_number)>
566 const VectorType &ydot,
581 std::function<void(
const VectorType &src, VectorType &dst)>
641 std::function<void(
const real_type t, VectorType &y)>
653 const unsigned int step,
678 bool(
const real_type t,
const unsigned int step,
const VectorType &y)>
686 std::function<void(
const std::vector<VectorType> &all_in,
687 std::vector<VectorType> &all_out)>
706 const std::vector<VectorType> &all_in,
707 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, VectorType &y)> update_constrained_components
std::function< void(const real_type t, const std::vector< VectorType > &all_in, std::vector< VectorType > &all_out)> transfer_solution_vectors_to_new_mesh
std::function< void(const real_type t, const VectorType &y, AMatrixType &A, PMatrixType &P)> explicit_jacobian
std::function< bool(const real_type t, const unsigned int step, const VectorType &y)> decide_and_prepare_for_remeshing
unsigned int get_step_number()
TimeStepper(const TimeStepperData &data=TimeStepperData(), const MPI_Comm mpi_comm=PETSC_COMM_WORLD)
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
ObserverPointer< PMatrixType, TimeStepper > P
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
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
ObserverPointer< AMatrixType, TimeStepper > A
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_DEPRECATED
#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)
std::vector< index_type > data