fdFlowVM.cpp

Go to the documentation of this file.
00001 //===============================================================================
00002 //# COPYRIGHT (C): Woody's license (by BJ):
00003 //                 ``This    source  code is Copyrighted in
00004 //                 U.S.,  for  an  indefinite  period,  and anybody
00005 //                 caught  using it without our permission, will be
00006 //                 mighty good friends of ourn, cause we don't give
00007 //                 a  darn.  Hack it. Compile it. Debug it. Run it.
00008 //                 Yodel  it.  Enjoy it. We wrote it, that's all we
00009 //                 wanted to do.''
00010 //
00011 //# PROJECT:           Object Oriented Finite Element Program
00012 //# PURPOSE:           Finite Deformation Hyper-Elastic classes
00013 //# CLASS:
00014 //#
00015 //# VERSION:           0.6_(1803398874989) (golden section)
00016 //# LANGUAGE:          C++
00017 //# TARGET OS:         all...
00018 //# DESIGN:            Zhao Cheng, Boris Jeremic (jeremic@ucdavis.edu)
00019 //# PROGRAMMER(S):     Zhao Cheng, Boris Jeremic
00020 //#
00021 //#
00022 //# DATE:              July 2004
00023 //# UPDATE HISTORY:
00024 //#
00025 //===============================================================================
00026 
00027 #ifndef fdFlowVM_CPP
00028 #define fdFlowVM_CPP
00029 
00030 #include "fdFlowVM.h"
00031 
00032 //--------------------------------------------------------------------
00033 fdFlowVM::fdFlowVM(double Y0_in) :Y0(Y0_in)
00034 {
00035 
00036 }
00037 
00038 //--------------------------------------------------------------------
00039 fdFlow * fdFlowVM::newObj()
00040 {
00041      fdFlow *newfdyd = new fdFlowVM(Y0);
00042      return newfdyd;
00043 }
00044 
00045 //-------------------------------------------------------------------
00046 // Q = 1.5*(S_ij-a_ij)*(S_ij-a_ij)  - (Y0+q)*(Y0+q) = 0, Note here NumRank = 2
00047 //-------------------------------------------------------------------
00048 
00049 //--------------------------------------------------------------------
00050 stresstensor fdFlowVM::dFods(const stresstensor &sts, const FDEPState &fdepstate) const
00051 {    
00052     return sts.deviator() * 3.0;
00053 }
00054 
00055 //--------------------------------------------------------------------
00056 double fdFlowVM::dFodq(const stresstensor &sts, const FDEPState &fdepstate ) const
00057 {  
00058     double q = fdepstate.getStressLikeInVar();
00059     return -2.0 * ( Y0+q );
00060 }
00061 
00062 //--------------------------------------------------------------------
00063 stresstensor fdFlowVM::dFoda(const stresstensor &sts, const FDEPState &fdepstate) const
00064 {    
00065     return sts.deviator() * (-3.0);
00066 }
00067 
00068 //--------------------------------------------------------------------
00069 tensor fdFlowVM::d2Fodsds(const stresstensor &sts, const FDEPState &fdepstate ) const
00070 {  
00071     tensor I2("I", 2 , def_dim_2);
00072     tensor I4 = I2("ij")*I2("kl"); I4.null_indices();
00073     //I4 = (I4.transpose0110()+I4.transpose0111())*1.5 - I4; //For symmetric tensor
00074     I4 = I4*3.0 - I4;   //For general tensor
00075     return I4;
00076 }
00077 
00078 //--------------------------------------------------------------------
00079 tensor fdFlowVM::d2Fodsda(const stresstensor &sts, const FDEPState &fdepstate ) const
00080 {  
00081     tensor I2("I", 2 , def_dim_2);
00082     tensor I4 = I2("ij")*I2("kl"); I4.null_indices();
00083     //I4 = (I4.transpose0110()+I4.transpose0111())*1.5 - I4; //For symmetric tensor
00084     I4 = I4*3.0 - I4;   //For general tensor
00085     return I4 *(-1.0);
00086 }
00087 
00088 //--------------------------------------------------------------------
00089 double fdFlowVM::d2Fodqdq(const stresstensor &sts, const FDEPState &fdepstate ) const
00090 {  
00091     return -2.0;
00092 }
00093 
00094 //--------------------------------------------------------------------
00095 tensor fdFlowVM::d2Fodada(const stresstensor &sts, const FDEPState &fdepstate ) const
00096 {  
00097     tensor I2("I", 2 , def_dim_2);
00098     tensor I4 = I2("ij")*I2("kl"); I4.null_indices();
00099     //I4 = (I4.transpose0110()+I4.transpose0111())*1.5; //For symmetric tensor
00100     I4 = I4 *3.0;       //For general tensor
00101     return I4;
00102 }
00103 
00104 //--------------------------------------------------------------------
00105 OPS_Stream& operator<<(OPS_Stream& os, const fdFlowVM &fdflVM)
00106 {
00107     os << "fdFlowVM Parameters: " << "\n";
00108     os << "Y0: " << fdflVM.Y0 << "\n";
00109     return os;
00110 }
00111 
00112 
00113 #endif
00114 

Generated on Mon Oct 23 15:05:14 2006 for OpenSees by doxygen 1.5.0