]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
*** empty log message ***
authorageay <ageay>
Mon, 2 Aug 2010 05:48:00 +0000 (05:48 +0000)
committerageay <ageay>
Mon, 2 Aug 2010 05:48:00 +0000 (05:48 +0000)
18 files changed:
src/MEDCoupling/MEDCouplingCMesh.cxx
src/MEDCoupling/MEDCouplingCMesh.hxx
src/MEDCoupling/MEDCouplingExtrudedMesh.cxx
src/MEDCoupling/MEDCouplingExtrudedMesh.hxx
src/MEDCoupling/MEDCouplingField.cxx
src/MEDCoupling/MEDCouplingField.hxx
src/MEDCoupling/MEDCouplingFieldDiscretization.cxx
src/MEDCoupling/MEDCouplingFieldDiscretization.hxx
src/MEDCoupling/MEDCouplingGaussLocalization.cxx
src/MEDCoupling/MEDCouplingGaussLocalization.hxx
src/MEDCoupling/MEDCouplingMesh.hxx
src/MEDCoupling/MEDCouplingUMesh.cxx
src/MEDCoupling/MEDCouplingUMesh.hxx
src/MEDCoupling/MEDCouplingUMeshDesc.cxx
src/MEDCoupling/MEDCouplingUMeshDesc.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest1.cxx
src/MEDCoupling_Swig/MEDCouplingBasicsTest.py
src/MEDLoader/Swig/libMEDLoader_Swig.i

index 2daaaf319e3d40e6a32a084ab1bc331800482c40..452a3bf8426b850ed67bcb807b2d60514970b9bd 100644 (file)
@@ -204,6 +204,27 @@ INTERP_KERNEL::NormalizedCellType MEDCouplingCMesh::getTypeOfCell(int cellId) co
     }
 }
 
