]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
Implementation of the
authorrnv <rnv@opencascade.com>
Thu, 12 Jan 2012 11:41:41 +0000 (11:41 +0000)
committerrnv <rnv@opencascade.com>
Thu, 12 Jan 2012 11:41:41 +0000 (11:41 +0000)
1) 0021347: [CEA 497] Visualisation into SMESH and VISU of hexagonal prism cells (MED_OCTA12).
2) 0021380: EDF 1937 SMESH: Take into account QUAD9 and HEXA27.

in the POST-PRO and SMESH modules.

src/CONVERTOR/VISU_ConvertorDef.hxx
src/CONVERTOR/VISU_ConvertorUtils.cxx
src/CONVERTOR/VISU_MedConvertor.cxx
src/CONVERTOR/VISU_MeshValue.cxx
src/CONVERTOR/VISU_Structures_impl.cxx
src/CONVERTOR/VISU_Vtk2MedConvertor.cxx

index dc0eabfcfdc5005ce0aeece349fecd22bf90f723..cc71569c04f2cd00b34eb4bb7eb8a06024b94ef0 100644 (file)
@@ -44,9 +44,9 @@ namespace VISU
   //---------------------------------------------------------------
   //! Defines VISU enumeration of geometrical types
   enum EGeometry {ePOINT1=1, eSEG2=102, eSEG3=103, eTRIA3=203,
-                  eQUAD4=204, eTRIA6=206,eQUAD8=208, eTETRA4=304,
-                  ePYRA5=305, ePENTA6=306, eHEXA8=308, eTETRA10=310, 
-                  ePYRA13=313, ePENTA15=315, eHEXA20=320, 
+                  eQUAD4=204, eTRIA6=206,eQUAD8=208, eQUAD9=209, eTETRA4=304,
+                  ePYRA5=305, ePENTA6=306, eHEXA8=308, eOCTA12=312, eTETRA10=310, 
+                  ePYRA13=313, ePENTA15=315, eHEXA20=320, eHEXA27=327,
                   ePOLYGONE=400, ePOLYEDRE=500, eNONE=-1};
 
 
index ab8088d6b494dc866fff92b6b931abd6efb4a121..130482094cf3df6ff21e54bf31fe604b5462d542 100644 (file)
@@ -68,10 +68,14 @@ namespace VISU
       return 3;
     case VISU::eQUAD8: 
       return 4;
+    case VISU::eQUAD9:
+      return 4;
     case VISU::eTETRA10: 
       return 4;
     case VISU::eHEXA20: 
       return 8;
+    case VISU::eHEXA27: 
+      return 8;
     case VISU::ePENTA15: 
       return 6;
     case VISU::ePYRA13: 
@@ -107,7 +111,8 @@ namespace VISU
       return VTK_WEDGE;
     case VISU::ePYRA5: 
       return VTK_PYRAMID;
-
+    case VISU::eOCTA12: 
+      return VTK_HEXAGONAL_PRISM;
     case VISU::ePOLYGONE: 
       return VTK_POLYGON;
     case VISU::ePOLYEDRE: 
@@ -120,10 +125,14 @@ namespace VISU
       return VTK_TRIANGLE;
     case VISU::eQUAD8: 
       return VTK_QUAD;
+    case VISU::eQUAD9: 
+      return VTK_QUAD;
     case VISU::eTETRA10: 
       return VTK_TETRA;
     case VISU::eHEXA20: 
       return VTK_HEXAHEDRON;
+    case VISU::eHEXA27: 
+      return VTK_TRIQUADRATIC_HEXAHEDRON;
     case VISU::ePENTA15: 
       return VTK_WEDGE;
     case VISU::ePYRA13: 
@@ -152,6 +161,13 @@ namespace VISU
       return VTK_POLYGON;
 #endif
 
+    case VISU::eQUAD9:
+#if defined(VISU_USE_VTK_QUADRATIC)
+      return VTK_BIQUADRATIC_QUAD;
+#else
+      return VTK_POLYGON;
+#endif
+
     case VISU::eTETRA10: 
 #if defined(VISU_USE_VTK_QUADRATIC)
       return VTK_QUADRATIC_TETRA;
@@ -166,6 +182,13 @@ namespace VISU
       return VTK_CONVEX_POINT_SET;
 #endif
 
