#----------------------------------------------------------------------------------------
# fichier a inclure dans un autre fichier gnuplot
#   => syntaxe : load 'gnu_loi_MAT_HYPER'
#----------------------------------------------------------------------------------------
# contient les fonctions specifiques a la loi MAT_HYPER (fichier parametres : MAT_HYPER.make_W)
#----------------------------------------------------------------------------------------


#----------------------------
#(potSph_1_MAT_HYPER) potentiel W_sph_2, invariant Iv_n_v2
C__gamma_potSph_1_MAT_HYPER = 1. #W_sph_2
C__K_potSph_1_MAT_HYPER = 2000. #W_sph_2
C__n_potSph_1_MAT_HYPER = 0. #Iv_n_v2

W_potSph_1_MAT_HYPER(l1,l2,l3) = C__gamma_potSph_1_MAT_HYPER*C__K_potSph_1_MAT_HYPER*(1.-V(l1,l2,l3)+V(l1,l2,l3)*log(V(l1,l2,l3)))
d1_dV_W_potSph_1_MAT_HYPER(l1,l2,l3) = C__gamma_potSph_1_MAT_HYPER*C__K_potSph_1_MAT_HYPER*(log(V(l1,l2,l3)))
d2_dV_W_potSph_1_MAT_HYPER(l1,l2,l3) = C__gamma_potSph_1_MAT_HYPER*C__K_potSph_1_MAT_HYPER*(V(l1,l2,l3)**-1)
#----------------------------

#----------------------------
#(potDev_2_MAT_HYPER) potentiel W_dev_2, invariant Ibar_n_v1
C__gamma_potDev_2_MAT_HYPER = 1. #W_dev_2
C__mu_potDev_2_MAT_HYPER = 5. #W_dev_2
C__w2_potDev_2_MAT_HYPER = 1. #Ibar_n_v1
C__n_potDev_2_MAT_HYPER = 1. #Ibar_n_v1
C__c_r_potDev_2_MAT_HYPER = 1.e-12 #Ibar_n_v1
C__w1_potDev_2_MAT_HYPER = 1. #Ibar_n_v1

