Salome HOME
Merge commit '6600bcec782fc8b6c72871fe6e08bd19a34a4e2b'
[modules/smesh.git] / src / SMESH_I / SMESH_Filter_i.cxx
index 40b20acbb26dae4b524cd72e21ce844c49183693..cb9a44e4ac6cfd51d97c8d458288644795d29f6e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2023  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -460,6 +460,21 @@ namespace SMESH {
     return SMESH::FT_Volume3D;
   }
 
+  /*
+    Class       : ScaledJacobian_i
+    Description : Functor for calculating volume of 3D element
+  */
+  ScaledJacobian_i::ScaledJacobian_i()
+  {
+    myNumericalFunctorPtr.reset( new Controls::ScaledJacobian() );
+    myFunctorPtr = myNumericalFunctorPtr;
+  }
+
+  FunctorType ScaledJacobian_i::GetFunctorType()
+  {
+    return SMESH::FT_ScaledJacobian;
+  }
+
   /*
     Class       : MaxElementLength2D_i
     Description : Functor for calculating maximum length of 2D element
@@ -2126,6 +2141,13 @@ namespace SMESH {
     return anObj._retn();
   }
 
+  ScaledJacobian_ptr FilterManager_i::CreateScaledJacobian()
+  {
+    SMESH::ScaledJacobian_i* aServant = new SMESH::ScaledJacobian_i();
+    SMESH::ScaledJacobian_var anObj   = aServant->_this();
+    TPythonDump()<<aServant<<" = "<<this<<".CreateScaledJacobian()";
+    return anObj._retn();
+  }
 
   MaxElementLength2D_ptr FilterManager_i::CreateMaxElementLength2D()
   {
@@ -3076,6 +3098,9 @@ namespace SMESH {
         case SMESH::FT_NodeConnectivityNumber:
           aFunctor = aFilterMgr->CreateNodeConnectivityNumber();
           break;
+        case SMESH::FT_ScaledJacobian:
+          aFunctor = aFilterMgr->CreateScaledJacobian();
+          break;
 
         // Predicates
 
@@ -3512,6 +3537,7 @@ namespace SMESH {
       case FT_Skew                  : return "Skew";
       case FT_Area                  : return "Area";
       case FT_Volume3D              : return "Volume3D";
+      case FT_ScaledJacobian        : return "ScaledJacobian";
       case FT_MaxElementLength2D    : return "Max element length 2D";
       case FT_MaxElementLength3D    : return "Max element length 3D";
       case FT_BelongToMeshGroup     : return "Belong to Mesh Group";
@@ -3568,6 +3594,7 @@ namespace SMESH {
     else if ( theStr.equals( "Skew"                         ) ) return FT_Skew;
     else if ( theStr.equals( "Area"                         ) ) return FT_Area;
     else if ( theStr.equals( "Volume3D"                     ) ) return FT_Volume3D;
+    else if ( theStr.equals( "ScaledJacobian"               ) ) return FT_ScaledJacobian;
     else if ( theStr.equals( "Max element length 2D"        ) ) return FT_MaxElementLength2D;
     else if ( theStr.equals( "Max element length 3D"        ) ) return FT_MaxElementLength3D;
     else if ( theStr.equals( "Belong to Mesh Group"         ) ) return FT_BelongToMeshGroup;
@@ -4141,6 +4168,7 @@ namespace SMESH {
       "FT_Skew",
       "FT_Area",
       "FT_Volume3D",
+      "FT_ScaledJacobian",
       "FT_MaxElementLength2D",
       "FT_MaxElementLength3D",
       "FT_FreeBorders",
@@ -4185,11 +4213,9 @@ namespace SMESH {
       "FT_LogicalOR",
       "FT_Undefined"};
 
-  #ifdef _DEBUG_
     // check if functName is complete, compilation failure means that enum FunctorType changed
-    const int nbFunctors = sizeof(functName) / sizeof(const char*);
-    int _assert[( nbFunctors == SMESH::FT_Undefined + 1 ) ? 2 : -1 ]; _assert[0]=_assert[1]=0;
-  #endif
+    static_assert( sizeof(functName) / sizeof(const char*) == SMESH::FT_Undefined + 1,
+                   "Update names of FunctorType's!!!" );
 
     return functName;
   }