[Dune] [Dune-Commit] dune-grid r6432 - trunk/dune/grid/onedgrid

Christian Engwer christi at uni-hd.de
Sun Mar 14 01:41:19 CET 2010


Do I assume correctly that this patch should be merged?

christian

On Sat, Mar 13, 2010 at 07:15:07PM +0100, sander at dune-project.org wrote:
> Author: sander
> Date: 2010-03-13 19:15:07 +0100 (Sat, 13 Mar 2010)
> New Revision: 6432
> 
> Modified:
>    trunk/dune/grid/onedgrid/onedgridfactory.cc
>    trunk/dune/grid/onedgrid/onedgridindexsets.hh
> Log:
> vertices in a newly created grid are now numbered by insertion order
> 
> Modified: trunk/dune/grid/onedgrid/onedgridfactory.cc
> ===================================================================
> --- trunk/dune/grid/onedgrid/onedgridfactory.cc	2010-03-13 13:20:36 UTC (rev 6431)
> +++ trunk/dune/grid/onedgrid/onedgridfactory.cc	2010-03-13 18:15:07 UTC (rev 6432)
> @@ -1,6 +1,7 @@
>  #include <config.h>
>  
>  #include <dune/grid/onedgrid/onedgridfactory.hh>
> +#include <dune/grid/onedgrid/onedgridindexsets.hh>
>  
>  using namespace Dune;
>  
> @@ -101,6 +102,10 @@
>          it = it->succ_;
>          newElement.vertex_[1] = it;
>  
> +        // temporary: indices chosen by geographic ordering, not by insertion ordering
> +        newElement.levelIndex_ = i;
> +        newElement.leafIndex_  = i;
> +
>          grid_->elements(0).push_back(newElement);
>  
>      }
> @@ -109,8 +114,12 @@
>      //   Create the index sets
>      // ///////////////////////////////////////////////////
>  
> -    grid_->setIndices();
> +    grid_->levelIndexSets_.resize(1);
> +    grid_->levelIndexSets_[0] = new OneDGridLevelIndexSet<const OneDGrid>(*grid_, 0);
> +    grid_->levelIndexSets_[0]->setSizesAndTypes(vertexPositions_.size(), elements_.size());
>  
> +    grid_->leafIndexSet_.setSizesAndTypes(vertexPositions_.size(), elements_.size());
> +
>      // ///////////////////////////////////////////////////
>      // hand over the grid and delete the member pointer
>      // ///////////////////////////////////////////////////
> 
> Modified: trunk/dune/grid/onedgrid/onedgridindexsets.hh
> ===================================================================
> --- trunk/dune/grid/onedgrid/onedgridindexsets.hh	2010-03-13 13:20:36 UTC (rev 6431)
> +++ trunk/dune/grid/onedgrid/onedgridindexsets.hh	2010-03-13 18:15:07 UTC (rev 6432)
> @@ -91,6 +91,29 @@
>          return false; 
>      }
>  
> +    /** \brief Sets the corresponding internal fields.  Used by the GridFactory */
> +    void setSizesAndTypes(unsigned int numVertices, unsigned int numElements) {
> +
> +        numVertices_ = numVertices;
> +        numElements_ = numElements;
> +
> +        // ///////////////////////////////////////////////
> +        //   Update the list of geometry types present
> +        // ///////////////////////////////////////////////
> +        if (numElements_>0) {
> +            myTypes_[0].resize(1);
> +            myTypes_[0][0] = GeometryType(1);
> +        } else
> +            myTypes_[0].resize(0);
> +
> +        if (numVertices_>0) {
> +            myTypes_[1].resize(1);
> +            myTypes_[1][0] = GeometryType(0);
> +        } else
> +            myTypes_[1].resize(0);
> +
> +    }
> +
>      /** \todo Should be private */
>      void update() {
>  
> @@ -113,20 +136,8 @@
>              /** \todo Remove this const cast */
>              const_cast<OneDEntityImp<0>*>(vIt)->levelIndex_ = numVertices_++;
>  
> -        // ///////////////////////////////////////////////
> -        //   Update the list of geometry types present
> -        // ///////////////////////////////////////////////
> -        if (numElements_>0) {
> -            myTypes_[0].resize(1);
> -            myTypes_[0][0] = GeometryType(1);
> -        } else
> -            myTypes_[0].resize(0);
> -
> -        if (numVertices_>0) {
> -            myTypes_[1].resize(1);
> -            myTypes_[1][0] = GeometryType(0);
> -        } else
> -            myTypes_[1].resize(0);
> +        // set the list of geometry types
> +        setSizesAndTypes(numVertices_, numElements_);
>      }
>  
>  private:
> @@ -240,6 +251,29 @@
>          return false; 
>      }
>  
> +    /** \brief Sets the corresponding internal fields.  Used by the GridFactory */
> +    void setSizesAndTypes(unsigned int numVertices, unsigned int numElements) {
> +
> +        numVertices_ = numVertices;
> +        numElements_ = numElements;
> +
> +        // ///////////////////////////////////////////////
> +        //   Update the list of geometry types present
> +        // ///////////////////////////////////////////////
> +        if (numElements_>0) {
> +            myTypes_[0].resize(1);
> +            myTypes_[0][0] = GeometryType(1);
> +        } else
> +            myTypes_[0].resize(0);
> +
> +        if (numVertices_>0) {
> +            myTypes_[1].resize(1);
> +            myTypes_[1][0] = GeometryType(0);
> +        } else
> +            myTypes_[1].resize(0);
> +
> +    }
> +
>      /** \todo Should be private */
>      void update() {
>  
> @@ -277,21 +311,9 @@
>  
>          }
>  
> -        // ///////////////////////////////////////////////
> -        //   Update the list of geometry types present
> -        // ///////////////////////////////////////////////
> -        if (numElements_>0) {
> -            myTypes_[0].resize(1);
> -            myTypes_[0][0] = GeometryType(1);
> -        } else
> -            myTypes_[0].resize(0);
> +        // set the list of geometry types
> +        setSizesAndTypes(numVertices_, numElements_);
>  
> -        if (numVertices_>0) {
> -            myTypes_[1].resize(1);
> -            myTypes_[1][0] = GeometryType(0);
> -        } else
> -            myTypes_[1].resize(0);
> -
>      }
>  
>  private:
> 
> 
> _______________________________________________
> Dune-Commit mailing list
> Dune-Commit at dune-project.org
> http://lists.dune-project.org/mailman/listinfo/dune-commit
> 




More information about the Dune mailing list