Skip to content
Snippets Groups Projects
Select Git revision
  • 02072bb8016024fe94733a1da54e1eb733e2193b
  • master default
  • cgnsUnstructured
  • partitioning
  • poppler
  • HighOrderBLCurving
  • gmsh_3_0_4
  • gmsh_3_0_3
  • gmsh_3_0_2
  • gmsh_3_0_1
  • gmsh_3_0_0
  • gmsh_2_16_0
  • gmsh_2_15_0
  • gmsh_2_14_1
  • gmsh_2_14_0
  • gmsh_2_13_2
  • gmsh_2_13_1
  • gmsh_2_12_0
  • gmsh_2_11_0
  • gmsh_2_10_1
  • gmsh_2_10_0
  • gmsh_2_9_3
  • gmsh_2_9_2
  • gmsh_2_9_1
  • gmsh_2_9_0
  • gmsh_2_8_6
26 results

quadratureRules.h

Blame
  • Forked from gmsh / gmsh
    Source project has a limited visibility.
    quadratureRules.h 1.88 KiB
    // Gmsh - Copyright (C) 1997-2013 C. Geuzaine, J.-F. Remacle
    //
    // See the LICENSE.txt file for license information. Please report all
    // bugs and problems to the public mailing list <gmsh@geuz.org>.
    //
    // Contributor(s):
    //   Eric Bechet
    //
    
    #ifndef _QUADRATURERULES_H_
    #define _QUADRATURERULES_H_
    
    #include "GaussIntegration.h"
    #include "MElement.h"
    
    class QuadratureBase
    {
      public :
      virtual ~QuadratureBase(){}
      virtual int getIntPoints(MElement *e, IntPt **GP) =0;
    };
    
    // For rigid contact no need of Gauss'integration
    // but to use clasical get function in term npts and IntPt are needed
    // so use a empty gaussQuadrature rule
    class QuadratureVoid : public QuadratureBase
    {
     public:
      QuadratureVoid() : QuadratureBase(){}
      ~QuadratureVoid(){}
      int getIntPoints(MElement *e, IntPt **GP){GP=NULL; return 0;}
    } ;
    
    class GaussQuadrature : public QuadratureBase
    {
     public :
      enum IntegCases {Other, Val, Grad, ValVal, GradGrad};
     private :
      int order;
      IntegCases info;
     public :
      GaussQuadrature(int order_ = 0) : order(order_), info(Other) {}
      GaussQuadrature(IntegCases info_) : order(0), info(info_) {}
      virtual ~GaussQuadrature(){}
      virtual int getIntPoints(MElement *e, IntPt **GP)
      {
        int integrationOrder;
        int npts;
        int geoorder = e->getPolynomialOrder();
        switch(info)
        {
        case Other :
          integrationOrder = order;
          break;
        case Val :
          integrationOrder = geoorder + 1;
          break;
        case Grad :
          integrationOrder = geoorder;
          break;
        case ValVal :
          integrationOrder = 2 * geoorder;
          break;
        case GradGrad :
          integrationOrder = 3 * (geoorder - 1) + 1;
          break;
        default : integrationOrder = 1;
        }
        e->getIntegrationPoints(integrationOrder, &npts, GP);
        return npts;
      }
      // copy constructor
      GaussQuadrature(const GaussQuadrature &other) : order(other.order), info(other.info){}
    };
    
    #endif //_QUADRATURERULES_H_