]> https://gitweb.dealii.org/ - dealii.git/commitdiff
More documentation work.
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Tue, 17 Jan 2006 23:42:23 +0000 (23:42 +0000)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Tue, 17 Jan 2006 23:42:23 +0000 (23:42 +0000)
git-svn-id: https://svn.dealii.org/trunk@12072 0785d39b-7218-0410-832d-ea1e28bc413d

17 files changed:
deal.II/base/include/base/function.h
deal.II/base/include/base/function_derivative.h
deal.II/base/include/base/function_lib.h
deal.II/base/include/base/function_parser.h
deal.II/base/include/base/function_time.h
deal.II/base/include/base/memory_consumption.h
deal.II/base/include/base/multithread_info.h
deal.II/base/include/base/polynomial_space.h
deal.II/base/include/base/polynomials_bdm.h
deal.II/base/include/base/quadrature_selector.h
deal.II/base/include/base/smartpointer.h
deal.II/base/include/base/subscriptor.h
deal.II/base/include/base/thread_management.h
deal.II/doc/doxygen/headers/functions.h [new file with mode: 0644]
deal.II/doc/doxygen/headers/memory.h [new file with mode: 0644]
deal.II/doc/doxygen/headers/multithreading.h [new file with mode: 0644]
deal.II/doc/doxygen/headers/quadrature.h

index d42de791125dbba0c7554508c101dc7a88f1acb9..64de7c90f1ab7abb2286724cc62b28fc06fc972f 100644 (file)
@@ -93,6 +93,7 @@ template <typename number> class Vector;
  * are a priori known (for example, <tt>dim</tt> elements), you might
  * consider using the TensorFunction class instead.
  *
+ * @ingroup functions
  * @author Wolfgang Bangerth, 1998, 1999
  */
 template <int dim>
@@ -360,6 +361,7 @@ class Function : public FunctionTime,
  * This function is of use when you want to implement homogeneous boundary
  * conditions, or zero initial conditions.
  *
+ * @ingroup functions
  * @author Wolfgang Bangerth, 1998, 1999
  */
 template <int dim>
@@ -488,6 +490,7 @@ class ZeroFunction : public Function<dim>
  * in all its components, which might not be overly useful a feature
  * in most cases, however.
  *
+ * @ingroup functions
  * @author Wolfgang Bangerth, 1998, 1999
  */
 template <int dim>
@@ -584,6 +587,7 @@ class ConstantFunction : public ZeroFunction<dim>
  * <tt>VectorTools::integrate_difference</tt>, where it allows to integrate
  * only one component.
  *
+ * @ingroup functions
  * @author Guido Kanschat, 2000
  */
 template <int dim>
index 8b55a785d86e10db5ade4a96abb6e1cc1792c287..ef1a240dcf8a980f5138b91f4321aabc1ff20a8b 100644 (file)
@@ -31,6 +31,7 @@
  * schemes). Experimenting with <tt>h</tt> and the difference scheme may be
  * necessary to obtain sufficient results.
  *
+ * @ingroup functions
  * @author Guido Kanschat, 2000
  */
 template <int dim>
index 5088858d66b3ed89c3c6efa37ea1cb6440ff4019..c8ce2040008d5a12c5a422a78d11e131ea5ac7e6 100644 (file)
  * Namespace implementing some concrete classes derived from the
  * Function class that describe actual functions. This is rather
  * a collection of classes that we have needed for our own programs
- * once and thought they might be useful to others as well at some
+ * once and thought might be useful to others as well at some
  * point.
