-// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
+// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
#ifndef MED_FIELD_DRIVER21_HXX
#define MED_FIELD_DRIVER21_HXX
void open() throw (MEDEXCEPTION)
{
const char * LOC = "MED_FIELD_DRIVER21::open() ";
- BEGIN_OF(LOC);
+ BEGIN_OF_MED(LOC);
// we must set fieldname before open, because we must find field number in file (if it exist !!!)
- if ( MED_FIELD_DRIVER<T>::_fileName == "" )
+ if ( MED_FIELD_DRIVER<T>::_fileName == "" ) {
throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
<< "_fileName is |\"\"|, please set a correct fileName before calling open()"
)
);
-
- MESSAGE(LOC<<"_fileName.c_str : "<< MED_FIELD_DRIVER<T>::_fileName.c_str()<<",mode : "<< MED_FIELD_DRIVER<T>::_accessMode);
- _medIdt = med_2_1::MEDouvrir( (const_cast <char *> (MED_FIELD_DRIVER<T>::_fileName.c_str())),(med_2_1::med_mode_acces) MED_FIELD_DRIVER<T>::_accessMode);
- MESSAGE(LOC<<"_medIdt : "<< _medIdt );
+ }
+ if ( MED_FIELD_DRIVER<T>::_status==MED_OPENED )
+ return;
+
+ MED_EN::med_mode_acces mode = dynamic_cast<GENDRIVER*>(this)->getAccessMode();
+ med_2_1::med_mode_acces m21mode = (med_2_1::med_mode_acces)getMedAccessMode(mode,MED_EN::V21);
+ MESSAGE_MED(LOC<<"_fileName.c_str : "<< MED_FIELD_DRIVER<T>::_fileName.c_str()<<",mode : "<< MED_FIELD_DRIVER<T>::_accessMode);
+ _medIdt = med_2_1::MEDouvrir( (const_cast <char *> (MED_FIELD_DRIVER<T>::_fileName.c_str())),
+ //(med_2_1::med_mode_acces) MED_FIELD_DRIVER<T>::_accessMode);
+ m21mode);
+ // (med_2_1::med_mode_acces) mode);
+ MESSAGE_MED(LOC<<"_medIdt : "<< _medIdt );
if (_medIdt > 0)
MED_FIELD_DRIVER<T>::_status=MED_OPENED;
else {
);
}
- END_OF(LOC);
+ END_OF_MED(LOC);
}
void close() {
- BEGIN_OF("MED_FIELD_DRIVER21::close()");
+ const char* LOC = "MED_FIELD_DRIVER21::close()";
+ BEGIN_OF_MED(LOC);
med_2_1::med_int err = 0;
if (MED_FIELD_DRIVER<T>::_status == MED_OPENED) {
err=med_2_1::MEDfermer(MED_FIELD_DRIVER21<T>::_medIdt);
//H5close(); // If we call H5close() all the files are closed.
MED_FIELD_DRIVER<T>::_status = MED_CLOSED;
MED_FIELD_DRIVER21<T>::_medIdt = MED_INVALID;
- MESSAGE(" MED_FIELD_DRIVER21::close() : MEDfermer : MED_FIELD_DRIVER21<T>::_medIdt= " << _medIdt );
- MESSAGE(" MED_FIELD_DRIVER21::close() : MEDfermer : err = " << err );
+ MESSAGE_MED(" MED_FIELD_DRIVER21::close() : MEDfermer : MED_FIELD_DRIVER21<T>::_medIdt= " << _medIdt );
+ MESSAGE_MED(" MED_FIELD_DRIVER21::close() : MEDfermer : err = " << err );
}
- END_OF("MED_FIELD_DRIVER21::close()");
+ END_OF_MED(LOC);
}
/*!
Constructor.
*/
- MED_FIELD_RDONLY_DRIVER21():MED_FIELD_DRIVER<T>() {};
+ MED_FIELD_RDONLY_DRIVER21():MED_FIELD_DRIVER<T>()
+ {
+ this->GENDRIVER::_accessMode = MED_EN::RDONLY;
+ };
/*!
Constructor.
template <class INTERLACING_TAG>
MED_FIELD_RDONLY_DRIVER21(const string & fileName,
FIELD<T, INTERLACING_TAG> * ptrField):
- MED_FIELD_DRIVER<T>(fileName,ptrField,MED_EN::MED_RDONLY),
- MED_FIELD_DRIVER21<T>(fileName,ptrField,MED_EN::MED_RDONLY),
+ MED_FIELD_DRIVER<T>(fileName,ptrField,MED_EN::RDONLY),
+ MED_FIELD_DRIVER21<T>(fileName,ptrField,MED_EN::RDONLY),
IMED_FIELD_RDONLY_DRIVER<T>(fileName,ptrField)
{
- BEGIN_OF("MED_FIELD_RDONLY_DRIVER21::MED_FIELD_RDONLY_DRIVER21(const string & fileName, const FIELD<T,INTERLACING_TAG> * ptrField)");
- END_OF("MED_FIELD_RDONLY_DRIVER21::MED_FIELD_RDONLY_DRIVER21(const string & fileName, const FIELD<T,INTERLACING_TAG> * ptrField)");
+ const char* LOC = "MED_FIELD_RDONLY_DRIVER21::MED_FIELD_RDONLY_DRIVER21(const string & fileName, const FIELD<T,INTERLACING_TAG> * ptrField)";
+ BEGIN_OF_MED(LOC);
+ END_OF_MED(LOC);
}
/*!
/*!
Constructor.
*/
- MED_FIELD_WRONLY_DRIVER21():MED_FIELD_DRIVER<T>() {}
+ MED_FIELD_WRONLY_DRIVER21():MED_FIELD_DRIVER<T>()
+ {
+ this->GENDRIVER::_accessMode = MED_EN::WRONLY;
+ }
/*!
Constructor.
MED_FIELD_WRONLY_DRIVER21(const string & fileName,
FIELD<T, INTERLACING_TAG> * ptrField):
IMED_FIELD_WRONLY_DRIVER<T>(fileName,ptrField),
- MED_FIELD_DRIVER21<T>(fileName,ptrField,MED_EN::MED_WRONLY),
- MED_FIELD_DRIVER<T>(fileName,ptrField,MED_EN::MED_WRONLY)
+ MED_FIELD_DRIVER21<T>(fileName,ptrField,MED_EN::WRONLY),
+ MED_FIELD_DRIVER<T>(fileName,ptrField,MED_EN::WRONLY)
{
- BEGIN_OF("MED_FIELD_WRONLY_DRIVER21::MED_FIELD_WRONLY_DRIVER21(const string & fileName, const FIELD<T,INTERLACING_TAG> * ptrField)");
- END_OF("MED_FIELD_WRONLY_DRIVER21::MED_FIELD_WRONLY_DRIVER21(const string & fileName, const FIELD<T,INTERLACING_TAG> * ptrField)");
+ const char* LOC = "MED_FIELD_WRONLY_DRIVER21::MED_FIELD_WRONLY_DRIVER21(const string & fileName, const FIELD<T,INTERLACING_TAG> * ptrField)";
+ BEGIN_OF_MED(LOC);
+ END_OF_MED(LOC);
}
/*!
/*!
Constructor.
*/
- MED_FIELD_RDWR_DRIVER21():MED_FIELD_DRIVER21<T>() {}
+ MED_FIELD_RDWR_DRIVER21():MED_FIELD_DRIVER21<T>()
+ {
+ this->GENDRIVER::_accessMode = MED_EN::RDWR;
+ }
/*!
Constructor.
MED_FIELD_RDONLY_DRIVER21<T>(fileName,ptrField),
IMED_FIELD_RDONLY_DRIVER<T>(fileName,ptrField),
IMED_FIELD_WRONLY_DRIVER<T>(fileName,ptrField),
- MED_FIELD_DRIVER<T>(fileName,ptrField,MED_EN::MED_RDWR),
+ MED_FIELD_DRIVER<T>(fileName,ptrField,MED_EN::RDWR),
IMED_FIELD_RDWR_DRIVER<T>(fileName,ptrField)
{
- BEGIN_OF("MED_FIELD_RDWR_DRIVER21::MED_FIELD_RDWR_DRIVER21(const string & fileName, const FIELD<T> * ptrField)");
+ const char* LOC = "MED_FIELD_RDWR_DRIVER21::MED_FIELD_RDWR_DRIVER21(const string & fileName, const FIELD<T> * ptrField)";
+ BEGIN_OF_MED(LOC);
//_accessMode = MED_RDWR ;
- END_OF("MED_FIELD_RDWR_DRIVER21::MED_FIELD_RDWR_DRIVER21(const string & fileName, const FIELD<T> * ptrField)");
- };
+ END_OF_MED(LOC);
+ }
/*!
Copy constructor.
string & meshName) const throw (MEDEXCEPTION)
{
- //EF : Gérer le meshName pour le driver 2.2
+ //EF : Gérer le meshName pour le driver 2.2
const char * LOC="MED_FIELD_DRIVER<T>::search_field(...)";
- BEGIN_OF(LOC);
+ BEGIN_OF_MED(LOC);
map<int, list<MED_EN::medGeometryElement> > CellAndNodeEntities;
map<int, list<MED_EN::medGeometryElement> >::iterator currentEntity;
numberOfElements = (numberOfElements1>numberOfElements2)?numberOfElements1:numberOfElements2;
- SCRUTE(numberOfElements);
+ SCRUTE_MED(numberOfElements);
if ( numberOfElements <= 0 )
continue;
(med_2_1::med_entite_maillage) entityCurrent,
(med_2_1::med_geometrie_element) *currentGeometry );
- SCRUTE(nbPdtIt);
- SCRUTE(numberOfElements);
+ SCRUTE_MED(nbPdtIt);
+ SCRUTE_MED(numberOfElements);
if ( nbPdtIt < 0 )
throw MEDEXCEPTION(LOCALIZED(STRING(LOC)<<" Field |" << fieldName << "| with (ndt,or) = ("
// if ( nmaa > 1 )
{
- //EF : Gérer le meshName pour le driver 2.2
- // MESSAGE(STRING(LOC)<<" Field |" << fieldName << "| with (ndt,or) = (" << ndt << ","
+ //EF : Gérer le meshName pour le driver 2.2
+ // MESSAGE_MED(STRING(LOC)<<" Field |" << fieldName << "| with (ndt,or) = (" << ndt << ","
// << ot << ") is defined on " << nmaa << " meshes, using mesh |"
// << maa << "|");
// }
}
}
- MESSAGE(LOC << " a (dt,it) is found ?? " << alreadyFoundPdtIt);
+ MESSAGE_MED(LOC << " a (dt,it) is found ?? " << alreadyFoundPdtIt);
if ( !alreadyFoundPdtIt )
throw MEDEXCEPTION(LOCALIZED(STRING(LOC)<<" Field |" << fieldName << "| with (ndt,or) = ("
<< MED_EN::entNames[entityCurrent] << ","
<< MED_EN::geoNames[*currentGeometry] << ")" ));
if ( ngauss > 1000 ) { // some gabage
- INFOS( "Set to 1 invalid nb of Gauss points " << ngauss << " for Field |" << fieldName
+ INFOS_MED( "Set to 1 invalid nb of Gauss points " << ngauss << " for Field |" << fieldName
<< "| with (ndt,or) = (" << ndt << "," << od << ") for (entityType,geometricType)=("
<< MED_EN::entNames[entityCurrent] << ","
<< MED_EN::geoNames[*currentGeometry] << ")" );
if ( alreadyFoundAnEntity) {
support.setName(fieldName+"Support");
- support.setMeshName(string(maa)); // Vérifier que les différents noms de maillages lus soient identiques
+ support.setMeshName(string(maa)); // Vérifier que les différents noms de maillages lus soient identiques
support.setEntity(entity);
- // REM : Signification précédente erronée pour un champ qui ne repose pas sur toutes les entités géométriques
- // du maillage mais dont le SUPPORT a été crée à partir des informations d'un maillage, comme
- // celà fût la plupart du temps.
+ // REM : Signification précédente erronée pour un champ qui ne repose pas sur toutes les entités géométriques
+ // du maillage mais dont le SUPPORT a été crée à partir des informations d'un maillage, comme
+ // celà fût la plupart du temps.
support.setNumberOfGeometricType(numberOfGeometricType);
support.setGeometricType(geometricType); // Utile uniquement si setAll == false
support.setNumberOfElements(numberOfElementsOfType); //setNumberOfElements effectue une copie
support.setAll(true);
- END_OF(LOC);
+ END_OF_MED(LOC);
return alreadyFoundAnEntity;
} else
{
- END_OF(LOC);
+ END_OF_MED(LOC);
return false;
}
vector<MED_EN::medGeometryElement> & geoType,
vector<int> &nbOfElOfType) const
{
- const char LOC[] = "MED_FIELD_DRIVER<T>::getMeshGeometricType(...)";
+ //const char LOC[] = "MED_FIELD_DRIVER<T>::getMeshGeometricType(...)";
int numberOfGeometricType=0;
MED_EN::medGeometryElement geometricType[MED_NBR_GEOMETRIE_MAILLE];
else
if (entity == MED_EN::MED_NODE) quoi=med_2_1::MED_COOR;
else
- MESSAGE(LOC<<" Support Creation from Mesh |" << meshName
+ MESSAGE_MED("MED_FIELD_DRIVER<T>::getMeshGeometricType(...)"<<" Support Creation from Mesh |" << meshName
<< "| on entity " << MED_EN::entNames[entity]
<< "| is impossible, must be on MED_NODE or MED_CELL");
throw (MEDEXCEPTION)
{
const char * LOC = " MED_FIELD_RDONLY_DRIVER21::read() " ;
- BEGIN_OF(LOC);
+ BEGIN_OF_MED(LOC);
typedef typename MEDMEM_ArrayInterface<T,NoInterlace,NoGauss>::Array ArrayNo;
typedef typename MEDMEM_ArrayInterface<T,NoInterlace,Gauss>::Array ArrayNoWg;
MED_FIELD_DRIVER<T>::_fieldName=MED_FIELD_DRIVER<T>::_ptrField->_name;
if ( MED_FIELD_DRIVER<T>::_fieldName.size() > MED_TAILLE_NOM )
- MESSAGE(LOC << "Warning <fieldName> size in object driver FIELD is > MED_TAILLE_NOM .");
+ MESSAGE_MED(LOC << "Warning <fieldName> size in object driver FIELD is > MED_TAILLE_NOM .");
// throw MEDEXCEPTION(LOCALIZED(STRING(LOC)
// <<" <fieldName> size in object driver FIELD is > MED_TAILLE_NOM ."));
- MESSAGE("###### "<<LOC<<" fieldNameDRIVER : "<< MED_FIELD_DRIVER<T>::_fieldName <<
+ MESSAGE_MED("###### "<<LOC<<" fieldNameDRIVER : "<< MED_FIELD_DRIVER<T>::_fieldName <<
" fieldName : "<<MED_FIELD_DRIVER<T>::_fieldName);
throw MEDEXCEPTION(LOCALIZED(STRING(LOC)<<": Method open must be called before method read.")) ;
// EF :
-// Si un support a été donnée au champ, pour des raisons de compatibilité avec
-// les versions précédentes, ce support sera utilisé pour
+// Si un support a été donnée au champ, pour des raisons de compatibilité avec
+// les versions précédentes, ce support sera utilisé pour
// - Obtenir le nom du maillage sur lequel on veut lire le champ
// (eventuellement on pourrait l'utiliser pour selectionner un champ qui
// repose sur plusieurs maillages cf HOMARD-ASTER)
-// - vérifier le type d'entité (MED_NOEUD xor MED_MAILLE xor MED_FACE xor MED_ARETE ) sur lequel
-// il faut lire le champ qui est également retouvé.
-// - Si le support défini une liste d'entité ( différente de MED_ALL_ELEMENTS), celle-ci est ignorée
-// à la lecture et écrasé par les listes de profils lus s'il en existe
-
-// Si aucun support n'a été donné au champ :
-// - A la lecture : Un support est crée et le type d'entité unique est lu
-// (cf decision gt MED qu'un champ repose sur une entité unique ?),
-// l'ensemble des types géométriques est lu,
-// l'ensemble des profils par type géométrique est lu
-// Le nom du maillage associé est lu mais le pointeur SUPPORT-MESH non initialisé
+// - vérifier le type d'entité (MED_NOEUD xor MED_MAILLE xor MED_FACE xor MED_ARETE ) sur lequel
+// il faut lire le champ qui est également retouvé.
+// - Si le support défini une liste d'entité ( différente de MED_ALL_ELEMENTS), celle-ci est ignorée
+// à la lecture et écrasé par les listes de profils lus s'il en existe
+
+// Si aucun support n'a été donné au champ :
+// - A la lecture : Un support est crée et le type d'entité unique est lu
+// (cf decision gt MED qu'un champ repose sur une entité unique ?),
+// l'ensemble des types géométriques est lu,
+// l'ensemble des profils par type géométrique est lu
+// Le nom du maillage associé est lu mais le pointeur SUPPORT-MESH non initialisé
char fieldName[MED_TAILLE_NOM+1] ;
numberOfComponents = med_2_1::MEDnChamp(id,i) ;
if ( numberOfComponents <= 0 )
// throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
- // << "Be careful there is no compound for field n°"
+ // << "Be careful there is no compound for field n°"
// << i << "in file |"<<_fileName<<"| !"));
- MESSAGE(LOC<<"Be careful there is no compound for field n°"<<i<<"in file |"<<MED_FIELD_DRIVER<T>::_fileName<<"| !");
+ MESSAGE_MED(LOC<<"Be careful there is no compound for field n°"<<i<<"in file |"<<MED_FIELD_DRIVER<T>::_fileName<<"| !");
componentName = new char[numberOfComponents*MED_TAILLE_PNOM21+1] ;
unitName = new char[numberOfComponents*MED_TAILLE_PNOM21+1] ;
err = med_2_1::MEDchampInfo(id, i, fieldName, &type, componentName,
unitName, numberOfComponents) ;
- MESSAGE("Champ "<<i<<" : #" << fieldName <<"# et recherche #"<<MED_FIELD_DRIVER<T>::_fieldName.c_str()<<"#");
+ MESSAGE_MED("Champ "<<i<<" : #" << fieldName <<"# et recherche #"<<MED_FIELD_DRIVER<T>::_fieldName.c_str()<<"#");
if ( !strcmp(fieldName,MED_FIELD_DRIVER<T>::_fieldName.c_str()) )
{
- MESSAGE("FOUND FIELD "<< fieldName <<" : "<<i);
+ MESSAGE_MED("FOUND FIELD "<< fieldName <<" : "<<i);
MED_FIELD_DRIVER<T>::_fieldNum = i ;
break ;
}
if (MED_FIELD_DRIVER<T>::_fieldNum==MED_INVALID)
throw MEDEXCEPTION(LOCALIZED( STRING(LOC) << ": Field "<<MED_FIELD_DRIVER<T>::_fieldName << " not found in file " << MED_FIELD_DRIVER<T>::_fileName ) );
- MESSAGE ("FieldNum : "<<MED_FIELD_DRIVER<T>::_fieldNum);
+ MESSAGE_MED ("FieldNum : "<<MED_FIELD_DRIVER<T>::_fieldNum);
if (numberOfComponents < 1)
{
haveSupport = true;
}
- // Cherche le type d'entité, le nombre d'entité par type géométrique sur le type d'entité
- // (MED_MAILLE ou MED_NOEUD uniquement car MEDMEMOIRE ne gère pas la connectivité descendante).
- // et crée le support correspondant.
+ // Cherche le type d'entité, le nombre d'entité par type géométrique sur le type d'entité
+ // (MED_MAILLE ou MED_NOEUD uniquement car MEDMEMOIRE ne gère pas la connectivité descendante).
+ // et crée le support correspondant.
SUPPORT * mySupport = new SUPPORT();
vector<int> numberOfGaussPoints;
bool found = createFieldSupport(id,MED_FIELD_DRIVER<T>::_fieldName,
mySupport->setDescription(MED_FIELD_DRIVER<T>::_ptrField->getSupport()->getDescription());
}
- // Test si le Support du Champ repose ou non sur toutes les entités géométriques du maillage.
+ // Test si le Support du Champ repose ou non sur toutes les entités géométriques du maillage.
// Pour tester les profils aussi ?
vector< MED_EN::medGeometryElement > meshGeoType;
vector< int > meshNbOfElOfType;
// If an error occurs while reading the field, these allocated FIELD member will be deleted
MED_FIELD_DRIVER<T>::_ptrField->_name = MED_FIELD_DRIVER<T>::_fieldName;
MED_FIELD_DRIVER<T>::_ptrField->_numberOfComponents = numberOfComponents ;
- MED_FIELD_DRIVER<T>::_ptrField->_componentsTypes = new int[numberOfComponents] ;
- MED_FIELD_DRIVER<T>::_ptrField->_componentsNames = new string[numberOfComponents] ;
- MED_FIELD_DRIVER<T>::_ptrField->_componentsUnits = new UNIT[numberOfComponents] ;
- MED_FIELD_DRIVER<T>::_ptrField->_componentsDescriptions = new string[numberOfComponents] ;
- MED_FIELD_DRIVER<T>::_ptrField->_MEDComponentsUnits = new string[numberOfComponents] ;
+ //MED_FIELD_DRIVER<T>::_ptrField->_componentsTypes = new int[numberOfComponents] ;
+ //MED_FIELD_DRIVER<T>::_ptrField->_componentsNames = new string[numberOfComponents] ;
+ //MED_FIELD_DRIVER<T>::_ptrField->_componentsUnits = new UNIT[numberOfComponents] ;
+ //MED_FIELD_DRIVER<T>::_ptrField->_componentsDescriptions = new string[numberOfComponents] ;
+ //MED_FIELD_DRIVER<T>::_ptrField->_MEDComponentsUnits = new string[numberOfComponents] ;
+ MED_FIELD_DRIVER<T>::_ptrField->_componentsTypes.resize(numberOfComponents);
+ MED_FIELD_DRIVER<T>::_ptrField->_componentsNames.resize(numberOfComponents);
+ MED_FIELD_DRIVER<T>::_ptrField->_componentsUnits.resize(numberOfComponents);
+ MED_FIELD_DRIVER<T>::_ptrField->_componentsDescriptions.resize(numberOfComponents);
+ MED_FIELD_DRIVER<T>::_ptrField->_MEDComponentsUnits.resize(numberOfComponents);
for (int i=0; i<numberOfComponents; i++)
{
MED_FIELD_DRIVER<T>::_ptrField->_componentsTypes[i] = 1 ;
MED_FIELD_DRIVER<T>::_ptrField->_componentsNames[i] = string(componentName+i*MED_TAILLE_PNOM21,MED_TAILLE_PNOM21) ;
- SCRUTE(MED_FIELD_DRIVER<T>::_ptrField->_componentsNames[i]);
+ SCRUTE_MED(MED_FIELD_DRIVER<T>::_ptrField->_componentsNames[i]);
MED_FIELD_DRIVER<T>::_ptrField->_MEDComponentsUnits[i] = string(unitName+i*MED_TAILLE_PNOM21,MED_TAILLE_PNOM21) ;
- SCRUTE(MED_FIELD_DRIVER<T>::_ptrField->_MEDComponentsUnits[i]);
+ SCRUTE_MED(MED_FIELD_DRIVER<T>::_ptrField->_MEDComponentsUnits[i]);
}
delete[] componentName;
T ** myValues = new T*[NumberOfTypes] ;
int * NumberOfValues = new int[NumberOfTypes] ;
int TotalNumberOfValues = 0 ; // Profils a gerer en 2.2 Rmq from EF
- MESSAGE ("NumberOfTypes :"<< NumberOfTypes);
+ MESSAGE_MED ("NumberOfTypes :"<< NumberOfTypes);
MED_FIELD_DRIVER<T>::_ptrField->_numberOfValues=0 ;
bool anyGauss=false;
modswt = med_2_1::MED_FULL_INTERLACE;
for (int i=0; i<NumberOfTypes; i++) {
- MESSAGE ("Type["<<i+1<<"] :"<< Types[i]);
- MESSAGE ("Entity :"<< mySupport->getEntity());
+ MESSAGE_MED ("Type["<<i+1<<"] :"<< Types[i]);
+ MESSAGE_MED ("Entity :"<< mySupport->getEntity());
int refNumberOfValues =
MEDnVal(MED_FIELD_DRIVER21<T>::_medIdt,
myValues[i] = new T[ NumberOfValues[i]*numberOfComponents ] ;
TotalNumberOfValues+=NumberOfValues[i] ;
char * ProfilName = new char[MED_TAILLE_NOM+1];
- MESSAGE ("NumberOfValues :"<< NumberOfValues[i]);
- MESSAGE ("NumberOfComponents :"<< numberOfComponents);
- MESSAGE ("MESH_NAME :"<< meshName.c_str());
- MESSAGE ("FIELD_NAME :"<< MED_FIELD_DRIVER<T>::_fieldName.c_str());
- MESSAGE ("MED_ENTITE :"<< (med_2_1::med_entite_maillage) mySupport->getEntity());
- MESSAGE("MED_GEOM :"<<(med_2_1::med_geometrie_element)Types[i]);
- MESSAGE("Iteration :"<<MED_FIELD_DRIVER<T>::_ptrField->getIterationNumber());
- MESSAGE("Order :"<<MED_FIELD_DRIVER<T>::_ptrField->getOrderNumber());
+ MESSAGE_MED ("NumberOfValues :"<< NumberOfValues[i]);
+ MESSAGE_MED ("NumberOfComponents :"<< numberOfComponents);
+ MESSAGE_MED ("MESH_NAME :"<< meshName.c_str());
+ MESSAGE_MED ("FIELD_NAME :"<< MED_FIELD_DRIVER<T>::_fieldName.c_str());
+ MESSAGE_MED ("MED_ENTITE :"<< (med_2_1::med_entite_maillage) mySupport->getEntity());
+ MESSAGE_MED("MED_GEOM :"<<(med_2_1::med_geometrie_element)Types[i]);
+ MESSAGE_MED("Iteration :"<<MED_FIELD_DRIVER<T>::_ptrField->getIterationNumber());
+ MESSAGE_MED("Order :"<<MED_FIELD_DRIVER<T>::_ptrField->getOrderNumber());
MED_FIELD_DRIVER<T>::_ptrField->_numberOfValues+=mySupport->getNumberOfElements(Types[i]); // Ne doit pas prendre en compte les points de Gauss
med_2_1::med_err ret;
delete[] myValues;
delete[] NumberOfValues ;
delete[] ProfilName;
- delete[] MED_FIELD_DRIVER<T>::_ptrField->_componentsTypes ;
- delete[] MED_FIELD_DRIVER<T>::_ptrField->_componentsNames ;
- delete[] MED_FIELD_DRIVER<T>::_ptrField->_componentsUnits ;
- delete[] MED_FIELD_DRIVER<T>::_ptrField->_componentsDescriptions ;
- delete[] MED_FIELD_DRIVER<T>::_ptrField->_MEDComponentsUnits ;
- MED_FIELD_DRIVER<T>::_ptrField->_componentsTypes = NULL ;
- MED_FIELD_DRIVER<T>::_ptrField->_componentsNames = NULL ;
- MED_FIELD_DRIVER<T>::_ptrField->_componentsUnits = NULL ;
- MED_FIELD_DRIVER<T>::_ptrField->_componentsDescriptions = NULL ;
- MED_FIELD_DRIVER<T>::_ptrField->_MEDComponentsUnits = NULL ;
+ //delete[] MED_FIELD_DRIVER<T>::_ptrField->_componentsTypes ;
+ //delete[] MED_FIELD_DRIVER<T>::_ptrField->_componentsNames ;
+ //delete[] MED_FIELD_DRIVER<T>::_ptrField->_componentsUnits ;
+ //delete[] MED_FIELD_DRIVER<T>::_ptrField->_componentsDescriptions ;
+ //delete[] MED_FIELD_DRIVER<T>::_ptrField->_MEDComponentsUnits ;
+ //MED_FIELD_DRIVER<T>::_ptrField->_componentsTypes = NULL ;
+ //MED_FIELD_DRIVER<T>::_ptrField->_componentsNames = NULL ;
+ //MED_FIELD_DRIVER<T>::_ptrField->_componentsUnits = NULL ;
+ //MED_FIELD_DRIVER<T>::_ptrField->_componentsDescriptions = NULL ;
+ //MED_FIELD_DRIVER<T>::_ptrField->_MEDComponentsUnits = NULL ;
+ MED_FIELD_DRIVER<T>::_ptrField->_componentsTypes.clear();
+ MED_FIELD_DRIVER<T>::_ptrField->_componentsNames.clear();
+ MED_FIELD_DRIVER<T>::_ptrField->_componentsUnits.clear();
+ MED_FIELD_DRIVER<T>::_ptrField->_componentsDescriptions.clear();
+ MED_FIELD_DRIVER<T>::_ptrField->_MEDComponentsUnits.clear();
MED_FIELD_DRIVER<T>::_fieldNum = MED_INVALID ; // we have not found right field, so reset the field number
throw MEDEXCEPTION( LOCALIZED( STRING(LOC) <<": ERROR when read value")) ;
}
}
MED_FIELD_DRIVER<T>::_ptrField->_isRead = true ;
- MED_FIELD_DRIVER<T>::_ptrField->_support=mySupport; //Prévenir l'utilisateur ?
+ MED_FIELD_DRIVER<T>::_ptrField->_support=mySupport; //Prévenir l'utilisateur ?
// check support entity and isOnAllElements
if ( haveSupport && mySupport->getEntity() != MED_EN::MED_NODE ) {
}
}
- // END_OF(LOC);
+ // END_OF_MED();
}
template <class T> void MED_FIELD_RDONLY_DRIVER21<T>::write( void ) const
throw (MEDEXCEPTION)
{
const char * LOC = "MED_FIELD_WRONLY_DRIVER21::write(void) const " ;
- BEGIN_OF(LOC);
+ BEGIN_OF_MED(LOC);
typedef typename MEDMEM_ArrayInterface<T,NoInterlace,NoGauss>::Array ArrayNo;
typedef typename MEDMEM_ArrayInterface<T,FullInterlace,NoGauss>::Array ArrayFull;
//if (MED_FIELD_DRIVER<T>::_status==MED_OPENED &&
// MED_FIELD_DRIVER<T>::_ptrField->_isRead )
- if (MED_FIELD_DRIVER<T>::_status==MED_OPENED)
- {
+ if (MED_FIELD_DRIVER<T>::_status!=MED_OPENED)
+ throw MEDEXCEPTION ("MEDMEM_MedFieldDriver21: Trying to write before opening");
+ else {
int err ;
+ const SUPPORT * mySupport = MED_FIELD_DRIVER<T>::_ptrField->getSupport() ;
+ if (! mySupport->isOnAllElements())
+ throw MEDEXCEPTION( LOCALIZED (STRING(LOC)
+ <<": Field must be on all entity"
+ )
+ );
+// MESH * myMesh = mySupport->getMesh() ;
+// if(!myMesh)
+// throw MEDEXCEPTION( LOCALIZED (STRING(LOC)
+// <<": Mesh in support is null"
+// )
+// );
+
int component_count=MED_FIELD_DRIVER<T>::_ptrField->getNumberOfComponents();
string component_name(component_count*MED_TAILLE_PNOM21,' ') ;
string component_unit(component_count*MED_TAILLE_PNOM21,' ') ;
listcomponent_unit[i],0,length);
}
- MESSAGE("component_name=|"<<component_name<<"|");
- MESSAGE("component_unit=|"<<component_unit<<"|");
+ MESSAGE_MED("component_name=|"<<component_name<<"|");
+ MESSAGE_MED("component_unit=|"<<component_unit<<"|");
MED_EN::med_type_champ ValueType=MED_FIELD_DRIVER<T>::_ptrField->getValueType() ;
- MESSAGE("Template Type =|"<<ValueType<<"|");
+ MESSAGE_MED("Template Type =|"<<ValueType<<"|");
// le champ existe deja ???
char * champName = new char[MED_TAILLE_NOM+1] ;
int nbComp ;
for (int i=1; i<=n; i++) {
nbComp = med_2_1::MEDnChamp(MED_FIELD_DRIVER21<T>::_medIdt,i);
+ if ( nbComp < 1 ) continue; // nbComp can be -1
compName = new char[MED_TAILLE_PNOM21*nbComp+1];
compUnit = new char[MED_TAILLE_PNOM21*nbComp+1];
err = med_2_1::MEDchampInfo(MED_FIELD_DRIVER21<T>::_medIdt,i,champName,&type,compName,compUnit,nbComp);
)
);
// component name and unit
- MESSAGE(LOC<<" Component name in file : "<<compName);
- MESSAGE(LOC<<" Component name in memory : "<<component_name);
- MESSAGE(LOC<<" Component unit in file : "<<compUnit);
- MESSAGE(LOC<<" Component unit in memory : "<<component_unit);
+ MESSAGE_MED(LOC<<" Component name in file : "<<compName);
+ MESSAGE_MED(LOC<<" Component name in memory : "<<component_name);
+ MESSAGE_MED(LOC<<" Component unit in file : "<<compUnit);
+ MESSAGE_MED(LOC<<" Component unit in memory : "<<component_unit);
delete[] compName ;
delete[] compUnit ;
string dataGroupName = "/CHA/";
dataGroupName += MED_FIELD_DRIVER<T>::_ptrField->getName();
- MESSAGE(LOC << "|" << dataGroupName << "|" );
+ MESSAGE_MED(LOC << "|" << dataGroupName << "|" );
med_2_1::med_idt gid = H5Gopen(MED_FIELD_DRIVER21<T>::_medIdt, dataGroupName.c_str() );
if ( gid < 0 ) {
else H5Gclose(gid);
}
- const SUPPORT * mySupport = MED_FIELD_DRIVER<T>::_ptrField->getSupport() ;
-
- if (! mySupport->isOnAllElements())
- throw MEDEXCEPTION( LOCALIZED (STRING(LOC)
- <<": Field must be on all entity"
- )
- );
-
- MESH * myMesh = mySupport->getMesh() ;
- string MeshName = myMesh->getName() ;
+ MESH * myMesh = mySupport->getMesh();
+ string MeshName = myMesh ? myMesh->getName() : mySupport->getMeshName();
//MED_EN::medModeSwitch Mode = MED_FIELD_DRIVER<T>::_ptrField->_value->getMode() ;
// on boucle sur tout les types pour ecrire les tableaux de valeur
int NumberOfType = mySupport->getNumberOfTypes() ;
}
else {
// En attendant la convertion de FIELD, on utilise le ArrayConvert
- // ( les infos _ptrField-> sont les mêmes )
+ // ( les infos _ptrField-> sont les mêmes )
myArray = ArrayConvert( *( dynamic_cast< ArrayNo * >
(MED_FIELD_DRIVER<T>::_ptrField->getArrayNoGauss()
))
else {
value = myArray->getRow(Index) ;
}
- MESSAGE("MED_FIELD_DRIVER21<T>::_medIdt : "<<MED_FIELD_DRIVER21<T>::_medIdt);
- MESSAGE("MeshName.c_str() : "<<MeshName.c_str());
- MESSAGE("MED_FIELD_DRIVER<T>::_ptrField->getName() : "<<MED_FIELD_DRIVER<T>::_ptrField->getName());
- MESSAGE("value : "<<value);
- MESSAGE("NumberOfElements : "<<NumberOfElements);
- MESSAGE("NumberOfGaussPoints : "<<NumberOfGaussPoints);
- MESSAGE("mySupport->getEntity() : "<<mySupport->getEntity());
- MESSAGE("Types[i] : "<<Types[i]);
- MESSAGE("MED_FIELD_DRIVER<T>::_ptrField->getIterationNumber() : "<<MED_FIELD_DRIVER<T>::_ptrField->getIterationNumber());
- MESSAGE("MED_FIELD_DRIVER<T>::_ptrField->getTime() : "<<MED_FIELD_DRIVER<T>::_ptrField->getTime());
- MESSAGE("MED_FIELD_DRIVER<T>::_ptrField->getOrderNumber() : "<<MED_FIELD_DRIVER<T>::_ptrField->getOrderNumber());
+ MESSAGE_MED("MED_FIELD_DRIVER21<T>::_medIdt : "<<MED_FIELD_DRIVER21<T>::_medIdt);
+ MESSAGE_MED("MeshName.c_str() : "<<MeshName.c_str());
+ MESSAGE_MED("MED_FIELD_DRIVER<T>::_ptrField->getName() : "<<MED_FIELD_DRIVER<T>::_ptrField->getName());
+ MESSAGE_MED("value : "<<value);
+ MESSAGE_MED("NumberOfElements : "<<NumberOfElements);
+ MESSAGE_MED("NumberOfGaussPoints : "<<NumberOfGaussPoints);
+ MESSAGE_MED("mySupport->getEntity() : "<<mySupport->getEntity());
+ MESSAGE_MED("Types[i] : "<<Types[i]);
+ MESSAGE_MED("MED_FIELD_DRIVER<T>::_ptrField->getIterationNumber() : "<<MED_FIELD_DRIVER<T>::_ptrField->getIterationNumber());
+ MESSAGE_MED("MED_FIELD_DRIVER<T>::_ptrField->getTime() : "<<MED_FIELD_DRIVER<T>::_ptrField->getTime());
+ MESSAGE_MED("MED_FIELD_DRIVER<T>::_ptrField->getOrderNumber() : "<<MED_FIELD_DRIVER<T>::_ptrField->getOrderNumber());
/* char chanom[MED_TAILLE_NOM+1];
char chacomp[MED_TAILLE_NOM+1];
#if defined(IRIX64) || defined(OSF1) || defined(VPP5000) || defined(PCLINUX64) || defined(PCLINUX64_32)
if(MED_FIELD_DRIVER<T>::_ptrField->getValueType()==MED_EN::MED_INT32)
{
- int lgth2=MED_FIELD_DRIVER<T>::_ptrField->getNumberOfValues();
- med_2_1::med_int *temp=new med_2_1::med_int[lgth2];
+ int lgth2=MED_FIELD_DRIVER<T>::_ptrField->getValueLength();
+ T *temp=new T[lgth2];
for(int i2=0;i2<lgth2;i2++)
- temp[i2]=(int)(value[i2]);
+ temp[i2]=(T)(value[i2]);
err=med_2_1::MEDchampEcr(MED_FIELD_DRIVER21<T>::_medIdt,
const_cast <char*> ( MeshName.c_str()) , //( string(mesh_name).resize(MED_TAILLE_NOM).c_str())
const_cast <char*> ( (MED_FIELD_DRIVER<T>::_ptrField->getName()).c_str()),
NumberOfGaussPoints,
MED_ALL,
MED_NOPFL,
- med_2_1::MED_REMP, // PROFIL NON GERE, mode de remplacement non géré
+ med_2_1::MED_REMP, // PROFIL NON GERE, mode de remplacement non géré
(med_2_1::med_entite_maillage)mySupport->getEntity(),
(med_2_1::med_geometrie_element)Types[i],
MED_FIELD_DRIVER<T>::_ptrField->getIterationNumber(),
else
#endif
err=med_2_1::MEDchampEcr(MED_FIELD_DRIVER21<T>::_medIdt,
- const_cast <char*> ( MeshName.c_str()) , //( string(mesh_name).resize(MED_TAILLE_NOM).c_str())
- const_cast <char*> ( (MED_FIELD_DRIVER<T>::_ptrField->getName()).c_str()),
- (unsigned char*)value,
+ const_cast <char*> ( MeshName.c_str()) , //( string(mesh_name).resize(MED_TAILLE_NOM).c_str())
+ const_cast <char*> ( (MED_FIELD_DRIVER<T>::_ptrField->getName()).c_str()),
+ (unsigned char*)value,
modswt /*med_2_1::MED_FULL_INTERLACE*/, //PAL17011
NumberOfElements,
NumberOfGaussPoints,
MED_ALL,
- MED_NOPFL,
- med_2_1::MED_REMP, // PROFIL NON GERE, mode de remplacement non géré
+ (char *)MED_NOPFL,
+ med_2_1::MED_REMP, // PROFIL NON GERE, mode de remplacement non géré
(med_2_1::med_entite_maillage)mySupport->getEntity(),
(med_2_1::med_geometrie_element)Types[i],
MED_FIELD_DRIVER<T>::_ptrField->getIterationNumber(),
- " ",
+ (char *) " ",
MED_FIELD_DRIVER<T>::_ptrField->getTime(),
MED_FIELD_DRIVER<T>::_ptrField->getOrderNumber()
);
}
- END_OF(LOC);
+ END_OF_MED(LOC);
}
/*--------------------- RDWR PART -------------------------------*/
template <class T> void MED_FIELD_RDWR_DRIVER21<T>::write(void) const
throw (MEDEXCEPTION)
{
- BEGIN_OF("MED_FIELD_RDWR_DRIVER21::write(void)");
+ const char* LOC = "MED_FIELD_RDWR_DRIVER21::write(void)";
+ BEGIN_OF_MED(LOC);
MED_FIELD_WRONLY_DRIVER21<T>::write();
- END_OF("MED_FIELD_RDWR_DRIVER21::write(void)");
+ END_OF_MED(LOC);
}
template <class T> void MED_FIELD_RDWR_DRIVER21<T>::read (void)
throw (MEDEXCEPTION)
{
- BEGIN_OF("MED_FIELD_RDWR_DRIVER21::read(void)");
+ const char* LOC = "MED_FIELD_RDWR_DRIVER21::read(void)";
+ BEGIN_OF_MED(LOC);
MED_FIELD_RDONLY_DRIVER21<T>::read();
- END_OF("MED_FIELD_RDWR_DRIVER21::read(void)");
+ END_OF_MED(LOC);
}
}//End namespace MEDMEM
/*-----------------------------------------------------------------*/