From: Anthony Geay Date: Wed, 17 May 2017 10:22:52 +0000 (+0200) Subject: Factorization finished for 1TS. MultiTS remaining X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=68c84e6c8c1cd458b51b4ab97d540a5e1e6df736;p=tools%2Fmedcoupling.git Factorization finished for 1TS. MultiTS remaining --- diff --git a/src/MEDLoader/MEDFileField.cxx b/src/MEDLoader/MEDFileField.cxx index 365a879a7..f8b9a4e9e 100644 --- a/src/MEDLoader/MEDFileField.cxx +++ b/src/MEDLoader/MEDFileField.cxx @@ -47,6 +47,8 @@ template class MEDCoupling::MEDFileField1TSTemplateWithoutSDA; template class MEDCoupling::MEDFileField1TSTemplateWithoutSDA; template class MEDCoupling::MEDFileTemplateField1TS; template class MEDCoupling::MEDFileTemplateField1TS; +template class MEDCoupling::MEDFileTemplateFieldMultiTS; +template class MEDCoupling::MEDFileTemplateFieldMultiTS; const char MEDFileField1TSWithoutSDA::TYPE_STR[]="FLOAT64"; const char MEDFileIntField1TSWithoutSDA::TYPE_STR[]="INT32"; @@ -6831,58 +6833,6 @@ MEDFileIntField1TS *MEDFileField1TS::convertToInt(bool isDeepCpyGlobs) const return ret.retn(); } -/*! - * Return an extraction of \a this using \a extractDef map to specify the extraction. - * The keys of \a extractDef is level relative to max ext of \a mm mesh. - * - * \return A new object that the caller is responsible to deallocate. - * \sa MEDFileUMesh::deduceNodeSubPartFromCellSubPart , MEDFileUMesh::extractPart - */ -MEDFileField1TS *MEDFileField1TS::extractPart(const std::map >& extractDef, MEDFileMesh *mm) const -{ - if(!mm) - throw INTERP_KERNEL::Exception("MEDFileField1TS::extractPart : input mesh is NULL !"); - MCAuto ret(MEDFileField1TS::New()); - std::vector tof(getTypesOfFieldAvailable()); - for(std::vector::const_iterator it0=tof.begin();it0!=tof.end();it0++) - { - if((*it0)!=ON_NODES) - { - std::vector levs; - getNonEmptyLevels(mm->getName(),levs); - for(std::vector::const_iterator lev=levs.begin();lev!=levs.end();lev++) - { - std::map >::const_iterator it2(extractDef.find(*lev)); - if(it2!=extractDef.end()) - { - MCAuto t((*it2).second); - if(t.isNull()) - throw INTERP_KERNEL::Exception("MEDFileField1TS::extractPart : presence of a value with null pointer 1 !"); - MCAuto f(getFieldOnMeshAtLevel(ON_CELLS,(*lev),mm)); - MCAuto fOut(f->buildSubPart(t)); - ret->setFieldNoProfileSBT(fOut); - } - } - } - else - { - std::map >::const_iterator it2(extractDef.find(1)); - if(it2==extractDef.end()) - throw INTERP_KERNEL::Exception("MEDFileField1TS::extractPart : presence of a NODE field and no extract array available for NODE !"); - MCAuto t((*it2).second); - if(t.isNull()) - throw INTERP_KERNEL::Exception("MEDFileField1TS::extractPart : presence of a value with null pointer 1 !"); - MCAuto f(getFieldOnMeshAtLevel(ON_NODES,0,mm)); - MCAuto fOut(f->deepCopy()); - DataArrayDouble *arr(f->getArray()); - MCAuto newArr(arr->selectByTupleIdSafe(t->begin(),t->end())); - fOut->setArray(newArr); - ret->setFieldNoProfileSBT(fOut); - } - } - return ret.retn(); -} - MEDFileField1TS::MEDFileField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms) try:MEDFileTemplateField1TS(fid,loadAll,ms) { @@ -7007,11 +6957,6 @@ MCAuto MEDFileIntField1TS::ConvertFieldIntToFieldDouble( return ret; } -MEDFileIntField1TS *MEDFileIntField1TS::extractPart(const std::map >& extractDef, MEDFileMesh *mm) const -{ - throw INTERP_KERNEL::Exception("MEDFileIntField1TS::extractPart : not implemented yet !"); -} - //= MEDFileFloatField1TS MEDFileFloatField1TS::MEDFileFloatField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms) @@ -7035,6 +6980,11 @@ try:MEDFileTemplateField1TS(fid,fieldName,iteration,order,loadAll,ms) catch(INTERP_KERNEL::Exception& e) { throw e; } +MEDFileFloatField1TS *MEDFileFloatField1TS::shallowCpy() const +{ + return new MEDFileFloatField1TS(*this); +} + //= MEDFileFloatField1TS //= MEDFileAnyTypeFieldMultiTSWithoutSDA @@ -9042,27 +8992,6 @@ int MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime(MEDFileAnyTypeFieldMultiT return nts; } -/*! - * Return an extraction of \a this using \a extractDef map to specify the extraction. - * The keys of \a extractDef is level relative to max ext of \a mm mesh. - * - * \return A new object that the caller is responsible to deallocate. - */ -MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::extractPart(const std::map >& extractDef, MEDFileMesh *mm) const -{ - if(!mm) - throw INTERP_KERNEL::Exception("MEDFileFieldMultiTS::extractPart : mesh is null !"); - MCAuto fmtsOut(buildNewEmpty()); - int nbTS(getNumberOfTS()); - for(int i=0;i f1ts(getTimeStepAtPos(i)); - MCAuto f1tsOut(f1ts->extractPart(extractDef,mm)); - fmtsOut->pushBackTimeStep(f1tsOut); - } - return fmtsOut.retn(); -} - template MCAuto AggregateHelperF1TS(const std::vector< typename MLFieldTraits::F1TSType const *>& f1tss, const std::vector< std::vector< std::pair > >& dts) { @@ -9580,26 +9509,21 @@ void MEDFileFieldMultiTS::appendFieldProfile(const MEDCouplingFieldDouble *field contentNotNull()->appendFieldProfile(field,arr,mesh,meshDimRelToMax,profile,*this); } -MEDFileFieldMultiTS::MEDFileFieldMultiTS() -{ - _content=new MEDFileFieldMultiTSWithoutSDA; -} - MEDFileFieldMultiTS::MEDFileFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms) -try:MEDFileAnyTypeFieldMultiTS(fid,loadAll,ms) +try:MEDFileTemplateFieldMultiTS(fid,loadAll,ms) { } catch(INTERP_KERNEL::Exception& e) { throw e; } MEDFileFieldMultiTS::MEDFileFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities) -try:MEDFileAnyTypeFieldMultiTS(fid,fieldName,loadAll,ms,entities) +try:MEDFileTemplateFieldMultiTS(fid,fieldName,loadAll,ms,entities) { } catch(INTERP_KERNEL::Exception& e) { throw e; } -MEDFileFieldMultiTS::MEDFileFieldMultiTS(const MEDFileFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent):MEDFileAnyTypeFieldMultiTS(other,shallowCopyOfContent) +MEDFileFieldMultiTS::MEDFileFieldMultiTS(const MEDFileFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent):MEDFileTemplateFieldMultiTS(other,shallowCopyOfContent) { } @@ -10074,24 +9998,19 @@ MEDFileIntFieldMultiTSWithoutSDA *MEDFileIntFieldMultiTS::contentNotNull() return ret; } -MEDFileIntFieldMultiTS::MEDFileIntFieldMultiTS() -{ - _content=new MEDFileIntFieldMultiTSWithoutSDA; -} - -MEDFileIntFieldMultiTS::MEDFileIntFieldMultiTS(const MEDFileIntFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent):MEDFileAnyTypeFieldMultiTS(other,shallowCopyOfContent) +MEDFileIntFieldMultiTS::MEDFileIntFieldMultiTS(const MEDFileIntFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent):MEDFileTemplateFieldMultiTS(other,shallowCopyOfContent) { } MEDFileIntFieldMultiTS::MEDFileIntFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms) -try:MEDFileAnyTypeFieldMultiTS(fid,loadAll,ms) +try:MEDFileTemplateFieldMultiTS(fid,loadAll,ms) { } catch(INTERP_KERNEL::Exception& e) { throw e; } MEDFileIntFieldMultiTS::MEDFileIntFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities) -try:MEDFileAnyTypeFieldMultiTS(fid,fieldName,loadAll,ms,entities) +try:MEDFileTemplateFieldMultiTS(fid,fieldName,loadAll,ms,entities) { } catch(INTERP_KERNEL::Exception& e) diff --git a/src/MEDLoader/MEDFileField.hxx b/src/MEDLoader/MEDFileField.hxx index b13080d06..1d450e943 100644 --- a/src/MEDLoader/MEDFileField.hxx +++ b/src/MEDLoader/MEDFileField.hxx @@ -826,6 +826,7 @@ namespace MEDCoupling MEDLOADER_EXPORT int getNonEmptyLevels(const std::string& mname, std::vector& levs) const; MEDLOADER_EXPORT void convertMedBallIntoClassic(); MEDLOADER_EXPORT void makeReduction(INTERP_KERNEL::NormalizedCellType ct, TypeOfField tof, const DataArrayInt *pfl); + MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TS *extractPart(const std::map >& extractDef, MEDFileMesh *mm) const = 0; public: MEDLOADER_EXPORT void loadArrays(); MEDLOADER_EXPORT void loadArraysIfNecessary(); @@ -854,8 +855,6 @@ namespace MEDCoupling public: MEDLOADER_EXPORT static int LocateField2(med_idt fid, int fieldIdCFormat, bool checkFieldId, std::string& fieldName, med_field_type& typcha, std::vector& infos, std::string& dtunitOut, std::string& meshName); MEDLOADER_EXPORT static int LocateField(med_idt fid, const std::string& fieldName, int& posCFormat, med_field_type& typcha, std::vector& infos, std::string& dtunitOut, std::string& meshName); - public: - MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TS *extractPart(const std::map >& extractDef, MEDFileMesh *mm) const = 0; public: MEDLOADER_EXPORT virtual med_field_type getMEDFileFieldType() const = 0; MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA *contentNotNullBase(); @@ -892,8 +891,10 @@ namespace MEDCoupling MEDLOADER_EXPORT typename Traits::FieldType *getFieldOnMeshAtLevel(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const; MEDLOADER_EXPORT typename Traits::FieldType *getFieldOnMeshAtLevel(TypeOfField type, const MEDCouplingMesh *mesh, int renumPol=0) const; MEDLOADER_EXPORT typename Traits::FieldType *getFieldAtLevelOld(TypeOfField type, const std::string& mname, int meshDimRelToMax, int renumPol=0) const; - void setFieldNoProfileSBT(const typename Traits::FieldType *field); - void setFieldProfile(const typename Traits::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile); + MEDLOADER_EXPORT void setFieldNoProfileSBT(const typename Traits::FieldType *field); + MEDLOADER_EXPORT void setFieldProfile(const typename Traits::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile); + MEDLOADER_EXPORT typename MLFieldTraits::F1TSType *extractPartImpl(const std::map >& extractDef, MEDFileMesh *mm) const; + MEDLOADER_EXPORT MEDFileAnyTypeField1TS *extractPart(const std::map >& extractDef, MEDFileMesh *mm) const { return this->extractPartImpl(extractDef,mm); } protected: ~MEDFileTemplateField1TS() { } MEDFileTemplateField1TS(); @@ -918,7 +919,6 @@ namespace MEDCoupling MEDLOADER_EXPORT std::vector< std::vector > getFieldSplitedByType2(const std::string& mname, std::vector& types, std::vector< std::vector >& typesF, std::vector< std::vector >& pfls, std::vector< std::vector >& locs) const; public: - MEDLOADER_EXPORT MEDFileField1TS *extractPart(const std::map >& extractDef, MEDFileMesh *mm) const; private: med_field_type getMEDFileFieldType() const { return MED_FLOAT64; } private: @@ -938,8 +938,6 @@ namespace MEDCoupling MEDLOADER_EXPORT MEDFileIntField1TS *shallowCpy() const; public: MEDLOADER_EXPORT static MCAuto ConvertFieldIntToFieldDouble(const MEDCouplingFieldInt *f); - public: - MEDLOADER_EXPORT MEDFileIntField1TS *extractPart(const std::map >& extractDef, MEDFileMesh *mm) const; private: med_field_type getMEDFileFieldType() const { return MED_INT32; } private: @@ -954,6 +952,9 @@ namespace MEDCoupling class MEDFileFloatField1TS : public MEDFileTemplateField1TS { friend class MEDFileTemplateField1TS; + private: + med_field_type getMEDFileFieldType() const { return MED_INT32; }//6432 + MEDLOADER_EXPORT MEDFileFloatField1TS *shallowCpy() const; private: ~MEDFileFloatField1TS() { } MEDFileFloatField1TS() { } @@ -1162,7 +1163,7 @@ namespace MEDCoupling MEDLOADER_EXPORT MCAuto getContent(); public: MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTS *buildNewEmpty() const = 0; - MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTS *extractPart(const std::map >& extractDef, MEDFileMesh *mm) const; + MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTS *extractPart(const std::map >& extractDef, MEDFileMesh *mm) const = 0; MEDLOADER_EXPORT static MCAuto Aggregate(const std::vector& fmtss, const std::vector< std::vector< std::pair > >& dts); public: MEDLOADER_EXPORT std::vector getPflsReallyUsed() const; @@ -1180,12 +1181,26 @@ namespace MEDCoupling MCAuto _content; }; + template + class MEDFileTemplateFieldMultiTS : public MEDFileAnyTypeFieldMultiTS + { + public: + MEDLOADER_EXPORT typename MLFieldTraits::FMTSType *extractPartImpl(const std::map >& extractDef, MEDFileMesh *mm) const; + MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTS *extractPart(const std::map >& extractDef, MEDFileMesh *mm) const { return this->extractPartImpl(extractDef,mm); } + protected: + ~MEDFileTemplateFieldMultiTS() { } + MEDFileTemplateFieldMultiTS(); + MEDFileTemplateFieldMultiTS(const typename MLFieldTraits::FMTSWSDAType& other, bool shallowCopyOfContent); + MEDFileTemplateFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms); + MEDFileTemplateFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0); + }; + class MEDFileIntFieldMultiTS; /*! * User class. */ - class MEDFileFieldMultiTS : public MEDFileAnyTypeFieldMultiTS + class MEDFileFieldMultiTS : public MEDFileTemplateFieldMultiTS { public: MEDLOADER_EXPORT static MEDFileFieldMultiTS *New(); @@ -1224,7 +1239,7 @@ namespace MEDCoupling MEDFileFieldMultiTSWithoutSDA *contentNotNull(); private: ~MEDFileFieldMultiTS() { } - MEDFileFieldMultiTS(); + MEDFileFieldMultiTS() { } MEDFileFieldMultiTS(const MEDFileFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent); MEDFileFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms); MEDFileFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0); @@ -1233,7 +1248,7 @@ namespace MEDCoupling /*! * User class. */ - class MEDFileIntFieldMultiTS : public MEDFileAnyTypeFieldMultiTS + class MEDFileIntFieldMultiTS : public MEDFileTemplateFieldMultiTS { public: MEDLOADER_EXPORT static MEDFileIntFieldMultiTS *New(); @@ -1268,7 +1283,7 @@ namespace MEDCoupling MEDFileIntFieldMultiTSWithoutSDA *contentNotNull(); private: ~MEDFileIntFieldMultiTS() { } - MEDFileIntFieldMultiTS(); + MEDFileIntFieldMultiTS() { } MEDFileIntFieldMultiTS(const MEDFileIntFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent); MEDFileIntFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms); MEDFileIntFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0); diff --git a/src/MEDLoader/MEDFileField.txx b/src/MEDLoader/MEDFileField.txx index 57721bed1..d68b0e86f 100644 --- a/src/MEDLoader/MEDFileField.txx +++ b/src/MEDLoader/MEDFileField.txx @@ -23,6 +23,8 @@ #include "MEDFileField.hxx" #include "MEDCouplingTraits.hxx" +#include "MEDCouplingFieldInt.hxx" +#include "MEDCouplingFieldFloat.hxx" #include "MEDCouplingFieldDouble.hxx" #include "MEDCouplingFieldTemplate.hxx" @@ -637,6 +639,105 @@ namespace MEDCoupling MCAuto ft(MEDCouplingFieldTemplate::NewWithoutCheck(*field)); contentNotNull()->setFieldProfile(field->timeDiscrSafe(),ft,field->getArray(),mesh,meshDimRelToMax,profile,*this,*contentNotNull()); } + + /*! + * Return an extraction of \a this using \a extractDef map to specify the extraction. + * The keys of \a extractDef is level relative to max ext of \a mm mesh. + * + * \return A new object that the caller is responsible to deallocate. + * \sa MEDFileUMesh::deduceNodeSubPartFromCellSubPart , MEDFileUMesh::extractPart + */ + template + typename MLFieldTraits::F1TSType *MEDFileTemplateField1TS::extractPartImpl(const std::map >& extractDef, MEDFileMesh *mm) const + { + if(!mm) + throw INTERP_KERNEL::Exception("MEDFileField1TS::extractPart : input mesh is NULL !"); + MCAuto::F1TSType> ret(MLFieldTraits::F1TSType::New()); + std::vector tof(getTypesOfFieldAvailable()); + for(std::vector::const_iterator it0=tof.begin();it0!=tof.end();it0++) + { + if((*it0)!=ON_NODES) + { + std::vector levs; + getNonEmptyLevels(mm->getName(),levs); + for(std::vector::const_iterator lev=levs.begin();lev!=levs.end();lev++) + { + std::map >::const_iterator it2(extractDef.find(*lev)); + if(it2!=extractDef.end()) + { + MCAuto t((*it2).second); + if(t.isNull()) + throw INTERP_KERNEL::Exception("MEDFileField1TS::extractPart : presence of a value with null pointer 1 !"); + MCAuto::FieldType> f(getFieldOnMeshAtLevel(ON_CELLS,(*lev),mm)); + MCAuto::FieldType> fOut(f->buildSubPart(t)); + ret->setFieldNoProfileSBT(fOut); + } + } + } + else + { + std::map >::const_iterator it2(extractDef.find(1)); + if(it2==extractDef.end()) + throw INTERP_KERNEL::Exception("MEDFileField1TS::extractPart : presence of a NODE field and no extract array available for NODE !"); + MCAuto t((*it2).second); + if(t.isNull()) + throw INTERP_KERNEL::Exception("MEDFileField1TS::extractPart : presence of a value with null pointer 1 !"); + MCAuto::FieldType> f(getFieldOnMeshAtLevel(ON_NODES,0,mm)); + MCAuto::FieldType> fOut(f->deepCopy()); + typename Traits::ArrayType *arr(f->getArray()); + MCAuto::ArrayType> newArr(arr->selectByTupleIdSafe(t->begin(),t->end())); + fOut->setArray(newArr); + ret->setFieldNoProfileSBT(fOut); + } + } + return ret.retn(); + } + + ////////////////////////// + + template + MEDFileTemplateFieldMultiTS::MEDFileTemplateFieldMultiTS() + { + _content=new MEDFileFieldMultiTSWithoutSDA; + } + + template + MEDFileTemplateFieldMultiTS::MEDFileTemplateFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileAnyTypeFieldMultiTS(fid,loadAll,ms) + { + } + + template + MEDFileTemplateFieldMultiTS::MEDFileTemplateFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileAnyTypeFieldMultiTS(fid,fieldName,loadAll,ms,entities) + { + } + + template + MEDFileTemplateFieldMultiTS::MEDFileTemplateFieldMultiTS(const typename MLFieldTraits::FMTSWSDAType& other, bool shallowCopyOfContent):MEDFileAnyTypeFieldMultiTS(other,shallowCopyOfContent) + { + } + + /*! + * Return an extraction of \a this using \a extractDef map to specify the extraction. + * The keys of \a extractDef is level relative to max ext of \a mm mesh. + * + * \return A new object that the caller is responsible to deallocate. + */ + template + typename MLFieldTraits::FMTSType *MEDFileTemplateFieldMultiTS::extractPartImpl(const std::map >& extractDef, MEDFileMesh *mm) const + { + if(!mm) + throw INTERP_KERNEL::Exception("MEDFileFieldMultiTS::extractPart : mesh is null !"); + MCAuto::FMTSType> fmtsOut(MLFieldTraits::FMTSType::New()); + int nbTS(getNumberOfTS()); + for(int i=0;i f1ts(getTimeStepAtPos(i)); + MCAuto::F1TSType> f1ts2(DynamicCastSafe::F1TSType>(f1ts)); + MCAuto::F1TSType> f1tsOut(f1ts2->extractPartImpl(extractDef,mm)); + fmtsOut->pushBackTimeStep(f1tsOut); + } + return fmtsOut.retn(); + } } #endif diff --git a/src/MEDLoader/MEDLoaderTraits.hxx b/src/MEDLoader/MEDLoaderTraits.hxx index 60617cd47..f62d881fe 100644 --- a/src/MEDLoader/MEDLoaderTraits.hxx +++ b/src/MEDLoader/MEDLoaderTraits.hxx @@ -39,10 +39,13 @@ namespace MEDCoupling class MEDFileField1TSWithoutSDA; class MEDFileIntField1TSWithoutSDA; class MEDFileFloatField1TSWithoutSDA; + class MEDFileFieldMultiTSWithoutSDA; + class MEDFileIntFieldMultiTSWithoutSDA; template<> struct MEDLOADER_EXPORT MLFieldTraits { + typedef MEDFileFieldMultiTSWithoutSDA FMTSWSDAType; typedef MEDFileFieldMultiTS FMTSType; typedef MEDFileField1TS F1TSType; typedef MEDFileField1TSWithoutSDA F1TSWSDAType; @@ -51,6 +54,7 @@ namespace MEDCoupling template<> struct MEDLOADER_EXPORT MLFieldTraits { + //typedef MEDFileFloatFieldMultiTSWithoutSDA FMTSWSDAType; //typedef MEDFileFloatFieldMultiTS FMTSType; typedef MEDFileFloatField1TS F1TSType; typedef MEDFileFloatField1TSWithoutSDA F1TSWSDAType; @@ -59,6 +63,7 @@ namespace MEDCoupling template<> struct MEDLOADER_EXPORT MLFieldTraits { + typedef MEDFileIntFieldMultiTSWithoutSDA FMTSWSDAType; typedef MEDFileIntFieldMultiTS FMTSType; typedef MEDFileIntField1TS F1TSType; typedef MEDFileIntField1TSWithoutSDA F1TSWSDAType;