+ *
+ * @ingroup functions
  */
 namespace Functions
 {
@@ -37,6 +39,7 @@ namespace Functions
  *
  * Together with the function, its derivatives and Laplacian are defined.
  *
+ * @ingroup functions
  * @author: Guido Kanschat, 1999
  */
   template<int dim>
@@ -89,6 +92,7 @@ namespace Functions
  * The function <tt>xy</tt>. This function serves as an example for
  * a vanishing Laplacian.
  *
+ * @ingroup functions
  * @author: Guido Kanschat, 2000
  */
   template<int dim>
@@ -149,6 +153,7 @@ namespace Functions
  *
  * Together with the function, its derivatives and Laplacian are defined.
  *
+ * @ingroup functions
  * @author: Guido Kanschat, 1999
  */
   template<int dim>
@@ -210,6 +215,8 @@ namespace Functions
  * Cosine-shaped pillow function.
  * This is another function with zero boundary values on $[-1,1]^d$. In the interior
  * it is the product of $\cos(\pi/2 x_i)$.
+ *
+ * @ingroup functions
  * @author Guido Kanschat, 1999
  */
   template<int dim>
@@ -275,6 +282,8 @@ namespace Functions
   
 /**
  * Product of exponential functions in each coordinate direction.
+ *
+ * @ingroup functions
  * @author Guido Kanschat, 1999
  */
   template<int dim>
@@ -326,6 +335,7 @@ namespace Functions
 /**
  * Singularity on the L-shaped domain in 2D.
  *
+ * @ingroup functions
  * @author Guido Kanschat, 1999
  */
   class LSingularityFunction : public Function<2>
@@ -376,6 +386,7 @@ namespace Functions
 /**
  * Singularity on the slit domain in 2D.
  *
+ * @ingroup functions
  * @author Guido Kanschat, 1999
  */
   class SlitSingularityFunction : public Function<2>
@@ -425,6 +436,7 @@ namespace Functions
 /**
  * Singularity on the slit domain with one Neumann boundary in 2D.
  *
+ * @ingroup functions
  * @author Guido Kanschat, 2002
  */
   class SlitHyperSingularityFunction : public Function<2>
@@ -469,6 +481,7 @@ namespace Functions
                                   std::vector<double>          &values,
                                   const unsigned int            component = 0) const;
   };
+
   
   
 /**
@@ -483,6 +496,7 @@ namespace Functions
  *
  * Together with the function, its derivatives and Laplacian are defined.
  *
+ * @ingroup functions
  * @author: Guido Kanschat, 2000
  */
   template<int dim>
@@ -594,6 +608,7 @@ namespace Functions
  * The class has its name from the fact that it resembles one
  * component of a Fourier cosine decomposition.
  *
+ * @ingroup functions
  * @author Wolfgang Bangerth, 2001
  */
   template <int dim>
@@ -653,6 +668,7 @@ namespace Functions
  * The class has its name from the fact that it resembles one
  * component of a Fourier sine decomposition.
  *
+ * @ingroup functions
  * @author Wolfgang Bangerth, 2001
  */
   template <int dim>
@@ -709,6 +725,7 @@ namespace Functions
  * function is then recovered as
  * $f(x) = \sum_j w_j sin(\sum_i k_i x_i) = Im(\sum_j w_j \exp(i k.x))$.
  *
+ * @ingroup functions
  * @author Wolfgang Bangerth, 2001
  */
   template <int dim>
@@ -769,6 +786,7 @@ namespace Functions
  * function is then recovered as
  * $f(x) = \sum_j w_j cos(\sum_i k_i x_i) = Re(\sum_j w_j \exp(i k.x))$.
  *
+ * @ingroup functions
  * @author Wolfgang Bangerth, 2001
  */
   template <int dim>
@@ -828,6 +846,7 @@ namespace Functions
  * also stores the number of the non-zero component, if the function
  * is vector-valued.
  *
+ * @ingroup functions
  * @author Guido Kanschat, 2002
  */
   template <int dim>
@@ -901,6 +920,7 @@ namespace Functions
  * If vector valued, it can be restricted
  * to a single component.
  *
+ * @ingroup functions
  * @author Guido Kanschat, 2001, 2002
  */
   template<int dim>
@@ -950,6 +970,7 @@ namespace Functions
  * maximum value is 1. If vector valued, it can be restricted
  * to a single component.
  *
