• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

CapExplicitModel.hpp

Go to the documentation of this file.
00001 //*****************************************************************//
00002 //    Albany 2.0:  Copyright 2012 Sandia Corporation               //
00003 //    This Software is released under the BSD license detailed     //
00004 //    in the file "license.txt" in the top-level Albany directory  //
00005 //*****************************************************************//
00006 #if !defined(CapExplicitModel_hpp)
00007 #define CapExplicitModel_hpp
00008 
00009 #include <Intrepid_MiniTensor.h>
00010 #include "Phalanx_ConfigDefs.hpp"
00011 #include "Phalanx_Evaluator_WithBaseImpl.hpp"
00012 #include "Phalanx_Evaluator_Derived.hpp"
00013 #include "Phalanx_MDField.hpp"
00014 #include "Albany_Layouts.hpp"
00015 #include "ConstitutiveModel.hpp"
00016 
00017 namespace LCM
00018 {
00023 
00024 template<typename EvalT, typename Traits>
00025 class CapExplicitModel: public LCM::ConstitutiveModel<EvalT, Traits>
00026 {
00027 
00028 public:
00029 
00030   typedef typename EvalT::ScalarT ScalarT;
00031   typedef typename EvalT::MeshScalarT MeshScalarT;
00032   typedef typename Sacado::mpl::apply<FadType, ScalarT>::type DFadType;
00033 
00034   using ConstitutiveModel<EvalT, Traits>::num_dims_;
00035   using ConstitutiveModel<EvalT, Traits>::num_pts_;
00036   using ConstitutiveModel<EvalT, Traits>::field_name_map_;
00037 
00041   CapExplicitModel(Teuchos::ParameterList* p,
00042       const Teuchos::RCP<Albany::Layouts>& dl);
00043 
00047   virtual
00048   ~CapExplicitModel()
00049   {};
00050 
00054   virtual
00055   void
00056   computeState(typename Traits::EvalData workset,
00057       std::map<std::string, Teuchos::RCP<PHX::MDField<ScalarT> > > dep_fields,
00058       std::map<std::string, Teuchos::RCP<PHX::MDField<ScalarT> > > eval_fields);
00059 
00060 private:
00061 
00065   CapExplicitModel(const CapExplicitModel&);
00066 
00070   CapExplicitModel& operator=(const CapExplicitModel&);
00071 
00075   ScalarT
00076   compute_f(Intrepid::Tensor<ScalarT> & sigma,
00077       Intrepid::Tensor<ScalarT> & alpha, ScalarT & kappa);
00078 
00079   Intrepid::Tensor<ScalarT>
00080   compute_dfdsigma(Intrepid::Tensor<ScalarT> & sigma,
00081       Intrepid::Tensor<ScalarT> & alpha, ScalarT & kappa);
00082 
00083   Intrepid::Tensor<ScalarT>
00084   compute_dgdsigma(Intrepid::Tensor<ScalarT> & sigma,
00085       Intrepid::Tensor<ScalarT> & alpha, ScalarT & kappa);
00086 
00087   ScalarT
00088   compute_dfdkappa(Intrepid::Tensor<ScalarT> & sigma,
00089       Intrepid::Tensor<ScalarT> & alpha, ScalarT & kappa);
00090 
00091   ScalarT
00092   compute_Galpha(ScalarT & J2_alpha);
00093 
00094   Intrepid::Tensor<ScalarT>
00095   compute_halpha(Intrepid::Tensor<ScalarT> & dgdsigma, ScalarT & J2_alpha);
00096 
00097   ScalarT compute_dedkappa(ScalarT & kappa);
00098 
00102   RealType A;
00103   RealType B;
00104   RealType C;
00105   RealType theta;
00106   RealType R;
00107   RealType kappa0;
00108   RealType W;
00109   RealType D1;
00110   RealType D2;
00111   RealType calpha;
00112   RealType psi;
00113   RealType N;
00114   RealType L;
00115   RealType phi;
00116   RealType Q;
00117 
00118   std::string strainName, stressName;
00119   std::string backStressName, capParameterName, eqpsName, volPlasticStrainName;
00120 
00124   Intrepid::Tensor4<ScalarT> Celastic, compliance, id1, id2, id3;
00125   Intrepid::Tensor<ScalarT> I;
00126   Intrepid::Tensor<ScalarT> depsilon, sigmaN, strainN, sigmaVal, alphaVal;
00127   Intrepid::Tensor<ScalarT> deps_plastic, sigmaTr, alphaTr;
00128   Intrepid::Tensor<ScalarT> dfdsigma, dgdsigma, dfdalpha, halpha;
00129   Intrepid::Tensor<ScalarT> dfdotCe, sigmaK, alphaK, dsigma, dev_plastic;
00130   Intrepid::Tensor<ScalarT> xi, sN, s, strainCurrent;
00131   Intrepid::Tensor<ScalarT> dJ3dsigma, eps_dev;
00132 
00133 };
00134 }
00135 
00136 #endif
00137 

Generated on Wed Mar 26 2014 18:36:37 for Albany: a Trilinos-based PDE code by  doxygen 1.7.1