--- /dev/null
+# Copyright (C) 2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+SET(docdir ${CMAKE_INSTALL_PREFIX}/share/doc/salome)
+FILE(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/*.py")
+INSTALL(FILES ${files} DESTINATION ${docdir}/examples/SMESH)
+
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
// SMESH DriverMED : driver to read and write 'med' files
// File : DriverMED_R_SMESHDS_Mesh.cxx
// Module : SMESH
-//
+
#include "DriverMED_R_SMESHDS_Mesh.h"
#include "SMESHDS_Mesh.hxx"
#include "utilities.h"
#include "MED_CoordUtils.hxx"
#include "MED_Utilities.hxx"
+#include <NCollection_Map.hxx>
+
#include <stdlib.h>
#ifdef _DEBUG_
::Perform()
{
Status aResult = DRS_FAIL;
- bool isDescConn = false;
+ bool isDescConn = false; // Mantis issue 0020483
#ifndef _DEXCEPT_
try{
#endif
}
// Are there any MED cells in descending connectivity
+ // Mantis issue 0020483
//---------------------------------------------------
+ NCollection_Map<EEntiteMaillage> aDescendingEntitiesMap;
if (!isDescConn) {
MED::TEntityInfo aEntityInfoDesc = aMed->GetEntityInfo(aMeshInfo, eDESC);
MED::TEntityInfo::iterator anEntityIterDesc = aEntityInfoDesc.begin();
- for (; anEntityIterDesc != aEntityInfoDesc.end() && !isDescConn; anEntityIterDesc++) {
+ //for (; anEntityIterDesc != aEntityInfoDesc.end() && !isDescConn; anEntityIterDesc++) {
+ for (; anEntityIterDesc != aEntityInfoDesc.end(); anEntityIterDesc++) {
const EEntiteMaillage& anEntity = anEntityIterDesc->first;
- if (anEntity != eNOEUD) isDescConn = true;
+ aDescendingEntitiesMap.Add(anEntity);
+ //if (anEntity != eNOEUD) isDescConn = true;
}
}
MED::TEntityInfo::iterator anEntityIter = aEntityInfo.begin();
for (; anEntityIter != aEntityInfo.end(); anEntityIter++) {
const EEntiteMaillage& anEntity = anEntityIter->first;
+ aDescendingEntitiesMap.Remove(anEntity); // Mantis issue 0020483
if (anEntity == eNOEUD) continue;
// Reading MED cells to the corresponding SMDS structure
//------------------------------------------------------
}}
}
}
- }
- }
+ if (aDescendingEntitiesMap.Extent()) isDescConn = true; // Mantis issue 0020483
+ } // for(int iMesh = 0; iMesh < aNbMeshes; iMesh++)
+ } // if aNbMeshes
#ifndef _DEXCEPT_
}catch(const std::exception& exc){
INFOS("The following exception was caught:\n\t"<<exc.what());
if (myMesh)
myMesh->compactMesh();
+ // Mantis issue 0020483
if (aResult == DRS_OK && isDescConn) {
INFOS("There are some elements in descending connectivity in med file. They were not read !!!");
aResult = DRS_WARN_DESCENDING;
aMeshNames.push_back(aMeshInfo->GetName());
}
}
- }catch(const std::exception& exc){
+ } catch(const std::exception& exc) {
INFOS("Following exception was caught:\n\t"<<exc.what());
theStatus = DRS_FAIL;
- }catch(...){
+ } catch(...) {
INFOS("Unknown exception was caught !!!");
theStatus = DRS_FAIL;
}
myGrid->Initialize();
myGrid->Allocate();
vtkPoints* points = vtkPoints::New();
- // rnv: to fix bug "21125: EDF 1233 SMESH: Degrardation of precision in a test case for quadratic conversion"
- // using double type for storing coordinates of nodes instead float.
+ // bug "21125: EDF 1233 SMESH: Degrardation of precision in a test case for quadratic conversion"
+ // Use double type for storing coordinates of nodes instead of float.
points->SetDataType(VTK_DOUBLE);
- points->SetNumberOfPoints(SMDS_Mesh::chunkSize);
+ points->SetNumberOfPoints(0 /*SMDS_Mesh::chunkSize*/);
myGrid->SetPoints( points );
points->Delete();
myGrid->BuildLinks();
*/
//================================================================================
+ const double a14divPI = 14. / M_PI;
+
+
+ inline double segLength(double S0, double edgeLen, double minLen )
+ {
+ // PAL10237
+ // S = S0 * f(L/Lmin) where f(x) = 1 + (2/Pi * 7 * atan(x/5) )
+
+ // =>
+ // S = S0 * ( 1 + 14/PI * atan( L / ( 5 * Lmin )))
+ return S0 * ( 1. + a14divPI * atan( edgeLen / ( 5 * minLen )));
+ }
+#if 0
//const double a14divPI = 14. / M_PI;
const double a2div7divPI = 2. / 7. / M_PI;
const double Lratio = edgeLen / minLen;
return S0 * ( 1. + a2div7divPI * Lratio * atan( 5 * Lratio ));
}
-
+#endif
//================================================================================
/*!
* \brief Compute segment length for all edges