SimoPisterWEnergy.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: 19AUg2003 00023 //# UPDATE HISTORY: Sept 2003 00024 //# 28May2004 00025 //# 00026 //=============================================================================== 00027 00028 #ifndef SimoPisterWEnergy_CPP 00029 #define SimoPisterWEnergy_CPP 00030 00031 #include <SimoPisterWEnergy.h> 00032 00033 //================================================================================ 00034 // Normal constructor 00035 //================================================================================ 00036 SimoPisterWEnergy::SimoPisterWEnergy(double K_in) :K(K_in) 00037 { 00038 00039 } 00040 00041 SimoPisterWEnergy::SimoPisterWEnergy( ) :K(0.0) 00042 { 00043 00044 } 00045 00046 //================================================================================ 00047 // Normal destructor 00048 //================================================================================ 00049 SimoPisterWEnergy::~SimoPisterWEnergy( ) 00050 { 00051 00052 } 00053 00054 //================================================================================ 00055 //create a clone of itself 00056 //================================================================================ 00057 WEnergy * SimoPisterWEnergy::newObj( ) 00058 { 00059 WEnergy *new_WEnergy = new SimoPisterWEnergy(K); 00060 return new_WEnergy; 00061 } 00062 00063 00064 //================================================================================ 00065 // w 00066 //================================================================================ 00067 const double SimoPisterWEnergy::wE( const double &J_in, const Vector &lambda_wave_in ) 00068 { 00069 double wEnergy = 0.25 * K * (J_in*J_in - 1.0 - 2.0*log(J_in)); 00070 return wEnergy; 00071 } 00072 00073 //================================================================================ 00074 // d(vol)w / dJ 00075 //================================================================================ 00076 const double SimoPisterWEnergy::dvolwOdJ(const double &J_in ) 00077 { 00078 double dcolwOverdJ = K * (-2.0 / J_in + 2.0 * J_in) * 0.25; 00079 return dcolwOverdJ; 00080 } 00081 00082 //================================================================================ 00083 // d2(vol)w / dJ2 00084 //================================================================================ 00085 const double SimoPisterWEnergy::d2volwOdJ2(const double &J_in ) 00086 { 00087 double d2colwOverdJ2 = K * (2.0 / J_in / J_in + 2.0) * 0.25; 00088 return d2colwOverdJ2; 00089 } 00090 00091 00092 #endif 00093 |