+ * @ingroup functions
  * @author Guido Kanschat, 2001, 2002
  */
   template<int dim>
@@ -1000,6 +1021,7 @@ namespace Functions
  * distance to the center, and $s$ is the radius of the sphere. If
  * vector valued, it can be restricted to a single component.
  *
+ * @ingroup functions
  * @author Guido Kanschat, 2001, 2002
  */
   template<int dim>
index 9e9ed55b1953d0ea51d41feb6e0fa86dce41cb22..caf8cda59348dd388ee2661e515869527e90933b 100644 (file)
@@ -246,6 +246,7 @@ template <typename> class Vector;
      @endverbatim
  *    
  *
+ * @ingroup functions
  * @author Luca Heltai, 2005
  */
 template <int dim>
index 43989bb034990552efe35a92cae18e401b11c3cb..aa9066aa808965a01c34f1dd5fda4f4bd1f38212 100644 (file)
@@ -56,6 +56,7 @@
  *  purpose than the intended one! This will inevitably lead to confusion.
  *
  *
+ *  @ingroup functions
  *  @author Wolfgang Bangerth, Guido Kanschat, 1998, 1999
  */
 class FunctionTime
@@ -101,11 +102,14 @@ class FunctionTime
 
 /*------------------------------ Inline functions ------------------------------*/
 
+#ifndef DOXYGEN
+
 inline double
 FunctionTime::get_time () const
 {
   return time;
 }
 
+#endif
 
 #endif
index 601b426bc64dd1f855b748a9ef68b0ea2f06bb36..21e09cda8c2a3f7632ce1bafb8fe60b721802f06 100644 (file)
@@ -80,6 +80,7 @@
  * maps, lists, etc. If you need such functions feel free to implement
  * them and send them to us for inclusion.
  *
+ * @ingroup memory
  * @author Wolfgang Bangerth, 2000
  */
 namespace MemoryConsumption
index c606af25396169038aa55751da5d5fe616ad3d1b..d61cbe562bcb57bc31143ab782818cb84dd4d86d 100644 (file)
@@ -29,7 +29,8 @@
  * <tt>n_default_threads</tt> is set to the number of CPUs by default, but
  * can be adjusted by the user to fit the requirements.
  *
