From 30fa96ccdfcfbc7592e93a31325b55c67b526511 Mon Sep 17 00:00:00 2001
From: Jonathan Lambrechts <jonathan.lambrechts@uclouvain.be>
Date: Wed, 2 Dec 2009 10:49:53 +0000
Subject: [PATCH] dg : first step towards 1d in addition of 2d and 3d

---
 Solver/dgAlgorithm.cpp | 49 +++++++++++++++++++++++++++++++-----------
 1 file changed, 36 insertions(+), 13 deletions(-)

diff --git a/Solver/dgAlgorithm.cpp b/Solver/dgAlgorithm.cpp
index d9cf8edb5b..5fd24ac4c0 100644
--- a/Solver/dgAlgorithm.cpp
+++ b/Solver/dgAlgorithm.cpp
@@ -326,6 +326,7 @@ void dgAlgorithm::buildGroups(GModel *model, int dim, int order,
     std::vector<dgGroupOfFaces*> &fGroups,
     std::vector<dgGroupOfFaces*> &bGroups) 
 {
+  std::map<const std::string,std::set<MVertex*> > boundaryVertices;
   std::map<const std::string,std::set<MEdge, Less_Edge> > boundaryEdges;
   std::map<const std::string,std::set<MFace, Less_Face> > boundaryFaces;
   std::vector<GEntity*> entities;
@@ -338,10 +339,19 @@ void dgAlgorithm::buildGroups(GModel *model, int dim, int order,
         const std::string physicalName = model->getPhysicalName(entity->dim(), entity->physicals[j]);
         for (int k = 0; k < entity->getNumMeshElements(); k++) {
           MElement *element = entity->getMeshElement(k);
-          if(dim==2)
-            boundaryEdges[physicalName].insert( MEdge(element->getVertex(0), element->getVertex(1)) );
-          else
-            boundaryFaces[physicalName].insert( MFace(element->getVertex(0), element->getVertex(1),element->getVertex(2)) );
+          switch(dim) {
+            case 1:
+              boundaryVertices[physicalName].insert( element->getVertex(0) ); 
+              break;
+            case 2:
+              boundaryEdges[physicalName].insert( MEdge(element->getVertex(0), element->getVertex(1)) );
+            break;
+            case 3:
+              boundaryFaces[physicalName].insert( MFace(element->getVertex(0), element->getVertex(1),element->getVertex(2)) );
+            break;
+            default :
+            throw;
+          }
         }
       }
     }else if(entity->dim() == dim){
@@ -351,17 +361,30 @@ void dgAlgorithm::buildGroups(GModel *model, int dim, int order,
   }
   eGroups.push_back(new dgGroupOfElements(allElements,order));
   fGroups.push_back(new dgGroupOfFaces(*eGroups[0],order));
-  if(dim==2){
-    std::map<const std::string, std::set<MEdge, Less_Edge> >::iterator mapIt;
-    for(mapIt=boundaryEdges.begin(); mapIt!=boundaryEdges.end(); mapIt++) {
-      bGroups.push_back(new dgGroupOfFaces(*eGroups[0],mapIt->first,order,mapIt->second));
+  switch(dim) {
+    case 1 : {
+      std::map<const std::string, std::set<MVertex*> >::iterator mapIt;
+      /*for(mapIt=boundaryVertices.begin(); mapIt!=boundaryVertices.end(); mapIt++) {
+        bGroups.push_back(new dgGroupOfFaces(*eGroups[0],mapIt->first,order,mapIt->second));
+      }*/
+      throw;
+      break;
     }
-  }else if(dim=3){
-    std::map<const std::string, std::set<MFace, Less_Face> >::iterator mapIt;
-    for(mapIt=boundaryFaces.begin(); mapIt!=boundaryFaces.end(); mapIt++) {
-      bGroups.push_back(new dgGroupOfFaces(*eGroups[0],mapIt->first,order,mapIt->second));
+    case 2 : {
+      std::map<const std::string, std::set<MEdge, Less_Edge> >::iterator mapIt;
+      for(mapIt=boundaryEdges.begin(); mapIt!=boundaryEdges.end(); mapIt++) {
+        bGroups.push_back(new dgGroupOfFaces(*eGroups[0],mapIt->first,order,mapIt->second));
+      }
+      break;
     }
-  }else throw;
+    case 3 : {
+      std::map<const std::string, std::set<MFace, Less_Face> >::iterator mapIt;
+      for(mapIt=boundaryFaces.begin(); mapIt!=boundaryFaces.end(); mapIt++) {
+        bGroups.push_back(new dgGroupOfFaces(*eGroups[0],mapIt->first,order,mapIt->second));
+      }
+      break;
+    }
+  }
 }
 
 // works only if there is only 1 group of element
-- 
GitLab