+    case VISU::eHEXA27: 
+#if defined(VISU_USE_VTK_QUADRATIC)
+      return VTK_TRIQUADRATIC_HEXAHEDRON;
+#else
+      return VTK_CONVEX_POINT_SET;
+#endif
+
     case VISU::ePENTA15: 
 #if defined(VISU_USE_VTK_QUADRATIC)
       return VTK_QUADRATIC_WEDGE;
index 8801b54d9cf6632780367d792982de261594a0ae..2f2cc48c8835ecbffa120423a8921a5bf5e8fedf 100644 (file)
@@ -101,8 +101,11 @@ namespace
     case MED::eSEG3: return VISU::eSEG3;
     case MED::eTRIA6: return VISU::eTRIA6;
     case MED::eQUAD8: return VISU::eQUAD8;
+    case MED::eQUAD9: return VISU::eQUAD9;
+    case MED::eOCTA12: return VISU::eOCTA12;
     case MED::eTETRA10: return VISU::eTETRA10;
     case MED::eHEXA20: return VISU::eHEXA20;
+    case MED::eHEXA27: return VISU::eHEXA27;
     case MED::ePENTA15: return VISU::ePENTA15;
     case MED::ePYRA13: return VISU::ePYRA13;
 
@@ -130,8 +133,11 @@ namespace
     case VISU::eSEG3: return MED::eSEG3;
     case VISU::eTRIA6: return MED::eTRIA6;
     case VISU::eQUAD8: return MED::eQUAD8;
+    case VISU::eQUAD9: return MED::eQUAD9;
+    case VISU::eOCTA12: return MED::eOCTA12;
     case VISU::eTETRA10: return MED::eTETRA10;
     case VISU::eHEXA20: return MED::eHEXA20;
+    case VISU::eHEXA27: return MED::eHEXA27;
     case VISU::ePENTA15: return MED::ePENTA15;
     case VISU::ePYRA13: return MED::ePYRA13;
 
@@ -2619,6 +2625,20 @@ VISU_MedConvertor
               anArray[7] = aConnect[7];  
               break;
 #endif
+#if !(defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
+            case MED::eQUAD9:
+              anArray[0] = aConnect[0];
+              anArray[2] = aConnect[1];  
+              anArray[4] = aConnect[2];  
+              anArray[6] = aConnect[3];  
+
+              anArray[1] = aConnect[4];
+              anArray[3] = aConnect[5];  
+              anArray[5] = aConnect[6];  
+              anArray[7] = aConnect[7];  
+                         anArray[8] = aConnect[8];
+              break;
+#endif
 #if (defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
             case MED::eTETRA10:
               anArray[0] = aConnect[0];
@@ -2644,6 +2664,7 @@ VISU_MedConvertor
 #if (defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
             case MED::ePYRA13:
               anArray[0] = aConnect[0];
+
               anArray[1] = aConnect[3];
               anArray[2] = aConnect[2];  
               anArray[3] = aConnect[1];  
@@ -2667,6 +2688,43 @@ VISU_MedConvertor
               anArray[3] = aConnect[1];  
               anArray[4] = aConnect[4];
               break;
+#if (defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
+                       case MED::eHEXA27:
+              anArray[0] = aConnect[0];
+              anArray[1] = aConnect[3];
+              anArray[2] = aConnect[2];  
+              anArray[3] = aConnect[1];  
+
+              anArray[4] = aConnect[4];
+              anArray[5] = aConnect[7];
+              anArray[6] = aConnect[6];
+              anArray[7] = aConnect[5];
+
+                         anArray[8] = aConnect[11];    
+                         anArray[9] = aConnect[10];  
+              anArray[10] = aConnect[9];  
+                         anArray[11] = aConnect[8];
+
+                         anArray[12] = aConnect[15];   
+                         anArray[13] = aConnect[14];
+              anArray[14] = aConnect[13];
+                         anArray[15] = aConnect[12];
+
+                         anArray[16] = aConnect[16];   
+                         anArray[17] = aConnect[19];
+              anArray[18] = aConnect[18];
+                         anArray[19] = aConnect[17];
+
+                         anArray[20] = aConnect[21];
+                 anArray[21] = aConnect[23];
+              anArray[22] = aConnect[24];
+                         anArray[23] = aConnect[22];
+
+                         anArray[24] = aConnect[20];
+                 anArray[25] = aConnect[25];
+              anArray[26] = aConnect[26];
+              break;
+#endif
             default:
               for(int iNode = 0; iNode < aVNbNodes; iNode++) 
                 anArray[iNode] = aConnect[iNode];