W_potDev_2_MAT_HYPER(l1,l2,l3) = C__gamma_potDev_2_MAT_HYPER*C__mu_potDev_2_MAT_HYPER*((C__w1_potDev_2_MAT_HYPER*Ibar_1(l1,l2,l3)+C__w2_potDev_2_MAT_HYPER*Ibar_2(l1,l2,l3)-3.*(C__w1_potDev_2_MAT_HYPER+C__w2_potDev_2_MAT_HYPER)+C__c_r_potDev_2_MAT_HYPER)**C__n_potDev_2_MAT_HYPER)
d1_dIbar_1_W_potDev_2_MAT_HYPER(l1,l2,l3) = C__gamma_potDev_2_MAT_HYPER*C__mu_potDev_2_MAT_HYPER*(C__n_potDev_2_MAT_HYPER*C__w1_potDev_2_MAT_HYPER*(C__w1_potDev_2_MAT_HYPER*Ibar_1(l1,l2,l3)+C__w2_potDev_2_MAT_HYPER*Ibar_2(l1,l2,l3)-3.*(C__w1_potDev_2_MAT_HYPER+C__w2_potDev_2_MAT_HYPER)+C__c_r_potDev_2_MAT_HYPER)**(C__n_potDev_2_MAT_HYPER-1.))
d1_dIbar_2_W_potDev_2_MAT_HYPER(l1,l2,l3) = C__gamma_potDev_2_MAT_HYPER*C__mu_potDev_2_MAT_HYPER*(C__n_potDev_2_MAT_HYPER*C__w2_potDev_2_MAT_HYPER*(C__w1_potDev_2_MAT_HYPER*Ibar_1(l1,l2,l3)+C__w2_potDev_2_MAT_HYPER*Ibar_2(l1,l2,l3)-3.*(C__w1_potDev_2_MAT_HYPER+C__w2_potDev_2_MAT_HYPER)+C__c_r_potDev_2_MAT_HYPER)**(C__n_potDev_2_MAT_HYPER-1.))
d2_dIbar_1_W_potDev_2_MAT_HYPER(l1,l2,l3) = C__gamma_potDev_2_MAT_HYPER*C__mu_potDev_2_MAT_HYPER*(C__n_potDev_2_MAT_HYPER*(C__n_potDev_2_MAT_HYPER-1.)*C__w1_potDev_2_MAT_HYPER**2*(C__w1_potDev_2_MAT_HYPER*Ibar_1(l1,l2,l3)+C__w2_potDev_2_MAT_HYPER*Ibar_2(l1,l2,l3)-3.*(C__w1_potDev_2_MAT_HYPER+C__w2_potDev_2_MAT_HYPER)+C__c_r_potDev_2_MAT_HYPER)**(C__n_potDev_2_MAT_HYPER-2.))
d2_dIbar_2_W_potDev_2_MAT_HYPER(l1,l2,l3) = C__gamma_potDev_2_MAT_HYPER*C__mu_potDev_2_MAT_HYPER*(C__n_potDev_2_MAT_HYPER*(C__n_potDev_2_MAT_HYPER-1.)*C__w2_potDev_2_MAT_HYPER**2*(C__w1_potDev_2_MAT_HYPER*Ibar_1(l1,l2,l3)+C__w2_potDev_2_MAT_HYPER*Ibar_2(l1,l2,l3)-3.*(C__w1_potDev_2_MAT_HYPER+C__w2_potDev_2_MAT_HYPER)+C__c_r_potDev_2_MAT_HYPER)**(C__n_potDev_2_MAT_HYPER-2.))
d2_dIbar_1_dIbar_2_W_potDev_2_MAT_HYPER(l1,l2,l3) = C__gamma_potDev_2_MAT_HYPER*C__mu_potDev_2_MAT_HYPER*(C__n_potDev_2_MAT_HYPER*(C__n_potDev_2_MAT_HYPER-1.)*C__w1_potDev_2_MAT_HYPER*C__w2_potDev_2_MAT_HYPER*(C__w1_potDev_2_MAT_HYPER*Ibar_1(l1,l2,l3)+C__w2_potDev_2_MAT_HYPER*Ibar_2(l1,l2,l3)-3.*(C__w1_potDev_2_MAT_HYPER+C__w2_potDev_2_MAT_HYPER)+C__c_r_potDev_2_MAT_HYPER)**(C__n_potDev_2_MAT_HYPER-2.))

S11_W_potDev_2_MAT_HYPER(l1,l2,l3) = 2.*V(l1,l2,l3)**-1*((d1_dIbar_1_W_potDev_2_MAT_HYPER(l1,l2,l3) + \
                         Ibar_1(l1,l2,l3)*d1_dIbar_2_W_potDev_2_MAT_HYPER(l1,l2,l3))*Bbarre_dev_11(l1,l2,l3) - \
                         d1_dIbar_2_W_potDev_2_MAT_HYPER(l1,l2,l3)*Bbarre_Bbarre_dev_11(l1,l2,l3))
S22_W_potDev_2_MAT_HYPER(l1,l2,l3) = 2.*V(l1,l2,l3)**-1*((d1_dIbar_1_W_potDev_2_MAT_HYPER(l1,l2,l3) + \
                         Ibar_1(l1,l2,l3)*d1_dIbar_2_W_potDev_2_MAT_HYPER(l1,l2,l3))*Bbarre_dev_22(l1,l2,l3) - \
                         d1_dIbar_2_W_potDev_2_MAT_HYPER(l1,l2,l3)*Bbarre_Bbarre_dev_22(l1,l2,l3))
