00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef SUNDANCE_GROUPERBASE_H
00032 #define SUNDANCE_GROUPERBASE_H
00033
00034 #include "SundanceDefs.hpp"
00035 #include "SundanceCellType.hpp"
00036 #include "SundanceParametrizedCurve.hpp"
00037 #include "SundanceMesh.hpp"
00038 #include "Teuchos_RefCountPtr.hpp"
00039
00040 namespace Sundance
00041 {
00042 using namespace Teuchos;
00043
00044 class EquationSet;
00045 class SparsitySuperset;
00046 class MultiIndex;
00047 class MultipleDeriv;
00048 class QuadratureFamily;
00049 class BasisFamily;
00050 class IntegralGroup;
00051
00052
00053
00054
00055
00056 class GrouperBase
00057 {
00058 public:
00059
00060 GrouperBase() {}
00061
00062
00063 virtual ~GrouperBase(){;}
00064
00065
00066 virtual void findGroups(const EquationSet& eqn,
00067 const CellType& maxCellType,
00068 int spatialDim,
00069 const CellType& cellType,
00070 int cellDim,
00071 const QuadratureFamily& quad,
00072 const RCP<SparsitySuperset>& sparsity,
00073 bool isInternalBdry,
00074 Array<RCP<IntegralGroup> >& groups,
00075 const ParametrizedCurve& globalCurve,
00076 const Mesh& mesh ) const = 0 ;
00077
00078
00079
00080 void setVerb(
00081 int setupVerb,
00082 int integrationVerb,
00083 int transformVerb);
00084
00085
00086
00087 int setupVerb() const {return setupVerb_;}
00088
00089
00090 int integrationVerb() const {return integrationVerb_;}
00091
00092
00093 int transformVerb() const {return transformVerb_;}
00094
00095 protected:
00096 void extractWeakForm(const EquationSet& eqn,
00097 const MultipleDeriv& functionalDeriv,
00098 BasisFamily& testBasis,
00099 BasisFamily& unkBasis,
00100 MultiIndex& miTest, MultiIndex& miUnk,
00101 int& rawVarID, int& rawUnkID,
00102 int& reducedTestID, int& reducedUnkID,
00103 int& testBlock, int& unkBlock,
00104 int& rawParamID, int& reducedParamID,
00105 bool& isOneForm, bool& hasParam) const ;
00106
00107 private:
00108 int setupVerb_;
00109 int integrationVerb_;
00110 int transformVerb_;
00111 };
00112
00113 }
00114
00115
00116 #endif