Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #ifndef PHAL_THERMAL_CONDUCTIVITY_HPP
00008 #define PHAL_THERMAL_CONDUCTIVITY_HPP
00009
00010 #include "Phalanx_ConfigDefs.hpp"
00011 #include "Phalanx_Evaluator_WithBaseImpl.hpp"
00012 #include "Phalanx_Evaluator_Derived.hpp"
00013 #include "Phalanx_MDField.hpp"
00014
00015 #include "Teuchos_ParameterList.hpp"
00016 #include "Epetra_Vector.h"
00017 #include "Sacado_ParameterAccessor.hpp"
00018 #include "Stokhos_KL_ExponentialRandomField.hpp"
00019 #include "Teuchos_Array.hpp"
00020
00021 #include "QCAD_MaterialDatabase.hpp"
00022
00023 namespace PHAL {
00050 template<typename EvalT, typename Traits>
00051 class ThermalConductivity :
00052 public PHX::EvaluatorWithBaseImpl<Traits>,
00053 public PHX::EvaluatorDerived<EvalT, Traits>,
00054 public Sacado::ParameterAccessor<EvalT, SPL_Traits> {
00055
00056 public:
00057 typedef typename EvalT::ScalarT ScalarT;
00058 typedef typename EvalT::MeshScalarT MeshScalarT;
00059
00060 ThermalConductivity(Teuchos::ParameterList& p);
00061
00062 void postRegistrationSetup(typename Traits::SetupData d,
00063 PHX::FieldManager<Traits>& vm);
00064
00065 void evaluateFields(typename Traits::EvalData d);
00066
00067 ScalarT& getValue(const std::string &n);
00068
00069 private:
00070
00072 Teuchos::RCP<const Teuchos::ParameterList>
00073 getValidThermalCondParameters() const;
00074
00075 bool is_constant;
00076
00077 std::size_t numQPs;
00078 std::size_t numDims;
00079 PHX::MDField<MeshScalarT,Cell,QuadPoint,Dim> coordVec;
00080 PHX::MDField<ScalarT,Cell,QuadPoint> thermalCond;
00081
00083 std::string type;
00084
00086 ScalarT constant_value;
00087
00089 Teuchos::RCP< Stokhos::KL::ExponentialRandomField<MeshScalarT> > exp_rf_kl;
00090
00092 Teuchos::Array<ScalarT> rv;
00093
00095 Teuchos::RCP<QCAD::MaterialDatabase> materialDB;
00096
00098 void init_constant(ScalarT value, Teuchos::ParameterList& p);
00099
00101
00102 void init_KL_RF(std::string &type, Teuchos::ParameterList& subList, Teuchos::ParameterList& p);
00103
00104 };
00105 }
00106
00107 #endif