HasExtractorPoint Concept Reference#

DiFfRG: DiFfRG::HasExtractorPoint Concept Reference
DiFfRG
Discretization Framework for functional Renormalization Group flows
DiFfRG::HasExtractorPoint Concept Reference

Whether Model chooses its own point at which the extractors are evaluated. More...

#include <solution_sample.hh>

Concept definition

template<typename Model, int dim, typename NumberType>
concept DiFfRG::HasExtractorPoint = requires(const Model &model, const dealii::Point<dim> &EoM,
const SolutionSample<dim, NumberType> &sample) {
{ model.template extractor_point<dim, NumberType>(EoM, sample) } -> std::convertible_to<dealii::Point<dim>>;
}
Whether Model chooses its own point at which the extractors are evaluated.
Definition solution_sample.hh:137

Detailed Description

Whether Model chooses its own point at which the extractors are evaluated.

By default the extractors are evaluated at the EoM, i.e. the minimum of the potential reconstructed from Model::EoM (see discretization/common/eom.hh). A model that needs them somewhere else declares

template <int dim, typename NT>
Point<dim> extractor_point(const Point<dim> &EoM, const SolutionSample<dim, NT> &sample) const;

and returns whatever point it likes – typically after inspecting sample for a feature that is not expressible pointwise, such as a shock or a kink. Returning EoM reproduces the default exactly.

This affects Model::extract only. Model::readouts keeps being evaluated at the EoM supplied by readouts_multiple, so a model can report at the minimum while feeding its Variables from somewhere else entirely.

Note that DiFfRG::def::AbstractModel deliberately provides no default implementation: the absence of the method is what this concept detects, and it is what lets an assembler skip building the sample for the models – almost all of them – that do not need one.