- * @author Thomas Richter, 2000
+ * @ingroup threads
+ * @author Thomas Richter, Wolfgang Bangerth, 2000
  */
 class MultithreadInfo
 {
@@ -115,8 +116,10 @@ class MultithreadInfo
 
 /**
  * Global variable of type <tt>MultithreadInfo</tt> which you may ask for the
- * number of CPUs in you system, as well as for the default number of
+ * number of CPUs in your system, as well as for the default number of
  * threads that multithreaded functions shall use.
+ *
+ * @ingroup threads
  */
 extern MultithreadInfo multithread_info;
 
index af46c6d734c560b04752cacc0b7b86bd30acdf2a..ce65921f4cceba515fc5efa035eb49f8810d8521 100644 (file)
@@ -76,6 +76,8 @@
  *    x<sup>0</sup>y<sup>0</sup>z<sup>n</sup>
  *    </i>
  * </dl>
+ *
+ * @ingroup Polynomials
  * @author Guido Kanschat, Wolfgang Bangerth, Ralf Hartmann 2002, 2003, 2004, 2005
  */
 template <int dim>
index 51ac49c1094fc47c6477a8c533c51c5fe8b071aa..866a43d595a5fbc8e610b7d4d0e05f9ba9726ce8 100644 (file)
@@ -31,8 +31,6 @@
  */
 
 /**
- * @brief The set of BDM polynomials on tensor product cells
- *
  * This class implements the <i>H<sup>div</sup></i>-conforming,
  * vector-valued Brezzi-Douglas-Marini polynomials as described in the
  * book by Brezzi and Fortin.
index d4c0b7e8f9c4c5fde63e437d94679c6b3c9b2605..f914512ccbb858b495a269b7297a21d12211320f 100644 (file)
@@ -30,7 +30,8 @@
  * This class is useful if you want to use flexible quadrature rules,
  * that are read from a parameter file (see ParameterHandler for
  * this).
- * 
+ *
+ * @ingroup Quadrature
  * @author Ralf Schulz, 2003
  */
 template<int dim>
index b0b545b5598c355b0c5bc019b5e1e6a06479f4e4..71bbc69a95dbe245972878c405c81e0645acdfb1 100644 (file)
@@ -48,6 +48,7 @@
  * a constant object (disallowing write access when dereferenced), while
  * <tt>SmartPointer<ABC></tt> is a mutable pointer.
  *
+ * @ingroup memory
  * @author Guido Kanschat, Wolfgang Bangerth, 1998 - 2005
  */
 template<typename T>
index e30324b27364c7f26a5551aa36e53fdb532ddf26..ad0c3c1722bdb6dcb1ab6a24ed19367c6cdcab74 100644 (file)
@@ -21,6 +21,7 @@
 #include <map>
 #include <string>
 
+
 /**
  * Handling of subscriptions.
  *
@@ -45,6 +46,7 @@
  * @note Due to a problem with <tt>volatile</tt> declarations, this
  * additional feature is switched of if multithreading is used.
  *
+ * @ingroup memory
  * @author Guido Kanschat, 1998 - 2005
  */
 class Subscriptor
index 26efad95a10796ab643a0a79af55d714e21b474f..8f73456d28e95977d187b60435d8d0695d13dc04 100644 (file)
@@ -39,6 +39,8 @@
  * deal.II. Most of the content of this namespace is discussed in
  * detail in one of the reports linked to from the documentation page
  * of deal.II.
+ *
+ * @ingroup threads
  */
 namespace Threads 
 {
diff --git a/deal.II/doc/doxygen/headers/functions.h b/deal.II/doc/doxygen/headers/functions.h
new file mode 100644 (file)
index 0000000..f77f113
--- /dev/null
@@ -0,0 +1,57 @@
+//-------------------------------------------------------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2006 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//-------------------------------------------------------------------------
+
+/**
+ * @defgroup functions Functions
+ *
+ * Functions are used in various places in deal.II, for example to
+ * describe boundary conditions, coefficients in equations, forcing
+ * terms, or exact solutions. Since closed form expressions for
+ * equations are often hard to pass along as function arguments,
+ * deal.II uses the Function base class to describe these
+ * objects. Essentially, the interface of this base class requires
+ * derived classes to implement the ability to return the value of a
+ * function at one or a list of particular locations, and possibly (if
+ * needed) of gradients or second derivatives of the function. With
+ * this, function objects can then be used by algorithms like
+ * VectorTools::interpolate, VectorTools::project_boundary_values, and
+ * other functions.
+ *
+ * Some functions are needed again and again, and are therefore
+ * already provided in deal.II. This includes a function with a
+ * constant value; a function that is zero everywhere, or a
+ * vector-valued function for which only one vector component has a
+ * particular value and all other components are zero. Some more
+ * specialized functions are also defined in the Functions namespace.
+ *
+ * For time dependent computations, boundary conditions and/or right
+ * hand side functions may also change with time. Since at a given
+ * time step one is usually only interested in the spatial dependence
+ * of a function, it would be awkward if one had to pass a value for
+ * the time variable to all methods that use function objects. For
+ * example, the VectorTools::interpolate_boundary_values function
+ * would have to take a time argument which it can use when it wants
+ * to query the value of the boundary function at a given time
+ * step. However, it would also have to do so if we are considering a
+ * stationary problem, for which there is nothing like a time
+ * variable.
+ *
+ * To circumvent this problem, function objects are always considered
+ * spatial functions only. However, the Function class is derived from
+ * the FunctionTime base class that stores a value for a time
+ * variable, if so necessary. This way, one can define a function
+ * object that acts as a spatial function but can do so internally by
+ * referencing a particular time. In above example, one would set the
+ * time of the function object to the present time step before handing
+ * it off to the VectorTools::interpolate_boundary_values method.
+ */
diff --git a/deal.II/doc/doxygen/headers/memory.h b/deal.II/doc/doxygen/headers/memory.h
new file mode 100644 (file)
index 0000000..c0bed1c
--- /dev/null
@@ -0,0 +1,35 @@
+//-------------------------------------------------------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2006 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//-------------------------------------------------------------------------
+
+/**
+ * @defgroup memory Memory handling
+ *
+ * This group has some basic classes and namespaces for memory
+ * handling. The Subscriptor and SmartPointer classes are used for
+ * counted memory handling, i.e. whenever a SmartPointer is set to
+ * point to an object, it increases a counter in that object; when the
+ * pointer is set to point elsewhere, it decreases it again. This way,
+ * one always knows how many users of an object there still are. While
+ * this is rarely useful in itself, it is used to generate an
+ * exception if an object is destroyed while a pointer somewhere is
+ * still pointing to it, as any access through that pointer at a later
+ * time would otherwise lead to access of invalid memory regions.
+ *
+ * In contrast to this, the MemoryConsumption namespace provides
+ * functions that can be used to determine the memory consumption of
+ * objects. For some simple classes, like the STL containers, it
+ * directly determines how much memory they need (or at least gives an
+ * estimate). For deal.II classes, it uses the
+ * <code>memory_consumption</code> member function that most classes
+ * have.
+ */
diff --git a/deal.II/doc/doxygen/headers/multithreading.h b/deal.II/doc/doxygen/headers/multithreading.h
new file mode 100644 (file)
index 0000000..5e2644c
--- /dev/null
@@ -0,0 +1,46 @@
+//-------------------------------------------------------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2006 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//-------------------------------------------------------------------------
+
+/**
+ * @defgroup threads Multithreading
+ *
+ * On machines with more than one processor (or multicore processors),
+ * it is often profitable to run several parts of the computations in
+ * parallel. For example, one could have several threads running in
+ * parallel, each of which assembles the cell matrices of a subset of
+ * the triangulation and then writes them into the global
+ * matrix. Since assembling matrices is often an expensive operation,
+ * this frequently leads to significant savings in compute time on
+ * multiprocessor machines.
+ *
+ * In a similar way, it is often also profitable to use multiple
+ * threads on a single-CPU system if a significant amount of input or
+ * output tasks has to be performed. In such cases, the program
+ * usually has to wait for disks or network storages to provide the
+ * requested data, or to flush buffers. If this is done on a separate
+ * thread, other threads of the program can continue to do other, more
+ * interesting things at the same time, using the CPU downtime.
+ *
+ * Support for this model of computations, i.e. using multiple threads
+ * on a shared-memory machine (SMP machine) is provided mainly through
+ * the Threads namespace that offers functions to create new threads
+ * as well as synchronisation primitives. The MultithreadInfo class
+ * allows to query certain properties of the system, such as the
+ * number of CPUs.  The use of these classes is explained in the
+ * step-9, step-13 and step-14 tutorial programs.
+ *
+ * On the other hand, programs running on distributed memory machines
+ * (i.e. clusters) need a different programming model built on top of
+ * MPI and PETSc that is described in the step-17 and later example
+ * programs.
+ */
index 6750e13ef0bea8fab5af68a9c63e2b9980b73a64..8c30fe0b3277d59fb2335983ed204aefa2b6d88d 100644 (file)
  *
  * All other classes in this module actually implement quadrature
  * rules of different order and other characteristics.
+ *
+ *
+ * <h3>QuadratureSelector</h3>
+ *
+ * This class is used to generate a quadrature object based on a
+ * string that identifies the quadrature formula. This is useful in
+ * cases where one wants to specify a certain quadrature formula in an
+ * input file, rather than hardcode it in the program.
  */

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.