4 # include "MEDMEM_Med.hxx"
6 # include "MEDMEM_STRING.hxx"
8 # include "MEDMEM_Mesh.hxx"
9 # include "MEDMEM_Grid.hxx"
10 # include "MEDMEM_Field.hxx"
12 # include "MEDMEM_Exception.hxx"
13 # include "utilities.h"
14 using namespace MEDMEM;
20 MESSAGE("MED::MED()");
26 MED::MED(driverTypes driverType, const string & fileName)
28 const char * LOC = "MED::MED(driverTypes driverType, const string & fileName) : ";
31 MESSAGE(LOC << "driverType = " << driverType);
33 MED_MED_RDONLY_DRIVER * myDriver = new MED_MED_RDONLY_DRIVER(fileName,this) ;
34 int current = addDriver(*myDriver);
35 //int current= addDriver(driverType,fileName);
37 _drivers[current]->open();
38 _drivers[current]->readFileStruct();
39 _drivers[current]->close();
49 const char * LOC = "MED::~MED() : ";
52 // Analysis of the object MED
56 map<FIELD_ *, MESH_NAME_>::const_iterator currentField;
58 for ( currentField=_meshName.begin();currentField != _meshName.end(); currentField++ ) {
59 if ( (*currentField).first != NULL) index++;
62 MESSAGE(LOC << " there is(are) " << index << " field(s):");
63 for ( currentField=_meshName.begin();currentField != _meshName.end(); currentField++ ) {
64 if ( (*currentField).first != NULL) MESSAGE(" " << ((*currentField).first)->getName().c_str());
67 map<MESH_NAME_, map<MED_FR::med_entite_maillage,SUPPORT *> >::iterator itSupportOnMesh ;
69 for ( itSupportOnMesh=_support.begin();itSupportOnMesh != _support.end(); itSupportOnMesh++ ) {
70 map<MED_FR::med_entite_maillage,SUPPORT *>::iterator itSupport ;
71 for ( itSupport=(*itSupportOnMesh).second.begin();itSupport!=(*itSupportOnMesh).second.end();itSupport++)
75 MESSAGE(LOC << " there is(are) " << index << " support(s):");
77 map<MESH_NAME_,MESH*>::const_iterator currentMesh;
79 for ( currentMesh=_meshes.begin();currentMesh != _meshes.end(); currentMesh++ ) {
80 if ( (*currentMesh).second != NULL)
84 MESSAGE(LOC << " there is(are) " << index << " meshe(s):");
85 // for ( currentMesh=_meshes.begin();currentMesh != _meshes.end(); currentMesh++ ) {
86 // if ( (*currentMesh).second != NULL)
88 // SCRUTE((*currentMesh).second);
90 // string meshName = ((*currentMesh).second)->getName();
92 // MESSAGE(" " << meshName);
96 // delete all ? : PG : YES !
97 // map<FIELD_ *, MESH_NAME_>::const_iterator currentField;
98 for ( currentField=_meshName.begin();currentField != _meshName.end(); currentField++ ) {
99 if ( (*currentField).first != NULL) {
100 // cast in right type to delete it !
101 switch ((*currentField).first->getValueType()) {
103 delete (FIELD<int>*) (*currentField).first ;
106 delete (FIELD<double>*) (*currentField).first ;
109 MESSAGE(LOC << "Field has type different of int or double, could not destroy its values array !") ;
110 delete (*currentField).first;
114 // map<MESH_NAME_, map<MED_FR::med_entite_maillage,SUPPORT *> >::iterator itSupportOnMesh ;
115 for ( itSupportOnMesh=_support.begin();itSupportOnMesh != _support.end(); itSupportOnMesh++ ) {
116 map<MED_FR::med_entite_maillage,SUPPORT *>::iterator itSupport ;
117 for ( itSupport=(*itSupportOnMesh).second.begin();itSupport!=(*itSupportOnMesh).second.end();itSupport++)
118 delete (*itSupport).second ;
121 // map<MESH_NAME_,MESH*>::const_iterator currentMesh;
122 for ( currentMesh=_meshes.begin();currentMesh != _meshes.end(); currentMesh++ ) {
123 if ( (*currentMesh).second != NULL)
125 if (!((*currentMesh).second)->getIsAGrid())
126 delete (*currentMesh).second;
128 delete (GRID *) (*currentMesh).second;
132 index =_drivers.size();
134 MESSAGE(LOC << "In this object MED there is(are) " << index << " driver(s):");
136 for (unsigned int ind=0; ind < _drivers.size(); ind++ )
138 SCRUTE(_drivers[ind]);
139 if ( _drivers[ind] != NULL) delete _drivers[ind];
147 // ------- Drivers Management Part
149 // Add your new driver instance declaration here (step 3-1)
150 MED::INSTANCE_DE<MED_MED_RDWR_DRIVER> MED::inst_med ;
151 MED::INSTANCE_DE<VTK_MED_DRIVER> MED::inst_vtk ;
153 // Add your new driver instance in the MED instance list (step 3-2)
154 const MED::INSTANCE * const MED::instances[] = { &MED::inst_med, &MED::inst_vtk };
157 Create the specified driver and return its index reference to path to
158 read or write methods.
160 int MED::addDriver(driverTypes driverType, const string & fileName="Default File Name.med") {
162 const char * LOC = "MED::addDriver(driverTypes driverType, const string & fileName=\"Default File Name.med\") : ";
165 int itDriver = (int) NO_DRIVER;
169 MESSAGE(LOC << " the file name is " << fileName);
173 SCRUTE(instances[driverType]);
178 itDriver = (int) driverType ;
188 throw MED_EXCEPTION (LOCALIZED(STRING(LOC)<< "GIBI_DRIVER has been specified to the method which is not allowed because there is no GIBI driver for the MED object"));
193 throw MED_EXCEPTION (LOCALIZED(STRING(LOC)<< "NO_DRIVER has been specified to the method which is not allowed"));
198 if (itDriver == ((int) NO_DRIVER))
199 throw MED_EXCEPTION (LOCALIZED(STRING(LOC)<< "NO_DRIVER has been specified to the method which is not allowed"));
201 driver = instances[itDriver]->run(fileName, this) ;
203 current = _drivers.size()-1;
205 driver->setId(current);
213 Duplicate the given driver and return its index reference to path to
214 read or write methods.
216 int MED::addDriver(GENDRIVER & driver) {
217 const char * LOC = "MED::addDriver(GENDRIVER &) : ";
222 SCRUTE(_drivers.size());
224 _drivers.push_back(&driver);
226 SCRUTE(_drivers.size());
231 current = _drivers.size()-1;
233 driver.setId(current);
236 MESSAGE(LOC << " je suis la 1");
240 MESSAGE(LOC << " je suis la 2");
246 Remove the driver referenced by its index.
248 void MED::rmDriver (int index/*=0*/)
249 throw (MED_EXCEPTION)
251 const char * LOC = "MED::rmDriver (int index=0): ";
255 //_drivers.erase(&_drivers[index]);
258 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
259 << "The index given is invalid, index must be between 0 and |"
267 ??? to do comment ???
269 void MED::writeFrom (int index/*=0*/)
270 throw (MED_EXCEPTION)
272 const char * LOC = "MED::write (int index=0): ";
275 if (_drivers[index]) {
276 // open and close are made by all objects !
277 _drivers[index]->writeFrom();
279 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
280 << "The index given is invalid, index must be between 0 and |"
288 Write all objects with the driver given by its index.
290 void MED::write (int index/*=0*/)
291 throw (MED_EXCEPTION)
293 const char * LOC = "MED::write (int index=0): ";
296 if (_drivers[index]) {
297 // open and close are made by the subsequent objects !
298 _drivers[index]->write();
301 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
302 << "The index given is invalid, index must be between 0 and |"
310 Parse all the file and generate empty object.
312 All object must be read explicitly later with their own method read
313 or use MED::read to read all.
315 This method is automaticaly call by constructor with driver information.
317 void MED::readFileStruct (int index/*=0*/)
318 throw (MED_EXCEPTION)
320 const char * LOC = "MED::readFileStruct (int index=0): ";
323 if (_drivers[index]) {
324 _drivers[index]->open();
325 _drivers[index]->readFileStruct();
326 _drivers[index]->close();
329 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
330 << "The index given is invalid, index must be between 0 and |"
338 Read all objects in the file specified in the driver given by its index.
340 void MED::read (int index/*=0*/)
341 throw (MED_EXCEPTION)
343 const char * LOC = "MED::read (int index=0): ";
346 if (_drivers[index]) {
347 // open and close are made by all objects !
349 SCRUTE(_drivers[index]);
350 SCRUTE(&_drivers[index]);
351 // _drivers[index]->open();
352 _drivers[index]->read();
353 // _drivers[index]->close();
356 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
357 << "The index given is invalid, index must be between >0 and < |"
365 // ------- End Of Drivers Management Part
368 Get the number of MESH objects.
370 int MED::getNumberOfMeshes ( void ) const {
372 const char * LOC = "MED::getNumberOfMeshes ( void ) const : ";
375 return _meshes.size();
381 Get the number of FIELD objects.
383 int MED::getNumberOfFields ( void ) const {
385 const char * LOC = "MED::getNumberOfFields ( void ) const : ";
388 return _fields.size(); // we get number of field with different name
394 Get the names of all MESH objects.
396 meshNames is an in/out argument.
398 It is a string array of size the
399 number of MESH objects. It must be allocated before calling
400 this method. All names are put in it.
402 void MED::getMeshNames ( string * meshNames ) const
403 throw (MED_EXCEPTION)
405 const char * LOC = "MED::getMeshNames ( string * ) const : ";
407 unsigned int meshNamesSize;
409 if ( ( meshNamesSize = sizeof(meshNames) / sizeof(string *) )
411 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
412 << "Size of parameter meshNames is |"
413 << meshNamesSize << "| and should be |"
414 << _meshes.size() << "| and should be |"
418 // REM : ALLOCATION D'UN TABLEAU DE POINTEURS SUR STRING FAITE PAR LE CLIENT
419 map<MESH_NAME_,MESH*>::const_iterator currentMesh; // ??ITERATEUR CONST SUR UN OBJET NON CONST ??
421 int meshNamesIndex = 0;
423 for ( currentMesh=_meshes.begin();currentMesh != _meshes.end(); currentMesh++ ) {
424 meshNames[meshNamesIndex]=(*currentMesh).first;
425 meshNamesIndex++; // CF OPTIMISATION
432 Get the names of all MESH objects.
434 Return a deque<string> object which contain the name of all MESH objects.
436 deque<string> MED::getMeshNames () const {
438 const char * LOC = "MED::getMeshNames () const : ";
441 deque<string> meshNames(_meshes.size());
443 map<MESH_NAME_,MESH*>::const_iterator currentMesh; // ??ITERATEUR CONST SUR UN OBJET NON CONST ??
445 int meshNamesIndex = 0;
447 for ( currentMesh=_meshes.begin();currentMesh != _meshes.end(); currentMesh++ ) {
448 meshNames[meshNamesIndex]=(*currentMesh).first;
449 meshNamesIndex++; // CF OPTIMISATION
458 Return a reference to the MESH object named meshName.
460 MESH * MED::getMesh ( const string & meshName ) const
461 throw (MED_EXCEPTION)
464 const char * LOC = "MED::getMesh ( const string & meshName ) const : ";
467 map<MESH_NAME_,MESH*>::const_iterator itMeshes = _meshes.find(meshName);
469 if ( itMeshes == _meshes.end() )
470 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
471 << "There is no known mesh named |"
476 return (*itMeshes).second;
482 \internal Return a reference to the MESH object associated with
485 MESH * MED::getMesh (const FIELD_ * const field ) const
486 throw (MED_EXCEPTION)
489 const char * LOC = "MED::getMesh ( const FIELD * field ) const : ";
492 FIELD_ * f = const_cast< FIELD_* > (field); // Comment faire mieux ?
493 map<FIELD_ *, MESH_NAME_>::const_iterator itMeshName = _meshName.find(f);
495 if ( itMeshName == _meshName.end() )
496 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
497 << "There is no known mesh associated with |"
498 << field << "| pointer"
502 string meshName = (*itMeshName).second;
503 map<MESH_NAME_,MESH*>::const_iterator itMeshes = _meshes.find(meshName);
504 if ( itMeshes == _meshes.end() )
505 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
506 << "There is no known mesh named |"
507 << meshName << " while it's associated with the found field |"
508 << field << "| pointer"
512 return (*itMeshes).second;
519 Get the names of all FIELD objects.
521 fieldNames is an in/out argument.
523 It is an array of string of size the
524 number of FIELD objects. It must be allocated before calling
525 this method. All names are put in it.
527 void MED::getFieldNames ( string * fieldNames ) const
528 throw (MED_EXCEPTION)
530 const char * LOC = "MED::getFieldNames ( string * ) const : ";
533 unsigned int fieldNamesSize = sizeof(fieldNames) / sizeof(string *);
535 if ( fieldNamesSize != _fields.size() )
536 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
537 << "Size of parameter fieldNames is |"
538 << fieldNamesSize << "| and should be |"
539 << _fields.size() << "| and should be |"
543 // REM : ALLOCATION D'UN TABLEAU DE POINTEURS SUR STRING FAITE PAR LE CLIENT
544 map<FIELD_NAME_,MAP_DT_IT_>::const_iterator currentField;
546 int fieldNamesIndex = 0;
547 for ( currentField=_fields.begin();currentField != _fields.end(); currentField++ ) {
548 fieldNames[fieldNamesIndex]=(*currentField).first;
549 fieldNamesIndex++; // CF OPTIMISATION
557 Get the names of all FIELD objects.
559 Return a deque<string> object which contain the name of all FIELD objects.
561 deque<string> MED::getFieldNames () const {
563 const char * LOC = "MED::getFieldNames ( ) const : ";
566 deque<string> fieldNames(_fields.size());
568 map<FIELD_NAME_,MAP_DT_IT_>::const_iterator currentField;
570 int fieldNamesIndex = 0;
572 for ( currentField=_fields.begin();currentField != _fields.end(); currentField++ ) {
573 fieldNames[fieldNamesIndex]=(*currentField).first;
574 fieldNamesIndex++; // CF OPTIMISATION
582 Return a deque<DT_IT_> which contain all iteration step for the FIELD
583 identified by its name.
585 deque<DT_IT_> MED::getFieldIteration (const string & fieldName) const
586 throw (MED_EXCEPTION)
589 const char * LOC = "MED::getFieldIteration ( const string & ) const : ";
592 map<FIELD_NAME_,MAP_DT_IT_>::const_iterator itFields = _fields.find(fieldName);
594 if ( itFields == _fields.end() )
595 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
596 << "There is no known field named |"
600 // const MAP_DT_IT_ & myIterationMap = const_cast<const MAP_DT_IT_ & > ((*itFields).second);
601 const MAP_DT_IT_ & myIterationMap = (*itFields).second ;
602 MAP_DT_IT_::const_iterator currentIterator ;
604 int iterationSize = myIterationMap.size();
606 SCRUTE(iterationSize);
608 deque<DT_IT_> Iteration(iterationSize);
610 int iterationIndex = 0;
612 for (currentIterator = myIterationMap.begin();
613 currentIterator != myIterationMap.end(); currentIterator++ )
615 SCRUTE(((*currentIterator).first).dt);
616 SCRUTE(((*currentIterator).first).it);
618 Iteration[iterationIndex].dt = ((*currentIterator).first).dt;
619 Iteration[iterationIndex].it = ((*currentIterator).first).it;
621 // Iteration[iterationIndex]=(*currentIterator).first;
622 SCRUTE(Iteration[iterationIndex].dt);
623 SCRUTE(Iteration[iterationIndex].it);
624 iterationIndex++; // CF OPTIMISATION
632 Return a reference to the FIELD object named fieldName with
633 time step number dt and order number it.
635 FIELD_ * MED::getField ( const string & fieldName, const int dt=MED_NOPDT, const int it=MED_NOPDT ) const
636 throw (MED_EXCEPTION)
639 const char * LOC = "MED::getField ( const string &, const int, const int ) const : ";
642 MESSAGE(LOC << "fieldName = "<<fieldName<<", dt ="<<dt<<", it = "<<it);
649 map<FIELD_NAME_,MAP_DT_IT_>::const_iterator itFields = _fields.find(fieldName);
651 if ( itFields == _fields.end() )
652 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
653 << "There is no known field named |"
658 const MAP_DT_IT_ & map_dtIt = const_cast<const MAP_DT_IT_ & > ((*itFields).second);
659 MAP_DT_IT_::const_iterator itMap_dtIt = map_dtIt.find(dtIt);
661 if ( itMap_dtIt == map_dtIt.end() )
662 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
663 << "There is no (dt,it) |("
664 << dt << "," << it << ")| associated with the found field |"
671 //return _fields[fieldName][dtIt];
672 return (*itMap_dtIt).second;
677 // fiend ostream & MED::operator<<(ostream &os,const MED & med) const {
682 Return a map<MED_FR::med_entite_maillage,SUPPORT*> which contain
683 foreach entity, a reference to the SUPPORT on all elements.
685 const map<MED_FR::med_entite_maillage,SUPPORT*> & MED::getSupports(const string & meshName) const
686 throw (MED_EXCEPTION)
688 const char * LOC = "MED::getSupports ( const string ) const : ";
691 map<MESH_NAME_, map<MED_FR::med_entite_maillage,SUPPORT *> >::const_iterator itSupportOnMesh = _support.find(meshName) ;
693 if ( itSupportOnMesh == _support.end() )
694 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
695 << "There is no support on mesh named |"
700 return (*itSupportOnMesh).second ;
704 Return a reference to the SUPPORT object on all elements of entity
705 for the MESH named meshName.
707 SUPPORT * MED::getSupport (const string & meshName,MED_FR::med_entite_maillage entity) const
708 throw (MED_EXCEPTION)
710 const char * LOC = "MED::getSupport ( const string, MED_FR::med_entite_maillage ) const : ";
714 for (map<MESH_NAME_, map<MED_FR::med_entite_maillage,SUPPORT *> >::const_iterator const_itSupportOnMesh=_support.begin(); const_itSupportOnMesh != _support.end();
715 const_itSupportOnMesh++ )
717 map<MED_FR::med_entite_maillage,SUPPORT *>::const_iterator const_itSupport ;
718 for (const_itSupport=(*const_itSupportOnMesh).second.begin();
719 const_itSupport!=(*const_itSupportOnMesh).second.end();const_itSupport++) index++;
722 MESSAGE(LOC << "In this MED object there is(are) " << index << " support(s):");
724 for (map<MESH_NAME_, map<MED_FR::med_entite_maillage,SUPPORT *> >::const_iterator const_itSupportOnMesh=_support.begin();const_itSupportOnMesh != _support.end(); const_itSupportOnMesh++ )
726 map<MED_FR::med_entite_maillage,SUPPORT *>::const_iterator const_itSupport ;
727 for (const_itSupport=(*const_itSupportOnMesh).second.begin();
728 const_itSupport!=(*const_itSupportOnMesh).second.end();const_itSupport++)
730 MESSAGE(LOC << "Support on mesh " << (*const_itSupportOnMesh).first << " on entity " << (*const_itSupport).first << " : " << *((*const_itSupport).second));
735 map<MESH_NAME_, map<MED_FR::med_entite_maillage,SUPPORT *> >::const_iterator const_itSupportOnMesh = _support.find(meshName) ;
737 if ( const_itSupportOnMesh == _support.end() )
738 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
739 << "There is no support on mesh named |"
744 // map<MED_FR::med_entite_maillage,SUPPORT *> & SupportOnMesh = (map<MED_FR::med_entite_maillage,SUPPORT *>&) ((*itSupportOnMesh).second) ;
745 // map<MED_FR::med_entite_maillage,SUPPORT *>::const_iterator itSupport = SupportOnMesh.find(entity) ;
747 // if (itSupport == SupportOnMesh.end() )
748 // throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
749 // << "There is no support on entity "
750 // << entity << " in mesh named |"
751 // << meshName << "|"
756 map<MED_FR::med_entite_maillage,SUPPORT *> SupportOnMesh = ((*const_itSupportOnMesh).second);
758 map<MED_FR::med_entite_maillage,SUPPORT *>::const_iterator itSupport = SupportOnMesh.find(entity) ;
760 if (itSupport == SupportOnMesh.end() )
761 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
762 << "There is no support on entity "
763 << entity << " in mesh named |"
768 return (*itSupport).second ;
772 Temporary method : when all MESH objects are read, this methods
773 update all SUPPORT objects with the rigth dimension.
775 void MED::updateSupport ()
778 const char * LOC = "MED::updateSupport () : ";
781 map<MESH_NAME_, map<MED_FR::med_entite_maillage,SUPPORT *> >::iterator itSupportOnMesh ;
782 for ( itSupportOnMesh=_support.begin();itSupportOnMesh != _support.end(); itSupportOnMesh++ ) {
783 map<MED_FR::med_entite_maillage,SUPPORT *>::iterator itSupport ;
784 for ( itSupport=(*itSupportOnMesh).second.begin();itSupport!=(*itSupportOnMesh).second.end();itSupport++)
786 (*itSupport).second->update() ;
788 catch (MEDEXCEPTION & ex) {
789 // entity not defined in mesh -> we remove support on it !
790 MESSAGE(LOC<<ex.what());
791 delete (*itSupport).second ;
792 (*itSupportOnMesh).second.erase(itSupport) ; // that's rigth ????
801 Add the given MESH object. MED object control it,
802 and destroy it, so you must not destroy it after.
804 The meshName is given by the MESH object.
806 void MED::addMesh( MESH * const ptrMesh)
807 throw (MED_EXCEPTION)
809 const char * LOC = "MED::addMesh(const MESH * ptrMesh): ";
813 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC) << "ptrMesh must not be NULL !"));
816 if ( ! ( meshName = ptrMesh->getName()).size() )
817 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC) << "ptrMesh->_name must not be NULL !"));
819 // MESH * meshToMed = new MESH(*ptrMesh); DO WE HAVE TO COPY THE ENTRY MESH OR NOT ????? (NB)
821 _meshes[meshName] = ptrMesh; // if ptrMesh->meshName already exists it is modified
823 // _meshes[meshName] = meshToMed;
829 Add the given FIELD object. MED object control it,
830 and destroy it, so you must not destroy it after.
832 The fieldName is given by the FIELD object.
834 void MED::addField( FIELD_ * const ptrField)
835 throw (MED_EXCEPTION)
837 const char * LOC = "MED::addField(const FIELD_ * const ptrField): ";
841 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC) << "ptrField must not be NULL !"));
844 if ( ! (fieldName = ptrField->getName()).size() )
845 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC) << "ptrField->_name must not be NULL !"));
847 SUPPORT * ptrSupport;
848 if ( ! ( ptrSupport = (SUPPORT * ) ptrField->getSupport()) )
849 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC) << "ptrField->_support must not be NULL !"));
852 if ( ! ( ptrMesh = ptrSupport->getMesh()) )
853 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC) << "ptrField->_support->_mesh must not be NULL !"));
856 if ( ! ( meshName = ptrMesh->getName()).size() )
857 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC) << "ptrField->_support->_mesh->_name must not be NULL !"));
860 dtIt.dt = ptrField->getIterationNumber();
861 dtIt.it = ptrField->getOrderNumber();
863 _fields [fieldName][dtIt] = ptrField; // if it already exists it is replaced
864 _meshName [ptrField] = meshName; // if it already exists it is replaced
865 _meshes [meshName] = ptrMesh; // if it already exists it is replaced
867 // int numberOfTypes = ptrSupport->getNumberOfTypes(); !! UNUSED VARIABLE !!
868 _support [meshName][ (MED_FR::med_entite_maillage) ptrSupport->getEntity()] = ptrSupport;// if it already exists it is replaced