From 5893befcc2cc5e36b35d918ecb91361034339954 Mon Sep 17 00:00:00 2001 From: guido Date: Thu, 29 Jun 2000 19:59:41 +0000 Subject: [PATCH] SquareFunction git-svn-id: https://svn.dealii.org/trunk@3103 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/base/source/function_lib.cc | 114 ++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/deal.II/base/source/function_lib.cc b/deal.II/base/source/function_lib.cc index b33804a119..5dfefbf5c1 100644 --- a/deal.II/base/source/function_lib.cc +++ b/deal.II/base/source/function_lib.cc @@ -30,8 +30,117 @@ +template +double +SquareFunction::value (const Point &p, + const unsigned int) const +{ + return p.square(); +} + + + +template +void +SquareFunction::value_list (const vector > &points, + vector &values, + const unsigned int) const +{ + Assert (values.size() == points.size(), + ExcDimensionMismatch(values.size(), points.size())); + + for (unsigned int i=0;i& p = points[i]; + values[i] = p.square(); + } +} +template +double +SquareFunction::laplacian (const Point &, + const unsigned int) const +{ + return 2*dim; +} + + +template +void +SquareFunction::laplacian_list (const vector > &points, + vector &values, + const unsigned int) const +{ + Assert (values.size() == points.size(), + ExcDimensionMismatch(values.size(), points.size())); + + for (unsigned int i=0;i +Tensor<1,dim> +SquareFunction::gradient (const Point &p, + const unsigned int) const +{ + Tensor<1,dim> result; + switch(dim) + { + case 1: + result[0] = 2.*p(0); + break; + case 2: + result[0] = 2.*p(0); + result[1] = 2.*p(1); + break; + case 3: + result[0] = 2.*p(0); + result[1] = 2.*p(1); + result[2] = 2.*p(2); + break; + default: + Assert(false, ExcNotImplemented()); + } + return result; +} + +template +void +SquareFunction::gradient_list (const vector > &points, + vector > &gradients, + const unsigned int) const +{ + Assert (gradients.size() == points.size(), + ExcDimensionMismatch(gradients.size(), points.size())); + + for (unsigned int i=0;i& p = points[i]; + switch(dim) + { + case 1: + gradients[i][0] = 2.*p(0); + break; + case 2: + gradients[i][0] = 2.*p(0); + gradients[i][1] = 2.*p(1); + break; + case 3: + gradients[i][0] = 2.*p(0); + gradients[i][1] = 2.*p(1); + gradients[i][2] = 2.*p(2); + break; + default: + Assert(false, ExcNotImplemented()); + } + } +} + +////////////////////////////////////////////////////////////////////// + template double PillowFunction::value (const Point &p, @@ -80,6 +189,8 @@ PillowFunction::value_list (const vector > &points, } } + + template double PillowFunction::laplacian (const Point &p, @@ -685,6 +796,9 @@ SlitSingularityFunction::gradient_list (const vector > &points, ////////////////////////////////////////////////////////////////////// +template SquareFunction<1>; +template SquareFunction<2>; +template SquareFunction<3>; template PillowFunction<1>; template PillowFunction<2>; template PillowFunction<3>; -- 2.39.5