+int MEDCouplingCMesh::getNumberOfCellsWithType(INTERP_KERNEL::NormalizedCellType type) const
+{
+  int ret=getNumberOfCells();
+  int dim=getMeshDimension();
+  switch(type)
+    {
+    case INTERP_KERNEL::NORM_HEXA8:
+      if(dim==3)
+        return ret;
+    case INTERP_KERNEL::NORM_QUAD4:
+      if(dim==2)
+      return ret;
+    case INTERP_KERNEL::NORM_SEG2:
+      if(dim==1)
+        return ret;
+    default:
+      throw INTERP_KERNEL::Exception("Unexpected dimension for MEDCouplingCMesh::getTypeOfCell !");
+    }
+  return 0;
+}
+
 void MEDCouplingCMesh::getNodeIdsOfCell(int cellId, std::vector<int>& conn) const
 {
   //not implemented yet
index 2135599436d6c28362ed596f7aca58d9817e0e08..e70dce3cd2494996c6bc98449b7330cb369030de 100644 (file)
@@ -44,6 +44,7 @@ namespace ParaMEDMEM
     int getNodeIdFromPos(int i, int j, int k) const;
     static void getPosFromId(int nodeId, int spaceDim, const int *split, int *res);
     INTERP_KERNEL::NormalizedCellType getTypeOfCell(int cellId) const;
+    int getNumberOfCellsWithType(INTERP_KERNEL::NormalizedCellType type) const;
     void getNodeIdsOfCell(int cellId, std::vector<int>& conn) const;
     void getCoordinatesOfNode(int nodeId, std::vector<double>& coo) const;
     DataArrayDouble *getCoordsAt(int i) const throw(INTERP_KERNEL::Exception);
index ac3d596072ffdd04d929cdaf46657a99725ae51c..928edc0c34bb9a1aa68a7fd6dbd11f6c0a546817 100644 (file)
@@ -154,6 +154,19 @@ INTERP_KERNEL::NormalizedCellType MEDCouplingExtrudedMesh::getTypeOfCell(int cel
   return INTERP_KERNEL::CellModel::getCellModel(tmp).getExtrudedType();
 }
 
+int MEDCouplingExtrudedMesh::getNumberOfCellsWithType(INTERP_KERNEL::NormalizedCellType type) const
+{
+  int ret=0;
+  int nbOfCells2D=_mesh2D->getNumberOfCells();
+  for(int i=0;i<nbOfCells2D;i++)
+    {
+      INTERP_KERNEL::NormalizedCellType t=_mesh2D->getTypeOfCell(i);
+      if(INTERP_KERNEL::CellModel::getCellModel(t).getExtrudedType()==type)
+        ret++;
+    }
+  return ret*_mesh1D->getNumberOfCells();
+}
+
 void MEDCouplingExtrudedMesh::getNodeIdsOfCell(int cellId, std::vector<int>& conn) const
 {
   int nbOfCells2D=_mesh2D->getNumberOfCells();
index 901f66d1410ecd5a632493bd4389e48284456c6f..559831fbc80c7aa4146bbf93fc6678fcfa731fbc 100644 (file)
@@ -46,6 +46,7 @@ namespace ParaMEDMEM
     MEDCouplingExtrudedMesh *clone(bool recDeepCpy) const;
     bool isEqual(const MEDCouplingMesh *other, double prec) const;
     INTERP_KERNEL::NormalizedCellType getTypeOfCell(int cellId) const;
+    int getNumberOfCellsWithType(INTERP_KERNEL::NormalizedCellType type) const;
     void getNodeIdsOfCell(int cellId, std::vector<int>& conn) const;
     void getCoordinatesOfNode(int nodeId, std::vector<double>& coo) const;
     void checkCoherency() const throw (INTERP_KERNEL::Exception);
index bc300e0254922b1d1bfb66624873036141de9184..c8d23335e2a56ede5c5fcc86034d020b7533fec8 100644 (file)
@@ -132,6 +132,18 @@ MEDCouplingGaussLocalization& MEDCouplingField::getGaussLocalization(int locId)
   return _type->getGaussLocalization(locId);
 }
 
+/*!
+ * This method returns reference to the Gauss localization object corresponding to 'locId' id.
+ * This method throws an exception if there is no mesh, invalid FieldDescription (different from Gauss) and if several localization ids have been found
+ * for a type.
+ */
+int MEDCouplingField::getGaussLocalizationIdOfOneType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception)
+{
+  if(!_mesh)
+    throw INTERP_KERNEL::Exception("Mesh has to be set before calling getGaussLocalizationIdOfOneType method !");
+  return _type->getGaussLocalizationIdOfOneType(type);
+}
+
 /*!
  * This method returns number of Gauss localization available. Implicitely all ids in [0,getNbOfGaussLocalization()) is a valid Gauss localisation id.
  * This method throws an exception if there is no mesh, invalid FieldDescription (different from Gauss)
index e915a1f918371944aa5ca55a802b1b9a11f4483a..4a8f72ecc14f919ee1a772131763c0c0a0181327 100644 (file)
@@ -58,6 +58,7 @@ namespace ParaMEDMEM
                                      const std::vector<double>& gsCoo, const std::vector<double>& wg) throw(INTERP_KERNEL::Exception);
     void clearGaussLocalizations();
     MEDCouplingGaussLocalization& getGaussLocalization(int locId) throw(INTERP_KERNEL::Exception);
+    int getGaussLocalizationIdOfOneType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception);
     int getNbOfGaussLocalization() const throw(INTERP_KERNEL::Exception);
     int getGaussLocalizationIdOfOneCell(int cellId) const throw(INTERP_KERNEL::Exception);
     void getCellIdsHavingGaussLocalization(int locId, std::vector<int>& cellIds) const throw(INTERP_KERNEL::Exception);
index 4d8a0d0fdcd07e1ddbf7f1e8c6fc4c43ba067a92..62b69dc0ed82d68da3ec6e3d7fb70df04bb698f0 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "InterpolationUtils.hxx"
 
+#include <set>
 #include <limits>
 #include <algorithm>
 #include  <functional>
@@ -154,6 +155,11 @@ int MEDCouplingFieldDiscretization::getGaussLocalizationIdOfOneCell(int cellId)
   throw INTERP_KERNEL::Exception("Invalid method for the corresponding field discretization : available only for GaussPoint discretization !");
 }
 
+int MEDCouplingFieldDiscretization::getGaussLocalizationIdOfOneType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception)
+{
+  throw INTERP_KERNEL::Exception("Invalid method for the corresponding field discretization : available only for GaussPoint discretization !");
+}
+
 void MEDCouplingFieldDiscretization::getCellIdsHavingGaussLocalization(int locId, std::vector<int>& cellIds) const throw(INTERP_KERNEL::Exception)
 {
   throw INTERP_KERNEL::Exception("Invalid method for the corresponding field discretization : available only for GaussPoint discretization !");
@@ -666,6 +672,7 @@ void MEDCouplingFieldDiscretizationGauss::setGaussLocalizationOnType(const MEDCo
   for(int i=0;i<nbCells;i++)
     if(m->getTypeOfCell(i)==type)
       ptr[i]=id;
+  zipGaussLocalizations();
 }
 
 void MEDCouplingFieldDiscretizationGauss::setGaussLocalizationOnCells(const MEDCouplingMesh *m, const int *begin, const int *end, const std::vector<double>& refCoo,
@@ -691,6 +698,7 @@ void MEDCouplingFieldDiscretizationGauss::setGaussLocalizationOnCells(const MEDC
     ptr[*w2]=id;
   //
   _loc.push_back(elt);
+  zipGaussLocalizations();
 }
 
 void MEDCouplingFieldDiscretizationGauss::clearGaussLocalizations() throw(INTERP_KERNEL::Exception)
@@ -724,6 +732,22 @@ int MEDCouplingFieldDiscretizationGauss::getGaussLocalizationIdOfOneCell(int cel
   return locId;
 }
 
+int MEDCouplingFieldDiscretizationGauss::getGaussLocalizationIdOfOneType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception)
+{
+  if(!_discr_per_cell)
+    throw INTERP_KERNEL::Exception("No Gauss localization still set !");
+  std::set<int> ret;
+  int id=0;
+  for(std::vector<MEDCouplingGaussLocalization>::const_iterator iter=_loc.begin();iter!=_loc.end();iter++,id++)
+    if((*iter).getType()==type)
+      ret.insert(id);
+  if(ret.empty())
+    throw INTERP_KERNEL::Exception("No gauss discretization found for the specified type !");
+  if(ret.size()>1)
+    throw INTERP_KERNEL::Exception("Several gauss discretizations have been found for the specified type !");
+  return *ret.begin();
+}
+
 void MEDCouplingFieldDiscretizationGauss::getCellIdsHavingGaussLocalization(int locId, std::vector<int>& cellIds) const throw(INTERP_KERNEL::Exception)
 {
   if(locId<0 || locId>=_loc.size())
@@ -756,6 +780,41 @@ int MEDCouplingFieldDiscretizationGauss::getOffsetOfCell(int cellId) const throw
   return ret;
 }
 
+/*!
+ * This method makes the assumption that _discr_per_cell is set.
+ * This method reduces as much as possible number size of _loc.
+ * This method is usefull when several set on same cells has been done and that some Gauss Localization are no more used.
+ */
+void MEDCouplingFieldDiscretizationGauss::zipGaussLocalizations()
+{
+  const int *start=_discr_per_cell->getConstPointer();
+  int nbOfTuples=_discr_per_cell->getNumberOfTuples();
+  int *tmp=new int[_loc.size()];
+  std::fill(tmp,tmp+_loc.size(),-2);
+  for(const int *w=start;w!=start+nbOfTuples;w++)
+    if(*w>=0)
+      tmp[*w]=1;
+  int fid=0;
+  for(int i=0;i<_loc.size();i++)
+    if(tmp[i]!=-2)
+      tmp[i]=fid++;
+  if(fid==_loc.size())
+    {//no zip needed
+      delete [] tmp;
+      return;
+    }
+  // zip needed
+  int *start2=_discr_per_cell->getPointer();
+  for(int *w2=start2;w2!=start2+nbOfTuples;w2++)
+    *w2=tmp[*w2];
+  std::vector<MEDCouplingGaussLocalization> tmpLoc;
+  for(int i=0;i<_loc.size();i++)
+    if(tmp[i]!=-2)
+      tmpLoc.push_back(_loc[tmp[i]]);
+  delete [] tmp;
+  _loc=tmpLoc;
+}
+
 MEDCouplingFieldDiscretizationGaussNE::MEDCouplingFieldDiscretizationGaussNE()
 {
 }
