From 550cf0575ee4c686b982fb96331d02c363047a95 Mon Sep 17 00:00:00 2001 From: Anthony Geay Date: Wed, 28 Apr 2021 11:35:05 +0200 Subject: [PATCH] Approche brute force laborieuse. On va tenter l'approche MEDmemFileOpen --- src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx | 1 + src/MEDWrapper/MEDCoupling_Wrapper.cxx | 135 +++++++++++++++++++++ src/MEDWrapper/MEDCoupling_Wrapper.hxx | 8 +- 3 files changed, 140 insertions(+), 4 deletions(-) diff --git a/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx b/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx index d09ce5713..a49dc01c5 100644 --- a/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx +++ b/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx @@ -346,6 +346,7 @@ namespace Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform() { + PerformMedcoupling(); MED::PWrapper myMed = CrWrapperW(myFile, myVersion); return this->PerformInternal(myMed); } diff --git a/src/MEDWrapper/MEDCoupling_Wrapper.cxx b/src/MEDWrapper/MEDCoupling_Wrapper.cxx index b975c7580..88a50b029 100644 --- a/src/MEDWrapper/MEDCoupling_Wrapper.cxx +++ b/src/MEDWrapper/MEDCoupling_Wrapper.cxx @@ -64,9 +64,20 @@ void MCTWrapper::SetNodeInfo(const TNodeInfo& theInfo) MED::TInt aNbElem(anInfo.myNbElem); std::string aCoordNames(anInfo.myCoordNames.data()); std::string aCoordUnits(anInfo.myCoordUnits.data()); + std::vector comps( DataArray::SplitStringInChuncks(aCoordNames,MED_SNAME_SIZE) ); + std::vector units( DataArray::SplitStringInChuncks(aCoordUnits,MED_SNAME_SIZE) ); + std::size_t nbComps( comps.size() ); + if( nbComps != units.size() ) + THROW_IK_EXCEPTION("MCTWrapper::SetNodeInfo : mismatch length " << nbComps << " != " << units.size() << " !"); + std::vector compUnits(nbComps); + for( std::size_t i = 0 ; i < nbComps ; ++i ) + { + compUnits[i] = DataArray::BuildInfoFromVarAndUnit(comps[i],units[i]) ; + } _coords = DataArrayDouble::New(); _coords->alloc(aNbElem,this->_space_dim); std::copy(aCoord->data(),aCoord->data()+aNbElem*this->_space_dim,_coords->getPointer()); + _coords->setInfoOnComponents(compUnits); } void MCTWrapper::GetFamilyInfo(TInt theFamId, TFamilyInfo& theInfo) @@ -75,3 +86,127 @@ void MCTWrapper::GetFamilyInfo(TInt theFamId, TFamilyInfo& theInfo) MED::TInt aFamilyId(theInfo.myId); std::string aGroupNames(theInfo.myGroupNames.data()); } + +//copie + PFamilyInfo + MCTWrapper::CrFamilyInfo(const PMeshInfo& theMeshInfo, + const std::string& theValue, + TInt theId, + const MED::TStringSet& theGroupNames, + const MED::TStringVector& theAttrDescs, + const MED::TIntVector& theAttrIds, + const MED::TIntVector& theAttrVals) + { + return PFamilyInfo(new TTFamilyInfo + (theMeshInfo, + theValue, + theId, + theGroupNames, + theAttrDescs, + theAttrIds, + theAttrVals)); + } + + //copie + PPolygoneInfo + MCTWrapper::CrPolygoneInfo(const PMeshInfo& theMeshInfo, + EEntiteMaillage theEntity, + EGeometrieElement theGeom, + TInt theNbElem, + TInt theConnSize, + EConnectivite theConnMode, + EBooleen theIsElemNum, + EBooleen theIsElemNames) + { + return PPolygoneInfo(new TTPolygoneInfo + (theMeshInfo, + theEntity, + theGeom, + theNbElem, + theConnSize, + theConnMode, + theIsElemNum, + theIsElemNames)); + } + + //copie + PPolygoneInfo + MCTWrapper + ::CrPolygoneInfo(const PMeshInfo& theMeshInfo, + EEntiteMaillage theEntity, + EGeometrieElement theGeom, + const TIntVector& theIndexes, + const TIntVector& theConnectivities, + EConnectivite theConnMode, + const TIntVector& theFamilyNums, + const TIntVector& theElemNums, + const TStringVector& theElemNames) + { + return PPolygoneInfo(new TTPolygoneInfo + (theMeshInfo, + theEntity, + theGeom, + theIndexes, + theConnectivities, + theConnMode, + theFamilyNums, + theElemNums, + theElemNames)); + } + + //copie + PPolyedreInfo + MCTWrapper + ::CrPolyedreInfo(const PMeshInfo& theMeshInfo, + EEntiteMaillage theEntity, + EGeometrieElement theGeom, + TInt theNbElem, + TInt theNbFaces, + TInt theConnSize, + EConnectivite theConnMode, + EBooleen theIsElemNum, + EBooleen theIsElemNames) + { + return PPolyedreInfo(new TTPolyedreInfo + (theMeshInfo, + theEntity, + theGeom, + theNbElem, + theNbFaces, + theConnSize, + theConnMode, + theIsElemNum, + theIsElemNames)); + } + +//copie + PBallInfo + MCTWrapper + ::CrBallInfo(const PMeshInfo& theMeshInfo, + TInt theNbBalls, + EBooleen theIsElemNum) + { + return PBallInfo(new TTBallInfo(theMeshInfo, theNbBalls, theIsElemNum)); + } + + PCellInfo + MCTWrapper + ::CrCellInfo(const PMeshInfo& theMeshInfo, + EEntiteMaillage theEntity, + EGeometrieElement theGeom, + TInt theNbElem, + EConnectivite theConnMode, + EBooleen theIsElemNum, + EBooleen theIsElemNames, + EModeSwitch theMode) + { + return PCellInfo(new TTCellInfo + (theMeshInfo, + theEntity, + theGeom, + theNbElem, + theConnMode, + theIsElemNum, + theIsElemNames, + theMode)); + } diff --git a/src/MEDWrapper/MEDCoupling_Wrapper.hxx b/src/MEDWrapper/MEDCoupling_Wrapper.hxx index 9d278d23b..57ba0a316 100644 --- a/src/MEDWrapper/MEDCoupling_Wrapper.hxx +++ b/src/MEDWrapper/MEDCoupling_Wrapper.hxx @@ -61,7 +61,7 @@ namespace MED const TStringSet& theGroupNames, const TStringVector& theAttrDescs = TStringVector(), const TIntVector& theAttrIds = TIntVector(), - const TIntVector& theAttrVals = TIntVector()) { } + const TIntVector& theAttrVals = TIntVector()); //! Create a MEDWrapper MED Polygones representation virtual @@ -73,7 +73,7 @@ namespace MED TInt theConnSize, EConnectivite theConnMode = eNOD, EBooleen theIsElemNum = eVRAI, - EBooleen theIsElemNames = eVRAI) { } + EBooleen theIsElemNames = eVRAI); //! Create a MEDWrapper MED Polygones representation virtual @@ -86,7 +86,7 @@ namespace MED EConnectivite theConnMode = eNOD, const TIntVector& theFamilyNums = TIntVector(), const TIntVector& theElemNums = TIntVector(), - const TStringVector& theElemNames = TStringVector()) { } + const TStringVector& theElemNames = TStringVector()); //! Write a MEDWrapper MED Polygones representation into the MED file @@ -103,7 +103,7 @@ namespace MED TInt theConnSize, EConnectivite theConnMode = eNOD, EBooleen theIsElemNum = eVRAI, - EBooleen theIsElemNames = eVRAI) { } + EBooleen theIsElemNames = eVRAI); //! Write a MEDWrapper MED Polyedres representation into the MED file -- 2.39.2