• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

PHAL_FactoryTraits.hpp

Go to the documentation of this file.
00001 //*****************************************************************//
00002 //    Albany 2.0:  Copyright 2012 Sandia Corporation               //
00003 //    This Software is released under the BSD license detailed     //
00004 //    in the file "license.txt" in the top-level Albany directory  //
00005 //*****************************************************************//
00006 
00007 #ifndef PHAL_FACTORY_TRAITS_HPP
00008 #define PHAL_FACTORY_TRAITS_HPP
00009 
00010 // User Defined Evaluator Types
00011 
00012 #ifdef ALBANY_LCM
00013 #include "LCM/evaluators/bc/KfieldBC.hpp"
00014 #include "LCM/evaluators/bc/TimeDepBC.hpp"
00015 #include "LCM/evaluators/bc/TimeTracBC.hpp"
00016 #include "LCM/evaluators/Time.hpp"
00017 #include "LCM/evaluators/bc/TorsionBC.hpp"
00018 #endif
00019 #ifdef ALBANY_QCAD
00020 #include "QCAD_PoissonDirichlet.hpp"
00021 #include "QCAD_PoissonNeumann.hpp"
00022 #endif
00023 #include "PHAL_Dirichlet.hpp"
00024 #include "PHAL_Neumann.hpp"
00025 #include "PHAL_GatherCoordinateVector.hpp"
00026 #include "PHAL_GatherSolution.hpp"
00027 #include "PHAL_GatherAuxData.hpp"
00028 #ifdef ALBANY_FELIX
00029   #include "PHAL_GatherBasalFriction.hpp"
00030   #include "PHAL_GatherThickness.hpp"
00031   #include "PHAL_GatherSHeight.hpp"
00032 #endif
00033 #include "PHAL_DirichletCoordinateFunction.hpp"
00034 
00035 
00036 #include "boost/mpl/vector/vector50.hpp"
00037 #include "boost/mpl/placeholders.hpp"
00038 
00039 // \cond  Have doxygern ignore this namespace
00040 using namespace boost::mpl::placeholders;
00041 // \endcond
00042 
00043 namespace PHAL {
00054   template<typename Traits>
00055   struct DirichletFactoryTraits {
00056 
00057     static const int id_dirichlet                      =  0;
00058     static const int id_dirichlet_aggregator           =  1;
00059     static const int id_dirichlet_coordinate_function  =  2;
00060     static const int id_qcad_poisson_dirichlet         =  3;
00061     static const int id_kfield_bc                      =  4; // Only for LCM probs
00062     static const int id_timedep_bc                     =  5; // Only for LCM probs
00063     static const int id_time                           =  6; // Only for LCM probs
00064     static const int id_torsion_bc                     =  7; // Only for LCM probs
00065 
00066 #ifdef ALBANY_LCM
00067     typedef boost::mpl::vector8<
00068 #else
00069       typedef boost::mpl::vector4<
00070 #endif
00071         PHAL::Dirichlet<_,Traits>,                //  0
00072         PHAL::DirichletAggregator<_,Traits>,      //  1
00073         PHAL::DirichletCoordFunction<_,Traits>,    //  2
00074 #ifdef ALBANY_QCAD
00075         QCAD::PoissonDirichlet<_,Traits>         //  3
00076 #else
00077         PHAL::Dirichlet<_,Traits>                //  3 dummy
00078 #endif
00079 #ifdef ALBANY_LCM
00080         , LCM::KfieldBC<_,Traits>,                //  4
00081         LCM::TimeDepBC<_, Traits>,                //  5
00082         LCM::Time<_, Traits>,                     //  6
00083         LCM::TorsionBC<_, Traits>                 //  7
00084 #endif
00085         > EvaluatorTypes;
00086 };
00087 
00088 
00089   template<typename Traits>
00090   struct NeumannFactoryTraits {
00091 
00092     static const int id_neumann                   =  0;
00093     static const int id_neumann_aggregator        =  1;
00094     static const int id_qcad_poisson_neumann      =  2;
00095     static const int id_gather_coord_vector       =  3;
00096     static const int id_gather_solution           =  4;
00097     static const int id_timedep_bc                =  5; // Only for LCM probs
00098     static const int id_gather_basalFriction      =  6; // Only for FELIX probs
00099     static const int id_gather_thickness        =  7; // Only for FELIX probs
00100     static const int id_gather_surfaceHeight      =  8; // Only for FELIX probs
00101 
00102 #ifdef ALBANY_FELIX
00103     typedef boost::mpl::vector9<
00104 #else
00105 #ifdef ALBANY_LCM
00106     typedef boost::mpl::vector6<
00107 #else
00108     typedef boost::mpl::vector5<
00109 #endif
00110 #endif
00111 
00112        PHAL::Neumann<_,Traits>,                     //  0
00113        PHAL::NeumannAggregator<_,Traits>,           //  1
00114 #ifdef ALBANY_QCAD
00115        QCAD::PoissonNeumann<_,Traits>,              //  2
00116 #else
00117        PHAL::Neumann<_,Traits>,                     //  2 dummy
00118 #endif
00119          PHAL::GatherCoordinateVector<_,Traits>,      //  3
00120          PHAL::GatherSolution<_,Traits>               //  4
00121 #ifdef ALBANY_LCM
00122          , LCM::TimeTracBC<_, Traits>                 //  5
00123 #else
00124 #ifdef ALBANY_FELIX
00125          , PHAL::Neumann<_,Traits>            //  5 dummy
00126 #endif
00127 #endif
00128 #ifdef ALBANY_FELIX
00129       , PHAL::GatherBasalFriction<_,Traits>         //  6
00130     , PHAL::GatherThickness<_,Traits>             //  7
00131         , PHAL::GatherSHeight<_,Traits>               //  8
00132 #endif
00133     > EvaluatorTypes;
00134 };
00135 
00136 }
00137 
00138 #endif

Generated on Wed Mar 26 2014 18:36:41 for Albany: a Trilinos-based PDE code by  doxygen 1.7.1