index 057f4d74135ee98ced700f3896fe97111f7c8b8e..ae98cef796058cde27f0f4002ac85f4b867fc79a 100644 (file)
@@ -67,6 +67,7 @@ namespace ParaMEDMEM
     virtual MEDCouplingGaussLocalization& getGaussLocalization(int locId) throw(INTERP_KERNEL::Exception);
     virtual int getNbOfGaussLocalization() const throw(INTERP_KERNEL::Exception);
     virtual int getGaussLocalizationIdOfOneCell(int cellId) const throw(INTERP_KERNEL::Exception);
+    virtual int getGaussLocalizationIdOfOneType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception);
     virtual void getCellIdsHavingGaussLocalization(int locId, std::vector<int>& cellIds) const throw(INTERP_KERNEL::Exception);
     virtual const MEDCouplingGaussLocalization& getGaussLocalization(int locId) const throw(INTERP_KERNEL::Exception);
     virtual ~MEDCouplingFieldDiscretization();
@@ -169,10 +170,12 @@ namespace ParaMEDMEM
     MEDCouplingGaussLocalization& getGaussLocalization(int locId) throw(INTERP_KERNEL::Exception);
     int getNbOfGaussLocalization() const throw(INTERP_KERNEL::Exception);
     int getGaussLocalizationIdOfOneCell(int cellId) const throw(INTERP_KERNEL::Exception);
