00001
00002
00003
00004
00005
00006
00007 #ifndef HDIFFUSIONDEFORMATION_MATTER_RESIDUAL_HPP
00008 #define HDIFFUSIONDEFORMATION_MATTER_RESIDUAL_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 "Intrepid_CellTools.hpp"
00016 #include "Intrepid_Cubature.hpp"
00017
00018 namespace LCM {
00026 template<typename EvalT, typename Traits>
00027 class HDiffusionDeformationMatterResidual : public PHX::EvaluatorWithBaseImpl<Traits>,
00028 public PHX::EvaluatorDerived<EvalT, Traits> {
00029
00030 public:
00031
00032 HDiffusionDeformationMatterResidual(const Teuchos::ParameterList& p);
00033
00034 void postRegistrationSetup(typename Traits::SetupData d,
00035 PHX::FieldManager<Traits>& vm);
00036
00037 void evaluateFields(typename Traits::EvalData d);
00038
00039 private:
00040
00041 typedef typename EvalT::ScalarT ScalarT;
00042 typedef typename EvalT::MeshScalarT MeshScalarT;
00043
00044
00045 PHX::MDField<MeshScalarT,Cell,QuadPoint> weights;
00046 PHX::MDField<MeshScalarT,Cell,Node,QuadPoint> wBF;
00047 PHX::MDField<MeshScalarT,Cell,Node,QuadPoint,Dim> wGradBF;
00048 PHX::MDField<MeshScalarT,Cell,Node,QuadPoint,Dim> GradBF;
00049 PHX::MDField<ScalarT,Cell,QuadPoint> Source;
00050 PHX::MDField<ScalarT,Cell,QuadPoint,Dim, Dim> DefGrad;
00051 PHX::MDField<ScalarT,Cell,QuadPoint> elementLength;
00052 PHX::MDField<ScalarT,Cell,QuadPoint> Dstar;
00053 PHX::MDField<ScalarT,Cell,QuadPoint> DL;
00054 PHX::MDField<ScalarT,Cell,QuadPoint> Clattice;
00055 PHX::MDField<ScalarT,Cell,QuadPoint,Dim> CLGrad;
00056 PHX::MDField<ScalarT,Cell,QuadPoint,Dim> stressGrad;
00057 PHX::MDField<ScalarT,Cell,QuadPoint> stabParameter;
00058
00059
00060 PHX::MDField<ScalarT,Cell,QuadPoint> Ctrapped;
00061 PHX::MDField<ScalarT,Cell,QuadPoint> Ntrapped;
00062 PHX::MDField<ScalarT,Cell,QuadPoint> eqps;
00063 PHX::MDField<ScalarT,Cell,QuadPoint> eqpsFactor;
00064 std::string eqpsName;
00065
00066
00067
00068 PHX::MDField<ScalarT,Cell,QuadPoint,Dim,Dim> Pstress;
00069 PHX::MDField<ScalarT,Cell,QuadPoint> tauFactor;
00070
00071
00072 PHX::MDField<ScalarT,Dummy> deltaTime;
00073
00074
00075 std::string ClatticeName;
00076 std::string CLGradName;
00077
00078
00079
00080 bool enableTransient;
00081
00082 unsigned int numNodes;
00083 unsigned int numQPs;
00084 unsigned int numDims;
00085 unsigned int worksetSize;
00086
00087
00088 Intrepid::FieldContainer<ScalarT> Hflux;
00089 Intrepid::FieldContainer<ScalarT> C;
00090 Intrepid::FieldContainer<ScalarT> Cinv;
00091 Intrepid::FieldContainer<ScalarT> CinvTgrad;
00092 Intrepid::FieldContainer<ScalarT> CinvTgrad_old;
00093 Intrepid::FieldContainer<ScalarT> artificalDL;
00094 Intrepid::FieldContainer<ScalarT> stabilizedDL;
00095 Intrepid::FieldContainer<ScalarT> tauStress;
00096 Intrepid::FieldContainer<ScalarT> pterm;
00097 Intrepid::FieldContainer<ScalarT> tpterm;
00098 Intrepid::FieldContainer<ScalarT> tauH;
00099 Intrepid::FieldContainer<ScalarT> CinvTaugrad;
00100
00101
00102 ScalarT CLbar, vol ;
00103 ScalarT trialPbar;
00104
00105 RealType stab_param_;
00106
00107
00108
00109 PHX::MDField<ScalarT,Cell,Node> TResidual;
00110
00111
00112 };
00113 }
00114
00115 #endif