From 8a471230545d30c0811578b92aa8783be4b1a635 Mon Sep 17 00:00:00 2001
From: Tristan Carrier Baudouin <tristan.carrier@uclouvain.be>
Date: Tue, 2 Apr 2013 14:30:27 +0000
Subject: [PATCH] periodical

---
 Mesh/periodical.cpp | 119 +++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 113 insertions(+), 6 deletions(-)

diff --git a/Mesh/periodical.cpp b/Mesh/periodical.cpp
index 81ea8b151c..ffb29169c0 100644
--- a/Mesh/periodical.cpp
+++ b/Mesh/periodical.cpp
@@ -236,9 +236,10 @@ void voroMetal3D::execute(std::vector<SPoint3>& vertices,std::vector<double>& ra
   file << "View \"test\" {\n";
 
   std::ofstream file2("MicrostructurePolycrystal3D.geo");
-
+  std::ofstream file5("SET.map");
   file2 << "c=" << h << ";\n";
-		
+  int countPeriodSurf=0;
+  int countVolume=0;	
   for(i=0;i<pointers.size();i++){
 	obj = geo_cell();
 
@@ -333,6 +334,8 @@ void voroMetal3D::execute(std::vector<SPoint3>& vertices,std::vector<double>& ra
 
 	for(j=0;j<obj.line_loops2.size();j++){
 	  print_geo_face(get_counter(),obj.line_loops2[j],file2);
+	  countPeriodSurf++;
+	  file5 <<get_counter()<< "\t" <<"SURFACE"<<get_counter()<<"\t"<<"NSET\n";
 	  obj.faces2.push_back(get_counter());
 	  increase_counter();
 	}
@@ -343,8 +346,10 @@ void voroMetal3D::execute(std::vector<SPoint3>& vertices,std::vector<double>& ra
 
 	print_geo_volume(get_counter(),obj.face_loops2,file2);
 	mem = get_counter();
+	countVolume++;
+	file5 <<get_counter()<< "\t" <<"GRAIN"<<countVolume<<"\t"<<"ELSET\n";
         increase_counter();
-        print_geo_physical_volume(get_counter(),mem,file2);	
+        print_geo_physical_volume(get_counter(),mem,file2);
 	increase_counter();
   }
 
@@ -534,7 +539,7 @@ void voroMetal3D::correspondance(double e){
   std::ofstream file("MicrostructurePolycrystal3D.pos");
   file << "View \"test\" {\n";
   
-  std::ofstream file2("vectors");
+  std::ofstream file2("PERIODIC.map");
 	
   for(i=0;i<faces.size();i++){
     for(j=0;j<faces.size();j++){
@@ -563,8 +568,110 @@ void voroMetal3D::correspondance(double e){
 			
 		  print_segment(p1,p2,file);
 		  
-		  file2 << faces[i]->tag() << " " << faces[j]->tag() << " " << p2.x()-p1.x() << " " << p2.y()-p1.y() << " " << p2.z()-p1.z() << "\n";	
-			
+		  //file2 << "PERIODIC\tSURFACE"<<faces[i]->tag() << "\tSURFACE" << faces[j]->tag() << "\t" << p2.x()-p1.x() << "\t" << p2.y()-p1.y() << "\t" << p2.z()-p1.z() << "\n";	
+		  if (abs((p2.x()-p1.x()-1.0))<0.0001){
+			if (abs((p2.y()-p1.y()))<0.0001){
+				if (abs((p2.z()-p1.z()))<0.0001){
+					file2 << "NSET\tFRONT = FRONT + SURFACE"<<faces[j]->tag()<<"\n";
+					file2 << "NSET\tBACK = BACK + SURFACE"<<faces[i]->tag()<<"\n";
+				}else if(abs((p2.z()-p1.z()-1.0))<0.0001){
+					file2 << "NSET\tFRONTTOP = FRONTTOP + SURFACE"<<faces[j]->tag()<<"\n";
+					file2 << "NSET\tBACKBOTTOM = BACKBOTTOM + SURFACE"<<faces[i]->tag()<<"\n";
+				}else if (abs((p1.z()-p2.z()-1.0))<0.0001){
+					file2 << "NSET\tFRONTBOTTOM = FRONTBOTTOM + SURFACE"<<faces[j]->tag()<<"\n";
+                                        file2 << "NSET\tBACKTOP = BACKTOP + SURFACE"<<faces[i]->tag()<<"\n";
+				}
+			}else if (abs((p2.y()-p1.y()-1.0))<0.0001){
+				if (abs((p2.z()-p1.z()))<0.0001){
+                                        file2 << "NSET\tFRONTRIGHT = FRONTRIGHT + SURFACE"<<faces[j]->tag()<<"\n";
+                                        file2 << "NSET\tBACKLEFT = BACKLEFT + SURFACE"<<faces[i]->tag()<<"\n";
+                                }else if (abs((p2.z()-p1.z()-1.0))<0.0001){
+				        file2 << "NSET\tFRONTRIGHTTOP = FRONTRIGHTTOP + SURFACE"<<faces[j]->tag()<<"\n";
+                                        file2 << "NSET\tBACKLEFTBOTTOM = BACKLEFTBOTTOM + SURFACE"<<faces[i]->tag()<<"\n";
+                                }else if (abs((p1.z()-p2.z()-1.0))<0.0001){
+                                        file2 << "NSET\tFRONTRIGHTBOTTOM = FRONTRIGHTBOTTOM + SURFACE"<<faces[j]->tag()<<"\n";
+                                        file2 << "NSET\tBACKLEFTTOP = BACKLEFTTOP + SURFACE"<<faces[i]->tag()<<"\n";
+				}
+			}else if (abs((p1.y()-p2.y()-1.0))<0.0001){
+				if (abs((p2.z()-p1.z()))<0.0001){
+                                        file2 << "NSET\tFRONTLEFT = FRONTLEFT + SURFACE"<<faces[j]->tag()<<"\n";
+                                        file2 << "NSET\tBACKRIGHT = BACKRIGHT + SURFACE"<<faces[i]->tag()<<"\n";
+                                }else if (abs((p2.z()-p1.z()-1.0))<0.0001){
+                                        file2 << "NSET\tFRONTLEFTTOP = FRONTLEFTTOP + SURFACE"<<faces[j]->tag()<<"\n";
+                                        file2 << "NSET\tBACKRIGHTBOTTOM = BACKRIGHTBOTTOM + SURFACE"<<faces[i]->tag()<<"\n";
+                                }else if (abs((p1.z()-p2.z()-1.0))<0.0001){
+                                        file2 << "NSET\tFRONTLEFTBOTTOM = FRONTLEFTBOTTOM + SURFACE"<<faces[j]->tag()<<"\n";
+                                        file2 << "NSET\tBACKRIGHTTOP = BACKRIGHTTOP + SURFACE"<<faces[i]->tag()<<"\n";
+                                }
+			}
+		  }else if (abs((p1.x()-p2.x()-1.0))<0.0001){
+			if (abs((p2.y()-p1.y()))<0.0001){
+                                if (abs((p2.z()-p1.z()))<0.0001){
+                                        file2 << "NSET\tFRONT = FRONT + SURFACE"<<faces[i]->tag()<<"\n";
+                                        file2 << "NSET\tBACK = BACK + SURFACE"<<faces[j]->tag()<<"\n";
+                                }else if(abs((p2.z()-p1.z()-1.0))<0.0001){
+                                        file2 << "NSET\tFRONTBOTTOM = FRONTBOTTOM + SURFACE"<<faces[i]->tag()<<"\n";
+                                        file2 << "NSET\tBACKTOP = BACKTOP + SURFACE"<<faces[j]->tag()<<"\n";
+                                }else if (abs((p1.z()-p2.z()-1.0))<0.0001){
+                                        file2 << "NSET\tFRONTTOP = FRONTTOP + SURFACE"<<faces[i]->tag()<<"\n";
+                                        file2 << "NSET\tBACKBOTTOM = BACKBOTTOM + SURFACE"<<faces[j]->tag()<<"\n";
+                                }
+                        }else if (abs((p2.y()-p1.y()-1.0))<0.0001){
+                                if (abs((p2.z()-p1.z()))<0.0001){
+                                        file2 << "NSET\tFRONTLEFT = FRONTLEFT + SURFACE"<<faces[i]->tag()<<"\n";
+                                        file2 << "NSET\tBACKRIGHT = BACKRIGHT + SURFACE"<<faces[j]->tag()<<"\n";
+                                }else if (abs((p2.z()-p1.z()-1.0))<0.0001){
+                                        file2 << "NSET\tFRONTLEFTBOTTOM = FRONTLEFTBOTTOM + SURFACE"<<faces[i]->tag()<<"\n";
+                                        file2 << "NSET\tBACKRIGHTTOP = BACKRIGHTTOP + SURFACE"<<faces[j]->tag()<<"\n";
+                                }else if (abs((p1.z()-p2.z()-1.0))<0.0001){
+                                        file2 << "NSET\tFRONTLEFTTOP = FRONTLEFTTOP + SURFACE"<<faces[i]->tag()<<"\n";
+                                        file2 << "NSET\tBACKRIGHTBOTTOM = BACKRIGHTBOTTOM + SURFACE"<<faces[j]->tag()<<"\n";
+                                }
+                        }else if (abs((p1.y()-p2.y()-1.0))<0.0001){
+                                if (abs((p2.z()-p1.z()))<0.0001){
+                                        file2 << "NSET\tFRONTRIGHT = FRONTRIGHT + SURFACE"<<faces[i]->tag()<<"\n";
+                                        file2 << "NSET\tBACKLEFT = BACKLEFT + SURFACE"<<faces[j]->tag()<<"\n";
+                                }else if (abs((p2.z()-p1.z()-1.0))<0.0001){
+                                        file2 << "NSET\tFRONTRIGHTBOTTOM = FRONTRIGHTBOTTOM + SURFACE"<<faces[i]->tag()<<"\n";
+                                        file2 << "NSET\tBACKLEFTTOP = BACKLEFTTOP + SURFACE"<<faces[j]->tag()<<"\n";
+                                }else if (abs((p1.z()-p2.z()-1.0))<0.0001){
+                                        file2 << "NSET\tFRONTRIGHTTOP = FRONTRIGHTTOP + SURFACE"<<faces[i]->tag()<<"\n";
+                                        file2 << "NSET\tBACKLEFTBOTTOM = BACKLEFTBOTTOM + SURFACE"<<faces[j]->tag()<<"\n";
+                                }
+                        }
+		  }else if (abs((p1.x()-p2.x()))<0.0001){
+			  if (abs((p2.y()-p1.y()-1.0))<0.0001){
+				if (abs((p2.z()-p1.z()))<0.0001){
+        	                	file2 << "NSET\tRIGHT = RIGHT + SURFACE"<<faces[j]->tag()<<"\n";
+                	        	file2 << "NSET\tLEFT = LEFT + SURFACE"<<faces[i]->tag()<<"\n";
+				}else if (abs((p2.z()-p1.z()-1.0))<0.0001){
+					file2 << "NSET\tRIGHTTOP = RIGHTTOP + SURFACE"<<faces[j]->tag()<<"\n";
+                                        file2 << "NSET\tLEFTBOTTOM = LEFTBOTTOM + SURFACE"<<faces[i]->tag()<<"\n";
+				}else if (abs((p1.z()-p2.z()-1.0))<0.0001){
+					file2 << "NSET\tRIGHTBOTTOM = RIGHTBOTTOM + SURFACE"<<faces[j]->tag()<<"\n";
+                                        file2 << "NSET\tLEFTTOP = LEFTTOP + SURFACE"<<faces[i]->tag()<<"\n";
+				}
+	                  }else if (abs((p1.y()-p2.y()-1.0))<0.0001){
+				if (abs((p2.z()-p1.z()))<0.0001){
+                                        file2 << "NSET\tRIGHT = RIGHT + SURFACE"<<faces[i]->tag()<<"\n";
+                                        file2 << "NSET\tLEFT = LEFT + SURFACE"<<faces[j]->tag()<<"\n";
+                                }else if (abs((p2.z()-p1.z()-1.0))<0.0001){
+                                        file2 << "NSET\tRIGHTBOTTOM = RIGHTBOTTOM + SURFACE"<<faces[i]->tag()<<"\n";
+                                        file2 << "NSET\tLEFTTOP = LEFTTOP + SURFACE"<<faces[j]->tag()<<"\n";
+                                }else if (abs((p1.z()-p2.z()-1.0))<0.0001){
+                                        file2 << "NSET\tRIGHTTOP = RIGHTTOP + SURFACE"<<faces[i]->tag()<<"\n";
+                                        file2 << "NSET\tLEFTBOTTOM = LEFTBOTTOM + SURFACE"<<faces[j]->tag()<<"\n";
+                                }
+	                  }else if (abs((p1.y()-p2.y()))<0.0001){
+			  	if (abs((p2.z()-p1.z()-1.0))<0.0001){
+                	        	file2 << "NSET\tTOP = TOP + SURFACE"<<faces[j]->tag()<<"\n";
+                        		file2 << "NSET\tBOTTOM = BOTTOM + SURFACE"<<faces[i]->tag()<<"\n";
+	                  	}else if (abs((p1.z()-p2.z()-1.0))<0.0001){
+        	                	file2 << "NSET\tTOP = TOP + SURFACE"<<faces[i]->tag()<<"\n";
+                	        	file2 << "NSET\tBOTTOM = BOTTOM + SURFACE"<<faces[j]->tag()<<"\n";
+                  	  	}
+			  }
+		  }
 		  count++;
 		}
 	  }
-- 
GitLab