{
Driver_SMESHDS_Mesh::SetFile(theFileName);
myMedVersion = theId;
+ //MESSAGE("myMedVersion:"<<myMedVersion);
}
void DriverMED_W_SMESHDS_Mesh::SetFile(const std::string& theFileName)
Driver_SMESHDS_Mesh::SetFile(theFileName);
}
+/*!
+ * MED version is either the latest available, or with an inferior minor,
+ * to ensure backward compatibility on writing med files.
+ */
string DriverMED_W_SMESHDS_Mesh::GetVersionString(const MED::EVersion theVersion, int theNbDigits)
{
TInt majeur, mineur, release;
majeur = mineur = release = 0;
-// if ( theVersion == eV2_1 )
-// MED::GetVersionRelease<eV2_1>(majeur, mineur, release);
-// else
- MED::GetVersionRelease<eV2_2>(majeur, mineur, release);
+ MED::GetVersionRelease<eV2_2>(majeur, mineur, release);
+ TInt imposedMineur = mineur;
+ switch( theVersion ) {
+ case MED::eV2_1 :
+ case MED::eV2_2 :
+ case MED::eLATEST : break;
+ case MED::eMINOR_0 : imposedMineur = 0; break;
+ case MED::eMINOR_1 : imposedMineur = 1; break;
+ case MED::eMINOR_2 : imposedMineur = 2; break;
+ case MED::eMINOR_3 : imposedMineur = 3; break;
+ case MED::eMINOR_4 : imposedMineur = 4; break;
+ case MED::eMINOR_5 : imposedMineur = 5; break;
+ case MED::eMINOR_6 : imposedMineur = 6; break;
+ case MED::eMINOR_7 : imposedMineur = 7; break;
+ case MED::eMINOR_8 : imposedMineur = 8; break;
+ case MED::eMINOR_9 : imposedMineur = 9; break;
+ case MED::eVUnknown : imposedMineur = mineur; break;
+ }
+ if (imposedMineur > mineur)
+ imposedMineur = mineur;
ostringstream name;
if ( theNbDigits > 0 )
name << majeur;
if ( theNbDigits > 1 )
- name << "." << mineur;
+ name << "." << imposedMineur;
if ( theNbDigits > 2 )
name << "." << release;
return name.str();
break;
}
}
-
+ //MESSAGE("myMedVersion:"<<myMedVersion);
MED::PWrapper myMed = CrWrapper(myFile,myMedVersion);
PMeshInfo aMeshInfo = myMed->CrMeshInfo(aMeshDimension,aSpaceDimension,aMeshName);
//MESSAGE("Add - aMeshName : "<<aMeshName<<"; "<<aMeshInfo->GetName());
SMDSAbs_Volume));
aTElemTypeDatas.push_back( TElemTypeData(anEntity,
ePENTA15,
- nbElemInfo.NbPrisms( ORDER_QUADRATIC ),
+ nbElemInfo.NbQuadPrisms(),
+ SMDSAbs_Volume));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ ePENTA18,
+ nbElemInfo.NbBiQuadPrisms(),
SMDSAbs_Volume));
aTElemTypeDatas.push_back( TElemTypeData(anEntity,
eHEXA8,
continue;
}
+ // build map of family numbers for this type
+ if ( !isElemFamMapBuilt[ aElemTypeData->_smdsType ])
+ {
+ fillElemFamilyMap( anElemFamMap, aFamilies, aElemTypeData->_smdsType );
+ isElemFamMapBuilt[ aElemTypeData->_smdsType ] = true;
+ }
+
// iterator on elements of a current type
SMDS_ElemIteratorPtr elemIterator;
int iElem = 0;
else if (aElemTypeData->_geomType == ePOLYEDRE )
{
elemIterator = myMesh->elementGeomIterator( SMDSGeom_POLYHEDRA );
-
+
if ( nbPolyhedronNodes == 0 ) {
// Count nb of nodes
while ( elemIterator->more() ) {
// allocate data arrays
PBallInfo aBallInfo = myMed->CrBallInfo( aMeshInfo, aElemTypeData->_nbElems );
- // build map of family numbers for this type
- if ( !isElemFamMapBuilt[ aElemTypeData->_smdsType ])
- {
- fillElemFamilyMap( anElemFamMap, aFamilies, aElemTypeData->_smdsType );
- isElemFamMapBuilt[ aElemTypeData->_smdsType ] = true;
- }
-
elemIterator = myMesh->elementsIterator( SMDSAbs_Ball );
while ( elemIterator->more() )
{
{
// Treat standard types
// ---------------------
-
// allocate data arrays
PCellInfo aCellInfo = myMed->CrCellInfo( aMeshInfo,
aElemTypeData->_entity,
theConnMode,
theIsElemNum,
theIsElemNames);
- // build map of family numbers for this type
- if ( !isElemFamMapBuilt[ aElemTypeData->_smdsType ])
- {
- //cout << " fillElemFamilyMap()" << endl;
- fillElemFamilyMap( anElemFamMap, aFamilies, aElemTypeData->_smdsType );
- isElemFamMapBuilt[ aElemTypeData->_smdsType ] = true;
- }
TInt aNbNodes = MED::GetNbNodes(aElemTypeData->_geomType);
elemIterator = myMesh->elementsIterator( aElemTypeData->_smdsType );
// store data in a file
myMed->SetCellInfo(aCellInfo);
}
-
} // loop on geom types
-
-
}
catch(const std::exception& exc) {
INFOS("The following exception was caught:\n\t"<<exc.what());