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 MooneyRivlinWEnergy_CPP
00030 #define MooneyRivlinWEnergy_CPP
00031
00032 #include <MooneyRivlinWEnergy.h>
00033
00034
00035
00036
00037 MooneyRivlinWEnergy::MooneyRivlinWEnergy( double c1_in, double c2_in)
00038 : c1(c1_in), c2(c2_in)
00039 {
00040
00041 }
00042
00043 MooneyRivlinWEnergy::MooneyRivlinWEnergy( )
00044 : c1(0.0), c2(0.0)
00045 {
00046
00047 }
00048
00049
00050
00051
00052 MooneyRivlinWEnergy::~MooneyRivlinWEnergy( )
00053 {
00054
00055 }
00056
00057
00058
00059
00060 WEnergy * MooneyRivlinWEnergy::newObj()
00061 {
00062 WEnergy *new_WEnergy = new MooneyRivlinWEnergy (c1, c2);
00063 return new_WEnergy;
00064 }
00065
00066
00067
00068
00069
00070 const double MooneyRivlinWEnergy::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 MooneyRivlinWEnergy::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 MooneyRivlinWEnergy::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 #endif
00108