S33_W_potDev_2_MAT_HYPER(l1,l2,l3) = 2.*V(l1,l2,l3)**-1*((d1_dIbar_1_W_potDev_2_MAT_HYPER(l1,l2,l3) + \
                         Ibar_1(l1,l2,l3)*d1_dIbar_2_W_potDev_2_MAT_HYPER(l1,l2,l3))*Bbarre_dev_33(l1,l2,l3) - \
                         d1_dIbar_2_W_potDev_2_MAT_HYPER(l1,l2,l3)*Bbarre_Bbarre_dev_33(l1,l2,l3))
#----------------------------


#--------------------------------
# alias vers derivees potentiel
#    - Wv = d W / dV
#    - Wvv = d2 W / dV 2
#    - Wp_1 = d W / d Ibar_1
#    - Wp_2 = d W / d Ibar_2
#    - Wpp_1 = d2 W / d Ibar_1 2
#    - Wpp_2 = d2 W / d Ibar_2 2
#    - Wpp_12 = d2 W / d Ibar_1 / d Ibar_2
#--------------------------------
Wv_MAT_HYPER(l1,l2,l3) = \
    d1_dV_W_potSph_1_MAT_HYPER(l1,l2,l3)
Wvv_MAT_HYPER(l1,l2,l3) = \
    d2_dV_W_potSph_1_MAT_HYPER(l1,l2,l3)
Wp_1_MAT_HYPER(l1,l2,l3) = \
    d1_dIbar_1_W_potDev_2_MAT_HYPER(l1,l2,l3)
Wp_2_MAT_HYPER(l1,l2,l3) = \
    d1_dIbar_2_W_potDev_2_MAT_HYPER(l1,l2,l3)
Wpp_1_MAT_HYPER(l1,l2,l3) = \
    d2_dIbar_1_W_potDev_2_MAT_HYPER(l1,l2,l3)
Wpp_2_MAT_HYPER(l1,l2,l3) = \
    d2_dIbar_2_W_potDev_2_MAT_HYPER(l1,l2,l3)
Wpp_12_MAT_HYPER(l1,l2,l3) = \
    d2_dIbar_1_dIbar_2_W_potDev_2_MAT_HYPER(l1,l2,l3)
#--------------------------------


#--------------------------------
# pression hydro et tenseur dev
#--------------------------------
hydro_W_MAT_HYPER(l1,l2,l3) = Wv_MAT_HYPER(l1,l2,l3)
S11_W_MAT_HYPER(l1,l2,l3) = \
    S11_W_potDev_2_MAT_HYPER(l1,l2,l3)
S22_W_MAT_HYPER(l1,l2,l3) = \
    S22_W_potDev_2_MAT_HYPER(l1,l2,l3)
S33_W_MAT_HYPER(l1,l2,l3) = \
    S33_W_potDev_2_MAT_HYPER(l1,l2,l3)
#--------------------------------


#--------------------------------
# contrainte totale
#--------------------------------
SIG11_W_MAT_HYPER(l1,l2,l3) = hydro_W_MAT_HYPER(l1,l2,l3) + S11_W_MAT_HYPER(l1,l2,l3)
SIG22_W_MAT_HYPER(l1,l2,l3) = hydro_W_MAT_HYPER(l1,l2,l3) + S22_W_MAT_HYPER(l1,l2,l3)
SIG33_W_MAT_HYPER(l1,l2,l3) = hydro_W_MAT_HYPER(l1,l2,l3) + S33_W_MAT_HYPER(l1,l2,l3)
#--------------------------------


#----------------------------------------------------
# Kt en fonction de derivee seconde potentiel (Wvv)
# et derivee temporelle de pression hydro : -p_point = Kt*V_point/V = Kt*trace(D)
#----------------------------------------------------
Kt_MAT_HYPER(l1,l2,l3) = V(l1,l2,l3)*Wvv_MAT_HYPER(l1,l2,l3)
mp_point_MAT_HYPER(l1,l2,l3,l1_point,l2_point,l3_point) = Kt_MAT_HYPER(l1,l2,l3)*trace_D(l1,l2,l3,l1_point,l2_point,l3_point)
#----------------------------------------------------


