Salome HOME
Copyright update 2022
[tools/medcoupling.git] / src / MEDLoader / MEDFileField1TS.hxx
1 // Copyright (C) 2007-2022  CEA/DEN, EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19 // Author : Anthony Geay (EDF R&D)
20
21 #ifndef __MEDFILEFIELD1TS_HXX__
22 #define __MEDFILEFIELD1TS_HXX__
23
24 #include "MEDLoaderDefines.hxx"
25 #include "MEDFileFieldGlobs.hxx"
26 #include "MEDFileFieldInternal.hxx"
27 #include "MEDLoaderTraits.hxx"
28
29 #include "med.h"
30
31 namespace MEDCoupling
32 {
33   class TimeHolder;
34   class MEDFileMeshes;
35
36   /*!
37    * SDA is for Shared Data Arrays such as profiles.
38    */
39   class MEDFileAnyTypeField1TSWithoutSDA : public RefCountObject, public MEDFileFieldNameScope
40   {
41   public:
42     MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA();
43     MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order);
44     MEDLOADER_EXPORT std::string getClassName() const override { return std::string("MEDFileAnyTypeField1TSWithoutSDA"); }
45     MEDLOADER_EXPORT int getIteration() const { return _iteration; }
46     MEDLOADER_EXPORT int getOrder() const { return _order; }
47     MEDLOADER_EXPORT double getTime(int& iteration, int& order) const { iteration=_iteration; order=_order; return _dt; }
48     MEDLOADER_EXPORT void setTime(int iteration, int order, double val) { _dt=val; _iteration=iteration; _order=order; }
49     MEDLOADER_EXPORT int getDimension() const;
50     MEDLOADER_EXPORT bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab);
51     MEDLOADER_EXPORT int getMeshIteration() const;
52     MEDLOADER_EXPORT int getMeshOrder() const;
53     MEDLOADER_EXPORT bool isDealingTS(int iteration, int order) const;
54     MEDLOADER_EXPORT std::pair<int,int> getDtIt() const;
55     MEDLOADER_EXPORT void fillIteration(std::pair<int,int>& p) const;
56     MEDLOADER_EXPORT void fillTypesOfFieldAvailable(std::vector<TypeOfField>& types) const;
57     MEDLOADER_EXPORT std::vector<TypeOfField> getTypesOfFieldAvailable() const;
58     //
59     MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsed2() const;
60     MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsed2() const;
61     MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsedMulti2() const;
62     MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsedMulti2() const;
63     MEDLOADER_EXPORT void changePflsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
64     MEDLOADER_EXPORT void changeLocsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
65     //
66     MEDLOADER_EXPORT int getNonEmptyLevels(const std::string& mname, std::vector<int>& levs) const;
67     MEDLOADER_EXPORT void convertMedBallIntoClassic();
68     MEDLOADER_EXPORT void makeReduction(INTERP_KERNEL::NormalizedCellType ct, TypeOfField tof, const DataArrayIdType *pfl);
69     MEDLOADER_EXPORT std::vector< std::vector<std::pair<mcIdType,mcIdType> > > getFieldSplitedByType(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
70     //
71     MEDLOADER_EXPORT MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId);
72     MEDLOADER_EXPORT const MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId) const;
73     MEDLOADER_EXPORT void deepCpyLeavesFrom(const MEDFileAnyTypeField1TSWithoutSDA& other);
74     MEDLOADER_EXPORT void accept(MEDFileFieldVisitor& visitor) const;
75   public:
76     MEDLOADER_EXPORT std::size_t getNumberOfComponents() const;
77     MEDLOADER_EXPORT const std::vector<std::string>& getInfo() const;
78     MEDLOADER_EXPORT std::vector<std::string>& getInfo();
79     MEDLOADER_EXPORT bool presenceOfMultiDiscPerGeoType() const;
80     MEDLOADER_EXPORT bool presenceOfStructureElements() const;
81     MEDLOADER_EXPORT bool onlyStructureElements() const;
82     MEDLOADER_EXPORT void killStructureElements();
83     MEDLOADER_EXPORT void keepOnlyStructureElements();
84     MEDLOADER_EXPORT void keepOnlyOnSE(const std::string& seName);
85     MEDLOADER_EXPORT void getMeshSENames(std::vector< std::pair<std::string,std::string> >& ps) const;
86     MEDLOADER_EXPORT void setInfo(const std::vector<std::string>& infos);
87     MEDLOADER_EXPORT std::size_t getHeapMemorySizeWithoutChildren() const;
88     MEDLOADER_EXPORT std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
89     MEDLOADER_EXPORT mcIdType copyTinyInfoFrom(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arr);
90     MEDLOADER_EXPORT void setFieldNoProfileSBT(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
91     MEDLOADER_EXPORT void setFieldProfile(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arrOfVals, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayIdType *profile, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc, bool smartPflKiller=true);
92     MEDLOADER_EXPORT virtual void simpleRepr(int bkOffset, std::ostream& oss, int f1tsId) const;
93     MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TSWithoutSDA *deepCopy() const = 0;
94     MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TSWithoutSDA *shallowCpy() const = 0;
95     MEDLOADER_EXPORT virtual std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > splitComponents() const;
96     MEDLOADER_EXPORT virtual const char *getTypeStr() const = 0;
97     MEDLOADER_EXPORT virtual DataArray *getUndergroundDataArray() const = 0;
98     MEDLOADER_EXPORT virtual DataArray *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<mcIdType,mcIdType> > >& entries) const = 0;
99     MEDLOADER_EXPORT virtual void setArray(DataArray *arr) = 0;
100     MEDLOADER_EXPORT virtual DataArray *createNewEmptyDataArrayInstance() const = 0;
101     MEDLOADER_EXPORT virtual DataArray *getOrCreateAndGetArray() = 0;
102     MEDLOADER_EXPORT virtual const DataArray *getOrCreateAndGetArray() const = 0;
103   public:
104     MEDLOADER_EXPORT MEDCouplingFieldDouble *fieldOnMesh(const MEDFileFieldGlobsReal *glob, const MEDFileMesh *mesh, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const;
105     MEDLOADER_EXPORT MEDCouplingFieldDouble *getFieldAtLevel(TypeOfField type, int meshDimRelToMax, const std::string& mName, int renumPol, const MEDFileFieldGlobsReal *glob, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
106     MEDLOADER_EXPORT MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, int meshDimRelToMax, int renumPol, const MEDFileFieldGlobsReal *glob, const MEDFileMesh *mesh, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
107     MEDLOADER_EXPORT MEDCouplingFieldDouble *getFieldAtTopLevel(TypeOfField type, const std::string& mName, int renumPol, const MEDFileFieldGlobsReal *glob, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
108     MEDLOADER_EXPORT MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, int renumPol, const MEDFileFieldGlobsReal *glob, const MEDCouplingMesh *mesh, const DataArrayIdType *cellRenum, const DataArrayIdType *nodeRenum, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
109     DataArray *getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, DataArrayIdType *&pfl, const MEDFileFieldGlobsReal *glob, const MEDFileFieldNameScope& nasc) const;
110   public:
111     MEDLOADER_EXPORT bool renumberEntitiesLyingOnMesh(const std::string& meshName, const std::vector<mcIdType>& oldCode, const std::vector<mcIdType>& newCode, const DataArrayIdType *renumO2N, MEDFileFieldGlobsReal& glob);
112     MEDLOADER_EXPORT std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > splitDiscretizations() const;
113     MEDLOADER_EXPORT std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > splitMultiDiscrPerGeoTypes() const;
114     MEDLOADER_EXPORT mcIdType keepOnlySpatialDiscretization(TypeOfField tof, std::vector< std::pair<mcIdType,mcIdType> >& its);
115     MEDLOADER_EXPORT mcIdType keepOnlyGaussDiscretization(std::size_t idOfDisc, std::vector< std::pair<mcIdType,mcIdType> >& its);
116   public:
117     MEDLOADER_EXPORT void allocNotFromFile(mcIdType newNbOfTuples);
118     MEDLOADER_EXPORT bool allocIfNecessaryTheArrayToReceiveDataFromFile();
119     MEDLOADER_EXPORT void loadOnlyStructureOfDataRecursively(med_idt fid, const MEDFileFieldNameScope& nasc, const MEDFileMeshes *ms, const MEDFileEntities *entities, const MEDFileCapability *capability = nullptr);
120     MEDLOADER_EXPORT void loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc);
121     MEDLOADER_EXPORT void loadBigArraysRecursivelyIfNecessary(med_idt fid, const MEDFileFieldNameScope& nasc);
122     MEDLOADER_EXPORT void loadStructureAndBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc, const MEDFileMeshes *ms, const MEDFileEntities *entities);
123     MEDLOADER_EXPORT void unloadArrays();
124     MEDLOADER_EXPORT void writeLL(med_idt fid, const MEDFileWritable& opts, const MEDFileFieldNameScope& nasc) const;
125     MEDLOADER_EXPORT static std::string FieldNameToMEDFileConvention(const std::string& nonCorrectFieldName);
126   protected:
127     int getMeshIdFromMeshName(const std::string& mName) const;
128     int addNewEntryIfNecessary(const MEDCouplingMesh *mesh);
129     void updateData(mcIdType newLgth, const std::vector< std::pair<mcIdType,mcIdType> >& oldStartStops);
130   protected:
131     std::vector< MCAuto< MEDFileFieldPerMesh > > _field_per_mesh;
132     int _iteration;
133     int _order;
134     double _dt;
135   public:
136     //! only useable on reading
137     mutable int _csit;
138     // -3 means allocated and build from scratch
139     // -2 means allocated and read from a file
140     // -1 means not allocated and build from scratch
141     // >=0 means not allocated and read from a file
142     mutable mcIdType _nb_of_tuples_to_be_allocated;
143   };
144
145   class MEDFileInt32Field1TSWithoutSDA;
146
147   template<class T>
148   class MEDFileField1TSTemplateWithoutSDA : public MEDFileAnyTypeField1TSWithoutSDA
149   {
150   protected:
151     MEDFileField1TSTemplateWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order):MEDFileAnyTypeField1TSWithoutSDA(fieldName,meshName,csit,iteration,order) { }
152     MEDFileField1TSTemplateWithoutSDA() { }
153   public:
154     MEDLOADER_EXPORT void setArray(DataArray *arr);
155     MEDLOADER_EXPORT DataArray *createNewEmptyDataArrayInstance() const;
156     MEDLOADER_EXPORT typename Traits<T>::ArrayType *getOrCreateAndGetArrayTemplate();
157     MEDLOADER_EXPORT typename Traits<T>::ArrayType const *getOrCreateAndGetArrayTemplate() const;
158     MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArrayTemplate() const;
159     MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArrayTemplateExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<mcIdType,mcIdType> > >& entries) const;
160     MEDLOADER_EXPORT DataArray *getOrCreateAndGetArray();
161     MEDLOADER_EXPORT const DataArray *getOrCreateAndGetArray() const;
162     MEDLOADER_EXPORT DataArray *getUndergroundDataArray() const;
163     MEDLOADER_EXPORT void aggregate(const typename std::vector< typename MLFieldTraits<T>::F1TSWSDAType const * >& f1tss, const std::vector< std::vector< std::pair<int,mcIdType> > >& dts);
164     MEDLOADER_EXPORT void copyTimeInfoFrom(const typename Traits<T>::FieldType *mcf);
165   protected:
166     MCAuto< typename Traits<T>::ArrayType > _arr;
167   };
168
169   /*!
170    * SDA is for Shared Data Arrays such as profiles.
171    */
172   class MEDFileField1TSWithoutSDA : public MEDFileField1TSTemplateWithoutSDA<double>
173   {
174   public:
175     MEDLOADER_EXPORT const char *getTypeStr() const;
176     MEDLOADER_EXPORT std::string getClassName() const override { return std::string("MEDFileField1TSWithoutSDA"); }
177     MEDLOADER_EXPORT DataArray *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<mcIdType,mcIdType> > >& entries) const;
178     MEDLOADER_EXPORT std::vector< std::vector<DataArrayDouble *> > getFieldSplitedByType2(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
179     MEDLOADER_EXPORT static void CheckMeshDimRel(int meshDimRelToMax);
180     MEDLOADER_EXPORT static std::vector<mcIdType> CheckSBTMesh(const MEDCouplingMesh *mesh);
181     MEDLOADER_EXPORT static MEDFileField1TSWithoutSDA *New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
182   public:
183     MEDLOADER_EXPORT MEDFileField1TSWithoutSDA();
184     MEDLOADER_EXPORT MEDFileField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
185     MEDLOADER_EXPORT MEDFileField1TSWithoutSDA *shallowCpy() const;
186     MEDLOADER_EXPORT MEDFileField1TSWithoutSDA *deepCopy() const;
187     MEDLOADER_EXPORT MEDFileInt32Field1TSWithoutSDA *convertToInt() const;
188     MEDLOADER_EXPORT MEDFileInt64Field1TSWithoutSDA *convertToInt64() const;
189     MEDLOADER_EXPORT MEDFileFloatField1TSWithoutSDA *convertToFloat() const;
190   public:
191     static const char TYPE_STR[];
192   };
193
194   template<class T>
195   class MEDFileField1TSNDTemplateWithoutSDA : public MEDFileField1TSTemplateWithoutSDA<T>
196   {
197   public:
198     MEDLOADER_EXPORT MEDFileField1TSWithoutSDA *convertToDouble() const;
199   protected:
200     MEDFileField1TSNDTemplateWithoutSDA() { }
201     MEDFileField1TSNDTemplateWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos):MEDFileField1TSTemplateWithoutSDA<T>(fieldName,meshName,csit,iteration,order) { }
202   };
203
204   /*!
205    * SDA is for Shared Data Arrays such as profiles.
206    */
207   class MEDFileInt32Field1TSWithoutSDA : public MEDFileField1TSNDTemplateWithoutSDA<Int32>
208   {
209   public:
210     MEDLOADER_EXPORT MEDFileInt32Field1TSWithoutSDA();
211     MEDLOADER_EXPORT std::string getClassName() const override { return std::string("MEDFileInt32Field1TSWithoutSDA"); }
212     MEDLOADER_EXPORT static MEDFileInt32Field1TSWithoutSDA *New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
213     MEDLOADER_EXPORT MEDFileInt32Field1TSWithoutSDA *deepCopy() const;
214     MEDLOADER_EXPORT MEDFileInt32Field1TSWithoutSDA *shallowCpy() const;
215     MEDLOADER_EXPORT const char *getTypeStr() const;
216     MEDLOADER_EXPORT DataArray *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<mcIdType,mcIdType> > >& entries) const;
217     MEDLOADER_EXPORT DataArrayInt32 *getUndergroundDataArrayIntExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<mcIdType,mcIdType> > >& entries) const;
218   protected:
219     MEDFileInt32Field1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
220   public:
221     MEDLOADER_EXPORT static const char TYPE_STR[];
222   };
223
224   /*!
225    * SDA is for Shared Data Arrays such as profiles.
226    */
227   class MEDFileInt64Field1TSWithoutSDA : public MEDFileField1TSNDTemplateWithoutSDA<Int64>
228   {
229   public:
230     MEDLOADER_EXPORT MEDFileInt64Field1TSWithoutSDA();
231     MEDLOADER_EXPORT std::string getClassName() const override { return std::string("MEDFileInt64Field1TSWithoutSDA"); }
232     MEDLOADER_EXPORT static MEDFileInt64Field1TSWithoutSDA *New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
233     MEDLOADER_EXPORT MEDFileInt64Field1TSWithoutSDA *deepCopy() const;
234     MEDLOADER_EXPORT MEDFileInt64Field1TSWithoutSDA *shallowCpy() const;
235     MEDLOADER_EXPORT const char *getTypeStr() const;
236     MEDLOADER_EXPORT DataArray *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<mcIdType,mcIdType> > >& entries) const;
237     MEDLOADER_EXPORT DataArrayInt64 *getUndergroundDataArrayIntExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<mcIdType,mcIdType> > >& entries) const;
238   protected:
239     MEDFileInt64Field1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
240   public:
241     MEDLOADER_EXPORT static const char TYPE_STR[];
242   };
243
244   /*!
245    * SDA is for Shared Data Arrays such as profiles.
246    */
247   class MEDFileFloatField1TSWithoutSDA : public MEDFileField1TSNDTemplateWithoutSDA<float>
248   {
249   public:
250     MEDLOADER_EXPORT MEDFileFloatField1TSWithoutSDA();
251     MEDLOADER_EXPORT std::string getClassName() const override { return std::string("MEDFileFloatField1TSWithoutSDA"); }
252     MEDLOADER_EXPORT static MEDFileFloatField1TSWithoutSDA *New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
253     MEDLOADER_EXPORT MEDFileFloatField1TSWithoutSDA *deepCopy() const;
254     MEDLOADER_EXPORT MEDFileFloatField1TSWithoutSDA *shallowCpy() const;
255     MEDLOADER_EXPORT const char *getTypeStr() const;
256     MEDLOADER_EXPORT DataArray *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<mcIdType,mcIdType> > >& entries) const;
257     MEDLOADER_EXPORT DataArrayFloat *getUndergroundDataArrayFloatExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<mcIdType,mcIdType> > >& entries) const;
258   protected:
259     MEDFileFloatField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
260   public:
261     MEDLOADER_EXPORT static const char TYPE_STR[];
262   };
263
264   /*!
265    * User class.
266    */
267   class MEDFileAnyTypeField1TS : public RefCountObject, public MEDFileWritableStandAlone, public MEDFileFieldGlobsReal
268   {
269   protected:
270     MEDLOADER_EXPORT MEDFileAnyTypeField1TS();
271     MEDLOADER_EXPORT MEDFileAnyTypeField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0);
272     MEDLOADER_EXPORT MEDFileAnyTypeField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0);
273     MEDLOADER_EXPORT MEDFileAnyTypeField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0);
274     MEDLOADER_EXPORT MEDFileAnyTypeField1TS(const MEDFileAnyTypeField1TSWithoutSDA& other, bool shallowCopyOfContent);
275     MEDLOADER_EXPORT std::string getClassName() const override { return std::string("MEDFileAnyTypeField1TS"); }
276     MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *BuildNewInstanceFromContent(MEDFileAnyTypeField1TSWithoutSDA *c);
277     MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *BuildNewInstanceFromContent(MEDFileAnyTypeField1TSWithoutSDA *c, med_idt fid);
278     MEDLOADER_EXPORT static MEDFileAnyTypeField1TSWithoutSDA *BuildContentFrom(med_idt fid, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
279     MEDLOADER_EXPORT static MEDFileAnyTypeField1TSWithoutSDA *BuildContentFrom(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
280     MEDLOADER_EXPORT static MEDFileAnyTypeField1TSWithoutSDA *BuildContentFrom(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
281     MEDLOADER_EXPORT void writeLL(med_idt fid) const;
282     // direct forwarding to MEDFileAnyTypeField1TSWithoutSDA instance _content
283   public:
284     MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(const std::string& fileName, bool loadAll=true);
285     MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(med_idt fid, bool loadAll=true);
286     MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
287     MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(med_idt fid, const std::string& fieldName, bool loadAll=true);
288     MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true);
289     MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll=true);
290     MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *NewAdv(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileEntities *entities);
291     MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *NewAdv(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileEntities *entities);
292     MEDLOADER_EXPORT int getDimension() const;
293     MEDLOADER_EXPORT int getIteration() const;
294     MEDLOADER_EXPORT int getOrder() const;
295     MEDLOADER_EXPORT double getTime(int& iteration, int& order) const;
296     MEDLOADER_EXPORT void setTime(int iteration, int order, double val);
297     MEDLOADER_EXPORT std::string getName() const;
298     MEDLOADER_EXPORT void setName(const std::string& name);
299     MEDLOADER_EXPORT std::string simpleRepr() const;
300     MEDLOADER_EXPORT void simpleRepr(int bkOffset, std::ostream& oss, int f1tsId) const;
301     MEDLOADER_EXPORT std::string getDtUnit() const;
302     MEDLOADER_EXPORT void setDtUnit(const std::string& dtUnit);
303     MEDLOADER_EXPORT std::string getMeshName() const;
304     MEDLOADER_EXPORT void setMeshName(const std::string& newMeshName);
305     MEDLOADER_EXPORT bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab);
306     MEDLOADER_EXPORT int getMeshIteration() const;
307     MEDLOADER_EXPORT int getMeshOrder() const;
308     MEDLOADER_EXPORT std::size_t getNumberOfComponents() const;
309     MEDLOADER_EXPORT bool isDealingTS(int iteration, int order) const;
310     MEDLOADER_EXPORT std::pair<int,int> getDtIt() const;
311     MEDLOADER_EXPORT void fillIteration(std::pair<int,int>& p) const;
312     MEDLOADER_EXPORT void fillTypesOfFieldAvailable(std::vector<TypeOfField>& types) const;
313     MEDLOADER_EXPORT void setInfo(const std::vector<std::string>& infos);
314     MEDLOADER_EXPORT const std::vector<std::string>& getInfo() const;
315     MEDLOADER_EXPORT std::vector<std::string>& getInfo();
316     MEDLOADER_EXPORT bool presenceOfMultiDiscPerGeoType() const;
317     MEDLOADER_EXPORT std::vector<TypeOfField> getTypesOfFieldAvailable() const;
318     MEDLOADER_EXPORT std::vector< std::vector<std::pair<mcIdType,mcIdType> > > getFieldSplitedByType(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF,
319         std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
320     MEDLOADER_EXPORT MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId);
321     MEDLOADER_EXPORT const MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId) const;
322     MEDLOADER_EXPORT int getNonEmptyLevels(const std::string& mname, std::vector<int>& levs) const;
323     MEDLOADER_EXPORT void convertMedBallIntoClassic();
324     MEDLOADER_EXPORT void makeReduction(INTERP_KERNEL::NormalizedCellType ct, TypeOfField tof, const DataArrayIdType *pfl);
325     MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TS *extractPart(const std::map<int, MCAuto<DataArrayIdType> >& extractDef, MEDFileMesh *mm) const = 0;
326     MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TS *shallowCpy() const = 0;
327   public:
328     MEDLOADER_EXPORT void loadArrays();
329     MEDLOADER_EXPORT void loadArraysIfNecessary();
330     MEDLOADER_EXPORT void unloadArrays();
331     MEDLOADER_EXPORT void unloadArraysWithoutDataLoss();
332     MEDLOADER_EXPORT std::vector< MCAuto< MEDFileAnyTypeField1TS > > splitComponents() const;
333     MEDLOADER_EXPORT std::vector< MCAuto< MEDFileAnyTypeField1TS > > splitDiscretizations() const;
334     MEDLOADER_EXPORT std::vector< MCAuto< MEDFileAnyTypeField1TS > > splitMultiDiscrPerGeoTypes() const;
335     MEDLOADER_EXPORT MEDFileAnyTypeField1TS *deepCopy() const;
336     MEDLOADER_EXPORT mcIdType copyTinyInfoFrom(const MEDCouplingFieldDouble *field, const DataArray *arr);
337     MEDLOADER_EXPORT mcIdType copyTinyInfoFrom(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arr);
338   public:
339     //! underground method see MEDFileField1TSWithoutSDA::setProfileNameOnLeaf
340     MEDLOADER_EXPORT void setProfileNameOnLeaf(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newPflName, bool forceRenameOnGlob=false);
341     //! underground method see MEDFileField1TSWithoutSDA::setLocNameOnLeaf
342     MEDLOADER_EXPORT void setLocNameOnLeaf(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newLocName, bool forceRenameOnGlob=false);
343     MEDLOADER_EXPORT std::size_t getHeapMemorySizeWithoutChildren() const;
344     MEDLOADER_EXPORT std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
345     MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsed() const;
346     MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsed() const;
347     MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsedMulti() const;
348     MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsedMulti() const;
349     MEDLOADER_EXPORT void changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
350     MEDLOADER_EXPORT void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
351   public:
352     MEDLOADER_EXPORT static int LocateField2(med_idt fid, int fieldIdCFormat, bool checkFieldId, std::string& fieldName, med_field_type& typcha, std::vector<std::string>& infos, std::string& dtunitOut, std::string& meshName);
353     MEDLOADER_EXPORT static int LocateField(med_idt fid, const std::string& fieldName, int& posCFormat, med_field_type& typcha, std::vector<std::string>& infos, std::string& dtunitOut, std::string& meshName);
354   public:
355     MEDLOADER_EXPORT virtual med_field_type getMEDFileFieldType() const = 0;
356     MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA *contentNotNullBase();
357     MEDLOADER_EXPORT const MEDFileAnyTypeField1TSWithoutSDA *contentNotNullBase() const;
358   protected:
359     MCAuto<MEDFileAnyTypeField1TSWithoutSDA> _content;
360   };
361
362   class MEDFileInt32Field1TS;
363
364   template<class T>
365   class MEDFileTemplateField1TS : public MEDFileAnyTypeField1TS
366   {
367   public:
368     MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New();
369     MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(const std::string& fileName, bool loadAll=true);
370     MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(med_idt fid, bool loadAll=true);
371     MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(DataArrayByte *db) { return BuildFromMemoryChunk<typename MLFieldTraits<T>::F1TSType>(db); }
372     MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
373     MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(med_idt fid, const std::string& fieldName, bool loadAll=true);
374     MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true);
375     MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll=true);
376     MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(const typename MLFieldTraits<T>::F1TSWSDAType& other, bool shallowCopyOfContent);
377   public:
378     MEDLOADER_EXPORT static typename Traits<T>::ArrayType *ReturnSafelyTypedDataArray(MCAuto<DataArray>& arr);
379     MEDLOADER_EXPORT typename Traits<T>::ArrayType *getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, DataArrayIdType *&pfl) const;
380     MEDLOADER_EXPORT void setArray(DataArray *arr);
381     MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArray() const;
382     MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<mcIdType,mcIdType> > >& entries) const;
383     MEDLOADER_EXPORT static MCAuto<typename Traits<T>::FieldType> SetDataArrayInField(MEDCouplingFieldDouble *f, MCAuto<DataArray>& arr);
384     MEDLOADER_EXPORT static MCAuto<MEDCouplingFieldDouble> ToFieldTemplateWithTime(const typename Traits<T>::FieldType *f);
385   public:
386     MEDLOADER_EXPORT void copyTimeInfoFrom(const typename Traits<T>::FieldType *mcf);
387     MEDLOADER_EXPORT typename Traits<T>::FieldType *field(const MEDFileMesh *mesh) const;
388     MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldAtLevel(TypeOfField type, int meshDimRelToMax, int renumPol=0) const;
389     MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldAtTopLevel(TypeOfField type, int renumPol=0) const;
390     MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldOnMeshAtLevel(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const;
391     MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldOnMeshAtLevel(TypeOfField type, const MEDCouplingMesh *mesh, int renumPol=0) const;
392     MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldAtLevelOld(TypeOfField type, const std::string& mname, int meshDimRelToMax, int renumPol=0) const;
393     MEDLOADER_EXPORT void setFieldNoProfileSBT(const typename Traits<T>::FieldType *field);
394     MEDLOADER_EXPORT void setFieldProfile(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayIdType *profile);
395     MEDLOADER_EXPORT void setFieldProfileFlatly(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayIdType *profile);
396     MEDLOADER_EXPORT typename MLFieldTraits<T>::F1TSType *extractPartImpl(const std::map<int, MCAuto<DataArrayIdType> >& extractDef, MEDFileMesh *mm) const;
397     MEDLOADER_EXPORT MEDFileAnyTypeField1TS *extractPart(const std::map<int, MCAuto<DataArrayIdType> >& extractDef, MEDFileMesh *mm) const { return this->extractPartImpl(extractDef,mm); }
398   protected:
399     ~MEDFileTemplateField1TS() { }
400     MEDFileTemplateField1TS();
401     MEDFileTemplateField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileAnyTypeField1TS(fid,loadAll,ms) { }
402     MEDFileTemplateField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms):MEDFileAnyTypeField1TS(fid,fieldName,loadAll,ms) { }
403     MEDFileTemplateField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms):MEDFileAnyTypeField1TS(fid,fieldName,iteration,order,loadAll,ms) { }
404     MEDFileTemplateField1TS(const typename MLFieldTraits<T>::F1TSWSDAType& other, bool shallowCopyOfContent):MEDFileAnyTypeField1TS(other,shallowCopyOfContent) { }
405     const typename MLFieldTraits<T>::F1TSWSDAType *contentNotNull() const;
406     typename MLFieldTraits<T>::F1TSWSDAType *contentNotNull();
407     void setFieldProfileGeneral(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayIdType *profile, bool smartPflKiller);
408   };
409
410   /*!
411    * User class.
412    */
413   class MEDFileField1TS : public MEDFileTemplateField1TS<double>
414   {
415     friend class MEDFileTemplateField1TS<double>;
416   public:
417     MEDLOADER_EXPORT MEDFileInt32Field1TS *convertToInt(bool isDeepCpyGlobs=true) const;
418     MEDLOADER_EXPORT MEDFileInt64Field1TS *convertToInt64(bool isDeepCpyGlobs=true) const;
419   public:
420     MEDLOADER_EXPORT MEDFileField1TS *shallowCpy() const;
421     MEDLOADER_EXPORT std::vector< std::vector<DataArrayDouble *> > getFieldSplitedByType2(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF,
422                                                                                           std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
423     MEDLOADER_EXPORT std::string getClassName() const override { return std::string("MEDFileField1TS"); }
424   public:
425   private:
426     med_field_type getMEDFileFieldType() const { return MED_FLOAT64; }
427   private:
428     ~MEDFileField1TS() { }
429     MEDFileField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms);
430     MEDFileField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms);
431     MEDFileField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms);
432     MEDFileField1TS(const MEDFileField1TSWithoutSDA& other, bool shallowCopyOfContent);
433     MEDFileField1TS() { }
434   };
435
436   template<class T>
437   class MEDFileNDTemplateField1TS : public MEDFileTemplateField1TS<T>
438   {
439   public:
440     MEDLOADER_EXPORT MEDFileField1TS *convertToDouble(bool isDeepCpyGlobs=true) const;
441     MEDLOADER_EXPORT MEDFileField1TS *convertToInt(bool isDeepCpyGlobs=true) const;
442     MEDLOADER_EXPORT MEDFileField1TS *convertToInt64(bool isDeepCpyGlobs=true) const;
443   protected:
444     ~MEDFileNDTemplateField1TS() { }
445     MEDFileNDTemplateField1TS() { }
446     MEDFileNDTemplateField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileTemplateField1TS<T>(fid,loadAll,ms) { }
447     MEDFileNDTemplateField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms):MEDFileTemplateField1TS<T>(fid,fieldName,loadAll,ms) { }
448     MEDFileNDTemplateField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms):MEDFileTemplateField1TS<T>(fid,fieldName,iteration,order,loadAll,ms) { }
449     MEDFileNDTemplateField1TS(const typename MLFieldTraits<T>::F1TSWSDAType& other, bool shallowCopyOfContent):MEDFileTemplateField1TS<T>(other,shallowCopyOfContent) { }
450   };
451
452   class MEDFileInt32Field1TS : public MEDFileNDTemplateField1TS<Int32>
453   {
454     friend class MEDFileTemplateField1TS<Int32>;
455   public:
456     MEDLOADER_EXPORT MEDFileInt32Field1TS *shallowCpy() const { return new MEDFileInt32Field1TS(*this); }
457     MEDLOADER_EXPORT std::string getClassName() const override { return std::string("MEDFileInt32Field1TS"); }
458   public:
459     MEDLOADER_EXPORT static MCAuto<MEDCouplingFieldDouble> ConvertFieldIntToFieldDouble(const MEDCouplingFieldInt32 *f);
460   private:
461     med_field_type getMEDFileFieldType() const { return MED_INT32; }
462   private:
463     ~MEDFileInt32Field1TS() { }
464     MEDFileInt32Field1TS() { }
465     MEDFileInt32Field1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<Int32>(fid,loadAll,ms) { }
466     MEDFileInt32Field1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<Int32>(fid,fieldName,loadAll,ms) { }
467     MEDFileInt32Field1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<Int32>(fid,fieldName,iteration,order,loadAll,ms) { }
468     /*!
469      * This constructor is a shallow copy constructor. If \a shallowCopyOfContent is true the content of \a other is shallow copied.
470      * If \a shallowCopyOfContent is false, \a other is taken to be the content of \a this.
471      *
472      * \warning this is a shallow copy constructor
473      */
474     MEDFileInt32Field1TS(const MEDFileInt32Field1TSWithoutSDA& other, bool shallowCopyOfContent):MEDFileNDTemplateField1TS<Int32>(other,shallowCopyOfContent) { }
475   };
476
477   class MEDFileInt64Field1TS : public MEDFileNDTemplateField1TS<Int64>
478   {
479     friend class MEDFileTemplateField1TS<Int64>;
480   public:
481     MEDLOADER_EXPORT MEDFileInt64Field1TS *shallowCpy() const { return new MEDFileInt64Field1TS(*this); }
482     MEDLOADER_EXPORT std::string getClassName() const override { return std::string("MEDFileInt64Field1TS"); }
483   public:
484     MEDLOADER_EXPORT static MCAuto<MEDCouplingFieldDouble> ConvertFieldIntToFieldDouble(const MEDCouplingFieldInt64 *f);
485   private:
486     med_field_type getMEDFileFieldType() const { return MED_INT64; }
487   private:
488     ~MEDFileInt64Field1TS() { }
489     MEDFileInt64Field1TS() { }
490     MEDFileInt64Field1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<Int64>(fid,loadAll,ms) { }
491     MEDFileInt64Field1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<Int64>(fid,fieldName,loadAll,ms) { }
492     MEDFileInt64Field1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<Int64>(fid,fieldName,iteration,order,loadAll,ms) { }
493     /*!
494      * This constructor is a shallow copy constructor. If \a shallowCopyOfContent is true the content of \a other is shallow copied.
495      * If \a shallowCopyOfContent is false, \a other is taken to be the content of \a this.
496      *
497      * \warning this is a shallow copy constructor
498      */
499     MEDFileInt64Field1TS(const MEDFileInt64Field1TSWithoutSDA& other, bool shallowCopyOfContent):MEDFileNDTemplateField1TS<Int64>(other,shallowCopyOfContent) { }
500   };
501
502   class MEDFileFloatField1TS : public MEDFileNDTemplateField1TS<float>
503   {
504     friend class MEDFileTemplateField1TS<float>;
505   private:
506     med_field_type getMEDFileFieldType() const { return MED_FLOAT32; }
507     MEDLOADER_EXPORT MEDFileFloatField1TS *shallowCpy() const { return new MEDFileFloatField1TS(*this); }
508     MEDLOADER_EXPORT std::string getClassName() const override { return std::string("MEDFileFloatField1TS"); }
509   private:
510     ~MEDFileFloatField1TS() { }
511     MEDFileFloatField1TS() { }
512     MEDFileFloatField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<float>(fid,loadAll,ms) { }
513     MEDFileFloatField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<float>(fid,fieldName,loadAll,ms) { }
514     MEDFileFloatField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<float>(fid,fieldName,iteration,order,loadAll,ms) { }
515     /*!
516      * This constructor is a shallow copy constructor. If \a shallowCopyOfContent is true the content of \a other is shallow copied.
517      * If \a shallowCopyOfContent is false, \a other is taken to be the content of \a this.
518      *
519      * \warning this is a shallow copy constructor
520      */
521     MEDFileFloatField1TS(const MEDFileFloatField1TSWithoutSDA& other, bool shallowCopyOfContent):MEDFileNDTemplateField1TS<float>(other,shallowCopyOfContent) { }
522   };
523 }
524
525 #endif