From 4ba3a2741af0df7ed38b47159cd77e15f5125d1d Mon Sep 17 00:00:00 2001 From: abn Date: Wed, 4 Jun 2014 09:14:06 +0200 Subject: [PATCH] checkDeepEquivalWith: simpler cell checking logic to account for redundant cells in a given mesh. --- src/MEDCoupling/MEDCouplingPointSet.cxx | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/MEDCoupling/MEDCouplingPointSet.cxx b/src/MEDCoupling/MEDCouplingPointSet.cxx index 70b2b533c..3e47bf108 100644 --- a/src/MEDCoupling/MEDCouplingPointSet.cxx +++ b/src/MEDCoupling/MEDCouplingPointSet.cxx @@ -1472,25 +1472,19 @@ void MEDCouplingPointSet::checkDeepEquivalWith(const MEDCouplingMesh *other, int // da=m->zipConnectivityTraducer(cellCompPol); int nbCells=getNumberOfCells(); + if (nbCells != other->getNumberOfCells()) + throw INTERP_KERNEL::Exception("checkDeepEquivalWith : some cells in other are not in this !"); int maxId=-1; int dan = da->getNumberOfTuples(); if (dan) { - if (dan & 1) - throw INTERP_KERNEL::Exception("checkDeepEquivalWith : some cells in other are not in this !"); MEDCouplingAutoRefCountObjectPtr da1 = DataArrayInt::New(), da2 = DataArrayInt::New(); da1->alloc(dan/2,1); da2->alloc(dan/2,1); std::copy(da->getConstPointer(), da->getConstPointer()+dan/2, da1->getPointer()); std::copy(da->getConstPointer()+dan/2, da->getConstPointer()+dan, da2->getPointer()); da1->sort(); da2->sort(); - if (*da1->getConstPointer() != *da2->getConstPointer()) + if (!da1->isEqualWithoutConsideringStr(*da2)) throw INTERP_KERNEL::Exception("checkDeepEquivalWith : some cells in other are not in this !"); - if (dan > 2) - { - MEDCouplingAutoRefCountObjectPtr dsi1 = da1->deltaShiftIndex(), dsi2 = da2->deltaShiftIndex(); - if (!(dsi1->isUniform(1) && dsi2->isUniform(1))) - throw INTERP_KERNEL::Exception("checkDeepEquivalWith : some cells in other are not in this !"); - } } MEDCouplingAutoRefCountObjectPtr cellCor2=da->selectByTupleId2(nbCells,da->getNbOfElems(),1); nodeCor=nodeCor2->isIdentity()?0:nodeCor2.retn(); -- 2.39.2