#----------------------------------------------------
# derivee temporelle deviateur contrainte : devSIG_point
#----------------------------------------------------
#composante 11
devSIG_11_point_MAT_HYPER(l1,l2,l3,l1_point,l2_point,l3_point) = \
V(l1,l2,l3)**-1 * \
( \
\
2.*Bbarre_dev_11(l1,l2,l3) * \
( \
 -trace_D(l1,l2,l3,l1_point,l2_point,l3_point)*(Wp_1_MAT_HYPER(l1,l2,l3) + Wp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3)) \
 +2.*trace_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*(Wpp_1_MAT_HYPER(l1,l2,l3) + \
                                                               2.*Wpp_12_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3) + \
                                                               Wp_2_MAT_HYPER(l1,l2,l3) + \
                                                               Wpp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3)**2 \
                                                              ) \
 -2.*trace_Bbarre_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*(Wpp_12_MAT_HYPER(l1,l2,l3) + \
                                                                      Wpp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3) \
                                                                     ) \
) + \
\
2.*Bbarre_Bbarre_dev_11(l1,l2,l3) * \
( \
  trace_D(l1,l2,l3,l1_point,l2_point,l3_point)*Wp_2_MAT_HYPER(l1,l2,l3) \
 -2.*trace_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*(Wpp_12_MAT_HYPER(l1,l2,l3) + \
                                                               Wpp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3) \
                                                              ) \
 +2.*trace_Bbarre_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*Wpp_2_MAT_HYPER(l1,l2,l3) \
) + \
\
2.*Bbarre_Dbarre_dev_11(l1,l2,l3,l1_point,l2_point,l3_point) * \
( \
 2*(Wp_1_MAT_HYPER(l1,l2,l3) + Wp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3)) \
) + \
\
2.*Bbarre_Bbarre_Dbarre_dev_11(l1,l2,l3,l1_point,l2_point,l3_point) * \
( \
 -4.*Wp_2_MAT_HYPER(l1,l2,l3) \
) \
\
)

#composante 22
devSIG_22_point_MAT_HYPER(l1,l2,l3,l1_point,l2_point,l3_point) = \
V(l1,l2,l3)**-1 * \
( \
\
2.*Bbarre_dev_22(l1,l2,l3) * \
( \
 -trace_D(l1,l2,l3,l1_point,l2_point,l3_point)*(Wp_1_MAT_HYPER(l1,l2,l3) + Wp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3)) \
 +2.*trace_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*(Wpp_1_MAT_HYPER(l1,l2,l3) + \
                                                               2.*Wpp_12_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3) + \
                                                               Wp_2_MAT_HYPER(l1,l2,l3) + \
                                                               Wpp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3)**2 \
                                                              ) \
 -2.*trace_Bbarre_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*(Wpp_12_MAT_HYPER(l1,l2,l3) + \
                                                                      Wpp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3) \
                                                                     ) \
) + \
\
2.*Bbarre_Bbarre_dev_22(l1,l2,l3) * \
( \
  trace_D(l1,l2,l3,l1_point,l2_point,l3_point)*Wp_2_MAT_HYPER(l1,l2,l3) \
 -2.*trace_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*(Wpp_12_MAT_HYPER(l1,l2,l3) + \
                                                               Wpp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3) \
                                                              ) \
 +2.*trace_Bbarre_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*Wpp_2_MAT_HYPER(l1,l2,l3) \
) + \
\
2.*Bbarre_Dbarre_dev_22(l1,l2,l3,l1_point,l2_point,l3_point) * \
( \
 2*(Wp_1_MAT_HYPER(l1,l2,l3) + Wp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3)) \
) + \
\
2.*Bbarre_Bbarre_Dbarre_dev_22(l1,l2,l3,l1_point,l2_point,l3_point) * \
( \
 -4.*Wp_2_MAT_HYPER(l1,l2,l3) \
) \
\
)

