From 109bc227613d00d162e6c942f18618f997c7494f Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Thu, 8 Sep 2011 18:00:17 +0200 Subject: [PATCH] Do not inherit from Nonlinearity Necessitates implementation of directionDomain --- src/mynonlinearity.cc | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/src/mynonlinearity.cc b/src/mynonlinearity.cc index 243baa4e..7c068104 100644 --- a/src/mynonlinearity.cc +++ b/src/mynonlinearity.cc @@ -7,24 +7,24 @@ #include <dune/common/fvector.hh> #include <dune/common/fmatrix.hh> -#include <dune/istl/bcrsmatrix.hh> #include <dune/istl/bvector.hh> #include <dune/fufem/interval.hh> -#include <dune/tnnmg/problem-classes/nonlinearity.hh> - #include "properscalarincreasingconvexfunction.hh" +#include <limits> + template <int dimension, class OuterFunction = TrivialFunction> -class MyNonlinearity - : public Nonlinearity<Dune::FieldVector<double, dimension>, - Dune::FieldMatrix<double, dimension, dimension>> { +class MyNonlinearity { public: typedef Dune::FieldVector<double, dimension> SmallVector; typedef Dune::FieldMatrix<double, dimension, dimension> SmallMatrix; - void directionalSubDiff(SmallVector u, SmallVector v, Interval<double> &D) { + typedef Dune::BlockVector<SmallVector> VectorType; + typedef Dune::BlockVector<SmallMatrix> MatrixType; + + void directionalSubDiff(SmallVector u, SmallVector v, Interval<double>& D) { if (u == SmallVector(0.0)) { D[0] = D[1] = func_.rightDifferential(0); } else if (u * v > 0) { @@ -36,17 +36,11 @@ class MyNonlinearity } } - double operator()(const Dune::BlockVector<SmallVector> &) const { return 3; } - void addGradient(const Dune::BlockVector<SmallVector> &, - Dune::BlockVector<SmallVector> &) const {} - void addHessian(const Dune::BlockVector<SmallVector> &, - Dune::BCRSMatrix<SmallMatrix> &) const {} - void addHessianIndices(Dune::MatrixIndexSet &) const {} - void setVector(const Dune::BlockVector<SmallVector> &) {} - void updateEntry(int, double, int) {} - void subDiff(int, double, Interval<double> &, int) const {} - double regularity(int, double, int) const { return 3; } - void domain(int, Interval<double> &, int) const {} + void directionalDomain(const VectorType&, const VectorType&, + Interval<double>& dom) const { + dom[0] = std::numeric_limits<double>::min(); + dom[1] = std::numeric_limits<double>::max(); + } OuterFunction func_; }; -- GitLab