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
00032 #ifndef FEAPP_BRUSSELATORNODEBCSTRATEGY_HPP
00033 #define FEAPP_BRUSSELATORNODEBCSTRATEGY_HPP
00034
00035 #include "Teuchos_RCP.hpp"
00036
00037 #include "FEApp_AbstractNodeBCStrategy.hpp"
00038
00039 #include "Sacado_ScalarParameterLibrary.hpp"
00040
00041 namespace FEApp {
00042
00043 template <typename ScalarT>
00044 class BrusselatorNodeBCStrategy :
00045 public FEApp::AbstractNodeBCStrategy<ScalarT> {
00046 public:
00047
00049 BrusselatorNodeBCStrategy(
00050 const ScalarT& alpha, const ScalarT& beta,
00051 const Teuchos::RCP<Sacado::ScalarParameterLibrary>& paramLib);
00052
00054 virtual ~BrusselatorNodeBCStrategy();
00055
00057 const std::vector<unsigned int>& getOffsets() const;
00058
00060 virtual void evaluateResidual(const std::vector<ScalarT>* dot,
00061 const std::vector<ScalarT>& solution,
00062 std::vector<ScalarT>& residual) const;
00063
00064 private:
00065
00067 BrusselatorNodeBCStrategy(const BrusselatorNodeBCStrategy&);
00068
00070 BrusselatorNodeBCStrategy& operator=(const BrusselatorNodeBCStrategy&);
00071
00072 protected:
00073
00075 mutable ScalarT alpha;
00076
00078 mutable ScalarT beta;
00079
00081 std::vector<unsigned int> offsets;
00082
00084 Teuchos::RCP<Sacado::ScalarParameterLibrary> pl;
00085
00086 };
00087
00088 class BrusselatorNodeBCStrategy_TemplateBuilder {
00089 public:
00090 BrusselatorNodeBCStrategy_TemplateBuilder(
00091 double alpha, double beta,
00092 const Teuchos::RCP<Sacado::ScalarParameterLibrary>& paramLib) :
00093 a(alpha), b(beta), pl(paramLib) {}
00094 template <typename T>
00095 Teuchos::RCP<FEApp::AbstractNodeBCStrategy_NTBase> build() const {
00096 return Teuchos::rcp( new BrusselatorNodeBCStrategy<T>(a,b,pl));
00097 }
00098 protected:
00099 double a, b;
00100 Teuchos::RCP<Sacado::ScalarParameterLibrary> pl;
00101 };
00102
00103 }
00104
00105
00106 #ifndef SACADO_ETI
00107 #include "FEApp_BrusselatorNodeBCStrategyImpl.hpp"
00108 #endif
00109
00110 #endif // FEAPP_BRUSSELATORNODEBCSTRATEGY_HPP