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

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