35 typename T::problem_type;
38 typename T::variable_type;
39 requires std::is_same_v<
typename T::variable_type,
40 typename T::problem_type::variable_type>;
42 typename T::scalar_type;
43 requires std::is_same_v<
typename T::scalar_type,
44 typename T::problem_type::scalar_type>;
46 requires requires(
const typename T::scalar_type& inverted_jacobian_coeff) {
47 T(inverted_jacobian_coeff);
50 requires requires(T& obj,
typename T::problem_type&
problem,
51 const typename T::scalar_type& time,
52 const typename T::scalar_type& step_size,
53 const typename T::variable_type& variable) {
54 obj.evaluate_and_update_jacobian(
problem, time, step_size, variable);
57 requires requires(T& obj,
const typename T::variable_type& target,
58 typename T::variable_type& result) {
59 obj.apply_jacobian(target, result);
62 requires requires(T& obj,
const typename T::scalar_type& step_size,
63 const typename T::scalar_type& coeff,
64 typename T::variable_type& target) {
65 obj.add_time_derivative_term(step_size, coeff, target);
68 requires requires(T& obj,
const typename T::variable_type& rhs,
69 typename T::variable_type& result) { obj.solve(rhs, result); };