([&]()
{
using namespace functor_dsl;
auto wantedLatticeF = restrict(wantedF.toShared(), sLattice);
return norm(wantedLatticeF - f.toShared(), indicatorF.toShared())
/ norm
(wantedLatticeF, indicatorF.toShared());
}())
{
this->getName() = "relErrorNormL" + std::to_string(P);
}
template
template
SuperRelativeErrorLpNorm3D::SuperRelativeErrorLpNorm3D(
SuperLatticeF3D& f,
FunctorPtr>&& wantedF,
FunctorPtr>&& indicatorF)
: SuperRelativeErrorLpNorm3D(f.getSuperLattice(),
f,
std::forward(wantedF),
std::forward(indicatorF))
{ }
template
template
SuperAbsoluteErrorLpNorm3D::SuperAbsoluteErrorLpNorm3D(
SuperLattice3D& sLattice,
FunctorPtr>&& f,
FunctorPtr>&& wantedF,
FunctorPtr>&& indicatorF)
: SuperIdentity3D([&]()
{
using namespace functor_dsl;
return norm(restrict(wantedF.toShared(), sLattice) - f.toShared(),
indicatorF.toShared());
}())
{
this->getName() = "absErrorNormL" + std::to_string(P);
}
template
template
SuperAbsoluteErrorLpNorm3D::SuperAbsoluteErrorLpNorm3D(
SuperLatticeF3D& f,
FunctorPtr>&& wantedF,
FunctorPtr>&& indicatorF)
: SuperAbsoluteErrorLpNorm3D(f.getSuperLattice(),
f,
std::forward(wantedF),
std::forward(indicatorF))
{ }
}
#endif