]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
0020901: [CEA 409] Slowness with Streamlines generation V5_1_3_patch06
authorvsr <vsr@opencascade.com>
Tue, 9 Nov 2010 15:48:47 +0000 (15:48 +0000)
committervsr <vsr@opencascade.com>
Tue, 9 Nov 2010 15:48:47 +0000 (15:48 +0000)
Patch for 5.1.3

resources/SalomeApp.xml
src/PIPELINE/VISU_StreamLinesPL.cxx
src/PIPELINE/VISU_StreamLinesPL.hxx
src/VISUGUI/VISU_msg_en.ts
src/VISUGUI/VisuGUI.cxx

index 590dc43a032d2ff74dcab148af627f9dc9b980fa..cec6090d49b00f0af5791edcb1a02490190eb306 100644 (file)
     <parameter name="scalar_bar_active_local"    value="0"/>
     <parameter name="scalar_bar_bicolor"         value="1"/>
     <parameter name="scalar_bar_spacing"         value="0.01"/>
+    <parameter name="stream_lines_used_points"   value="0.01"/>
     <parameter name="sweeping_number_cycles" value="1"   />
     <parameter name="sweeping_number_steps"  value="20"  />
     <parameter name="sweeping_time_step"     value="0.2" />
index 5ea2c4f9933d64a47e9098d041239ce494da7377..9c70a80c23f3b81ebc5f1dc13733d397122f1d5b 100644 (file)
@@ -34,6 +34,9 @@
 
 #include "VTKViewer_GeometryFilter.h"
 
+#include <SUIT_Session.h>
+#include <SUIT_ResourceMgr.h>
+
 #include <algorithm>
 
 #include <vtkCell.h>
@@ -67,8 +70,9 @@ VISU_StreamLinesPL
   myCenters = vtkCellCenters::New();
   myGeomFilter = VTKViewer_GeometryFilter::New();
   myPointsFilter = VISU_MaskPointsFilter::New();
-  myPercents = 0.3;
   mySource = NULL;
+
+  myPercents = GetUsedPointsDefault();
 }
 
 
@@ -172,7 +176,7 @@ VISU_StreamLinesPL
   size_t anIsPossible = CheckAvailableMemory(aSize);
   if(!anIsPossible){
     vtkFloatingPointType aMaxStepLength = std::max(GetMaxStepLength(theDataSet),thePropogationTime);
-    vtkFloatingPointType aMinStepLength = GetMinStepLength(theDataSet);
+    vtkFloatingPointType aMinStepLength = GetMinStepLength(theDataSet,thePercents);
     vtkFloatingPointType aDeltaStepLength = (aMaxStepLength - aMinStepLength)/aStepLengthIncrease;
     for(int i = 2, aStepChanged = 1, aPerecentsChanged = 1; aStepChanged || aPerecentsChanged; i++){
       vtkFloatingPointType aStepLength = theStepLength + aDeltaStepLength;
@@ -222,10 +226,12 @@ VISU_StreamLinesPL
                                      thePercents);
 
   thePropogationTime = CorrectPropagationTime(thePropogationTime,
-                                             aPointSet);
+                                             aPointSet,
+                                              thePercents);
 
   theStepLength = CorrectStepLength(theStepLength,
-                                   aPointSet);
+                                   aPointSet,
+                                   thePercents);
 
   size_t anIsAccepted = FindPossibleParams(aPointSet,
                                           theStepLength,
@@ -309,10 +315,11 @@ VISU_StreamLinesPL
 //----------------------------------------------------------------------------
 size_t
 VISU_StreamLinesPL
-::IsPossible(vtkPointSet* theDataSet, 
-            vtkFloatingPointType thePercents)
+::IsPossible(vtkPointSet* theDataSet)
 {
-  vtkFloatingPointType aStepLength = GetBaseStepLength(theDataSet);
+  vtkFloatingPointType aPercents = GetUsedPointsDefault();
+  vtkFloatingPointType aStepLength = GetBaseStepLength(theDataSet,
+                                                       aPercents);
   vtkFloatingPointType aBasePropTime = GetBasePropagationTime(theDataSet);
   VISU_MaskPointsFilter *aPointsFilter = VISU_MaskPointsFilter::New();
   aPointsFilter->SetInput(theDataSet);
@@ -321,7 +328,7 @@ VISU_StreamLinesPL
   size_t aRes = FindPossibleParams(aDataSet,
                                   aStepLength,
                                   aBasePropTime,
-                                  thePercents);
+                                  aPercents);
   aPointsFilter->Delete();
   return aRes;
 }