#composante 33
devSIG_33_point_MAT_HYPER(l1,l2,l3,l1_point,l2_point,l3_point) = \
V(l1,l2,l3)**-1 * \
( \
\
2.*Bbarre_dev_33(l1,l2,l3) * \
( \
 -trace_D(l1,l2,l3,l1_point,l2_point,l3_point)*(Wp_1_MAT_HYPER(l1,l2,l3) + Wp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3)) \
 +2.*trace_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*(Wpp_1_MAT_HYPER(l1,l2,l3) + \
                                                               2.*Wpp_12_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3) + \
                                                               Wp_2_MAT_HYPER(l1,l2,l3) + \
                                                               Wpp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3)**2 \
                                                              ) \
 -2.*trace_Bbarre_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*(Wpp_12_MAT_HYPER(l1,l2,l3) + \
                                                                      Wpp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3) \
                                                                     ) \
) + \
\
2.*Bbarre_Bbarre_dev_33(l1,l2,l3) * \
( \
  trace_D(l1,l2,l3,l1_point,l2_point,l3_point)*Wp_2_MAT_HYPER(l1,l2,l3) \
 -2.*trace_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*(Wpp_12_MAT_HYPER(l1,l2,l3) + \
                                                               Wpp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3) \
                                                              ) \
 +2.*trace_Bbarre_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*Wpp_2_MAT_HYPER(l1,l2,l3) \
) + \
\
2.*Bbarre_Dbarre_dev_33(l1,l2,l3,l1_point,l2_point,l3_point) * \
( \
 2*(Wp_1_MAT_HYPER(l1,l2,l3) + Wp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3)) \
) + \
\
2.*Bbarre_Bbarre_Dbarre_dev_33(l1,l2,l3,l1_point,l2_point,l3_point) * \
( \
 -4.*Wp_2_MAT_HYPER(l1,l2,l3) \
) \
\
)
#----------------------------------------------------


#----------------------------------------------------
# Gt = 1/2 * (devSIG : Dbarre) / (Dbarre : Dbarre)
#----------------------------------------------------
Gt_MAT_HYPER(l1,l2,l3,l1_point,l2_point,l3_point) = \
1./(2.*V(l1,l2,l3)) * 1./trace_Dbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point) * \
(\
2.*trace_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point) * \
( \
 -trace_D(l1,l2,l3,l1_point,l2_point,l3_point)*(Wp_1_MAT_HYPER(l1,l2,l3) + Wp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3)) \
 +2.*trace_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*(Wpp_1_MAT_HYPER(l1,l2,l3) + \
                                                               2.*Wpp_12_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3) + \
                                                               Wp_2_MAT_HYPER(l1,l2,l3) + \
                                                               Wpp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3)**2 \
                                                              ) \
 -2.*trace_Bbarre_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*(Wpp_12_MAT_HYPER(l1,l2,l3) + \
                                                                      Wpp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3) \
                                                                     ) \
) + \
\
2.*trace_Bbarre_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point) * \
( \
  trace_D(l1,l2,l3,l1_point,l2_point,l3_point)*Wp_2_MAT_HYPER(l1,l2,l3) \
 -2.*trace_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*(Wpp_12_MAT_HYPER(l1,l2,l3) + \
                                                               Wpp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3) \
                                                              ) \
 +2.*trace_Bbarre_Bbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point)*Wpp_2_MAT_HYPER(l1,l2,l3) \
) + \
\
2.*trace_Bbarre_Dbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point) * \
( \
 2*(Wp_1_MAT_HYPER(l1,l2,l3) + Wp_2_MAT_HYPER(l1,l2,l3)*Ibar_1(l1,l2,l3)) \
) + \
\
2.*trace_Bbarre_Bbarre_Dbarre_Dbarre(l1,l2,l3,l1_point,l2_point,l3_point) * \
( \
 -4.*Wp_2_MAT_HYPER(l1,l2,l3) \
) \
)
#----------------------------------------------------
