SundanceTrapesoidQuadrature.hpp
Go to the documentation of this file.
00001 /*
00002  * SundanceTrapesoidQuadrature.hpp
00003  *
00004  *  Created on: Jan 20, 2011
00005  *      Author: benk
00006  */
00007 
00008 #ifndef SUNDANCETRAPESOIDQUADRATURE_HPP_
00009 #define SUNDANCETRAPESOIDQUADRATURE_HPP_
00010 
00011 #include "SundanceDefs.hpp"
00012 #include "SundanceQuadratureFamilyBase.hpp"
00013 
00014 namespace Sundance {
00015 
00016 class TrapesoidQuadrature : public QuadratureFamilyBase {
00017 
00018 public:
00019 
00020   /** In this case the */
00021   TrapesoidQuadrature(int resolution);
00022 
00023   /** */
00024   virtual ~TrapesoidQuadrature()
00025   {;}
00026 
00027   /** */
00028   virtual XMLObject toXML() const;
00029 
00030   /** Describable interface */
00031   virtual std::string description() const
00032   {
00033     return "TrapesoidQuadrature[order=" + Teuchos::toString(order()) + "]";
00034   }
00035 
00036   /* handleable boilerplate */
00037   GET_RCP(QuadratureFamilyStub);
00038 
00039 protected:
00040   /** compute a rule for the reference line cell */
00041   virtual void getLineRule(Array<Point>& quadPoints,
00042       Array<double>& quadWeights) const;
00043 
00044   /** compute a rule for the reference triangle cell */
00045   virtual void getTriangleRule(Array<Point>& quadPoints,
00046       Array<double>& quadWeights) const;
00047 
00048   /** compute a rule for the reference quad cell */
00049   virtual void getQuadRule(Array<Point>& quadPoints,
00050       Array<double>& quadWeights) const;
00051 
00052   /** compute a rule for the reference tet cell */
00053   virtual void getTetRule(Array<Point>& quadPoints,
00054       Array<double>& quadWeights) const ;
00055 
00056   /** compute a rule for the reference brick cell */
00057   virtual void getBrickRule(Array<Point>& quadPoints,
00058       Array<double>& quadWeights) const;
00059 
00060   /**
00061    * Compute adapted weights according to curve
00062    *
00063    * @param cellType
00064    * @param cellDim
00065    * @param cellLID
00066    * @param facetIndex
00067    * @param mesh
00068    * @param globalCurve
00069    * @param quadPoints
00070    * @param quadWeights
00071    * @param changedWeights
00072    */
00073   virtual void getAdaptedWeights(const CellType& cellType, int cellDim,
00074       int cellLID, int facetIndex, const Mesh& mesh,
00075       const ParametrizedCurve& globalCurve,
00076       Array<Point>& quadPoints, Array<double>& quadWeights,
00077       bool &weightsChanged) const;
00078 
00079 private:
00080 
00081   /** the homogeneous resolution */
00082   int resolution_;
00083 
00084 };
00085 
00086 }
00087 
00088 #endif /* SUNDANCETRAPESOIDQUADRATURE_HPP_ */

Site Contact