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 prescribe_initial_conditions(VectorType & src,
double const evaluation_time)
const = 0;
89 calculate_time_step_max_efficiency(
unsigned int const order_time_integrator)
const = 0;
93 calculate_time_step_cfl_global(
double const time)
const = 0;
97 calculate_time_step_cfl_analytical_velocity(
double const time)
const = 0;
100 calculate_time_step_cfl_numerical_velocity(VectorType
const & velocity)
const = 0;
104 calculate_time_step_diffusion()
const = 0;
112 typedef dealii::LinearAlgebra::distributed::Vector<Number> VectorType;
115 bool const numerical_velocity_field_in)
116 : pde_operator(operator_in), numerical_velocity_field(numerical_velocity_field_in)
118 if(numerical_velocity_field)
119 initialize_dof_vector_velocity(velocity_interpolated);
123 set_velocities_and_times(std::vector<VectorType const *>
const & velocities_in,
124 std::vector<double>
const & times_in)
126 velocities = velocities_in;
131 evaluate(VectorType & dst, VectorType
const & src,
double const evaluation_time)
const
133 if(numerical_velocity_field)
135 interpolate(velocity_interpolated, evaluation_time, velocities, times);
137 pde_operator->evaluate_explicit_time_int(dst, src, evaluation_time, &velocity_interpolated);
141 pde_operator->evaluate_explicit_time_int(dst, src, evaluation_time);
146 initialize_dof_vector(VectorType & src)
const
148 pde_operator->initialize_dof_vector(src);
152 initialize_dof_vector_velocity(VectorType & src)
const
154 pde_operator->initialize_dof_vector_velocity(src);
158 std::shared_ptr<ConvDiff::Interface::Operator<Number>> pde_operator;
160 bool numerical_velocity_field;
161 std::vector<VectorType const *> velocities;
162 std::vector<double> times;
163 VectorType
mutable velocity_interpolated;