@@ -487,12 +494,13 @@ VISU_StreamLinesPL
 //----------------------------------------------------------------------------
 vtkFloatingPointType
 VISU_StreamLinesPL
-::GetMinPropagationTime(vtkDataSet* theDataSet)
+::GetMinPropagationTime(vtkDataSet* theDataSet, 
+                        vtkFloatingPointType thePercents)
 {
   if(!theDataSet) 
     return -1.0;
 
-  return GetMinStepLength(theDataSet);
+  return GetMinStepLength(theDataSet, thePercents);
 }
 
 
@@ -501,7 +509,7 @@ vtkFloatingPointType
 VISU_StreamLinesPL
 ::GetMinPropagationTime()
 {
-  return GetMinPropagationTime(GetExtractorFilter()->GetOutput());
+  return GetMinPropagationTime(GetExtractorFilter()->GetOutput(), GetUsedPoints());
 }
 
 
@@ -530,9 +538,10 @@ VISU_StreamLinesPL
 vtkFloatingPointType
 VISU_StreamLinesPL
 ::CorrectPropagationTime(vtkFloatingPointType thePropagationTime, 
-                        vtkDataSet* theDataSet)
+                        vtkDataSet* theDataSet, 
+                         vtkFloatingPointType thePercents)
 {
-  vtkFloatingPointType aMinPropagationTime = GetMinPropagationTime(theDataSet);
+  vtkFloatingPointType aMinPropagationTime = GetMinPropagationTime(theDataSet, thePercents);
   if(aMinPropagationTime > thePropagationTime)
     thePropagationTime = aMinPropagationTime;
 
@@ -571,10 +580,11 @@ VISU_StreamLinesPL
 //----------------------------------------------------------------------------
 vtkFloatingPointType 
 VISU_StreamLinesPL
-::GetMinStepLength(vtkDataSet* theDataSet)
+::GetMinStepLength(vtkDataSet* theDataSet, 
+                   vtkFloatingPointType thePercents)
 {
   static vtkFloatingPointType aNbOfStepsOfIntStep = 1.0E+1;
-  vtkFloatingPointType anIntStep = GetMinIntegrationStep(theDataSet);
+  vtkFloatingPointType anIntStep = GetMinIntegrationStep(theDataSet, thePercents);
   vtkFloatingPointType aStepLength = anIntStep * aNbOfStepsOfIntStep / GetVelocityCoeff(theDataSet);
   return aStepLength;
 }
@@ -585,7 +595,7 @@ vtkFloatingPointType
 VISU_StreamLinesPL
 ::GetMinStepLength()
 {
-  return GetMinStepLength(GetExtractorFilter()->GetOutput());
+  return GetMinStepLength(GetExtractorFilter()->GetOutput(), GetUsedPoints());
 }
 
 
@@ -612,9 +622,10 @@ VISU_StreamLinesPL
 vtkFloatingPointType
 VISU_StreamLinesPL
 ::CorrectStepLength(vtkFloatingPointType theStep, 
-                   vtkDataSet* theDataSet)
+                   vtkDataSet* theDataSet, 
+                    vtkFloatingPointType thePercents)
 {
-  vtkFloatingPointType aMinStep = GetMinStepLength(theDataSet);
+  vtkFloatingPointType aMinStep = GetMinStepLength(theDataSet, thePercents);
   if(theStep < aMinStep) 
     theStep = aMinStep;
 
@@ -629,17 +640,28 @@ VISU_StreamLinesPL
 //----------------------------------------------------------------------------
 vtkFloatingPointType
 VISU_StreamLinesPL
-::GetBaseStepLength(vtkDataSet* theDataSet)
+::GetBaseStepLength(vtkDataSet* theDataSet, 
+                    vtkFloatingPointType thePercents)
 {
   static vtkFloatingPointType anAvgNbOfSteps = 1.0E+2;
   vtkFloatingPointType aPropagationTime = GetBasePropagationTime(theDataSet);
   vtkFloatingPointType aStepLength = aPropagationTime/anAvgNbOfSteps;
-  aStepLength = CorrectStepLength(aStepLength,theDataSet);
+  aStepLength = CorrectStepLength(aStepLength,theDataSet,thePercents);
 
   return aStepLength;
 }
 
 
+//----------------------------------------------------------------------------
+vtkFloatingPointType
+VISU_StreamLinesPL
+::GetUsedPointsDefault()
+{
+  SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+  return aResourceMgr->doubleValue("VISU", "stream_lines_used_points", 0.01);
+}
+
+
 //----------------------------------------------------------------------------
 void
 VISU_StreamLinesPL
@@ -648,12 +670,14 @@ VISU_StreamLinesPL
   Superclass::Init();
 
   vtkDataSet* aDataSet = GetExtractorFilter()->GetOutput();
-  vtkFloatingPointType anIntStep = GetBaseIntegrationStep(aDataSet);
+  vtkFloatingPointType anIntStep = GetBaseIntegrationStep(aDataSet, GetUsedPoints());
   vtkFloatingPointType aPropagationTime = GetBasePropagationTime(aDataSet);
-  vtkFloatingPointType aStepLength = GetBaseStepLength(aDataSet);
+  vtkFloatingPointType aStepLength = GetBaseStepLength(aDataSet, GetUsedPoints());
   SetParams(anIntStep,
            aPropagationTime,
-           aStepLength);
+           aStepLength,
+            NULL,
+            GetUsedPoints());
 }
 
 
