#include "OrientationInverter.hxx"
#include "InterpKernelException.hxx"
+#include "CellModel.hxx"
#include <sstream>
#include <algorithm>
using namespace INTERP_KERNEL;
+OrientationInverter *OrientationInverter::BuildInstanceFrom(NormalizedCellType gt)
+{
+ switch(gt)
+ {
+ case NORM_SEG2:
+ return new OrientationInverterSEG2;
+ case NORM_SEG3:
+ return new OrientationInverterSEG3;
+ case NORM_TRI3:
+ return new OrientationInverter2DLinear(3u);
+ case NORM_QUAD4:
+ return new OrientationInverter2DLinear(4u);
+ case NORM_POLYGON:
+ return new OrientationInverterPolygon;
+ case NORM_TRI6:
+ return new OrientationInverter2DQuadratic(6u);
+ case NORM_QUAD8:
+ return new OrientationInverter2DQuadratic(8u);
+ case NORM_QPOLYG:
+ return new OrientationInverterQPolygon;
+ case NORM_TETRA4:
+ return new OrientationInverterTetra4;
+ case NORM_PYRA5:
+ return new OrientationInverterPyra5;
+ case NORM_PENTA6:
+ return new OrientationInverter3DExtrusionLinear(6u);
+ case NORM_HEXA8:
+ return new OrientationInverter3DExtrusionLinear(8u);
+ case NORM_TETRA10:
+ return new OrientationInverterTetra10;
+ case NORM_PYRA13:
+ return new OrientationInverterPyra13;
+ case NORM_PENTA15:
+ return new OrientationInverter3DExtrusionQuadratic(15u);
+ case NORM_HEXA20:
+ return new OrientationInverter3DExtrusionQuadratic(20u);
+ default:
+ {
+ const CellModel& cm(CellModel::GetCellModel(gt));
+ std::ostringstream oss; oss << "OrientationInverter::BuildInstanceFrom : Sorry no inverter for geo type " << cm.getRepr() << " !";
+ throw INTERP_KERNEL::Exception(oss.str());
+ }
+ }
+}
+
void OrientationInverterChecker::check(int *beginPt, int *endPt) const
{
if(std::distance(beginPt,endPt)!=getNbNodes())