From: schrage Date: Thu, 25 Mar 1999 10:02:43 +0000 (+0000) Subject: First check-in. X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=75a81fdb19c4bf2e9063c7cc630a741ed3b2b303;p=dealii-svn.git First check-in. git-svn-id: https://svn.dealii.org/trunk@1046 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/doc/tutorial/chapter-1.elements/dofs.html b/deal.II/doc/tutorial/chapter-1.elements/dofs.html index b1a369a48d..686643db98 100644 --- a/deal.II/doc/tutorial/chapter-1.elements/dofs.html +++ b/deal.II/doc/tutorial/chapter-1.elements/dofs.html @@ -17,10 +17,57 @@

Degrees of Freedom

-Degrees of freedom are virtually the most important entities you will +

+Degrees of freedom - short DoFs -are virtually the most important entities you will encounter in deal.II. Most of the task of setting up your problem is accomplished by manipulating them. +

+

+For now we will only discuss how and when to number and renumber the +degrees of freedom. this needs to be done so deal.II +has a consistent numbering. +

+

When to Distribute and Renumber Degrees of Freedom

+

+Degrees of freedom must always be renumbered after the triangulation +has changed in any way, i.e. has been created or refined. +In particular the degrees of freedom must be distributed after the +triangulation has been created ! +Degrees of freedom +can but should not be renumbered at any other time. The reason is that +sparse matrix structures and constraint matrices - to name two examples - +rely on the numbering. If you +construct a sparse matrix structure and renumber your degrees of freedom +afterwards the structure will be invalid. +

+ +

How to Distribute and Renumber Degrees of Freedom

+

+The degrees of freedom are distributed on a triangulation using the function
+void DoFHandler::distribute_dofs(const FiniteElement<dim> &)
+The argument to distribute_dofs is a finite element that describes +how many degrees of freedom are located on vertices, lines etc. +distribute_dofs works its way through the triangulation cell by +cell, starting at the coarsest level, and numbers every degree of freedom that is not yet numbered. +For non-multigrid algorithms it considers only active cells, i.e. cells +without children. +

+ +

+For a number of solution algorithms this way of numbering is way below optimal. +To achieve a kind of numbering better suited to your problem the deal.II +offers the function
+void DoFHandler::renumber_dofs(const RenumberingMethod method,const bool use_constraints=false, const vector<int> &starting_points=vector<int>())
+or alternatively, the easier to use
+void DoFHandler::renumber_dofs(const RenumberingMethod method)
+The methods available are Cuthill_McKey and reverse_Cuthill_McKey. Both algorithms are usually better than the one used +by distribute_dofs and neither is optimal (there is no algorithm +that accomplishes optimal results within a reasonable amount of time). +Both algorithms require a good index to start with to achieve good results. +Whenever you know a good set of starting indices you might wish to use the +first way of calling renumber_dofs, +in every other case the second way is more advisable.