index 96d0b60840cdda5a875058f6d6d60e4c62255d26..5b0af6ca32cd04716a9bd35b9fa866d48b0d542b 100644 (file)
@@ -58,8 +58,8 @@ public:
   SetParams(vtkFloatingPointType theIntStep,
            vtkFloatingPointType thePropogationTime,
            vtkFloatingPointType theStepLength,
-           vtkPointSet* theSource = NULL,
-           vtkFloatingPointType thePercents = 0.3,
+           vtkPointSet* theSource,
+           vtkFloatingPointType thePercents,
            int theDirection = VTK_INTEGRATE_BOTH_DIRECTIONS);
 
   virtual
@@ -156,15 +156,16 @@ public:
   static
   vtkFloatingPointType
   GetMinIntegrationStep(vtkDataSet* theDataSet, 
-                       vtkFloatingPointType thePercents = 0.3);
+                       vtkFloatingPointType thePercents);
   static
   vtkFloatingPointType
   GetBaseIntegrationStep(vtkDataSet* theDataSet, 
-                        vtkFloatingPointType thePercents = 0.3);
+                        vtkFloatingPointType thePercents);
   
   static 
   vtkFloatingPointType
-  GetMinPropagationTime(vtkDataSet* theDataSet);
+  GetMinPropagationTime(vtkDataSet* theDataSet, 
+                        vtkFloatingPointType thePercents);
 
   static
   vtkFloatingPointType
@@ -176,7 +177,8 @@ public:
 
   static
   vtkFloatingPointType
-  GetMinStepLength(vtkDataSet* theDataSet);
+  GetMinStepLength(vtkDataSet* theDataSet, 
+                   vtkFloatingPointType thePercents);
 
   static
   vtkFloatingPointType
@@ -184,16 +186,16 @@ public:
 
   static
   vtkFloatingPointType
