]> SALOME platform Git repositories - plugins/netgenplugin.git/commitdiff
Salome HOME
22483: EDF 2772 SMESH: Define several 3D viscous layer hypotheses on the same Geometry
authoreap <eap@opencascade.com>
Fri, 22 Aug 2014 11:38:59 +0000 (15:38 +0400)
committereap <eap@opencascade.com>
Fri, 22 Aug 2014 11:38:59 +0000 (15:38 +0400)
src/NETGENPlugin/NETGENPlugin_NETGEN_2D.cxx
src/NETGENPlugin/NETGENPlugin_NETGEN_2D_ONLY.cxx
src/NETGENPlugin/NETGENPlugin_NETGEN_3D.cxx

index e14961a222b86b96c970fbc6c010f7748bb0d36a..b46a47b848f23d1ef6b5afa67436e28b0d967fcb 100644 (file)
@@ -112,6 +112,9 @@ bool NETGENPlugin_NETGEN_2D::CheckHypothesis (SMESH_Mesh&         aMesh,
       _hypothesis = theHyp;
   }
 
+  if ( aStatus == HYP_OK && _isViscousLayers2D )
+    error( StdMeshers_ViscousLayers2D::CheckHypothesis( aMesh, aShape, aStatus ));
+
   return aStatus == SMESH_Hypothesis::HYP_OK;
 }
 
index 6c54aac394430684e16033129026101c135aaa65..4cbe7bec2b570c556ef7d12c99eaf17376d8c111 100644 (file)
@@ -141,6 +141,7 @@ bool NETGENPlugin_NETGEN_2D_ONLY::CheckHypothesis (SMESH_Mesh&         aMesh,
 
   aStatus = HYP_MISSING;
 
+  bool hasVL = false;
   list<const SMESHDS_Hypothesis*>::const_iterator ith;
   for (ith = hyps.begin(); ith != hyps.end(); ++ith )
   {
@@ -157,7 +158,7 @@ bool NETGENPlugin_NETGEN_2D_ONLY::CheckHypothesis (SMESH_Mesh&         aMesh,
     else if ( hypName == "NETGEN_Parameters_2D" )
       _hypParameters = static_cast<const NETGENPlugin_Hypothesis_2D*>(hyp);
     else if ( hypName == StdMeshers_ViscousLayers2D::GetHypType() )
-      continue;
+      hasVL = true;
     else {
       aStatus = HYP_INCOMPATIBLE;
       return false;
@@ -167,6 +168,8 @@ bool NETGENPlugin_NETGEN_2D_ONLY::CheckHypothesis (SMESH_Mesh&         aMesh,
   int nbHyps = bool(_hypMaxElementArea) + bool(_hypLengthFromEdges) + bool(_hypParameters );
   if ( nbHyps > 1 )
     aStatus = HYP_CONCURENT;
+  else if ( hasVL )
+    error( StdMeshers_ViscousLayers2D::CheckHypothesis( aMesh, aShape, aStatus ));
   else
     aStatus = HYP_OK;
 
index 3b76646799395d42573ebd746e5ce6bbde96a190..103b0776922451c3923221ad1093ab1a8061ea8e 100644 (file)
@@ -162,7 +162,7 @@ bool NETGENPlugin_NETGEN_3D::CheckHypothesis (SMESH_Mesh&         aMesh,
   {
     if ( !_hypMaxElementVolume )
       _hypMaxElementVolume = dynamic_cast< const StdMeshers_MaxElementVolume*> ( *h );
-    if ( !_viscousLayersHyp )
+    // if ( !_viscousLayersHyp ) several _viscousLayersHyp's allowed
       _viscousLayersHyp = dynamic_cast< const StdMeshers_ViscousLayers*> ( *h );
     if ( ! _hypParameters )
       _hypParameters = dynamic_cast< const NETGENPlugin_Hypothesis*> ( *h );
@@ -174,6 +174,8 @@ bool NETGENPlugin_NETGEN_3D::CheckHypothesis (SMESH_Mesh&         aMesh,
   }
   if ( _hypMaxElementVolume && _hypParameters )
     aStatus = HYP_INCOMPATIBLE;
+  else if ( aStatus == HYP_OK && _viscousLayersHyp )
+    error( _viscousLayersHyp->CheckHypothesis( aMesh, aShape, aStatus ));
 
   if ( _hypMaxElementVolume )
     _maxElementVolume = _hypMaxElementVolume->GetMaxVolume();