]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
MEDFileFieldMultiTS with only one parameter.
authorageay <ageay>
Mon, 2 Jul 2012 14:39:45 +0000 (14:39 +0000)
committerageay <ageay>
Mon, 2 Jul 2012 14:39:45 +0000 (14:39 +0000)
src/MEDLoader/MEDFileField.cxx
src/MEDLoader/MEDFileField.hxx
src/MEDLoader/Swig/MEDLoaderCommon.i
src/MEDLoader/Swig/MEDLoaderTest3.py

index 54f391f853927d91f58271937c033045660a5a15..cfd72d2ff51dcde7163e9e62510facdbb8519055 100644 (file)
@@ -4006,6 +4006,11 @@ MEDFileFieldMultiTS *MEDFileFieldMultiTS::New()
   return new MEDFileFieldMultiTS;
 }
 
+MEDFileFieldMultiTS *MEDFileFieldMultiTS::New(const char *fileName) throw(INTERP_KERNEL::Exception)
+{
+  return new MEDFileFieldMultiTS(fileName);
+}
+
 MEDFileFieldMultiTS *MEDFileFieldMultiTS::New(const char *fileName, const char *fieldName) throw(INTERP_KERNEL::Exception)
 {
   return new MEDFileFieldMultiTS(fileName,fieldName);
@@ -4162,6 +4167,43 @@ MEDFileFieldMultiTS::MEDFileFieldMultiTS()
 {
 }
 
+MEDFileFieldMultiTS::MEDFileFieldMultiTS(const char *fileName) throw(INTERP_KERNEL::Exception)
+try:MEDFileFieldMultiTSWithoutDAS(""),MEDFileFieldGlobsReal(fileName)
+{
+  MEDFileUtilities::CheckFileForRead(fileName);
+  MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName,MED_ACC_RDONLY);
+  int nbFields=MEDnField(fid);
+  if(nbFields<1)
+    {
+      std::ostringstream oss; oss << "MEDFileFieldMultiTS(const char *fileName) constructor : no fields in file \"" << fileName << "\" !";
+      throw INTERP_KERNEL::Exception(oss.str().c_str());
+    }
+  med_field_type typcha;
+  int nbstep2=-1;
+  //
+  int ncomp=MEDfieldnComponent(fid,1);
+  INTERP_KERNEL::AutoPtr<char> comp=MEDLoaderBase::buildEmptyString(ncomp*MED_SNAME_SIZE);
+  INTERP_KERNEL::AutoPtr<char> unit=MEDLoaderBase::buildEmptyString(ncomp*MED_SNAME_SIZE);
+  INTERP_KERNEL::AutoPtr<char> dtunit=MEDLoaderBase::buildEmptyString(MED_LNAME_SIZE);
+  INTERP_KERNEL::AutoPtr<char> nomcha=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE);
+  INTERP_KERNEL::AutoPtr<char> nomMaa=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE);
+  med_bool localMesh;
+  int nbOfStep;
+  MEDfieldInfo(fid,1,nomcha,nomMaa,&localMesh,&typcha,comp,unit,dtunit,&nbOfStep);
+  _name=MEDLoaderBase::buildStringFromFortran(nomcha,MED_NAME_SIZE);
+  _field_type=MEDFileUtilities::TraduceFieldType(typcha);
+  _infos.resize(ncomp);
+  for(int j=0;j<ncomp;j++)
+    _infos[j]=MEDLoaderBase::buildUnionUnit((char *)comp+j*MED_SNAME_SIZE,MED_SNAME_SIZE,(char *)unit+j*MED_SNAME_SIZE,MED_SNAME_SIZE);
+  //
+  finishLoading(fid,nbOfStep);
+  loadGlobals(fid);
+}
+catch(INTERP_KERNEL::Exception& e)
+  {
+    throw e;
+  }
+
 MEDFileFieldMultiTS::MEDFileFieldMultiTS(const char *fileName, const char *fieldName) throw(INTERP_KERNEL::Exception)
 try:MEDFileFieldMultiTSWithoutDAS(fieldName),MEDFileFieldGlobsReal(fileName)
 {
index 01d8d7cdf8c8fdd416b0b74efee2415d472511e1..9528395bfcf29a0ef3cdf3298416ff9fb2b6e887 100644 (file)
@@ -537,6 +537,7 @@ namespace ParaMEDMEM
   {
   public:
     static MEDFileFieldMultiTS *New();
+    static MEDFileFieldMultiTS *New(const char *fileName) throw(INTERP_KERNEL::Exception);
     static MEDFileFieldMultiTS *New(const char *fileName, const char *fieldName) throw(INTERP_KERNEL::Exception);
     static MEDFileFieldMultiTS *New(const MEDFileFieldMultiTSWithoutDAS& other);
     //
@@ -566,6 +567,7 @@ namespace ParaMEDMEM
   private:
     MEDFileFieldMultiTS();
     MEDFileFieldMultiTS(const MEDFileFieldMultiTSWithoutDAS& other);
+    MEDFileFieldMultiTS(const char *fileName) throw(INTERP_KERNEL::Exception);
     MEDFileFieldMultiTS(const char *fileName, const char *fieldName) throw(INTERP_KERNEL::Exception);
   };
 
index ce95ac5932204e74b43c804900f98cf0d3eb4683..5744ec244157fa76f2b3905ac6952667af322b8e 100644 (file)
@@ -1239,6 +1239,7 @@ namespace ParaMEDMEM
   {
   public:
     static MEDFileFieldMultiTS *New();
+    static MEDFileFieldMultiTS *New(const char *fileName);
     static MEDFileFieldMultiTS *New(const char *fileName, const char *fieldName) throw(INTERP_KERNEL::Exception);
     //
     MEDFileField1TS *getTimeStepAtPos(int pos) const throw(INTERP_KERNEL::Exception);
@@ -1261,6 +1262,11 @@ namespace ParaMEDMEM
            return MEDFileFieldMultiTS::New();
          }
 
+         MEDFileFieldMultiTS(const char *fileName) throw(INTERP_KERNEL::Exception)
+         {
+           return MEDFileFieldMultiTS::New(fileName);
+         }
+
          MEDFileFieldMultiTS(const char *fileName, const char *fieldName) throw(INTERP_KERNEL::Exception)
          {
            return MEDFileFieldMultiTS::New(fileName,fieldName);
index a97cd9a17ae796101304f94f4876b7c42b2cea43..49e259cc8a07762ab14b9d22397614da071db8e7 100644 (file)
@@ -377,7 +377,8 @@ class MEDLoaderTest(unittest.TestCase):
     def testMEDField1(self):
         mm=MEDFileMesh.New("Pyfile17.med")
         mm.write("Pyfile17_bis.med",2)
-        ff=MEDFileFieldMultiTS.New("Pyfile17.med","MeasureOfMesh_Extruded")
+        ff=MEDFileFieldMultiTS("Pyfile17.med")
+        self.assertEqual("MeasureOfMesh_Extruded",ff.getName())
         self.assertEqual([3,4],ff[1].getTime()[:-1])
         self.assertEqual([3,4],ff[3,4].getTime()[:-1])
         self.assertEqual([3,4],ff[0.01].getTime()[:-1])