]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
The documentation was inconsistent about what the FourierCosineFunction and related...
authorwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 18 Sep 2001 10:57:41 +0000 (10:57 +0000)
committerwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 18 Sep 2001 10:57:41 +0000 (10:57 +0000)
git-svn-id: https://svn.dealii.org/trunk@5022 0785d39b-7218-0410-832d-ea1e28bc413d

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

index 858ffdd8507b3c68d7992eff1ebd0a74811f77ca..11214eaa2f8830c8ad10e6824f97d19c57f36cd3 100644 (file)
@@ -540,7 +540,7 @@ namespace Functions
  * Given a wavenumber vector generate a cosine function. The
  * wavenumber coefficient is given as a @p{d}-dimensional point @p{k}
  * in Fourier space, and the function is then recovered as @p{f(x) =
- * \prod_i cos(k_i x_i) = Re(\exp(i k.x))}.
+ * cos(\sum_i k_i x_i) = Re(\exp(i k.x))}.
  *
  * The class has its name from the fact that it resembles one
  * component of a Fourier cosine decomposition.
@@ -599,7 +599,7 @@ namespace Functions
  * Given a wavenumber vector generate a sine function. The
  * wavenumber coefficient is given as a @p{d}-dimensional point @p{k}
  * in Fourier space, and the function is then recovered as @p{f(x) =
- * \prod_i sin(k_i x_i) = Im(\exp(i k.x))}.
+ * sin(\sum_i k_i x_i) = Im(\exp(i k.x))}.
  *
  * The class has its name from the fact that it resembles one
  * component of a Fourier sine decomposition.
@@ -658,7 +658,7 @@ namespace Functions
  * of sine functions. Each wavenumber coefficient is given as a
  * @p{d}-dimensional point @p{k} in Fourier space, and the entire
  * function is then recovered as
- * @p{f(x) = \sum_j w_j \prod_i sin(k_i x_i) = Im(\sum_j w_j \exp(i k.x))}.
+ * @p{f(x) = \sum_j w_j sin(\sum_i k_i x_i) = Im(\sum_j w_j \exp(i k.x))}.
  *
  * @author Wolfgang Bangerth, 2001
  */
@@ -724,7 +724,7 @@ namespace Functions
  * of cosine functions. Each wavenumber coefficient is given as a
  * @p{d}-dimensional point @p{k} in Fourier space, and the entire
  * function is then recovered as
- * @p{f(x) = \sum_j w_j \prod_i cos(k_i x_i) = Re(\sum_j w_j \exp(i k.x))}.
+ * @p{f(x) = \sum_j w_j cos(\sum_i k_i x_i) = Re(\sum_j w_j \exp(i k.x))}.
  *
  * @author Wolfgang Bangerth, 2001
  */
index 1917c57624b1984bb5e363b37cd58e66abfce549..3ce089862b8767264a7d864415449b597a07bd03 100644 (file)
@@ -1119,7 +1119,7 @@ namespace Functions
   
   
   
-/* ---------------------- FourierSineFunction ----------------------- */
+/* ---------------------- FourierCosineFunction ----------------------- */
   
   
   template <int dim>
@@ -1138,10 +1138,7 @@ namespace Functions
                                     const unsigned int  component) const
   {
     Assert (component==0, ExcIndexRange(component,0,1));
-    double val=1;
-    for (unsigned int i=0; i<dim; ++i)
-      val *= std::cos(fourier_coefficients[i] * p[i]);
-    return val;
+    return std::cos(fourier_coefficients * p);
   };
   
   
@@ -1152,23 +1149,7 @@ namespace Functions
                                        const unsigned int  component) const
   {
     Assert (component==0, ExcIndexRange(component,0,1));
-    Tensor<1,dim> grad;
-    for (unsigned int i=0; i<dim; ++i)
-      grad[i] = 1;
-    
-    for (unsigned int i=0; i<dim; ++i)
-      {
-       const double cos_i = std::cos(fourier_coefficients[i] * p[i]);
-       const double sin_i = std::sin(fourier_coefficients[i] * p[i]);
-       
-       for (unsigned int d=0; d<dim; ++d)
-         if (d==i)
-           grad[d] *= - fourier_coefficients[i] * sin_i;
-         else
-           grad[d] *= cos_i;
-      };
-    
-    return grad;
+    return -fourier_coefficients * std::sin(fourier_coefficients * p);
   };
   
   
@@ -1179,10 +1160,7 @@ namespace Functions
                                         const unsigned int  component) const
   {
     Assert (component==0, ExcIndexRange(component,0,1));
-    double val = -(fourier_coefficients*fourier_coefficients);
-    for (unsigned int i=0; i<dim; ++i)
-      val *= std::cos(fourier_coefficients[i] * p[i]);
-    return val;
+    return fourier_coefficients.square() * (-std::cos(fourier_coefficients * p));
   };
   
   
@@ -1208,10 +1186,7 @@ namespace Functions
                                   const unsigned int  component) const
   {
     Assert (component==0, ExcIndexRange(component,0,1));
-    double val=1;
-    for (unsigned int i=0; i<dim; ++i)
-      val *= std::sin(fourier_coefficients[i] * p[i]);
-    return val;
+    return std::sin(fourier_coefficients * p);
   };
   
   
