-// Copyright (C) 2007-2013 CEA/DEN, EDF R&D
+// Copyright (C) 2007-2014 CEA/DEN, EDF R&D
//
// 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.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
typedef std::vector<int> IndexVector;
//Class to store Gauss Points information
- class INTERPKERNEL_EXPORT GaussInfo
+ class GaussInfo
{
public:
- GaussInfo( NormalizedCellType theGeometry,
- const DataVector& theGaussCoord,
- int theNbGauss,
- const DataVector& theReferenceCoord,
- int theNbRef
- );
- ~GaussInfo();
+ INTERPKERNEL_EXPORT GaussInfo( NormalizedCellType theGeometry,
+ const DataVector& theGaussCoord,
+ int theNbGauss,
+ const DataVector& theReferenceCoord,
+ int theNbRef
+ );
+ INTERPKERNEL_EXPORT ~GaussInfo();
- NormalizedCellType getCellType() const;
+ INTERPKERNEL_EXPORT NormalizedCellType getCellType() const;
- int getGaussCoordDim() const;
- int getReferenceCoordDim() const;
+ INTERPKERNEL_EXPORT int getGaussCoordDim() const;
+ INTERPKERNEL_EXPORT int getReferenceCoordDim() const;
- int getNbGauss() const;
- int getNbRef() const;
+ INTERPKERNEL_EXPORT int getNbGauss() const;
+ INTERPKERNEL_EXPORT int getNbRef() const;
- const double* getFunctionValues( const int theGaussId ) const;
+ INTERPKERNEL_EXPORT const double* getFunctionValues( const int theGaussId ) const;
- void initLocalInfo() throw (INTERP_KERNEL::Exception);
+ INTERPKERNEL_EXPORT void initLocalInfo();
+
+ INTERPKERNEL_EXPORT static std::vector<double> NormalizeCoordinatesIfNecessary(NormalizedCellType ct, int inputDim, const std::vector<double>& inputArray);
protected:
bool isSatisfy();
-
+
+ void point1Init();
+
//1D
void seg2Init();
void seg3Init();
void tria3bInit();
void tria6aInit();
void tria6bInit();
+ void tria7aInit();
void quad4aInit();
+ static void Quad4aInit(GaussInfo& obj) { obj.quad4aInit(); }
void quad4bInit();
+ static void Quad4bInit(GaussInfo& obj) { obj.quad4bInit(); }
+ void quad4cInit();
+ static void Quad4cInit(GaussInfo& obj) { obj.quad4cInit(); }
+ void quad4DegSeg2Init();
+ static void Quad4DegSeg2Init(GaussInfo& obj) { obj.quad4DegSeg2Init(); }
void quad8aInit();
void quad8bInit();
+ void quad9aInit();
//3D
void tetra4aInit();
void pyra13bInit();
void penta6aInit();
+ static void Penta6aInit(GaussInfo& obj) { obj.penta6aInit(); }
void penta6bInit();
+ static void Penta6bInit(GaussInfo& obj) { obj.penta6bInit(); }
+ void penta6DegTria3aInit();
+ static void Penta6DegTria3aInit(GaussInfo& obj) { obj.penta6DegTria3aInit(); }
+ void penta6DegTria3bInit();
+ static void Penta6DegTria3bInit(GaussInfo& obj) { obj.penta6DegTria3bInit(); }
+
void penta15aInit();
+ static void Penta15aInit(GaussInfo& obj) { obj.penta15aInit(); }
void penta15bInit();
+ static void Penta15bInit(GaussInfo& obj) { obj.penta15bInit(); }
void hexa8aInit();
+ static void Hexa8aInit(GaussInfo& obj) { obj.hexa8aInit(); }
void hexa8bInit();
+ static void Hexa8bInit(GaussInfo& obj) { obj.hexa8bInit(); }
+ void hexa8DegQuad4aInit();
+ static void Hexa8DegQuad4aInit(GaussInfo& obj) { obj.hexa8DegQuad4aInit(); }
+ void hexa8DegQuad4bInit();
+ static void Hexa8DegQuad4bInit(GaussInfo& obj) { obj.hexa8DegQuad4bInit(); }
+ void hexa8DegQuad4cInit();
+ static void Hexa8DegQuad4cInit(GaussInfo& obj) { obj.hexa8DegQuad4cInit(); }
void hexa20aInit();
void hexa20bInit();
-
+ void hexa27aInit();
private:
//INFORMATION from MEDMEM
//Class for calculation of the coordinates of the gauss points
- class INTERPKERNEL_EXPORT GaussCoords
+ class GaussCoords
{
public:
- GaussCoords();
- ~GaussCoords();
-
- void addGaussInfo( NormalizedCellType theGeometry,
- int coordDim,
- const double* theGaussCoord,
- int theNbGauss,
- const double* theReferenceCoord,
- int theNbRef) throw (INTERP_KERNEL::Exception);
-
- double* calculateCoords( NormalizedCellType theGeometry,
- const double* theNodeCoords,
- const int theSpaceDim,
- const int* theIndex) throw(INTERP_KERNEL::Exception);
-
- void calculateCoords( NormalizedCellType theGeometry,
- const double* theNodeCoords,
- const int theSpaceDim,
- const int* theIndex,
- double *result) throw(INTERP_KERNEL::Exception);
+ INTERPKERNEL_EXPORT GaussCoords();
+ INTERPKERNEL_EXPORT ~GaussCoords();
+
+ INTERPKERNEL_EXPORT void addGaussInfo( NormalizedCellType theGeometry,
+ int coordDim,
+ const double* theGaussCoord,
+ int theNbGauss,
+ const double* theReferenceCoord,
+ int theNbRef);
+
+ INTERPKERNEL_EXPORT double* calculateCoords( NormalizedCellType theGeometry,
+ const double* theNodeCoords,
+ const int theSpaceDim,
+ const int* theIndex);
+
+ INTERPKERNEL_EXPORT void calculateCoords( NormalizedCellType theGeometry,
+ const double* theNodeCoords,
+ const int theSpaceDim,
+ const int* theIndex,
+ double *result);
private:
const GaussInfo *getInfoGivenCellType(NormalizedCellType cellType);
void calculateCoordsAlg(const GaussInfo *info, const double* theNodeCoords, const int theSpaceDim, const int *theIndex,