bool debug_vectors;
/**
* Write debug output to
- * #deallog; the higher the
+ * @p deallog; the higher the
* number, the more output.
*/
unsigned int debug;
* Empty virtual destructor.
*/
virtual ~OutputOperator();
+
/**
- * Set the stream #os to
+ * Set the stream @p os to
* which data is written. If
* no stream is selected with
* this function, data goes
- * to #deallog.
+ * to @p deallog.
*/
void initialize_stream(std::ostream& stream);
/**
* <li> The resulting step size is used from the current time.
* </ol>
*
- * The variable #print_step can be used to control the amount of
+ * The variable @p print_step can be used to control the amount of
* output generated by the timestepping scheme.
*/
class TimestepControl : public Subscriptor
/**
* The size of the current time
* step. This may differ from
- * #step_val, if we aimed at #final_val.
+ * @p step_val, if we aimed at @p final_val.
*/
double current_step_val;
double step_val;
/**
* Laminar pipe flow in two and three dimensions. The channel
- * stretches along the <i>x</i>-axis and has radius #radius. The
- * #Reynolds number is used to scale the pressure properly for a
+ * stretches along the <i>x</i>-axis and has radius @p radius. The
+ * @p Reynolds number is used to scale the pressure properly for a
* Navier-Stokes problem.
*
* @ingroup functions
* a block, create one of these
* objects, and it will appear as
* a prefix in LogStream output
- * like #deallog. At the end of
+ * like @p deallog. At the end of
* the block, the prefix will
* automatically be removed, when
* this object is destroyed.
public:
/**
* Set a new prefix for
- * #deallog, which will be
+ * @p deallog, which will be
* removed when the variable
* is destroyed .
*/
unsigned int n_subscriptions () const;
/**
- * List the subscribers to #deallog.
+ * List the subscribers to @p deallog.
*/
void list_subscribers () const;
* generalized_support_points
* field of the FiniteElement
* class and fill the tables with
- * #interior_weights. Called
+ * @p interior_weights. Called
* from the constructor.
*/
void initialize_support_points (const unsigned int degree);
* reference cell, nothing needs to be done for them. For a function
* defined on the computational domain, the quadrature points need to
* be mapped, which is done in fill_fe_values() if
- * #update_quadrature_points is set in the update flags. The mapped
+ * @p update_quadrature_points is set in the update flags. The mapped
* quadrature points are then accessed through FEValuesBase::quadrature_point().
*
* @todo Add a function <tt>transform_quadrature_points</tt> for this.
*
* The transformed quadrature weights $\left|\text{det}J(\mathbf{\hat
* x})\right|$ are accessed through FEValuesBase::JxW() and
- * computed in fill_fe_values(), if #update_JxW_values is set in the
+ * computed in fill_fe_values(), if @p update_JxW_values is set in the
* update flags.
*
* @todo Add a function <tt>transform_quadrature_weights</tt> for
*
* @note Normally, this function is called by a finite element,
* filling FEValues objects. For this finite element, there should be
- * an alias MappingType like #mapping_bdm, #mapping_nedelec, etc. This
+ * an alias MappingType like @p mapping_bdm, @p mapping_nedelec, etc. This
* alias should be preferred to using the types below.
*
* The mapping types currently implemented by derived classes are:
* <ul>
- * <li> #mapping_contravariant: maps a vector field on the reference cell
+ * <li> @p mapping_contravariant: maps a vector field on the reference cell
* is to the physical cell through the Jacobian:
* @f[
* \mathbf u(\mathbf x) = J(\mathbf{\hat x})\mathbf{\hat u}(\mathbf{\hat x}).
* transformation. Mathematically, it is the push forward of a
* vector field.
*
- * <li> #mapping_covariant: maps a field of one-forms on the reference cell
+ * <li> @p mapping_covariant: maps a field of one-forms on the reference cell
* to a field of one-forms on the physical cell.
* (theoretically this would refer to a DerivativeForm<1, dim, 1> but it
* canonically identified with a Tensor<1,dim>).
* @f]
* Gradients of scalar differentiable functions are transformed this way.
*
- * <li> #mapping_piola: A field of <i>n-1</i>-forms on the reference cell is also
+ * <li> @p mapping_piola: A field of <i>n-1</i>-forms on the reference cell is also
* represented by a vector field, but again transforms differently,
* namely by the Piola transform
* @f[
The mapping types currently implemented by derived classes are:
<ul>
- <li> #mapping_covariant: maps a field of forms on the reference cell
+ <li> @p mapping_covariant: maps a field of forms on the reference cell
to a field of forms on the physical cell.
Mathematically, it is the pull back of the differential form
@f[
The mapping types currently implemented by derived classes are:
<ul>
- <li> #mapping_contravariant_gradient, it
+ <li> @p mapping_contravariant_gradient, it
assumes $\mathbf u(\mathbf x) = J \mathbf{\hat u}$ so that
@f[
\mathbf T(\mathbf x) =
J^{-1}(\mathbf{\hat x}).
@f]
- <li> #mapping_covariant_gradient, it
+ <li> @p mapping_covariant_gradient, it
assumes $\mathbf u(\mathbf x) = J^{-T} \mathbf{\hat u}$ so that
@f[
\mathbf T(\mathbf x) =
J^{-1}(\mathbf{\hat x}).
@f]
- <li> #mapping_piola_gradient, it
+ <li> @p mapping_piola_gradient, it
assumes $\mathbf u(\mathbf x) = \frac{1}{\text{det}J(\mathbf x)}
J(\mathbf x) \mathbf{\hat u}(\mathbf x)$
so that
@f]
</ul>
- @todo The formulas for #mapping_covariant_gradient,
- #mapping_contravariant_gradient and #mapping_piola_gradient
+ @todo The formulas for @p mapping_covariant_gradient,
+ @p mapping_contravariant_gradient and @p mapping_piola_gradient
are only true as stated for linear mappings,
if the mapping is bilinear for example then there is a missing
term associated with the derivative of of J.
/**
* Implementation of a parallel vector class. The design of this class is
- * similar to the standard dealii::Vector<Number> class in deal.II, with the
+ * similar to the standard ::dealii::Vector class in deal.II, with the
* exception that storage is distributed with MPI.
*
* The vector is designed for the following scheme of parallel partitioning:
/**
* Provide this class with all functionality
- * of ::dealii::Vector<Number> by creating a
+ * of ::dealii::Vector by creating a
* VectorView object.
*/
VectorView<Number> vector_view;
/**
* Print some statistics about
- * the inverses to #deallog. Output depends
+ * the inverses to @p deallog. Output depends
* on #Inversion. It is richest
* for svd, where we obtain
* statistics on extremal
* numbers.
*/
void log_statistics () const;
-
+
/**
* Determine an estimate for the
* memory consumption (in bytes)
unsigned int kermin = 100000000, kermax = 0;
double sigmin = 1.e300, sigmax= -1.e300;
double kappamin = 1.e300, kappamax= -1.e300;
-
+
for (unsigned int b=0;b<size();++b)
{
const LAPACKFullMatrix<number>& matrix = inverse_svd(b);
const double s0 = matrix.singular_value(0);
const double sm = matrix.singular_value(matrix.n_cols()-k);
const double co = sm/s0;
-
+
if (kermin > k) kermin = k-1;
if (kermax < k) kermax = k-1;
if (s0 < sigmin) sigmin = s0;
if (sm > sigmax) sigmax = sm;
if (co < kappamin) kappamin = co;
- if (co > kappamax) kappamax = co;
+ if (co > kappamax) kappamax = co;
}
deallog << "dim ker [" << kermin << ':' << kermax
<< "] sigma [" << sigmin << ':' << sigmax
<< "] kappa [" << kappamin << ':' << kappamax << ']' << std::endl;
-
+
}
else if (inversion == householder)
{
* the vector has been changed from zero-length, then local dof
* indices stored in this object will automatically be renumbered to
* reflect local block structure. This means, the first entries in
- * #indices will refer to the first block of the system, then comes
+ * @p indices will refer to the first block of the system, then comes
* the second block and so on.
*
* The BlockInfo object is stored as a pointer. Therefore, if the
/**
* Set the current cell and
- * fill #indices.
+ * fill @p indices.
*/
template <class DHCellIterator>
void reinit(const DHCellIterator& c);
/**
* Set the current face and
- * fill #indices if the #cell
+ * fill @p indices if the #cell
* changed.
*/
template <class DHCellIterator, class DHFaceIterator>
/**
* Set the current subface
- * and fill #indices if the
+ * and fill @p indices if the
* #cell changed.
*/
template <class DHCellIterator, class DHFaceIterator>
/**
* Switch to a new face of the
* same cell. Does not change
- * #indices and does not reset
+ * @p indices and does not reset
* data in LocalResults.
*/
template <class DHFaceIterator>
/**
* Switch to a new subface of the
* same cell. Does not change
- * #indices and does not reset
+ * @p indices and does not reset
* data in LocalResults.
*/
template <class DHFaceIterator>
/**
* The initialization
* function, specifying the
- * #results vectors and
+ * @p results vectors and
* whether face data should
* be collected separately.
*
- * #results should contain
+ * @p results should contain
* two block vectors named
* "cells" and "faces" (the
* latter only if
- * #separate_faces is
+ * @p separate_faces is
* true). In each of the two,
* each block should have
* equal size and be large
/**
* The value of the ith entry
- * in #results.
+ * in @p results.
*/
number operator() (unsigned int i) const;
private:
* which data is written. If
* no stream is selected with
* this function, data goes
- * to #deallog.
+ * to @p deallog.
*/
void initialize_stream (std::ostream& stream);
* Write the object T either
* to the stream #os, if initialize_stream
* has been called, or to
- * #deallog if no pointer has
+ * @p deallog if no pointer has
* been set.
*/
template<typename T>
* Write an end-of-line marker either
* to the stream #os, if initialize_stream
* has been called, or to
- * #deallog if no pointer has
+ * @p deallog if no pointer has
* been set.
*/
void write_endl () const;
* Initialize for a new matrix.
*/
void initialize (const FullMatrix<number>& A);
-
+
void operator() (const unsigned int level,
VECTOR &dst,
const VECTOR &src) const;
* Coarse grid solver using singular value decomposition of LAPACK matrices.
*
* Upon initialization, the singular value decomposition of the matrix is
- * computed. then, the operator() uses
+ * computed. then, the operator() uses
*
* @author Guido Kanschat, 2003, 2012
*/
* uninitialized object.
*/
MGCoarseGridSVD ();
-
+
/**
* Initialize for a new
* matrix. This resets the
- * dimensions to the
+ * dimensions to the
*/
void initialize (const FullMatrix<number>& A, const double threshold = 0);
-
+
void operator() (const unsigned int level,
VECTOR &dst,
const VECTOR &src) const;
-
+
/**
- * Write the singular values to #deallog.
+ * Write the singular values to @p deallog.
*/
void log () const;
-
+
private:
-
+
/**
* Matrix for singular value decomposition.
*/
MGCoarseGridSVD<number, VECTOR>::log() const
{
const unsigned int n = std::min(matrix.n_rows(), matrix.n_cols());
-
+
for (unsigned int i=0;i<n;++i)
deallog << ' ' << matrix.singular_value(i);
deallog << std::endl;
void set_transpose (const bool);
/**
- * Set #debug to a nonzero value
+ * Set @p debug to a nonzero value
* to get debug information
- * logged to #deallog. Increase
+ * logged to @p deallog. Increase
* to get more information
*/
void set_debug (const unsigned int level);
/**
* Output debugging information
- * to #deallog if this is
+ * to @p deallog if this is
* nonzero.
*/
unsigned int debug;