+    int getGaussLocalizationIdOfOneType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception);
     void getCellIdsHavingGaussLocalization(int locId, std::vector<int>& cellIds) const throw(INTERP_KERNEL::Exception);
     const MEDCouplingGaussLocalization& getGaussLocalization(int locId) const throw(INTERP_KERNEL::Exception);
   protected:
     MEDCouplingFieldDiscretizationGauss(const MEDCouplingFieldDiscretizationGauss& other);
+    void zipGaussLocalizations();
     int getOffsetOfCell(int cellId) const throw(INTERP_KERNEL::Exception);
     void checkLocalizationId(int locId) const throw(INTERP_KERNEL::Exception);
   public:
index 2b0eb984e4759e5947ec3d692771cb6553d7397b..ed67b8498bdfed073a829e95c9aa554ea86d3db9 100644 (file)
@@ -88,7 +88,7 @@ bool ParaMEDMEM::MEDCouplingGaussLocalization::isEqual(const MEDCouplingGaussLoc
   return true;
 }
 
-double ParaMEDMEM::MEDCouplingGaussLocalization::getRefCoords(int ptIdInCell, int comp) const throw(INTERP_KERNEL::Exception)
+double ParaMEDMEM::MEDCouplingGaussLocalization::getRefCoord(int ptIdInCell, int comp) const throw(INTERP_KERNEL::Exception)
 {
   const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::getCellModel(_type);
   int nbNodes=cm.getNumberOfNodes();
@@ -158,7 +158,7 @@ const double *ParaMEDMEM::MEDCouplingGaussLocalization::fillWithValues(const dou
  * This method sets the comp_th component of ptIdInCell_th point coordinate of reference element of type this->_type.
  * @throw if not 0<=ptIdInCell<nbOfNodePerCell or if not 0<=comp<dim
  */
-void ParaMEDMEM::MEDCouplingGaussLocalization::setRefCoords(int ptIdInCell, int comp, double newVal) throw(INTERP_KERNEL::Exception)
+void ParaMEDMEM::MEDCouplingGaussLocalization::setRefCoord(int ptIdInCell, int comp, double newVal) throw(INTERP_KERNEL::Exception)
 {
   const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::getCellModel(_type);
   int nbNodes=cm.getNumberOfNodes();
index afed3ee7c13a235028378d328f9817d3db063a7f..708d2ae1f95f1afa4bb66888a49d95685195c5ac 100644 (file)
@@ -44,10 +44,13 @@ namespace ParaMEDMEM
     void pushTinySerializationDblInfo(std::vector<double>& tinyInfo) const;
     const double *fillWithValues(const double *vals);
     //
-    double getRefCoords(int ptIdInCell, int comp) const throw(INTERP_KERNEL::Exception);
+    const std::vector<double>& getRefCoords() const { return _ref_coord; }
+    double getRefCoord(int ptIdInCell, int comp) const throw(INTERP_KERNEL::Exception);
+    const std::vector<double>& getGaussCoords() const { return _gauss_coord; }
     double getGaussCoord(int gaussPtIdInCell, int comp) const throw(INTERP_KERNEL::Exception);
+    const std::vector<double>& getWeights() const { return _weight; }
     double getWeight(int gaussPtIdInCell, double newVal) const throw(INTERP_KERNEL::Exception);
-    void setRefCoords(int ptIdInCell, int comp, double newVal) throw(INTERP_KERNEL::Exception);
+    void setRefCoord(int ptIdInCell, int comp, double newVal) throw(INTERP_KERNEL::Exception);
     void setGaussCoord(int gaussPtIdInCell, int comp, double newVal) throw(INTERP_KERNEL::Exception);
     void setWeight(int gaussPtIdInCell, double newVal) throw(INTERP_KERNEL::Exception);
     //
index 9f464787d46d330b6952d190240c2cd07697b4e7..44f1a73d740eb306f9b50f56638cf5a074853711 100644 (file)
@@ -57,6 +57,7 @@ namespace ParaMEDMEM
     virtual int getMeshDimension() const = 0;
     virtual DataArrayDouble *getCoordinatesAndOwner() const = 0;
     virtual DataArrayDouble *getBarycenterAndOwner() const = 0;
+    virtual int getNumberOfCellsWithType(INTERP_KERNEL::NormalizedCellType type) const = 0;
     virtual INTERP_KERNEL::NormalizedCellType getTypeOfCell(int cellId) const = 0;
     virtual void getNodeIdsOfCell(int cellId, std::vector<int>& conn) const = 0;
     virtual void getCoordinatesOfNode(int nodeId, std::vector<double>& coo) const = 0;
index 26f5389429c7374074724b837aae921f92cc4ffc..7c046c06c664b96151190d0dff171717d6edae57 100644 (file)
@@ -28,6 +28,7 @@
 
 #include <sstream>
 #include <numeric>
+#include <cstring>
 #include <limits>
 #include <list>
 
@@ -974,6 +975,21 @@ INTERP_KERNEL::NormalizedCellType MEDCouplingUMesh::getTypeOfCell(int cellId) co
   return (INTERP_KERNEL::NormalizedCellType) pt[ptI[cellId]];
 }
 
+/*!
+ * Returns nb of cells having the geometric type 'type'.
+ */
+int MEDCouplingUMesh::getNumberOfCellsWithType(INTERP_KERNEL::NormalizedCellType type) const
+{
+  const int *ptI=_nodal_connec_index->getConstPointer();
+  const int *pt=_nodal_connec->getConstPointer();
+  int nbOfCells=getNumberOfCells();
+  int ret=0;
+  for(int i=0;i<nbOfCells;i++)
+    if((INTERP_KERNEL::NormalizedCellType) pt[ptI[i]]==type)
+      ret++;
+  return ret;
+}
+
 /*!
  * Appends the nodal connectivity in 'conn' of cell with id 'cellId'.
  */
@@ -1181,8 +1197,17 @@ MEDCouplingUMesh *MEDCouplingUMesh::buildPartOfMySelfKeepCoords(const int *start
 {
   checkFullyDefined();
   MEDCouplingUMesh *ret=MEDCouplingUMesh::New();
-  std::ostringstream stream; stream << PART_OF_NAME << getName();
-  ret->setName(stream.str().c_str());
+  std::string name(getName());
+  int sz=strlen(PART_OF_NAME);
+  if(name.length()>=sz)
+    name=name.substr(0,sz);
+  if(name!=PART_OF_NAME)
+    {
+      std::ostringstream stream; stream << PART_OF_NAME << getName();
+      ret->setName(stream.str().c_str());
+    }
+  else
+    ret->setName(getName());
   ret->_mesh_dim=_mesh_dim;
   ret->setCoords(_coords);
   int nbOfElemsRet=end-start;
index f3fdf9a7766069cef2b8a4ec0eef73c88ffbc4e6..04d4bb6910b58f696ecd33777b791ce0e476966e 100644 (file)
@@ -47,6 +47,7 @@ namespace ParaMEDMEM
     MEDCOUPLING_EXPORT DataArrayInt *getNodalConnectivity() const { return _nodal_connec; }
     MEDCOUPLING_EXPORT DataArrayInt *getNodalConnectivityIndex() const { return _nodal_connec_index; }
     MEDCOUPLING_EXPORT INTERP_KERNEL::NormalizedCellType getTypeOfCell(int cellId) const;
+    MEDCOUPLING_EXPORT int getNumberOfCellsWithType(INTERP_KERNEL::NormalizedCellType type) const;
     MEDCOUPLING_EXPORT void getNodeIdsOfCell(int cellId, std::vector<int>& conn) const;
     MEDCOUPLING_EXPORT void getCoordinatesOfNode(int nodeId, std::vector<double>& coo) const;
     MEDCOUPLING_EXPORT int getNumberOfNodesInCell(int cellId) const;
index 29f1e58e3c1d8bb242fb31b9375b665b1f7a51fc..77a8c72579c17e86bb856db064167cd1720e23fe 100644 (file)
@@ -107,6 +107,18 @@ INTERP_KERNEL::NormalizedCellType MEDCouplingUMeshDesc::getTypeOfCell(int cellId
   return (INTERP_KERNEL::NormalizedCellType)desc_connec[desc_connec_index[cellId]+1];
 }
 
+int MEDCouplingUMeshDesc::getNumberOfCellsWithType(INTERP_KERNEL::NormalizedCellType type) const
+{
+  const int *desc_connec=_desc_connec->getConstPointer();
+  const int *desc_connec_index=_desc_connec_index->getConstPointer();
+  int nbOfCells=getNumberOfCells();
+  int ret=0;
+  for(int i=0;i<nbOfCells;i++)
+    if((INTERP_KERNEL::NormalizedCellType) desc_connec[desc_connec_index[i]]==type)
+      ret++;
+  return ret;
+}
+
 void MEDCouplingUMeshDesc::getNodeIdsOfCell(int cellId, std::vector<int>& conn) const
 {
   //not implemented yet.
index 91ce649ed75a0f4fd76dc675a5c25a7726136e82..b69645c20d28f66fd28acdba3cfb1dde134bad19 100644 (file)
@@ -41,6 +41,7 @@ namespace ParaMEDMEM
     MEDCOUPLING_EXPORT int getFaceMeshLength() const;
     MEDCOUPLING_EXPORT int getMeshDimension() const { return _mesh_dim; }
     MEDCOUPLING_EXPORT INTERP_KERNEL::NormalizedCellType getTypeOfCell(int cellId) const;
+    MEDCOUPLING_EXPORT int getNumberOfCellsWithType(INTERP_KERNEL::NormalizedCellType type) const;
     MEDCOUPLING_EXPORT void getNodeIdsOfCell(int cellId, std::vector<int>& conn) const;
     MEDCOUPLING_EXPORT void getCoordinatesOfNode(int nodeId, std::vector<double>& coo) const;
     MEDCOUPLING_EXPORT MEDCouplingMeshType getType() const { return UNSTRUCTURED_DESC; }
index 3ce905d5e0897eac1a813aa7302bd21f6c633075..09e9401e785ea26e7e75c0052d482e8852ca07c2 100644 (file)
@@ -604,7 +604,12 @@ void MEDCouplingBasicsTest::testBuildPartOfMySelf()
   CPPUNIT_ASSERT_EQUAL(4,subMesh->getNodalConnectivityIndex()->getNbOfElems());
   CPPUNIT_ASSERT(std::equal(subConn2,subConn2+14,subMesh->getNodalConnectivity()->getPointer()));
   CPPUNIT_ASSERT(std::equal(subConnIndex2,subConnIndex2+4,subMesh->getNodalConnectivityIndex()->getPointer()));
+  const int tab3[3]={0,1,2};
+  MEDCouplingPointSet *subMeshSimple2=subMeshSimple->buildPartOfMySelf(tab3,tab3+3,true);
   subMesh->decrRef();
+  name=subMeshSimple2->getName();
+  CPPUNIT_ASSERT(name=="PartOf_Toto");
+  subMeshSimple2->decrRef();
   //
   mesh->decrRef();
 }
index dd70bbff524a91ec7168e71bf5d8cc87ef835ac4..dc4568624aea3984dc24a81b45c62d4515b41387 100644 (file)
@@ -385,6 +385,8 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         self.assertEqual(4,subMesh.getNodalConnectivityIndex().getNbOfElems());
         self.assertEqual(subConn2[0:14],subMesh.getNodalConnectivity().getValues());
         self.assertEqual(subConnIndex2[0:4],subMesh.getNodalConnectivityIndex().getValues());
+        subMesh=subMesh.buildPartOfMySelf(range(3),True);
+        self.assertEqual("PartOf_Toto",subMesh.getName());
         pass
     def testBuildPartOfMySelfNode(self):
         mesh=MEDCouplingDataForTest.build2DTargetMesh_1();
index 147334ac085b9c94ce4bba021390f981b12a5775..5229afa0323254c12a1d7de61cf0ea9213192db9 100644 (file)
 %newobject MEDLoader::ReadFieldDouble;
 %newobject MEDLoader::ReadFieldDoubleCell;
 %newobject MEDLoader::ReadFieldDoubleNode;
+%newobject MEDLoader::ReadFieldDoubleGauss;
+%newobject MEDLoader::ReadFieldDoubleGaussNE;
 
 class MEDLoader
 {
 public:
+  static void setEpsilonForNodeComp(double val);
+  static void setCompPolicyForCell(int val);
+  static void setTooLongStrPolicy(int val);
   static std::vector<std::string> GetMeshNames(const char *fileName);
   static std::vector<std::string> GetMeshGroupsNames(const char *fileName, const char *meshName);
   static std::vector<std::string> GetMeshFamilyNames(const char *fileName, const char *meshName);
@@ -97,6 +102,8 @@ public:
   static ParaMEDMEM::MEDCouplingFieldDouble *ReadFieldDouble(ParaMEDMEM::TypeOfField type, const char *fileName, const char *meshName, int meshDimRelToMax, const char *fieldName, int iteration, int order);
   static ParaMEDMEM::MEDCouplingFieldDouble *ReadFieldDoubleCell(const char *fileName, const char *meshName, int meshDimRelToMax, const char *fieldName, int iteration, int order);
   static ParaMEDMEM::MEDCouplingFieldDouble *ReadFieldDoubleNode(const char *fileName, const char *meshName, int meshDimRelToMax, const char *fieldName, int iteration, int order);
+  static ParaMEDMEM::MEDCouplingFieldDouble *ReadFieldDoubleGauss(const char *fileName, const char *meshName, int meshDimRelToMax, const char *fieldName, int iteration, int order);
+  static ParaMEDMEM::MEDCouplingFieldDouble *ReadFieldDoubleGaussNE(const char *fileName, const char *meshName, int meshDimRelToMax, const char *fieldName, int iteration, int order);
   static void WriteUMesh(const char *fileName, ParaMEDMEM::MEDCouplingUMesh *mesh, bool writeFromScratch);
   static void WriteField(const char *fileName, ParaMEDMEM::MEDCouplingFieldDouble *f, bool writeFromScratch);
   static void WriteFieldUsingAlreadyWrittenMesh(const char *fileName, ParaMEDMEM::MEDCouplingFieldDouble *f);