]> SALOME platform Git repositories - tools/paravisaddons_common.git/commitdiff
Salome HOME
[SerafinReader] Correcting issue with time
authorYoann Audouin <yoann.audouin@edf.fr>
Fri, 9 Jul 2021 07:32:57 +0000 (09:32 +0200)
committerYoann Audouin <yoann.audouin@edf.fr>
Fri, 9 Jul 2021 07:33:27 +0000 (09:33 +0200)
src/SerafinReader/Test/result.slf [new file with mode: 0644]
src/SerafinReader/Test/test_SerafinReader.py
src/SerafinReader/plugin/SerafinReaderModule/stdSerafinReader.h
src/SerafinReader/plugin/SerafinReaderModule/vtkSerafinReader.cxx
src/SerafinReader/plugin/SerafinReaderModule/vtkSerafinReader.h
src/SerafinReader/plugin/sources.xml

diff --git a/src/SerafinReader/Test/result.slf b/src/SerafinReader/Test/result.slf
new file mode 100644 (file)
index 0000000..8cdc452
Binary files /dev/null and b/src/SerafinReader/Test/result.slf differ
index a557ff4cb6449f7cd860f892f8be007684fdec0c..ed0c02a6ae03878c93fcc7a1da1c447a16f8ae18 100644 (file)
@@ -37,3 +37,15 @@ assert(np.all(data <= 1e-8))
 reader = SerafinReader(FileName='geo_3d_dp.slf')
 reader.UpdatePipeline()
 reader_ds = servermanager.Fetch(reader)
+
+# Reading file with time steps (10)
+reader = SerafinReader(FileName='result.slf')
+reader.UpdatePipeline()
+reader_ds = servermanager.Fetch(reader)
+
+# Using animationScene to get tim information
+anim = GetAnimationScene()
+tk = anim.TimeKeeper
+times = tk.TimestepValues
+ref_times = [i*1.0 for i in range(10)]
+assert(times == ref_times)
index 4ad19d5aab15f2029485d935b75787e4a37f1956..1bedf18b11d5cd384f10fbd67ecf547e8c14c897 100644 (file)
@@ -149,7 +149,7 @@ typedef struct
   int64_t ConnectivityPosition ;  // La position dans le fichier de la table de connectivité
   int64_t XPosition;      // La position dans le fichier de la table des valeurs de X
   int64_t YPosition;      // La position dans le fichier de la table des valeurs de Y
-  int64_t DataPosision;    // La position dans le fichier des blocs de données
+  int64_t DataPosition;    // La position dans le fichier des blocs de données
 
   int NumberOfDate ;    // Information sur le temps étudié
 
@@ -246,8 +246,12 @@ public:
   // Associe la date de début de simulation
   void        GetDate(SerafinDate* date)
   {
-    date->day   = this->metadata->Date[2];  date->month = this->metadata->Date[1];  date->year  = this->metadata->Date[0];
-    date->hour  = this->metadata->Date[3];  date->min   = this->metadata->Date[4];  date->sec   = this->metadata->Date[5];
+    date->day   = this->metadata->Date[2];
+    date->month = this->metadata->Date[1];
+    date->year  = this->metadata->Date[0];
+    date->hour  = this->metadata->Date[3];
+    date->min   = this->metadata->Date[4];
+    date->sec   = this->metadata->Date[5];
   };
 
   // Simplifie la lecture des informations de discrétisation
@@ -262,9 +266,11 @@ public:
   double GetTime(int timeid)
   {
     double value = 0;
-    FileStream->seekg( this->index->DataPosision + this->index->DataBlocSize * timeid ,  std::ios_base::beg ) ;
+    FileStream->seekg( this->index->DataPosition + this->index->DataBlocSize * timeid ,
+                       std::ios_base::beg ) ;
     skipReadingHeader(FileStream);
     (*this.*readFloatArray)(&(value), 1);
+
     return value;
   };
 
@@ -406,7 +412,7 @@ protected:
   int64_t GoToData(const int time)
   {
     if (time >= GetTotalTime()) return 0 ;
-    FileStream->seekg( this->index->DataPosision + this->index->DataBlocSize * time + this->index->TimeSize,  std::ios_base::beg ) ;
+    FileStream->seekg( this->index->DataPosition + this->index->DataBlocSize * time + this->index->TimeSize,  std::ios_base::beg ) ;
     return FileStream->tellg();
   };
 
index 299ab922d1b5ea63ff15303d764f22fd470ab785..d5b2ce9eb3c45254e3e9dc253978c852c3d42c0e 100644 (file)
@@ -346,7 +346,7 @@ void stdSerafinReader::createIndex ()
                               - 2*index->FieldSize
                               - (this->index->IntSize*ndp*nelem+2*this->index->TagSize);
   // Index to data
-  this->index->DataPosision = (this->index->FileSize) - (this->index->DataSize);
+  this->index->DataPosition = (this->index->FileSize) - (this->index->DataSize);
 
   // Index of Y coordinates
   this->index->YPosition = this->index->XPosition + this->index->FieldSize;
@@ -357,7 +357,6 @@ void stdSerafinReader::createIndex ()
 
 
   this->index->NumberOfDate     = (this->index->DataSize)/(this->index->DataBlocSize);
-  //vtkDebugMacro(<< "Number of Date: " << this->index->NumberOfDate << endl);
 
 };
 
@@ -491,14 +490,13 @@ int vtkSerafinReader::RequestInformation(vtkInformation *vtkNotUsed(request),
       int i=0;
       double* TimeValues = new double[totime];
 
-      for (i=0; i<totime ;i++) {TimeValues[i] = this->Reader->GetTime(i) ;}
-
-      outInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_STEPS(), &TimeValues[0],  totime);
+      for (i=0; i<totime ;i++) {TimeValues[i] = this->Reader->GetTime(i) ; }
+      outInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_STEPS(), &TimeValues[0], totime);
 
       double timeRange[2];
       timeRange[0] = TimeValues[0];
       timeRange[1] = TimeValues[totime-1];
-      outInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_RANGE(),  timeRange, 2);
+      outInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_RANGE(), &timeRange[0], 2);
 
     };
   }
index 9f650ee284865f6e58155a1dfa5dea639ffe84f0..676ea7d7b77962d0c90c863b55beeb79bc8369ad 100644 (file)
@@ -83,6 +83,11 @@ public:
   vtkSetStringMacro(FileName);
   vtkGetStringMacro(FileName);
 
+  // Mandatory for time manipulation
+  vtkSetMacro(TimeStep, int);
+  vtkGetMacro(TimeStep, int);
+  int GetNumberOfTimeSteps() {this->Reader->GetTotalTime();};
+
   vtkSetMacro(BuildVectors, int);
   vtkGetMacro(BuildVectors, int);
 
index e0825c72fef4582fa13b528043fc6d7c3e5ecae4..2d56bd46a0f14021879e0b5bc5848531b01fb802 100644 (file)
         </Documentation>
       </StringVectorProperty>
 
+      <!-- Mandatory for time dependant reader -->
+      <DoubleVectorProperty
+        name="TimestepValues"
+        information_only="1">
+        <TimeStepsInformationHelper/>
+        <Documentation>
+          Available timestep values.
+        </Documentation>
+      </DoubleVectorProperty>
+
       <IntVectorProperty name="BuildVectors"
                          command="SetBuildVectors"
                          number_of_elements="1"