NeoHookeanWEnergy.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:              19AUg2003
00023 //# UPDATE HISTORY:    Sept 2003
00024 //#                    28May2004
00025 //#
00026 //===============================================================================
00027 
00028 #ifndef NeoHookeanWEnergy_CPP
00029 #define NeoHookeanWEnergy_CPP
00030 
00031 #include <NeoHookeanWEnergy.h>
00032 
00033 //================================================================================
00034 // Normal constructor
00035 //================================================================================
00036 NeoHookeanWEnergy::NeoHookeanWEnergy(double K_in, double G_in )
00037  :K(K_in), G(G_in)
00038 {
00039 
00040 }
00041 
00042 NeoHookeanWEnergy::NeoHookeanWEnergy(  )
00043  :K(0.0), G(0.0)
00044 {
00045 
00046 }
00047 
00048 //================================================================================
00049 // Normal destructor
00050 //================================================================================
00051 NeoHookeanWEnergy::~NeoHookeanWEnergy( )
00052 {
00053 
00054 }
00055 
00056 //================================================================================
00057 //create a clone of itself
00058 //================================================================================
00059 WEnergy * NeoHookeanWEnergy::newObj( )
00060   {
00061     WEnergy  *new_WEnergy = new NeoHookeanWEnergy(K,  G);
00062     return new_WEnergy;
00063   }
00064 
00065 
00066 //================================================================================
00067 // w
00068 //================================================================================
00069 const double  NeoHookeanWEnergy::wE(const double &J_in, const Vector &lambda_wave_in )
00070   {
00071     double w_iso = 0.5 * G * (lambda_wave_in(0) * lambda_wave_in(0)
00072                             + lambda_wave_in(1) * lambda_wave_in(1)
00073                             + lambda_wave_in(2) * lambda_wave_in(2) );
00074 
00075     double w_vol = 0.5 * K * (J_in-1.0) * (J_in-1.0); //version I
00076 //    double w_vol = 0.25 * K * ( J_in*J_in -1.0 -2.0*log(J_in) );  //version II
00077 //    double w_vol = 0.0; //incompressible material
00078     double w_total = w_iso + w_vol;
00079     return w_total;
00080   }
00081 
00082 //================================================================================
00083 // d(iso)w / d(lambda)
00084 //================================================================================
00085 const Vector  NeoHookeanWEnergy::disowOdlambda(const Vector &lambda_wave_in )
00086   {
00087     Vector disowOverdlambda(3);
00088     disowOverdlambda(0) = G * lambda_wave_in(0) ;
00089     disowOverdlambda(1) = G * lambda_wave_in(1) ;
00090     disowOverdlambda(2) = G * lambda_wave_in(2) ;
00091 
00092     return disowOverdlambda;
00093   }
00094 
00095 //================================================================================
00096 // d2(iso)w / d(lambda)2
00097 //================================================================================
00098 const Vector  NeoHookeanWEnergy::d2isowOdlambda2(const Vector &lambda_wave_in )
00099   {
00100     Vector d2isowOverdlambda2(3);
00101     d2isowOverdlambda2(0) = G;
00102     d2isowOverdlambda2(1) = G;
00103     d2isowOverdlambda2(2) = G;
00104     return d2isowOverdlambda2;
00105   }
00106 
00107 
00108 //================================================================================
00109 // d(vol)w / dJ
00110 //================================================================================
00111 const double  NeoHookeanWEnergy::dvolwOdJ(const double &J_in )
00112 {
00113   double temp1 = K * (J_in - 1.0);  // Version I
00114 //  double temp1 = 0.0;
00115   return temp1;
00116 }
00117 
00118 //================================================================================
00119 // d2(vol)w / dJ2
00120 //================================================================================
00121 const double  NeoHookeanWEnergy::d2volwOdJ2(const double &J_in )
00122 {
00123   double temp2 = K ;  // version I
00124 //  double temp2 = 0.0;
00125   return temp2;
00126 }
00127 
00128 
00129 #endif
00130 

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