51 enum { dim = GridView::dimension };
52 using ctype =
typename GridView::ctype;
53 using Element =
typename GridView::template Codim<0>::Entity;
55 using ScalarBuffer = BaseOutputWriter::ScalarBuffer;
59 const GridView& gridView,
61 const ScalarBuffer&
buf,
68 {
assert(
int(buf_.size()) ==
int(mapper_.size())); }
70 virtual std::string name()
const
73 virtual int ncomps()
const
76 virtual double evaluate(
int,
78 const Dune::FieldVector<ctype, dim>&
xi)
const
83 idx =
static_cast<unsigned>(mapper_.index(
e));
85 else if (codim_ == dim) {
90 Dune::GeometryType
gt =
e.type();
91 int n =
static_cast<int>(
e.subEntities(dim));
92 for (
int i = 0; i <
n; ++i) {
93 Dune::FieldVector<ctype, dim> local =
94 Dune::ReferenceElements<ctype, dim>::general(
gt).position(i, dim);
97 if (local.infinity_norm() <
min) {
98 min = local.infinity_norm();
99 imin =
static_cast<int>(i);
104 idx =
static_cast<unsigned>(mapper_.subIndex(
e,
imin, codim_));
107 throw std::logic_error(
"Only element and vertex based vector fields are"
108 " supported so far.");
110 return static_cast<double>(
static_cast<float>(buf_[
idx]));
114 const std::string name_;
115 const GridView gridView_;
116 const Mapper& mapper_;
117 const ScalarBuffer& buf_;
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:242