@@ -1222,23 +1197,7 @@ namespace Functions
                                      const unsigned int  component) const
   {
     Assert (component==0, ExcIndexRange(component,0,1));
-    Tensor<1,dim> grad;
-    for (unsigned int i=0; i<dim; ++i)
-      grad[i] = 1;
-    
-    for (unsigned int i=0; i<dim; ++i)
-      {
-       const double cos_i = std::cos(fourier_coefficients[i] * p[i]);
-       const double sin_i = std::sin(fourier_coefficients[i] * p[i]);
-       
-       for (unsigned int d=0; d<dim; ++d)
-         if (d==i)
-           grad[d] *= fourier_coefficients[i] * cos_i;
-         else
-           grad[d] *= sin_i;
-      };
-    
-    return grad;
+    return fourier_coefficients * std::cos(fourier_coefficients * p);
   };
   
   
@@ -1249,10 +1208,7 @@ namespace Functions
                                       const unsigned int  component) const
   {
     Assert (component==0, ExcIndexRange(component,0,1));
-    double val = -(fourier_coefficients*fourier_coefficients);
-    for (unsigned int i=0; i<dim; ++i)
-      val *= std::sin(fourier_coefficients[i] * p[i]);
-    return val;
+    return fourier_coefficients.square() * (-std::sin(fourier_coefficients * p));
   };
   
 
@@ -1288,12 +1244,7 @@ namespace Functions
     const unsigned int n = weights.size();
     double sum = 0;
     for (unsigned int s=0; s<n; ++s)
-      {
-       double val=1;
-       for (unsigned int i=0; i<dim; ++i)
-         val *= std::sin(fourier_coefficients[s][i] * p[i]);
-       sum += weights[s] * val;
-      };
+      sum += weights[s] * std::sin(fourier_coefficients[s] * p);
     
     return sum;
   };
@@ -1310,26 +1261,7 @@ namespace Functions
     const unsigned int n = weights.size();
     Tensor<1,dim> sum;
     for (unsigned int s=0; s<n; ++s)
-      {
-       Tensor<1,dim> grad;
-       for (unsigned int i=0; i<dim; ++i)
-         grad[i] = 1;
-    
-       for (unsigned int i=0; i<dim; ++i)
-         {
-           const double cos_i = std::cos(fourier_coefficients[s][i] * p[i]);
-           const double sin_i = std::sin(fourier_coefficients[s][i] * p[i]);
-           
-           for (unsigned int d=0; d<dim; ++d)
-             if (d==i)
-               grad[d] *= fourier_coefficients[s][i] * cos_i;
-             else
-               grad[d] *= sin_i;
-         };
-       
-       grad *= weights[s];
-       sum += grad;
-      };
+      sum += fourier_coefficients[s] * std::cos(fourier_coefficients[s] * p);
     
     return sum;
   };
@@ -1346,12 +1278,7 @@ namespace Functions
     const unsigned int n = weights.size();
     double sum = 0;
     for (unsigned int s=0; s<n; ++s)
-      {
-       double val = -(fourier_coefficients[s]*fourier_coefficients[s]);
-       for (unsigned int i=0; i<dim; ++i)
-         val *= std::sin(fourier_coefficients[s][i] * p[i]);
-       sum += val * weights[s];
-      };
+      sum -= fourier_coefficients[s].square() * std::sin(fourier_coefficients[s] * p);
     
     return sum;
   };
@@ -1388,12 +1315,7 @@ namespace Functions
     const unsigned int n = weights.size();
     double sum = 0;
     for (unsigned int s=0; s<n; ++s)
-      {
-       double val=1;
-       for (unsigned int i=0; i<dim; ++i)
-         val *= std::cos(fourier_coefficients[s][i] * p[i]);
-       sum += weights[s] * val;
-      };
+      sum += weights[s] * std::cos(fourier_coefficients[s] * p);
     
     return sum;
   };
@@ -1410,26 +1332,7 @@ namespace Functions
     const unsigned int n = weights.size();
     Tensor<1,dim> sum;
     for (unsigned int s=0; s<n; ++s)
-      {
-       Tensor<1,dim> grad;
-       for (unsigned int i=0; i<dim; ++i)
-         grad[i] = 1;
-    
-       for (unsigned int i=0; i<dim; ++i)
-         {
-           const double cos_i = std::cos(fourier_coefficients[s][i] * p[i]);
-           const double sin_i = std::sin(fourier_coefficients[s][i] * p[i]);
-           
-           for (unsigned int d=0; d<dim; ++d)
-             if (d==i)
-               grad[d] *= -fourier_coefficients[s][i] * sin_i;
-             else
-               grad[d] *= cos_i;
-         };
-       
-       grad *= weights[s];
-       sum += grad;
-      };
+      sum -= fourier_coefficients[s] * std::sin(fourier_coefficients[s] * p);
     
     return sum;
   };
@@ -1446,12 +1349,7 @@ namespace Functions
     const unsigned int n = weights.size();
     double sum = 0;
     for (unsigned int s=0; s<n; ++s)
-      {
-       double val = -(fourier_coefficients[s]*fourier_coefficients[s]);
-       for (unsigned int i=0; i<dim; ++i)
-         val *= std::cos(fourier_coefficients[s][i] * p[i]);
-       sum += val * weights[s];
-      };
+      sum -= fourier_coefficients[s].square() * std::cos(fourier_coefficients[s] * p);
     
     return sum;
   };

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.