]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
add missing implementations
authorkanschat <kanschat@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 24 Sep 2010 14:26:41 +0000 (14:26 +0000)
committerkanschat <kanschat@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 24 Sep 2010 14:26:41 +0000 (14:26 +0000)
git-svn-id: https://svn.dealii.org/trunk@22142 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/base/include/base/function_lib.h
deal.II/base/source/function.cc
deal.II/base/source/function_lib.cc

index e873f1d4dd3285f557ab2f53150776de2752e5a6..045809c60a25238247593f0ddc23c3fb7cf57707 100644 (file)
@@ -46,41 +46,22 @@ namespace Functions
   class SquareFunction : public Function<dim>
   {
     public:
-                                      /**
-                                       * Function value at one point.
-                                       */
       virtual double value (const Point<dim>   &p,
-                           const unsigned int  component = 0) const;
-      
-                                      /**
-                                       * Function values at multiple points.
-                                       */
+                           const unsigned int  component = 0) const;      
+      virtual void vector_value (const Point<dim>   &p,
+                                Vector<double>     &values) const;
       virtual void value_list (const std::vector<Point<dim> > &points,
                               std::vector<double>            &values,
                               const unsigned int              component = 0) const;
-      
-                                      /**
-                                       * Gradient at one point.
-                                       */
       virtual Tensor<1,dim> gradient (const Point<dim>   &p,
                                      const unsigned int  component = 0) const;
-      
-                                      /**
-                                         Gradients at multiple points.
-                                      */
+      virtual void vector_gradient (const Point<dim>   &p,
+                                   std::vector<Tensor<1,dim> >    &gradient) const;
       virtual void gradient_list (const std::vector<Point<dim> > &points,
                                  std::vector<Tensor<1,dim> >    &gradients,
                                  const unsigned int              component = 0) const;
-      
-                                      /**
-                                       * Laplacian of the function at one point.
-                                       */
       virtual double laplacian (const Point<dim>   &p,
                                const unsigned int  component = 0) const;
-      
-                                      /**
-                                       * Laplacian of the function at multiple points.
-                                       */
       virtual void laplacian_list (const std::vector<Point<dim> > &points,
                                   std::vector<double>            &values,
                                   const unsigned int              component = 0) const;
index d8b029ed3840fb7566e5b55d596c139a97ceb56e..ac2a5faef81fbc4f9c197a9bbf2b5f269d307164 100644 (file)
@@ -66,10 +66,13 @@ double Function<dim>::value (const Point<dim> &,
 
 
 template <int dim>
-void Function<dim>::vector_value (const Point<dim> &,
-                                 Vector<double>   &) const
+void Function<dim>::vector_value (
+  const Point<dim>& p,
+  Vector<double>& v) const
 {
-  Assert (false, ExcPureFunctionCalled());
+  AssertDimension(v.size(), this->n_components);
+  for (unsigned int i=0;i<this->n_components;++i)
+    v(i) = value(p, i);
 }
 
 
@@ -114,10 +117,13 @@ Tensor<1,dim> Function<dim>::gradient (const Point<dim> &,
 
 
 template <int dim>
-void Function<dim>::vector_gradient (const Point<dim>       &,
-                                    std::vector<Tensor<1,dim> > &) const
+void Function<dim>::vector_gradient (
+  const Point<dim>& p,
+  std::vector<Tensor<1,dim> >& v) const
 {
-  Assert (false, ExcPureFunctionCalled());
+  AssertDimension(v.size(), this->n_components);
+  for (unsigned int i=0;i<this->n_components;++i)
+    v[i] = gradient(p, i);
 }
 
 
index 67fe4af5ecf6ded2f8ba5b0634f50ab1a1a6b908..11248ef0354a1ff56203b073fbc39f96d9dd0d6a 100644 (file)
@@ -44,8 +44,18 @@ namespace Functions
   {
     return p.square();
   }
+
   
-  
+  template<int dim>
+  void
+  SquareFunction<dim>::vector_value (const Point<dim>   &p,
+                                    Vector<double>     &values) const
+  {
+    AssertDimension(values.size(), 1);
+    values(0) = p.square();
+  }
+
+
   template<int dim>
   void
   SquareFunction<dim>::value_list (const std::vector<Point<dim> > &points,
@@ -92,11 +102,22 @@ namespace Functions
   SquareFunction<dim>::gradient (const Point<dim>   &p,
                                 const unsigned int) const
   {
-    return p*2;
+    return p*2.;
   }
   
   
-  
+  template<int dim>
+  void
+  SquareFunction<dim>::vector_gradient (
+    const Point<dim>& p,
+    std::vector<Tensor<1,dim> >& values) const
+  {
+    AssertDimension(values.size(), 1);
+    values[0] = p*2.;
+  }
+
+
   template<int dim>
   void
   SquareFunction<dim>::gradient_list (const std::vector<Point<dim> > &points,
@@ -918,7 +939,7 @@ namespace Functions
 
   Tensor<1,2>
   LSingularityFunction::gradient (const Point<2>   &p,
-                                     const unsigned int d) const
+                                 const unsigned int) const
   {
     double x = p(0);
     double y = p(1);

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.