Skip to content
Snippets Groups Projects
Commit fe064b18 authored by Oliver Sander's avatar Oliver Sander
Browse files

The method getChildrenOfSubface() now returns a std::vector of EntityPointers...

The method getChildrenOfSubface() now returns a std::vector of EntityPointers instead of a Dune::Array of UGGridEntityPointers

[[Imported from SVN: r4484]]
parent 9ae38a9c
No related branches found
No related tags found
No related merge requests found
...@@ -450,8 +450,8 @@ namespace Dune { ...@@ -450,8 +450,8 @@ namespace Dune {
void getChildrenOfSubface(typename Traits::template Codim<0>::EntityPointer & e, void getChildrenOfSubface(typename Traits::template Codim<0>::EntityPointer & e,
int elementSide, int elementSide,
int maxl, int maxl,
Array<typename Dune::UGGridEntityPointer<0,UGGrid> >& childElements, std::vector<typename Traits::template Codim<0>::EntityPointer>& childElements,
Array<unsigned char>& childElementSides) const; std::vector<unsigned char>& childElementSides) const;
/** \brief The different forms of grid refinement that UG supports */ /** \brief The different forms of grid refinement that UG supports */
enum RefinementType { enum RefinementType {
......
...@@ -562,8 +562,8 @@ template <int dim, int dimworld> ...@@ -562,8 +562,8 @@ template <int dim, int dimworld>
void Dune::UGGrid<dim,dimworld>::getChildrenOfSubface(typename Traits::template Codim<0>::EntityPointer & e, void Dune::UGGrid<dim,dimworld>::getChildrenOfSubface(typename Traits::template Codim<0>::EntityPointer & e,
int elementSide, int elementSide,
int maxl, int maxl,
Array<typename Dune::UGGridEntityPointer<0, UGGrid> >& childElements, std::vector<typename Traits::template Codim<0>::EntityPointer>& childElements,
Array<unsigned char>& childElementSides) const std::vector<unsigned char>& childElementSides) const
{ {
typedef typename TargetType<0,dim>::T ElementType; typedef typename TargetType<0,dim>::T ElementType;
...@@ -574,7 +574,8 @@ void Dune::UGGrid<dim,dimworld>::getChildrenOfSubface(typename Traits::template ...@@ -574,7 +574,8 @@ void Dune::UGGrid<dim,dimworld>::getChildrenOfSubface(typename Traits::template
// The starting level // The starting level
int level = e->level(); int level = e->level();
const int MAX_SONS = 30; // copied from UG /** \todo This is a copy from within UG. It should be used directly. */
const int MAX_SONS = 30;
// ////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////
// Change the input face number from Dune numbering to UG numbering // Change the input face number from Dune numbering to UG numbering
...@@ -643,20 +644,23 @@ void Dune::UGGrid<dim,dimworld>::getChildrenOfSubface(typename Traits::template ...@@ -643,20 +644,23 @@ void Dune::UGGrid<dim,dimworld>::getChildrenOfSubface(typename Traits::template
// ////////////////////////////// // //////////////////////////////
// Extract result from stack // Extract result from stack
// ////////////////////////////// // //////////////////////////////
childElements.resize(list.size());
/** \todo Initialized with a dummy value because EntityPointer isn't default constructible */
childElements.resize(list.size(), lbegin<0>(0));
childElementSides.resize(list.size()); childElementSides.resize(list.size());
int i=0; int i=0;
for (f = list.begin(); f!=list.end(); ++f, ++i) { for (f = list.begin(); f!=list.end(); ++f, ++i) {
// Set element // Set element
childElements[i].setToTarget(Element<0>::get(*f), Element<2>::get(*f)); //childElements[i].setToTarget(Element<0>::get(*f), Element<2>::get(*f));
this->getRealImplementation(childElements[i]).setToTarget(Element<0>::get(*f), Element<2>::get(*f));
int side = Element<1>::get(*f); int side = Element<1>::get(*f);
// Dune numbers the faces of several elements differently than UG. // Dune numbers the faces of several elements differently than UG.
// The following switch does the transformation // The following switch does the transformation
side = UGGridRenumberer<dim>::facesUGtoDUNE(side, childElements[i].dereference().geometry().type()); side = UGGridRenumberer<dim>::facesUGtoDUNE(side, childElements[i]->geometry().type());
childElementSides[i] = side; childElementSides[i] = side;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment