21 #ifndef _aspect_solution_evaluator_h 22 #define _aspect_solution_evaluator_h 29 #include <deal.II/base/array_view.h> 30 #include <deal.II/matrix_free/fe_point_evaluation.h> 31 #include <deal.II/non_matching/mapping_info.h> 32 #include <deal.II/dofs/dof_handler.h> 50 : first_component (first_component),
51 n_components (n_components)
65 virtual void evaluate(
const ArrayView<double> &solution_values,
66 const EvaluationFlags::EvaluationFlags flags) = 0;
73 get_gradient(
const unsigned int evaluation_point)
const = 0;
82 const ArrayView<Tensor<1,dim>> &gradients)
const = 0;
89 get_value(
const unsigned int evaluation_point)
const = 0;
97 get_value(
const unsigned int evaluation_point,
98 const ArrayView<double> &solution)
const = 0;
148 const UpdateFlags update_flags);
155 reinit(
const typename DoFHandler<dim>::active_cell_iterator &cell,
156 const ArrayView<Point<dim>> &positions);
168 evaluate(
const ArrayView<double> &solution_values,
169 const std::vector<EvaluationFlags::EvaluationFlags> &evaluation_flags);
183 void get_solution(
const unsigned int evaluation_point,
184 const ArrayView<double> &solution,
185 const std::vector<EvaluationFlags::EvaluationFlags> &evaluation_flags)
const;
199 void get_gradients(
const unsigned int evaluation_point,
200 const ArrayView<Tensor<1, dim>> &gradients,
201 const std::vector<EvaluationFlags::EvaluationFlags> &evaluation_flags)
const;
207 FEPointEvaluation<dim, dim> &
208 get_velocity_or_fluid_velocity_evaluator(
const bool use_fluid_velocity);
213 NonMatching::MappingInfo<dim> &
234 std::unique_ptr<FEPointEvaluation<1, dim>>
pressure;
241 std::vector<std::unique_ptr<internal::DynamicFEPointEvaluation<dim>>>
compositions;
272 std::unique_ptr<SolutionEvaluator<dim>>
274 const UpdateFlags update_flags);
DynamicFEPointEvaluation(const unsigned int first_component, const unsigned int n_components)
virtual void evaluate(const ArrayView< double > &solution_values, const EvaluationFlags::EvaluationFlags flags)=0
virtual unsigned int get_n_components() const final
std::unique_ptr< FEPointEvaluation< 1, dim > > compaction_pressure
FEPointEvaluation< dim, dim > velocity
FEPointEvaluation< 1, dim > temperature
std::array< unsigned int, 3 > melt_component_indices
unsigned int n_components
unsigned int first_component
std::unique_ptr< FEPointEvaluation< dim, dim > > fluid_velocity
NonMatching::MappingInfo< dim > mapping_info
virtual small_vector< Tensor< 1, dim > > get_gradient(const unsigned int evaluation_point) const =0
std::unique_ptr< FEPointEvaluation< 1, dim > > pressure
virtual unsigned int get_first_component() const final
boost::container::small_vector< T, N > small_vector
virtual small_vector< double > get_value(const unsigned int evaluation_point) const =0
std::unique_ptr< FEPointEvaluation< 1, dim > > fluid_pressure
const SimulatorAccess< dim > & simulator_access
std::vector< std::unique_ptr< internal::DynamicFEPointEvaluation< dim > > > compositions
std::unique_ptr< SolutionEvaluator< dim > > construct_solution_evaluator(const SimulatorAccess< dim > &simulator_access, const UpdateFlags update_flags)
virtual ~DynamicFEPointEvaluation()=default