case ePYRA13: aNbNodes = 13; break;
case ePENTA6: aNbNodes = 6; break;
case ePENTA15: aNbNodes = 15; break;
+ case ePENTA18: aNbNodes = 18; break;
case eHEXA8: aNbNodes = 8; break;
case eHEXA20: aNbNodes = 20; break;
case eHEXA27: aNbNodes = 27; break;
isRenum = anIsElemNum;
}
break;
+ case ePENTA18:
+ aNbNodes = 18;
+ if(anIsElemNum)
+ anElement = myMesh->AddVolumeWithID(aNodeIds[0], aNodeIds[1],
+ aNodeIds[2], aNodeIds[3],
+ aNodeIds[4], aNodeIds[5],
+ aNodeIds[6], aNodeIds[7],
+ aNodeIds[8], aNodeIds[9],
+ aNodeIds[10], aNodeIds[11],
+ aNodeIds[12], aNodeIds[13],
+ aNodeIds[14], aNodeIds[15],
+ aNodeIds[16], aNodeIds[17],
+ aCellInfo->GetElemNum(iElem));
+ if (!anElement) {
+ anElement = myMesh->AddVolume(FindNode(myMesh,aNodeIds[0]),
+ FindNode(myMesh,aNodeIds[1]),
+ FindNode(myMesh,aNodeIds[2]),
+ FindNode(myMesh,aNodeIds[3]),
+ FindNode(myMesh,aNodeIds[4]),
+ FindNode(myMesh,aNodeIds[5]),
+ FindNode(myMesh,aNodeIds[6]),
+ FindNode(myMesh,aNodeIds[7]),
+ FindNode(myMesh,aNodeIds[8]),
+ FindNode(myMesh,aNodeIds[9]),
+ FindNode(myMesh,aNodeIds[10]),
+ FindNode(myMesh,aNodeIds[11]),
+ FindNode(myMesh,aNodeIds[12]),
+ FindNode(myMesh,aNodeIds[13]),
+ FindNode(myMesh,aNodeIds[14]),
+ FindNode(myMesh,aNodeIds[15]),
+ FindNode(myMesh,aNodeIds[16]),
+ FindNode(myMesh,aNodeIds[17]));
+ isRenum = anIsElemNum;
+ }
+ break;
case eHEXA8:
aNbNodes = 8;
if(anIsElemNum)
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,
{
// Treat standard types
// ---------------------
-
// allocate data arrays
PCellInfo aCellInfo = myMed->CrCellInfo( aMeshInfo,
aElemTypeData->_entity,
// build map of family numbers for this type
if ( !isElemFamMapBuilt[ aElemTypeData->_smdsType ])
{
- //cout << " fillElemFamilyMap()" << endl;
fillElemFamilyMap( anElemFamMap, aFamilies, aElemTypeData->_smdsType );
isElemFamMapBuilt[ aElemTypeData->_smdsType ] = true;
}
// 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());
#ifdef WIN32
#pragma warning(disable:4250)
#endif
-
+#include <utilities.h>
namespace MED
{
//---------------------------------------------------------------
aGeomMAILLESet.insert(eTETRA10);
aGeomMAILLESet.insert(ePYRA13);
aGeomMAILLESet.insert(ePENTA15);
+ aGeomMAILLESet.insert(ePENTA18);
aGeomMAILLESet.insert(eHEXA20);
aGeomMAILLESet.insert(eHEXA27);
aGeomMAILLESet.insert(ePOLYEDRE);
aFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON);
aFilter->RegisterCellsWithType(VTK_TRIQUADRATIC_HEXAHEDRON);
aFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE);
+ aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUADRATIC_WEDGE);
aFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID);
aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
aFilter->RegisterCellsWithType(VTK_POLYHEDRON);
aFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON);
aFilter->RegisterCellsWithType(VTK_TRIQUADRATIC_HEXAHEDRON);
aFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE);
+ aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUADRATIC_WEDGE);
aFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID);
aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
aFilter->RegisterCellsWithType(VTK_POLYHEDRON);
aFilter->RegisterCellsWithType(VTK_TRIQUADRATIC_HEXAHEDRON);
aFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID);
aFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE);
+ aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUADRATIC_WEDGE);
aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
aFilter->RegisterCellsWithType(VTK_POLYHEDRON);
aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON);
aHltFilter->RegisterCellsWithType(VTK_TRIQUADRATIC_HEXAHEDRON);
aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE);
+ aHltFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUADRATIC_WEDGE);
aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID);
aHltFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
aHltFilter->RegisterCellsWithType(VTK_POLYHEDRON);
_cellDimension[VTK_TRIQUADRATIC_HEXAHEDRON] = 3;
_cellDimension[VTK_WEDGE] = 3;
_cellDimension[VTK_QUADRATIC_WEDGE] = 3;
+ _cellDimension[VTK_BIQUADRATIC_QUADRATIC_WEDGE] = 3;
_cellDimension[VTK_PYRAMID] = 3;
_cellDimension[VTK_QUADRATIC_PYRAMID] = 3;
_cellDimension[VTK_HEXAGONAL_PRISM] = 3;
case VTK_QUADRATIC_WEDGE:
myInfo.myNbQuadPrisms++;
break;
+ case VTK_BIQUADRATIC_QUADRATIC_WEDGE:
+ myInfo.myNbBiQuadPrisms++;
+ break;
case VTK_QUADRATIC_HEXAHEDRON:
myInfo.myNbQuadHexas++;
break;
+ case VTK_TRIQUADRATIC_HEXAHEDRON:
+ myInfo.myNbTriQuadHexas++;
+ break;
//#ifdef VTK_HAVE_POLYHEDRON
case VTK_POLYHEDRON:
myInfo.myNbPolyhedrons++;
const SMDS_MeshNode * n2356,
const SMDS_MeshNode * n1346)
{
+ //MESSAGE("AddVolume penta18");
int ID = myElementIDFactory->GetFreeID();
SMDS_MeshVolume * v =
SMDS_Mesh::AddVolumeWithID(n1, n2, n3, n4, n5, n6, n12, n23, n31,
int n14,int n25,int n36,
int n1245, int n2356, int n1346, int ID)
{
+ //MESSAGE("AddVolumeWithID penta18 " << ID);
return SMDS_Mesh::AddVolumeWithID
((SMDS_MeshNode*) myNodeIDFactory->MeshElement(n1) ,
(SMDS_MeshNode*) myNodeIDFactory->MeshElement(n2) ,
const SMDS_MeshNode * n1346,
int ID)
{
+ //MESSAGE("AddVolumeWithID penta18 "<< ID);
if (!n1 || !n2 || !n3 || !n4 || !n5 || !n6 || !n12 || !n23 ||
!n31 || !n45 || !n56 || !n64 || !n14 || !n25 || !n36 || !n1245 || !n2356 || !n1346)
return 0;
return 0;
}
// --- retrieve nodes ID
- myNodeIds.resize(15);
+ myNodeIds.resize(18);
myNodeIds[0] = n1->getVtkId();
myNodeIds[1] = n2->getVtkId();
myNodeIds[2] = n3->getVtkId();
#include "SMESH_SMDS.hxx"
#include "SMDS_MeshElement.hxx"
+#include<utilities.h>
class SMDS_EXPORT SMDS_MeshInfo
{
// 15 *
// 16 *
// 17 *
- // 18 *
- // 19 *
+ // 18 *
+ // 19
// 20 *
- // 21 *
- // 22 *
- // 23 *
- // 24 *
- // 25
- // 26
+ // 21
+ // 22
+ // 23
+ // 24
+ // 25 *
+ // 26 *
// 27 *
+ // 28 *
+ // 29 *
+ // 30 *
+ // 31 *
//
// So to have a unique index for each type basing on nb of nodes, we use a shift:
myShift.resize(SMDSAbs_NbElementTypes, 0);
- myShift[ SMDSAbs_Face ] = +15;// 3->18, 4->19, etc.
+ myShift[ SMDSAbs_Face ] = +22;// 3->25, 4->26, etc.
myShift[ SMDSAbs_Edge ] = +14;// 2->16, 3->17
myShift[ SMDSAbs_0DElement ] = +2; // 1->3
myShift[ SMDSAbs_Ball ] = +1; // 1->2
- myNb.resize( index( SMDSAbs_Volume,27 ) + 1, NULL);
+ myNb.resize( index( SMDSAbs_Face,9 ) + 1, NULL);
myNb[ index( SMDSAbs_Node,1 )] = & myNbNodes;
myNb[ index( SMDSAbs_0DElement,1 )] = & myNb0DElements;
myNb[ index( SMDSAbs_Volume, 12)] = & myNbHexPrism;
myNb[ index( SMDSAbs_Volume, 13)] = & myNbQuadPyramids;
myNb[ index( SMDSAbs_Volume, 15)] = & myNbQuadPrisms;
+ myNb[ index( SMDSAbs_Volume, 18)] = & myNbBiQuadPrisms;
myNb[ index( SMDSAbs_Volume, 20)] = & myNbQuadHexas;
myNb[ index( SMDSAbs_Volume, 27)] = & myNbTriQuadHexas;
}
inline int // NbPrisms
SMDS_MeshInfo::NbPrisms (SMDSAbs_ElementOrder order) const
-{ return order == ORDER_ANY ? myNbPrisms+myNbQuadPrisms : order == ORDER_LINEAR ? myNbPrisms : myNbQuadPrisms; }
+{ return order == ORDER_ANY ? myNbPrisms+myNbQuadPrisms+myNbBiQuadPrisms: order == ORDER_LINEAR ? myNbPrisms : myNbQuadPrisms+myNbBiQuadPrisms; }
inline int // NbHexPrisms
SMDS_MeshInfo::NbHexPrisms (SMDSAbs_ElementOrder order) const
myNbQuadHexas +
myNbTriQuadHexas);
case SMDSGeom_PENTA: return (myNbPrisms +
- myNbQuadPrisms);
+ myNbQuadPrisms +
+ myNbBiQuadPrisms);
case SMDSGeom_HEXAGONAL_PRISM: return myNbHexPrism;
case SMDSGeom_POLYHEDRA: return myNbPolyhedrons;
// Discrete:
case VTK_WEDGE:
case VTK_QUADRATIC_PYRAMID:
case VTK_QUADRATIC_WEDGE:
+ case VTK_BIQUADRATIC_QUADRATIC_WEDGE:
nbFaces = 5;
break;
case VTK_HEXAHEDRON:
break;
case VTK_WEDGE:
case VTK_QUADRATIC_WEDGE:
+ case VTK_BIQUADRATIC_QUADRATIC_WEDGE:
nbEdges = 9;
break;
case VTK_HEXAHEDRON:
case VTK_QUADRATIC_TETRA:
case VTK_QUADRATIC_PYRAMID:
case VTK_QUADRATIC_WEDGE:
+ case VTK_BIQUADRATIC_QUADRATIC_WEDGE:
case VTK_QUADRATIC_HEXAHEDRON:
case VTK_TRIQUADRATIC_HEXAHEDRON:
return true;
rankFirstMedium = 5; // medium nodes are of rank 5 to 12
break;
case VTK_QUADRATIC_WEDGE:
+ case VTK_BIQUADRATIC_QUADRATIC_WEDGE:
rankFirstMedium = 6; // medium nodes are of rank 6 to 14
break;
case VTK_QUADRATIC_HEXAHEDRON:
vtkIdType aVtkType = grid->GetCellType(myVtkID);
switch (aVtkType)
{
- case VTK_QUADRATIC_TETRA: return 4;
- case VTK_QUADRATIC_PYRAMID: return 5;
- case VTK_QUADRATIC_WEDGE: return 6;
+ case VTK_QUADRATIC_TETRA: return 4;
+ case VTK_QUADRATIC_PYRAMID: return 5;
+ case VTK_QUADRATIC_WEDGE:
+ case VTK_BIQUADRATIC_QUADRATIC_WEDGE: return 6;
case VTK_QUADRATIC_HEXAHEDRON:
- case VTK_TRIQUADRATIC_HEXAHEDRON: return 8;
+ case VTK_TRIQUADRATIC_HEXAHEDRON: return 8;
default:;
}
return NbNodes();
break;
case VTK_WEDGE:
case VTK_QUADRATIC_WEDGE:
+ case VTK_BIQUADRATIC_QUADRATIC_WEDGE:
aType = SMDSGeom_PENTA;
break;
case VTK_HEXAHEDRON:
SMESH_MesherHelper& theHelper,
const bool theForce3d)
{
- MESSAGE("convertElemToQuadratic");
+ //MESSAGE("convertElemToQuadratic");
int nbElem = 0;
if( !theSm ) return nbElem;
case SMDSEntity_Penta:
case SMDSEntity_Quad_Penta:
case SMDSEntity_BiQuad_Penta:
- MESSAGE("--- " << aGeomType);
NewElem = theHelper.AddVolume(nodes[0], nodes[1], nodes[2], nodes[3], nodes[4], nodes[5], id, theForce3d);
break;
case SMDSEntity_Hexa:
void SMESH_MeshEditor::ConvertToQuadratic(const bool theForce3d, const bool theToBiQuad)
{
- MESSAGE("ConvertToQuadratic "<< theForce3d << " " << theToBiQuad);
+ //MESSAGE("ConvertToQuadratic "<< theForce3d << " " << theToBiQuad);
SMESHDS_Mesh* meshDS = GetMeshDS();
SMESH_MesherHelper aHelper(*myMesh);
case SMDSEntity_Penta:
case SMDSEntity_Quad_Penta:
case SMDSEntity_BiQuad_Penta:
- MESSAGE("--- " << type);
NewVolume = aHelper.AddVolume(nodes[0], nodes[1], nodes[2],
nodes[3], nodes[4], nodes[5], id, theForce3d);
for ( size_t i = 15; i < nodes.size(); ++i ) // rm central nodes
void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError,
bool volumeOnly)
{
- MESSAGE("FixQuadraticElements " << volumeOnly);
+ //MESSAGE("FixQuadraticElements " << volumeOnly);
// setenv NO_FixQuadraticElements to know if FixQuadraticElements() is guilty of bad conversion
if ( getenv("NO_FixQuadraticElements") )
return;
}
else { // fix nodes in the solid and its faces
#ifdef _DEBUG_
- MESSAGE("FIX SOLID " << nbSolids-- << " #" << GetMeshDS()->ShapeToIndex(s.Current()));
MSG("FIX SOLID " << nbSolids-- << " #" << GetMeshDS()->ShapeToIndex(s.Current()));
#endif
SMESH_MesherHelper h(*myMesh);
else if ( theNbNodes == 20 ) return VTK_QUADRATIC_HEXAHEDRON;
else if ( theNbNodes == 27 ) return VTK_TRIQUADRATIC_HEXAHEDRON;
else if ( theNbNodes == 15 ) return VTK_QUADRATIC_WEDGE;
+ else if ( theNbNodes == 18 ) return VTK_BIQUADRATIC_QUADRATIC_WEDGE;
else if ( theNbNodes == 13 ) return VTK_QUADRATIC_PYRAMID;//VTK_CONVEX_POINT_SET;
else return VTK_EMPTY_CELL;
</message>
<message>
<source>ENTITY_TYPE_21</source>
- <translation>OCTA12</translation>
+ <translation>PENTA18</translation>
</message>
<message>
<source>ENTITY_TYPE_22</source>
- <translation>POLYEDRE</translation>
+ <translation>OCTA12</translation>
</message>
<message>
<source>ENTITY_TYPE_23</source>
- <translation>QPOLYEDRE</translation>
+ <translation>POLYEDRE</translation>
</message>
<message>
<source>ENTITY_TYPE_24</source>
+ <translation>QPOLYEDRE</translation>
+ </message>
+ <message>
+ <source>ENTITY_TYPE_25</source>
<translation>BALL</translation>
</message>
<message>
</message>
<message>
<source>ENTITY_TYPE_21</source>
- <translation>OCTA12</translation>
+ <translation>PENTA18</translation>
</message>
<message>
<source>ENTITY_TYPE_22</source>
- <translation>POLYEDRE</translation>
+ <translation>OCTA12</translation>
</message>
<message>
<source>ENTITY_TYPE_23</source>
- <translation>QPOLYEDRE</translation>
+ <translation>POLYEDRE</translation>
</message>
<message>
<source>ENTITY_TYPE_24</source>
+ <translation>QPOLYEDRE</translation>
+ </message>
+ <message>
+ <source>ENTITY_TYPE_25</source>
<translation>BALL</translation>
</message>
<message>
<translation>エンティティの種類</translation>
</message>
<message>
- <source>ENTITY_TYPE_0</source>
- <translation>POINT1</translation>
+ <source>ENTITY_TYPE_0</source>
+ <translation>NONE</translation>
</message>
<message>
- <source>ENTITY_TYPE_1</source>
- <translation>POINT1</translation>
+ <source>ENTITY_TYPE_1</source>
+ <translation>POINT1</translation>
</message>
<message>
- <source>ENTITY_TYPE_2</source>
- <translation>SEG2</translation>
+ <source>ENTITY_TYPE_2</source>
+ <translation>SEG2</translation>
</message>
<message>
- <source>ENTITY_TYPE_3</source>
- <translation>SEG3</translation>
+ <source>ENTITY_TYPE_3</source>
+ <translation>SEG3</translation>
</message>
<message>
- <source>ENTITY_TYPE_4</source>
- <translation>TRIA3</translation>
+ <source>ENTITY_TYPE_4</source>
+ <translation>TRIA3</translation>
</message>
<message>
- <source>ENTITY_TYPE_5</source>
- <translation>TRIA6</translation>
+ <source>ENTITY_TYPE_5</source>
+ <translation>TRIA6</translation>
</message>
<message>
- <source>ENTITY_TYPE_6</source>
- <translation>QUAD4</translation>
+ <source>ENTITY_TYPE_6</source>
+ <translation>TRIA7</translation>
</message>
<message>
- <source>ENTITY_TYPE_7</source>
- <translation>QUAD8</translation>
+ <source>ENTITY_TYPE_7</source>
+ <translation>QUAD4</translation>
</message>
<message>
- <source>ENTITY_TYPE_8</source>
- <translation>QUAD9</translation>
+ <source>ENTITY_TYPE_8</source>
+ <translation>QUAD8</translation>
</message>
<message>
- <source>ENTITY_TYPE_9</source>
- <translation>TETRA4</translation>
+ <source>ENTITY_TYPE_9</source>
+ <translation>QUAD9</translation>
</message>
<message>
- <source>ENTITY_TYPE_10</source>
- <translation>TETRA10</translation>
+ <source>ENTITY_TYPE_10</source>
+ <translation>POLYGON</translation>
</message>
<message>
- <source>ENTITY_TYPE_11</source>
- <translation>PYRA5</translation>
+ <source>ENTITY_TYPE_11</source>
+ <translation>QPOLYGON</translation>
</message>
<message>
- <source>ENTITY_TYPE_12</source>
- <translation>PYRA13</translation>
+ <source>ENTITY_TYPE_12</source>
+ <translation>TETRA4</translation>
</message>
<message>
- <source>ENTITY_TYPE_13</source>
- <translation>PENTA6</translation>
+ <source>ENTITY_TYPE_13</source>
+ <translation>TETRA10</translation>
</message>
<message>
- <source>ENTITY_TYPE_14</source>
- <translation>PENTA15</translation>
+ <source>ENTITY_TYPE_14</source>
+ <translation>PYRA5</translation>
</message>
<message>
- <source>ENTITY_TYPE_15</source>
- <translation>HEXA8</translation>
+ <source>ENTITY_TYPE_15</source>
+ <translation>PYRA13</translation>
</message>
<message>
- <source>ENTITY_TYPE_16</source>
- <translation>HEXA20</translation>
+ <source>ENTITY_TYPE_16</source>
+ <translation>HEXA8</translation>
</message>
<message>
- <source>ENTITY_TYPE_17</source>
- <translation>HEXA27</translation>
+ <source>ENTITY_TYPE_17</source>
+ <translation>HEXA20</translation>
</message>
<message>
- <source>ENTITY_TYPE_18</source>
- <translation>OCTA12</translation>
+ <source>ENTITY_TYPE_18</source>
+ <translation>HEXA27</translation>
</message>
<message>
- <source>ENTITY_TYPE_19</source>
- <translation>ポリゴン</translation>
+ <source>ENTITY_TYPE_19</source>
+ <translation>PENTA6</translation>
</message>
<message>
- <source>ENTITY_TYPE_20</source>
- <translation>POLYEDRE</translation>
+ <source>ENTITY_TYPE_20</source>
+ <translation>PENTA15</translation>
</message>
<message>
- <source>ENTITY_TYPE_21</source>
- <translation>[なし]</translation>
+ <source>ENTITY_TYPE_21</source>
+ <translation>PENTA18</translation>
</message>
<message>
- <source>ENTITY_TYPE_22</source>
- <translation>ボール</translation>
+ <source>ENTITY_TYPE_22</source>
+ <translation>OCTA12</translation>
</message>
<message>
- <source>ENTITY_TYPE_23</source>
- <translation>QPOLYEDRE</translation>
+ <source>ENTITY_TYPE_23</source>
+ <translation>POLYEDRE</translation>
</message>
<message>
- <source>ENTITY_TYPE_24</source>
- <translation>ボール</translation>
+ <source>ENTITY_TYPE_24</source>
+ <translation>QPOLYEDRE</translation>
+ </message>
+ <message>
+ <source>ENTITY_TYPE_25</source>
+ <translation>BALL</translation>
</message>
<message>
<source>GEOM_TYPE</source>