-  GetBaseStepLength(vtkDataSet* theDataSet);
-
+  GetBaseStepLength(vtkDataSet* theDataSet, 
+                   vtkFloatingPointType thePercents);
+  
   static
   vtkFloatingPointType
   GetVelocityCoeff(vtkDataSet* theDataSet);
 
   static
   size_t
-  IsPossible(vtkPointSet* theDataSet, 
-            vtkFloatingPointType thePercents = 0.3);
+  IsPossible(vtkPointSet* theDataSet);
 
 protected:
   VISU_StreamLinesPL();
@@ -211,7 +213,7 @@ protected:
   GetNecasseryMemorySize(vtkIdType theNbOfPoints, 
                         vtkFloatingPointType theStepLength, 
                         vtkFloatingPointType thePropogationTime, 
-                        vtkFloatingPointType thePercents = 0.3);
+                        vtkFloatingPointType thePercents);
 
   static
   size_t
@@ -224,17 +226,23 @@ protected:
   vtkFloatingPointType
   CorrectIntegrationStep(vtkFloatingPointType theStep, 
                         vtkDataSet* theDataSet, 
-                        vtkFloatingPointType thePercents = 0.3);
+                        vtkFloatingPointType thePercents);
 
   static 
   vtkFloatingPointType
   CorrectPropagationTime(vtkFloatingPointType thePropagationTime, 
-                        vtkDataSet* theDataSet);
+                        vtkDataSet* theDataSet, 
+                         vtkFloatingPointType thePercents);
 
   static
   vtkFloatingPointType
   CorrectStepLength(vtkFloatingPointType theStep, 
-                   vtkDataSet* theDataSet);
+                   vtkDataSet* theDataSet, 
+                    vtkFloatingPointType thePercents);
+
+  static
+  vtkFloatingPointType
+  GetUsedPointsDefault();
 
   vtkStreamLine* myStream;
   vtkPointSet* mySource;
index 70dd065a0d9c10a971024984b9395b8a0127df93..01cfaa40f3c5fcac01e8c4198ee8ed369ac09be8 100644 (file)
@@ -393,6 +393,14 @@ number of time stamps or number of components is not the same!</translation>
             <source>VISU_STREAM_LINES</source>
             <translation>Stream Lines</translation>
         </message>
+        <message>
+            <source>VISU_STREAM_LINES_PREF</source>
+            <translation>Stream Lines Preferences</translation>
+        </message>
+        <message>
+            <source>VISU_STREAM_LINES_USED_POINTS</source>
+            <translation>Used points</translation>
+        </message>
         <message>
             <source>VISU_SWEEPING_MODES</source>
             <translation>Mode of the sweeping </translation>
index a289d376801410bd3868a11e6a10d1f14d3b93f2..a6483624143605be79f8b33a696cae459122c229 100644 (file)
@@ -3869,6 +3869,18 @@ void VisuGUI::createPreferences()
   addPreference( tr( "Generate data table" ), cutLineGr, LightApp_Preferences::Bool, "VISU", "generate_data_table" );
   addPreference( tr( "Generate curves" ), cutLineGr, LightApp_Preferences::Bool, "VISU", "generate_curves" );
 
+  // TAB: "StreamLines"
+  int streamLinesTab = addPreference( tr( "VISU_STREAM_LINES" ) );
+
+  // group: "StreamLines preferences"
+  int streamLinesGr = addPreference( tr( "VISU_STREAM_LINES_PREF" ), streamLinesTab );
+  setPreferenceProperty( cutLineGr, "columns", 1 );
+  int usedPoints = addPreference( tr( "VISU_STREAM_LINES_USED_POINTS" ), streamLinesGr,
+                                  LightApp_Preferences::DblSpin, "VISU", "stream_lines_used_points" );
+  setPreferenceProperty( usedPoints, "min",  0 );
+  setPreferenceProperty( usedPoints, "max",  1 );
+  setPreferenceProperty( usedPoints, "step", 0.1 );
+
   // TAB: "Sweep, Animation, 3D Cache"
   int animationTab = addPreference( tr( "Sweep, Animation" ) );
   {