00001
00002
00003
00004
00005
00006
00007 #ifndef THERMOPOROPLASTICITYRESIDMASS_HPP
00008 #define THERMOPOROPLASTICITYRESIDMASS_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 {
00025 template<typename EvalT, typename Traits>
00026 class ThermoPoroPlasticityResidMass : public PHX::EvaluatorWithBaseImpl<Traits>,
00027 public PHX::EvaluatorDerived<EvalT, Traits> {
00028
00029 public:
00030
00031 ThermoPoroPlasticityResidMass(const Teuchos::ParameterList& p);
00032
00033 void postRegistrationSetup(typename Traits::SetupData d,
00034 PHX::FieldManager<Traits>& vm);
00035
00036 void evaluateFields(typename Traits::EvalData d);
00037
00038 private:
00039
00040 typedef typename EvalT::ScalarT ScalarT;
00041 typedef typename EvalT::MeshScalarT MeshScalarT;
00042
00043
00044 PHX::MDField<MeshScalarT,Cell,Node,QuadPoint> wBF;
00045 PHX::MDField<ScalarT,Cell,QuadPoint> porePressure;
00046 PHX::MDField<ScalarT,Cell,QuadPoint> densityPoreFluid;
00047 PHX::MDField<ScalarT,Cell,QuadPoint> Temp;
00048 PHX::MDField<ScalarT,Cell,QuadPoint> RefTemp;
00049 PHX::MDField<ScalarT,Cell,QuadPoint> stabParameter;
00050 PHX::MDField<ScalarT,Cell,QuadPoint> ThermalCond;
00051 PHX::MDField<ScalarT,Cell,QuadPoint> kcPermeability;
00052 PHX::MDField<ScalarT,Cell,QuadPoint> porosity;
00053 PHX::MDField<ScalarT,Cell,QuadPoint> biotCoefficient;
00054 PHX::MDField<ScalarT,Cell,QuadPoint> biotModulus;
00055 PHX::MDField<ScalarT,Cell,QuadPoint> young_modulus_;
00056 PHX::MDField<ScalarT,Cell,QuadPoint> poissons_ratio_;
00057 PHX::MDField<MeshScalarT,Cell,Node,QuadPoint,Dim> wGradBF;
00058 PHX::MDField<ScalarT,Cell,QuadPoint,Dim> TGrad;
00059 PHX::MDField<ScalarT,Cell,QuadPoint,Dim> TempGrad;
00060 PHX::MDField<ScalarT,Cell,QuadPoint> alphaMixture;
00061 PHX::MDField<ScalarT,Cell,QuadPoint> alphaPoreFluid;
00062 PHX::MDField<ScalarT,Cell,QuadPoint> alphaSkeleton;
00063 PHX::MDField<ScalarT,Cell,QuadPoint> Source;
00064 Teuchos::Array<double> convectionVels;
00065 PHX::MDField<ScalarT,Cell,QuadPoint> rhoCp;
00066 PHX::MDField<ScalarT,Cell,QuadPoint> Absorption;
00067 PHX::MDField<ScalarT,Cell,QuadPoint,Dim,Dim> strain;
00068 PHX::MDField<ScalarT,Cell,QuadPoint,Dim,Dim> defgrad;
00069 PHX::MDField<ScalarT,Cell,QuadPoint> J;
00070
00071
00072 PHX::MDField<MeshScalarT,Cell,Vertex,Dim> coordVec;
00073 Teuchos::RCP<Intrepid::Cubature<RealType> > cubature;
00074 Teuchos::RCP<shards::CellTopology> cellType;
00075 PHX::MDField<MeshScalarT,Cell,QuadPoint> weights;
00076
00077
00078 PHX::MDField<ScalarT,Dummy> deltaTime;
00079
00080
00081 std::string strainName, porePressureName, porosityName,
00082 JName, TempName;
00083
00084
00085
00086 bool haveSource;
00087 bool haveConvection;
00088 bool haveAbsorption;
00089 bool enableTransient;
00090 bool haverhoCp;
00091 unsigned int numNodes;
00092 unsigned int numQPs;
00093 unsigned int numDims;
00094 unsigned int worksetSize;
00095
00096
00097 Intrepid::FieldContainer<ScalarT> flux;
00098 Intrepid::FieldContainer<ScalarT> fgravity;
00099 Intrepid::FieldContainer<ScalarT> fluxdt;
00100 Intrepid::FieldContainer<ScalarT> pterm;
00101 Intrepid::FieldContainer<ScalarT> Tterm;
00102 Intrepid::FieldContainer<ScalarT> aterm;
00103 Intrepid::FieldContainer<ScalarT> tpterm;
00104
00105
00106 Intrepid::FieldContainer<RealType> refPoints;
00107 Intrepid::FieldContainer<RealType> refWeights;
00108 Intrepid::FieldContainer<MeshScalarT> jacobian;
00109 Intrepid::FieldContainer<MeshScalarT> jacobian_inv;
00110 Intrepid::FieldContainer<MeshScalarT> Gc;
00111
00112
00113 Intrepid::FieldContainer<ScalarT> F_inv;
00114 Intrepid::FieldContainer<ScalarT> F_invT;
00115 Intrepid::FieldContainer<ScalarT> C;
00116 Intrepid::FieldContainer<ScalarT> Cinv;
00117 Intrepid::FieldContainer<ScalarT> JF_invT;
00118 Intrepid::FieldContainer<ScalarT> KJF_invT;
00119 Intrepid::FieldContainer<ScalarT> Kref;
00120
00121 ScalarT porePbar, Tempbar, vol;
00122 ScalarT trialPbar;
00123 ScalarT shearModulus, bulkModulus;
00124 ScalarT safeFactor;
00125
00126
00127
00128
00129 PHX::MDField<ScalarT,Cell,Node> TResidual;
00130
00131
00132 };
00133 }
00134
00135 #endif