index 123194f1d77fce41cdb30109a19879d6305db592..851aaa7fdb043dc8b2174d1c865f65610dc2553c 100644 (file)
@@ -773,6 +773,20 @@ namespace VISU
       anArray[5] = 6;
       anArray[7] = 7;
       break;
+#endif
+#if !(defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
+    case eQUAD9:
+      anArray[0] = 0;
+      anArray[2] = 1;
+      anArray[4] = 2;
+      anArray[6] = 3;
+
+      anArray[1] = 4;
+      anArray[3] = 5;
+      anArray[5] = 6;
+      anArray[7] = 7;
+         anArray[8] = 8;
+      break;
 #endif
     case eTETRA4:
       anArray[0] = 0;
@@ -822,6 +836,43 @@ namespace VISU
       anArray[11] = 11;
       anArray[12] = 10;
       break;
+#endif
+#if (defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
+       case eHEXA27:
+      anArray[0] = 0;
+      anArray[1] = 3;
+      anArray[2] = 2; 
+      anArray[3] = 1; 
+
+      anArray[4] = 4;
+      anArray[5] = 7;
+      anArray[6] = 6;
+      anArray[7] = 5;
+
+         anArray[8] = 11;
+         anArray[9] = 10;
+      anArray[10] = 9;
+         anArray[11] = 8;
+
+         anArray[12] = 15;
+         anArray[13] = 14;
+      anArray[14] = 13;
+         anArray[15] = 12;
+
+         anArray[16] = 16;
+         anArray[17] = 19;
+      anArray[18] = 18;
+         anArray[19] = 17;
+
+         anArray[20] = 21;
+         anArray[21] = 23;
+      anArray[22] = 24;
+         anArray[23] = 22;
+
+         anArray[24] = 20;
+         anArray[25] = 25;
+      anArray[26] = 26;
+      break;
 #endif
     default:
       for(int i=0;i<anArray.size();i++){
index 773d6b113bbb43e580dae97862e14adb5b2b54b8..750ce46103582e8fd6e740a88a59570b2d237844 100644 (file)
@@ -191,6 +191,9 @@ namespace VISU
       return VISU::ePENTA6;
     case VTK_PYRAMID:
       return VISU::ePYRA5;
+    case VTK_HEXAGONAL_PRISM:
+      return VISU::eOCTA12;
+
 
     case VTK_POLYGON:
       return VISU::ePOLYGONE;
@@ -208,12 +211,18 @@ namespace VISU
     case VTK_QUADRATIC_QUAD:
       return VISU::eQUAD8;
 
+    case VTK_BIQUADRATIC_QUAD:
+      return VISU::eQUAD9;
+
     case VTK_QUADRATIC_TETRA:
       return VISU::eTETRA10;
 
     case VTK_QUADRATIC_HEXAHEDRON:
       return VISU::eHEXA20;
 
+    case VTK_TRIQUADRATIC_HEXAHEDRON:
+      return VISU::eHEXA27;
+
     case VTK_QUADRATIC_WEDGE:
       return VISU::ePENTA15;
 
index 9c5d88fe50155c7517cf807ca021fca034c28cf5..c529af48905b44b0985910cd50302b618a459740 100644 (file)
@@ -130,12 +130,15 @@ static MED::EGeometrieElement VTK2MED( const int theGeom )
   case VTK_HEXAHEDRON:       return MED::eHEXA8;
   case VTK_WEDGE:            return MED::ePENTA6;
   case VTK_PYRAMID:          return MED::ePYRA5;
+  case VTK_HEXAGONAL_PRISM:  return MED::eOCTA12;
   // QUADRATIC elements
   case VTK_QUADRATIC_EDGE:      return MED::eSEG3;
   case VTK_QUADRATIC_TRIANGLE:  return MED::eTRIA6;
   case VTK_QUADRATIC_QUAD:      return MED::eQUAD8;
+  case VTK_BIQUADRATIC_QUAD:      return MED::eQUAD9;
   case VTK_QUADRATIC_TETRA:     return MED::eTETRA10;
   case VTK_QUADRATIC_HEXAHEDRON:return MED::eHEXA20;
+  case VTK_TRIQUADRATIC_HEXAHEDRON :return MED::eHEXA27;
   case VTK_CONVEX_POINT_SET:    return MED::ePOLYEDRE;
   }