]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Addressed comments by @wolfgang 2376/head
authorLuca Heltai <luca.heltai@sissa.it>
Sun, 20 Mar 2016 11:55:48 +0000 (12:55 +0100)
committerLuca Heltai <luca.heltai@sissa.it>
Sun, 20 Mar 2016 11:55:48 +0000 (12:55 +0100)
include/deal.II/base/function_parser.h
include/deal.II/grid/manifold_lib.h
source/base/function_parser.cc
source/grid/manifold_lib.cc

index 3fe91a0c4e161df8ee22b5f8f59195f71c9856c1..a271c0a2567d2412bf914cef60010d98cc5aea01 100644 (file)
@@ -181,14 +181,17 @@ class FunctionParser : public AutoDerivativeFunction<dim>
 {
 public:
   /**
-   * Constructor for Parsed functions. Its arguments are the same of the base
-   * class Function. The only difference is that this object needs to be
-   * initialized with initialize() method before you can use it. If an attempt
-   * to use this function is made before the initialize() method has been
-   * called, then an exception is thrown.
+   * Constructor for Parsed functions. Its arguments are the same of
+   * the base class Function, with the additional parameter @p h, used
+   * for the computation of gradients using finite differences. This
+   * object needs to be initialized with the initialize() method
+   * before you can use it. If an attempt to use this function is made
+   * before the initialize() method has been called, then an exception
+   * is thrown.
    */
   FunctionParser (const unsigned int n_components = 1,
-                  const double       initial_time = 0.0);
+                  const double       initial_time = 0.0,
+                  const double       h = 1e-8);
 
   /**
    * Destructor. Explicitly delete the FunctionParser objects (there is one
index 15b3d7e4dc67258e9979a07d660228ee7cbc608e..04b75b8ee0e55cfa717db53573b31e3adc953579 100644 (file)
@@ -250,7 +250,8 @@ public:
                    const typename FunctionParser<spacedim>::ConstMap = typename FunctionParser<spacedim>::ConstMap(),
                    const std::string chart_vars=FunctionParser<chartdim>::default_variable_names(),
                    const std::string space_vars=FunctionParser<spacedim>::default_variable_names(),
-                   const double tolerance=1e-10);
+                   const double tolerance=1e-10,
+                   const double h=1e-8);
 
   /**
    * If needed, we delete the pointers we own.
@@ -273,7 +274,15 @@ public:
    * $\text{spacedim}\times\text{chartdim}$.
    *
    * This function is used in the computations required by the
-   * get_tangent_vector() function.
+   * get_tangent_vector() function. The default implementation calls
+   * the get_gradient() method of the
+   * FunctionManifold::push_forward_function() member class. If you
+   * construct this object using the constructor that takes two string
+   * expression, then the default implementation of this method uses a
+   * finite difference scheme to compute the gradients(see the
+   * AutoDerivativeFunction() class for details), and you can specify
+   * the size of the spatial step size at construction time with the
+   * @p h parameter.
    *
    * Refer to the general documentation of this class for more information.
    */
index 094869b40fae57d81e28e8240ad83d4b5f3d3230..e00dddadf8f41c7dfaaf4707f111865388c9eeea 100644 (file)
@@ -46,9 +46,10 @@ DEAL_II_NAMESPACE_OPEN
 
 template <int dim>
 FunctionParser<dim>::FunctionParser(const unsigned int n_components,
-                                    const double       initial_time)
+                                    const double       initial_time,
+                                    const double       h)
   :
-  AutoDerivativeFunction<dim>(1e-8, n_components, initial_time)
+  AutoDerivativeFunction<dim>(h, n_components, initial_time)
 {}
 
 
index 0d039f8c8683c1dc24c2bd940289895d2d4115fd..e889eadd380c3b893843c4de40f837a5a0212e8d 100644 (file)
@@ -267,14 +267,15 @@ FunctionManifold<dim,spacedim,chartdim>::FunctionManifold
  const typename FunctionParser<spacedim>::ConstMap const_map,
  const std::string chart_vars,
  const std::string space_vars,
- const double tolerance) :
+ const double tolerance,
+ const double h) :
   ChartManifold<dim,spacedim,chartdim>(periodicity),
   const_map(const_map),
   tolerance(tolerance),
   owns_pointers(true)
 {
-  FunctionParser<chartdim> *pf = new FunctionParser<chartdim>(spacedim);
-  FunctionParser<spacedim> *pb = new FunctionParser<spacedim>(chartdim);
+  FunctionParser<chartdim> *pf = new FunctionParser<chartdim>(spacedim, 0.0, h);
+  FunctionParser<spacedim> *pb = new FunctionParser<spacedim>(chartdim, 0.0, h);
   pf->initialize(chart_vars, push_forward_expression, const_map);
   pb->initialize(space_vars, pull_back_expression, const_map);
   push_forward_function = pf;

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.