Approche brute force laborieuse. On va tenter l'approche MEDmemFileOpen

This commit is contained in:
Anthony Geay 2021-04-28 11:35:05 +02:00
parent 10cad68d7e
commit 550cf0575e
3 changed files with 140 additions and 4 deletions

View File

@ -346,6 +346,7 @@ namespace
Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform()
{
PerformMedcoupling();
MED::PWrapper myMed = CrWrapperW(myFile, myVersion);
return this->PerformInternal<MED::PWrapper>(myMed);
}

View File

@ -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<std::string> comps( DataArray::SplitStringInChuncks(aCoordNames,MED_SNAME_SIZE) );
std::vector<std::string> 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<std::string> 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));
}

View File

@ -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