fdFlowVM.cppGo 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 |