X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDWrapper%2FMED_Wrapper.cxx;h=1510e3c04ebdad1f24f2d35a0175e5a82e64c44d;hb=HEAD;hp=fea95266423a4a3c244ec86af5f8620e575ccb96;hpb=665d037f93371114bf4b00bf11b0f95be418fb77;p=modules%2Fsmesh.git diff --git a/src/MEDWrapper/MED_Wrapper.cxx b/src/MEDWrapper/MED_Wrapper.cxx index fea952664..1510e3c04 100644 --- a/src/MEDWrapper/MED_Wrapper.cxx +++ b/src/MEDWrapper/MED_Wrapper.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -23,7 +23,9 @@ #include "MED_Wrapper.hxx" #include "MED_TStructures.hxx" #include "MED_Utilities.hxx" +#include "MED_TFile.hxx" +#include "MEDFileUtilities.hxx" #include #include #include @@ -34,14 +36,6 @@ #include -#ifdef _DEBUG_ -static int MYDEBUG = 0; -static int MYVALUEDEBUG = 0; -#else -static int MYDEBUG = 0; // todo: unused in release mode -static int MYVALUEDEBUG = 0; // todo: unused in release mode -#endif - namespace MED { //--------------------------------------------------------------- @@ -54,13 +48,13 @@ namespace MED #else boost::detail::thread::lock_ops::lock(myWrapper->myMutex); #endif - INITMSG(MYDEBUG, "TLockProxy() - this -"<myCount++ == 0) { - if ((myMajor < 0) || (myMajor > MED_MAJOR_NUM)) myMajor = MED_MAJOR_NUM; - if ((myMinor < 0) || (myMajor == MED_MAJOR_NUM && myMinor > MED_MINOR_NUM)) myMinor = MED_MINOR_NUM; + std::string dftFileName = MEDCoupling::MEDFileWritableStandAlone::GenerateUniqueDftFileNameInMem(); + med_access_mode modeTmp(MED_ACC_CREAT); + if(memfile.app_image_ptr) + modeTmp = med_access_mode(theMode); + myFid = MEDmemFileOpen(dftFileName.c_str(),&memfile,MED_FALSE,modeTmp); } + if (theErr) + *theErr = TErr(myFid); + else if (myFid < 0) + EXCEPTION(std::runtime_error,"TMemFile - MEDmemFileOpen"); + } - ~TFile() - { - Close(); - } + TFile::TFile(const std::string& theFileName, TInt theMajor, TInt theMinor): + myFileName(theFileName), + myMajor(theMajor), + myMinor(theMinor) + { + if ((myMajor < 0) || (myMajor > MED_MAJOR_NUM)) myMajor = MED_MAJOR_NUM; + if ((myMinor < 0) || (myMajor == MED_MAJOR_NUM && myMinor > MED_MINOR_NUM)) myMinor = MED_MINOR_NUM; + } - void - Open(EModeAcces theMode, - TErr* theErr = NULL) - { - if (myCount++ == 0) { - const char* aFileName = myFileName.c_str(); + void TFile::Open(EModeAcces theMode, TErr* theErr) + { + if (myCount++ == 0) { + const char* aFileName = myFileName.c_str(); #ifdef WIN32 - if (med_access_mode(theMode) == MED_ACC_RDWR) { - // Force removing readonly attribute from a file under Windows, because of a bug in the HDF5 - std::string aReadOlnyRmCmd = "attrib -r \"" + myFileName + "\"> nul 2>&1"; + if (med_access_mode(theMode) == MED_ACC_RDWR) { + // Force removing readonly attribute from a file under Windows, because of a bug in the HDF5 + std::string aReadOlnyRmCmd = "attrib -r \"" + myFileName + "\"> nul 2>&1"; #ifdef UNICODE - const char* to_decode = aReadOlnyRmCmd.c_str(); - int size_needed = MultiByteToWideChar(CP_UTF8, 0, to_decode, strlen(to_decode), NULL, 0); - wchar_t* awReadOlnyRmCmd = new wchar_t[size_needed + 1]; - MultiByteToWideChar(CP_UTF8, 0, to_decode, strlen(to_decode), awReadOlnyRmCmd, size_needed); - awReadOlnyRmCmd[size_needed] = '\0'; - _wsystem(awReadOlnyRmCmd); - delete[] awReadOlnyRmCmd; + const char* to_decode = aReadOlnyRmCmd.c_str(); + int size_needed = MultiByteToWideChar(CP_UTF8, 0, to_decode, strlen(to_decode), NULL, 0); + wchar_t* awReadOlnyRmCmd = new wchar_t[size_needed + 1]; + MultiByteToWideChar(CP_UTF8, 0, to_decode, strlen(to_decode), awReadOlnyRmCmd, size_needed); + awReadOlnyRmCmd[size_needed] = '\0'; + _wsystem(awReadOlnyRmCmd); + delete[] awReadOlnyRmCmd; #else - system(aReadOlnyRmCmd.c_str()); -#endif - } + system(aReadOlnyRmCmd.c_str()); #endif - myFid = MEDfileVersionOpen(aFileName,med_access_mode(theMode), myMajor, myMinor, MED_RELEASE_NUM); } - if (theErr) - *theErr = TErr(myFid); - else if (myFid < 0) - EXCEPTION(std::runtime_error,"TFile - MEDfileVersionOpen('"< theTimeStampValue) { - INITMSG(MYDEBUG,"Print - TimeStampValue\n"); + INITMSG("Print - TimeStampValue\n"); typename TimeStampValueType::TTGeom2Value& aGeom2Value = theTimeStampValue->myGeom2Value; typename TimeStampValueType::TTGeom2Value::const_iterator anIter = aGeom2Value.begin(); for (; anIter != aGeom2Value.end(); anIter++) { @@ -190,32 +169,36 @@ namespace MED TInt aNbElem = aMeshValue.myNbElem; TInt aNbGauss = aMeshValue.myNbGauss; TInt aNbComp = aMeshValue.myNbComp; - INITMSG(MYDEBUG, "aGeom = "<Open(eLECTURE_ECRITURE, &aRet); @@ -251,9 +234,9 @@ namespace MED //---------------------------------------------------------------------------- void TWrapper - ::GetMeshInfo(TInt theMeshId, + ::GetMeshInfo(TInt theMeshId, MED::TMeshInfo& theInfo, - TErr* theErr) + TErr* theErr) { TFileWrapper aFileWrapper(myFile, eLECTURE, theErr, myMinor); @@ -294,7 +277,7 @@ namespace MED void TWrapper ::SetMeshInfo(const MED::TMeshInfo& theInfo, - TErr* theErr) + TErr* theErr) { TErr aRet; SetMeshInfo(theInfo, eLECTURE_ECRITURE, &aRet); @@ -313,8 +296,8 @@ namespace MED void TWrapper ::SetMeshInfo(const MED::TMeshInfo& theInfo, - EModeAcces theMode, - TErr* theErr) + EModeAcces theMode, + TErr* theErr) { TFileWrapper aFileWrapper(myFile, theMode, theErr, myMinor); @@ -350,7 +333,7 @@ namespace MED //if (aRet == 0) // aRet = MEDunvCr(myFile->Id(),&aMeshName); - INITMSG(MYDEBUG, "TWrapper::SetMeshInfo - MED_MODE_ACCES = "<GetGroupName(iGroup); - INITMSG(MYDEBUG, "aGroupName = '"<GetName(); + INITMSG("GetPFamilyInfo - aFamilyName = '"<GetGroupName(iGroup); + INITMSG("aGroupName = '"<size(), &anElemNames); if (theErr) @@ -720,11 +704,11 @@ namespace MED //---------------------------------------------------------------------------- void TWrapper - ::GetNumeration(TElemInfo& theInfo, - TInt /*theNb*/, - EEntiteMaillage theEntity, + ::GetNumeration(TElemInfo& theInfo, + TInt /*theNb*/, + EEntiteMaillage theEntity, EGeometrieElement theGeom, - TErr* theErr) + TErr* theErr) { TFileWrapper aFileWrapper(myFile, eLECTURE, theErr, myMinor); @@ -758,10 +742,10 @@ namespace MED //---------------------------------------------------------------------------- void TWrapper - ::SetNumeration(const TElemInfo& theInfo, - EEntiteMaillage theEntity, + ::SetNumeration(const TElemInfo& theInfo, + EEntiteMaillage theEntity, EGeometrieElement theGeom, - TErr* theErr) + TErr* theErr) { SetNumeration(theInfo, eLECTURE_ECRITURE, theEntity, theGeom, theErr); } @@ -769,11 +753,11 @@ namespace MED //---------------------------------------------------------------------------- void TWrapper - ::SetNumeration(const TElemInfo& theInfo, - EModeAcces theMode, - EEntiteMaillage theEntity, + ::SetNumeration(const TElemInfo& theInfo, + EModeAcces theMode, + EEntiteMaillage theEntity, EGeometrieElement theGeom, - TErr* theErr) + TErr* theErr) { TFileWrapper aFileWrapper(myFile, theMode, theErr, myMinor); @@ -811,11 +795,11 @@ namespace MED //---------------------------------------------------------------------------- void TWrapper - ::GetFamilies(TElemInfo& theInfo, - TInt /*theNb*/, - EEntiteMaillage theEntity, + ::GetFamilies(TElemInfo& theInfo, + TInt /*theNb*/, + EEntiteMaillage theEntity, EGeometrieElement theGeom, - TErr* theErr) + TErr* theErr) { TFileWrapper aFileWrapper(myFile, eLECTURE, theErr, myMinor); @@ -858,10 +842,10 @@ namespace MED //---------------------------------------------------------------------------- void TWrapper - ::SetFamilies(const TElemInfo& theInfo, - EEntiteMaillage theEntity, + ::SetFamilies(const TElemInfo& theInfo, + EEntiteMaillage theEntity, EGeometrieElement theGeom, - TErr* theErr) + TErr* theErr) { SetFamilies(theInfo, eLECTURE_ECRITURE, theEntity, theGeom, theErr); } @@ -869,11 +853,11 @@ namespace MED //---------------------------------------------------------------------------- void TWrapper - ::SetFamilies(const TElemInfo& theInfo, - EModeAcces theMode, - EEntiteMaillage theEntity, + ::SetFamilies(const TElemInfo& theInfo, + EModeAcces theMode, + EEntiteMaillage theEntity, EGeometrieElement theGeom, - TErr* theErr) + TErr* theErr) { TFileWrapper aFileWrapper(myFile, theMode, theErr, myMinor); @@ -910,7 +894,7 @@ namespace MED TInt TWrapper ::GetNbNodes(const MED::TMeshInfo& theMeshInfo, - TErr* theErr) + TErr* theErr) { return GetNbNodes(theMeshInfo, eCOOR, theErr); } @@ -1172,37 +1156,38 @@ namespace MED PNodeInfo anInfo = CrNodeInfo(theMeshInfo, aNbElems); GetNodeInfo(*anInfo, theErr); -#ifdef _DEBUG_ - TInt aDim = theMeshInfo->myDim; - TInt aNbElem = anInfo->GetNbElem(); - INITMSG(MYDEBUG, "GetPNodeInfo: "); + if (SALOME::VerbosityActivated()) { - INITMSG(MYDEBUG, "aCoords: "<myCoord; - for (TInt iElem = 0; iElem < aNbElem; iElem++) { - for (TInt iDim = 0, anId = iElem*aDim; iDim < aDim; iDim++, anId++) { - ADDMSG(MYVALUEDEBUG, aCoord[anId]<<","); + TInt aDim = theMeshInfo->myDim; + TInt aNbElem = anInfo->GetNbElem(); + INITMSG("GetPNodeInfo: "); + { + INITMSG("aCoords: "<myCoord; + for (TInt iElem = 0; iElem < aNbElem; iElem++) { + for (TInt iDim = 0, anId = iElem*aDim; iDim < aDim; iDim++, anId++) { + ADDMSG(aCoord[anId]<<","); + } + ADDMSG(" "); } - ADDMSG(MYVALUEDEBUG, " "); - } - ADDMSG(MYDEBUG, std::endl); + ADDMSG(std::endl); - BEGMSG(MYVALUEDEBUG, "GetFamNum: "); - for (TInt iElem = 0; iElem < aNbElem; iElem++) { - ADDMSG(MYVALUEDEBUG, anInfo->GetFamNum(iElem)<<", "); - } - ADDMSG(MYVALUEDEBUG, std::endl); - - if (anInfo->IsElemNum()) { - BEGMSG(MYVALUEDEBUG, "GetElemNum: "); + BEGMSG("GetFamNum: "); for (TInt iElem = 0; iElem < aNbElem; iElem++) { - ADDMSG(MYVALUEDEBUG, anInfo->GetElemNum(iElem)<<", "); + ADDMSG(anInfo->GetFamNum(iElem)<<", "); + } + ADDMSG(std::endl); + + if (anInfo->IsElemNum()) { + BEGMSG("GetElemNum: "); + for (TInt iElem = 0; iElem < aNbElem; iElem++) { + ADDMSG(anInfo->GetElemNum(iElem)<<", "); + } + ADDMSG(std::endl); } - ADDMSG(MYVALUEDEBUG, std::endl); } + ADDMSG(std::endl); } - ADDMSG(MYDEBUG, std::endl); -#endif return anInfo; } @@ -1557,20 +1542,21 @@ namespace MED PPolygoneInfo anInfo = CrPolygoneInfo(theMeshInfo, theEntity, theGeom, aNbElem, aConnSize, theConnMode); GetPolygoneInfo(anInfo); -#ifdef _DEBUG_ - INITMSG(MYDEBUG, "GetPPolygoneInfo"<< - " - theGeom = "<GetConnSlice(iElem); - TInt aConnDim = aConnSlice.size(); - for (TInt iConn = 0; iConn < aConnDim; iConn++) { - ADDMSG(MYVALUEDEBUG, aConnSlice[iConn]<<","); + if (SALOME::VerbosityActivated()) + { + INITMSG("GetPPolygoneInfo"<< + " - theGeom = "<GetConnSlice(iElem); + TInt aConnDim = aConnSlice.size(); + for (TInt iConn = 0; iConn < aConnDim; iConn++) { + ADDMSG(aConnSlice[iConn]<<","); + } + ADDMSG(" "); } - ADDMSG(MYDEBUG, " "); + ADDMSG(std::endl); } - ADDMSG(MYDEBUG, std::endl); -#endif return anInfo; } @@ -1867,27 +1853,28 @@ namespace MED PPolyedreInfo anInfo = CrPolyedreInfo(theMeshInfo, theEntity, theGeom, aNbElem, aNbFaces, aConnSize, theConnMode); GetPolyedreInfo(anInfo); -#ifdef _DEBUG_ - INITMSG(MYDEBUG, "GetPPolyedreInfo"<< - " - theGeom = "<GetConnSliceArr(iElem); - TInt aNbFaces = aConnSliceArr.size(); - ADDMSG(MYDEBUG, "{"); - for (TInt iFace = 0; iFace < aNbFaces; iFace++) { - TCConnSlice aConnSlice = aConnSliceArr[iFace]; - TInt aNbConn = aConnSlice.size(); - ADDMSG(MYDEBUG, "["); - for (TInt iConn = 0; iConn < aNbConn; iConn++) { - ADDMSG(MYVALUEDEBUG, aConnSlice[iConn]<<","); + if (SALOME::VerbosityActivated()) + { + INITMSG("GetPPolyedreInfo"<< + " - theGeom = "<GetConnSliceArr(iElem); + TInt aNbFaces = aConnSliceArr.size(); + ADDMSG("{"); + for (TInt iFace = 0; iFace < aNbFaces; iFace++) { + TCConnSlice aConnSlice = aConnSliceArr[iFace]; + TInt aNbConn = aConnSlice.size(); + ADDMSG("["); + for (TInt iConn = 0; iConn < aNbConn; iConn++) { + ADDMSG(aConnSlice[iConn]<<","); + } + ADDMSG("] "); } - ADDMSG(MYDEBUG, "] "); + ADDMSG("} "); } - ADDMSG(MYDEBUG, "} "); + ADDMSG(std::endl); } - ADDMSG(MYDEBUG, std::endl); -#endif return anInfo; } @@ -2217,14 +2204,14 @@ namespace MED //---------------------------------------------------------------------------- PCellInfo TWrapper - ::CrCellInfo(const PMeshInfo& theMeshInfo, - EEntiteMaillage theEntity, + ::CrCellInfo(const PMeshInfo& theMeshInfo, + EEntiteMaillage theEntity, EGeometrieElement theGeom, - TInt theNbElem, - EConnectivite theConnMode, - EBooleen theIsElemNum, - EBooleen theIsElemNames, - EModeSwitch theMode) + TInt theNbElem, + EConnectivite theConnMode, + EBooleen theIsElemNum, + EBooleen theIsElemNames, + EModeSwitch theMode) { return PCellInfo(new TTCellInfo (theMeshInfo, @@ -2288,34 +2275,35 @@ namespace MED PCellInfo anInfo = CrCellInfo(theMeshInfo, theEntity, theGeom, aNbElem, theConnMode); GetCellInfo(anInfo, theErr); -#ifdef _DEBUG_ - TInt aConnDim = anInfo->GetConnDim(); - INITMSG(MYDEBUG, "GetPCellInfo - theEntity = "<GetConnSlice(iElem); - for (TInt iConn = 0; iConn < aConnDim; iConn++) { - ADDMSG(MYVALUEDEBUG, aConnSlice[iConn]<<","); + if (SALOME::VerbosityActivated()) + { + TInt aConnDim = anInfo->GetConnDim(); + INITMSG("GetPCellInfo - theEntity = "<GetConnSlice(iElem); + for (TInt iConn = 0; iConn < aConnDim; iConn++) { + ADDMSG(aConnSlice[iConn]<<","); + } + ADDMSG(" "); } - ADDMSG(MYVALUEDEBUG, " "); - } - ADDMSG(MYDEBUG, std::endl); - - BEGMSG(MYVALUEDEBUG, "GetPCellInfo - GetFamNum: "); - for (TInt iElem = 0; iElem < aNbElem; iElem++) { - ADDMSG(MYVALUEDEBUG, anInfo->GetFamNum(iElem)<<", "); - } - ADDMSG(MYVALUEDEBUG, std::endl); + ADDMSG(std::endl); - if (anInfo->IsElemNum()) { - BEGMSG(MYVALUEDEBUG, "GetPCellInfo - GetElemNum: "); + BEGMSG("GetPCellInfo - GetFamNum: "); for (TInt iElem = 0; iElem < aNbElem; iElem++) { - ADDMSG(MYVALUEDEBUG, anInfo->GetElemNum(iElem)<<", "); + ADDMSG(anInfo->GetFamNum(iElem)<<", "); + } + ADDMSG(std::endl); + + if (anInfo->IsElemNum()) { + BEGMSG("GetPCellInfo - GetElemNum: "); + for (TInt iElem = 0; iElem < aNbElem; iElem++) { + ADDMSG(anInfo->GetElemNum(iElem)<<", "); + } + ADDMSG(std::endl); } - ADDMSG(MYVALUEDEBUG, std::endl); + ADDMSG(std::endl); } - ADDMSG(MYDEBUG, std::endl); -#endif return anInfo; } @@ -2696,14 +2684,14 @@ namespace MED PFieldInfo anInfo = CrFieldInfo(theMeshInfo, aNbComp); GetFieldInfo(theId, *anInfo, theErr); -#ifdef _DEBUG_ - INITMSG(MYDEBUG, - "GetPFieldInfo "<< - "- aName = '"<GetName()<<"'"<< - "; aType = "<GetType()<< - "; aNbComp = "<myGeom2NbGauss; - TGeom2NbGauss::const_iterator anIter = aGeom2NbGauss.begin(); - for (; anIter != aGeom2NbGauss.end(); anIter++) { - const EGeometrieElement& aGeom = anIter->first; - INITMSG(MYDEBUG, "aGeom = "<myGeom2NbGauss; + TGeom2NbGauss::const_iterator anIter = aGeom2NbGauss.begin(); + for (; anIter != aGeom2NbGauss.end(); anIter++) { + const EGeometrieElement& aGeom = anIter->first; + INITMSG("aGeom = "<GetValueSize(aGeom); - INITMSG(MYDEBUG, - "TWrapper::GetTimeStampValue - aGeom = "<GetNbNodes(); - BEGMSG(MYVALUEDEBUG, "GetFamNumNode: "); + BEGMSG("GetFamNumNode: "); for (TInt iElem = 0; iElem < aNbElem; iElem++) { - ADDMSG(MYVALUEDEBUG, anInfo->GetFamNumNode(iElem)<<", "); + ADDMSG(anInfo->GetFamNumNode(iElem)<<", "); } TInt aNbCells = anInfo->GetNbCells(); - BEGMSG(MYVALUEDEBUG, "GetFamNum: "); + BEGMSG("GetFamNum: "); for (TInt iElem = 0; iElem < aNbCells; iElem++) { - ADDMSG(MYVALUEDEBUG, anInfo->GetFamNum(iElem)<<", "); + ADDMSG(anInfo->GetFamNum(iElem)<<", "); } - ADDMSG(MYVALUEDEBUG, std::endl); - BEGMSG(MYVALUEDEBUG, "GetCoordName: "); + ADDMSG(std::endl); + BEGMSG("GetCoordName: "); for (TInt iElem = 0; iElem < theMeshInfo->GetDim(); iElem++) { - ADDMSG(MYVALUEDEBUG, anInfo->GetCoordName(iElem)<<", "); + ADDMSG(anInfo->GetCoordName(iElem)<<", "); } - ADDMSG(MYVALUEDEBUG, std::endl); - BEGMSG(MYVALUEDEBUG, "GetCoordUnit: "); + ADDMSG(std::endl); + BEGMSG("GetCoordUnit: "); for (TInt iElem = 0; iElem < theMeshInfo->GetDim(); iElem++) { - ADDMSG(MYVALUEDEBUG, anInfo->GetCoordUnit(iElem)<<", "); + ADDMSG(anInfo->GetCoordUnit(iElem)<<", "); } - ADDMSG(MYVALUEDEBUG, std::endl); - + ADDMSG(std::endl); } -#endif return anInfo; }