41 typedef dealii::LinearAlgebra::distributed::Vector<Number> VectorType;
53 evaluate_explicit_time_int(VectorType & dst,
54 VectorType
const & src,
55 double const evaluation_time,
56 VectorType
const * velocity =
nullptr)
const = 0;
61 double const evaluation_time = 0.0,
62 VectorType
const * velocity =
nullptr)
const = 0;
66 solve(VectorType & sol,
67 VectorType
const & rhs,
68 bool const update_preconditioner,
69 double const scaling_factor = -1.0,
70 double const evaluation_time = -1.0,
71 VectorType
const * velocity =
nullptr) = 0;
75 initialize_dof_vector(VectorType & src)
const = 0;
78 initialize_dof_vector_velocity(VectorType & src)
const = 0;
81 project_velocity(VectorType & velocity,
double const time)
const = 0;
85 serialize_vectors(std::vector<VectorType const *>
const & vectors)
const = 0;
88 deserialize_vectors(std::vector<VectorType *>
const & vectors) = 0;
92 prescribe_initial_conditions(VectorType & src,
double const evaluation_time)
const = 0;
96 calculate_time_step_max_efficiency(
unsigned int const order_time_integrator)
const = 0;
100 calculate_time_step_cfl_global(
double const time)
const = 0;
104 calculate_time_step_cfl_analytical_velocity(
double const time)
const = 0;
107 calculate_time_step_cfl_numerical_velocity(VectorType
const & velocity)
const = 0;
111 calculate_time_step_diffusion()
const = 0;
119 typedef dealii::LinearAlgebra::distributed::Vector<Number> VectorType;
122 bool const numerical_velocity_field_in)
123 : pde_operator(operator_in), numerical_velocity_field(numerical_velocity_field_in)
125 if(numerical_velocity_field)
126 initialize_dof_vector_velocity(velocity_interpolated);
130 set_velocities_and_times(std::vector<VectorType const *>
const & velocities_in,
131 std::vector<double>
const & times_in)
133 velocities = velocities_in;
138 evaluate(VectorType & dst, VectorType
const & src,
double const evaluation_time)
const
140 if(numerical_velocity_field)
142 interpolate(velocity_interpolated, evaluation_time, velocities, times);
144 pde_operator->evaluate_explicit_time_int(dst, src, evaluation_time, &velocity_interpolated);
148 pde_operator->evaluate_explicit_time_int(dst, src, evaluation_time);
153 initialize_dof_vector(VectorType & src)
const
155 pde_operator->initialize_dof_vector(src);
159 initialize_dof_vector_velocity(VectorType & src)
const
161 pde_operator->initialize_dof_vector_velocity(src);
165 std::shared_ptr<ConvDiff::Interface::Operator<Number>> pde_operator;
167 bool numerical_velocity_field;
168 std::vector<VectorType const *> velocities;
169 std::vector<double> times;
170 VectorType
mutable velocity_interpolated;