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 PHX_EVALUATOR_WITHBASEIMPL_DEF_H
00033 #define PHX_EVALUATOR_WITHBASEIMPL_DEF_H
00034
00035 #include "Phalanx_ConfigDefs.hpp"
00036 #include "Phalanx_FieldTag_STL_Functors.hpp"
00037
00038
00039 template<typename Traits>
00040 PHX::EvaluatorWithBaseImpl<Traits>::
00041 EvaluatorWithBaseImpl(const std::string& evaluator_name) :
00042 name_(evaluator_name)
00043 { }
00044
00045
00046 template<typename Traits>
00047 PHX::EvaluatorWithBaseImpl<Traits>::EvaluatorWithBaseImpl() :
00048 name_("???")
00049 { }
00050
00051
00052 template<typename Traits>
00053 PHX::EvaluatorWithBaseImpl<Traits>::~EvaluatorWithBaseImpl()
00054 { }
00055
00056
00057 template<typename Traits>
00058 void PHX::EvaluatorWithBaseImpl<Traits>::
00059 addEvaluatedField(const PHX::FieldTag& ft)
00060 {
00061 PHX::FTPredRef pred(ft);
00062 std::vector< Teuchos::RCP<FieldTag> >::iterator test =
00063 std::find_if(evaluated_.begin(), evaluated_.end(), pred);
00064
00065 if ( test == evaluated_.end() )
00066 evaluated_.push_back(ft.clone());
00067 }
00068
00069
00070 template<typename Traits>
00071 template<typename DataT>
00072 void PHX::EvaluatorWithBaseImpl<Traits>::
00073 addEvaluatedField(const PHX::Field<DataT>& f)
00074 {
00075 this->addEvaluatedField(f.fieldTag());
00076 }
00077
00078
00079 template<typename Traits>
00080 template<typename DataT, PHX::ArrayOrder Order,
00081 typename Tag0, typename Tag1, typename Tag2, typename Tag3,
00082 typename Tag4, typename Tag5, typename Tag6, typename Tag7>
00083 void PHX::EvaluatorWithBaseImpl<Traits>::
00084 addEvaluatedField(const PHX::MDField<DataT,Order,Tag0,Tag1,Tag2,Tag3,
00085 Tag4,Tag5,Tag6,Tag7>& f)
00086 {
00087 this->addEvaluatedField(f.fieldTag());
00088 }
00089
00090
00091 template<typename Traits>
00092 void PHX::EvaluatorWithBaseImpl<Traits>::
00093 addDependentField(const PHX::FieldTag& ft)
00094 {
00095 PHX::FTPredRef pred(ft);
00096 std::vector< Teuchos::RCP<FieldTag> >::iterator test =
00097 std::find_if(required_.begin(), required_.end(), pred);
00098
00099 if ( test == required_.end() )
00100 required_.push_back(ft.clone());
00101 }
00102
00103
00104 template<typename Traits>
00105 template<typename DataT>
00106 void PHX::EvaluatorWithBaseImpl<Traits>::
00107 addDependentField(const PHX::Field<DataT>& v)
00108 {
00109 this->addDependentField(v.fieldTag());
00110 }
00111
00112
00113 template<typename Traits>
00114 template<typename DataT, PHX::ArrayOrder Order,
00115 typename Tag0, typename Tag1, typename Tag2, typename Tag3,
00116 typename Tag4, typename Tag5, typename Tag6, typename Tag7>
00117 void PHX::EvaluatorWithBaseImpl<Traits>::
00118 addDependentField(const PHX::MDField<DataT,Order,Tag0,Tag1,Tag2,Tag3,
00119 Tag4,Tag5,Tag6,Tag7>& f)
00120 {
00121 this->addDependentField(f.fieldTag());
00122 }
00123
00124
00125 template<typename Traits>
00126 void PHX::EvaluatorWithBaseImpl<Traits>::
00127 setName(const std::string& name)
00128 { name_ = name; }
00129
00130
00131 template<typename Traits>
00132 const std::vector< Teuchos::RCP<PHX::FieldTag> >&
00133 PHX::EvaluatorWithBaseImpl<Traits>::evaluatedFields() const
00134 { return evaluated_; }
00135
00136
00137 template<typename Traits>
00138 const std::vector< Teuchos::RCP<PHX::FieldTag> >&
00139 PHX::EvaluatorWithBaseImpl<Traits>::dependentFields() const
00140 { return required_; }
00141
00142
00143 template<typename Traits>
00144 void PHX::EvaluatorWithBaseImpl<Traits>::
00145 preEvaluate(typename Traits::PreEvalData d)
00146 { }
00147
00148
00149 template<typename Traits>
00150 void PHX::EvaluatorWithBaseImpl<Traits>::
00151 postEvaluate(typename Traits::PostEvalData d)
00152 { }
00153
00154
00155 template<typename Traits>
00156 const std::string& PHX::EvaluatorWithBaseImpl<Traits>::
00157 getName() const
00158 {return name_;}
00159
00160
00161
00162 #endif