00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef MooneyRivlinSimoWEnergy_CPP
00030 #define MooneyRivlinSimoWEnergy_CPP
00031
00032 #include <MooneyRivlinSimoWEnergy.h>
00033
00034
00035
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
00051
00052 MooneyRivlinSimoWEnergy::~MooneyRivlinSimoWEnergy( )
00053 {
00054
00055 }
00056
00057
00058
00059
00060 WEnergy * MooneyRivlinSimoWEnergy::newObj()
00061 {
00062 WEnergy *new_WEnergy = new MooneyRivlinSimoWEnergy (c1, c2, K);
00063 return new_WEnergy;
00064 }
00065
00066
00067
00068
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
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
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
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
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