From defd690348276bc40d0b960c8b2b09899727307c Mon Sep 17 00:00:00 2001 From: eap Date: Tue, 27 Jun 2006 13:00:12 +0000 Subject: [PATCH] PAL12157. Make Dump() show info on quadratic elements --- src/SMESH/SMESH_Mesh.cxx | 96 ++++++++++++++++++++++------------------ 1 file changed, 52 insertions(+), 44 deletions(-) diff --git a/src/SMESH/SMESH_Mesh.cxx b/src/SMESH/SMESH_Mesh.cxx index bb88ca0bd..42500393d 100644 --- a/src/SMESH/SMESH_Mesh.cxx +++ b/src/SMESH/SMESH_Mesh.cxx @@ -1576,54 +1576,62 @@ const TopTools_ListOfShape& SMESH_Mesh::GetAncestors(const TopoDS_Shape& theS) c //======================================================================= ostream& SMESH_Mesh::Dump(ostream& save) { - save << "========================== Dump contents of mesh ==========================" << endl; - save << "1) Total number of nodes: " << NbNodes() << endl; - save << "2) Total number of edges: " << NbEdges() << endl; - save << "3) Total number of faces: " << NbFaces() << endl; - if ( NbFaces() > 0 ) { - int nb3 = NbTriangles(); - int nb4 = NbQuadrangles(); - save << "3.1.) Number of triangles: " << nb3 << endl; - save << "3.2.) Number of quadrangles: " << nb4 << endl; - if ( nb3 + nb4 != NbFaces() ) { - map myFaceMap; - SMDS_FaceIteratorPtr itFaces=_myMeshDS->facesIterator(); - while( itFaces->more( ) ) { - int nbNodes = itFaces->next()->NbNodes(); - if ( myFaceMap.find( nbNodes ) == myFaceMap.end() ) - myFaceMap[ nbNodes ] = 0; - myFaceMap[ nbNodes ] = myFaceMap[ nbNodes ] + 1; + int clause = 0; + save << "========================== Dump contents of mesh ==========================" << endl << endl; + save << ++clause << ") Total number of nodes: " << NbNodes() << endl << endl; + for ( int isQuadratic = 0; isQuadratic < 2; ++isQuadratic ) + { + string orderStr = isQuadratic ? "quadratic" : "linear"; + ElementOrder order = isQuadratic ? ORDER_QUADRATIC : ORDER_LINEAR; + + save << ++clause << ") Total number of " << orderStr << " edges: " << NbEdges(order) << endl; + save << ++clause << ") Total number of " << orderStr << " faces: " << NbFaces(order) << endl; + if ( NbFaces(order) > 0 ) { + int nb3 = NbTriangles(order); + int nb4 = NbQuadrangles(order); + save << clause << ".1.) Number of " << orderStr << " triangles: " << nb3 << endl; + save << clause << ".2.) Number of " << orderStr << " quadrangles: " << nb4 << endl; + if ( nb3 + nb4 != NbFaces(order) ) { + map myFaceMap; + SMDS_FaceIteratorPtr itFaces=_myMeshDS->facesIterator(); + while( itFaces->more( ) ) { + int nbNodes = itFaces->next()->NbNodes(); + if ( myFaceMap.find( nbNodes ) == myFaceMap.end() ) + myFaceMap[ nbNodes ] = 0; + myFaceMap[ nbNodes ] = myFaceMap[ nbNodes ] + 1; + } + save << clause << ".3.) Faces in detail: " << endl; + map ::iterator itF; + for (itF = myFaceMap.begin(); itF != myFaceMap.end(); itF++) + save << "--> nb nodes: " << itF->first << " - nb elemens: " << itF->second << endl; } - save << "3.3.) Faces in detail: " << endl; - map ::iterator itF; - for (itF = myFaceMap.begin(); itF != myFaceMap.end(); itF++) - save << "--> nb nodes: " << itF->first << " - nb elemens: " << itF->second << endl; } - } - save << "4) Total number of volumes: " << NbVolumes() << endl; - if ( NbVolumes() > 0 ) { - int nb8 = NbHexas(); - int nb4 = NbTetras(); - int nb5 = NbPyramids(); - int nb6 = NbPrisms(); - save << "4.1.) Number of hexahedrons: " << nb8 << endl; - save << "4.2.) Number of tetrahedrons: " << nb4 << endl; - save << "4.3.) Number of prisms: " << nb6 << endl; - save << "4.4.) Number of pyramides: " << nb5 << endl; - if ( nb8 + nb4 + nb5 + nb6 != NbVolumes() ) { - map myVolumesMap; - SMDS_VolumeIteratorPtr itVolumes=_myMeshDS->volumesIterator(); - while( itVolumes->more( ) ) { - int nbNodes = itVolumes->next()->NbNodes(); - if ( myVolumesMap.find( nbNodes ) == myVolumesMap.end() ) - myVolumesMap[ nbNodes ] = 0; - myVolumesMap[ nbNodes ] = myVolumesMap[ nbNodes ] + 1; + save << ++clause << ") Total number of " << orderStr << " volumes: " << NbVolumes(order) << endl; + if ( NbVolumes(order) > 0 ) { + int nb8 = NbHexas(order); + int nb4 = NbTetras(order); + int nb5 = NbPyramids(order); + int nb6 = NbPrisms(order); + save << clause << ".1.) Number of " << orderStr << " hexahedrons: " << nb8 << endl; + save << clause << ".2.) Number of " << orderStr << " tetrahedrons: " << nb4 << endl; + save << clause << ".3.) Number of " << orderStr << " prisms: " << nb6 << endl; + save << clause << ".4.) Number of " << orderStr << " pyramides: " << nb5 << endl; + if ( nb8 + nb4 + nb5 + nb6 != NbVolumes(order) ) { + map myVolumesMap; + SMDS_VolumeIteratorPtr itVolumes=_myMeshDS->volumesIterator(); + while( itVolumes->more( ) ) { + int nbNodes = itVolumes->next()->NbNodes(); + if ( myVolumesMap.find( nbNodes ) == myVolumesMap.end() ) + myVolumesMap[ nbNodes ] = 0; + myVolumesMap[ nbNodes ] = myVolumesMap[ nbNodes ] + 1; + } + save << clause << ".5.) Volumes in detail: " << endl; + map ::iterator itV; + for (itV = myVolumesMap.begin(); itV != myVolumesMap.end(); itV++) + save << "--> nb nodes: " << itV->first << " - nb elemens: " << itV->second << endl; } - save << "4.5.) Volumes in detail: " << endl; - map ::iterator itV; - for (itV = myVolumesMap.begin(); itV != myVolumesMap.end(); itV++) - save << "--> nb nodes: " << itV->first << " - nb elemens: " << itV->second << endl; } + save << endl; } save << "===========================================================================" << endl; return save;