Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #ifndef PHAL_FACTORY_TRAITS_HPP
00008 #define PHAL_FACTORY_TRAITS_HPP
00009
00010
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
00040 using namespace boost::mpl::placeholders;
00041
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;
00062 static const int id_timedep_bc = 5;
00063 static const int id_time = 6;
00064 static const int id_torsion_bc = 7;
00065
00066 #ifdef ALBANY_LCM
00067 typedef boost::mpl::vector8<
00068 #else
00069 typedef boost::mpl::vector4<
00070 #endif
00071 PHAL::Dirichlet<_,Traits>,
00072 PHAL::DirichletAggregator<_,Traits>,
00073 PHAL::DirichletCoordFunction<_,Traits>,
00074 #ifdef ALBANY_QCAD
00075 QCAD::PoissonDirichlet<_,Traits>
00076 #else
00077 PHAL::Dirichlet<_,Traits>
00078 #endif
00079 #ifdef ALBANY_LCM
00080 , LCM::KfieldBC<_,Traits>,
00081 LCM::TimeDepBC<_, Traits>,
00082 LCM::Time<_, Traits>,
00083 LCM::TorsionBC<_, Traits>
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;
00098 static const int id_gather_basalFriction = 6;
00099 static const int id_gather_thickness = 7;
00100 static const int id_gather_surfaceHeight = 8;
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>,
00113 PHAL::NeumannAggregator<_,Traits>,
00114 #ifdef ALBANY_QCAD
00115 QCAD::PoissonNeumann<_,Traits>,
00116 #else
00117 PHAL::Neumann<_,Traits>,
00118 #endif
00119 PHAL::GatherCoordinateVector<_,Traits>,
00120 PHAL::GatherSolution<_,Traits>
00121 #ifdef ALBANY_LCM
00122 , LCM::TimeTracBC<_, Traits>
00123 #else
00124 #ifdef ALBANY_FELIX
00125 , PHAL::Neumann<_,Traits>
00126 #endif
00127 #endif
00128 #ifdef ALBANY_FELIX
00129 , PHAL::GatherBasalFriction<_,Traits>
00130 , PHAL::GatherThickness<_,Traits>
00131 , PHAL::GatherSHeight<_,Traits>
00132 #endif
00133 > EvaluatorTypes;
00134 };
00135
00136 }
00137
00138 #endif