SundanceGrouperBase.hpp
Go to the documentation of this file.
00001 /* @HEADER@ */
00002 // ************************************************************************
00003 // 
00004 //                              Sundance
00005 //                 Copyright (2005) Sandia Corporation
00006 // 
00007 // Copyright (year first published) Sandia Corporation.  Under the terms 
00008 // of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government 
00009 // retains certain rights in this software.
00010 // 
00011 // This library is free software; you can redistribute it and/or modify
00012 // it under the terms of the GNU Lesser General Public License as
00013 // published by the Free Software Foundation; either version 2.1 of the
00014 // License, or (at your option) any later version.
00015 //  
00016 // This library is distributed in the hope that it will be useful, but
00017 // WITHOUT ANY WARRANTY; without even the implied warranty of
00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00019 // Lesser General Public License for more details.
00020 //                                                                                 
00021 // You should have received a copy of the GNU Lesser General Public
00022 // License along with this library; if not, write to the Free Software
00023 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00024 // USA                                                                                
00025 // Questions? Contact Kevin Long (krlong@sandia.gov), 
00026 // Sandia National Laboratories, Livermore, California, USA
00027 // 
00028 // ************************************************************************
00029 /* @HEADER@ */
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  * Grouper
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

Site Contact