// File : DriverMED_W_SMESHDS_Mesh.cxx
// Module : SMESH
+#include <sstream>
+
#include "DriverMED_W_SMESHDS_Mesh.h"
#include "DriverMED_W_SMDS_Mesh.h"
#include "DriverMED_Family.h"
+#include "SMESHDS_Mesh.hxx"
#include "SMDS_MeshElement.hxx"
#include "SMDS_MeshNode.hxx"
#include "utilities.h"
#include "MEDA_Wrapper.hxx"
-#include <sstream>
-
#include "MED_Utilities.hxx"
#define _EDF_NODE_IDS_
-#define _ELEMENTS_BY_DIM_
-
-DriverMED_W_SMESHDS_Mesh::DriverMED_W_SMESHDS_Mesh()
- :
- myMesh (NULL),
- myFile (""),
- myFileId (-1),
- myMeshId (-1),
- myAllSubMeshes (false),
- myDoGroupOfNodes (false),
- myDoGroupOfEdges (false),
- myDoGroupOfFaces (false),
- myDoGroupOfVolumes (false)
-{
-}
+//#define _ELEMENTS_BY_DIM_
-DriverMED_W_SMESHDS_Mesh::~DriverMED_W_SMESHDS_Mesh()
-{
-}
+using namespace std;
-void DriverMED_W_SMESHDS_Mesh::SetMesh(SMDS_Mesh * aMesh)
-{
- myMesh = aMesh;
-}
-
-void DriverMED_W_SMESHDS_Mesh::SetFile(string aFile)
-{
- myFile = aFile;
-}
+DriverMED_W_SMESHDS_Mesh::DriverMED_W_SMESHDS_Mesh():
+ myAllSubMeshes (false),
+ myDoGroupOfNodes (false),
+ myDoGroupOfEdges (false),
+ myDoGroupOfFaces (false),
+ myDoGroupOfVolumes (false)
+{}
-void DriverMED_W_SMESHDS_Mesh::SetFileId(med_idt aFileId)
-{
- myFileId = aFileId;
-}
-
-void DriverMED_W_SMESHDS_Mesh::SetMeshId(int aMeshId)
-{
- myMeshId = aMeshId;
-}
-
-void DriverMED_W_SMESHDS_Mesh::SetMeshName(string theMeshName)
+void DriverMED_W_SMESHDS_Mesh::SetMeshName(const std::string& theMeshName)
{
myMeshName = theMeshName;
}
-void DriverMED_W_SMESHDS_Mesh::AddGroup(SMESHDS_Group* theGroup)
+void DriverMED_W_SMESHDS_Mesh::AddGroup(SMESHDS_GroupBase* theGroup)
{
myGroups.push_back(theGroup);
}
myDoGroupOfVolumes = true;
}
-void DriverMED_W_SMESHDS_Mesh::Write()
-{
- string myClass = string("SMDS_Mesh");
- string myExtension = string("MED");
-
- DriverMED_W_SMDS_Mesh *myWriter = new DriverMED_W_SMDS_Mesh;
-
- myWriter->SetMesh(myMesh);
- // myWriter->SetFile(myFile);
- myWriter->SetMeshId(myMeshId);
- myWriter->SetFileId(myFileId);
-
- myWriter->Write();
-}
-
-
typedef double (SMDS_MeshNode::* TGetCoord)() const;
typedef const char* TName;
typedef const char* TUnit;
return myCurrentNode;
}
MED::TIntVector::value_type GetID(){
- myCurrentNode->GetID();
+ return myCurrentNode->GetID();
}
MED::TFloatVector::value_type GetCoord(med_int theCoodId){
return (myCurrentNode->*myGetCoord[theCoodId])();
typedef boost::shared_ptr<TCoordHelper> TCoordHelperPtr;
-void DriverMED_W_SMESHDS_Mesh::Add()
+Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform()
{
+ Status aResult = DRS_OK;
if (myMesh->hasConstructionEdges() || myMesh->hasConstructionFaces()) {
INFOS("SMDS_MESH with hasConstructionEdges() or hasConstructionFaces() do not supports!!!");
- return;
+ return DRS_FAIL;
}
try{
using namespace MEDA;
using namespace boost;
- MESSAGE("Add - myFile : "<<myFile);
+ MESSAGE("Perform - myFile : "<<myFile);
TWrapper aMed(myFile);
// Creating the MED mesh for corresponding SMDS structure
}
double EPS = 1.0E-7;
- anIsXDimension = (aBounds[1] - aBounds[0]) > EPS;
- anIsYDimension = (aBounds[3] - aBounds[2]) > EPS;
- anIsZDimension = (aBounds[5] - aBounds[4]) > EPS;
+ anIsXDimension = (aBounds[1] - aBounds[0]) + abs(aBounds[1]) + abs(aBounds[0]) > EPS;
+ anIsYDimension = (aBounds[3] - aBounds[2]) + abs(aBounds[3]) + abs(aBounds[2]) > EPS;
+ anIsZDimension = (aBounds[5] - aBounds[4]) + abs(aBounds[5]) + abs(aBounds[4]) > EPS;
aMeshDimension = anIsXDimension + anIsYDimension + anIsZDimension;
if(!aMeshDimension)
if (myDoGroupOfVolumes)
myVolumesDefaultFamilyId = REST_VOLUMES_FAMILY;
- MESSAGE("Add - aFamilyInfo");
+ MESSAGE("Perform - aFamilyInfo");
map<const SMDS_MeshElement *, int> anElemFamMap;
list<DriverMED_FamilyPtr> aFamilies;
if (myAllSubMeshes) {
- SMESHDS_Mesh* aSMESHDSMesh = dynamic_cast<SMESHDS_Mesh*>(myMesh);
- if (!aSMESHDSMesh) {
- EXCEPTION(runtime_error,"Can not cast SMDS_Mesh to SMESHDS_Mesh");
- }
aFamilies = DriverMED_Family::MakeFamilies
- (aSMESHDSMesh->SubMeshes(), myGroups,
+ (myMesh->SubMeshes(), myGroups,
myDoGroupOfNodes, myDoGroupOfEdges, myDoGroupOfFaces, myDoGroupOfVolumes);
} else {
aFamilies = DriverMED_Family::MakeFamilies
aCoordUnits,
aFamilyNums,
anElemNums);
- MESSAGE("Add - aNodeInfo->GetNbElem() = "<<aNbElems);
+ MESSAGE("Perform - aNodeInfo->GetNbElem() = "<<aNbElems);
aMed.SetNodeInfo(aNodeInfo);
aTriaConn,
aTriaFamilyNums,
anTriaElemNums);
- MESSAGE("Add - anEntity = "<<SMDS_MED_ENTITY<<"; aGeom = "<<MED_TRIA3<<"; aNbElems = "<<aNbElems);
+ MESSAGE("Perform - anEntity = "<<SMDS_MED_ENTITY<<"; aGeom = "<<MED_TRIA3<<"; aNbElems = "<<aNbElems);
aMed.SetCellInfo(aCellInfo);
}
if(med_int aNbElems = aQuadElemNums.size()){
aQuadConn,
aQuadFamilyNums,
aQuadElemNums);
- MESSAGE("Add - anEntity = "<<SMDS_MED_ENTITY<<"; aGeom = "<<MED_QUAD4<<"; aNbElems = "<<aNbElems);
+ MESSAGE("Perform - anEntity = "<<SMDS_MED_ENTITY<<"; aGeom = "<<MED_QUAD4<<"; aNbElems = "<<aNbElems);
aMed.SetCellInfo(aCellInfo);
}
}
aTetraConn,
aTetraFamilyNums,
anTetraElemNums);
- MESSAGE("Add - anEntity = "<<SMDS_MED_ENTITY<<"; aGeom = "<<MED_TETRA4<<"; aNbElems = "<<aNbElems);
+ MESSAGE("Perform - anEntity = "<<SMDS_MED_ENTITY<<"; aGeom = "<<MED_TETRA4<<"; aNbElems = "<<aNbElems);
aMed.SetCellInfo(aCellInfo);
}
if(med_int aNbElems = anPyraElemNums.size()){
aPyraConn,
aPyraFamilyNums,
anPyraElemNums);
- MESSAGE("Add - anEntity = "<<SMDS_MED_ENTITY<<"; aGeom = "<<MED_PYRA5<<"; aNbElems = "<<aNbElems);
+ MESSAGE("Perform - anEntity = "<<SMDS_MED_ENTITY<<"; aGeom = "<<MED_PYRA5<<"; aNbElems = "<<aNbElems);
aMed.SetCellInfo(aCellInfo);
}
if(med_int aNbElems = anPentaElemNums.size()){
aPentaConn,
aPentaFamilyNums,
anPentaElemNums);
- MESSAGE("Add - anEntity = "<<SMDS_MED_ENTITY<<"; aGeom = "<<MED_PENTA6<<"; aNbElems = "<<aNbElems);
+ MESSAGE("Perform - anEntity = "<<SMDS_MED_ENTITY<<"; aGeom = "<<MED_PENTA6<<"; aNbElems = "<<aNbElems);
aMed.SetCellInfo(aCellInfo);
}
if(med_int aNbElems = aHexaElemNums.size()){
aHexaConn,
aHexaFamilyNums,
aHexaElemNums);
- MESSAGE("Add - anEntity = "<<SMDS_MED_ENTITY<<"; aGeom = "<<MED_HEXA8<<"; aNbElems = "<<aNbElems);
+ MESSAGE("Perform - anEntity = "<<SMDS_MED_ENTITY<<"; aGeom = "<<MED_HEXA8<<"; aNbElems = "<<aNbElems);
aMed.SetCellInfo(aCellInfo);
}
}
myMeshId = -1;
myGroups.clear();
mySubMeshes.clear();
+ return aResult;
}