diff --git a/NonLinearSolver/materialLaw/mlawHyperelastic.cpp b/NonLinearSolver/materialLaw/mlawHyperelastic.cpp
index 222d0f41b6e3c7d4b18e36deb51131a6b618d8b9..52203c66306d22634176a89e0f90859419b45565 100644
--- a/NonLinearSolver/materialLaw/mlawHyperelastic.cpp
+++ b/NonLinearSolver/materialLaw/mlawHyperelastic.cpp
@@ -858,6 +858,7 @@ void mlawPowerYieldHyper::predictorCorrector_nonAssociatedFlow(const STensor3& F
 
   double DfDGamma = 0.;
   double dfdDgamma = 0.;
+  double dfdGamma = 0.; //FLE
   double u = 1.;
   double v = 1.;
 
@@ -887,17 +888,41 @@ void mlawPowerYieldHyper::predictorCorrector_nonAssociatedFlow(const STensor3& F
         if (_viscosity != NULL)
           _viscosity->get(q1->_epspbarre,eta,Deta);
         double etaOverDt = eta/this->getTimeStep();
+        double dPhiPdGamma = -2*Kt*_b*ptilde/v;
+        double dPhiEdGamma = -6*Gt*PhiEq/u;
+        double dAdGamma_TVP = (12*PhiEq*dPhiEdGamma + 8*_b*_b*ptilde*dPhiPdGamma/3)/(2.*A);
         double dAdGamma = -(72.*Gt*PhiEq*PhiEq/u+ 16.*Kt*_b*_b*_b*ptilde*ptilde/(3.*v))/(2.*A);
         dDgammaDGamma = kk*(A+Gamma*dAdGamma);
 
         this->getYieldCoefficientDerivatives(q1,q1->_nup,Da);
+        
+        
+        // DEBUG  // FLE
+        double a0 = a(0);
+        double a1 = a(1);
+        double a2 = a(2);
+        double da0 = Da(0);
+        double da1 = Da(1);
+        double da2 = Da(2);
+        
         dfdDgamma = Da(2)*pow(PhiEq,_n) - Da(1)*ptilde -Da(0);
         if (Gamma>0 and etaOverDt>0)
           dfdDgamma -= _p*pow(etaOverDt,_p-1.)*Deta/this->getTimeStep()*pow(Gamma,_p);
+          
+        dfdGamma = _n*a(2)*pow(PhiEq,(_n-1))*dPhiEdGamma - a(1)*dPhiPdGamma;
+        if (Gamma>0 and etaOverDt>0)
+          dfdGamma -= pow(etaOverDt,_p)*_p*pow(Gamma,(_p-1.));
 
         DfDGamma = dfdDgamma*dDgammaDGamma - (_n*a(2)*6.*Gt)*pow(PhiEq,_n)/u + a(1)*ptilde*2.*_b*Kt/v;
         if (Gamma>0 and etaOverDt>0)
-          DfDGamma -=pow(etaOverDt,_p)*_p*pow(Gamma,_p-1.);
+          DfDGamma -= pow(etaOverDt,_p)*_p*pow(Gamma,_p-1.);
+         
+        Msg::Error("dDgammaDGamma = %e, iter = %d",dDgammaDGamma, ite);
+        Msg::Error("dfdDgamma = %e, iter = %d",dfdDgamma, ite);
+        Msg::Error("dfdGamma = %e, iter = %d",dfdGamma, ite);
+        Msg::Error("DfDGamma = %e, iter = %d",DfDGamma, ite);
+        Msg::Error("Gamma = %e, iter = %d",Gamma, ite);
+        Msg::Error("Dgamma = %e, iter = %d",Dgamma, ite);
 
         double dGamma = -f/DfDGamma;
 
@@ -1064,6 +1089,14 @@ void mlawPowerYieldHyper::predictorCorrector_nonAssociatedFlow(const STensor3& F
     if (Gamma >0){
       // plastic
       static STensor3 dAdCepr, dfDCepr;
+      
+      // DEBUG FLE
+        double a0 = a(0);
+        double a1 = a(1);
+        double a2 = a(2);
+        double da0 = Da(0);
+        double da1 = Da(1);
+        double da2 = Da(2);
 
       double fact = 1.5*a(2)*_n*pow(PhiEq,_n-2.)/(u*u);
       for (int i=0; i<3; i++){
@@ -1088,7 +1121,7 @@ void mlawPowerYieldHyper::predictorCorrector_nonAssociatedFlow(const STensor3& F
 
       for (int i=0; i<3; i++){
         for (int j=0; j<3; j++){
-          DgamaDCepr(i,j) = kk*Gamma*dAdCepr(i,j)+ kk*dDgammaDGamma*DGDCepr(i,j);
+          DgamaDCepr(i,j) = kk*Gamma*dAdCepr(i,j)+ dDgammaDGamma*DGDCepr(i,j);
         }
       }
 
diff --git a/NonLinearSolver/materialLaw/mlawNonLinearTVE.cpp b/NonLinearSolver/materialLaw/mlawNonLinearTVE.cpp
index 4d054cc05cc5c091ef6654e967bfe44d72c96e35..136d84f42ddcff181fb71a5da0e184419fd29351 100644
--- a/NonLinearSolver/materialLaw/mlawNonLinearTVE.cpp
+++ b/NonLinearSolver/materialLaw/mlawNonLinearTVE.cpp
@@ -1853,6 +1853,7 @@ void mlawNonLinearTVE::predictorCorrector_ThermoViscoElastic(
             for (int i=0; i<3; i++){
                 for (int j=0; j<3; j++){
                     for (int k=0; k<3; k++){
+                        // Msg::Info("dfluxTdF->J: Jacobian= %e",J);
                         dfluxTdF(i,j,k) += (DJDF(j,k)*fluxT(i)/J);
                         for (int l=0; l<3; l++){
                             dfluxTdF(i,j,k) -= (J*DCinvDF(i,l,j,k)*gradT(l)*KThConT);
diff --git a/NonLinearSolver/materialLaw/mlawNonLinearTVP.cpp b/NonLinearSolver/materialLaw/mlawNonLinearTVP.cpp
index 6ea7b7adda34c0681bdbf6365ef26289eb74b75f..aceaccba6b03109330304b429ff7994f7c5f9908 100644
--- a/NonLinearSolver/materialLaw/mlawNonLinearTVP.cpp
+++ b/NonLinearSolver/materialLaw/mlawNonLinearTVP.cpp
@@ -219,21 +219,21 @@ void mlawNonLinearTVP::getYieldCoefficientTempDers(const IPNonLinearTVP *q1, con
   DDcoeffsDTT.resize(3);
   double m = sigt/sigc;
   double DmDT = (dsigtdT*sigc- sigt*dsigcdT)/(sigc*sigc); 
-  double DDmDTT = (ddsigtdTT*sigc - sigt*ddsigcdTT)/(sigc*sigc) - 2*(dsigtdT*sigc- sigt*dsigcdT)/(sigc*sigc*sigc)*dsigcdT;
+  double DDmDTT = (ddsigtdTT*sigc - sigt*ddsigcdTT)/(sigc*sigc) - 2.*(dsigtdT*sigc- sigt*dsigcdT)/(sigc*sigc*sigc)*dsigcdT;
   double Da1Dm = 3./sigc*(_n*pow(m,_n-1.)/(m+1.) - (pow(m,_n)-1.)/(m+1.)/(m+1.));
-  double DDa1Dmm = 3./sigc*(_n*(_n-1)*pow(m,_n-2.)/(m+1.) - _n*(pow(m,_n)-1.)/(m+1.)/(m+1.) - _n*pow(m,_n-1)/(m+1.)/(m+1.) + 2.*(pow(m,_n)-1.)/(m+1.)/(m+1.)/(m+1.));
+  double DDa1Dmm = 3./sigc*(_n*(_n-1.)*pow(m,_n-2.)/(m+1.) - _n*(pow(m,_n)-1.)/(m+1.)/(m+1.) - _n*pow(m,_n-1)/(m+1.)/(m+1.) + 2.*(pow(m,_n)-1.)/(m+1.)/(m+1.)/(m+1.));
   double term = _n*pow(m,_n) + _n*pow(m,_n-1.) - pow(m,_n);
-  double dterm = pow(_n,2)*pow(m,_n-1.) + _n*(_n-1)*pow(m,_n-2.) - _n*pow(m,_n-1);
+  double dterm = pow(_n,2.)*pow(m,_n-1.) + _n*(_n-1)*pow(m,_n-2.) - _n*pow(m,_n-1.);
 
   DcoeffsDT(2) = -_n*pow(sigc,-_n-1.)*dsigcdT;
-  DcoeffsDT(1) = Da1Dm*DmDT - 3.*(pow(m,_n)-1.)/(m+1.)/(sigc*sigc)*dsigcdT;
-  DcoeffsDT(0) = ((_n*pow(m,_n-1)+1.)/(m+1) - (pow(m,_n)+m)/(m+1.)/(m+1.))*DmDT;
+  DcoeffsDT(1) = Da1Dm*DmDT + 3.*(pow(m,_n)-1.)/(m+1.)/(sigc*sigc)*dsigcdT;
+  DcoeffsDT(0) = ((_n*pow(m,_n-1.)+1.)/(m+1.) - (pow(m,_n)+m)/(m+1.)/(m+1.))*DmDT;
   
-  DDcoeffsDTT(2) = -_n*pow(sigc,-_n-1.)*ddsigcdTT -_n*(-_n-1)*pow(sigc,-_n-2.)*dsigcdT*dsigcdT;
-  DDcoeffsDTT(1) = -1/sigc*dsigcdT*DcoeffsDT(1) + 3/sigc*( (dterm/(m+1.)/(m+1.) -2*term/(m+1.)/(m+1.)/(m+1.))*DmDT*DmDT + term/(m+1.)/(m+1.)*DDmDTT
-                   + 1/sigc*( (1/sigc*pow(dsigtdT,2) - ddsigcdTT) * (pow(m,_n)-1.)/(m+1.)  + dsigtdT * term/(m+1.)/(m+1.) ) );
-  DDcoeffsDTT(0) = ((_n*pow(m,_n-1)+1.)/(m+1) - (pow(m,_n)+m)/(m+1.)/(m+1.))*DDmDTT 
-                    + ((_n*(_n-1)*pow(m,_n-2))/(m+1) + 2*(pow(m,_n)+m)/(m+1.)/(m+1.)/(m+1.))*DmDT*DmDT;
+  DDcoeffsDTT(2) = -_n*pow(sigc,-_n-1.)*ddsigcdTT -_n*(-_n-1.)*pow(sigc,-_n-2.)*dsigcdT*dsigcdT;
+  DDcoeffsDTT(1) = -1./sigc*dsigcdT*DcoeffsDT(1) + 3./sigc*( (dterm/(m+1.)/(m+1.) -2.*term/(m+1.)/(m+1.)/(m+1.))*DmDT*DmDT + term/(m+1.)/(m+1.)*DDmDTT
+                   + 1./sigc*( (1./sigc*pow(dsigtdT,2.) - ddsigcdTT) * (pow(m,_n)-1.)/(m+1.)  + dsigtdT * term/(m+1.)/(m+1.) ) );
+  DDcoeffsDTT(0) = ((_n*pow(m,_n-1.)+1.)/(m+1) - (pow(m,_n)+m)/(m+1.)/(m+1.))*DDmDTT 
+                    + ((_n*(_n-1.)*pow(m,_n-2.))/(m+1.) + 2.*(pow(m,_n)+m)/(m+1.)/(m+1.)/(m+1.))*DmDT*DmDT;
     
 };
 
@@ -1229,6 +1229,15 @@ void mlawNonLinearTVP::plasticCorrector_TVP(const STensor3& F0, const STensor3&
         dDgammaDGamma = kk*(A+Gamma*dAdGamma);  // mistake in the paper (VD 2016)
 
         this->getYieldCoefficientDerivatives(q1,q1->_nup,Da);
+         
+        // DEBUG  // FLE
+        double a0 = a(0);
+        double a1 = a(1);
+        double a2 = a(2);
+        double da0 = Da(0);
+        double da1 = Da(1);
+        double da2 = Da(2);
+        
         dfdDgamma = Da(2)*pow(PhiEq,_n) - Da(1)*ptilde -Da(0);
         dfdDgamma += a(2)*_n*pow(PhiEq,(_n-1))*He - a(1)*Hp;
 
@@ -1501,7 +1510,7 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
   static STensor3 devXn, devX;
   static double trXn, pXn, eXn, trX;
   STensorOperation::decomposeDevTr(q0->_backsig,devXn,trXn); // needed for chaboche model
-  pXn = 1/3*trXn;  // 1st invariant of Xn
+  pXn = 1./3.*trXn;  // 1st invariant of Xn
   eXn = sqrt(1.5*devXn.dotprod()); // J2 invariant of Xn
 
   // Initialise Phipr
@@ -1541,15 +1550,15 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
   double v = 1.;
 
   // Initialise Cx, Gt, Kt
-  double Cxdev = 1. + 3*m(1)*pow(kk,1)*Hb; // pow(kk,2) DEBUG
-  double Cxtr = 1. + 2*_b/3 *m(1)*pow(kk,1)*Hb; // pow(kk,2) DEBUG
+  double Cxdev = 1. + 3.*m(1)*pow(kk,1.)*Hb; // pow(kk,2) DEBUG
+  double Cxtr = 1. + 2.*_b/3. *m(1)*pow(kk,1.)*Hb; // pow(kk,2) DEBUG
   double dCxdevdDgamma(0.), dCxtrdDgamma(0.), dudDgamma(0.), dvdDgamma(0.), dudGamma(0.), dvdGamma(0.);
   if (Hb>0.){
-    Cxdev -= m(0)*dHb*Dgamma/Hb + 1/Hb * dHbdT * (T-T0);
-    Cxtr -= m(0)*dHb*Dgamma/Hb + 1/Hb * dHbdT * (T-T0);
+    Cxdev -= m(0)*dHb*Dgamma/Hb + 1./Hb * dHbdT * (T-T0);
+    Cxtr -= m(0)*dHb*Dgamma/Hb + 1./Hb * dHbdT * (T-T0);
   }
-  double Gt = Ge + pow(kk,1) * Hb/(2*Cxdev); // pow(kk,2) DEBUG
-  double Kt = Ke + pow(kk,1) * Hb/(3*Cxtr); // pow(kk,2) DEBUG
+  double Gt = Ge + pow(kk,1.) * Hb/(2.*Cxdev); // pow(kk,2) DEBUG
+  double Kt = Ke + pow(kk,1.) * Hb/(3.*Cxtr); // pow(kk,2) DEBUG
 
   // Initialise ptilde and devPhi (phi)
   ptilde = ptildepr; // current effective pressure  -> first invariant
@@ -1588,31 +1597,31 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
         // Get dCxdevdDgamma, dCxtrdDgamma, dudDgamma dvdDgamma, dudGamma, dvdGamma
         dCxdevdDgamma = 0.; dCxtrdDgamma = 0.;
         if (Hb>0.){
-          dCxdevdDgamma = -m(0)*1/Hb*dHb - m(0)*Dgamma*(-1/pow(Hb,2)*pow(dHb,2) + 1/Hb*ddHb) - (T-T0)*(-1/pow(Hb,2)*dHb*dHbdT + 1/Hb*ddHbdgammadT);
+          dCxdevdDgamma = -m(0)*1./Hb*dHb - m(0)*Dgamma*(-1./pow(Hb,2.)*pow(dHb,2.) + 1./Hb*ddHb) - (T-T0)*(-1./pow(Hb,2.)*dHb*dHbdT + 1./Hb*ddHbdgammadT);
           dCxtrdDgamma = dCxdevdDgamma;
         }
-        dCxdevdDgamma += 3*m(1)*pow(kk,1)*dHb; // pow(kk,2) DEBUG
-        dCxtrdDgamma += (2*_b/3)*m(1)*pow(kk,1)*dHb; // pow(kk,2) DEBUG
+        dCxdevdDgamma += 3.*m(1)*pow(kk,1.)*dHb; // pow(kk,2.) DEBUG
+        dCxtrdDgamma += (2.*_b/3.)*m(1)*pow(kk,1.)*dHb; // pow(kk,2.) DEBUG
 
-        dudDgamma = 6*Gamma*( pow(kk,1)/(2*Cxdev)*dHb - (pow(kk,1)*Hb)/(2*pow(Cxdev,2))*dCxdevdDgamma ); // pow(kk,2) DEBUG
-        dvdDgamma = 2*_b*Gamma*( pow(kk,1)/(3*Cxtr)*dHb - (pow(kk,1)*Hb)/(3*pow(Cxtr,2))*dCxtrdDgamma ); // pow(kk,2) DEBUG
+        dudDgamma = 6.*Gamma*( pow(kk,1.)/(2.*Cxdev)*dHb - (pow(kk,1.)*Hb)/(2.*pow(Cxdev,2.))*dCxdevdDgamma ); // pow(kk,2.) DEBUG
+        dvdDgamma = 2.*_b*Gamma*( pow(kk,1.)/(3.*Cxtr)*dHb - (pow(kk,1.)*Hb)/(3.*pow(Cxtr,2.))*dCxtrdDgamma ); // pow(kk,2.) DEBUG
 
-        dudGamma = 6*(Ge + pow(kk,1)*Hb/(2*Cxdev)); // pow(kk,2) DEBUG
-        dvdGamma = 2*_b*(Ke + pow(kk,1)*Hb/(3*Cxtr)); // pow(kk,2) DEBUG
+        dudGamma = 6.*(Ge + pow(kk,1.)*Hb/(2.*Cxdev)); // pow(kk,2.) DEBUG
+        dvdGamma = 2.*_b*(Ke + pow(kk,1.)*Hb/(3.*Cxtr)); // pow(kk,2.) DEBUG
 
         // Get Hp = dPhiPdDgamma, dPhiPdGamma
         STensor3 dHp_RHS = _I;
-        dHp_RHS *= (1/3*trXn/(pow(Cxtr,2))*dCxtrdDgamma - ptilde*dvdDgamma);
+        dHp_RHS *= (1./3.*trXn/(pow(Cxtr,2.))*dCxtrdDgamma - ptilde*dvdDgamma);
         
         /*
-        double Hp = STensorOperation::doubledot(Dho4_v_inv,dHp_RHS); // 1/v*(1/3*trXn/(pow(Cxtr,2))*dCxtrdDgamma - ptilde*dvdDgamma);
-        Hp /= 3;*/
-        double Hp =  1/v*(1/3*trXn/(pow(Cxtr,2))*dCxtrdDgamma - ptilde*dvdDgamma);
+        double Hp = STensorOperation::doubledot(Dho4_v_inv,dHp_RHS); // 1/v*(1./3.*trXn/(pow(Cxtr,2.))*dCxtrdDgamma - ptilde*dvdDgamma);
+        Hp /= 3.;*/
+        double Hp =  (1./3.*trXn/(pow(Cxtr,2.))*dCxtrdDgamma - ptilde*dvdDgamma)/v;
         
         STensor3 dPhiPdGamma_RHS, temp; STensorOperation::multSTensor3STensor43(_I,Dho3,dPhiPdGamma_RHS);
         temp = _I;
         temp *= ptilde*dvdGamma;
-        dPhiPdGamma_RHS *= 2*_b/3*ptilde;
+        dPhiPdGamma_RHS *= 2.*_b/3.*ptilde;
         dPhiPdGamma_RHS -= temp;
         
         /*
@@ -1626,13 +1635,13 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
         STensor3 DdevPhidGamma, DdevPhidGamma_RHS;
         for (int i=0; i<3; i++)
           for (int j=0; j<3; j++){
-            DdevPhidDgamma_RHS(i,j) = devXn(i,j)/(pow(Cxdev,2))*dCxdevdDgamma - dudDgamma*devPhi(i,j);
+            DdevPhidDgamma_RHS(i,j) = devXn(i,j)/(pow(Cxdev,2.))*dCxdevdDgamma - dudDgamma*devPhi(i,j);
             DdevPhidGamma_RHS(i,j) = -dudGamma*devPhi(i,j);
             for (int k=0; k<3; k++)
               for (int l=0; l<3; l++){
-                DdevPhidDgamma_RHS(i,j) += 2*_b/3*Gamma*Dho3(i,j,k,l)*_I(k,l)*Hp; //ADD
+                DdevPhidDgamma_RHS(i,j) += (2.*_b/3.)*Gamma*Dho3(i,j,k,l)*_I(k,l)*Hp; //ADD
                 
-                DdevPhidGamma_RHS(i,j) += 2*_b/3*Gamma*Dho3(i,j,k,l)*_I(k,l)*dPhiPdGamma; //ADD
+                DdevPhidGamma_RHS(i,j) += (2.*_b/3.)*Gamma*Dho3(i,j,k,l)*_I(k,l)*dPhiPdGamma; //ADD
                 
                 DdevPhidGamma_RHS(i,j) += Dho3(i,j,k,l)*N(k,l); // 3*Dho3(i,j,k,l)*devPhi(k,l);
               }
@@ -1736,25 +1745,44 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
      }*/
   
         // dAdGamma and dDgammaDGamma
-        dAdDgamma = (12*PhiEq*He + 8/3*_b*_b*ptilde*Hp)/(2.*A);
-        dAdGamma = (12*PhiEq*dPhiEdGamma + 8/3*_b*_b*ptilde*dPhiPdGamma)/(2.*A);
+        
+        dAdDgamma = (12.*PhiEq*He + 8.*_b*_b*ptilde*Hp/3.)/(2.*A);
+        dAdGamma = (12.*PhiEq*dPhiEdGamma + 8.*_b*_b*ptilde*dPhiPdGamma/3.)/(2.*A);
 
         dDgammaDGamma = kk*(A+Gamma*dAdGamma);  // mistake in the paper (VD 2016)
 
         this->getYieldCoefficientDerivatives(q1,q1->_nup,Da);
+             
+        // DEBUG FLE
+        double a0 = a(0);
+        double a1 = a(1);
+        double a2 = a(2);
+        double da0 = Da(0);
+        double da1 = Da(1);
+        double da2 = Da(2);
+        
         dfdDgamma = Da(2)*pow(PhiEq,_n) - Da(1)*ptilde -Da(0);
-        dfdDgamma += a(2)*_n*pow(PhiEq,(_n-1))*He - a(1)*Hp;
+        dfdDgamma += a(2)*_n*pow(PhiEq,(_n-1.))*He - a(1)*Hp;
 
         if (Gamma>0 and etaOverDt>0)
           dfdDgamma -= _p*pow(etaOverDt,_p-1.)*Deta/this->getTimeStep()*pow(Gamma,_p);  // THIS term is absent in the paper!! WHY??
 
-        dfdGamma = _n*a(2)*pow(PhiEq,(_n-1))*dPhiEdGamma - a(1)*dPhiPdGamma;
+        dfdGamma = _n*a(2)*pow(PhiEq,(_n-1.))*dPhiEdGamma - a(1)*dPhiPdGamma;
         if (Gamma>0 and etaOverDt>0)
           dfdGamma -= pow(etaOverDt,_p)*_p*pow(Gamma,(_p-1.));
 
         DfDGamma = dfdDgamma*dDgammaDGamma + dfdGamma;
+        
+        /*
+        Msg::Error("dDgammaDGamma = %e, iter = %d",dDgammaDGamma, ite);
+        Msg::Error("dfdDgamma = %e, iter = %d",dfdDgamma, ite);
+        Msg::Error("dfdGamma = %e, iter = %d",dfdGamma, ite);
+        Msg::Error("DfDGamma = %e, iter = %d",DfDGamma, ite);
+        Msg::Error("Gamma = %e, iter = %d",Gamma, ite);
+        Msg::Error("Dgamma = %e, iter = %d",Dgamma, ite);*/
+        
 
-        double dgdDgamma = 1 - kk*Gamma*dAdDgamma;
+        double dgdDgamma = 1. - kk*Gamma*dAdDgamma;
         double dgdGamma = - dDgammaDGamma;
         double g = Dgamma - kk*Gamma*A;
 
@@ -1792,14 +1820,14 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
         //a.print("a update");
 
         // Update Cx, u, v
-        Cxdev = 1. + 3*m(1)*pow(kk,1)*Hb;  // pow(kk,2) DEBUG
-        Cxtr = 1. + 2*_b/3 *m(1)*pow(kk,1)*Hb; // pow(kk,2) DEBUG
+        Cxdev = 1. + 3.*m(1)*pow(kk,1.)*Hb;  // pow(kk,2) DEBUG
+        Cxtr = 1. + 2.*_b/3. *m(1)*pow(kk,1.)*Hb; // pow(kk,2) DEBUG
         if (Hb>0.){
-          Cxdev -= m(0)*dHb*Dgamma/Hb - 1/Hb * dHbdT * (T-T0);
-          Cxtr -= m(0)*dHb*Dgamma/Hb - 1/Hb * dHbdT * (T-T0);
+          Cxdev -= m(0)*dHb*Dgamma/Hb - 1./Hb * dHbdT * (T-T0);
+          Cxtr -= m(0)*dHb*Dgamma/Hb - 1./Hb * dHbdT * (T-T0);
         }
-        Gt = Ge + pow(kk,1) * Hb/(2*Cxdev); // pow(kk,2) DEBUG
-        Kt = Ke + pow(kk,1) * Hb/(3*Cxtr); // pow(kk,2) DEBUG
+        Gt = Ge + pow(kk,1.) * Hb/(2.*Cxdev); // pow(kk,2) DEBUG
+        Kt = Ke + pow(kk,1.) * Hb/(3.*Cxtr); // pow(kk,2) DEBUG
         u = 1.+6.*Gt*Gamma;
         v = 1.+2.*_b*Kt*Gamma;
 
@@ -1828,7 +1856,7 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
         // Update f
         f = a(2)*pow(PhiEq,_n) - (a(1)*ptilde+a(0));
         double viscoTerm = etaOverDt*Gamma;
-        if (Gamma>0 and etaOverDt>0) f-= pow(viscoTerm,_p);
+        if (Gamma>0. and etaOverDt>0.) f-= pow(viscoTerm,_p);
 
         ite++;
         //if (ite> maxite-5)
@@ -1846,14 +1874,14 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
     q1->_DgammaDt = Dgamma/this->getTimeStep();
 
     // Correct Cx, u, v
-    Cxdev = 1. + 3*m(1)*pow(kk,1)*Hb;  // pow(kk,2) DEBUG
-    Cxtr = 1. + 2*_b/3 *m(1)*pow(kk,1)*Hb;  // pow(kk,2) DEBUG
+    Cxdev = 1. + 3.*m(1)*pow(kk,1.)*Hb;  // pow(kk,2.) DEBUG
+    Cxtr = 1. + 2.*_b/3. *m(1)*pow(kk,1.)*Hb;  // pow(kk,2.) DEBUG
     if (Hb>0.){
-      Cxdev -= m(0)*dHb*Dgamma/Hb - 1/Hb * dHbdT * (T-T0);
-      Cxtr -= m(0)*dHb*Dgamma/Hb - 1/Hb * dHbdT * (T-T0);
+      Cxdev -= m(0)*dHb*Dgamma/Hb - 1./Hb * dHbdT * (T-T0);
+      Cxtr -= m(0)*dHb*Dgamma/Hb - 1./Hb * dHbdT * (T-T0);
     }
-    Gt = Ge + pow(kk,1) * Hb/(2*Cxdev); // pow(kk,2) DEBUG
-    Kt = Ke + pow(kk,1) * Hb/(3*Cxtr); // pow(kk,2) DEBUG
+    Gt = Ge + pow(kk,1.) * Hb/(2.*Cxdev); // pow(kk,2.) DEBUG
+    Kt = Ke + pow(kk,1.) * Hb/(3.*Cxtr); // pow(kk,2.) DEBUG
     u = 1.+6.*Gt*Gamma;
     v = 1.+2.*_b*Kt*Gamma;
 
@@ -1897,9 +1925,9 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
     // DKDTsum and DGDTsum = sum of bulk/shear moduli derivatives wrt T
 
     // Correct backstress;
-    devX = (pow(kk,1)*Hb*Gamma*devN + devXn); // pow(kk,2) DEBUG
-    devX *= 1/Cxdev;
-    trX = (pow(kk,1)*Hb*Gamma*trN + trXn)*1/Cxtr; // pow(kk,2) DEBUG
+    devX = (pow(kk,1.)*Hb*Gamma*devN + devXn); // pow(kk,2) DEBUG
+    devX *= 1./Cxdev;
+    trX = (pow(kk,1.)*Hb*Gamma*trN + trXn)*1./Cxtr; // pow(kk,2) DEBUG
     q1->_backsig = devX;
     q1->_backsig(0,0) += trX/3.;
     q1->_backsig(1,1) += trX/3.;
@@ -2073,9 +2101,9 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
     DdevphiprDCepr = DdevMeprDCepr;
 
     DphiPDCepr = DphiPprDCepr;
-    DphiPDCepr *= 1/v;
+    DphiPDCepr *= 1./v;
     DdevphiDCepr = DdevphiprDCepr;
-    DdevphiDCepr *= 1/u;
+    DdevphiDCepr *= 1./u;
 
     //5. get DphiEprDCepr from DdevphiDCepr
     static STensor3 DphiEDCepr, DphiEDdevPhi;
@@ -2083,55 +2111,6 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
     DphiEDdevPhi *= 1.5/(PhiEq);
 
     STensorOperation::multSTensor3STensor43(DphiEDdevPhi,DdevphiDCepr,DphiEDCepr);
-    
-    //0.0 Numerical Predictor Derivatives
-    /*
-    double pKepr_plus, pMepr_plus, pKepr, pMepr;
-    static STensor3 Cepr_plus, Eepr_plus, Kepr_plus, Mepr_plus, devKepr, devMepr, devKepr_plus, devMepr_plus, dpKepr_plus_dCepr_plus, dpMepr_plus_dCepr_plus;
-    static STensor43 DlnDCe_plus, dKepr_plus_dCepr_plus, dMepr_plus_dCepr_plus, ddevKepr_plus_dCepr_plus, ddevMepr_plus_dCepr_plus;
-    static STensor63 DDlnDDCe_plus;
-    double KTsum_plus, GTsum_plus, DKDTsum_plus, DGDTsum_plus;
-    
-    STensorOperation::decomposeDevTr(Kepr,devKepr,pKepr);
-    STensorOperation::decomposeDevTr(Mepr,devMepr,pMepr);
-    pKepr = Kepr.trace()/3;
-    pMepr = Mepr.trace()/3;
-    
-     for (int i=0; i<3; i++){
-       for (int j=0; j<3; j++){
-         Cepr_plus = Cepr; 
-         Cepr_plus(i,j) += 0.5*_perturbationfactor;
-         Cepr_plus(j,i) += 0.5*_perturbationfactor;
-         
-         STensorOperation::logSTensor3(Cepr_plus,_order,Eepr_plus,&DlnDCe_plus,&DDlnDDCe_plus);
-         Eepr_plus *= 0.5;
-    
-         for (int k=0; k<3; k++){
-           for (int l=0; l<3; l++){
-               
-             // Numerical A, B
-             ThermoViscoElasticPredictor(Eepr_plus,q0->_Ee,q0,q1,Ke,Ge,Kde,Gde,DKe,DGe,DKde,DGde,KTsum_plus,GTsum_plus,DKDTsum_plus,DGDTsum_plus,T0,T);
-             // getTVEdCorKirDT(q0,q1,T0,T); // update dCorKirdT
-             Kepr_plus = q1->_kirchhoff;
-             getModifiedMandel(Cepr_plus, q0, q1); // update Mandel
-             Mepr_plus = q1->_ModMandel;
-             STensorOperation::decomposeDevTr(Kepr_plus,devKepr_plus,pKepr_plus);
-             STensorOperation::decomposeDevTr(Mepr_plus,devMepr_plus,pMepr_plus);
-             pKepr_plus = Kepr_plus.trace()/3;
-             pMepr_plus = Mepr_plus.trace()/3;
-             
-             dpKepr_plus_dCepr_plus(k,l) = (pKepr_plus - pKepr)/(_perturbationfactor);
-             dpMepr_plus_dCepr_plus(k,l) = (pMepr_plus - pMepr)/(_perturbationfactor);
-             
-             dKepr_plus_dCepr_plus(k,l,i,j) = (Kepr_plus(k,l) - Kepr(k,l))/(_perturbationfactor);
-             dMepr_plus_dCepr_plus(k,l,i,j) = (Mepr_plus(k,l) - Mepr(k,l))/(_perturbationfactor);
-             
-             ddevKepr_plus_dCepr_plus(k,l,i,j) = (devKepr_plus(k,l) - devKepr(k,l))/(_perturbationfactor);
-             ddevMepr_plus_dCepr_plus(k,l,i,j) = (devMepr_plus(k,l) - devMepr(k,l))/(_perturbationfactor);
-           }
-         }
-       }
-     }*/
 
     // 6. to 11. (inside if loop-> Gamma > 0.)
       static STensor3 dAdCepr, dfDCepr;
@@ -2244,7 +2223,14 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
          }
        }
      }*/
-     
+           // DEBUG FLE
+        double a0 = a(0);
+        double a1 = a(1);
+        double a2 = a(2);
+        double da0 = Da(0);
+        double da1 = Da(1);
+        double da2 = Da(2);
+        
         //6. get dAdCepr from DdevphiDCepr
         double fact = a(2)*_n*pow(PhiEq,_n-1.);
         for (int i=0; i<3; i++){
@@ -2284,7 +2270,7 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
        // update DphiPDCepr
        for (int i=0; i<3; i++)
          for (int j=0; j<3; j++){
-           DphiPDCepr(i,j) += ( -dvdCepr(i,j)*ptilde + 1/3*trXn/(pow(Cxtr,2))*dCxtrdCepr(i,j) )/v;
+           DphiPDCepr(i,j) += ( -dvdCepr(i,j)*ptilde + 1./3.*trXn/(pow(Cxtr,2.))*dCxtrdCepr(i,j) )/v;
          }
 
        // update DdevphiDCepr, DphiEDCepr
@@ -2295,10 +2281,10 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
          for (int j=0; j<3; j++)
            for (int k=0; k<3; k++)
              for (int l=0; l<3; l++){
-               G3(i,j,k,l) = G2(i,j,k,l) + DdevphiprDCepr(i,j,k,l) + devXn(i,j)*dCxdevdCepr(k,l)/(pow(Cxdev,2)) - devPhi(i,j) * dudCepr(k,l);
+               G3(i,j,k,l) = G2(i,j,k,l) + DdevphiprDCepr(i,j,k,l) + devXn(i,j)*dCxdevdCepr(k,l)/(pow(Cxdev,2.)) - devPhi(i,j) * dudCepr(k,l);
                for (int p=0; p<3; p++)
                  for (int q=0; q<3; q++)
-                    G3(i,j,k,l) +=  Dho3(i,j,p,q)* ( N(p,q)*DGDCepr(k,l) + 2*_b*Gamma/3*_I(p,q)*DphiPDCepr(k,l) );
+                    G3(i,j,k,l) +=  Dho3(i,j,p,q)* ( N(p,q)*DGDCepr(k,l) + 2.*_b*Gamma/3.*_I(p,q)*DphiPDCepr(k,l) );
               }
               
         STensorOperation::multSTensor43(Dho4_u_inv,G3,DdevphiDCepr);
@@ -2307,10 +2293,10 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
 
         //9. get DtrNDCepr DdevNdCepr
         DtrNDCepr = DphiPDCepr;
-        DtrNDCepr *= (2*_b);
+        DtrNDCepr *= (2.*_b);
 
         DdevNDCepr = DdevphiDCepr;
-        DdevNDCepr *= 3;
+        DdevNDCepr *= 3.;
 
         // 10. get dFpDCepr
 
@@ -2341,15 +2327,15 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
          static STensor43 DdevXdCepr;
          for (int i=0; i<3; i++)
            for (int j=0; j<3; j++){
-             DtrXdCepr(i,j) = pow(kk,1)*Hb*( DGDCepr(i,j)*trN + Gamma*DtrNDCepr(i,j) ) - dCxtrdCepr(i,j)*trX + pow(kk,1)*Gamma*dHb*DgammaDCepr(i,j)*trN; // pow(kk,2) DEBUG
+             DtrXdCepr(i,j) = pow(kk,1.)*Hb*( DGDCepr(i,j)*trN + Gamma*DtrNDCepr(i,j) ) - dCxtrdCepr(i,j)*trX + pow(kk,1.)*Gamma*dHb*DgammaDCepr(i,j)*trN; // pow(kk,2.) DEBUG
              for (int k=0; k<3; k++)
                for (int l=0; l<3; l++){
-                 DdevXdCepr(i,j,k,l) = pow(kk,1)*Hb*( DGDCepr(i,j)*devN(k,l) + Gamma*DdevNDCepr(i,j,k,l) ) - 
-                                        dCxdevdCepr(i,j)*devX(k,l) + pow(kk,1)*Gamma*dHb*DgammaDCepr(i,j)*devN(k,l); // pow(kk,2) DEBUG
+                 DdevXdCepr(i,j,k,l) = pow(kk,1.)*Hb*( DGDCepr(i,j)*devN(k,l) + Gamma*DdevNDCepr(i,j,k,l) ) - 
+                                        dCxdevdCepr(i,j)*devX(k,l) + pow(kk,1.)*Gamma*dHb*DgammaDCepr(i,j)*devN(k,l); // pow(kk,2.) DEBUG
                 }
            }
-         DdevXdCepr *= 1/Cxdev;
-         DtrXdCepr *= 1/Cxtr;
+         DdevXdCepr *= 1./Cxdev;
+         DtrXdCepr *= 1./Cxtr;
 
          STensorOperation::zero(dXdCepr);
          dXdCepr = DdevXdCepr;
@@ -2357,7 +2343,7 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
            for (int j=0; j<3; j++)
              for (int k=0; k<3; k++)
                for (int l=0; l<3; l++)
-                 dXdCepr(i,j,k,l) += 1/3* _I(i,j)*DtrXdCepr(k,l);
+                 dXdCepr(i,j,k,l) += 1./3. * _I(i,j)*DtrXdCepr(k,l);
 
 
          // 11. update DpDCepr, DdevKDCepr
@@ -2541,7 +2527,7 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
 
     STensorOperation::decomposeDevTr(dMeprDT,dDevMeprDT,dpMeprDT);
     // dpMeprDT *= 1/3; WHAT IS THE PROBLEM HERE? WHY DOES IT GIVE ZERO?
-    dpMeprDT = dMeprDT.trace()/3;
+    dpMeprDT = dMeprDT.trace()/3.;
 
     DcorKirDT = dKeprDT; // update later
 
@@ -2585,7 +2571,7 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
     dPhiPdT /= v;
     
     dDevPhiDT = dDevPhiprDT;
-    dDevPhiDT *= 1/u;
+    dDevPhiDT *= 1./u;
     
     /*
     // Use Dho for DdevphiDT
@@ -2620,7 +2606,8 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
 
     if (Gamma >0){
         // plastic
-        
+    
+    /*    
         //0.0 Numerical Derivatives wrt T
         
     double trN_plus, pKepr_plus, pMepr_plus, pKepr, pMepr, trX_plus, ptilde_plus, PhiEq_plus, A_plus, f_plus, Dgamma_plus, Gamma_plus,
@@ -2710,9 +2697,9 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
              
              dAdT_plus = (A_plus - A)/(_perturbationfactor*T0); // ( 4./3.*_b*_b*ptilde_plus*DphiP_plusDT_plus + 6.*PhiEq_plus*DphiE_plusDT_plus )/A_plus; // 
              dfdT_plus = (f_plus - f)/(_perturbationfactor*T0); // DaDT_plus(2)*pow(PhiEq_plus,_n) + a_plus(2)*_n*pow(PhiEq_plus,_n-1.)*DphiE_plusDT_plus - DaDT_plus(1)*ptilde_plus -a_plus(1)*DphiP_plusDT_plus - DaDT_plus(0); // 
-             /*if (this->getTimeStep()>0){
-                dfdT_plus -= (DetaDT_plus*Gamma_plus/this->getTimeStep())*_p*pow((eta_plus*Gamma_plus/this->getTimeStep()),(_p-1));
-             }*/
+             // if (this->getTimeStep()>0){
+                // dfdT_plus -= (DetaDT_plus*Gamma_plus/this->getTimeStep())*_p*pow((eta_plus*Gamma_plus/this->getTimeStep()),(_p-1));
+             // }
              
              DGDT_plus = (Gamma_plus - Gamma)/(_perturbationfactor*T0); // (-dfdT_plus-dfdDgamma_plus*kk*Gamma_plus*dAdT_plus)/DfDGamma_plus; // 
              DgammaDT_plus = (Dgamma_plus - Dgamma)/(_perturbationfactor*T0); // kk*Gamma_plus*dAdT_plus+ dDgammaDGamma_plus*DGDT_plus; 
@@ -2737,16 +2724,23 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
              dMe_plus_dT_plus(i,j) = (Me_plus(i,j)-MS(i,j))/(_perturbationfactor*T0);
              
            }
-         }
+         }*/
      
         // 6. get DaDT, dAdT and dfdT
         fullVector<double> DaDT(3), DDaDTT(3);
         getYieldCoefficientTempDers(q1,T,DaDT,DDaDTT);
+        
+        double DaDT0 = DaDT(0);
+        double DaDT1 = DaDT(1);
+        double DaDT2 = DaDT(2);
+        double DDaDTT0 = DDaDTT(0);
+        double DDaDTT1 = DDaDTT(1);
+        double DDaDTT2 = DDaDTT(2);
 
         dAdT = (4./3*_b*_b*ptilde*dPhiPdT + 6.*PhiEq*dPhiEdT)/A;
-        dfdT = DaDT(2)*pow(PhiEq,_n) + a(2)*_n*pow(PhiEq,_n-1)*dPhiEdT - DaDT(1)*ptilde - a(1)*dPhiPdT - DaDT(0);
+        dfdT = DaDT(2)*pow(PhiEq,_n) + a(2)*_n*pow(PhiEq,_n-1.)*dPhiEdT - DaDT(1)*ptilde - a(1)*dPhiPdT - DaDT(0);
         if (this->getTimeStep()>0){
-          dfdT -= (DetaDT*Gamma/this->getTimeStep())*_p*pow((eta*Gamma/this->getTimeStep()),(_p-1));
+          dfdT -= (DetaDT*Gamma/this->getTimeStep())*_p*pow((eta*Gamma/this->getTimeStep()),(_p-1.));
         }
 
         // 7. get dGammaDT, DgammaDT
@@ -2757,48 +2751,45 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
         static double dCxdevdT, dCxtrdT;
         dCxdevdT = 0.; dCxtrdT = 0.;
         if (Hb>0.){
-           dCxdevdT = -m(0)*(-1/pow(Hb,2)*dHb*dHbdT + 1/Hb*ddHbdgammadT)*Dgamma -1/Hb*dHbdT + (1/pow(kk,1)*dHbdT*dHbdT - 1/Hb*ddHbddT)*(T-T0); // pow(kk,2) DEBUG
+           dCxdevdT = -m(0)*(-1./pow(Hb,2.)*dHb*dHbdT + 1./Hb*ddHbdgammadT)*Dgamma -1./Hb*dHbdT + (1./pow(kk,1.)*dHbdT*dHbdT - 1./Hb*ddHbddT)*(T-T0); // pow(kk,2) DEBUG
         }
         dCxtrdT = dCxdevdT;
-        dCxdevdT += 3*m(1)*pow(kk,1)*dHbdT; // pow(kk,2) DEBUG
-        dCxtrdT += 2*_b/3*m(1)*pow(kk,1)*dHbdT; // pow(kk,2) DEBUG
+        dCxdevdT += 3.*m(1)*pow(kk,1.)*dHbdT; // pow(kk,2.) DEBUG
+        dCxtrdT += 2.*_b/3.*m(1)*pow(kk,1.)*dHbdT; // pow(kk,2.) DEBUG
         
         if (Hb>0.){
-          dCxdevdT -= m(0)*1/Hb*dHb*DgammaDT;
-          dCxtrdT -= m(0)*1/Hb*dHb*DgammaDT;
+          dCxdevdT -= m(0)*1./Hb*dHb*DgammaDT;
+          dCxtrdT -= m(0)*1./Hb*dHb*DgammaDT;
         }
 
         static double dudT, dvdT;
-        // dudT = 6*Gamma*(DGDTsum + pow(kk,1)/(3*Cxdev)*dHbdT - (pow(kk,1)*Hb)/(3*pow(Cxdev,2))*dCxdevdT); // pow(kk,2) DEBUG
-        // dvdT = 2*_b*Gamma*(DKDTsum + pow(kk,1)/(3*Cxtr)*dHbdT - (pow(kk,1)*Hb)/(2*pow(Cxdev,2))*dCxtrdT); // pow(kk,2) DEBUG*/
-
-        dudT = 6*Gamma*(DGDTsum + pow(kk,1)/(3*Cxdev)*dHbdT - (pow(kk,1)*Hb)/(3*pow(Cxdev,2))*dCxdevdT); // pow(kk,2) DEBUG
-        dvdT = 2*_b*Gamma*(DKDTsum + pow(kk,1)/(3*Cxtr)*dHbdT - (pow(kk,1)*Hb)/(2*pow(Cxdev,2))*dCxtrdT); // pow(kk,2) DEBUG
+        dudT = 6.*Gamma*(DGDTsum + pow(kk,1.)/(2.*Cxdev)*dHbdT - (pow(kk,1.)*Hb)/(2.*pow(Cxdev,2))*dCxdevdT); // pow(kk,2.) DEBUG
+        dvdT = 2.*_b*Gamma*(DKDTsum + pow(kk,1.)/(3.*Cxtr)*dHbdT - (pow(kk,1.)*Hb)/(3.*pow(Cxtr,2))*dCxtrdT); // pow(kk,2.) DEBUG
 
-        dudT += 6*dGammaDT*(Ge+pow(kk,1)*Hb/(2*Cxdev));  // pow(kk,2) DEBUG
-        dvdT += 2*_b*dGammaDT*(Ke+pow(kk,1)*Hb/(3*Cxtr));  // pow(kk,2) DEBUG
+        dudT += 6.*dGammaDT*(Ge+pow(kk,1)*Hb/(2.*Cxdev));  // pow(kk,2) DEBUG
+        dvdT += 2.*_b*dGammaDT*(Ke+pow(kk,1)*Hb/(3.*Cxtr));  // pow(kk,2) DEBUG
 
         // 8. update DdevphiDT and DphiPDT
-        dPhiPdT = (dPhipprDT - dvdT*ptilde + 1/3*trXn/(pow(Cxtr,2))*dCxtrdT)/v;
+        dPhiPdT = (dPhipprDT - dvdT*ptilde + 1./3.*trXn/(pow(Cxtr,2.))*dCxtrdT)/v;
         
         static STensor3 G2T, G3T;
         getG2TTensor(Cepr,expGN,dKeprDT,G2T);
         for (int i=0; i<3; i++)
           for (int j=0; j<3; j++){
-            G3T(i,j) = G2T(i,j) + dDevPhiprDT(i,j) + devXn(i,j)/pow(Cxdev,2)*dCxdevdT - dudT*devPhi(i,j);
+            G3T(i,j) = G2T(i,j) + dDevPhiprDT(i,j) + devXn(i,j)/pow(Cxdev,2.)*dCxdevdT - dudT*devPhi(i,j);
             for (int p=0; p<3; p++)
               for (int q=0; q<3; q++)
-                G3T(i,j) += Dho3(i,j,p,q)*(dGammaDT*N(p,q) + 2*_b*Gamma/3*dPhiPdT*_I(p,q));
+                G3T(i,j) += Dho3(i,j,p,q)*(dGammaDT*N(p,q) + 2.*_b*Gamma/3.*dPhiPdT*_I(p,q));
           }
 
         STensorOperation::multSTensor3STensor43(G3T,Dho4_u_inv,dDevPhiDT);
 
         // 9. get DtrNdT DdevNdT
         DtrNdT = dPhiPdT;
-        DtrNdT *= (2*_b);
+        DtrNdT *= (2.*_b);
 
         DdevNdT = dDevPhiDT;
-        DdevNdT *= 3;
+        DdevNdT *= 3.;
 
         // 10. get dFpdT
         static STensor3 dGammaNdT;
@@ -2830,19 +2821,19 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
         // 10.1 dXdT - backstress temperature derivative -> correction - CHECK!!!
         static double DtrXdT;
         static STensor3 DdevXdT;
-        DtrXdT = pow(kk,1)*Hb*(dGammaDT*trN + Gamma*DtrNdT)  - dCxtrdT*trX + pow(kk,1)*Gamma*(dHbdT + dHb*DgammaDT)*trN; // pow(kk,2) DEBUG
+        DtrXdT = pow(kk,1.)*Hb*(dGammaDT*trN + Gamma*DtrNdT)  - dCxtrdT*trX + pow(kk,1.)*Gamma*(dHbdT + dHb*DgammaDT)*trN; // pow(kk,2.) DEBUG
         for (int i=0; i<3; i++)
           for (int j=0; j<3; j++){
-                DdevXdT(i,j) = pow(kk,1)*Hb*( dGammaDT*devN(i,j) + Gamma*DdevNdT(i,j) ) - dCxdevdT*devX(i,j) + pow(kk,1)*Gamma*(dHbdT + dHb*DgammaDT)*devN(i,j); // pow(kk,2) DEBUG
+                DdevXdT(i,j) = pow(kk,1.)*Hb*( dGammaDT*devN(i,j) + Gamma*DdevNdT(i,j) ) - dCxdevdT*devX(i,j) + pow(kk,1.)*Gamma*(dHbdT + dHb*DgammaDT)*devN(i,j); // pow(kk,2.) DEBUG
         }
-        DdevXdT *= 1/Cxdev;
-        DtrXdT *= 1/Cxtr;
+        DdevXdT *= 1./Cxdev;
+        DtrXdT *= 1./Cxtr;
 
         STensorOperation::zero(dXdT);
         dXdT = DdevXdT;
-        dXdT(0,0) = DtrXdT/3;
-        dXdT(1,1) = DtrXdT/3;
-        dXdT(2,2) = DtrXdT/3;
+        dXdT(0,0) = DtrXdT/3.;
+        dXdT(1,1) = DtrXdT/3.;
+        dXdT(2,2) = DtrXdT/3.;
 
         // 11. DcorKirDT
         for (int i=0; i<3; i++){
@@ -3050,7 +3041,7 @@ void mlawNonLinearTVP::predictorCorrector_TVP_nonAssociatedFlow(const STensor3&
         for (int l=0; l<3; l++){
           DCeDFe(i,j,k,l) = 0.;
           for (int p=0; p<3; p++){
-            DCeDFe(i,j,k,l) += 2*F(p,i)*dFedF(p,j,k,l);
+            DCeDFe(i,j,k,l) += 2.*F(p,i)*dFedF(p,j,k,l);
           }
         }
 
@@ -3252,11 +3243,11 @@ void mlawNonLinearTVP::getDho3(const double& u, const double& v, const double& G
       for (int k=0; k<3; k++)
         for (int l=0; l<3; l++){
           Dho4(i,j,k,l) = 0.;
-          Dho4_u(i,j,k,l) += u*_I4(i,j,k,l) - 3*Gamma*Dho3(i,j,k,l); 
-          Dho4_v(i,j) -= 2*_b/3*Gamma*Dho3(i,j,k,l)*_I(k,l);
+          Dho4_u(i,j,k,l) += u*_I4(i,j,k,l) - 3.*Gamma*Dho3(i,j,k,l); 
+          Dho4_v(i,j) -= 2.*_b/3.*Gamma*Dho3(i,j,k,l)*_I(k,l);
           for (int p=0; p<3; p++)
             for (int q=0; q<3; q++){
-              Dho4(i,j,k,l) += (u*_I4(i,j,p,q) - 3*Gamma*Dho3(i,j,p,q))*_Idev(p,q,k,l) + (v*_I4(i,j,p,q) - 2*_b/3*Gamma*Dho3(i,j,p,q))*(_I4(p,q,k,l) -_Idev(p,q,k,l));
+              Dho4(i,j,k,l) += (u*_I4(i,j,p,q) - 3.*Gamma*Dho3(i,j,p,q))*_Idev(p,q,k,l) + (v*_I4(i,j,p,q) - 2.*_b/3.*Gamma*Dho3(i,j,p,q))*(_I4(p,q,k,l) -_Idev(p,q,k,l));
         }
       } 
     }
@@ -3307,7 +3298,7 @@ void mlawNonLinearTVP::getIterated_DPhi(const double& u, const double& v, const
   STensorOperation::zero(J_constant);
   for (int i=0; i<3; i++){
     for (int j=0; j<3; j++){
-      J_constant(i,j) += Phipr(i,j) + 1/3*trXn*(1-1/Cxtr)*_I(i,j) + devXn(i,j)*(1-1/Cxdev);
+      J_constant(i,j) += Phipr(i,j) + 1./3.*trXn*(1.-1./Cxtr)*_I(i,j) + devXn(i,j)*(1.-1./Cxdev);
       J(i,j) +=  devPhi(i,j)*u + ptilde*_I(i,j)*v - D(i,j);
     }
   }
@@ -3383,7 +3374,7 @@ void mlawNonLinearTVP::getIterated_DPhi(const double& u, const double& v, const
       STensorOperation::zero(N);
       for (int i=0; i<3; i++)
         for (int j=0; j<3; j++)
-          N(i,j) = 3*devPhi(i,j) + 2*_b/3*ptilde*_I(i,j); 
+          N(i,j) = 3.*devPhi(i,j) + 2.*_b/3.*ptilde*_I(i,j); 
           
       // update H = exp(GN) = A in dexpAdA; Hinv
       GammaN = N;
@@ -3446,7 +3437,7 @@ void mlawNonLinearTVP::getIterated_DPhi(const double& u, const double& v, const
 
       if(ite > maxite){
         Msg::Error("No convergence for iterated Phi mlawNonLinearTVP nonAssociatedFlow Maxwell iter = %d, J_tol = %e!!",ite,J_tol);
-        // Phi(0,0) = Phi(1,1) = Phi(2,2) = sqrt(-1.);
+        Phi(0,0) = Phi(1,1) = Phi(2,2) = sqrt(-1.);
        return;
        }
      } // while
diff --git a/dG3D/src/dG3DMaterialLaw.cpp b/dG3D/src/dG3DMaterialLaw.cpp
index 70a0e5340cbf23be25331486518cc419dfb81a7d..ccd3d00f2226dee21ea87e73f8c566f18baa44e2 100644
--- a/dG3D/src/dG3DMaterialLaw.cpp
+++ b/dG3D/src/dG3DMaterialLaw.cpp
@@ -288,19 +288,20 @@ void dG3DMaterialLawWithTangentByPerturbation::stress(IPVariable* ipv, const IPV
         Msg::Info("dEMFieldSource dp Analytique: %e",ipvcur->getConstRefTodEMFieldSourcedNonLocalVariable()(j,i));
     }
   }
-  /*
+  
   for (int i=0; i< numExtraDof; i++)
   {
     Msg::Info("Field Analytique: %e",ipvcur->getConstRefToField(i)); // FLE
-    ipvcur->getConstRefToFlux()[i].print("Flux Analytique"); // FLE
-    Msg::Info("ThermSource Analytique: %e",ipvcur->getConstRefToFieldSource()(i)); // FLE
-    Msg::Info("MechSource Analytique: %e",ipvcur->getConstRefToMechanicalSource()(i)); // FLE
-    ipvcur->getConstRefTodFluxdF()[i].print("d Flux dF Analytique");
-    ipvcur->getConstRefTodFieldSourcedF()[i].print("d Field source dF Analytique");
-    ipvcur->getConstRefTodMechanicalSourcedF()[i].print("d Mechanical source dF Analytique");
+    // ipvcur->getConstRefToFlux()[i].print("Flux Analytique"); // FLE
+    // Msg::Info("ThermSource Analytique: %e",ipvcur->getConstRefToFieldSource()(i)); // FLE
+    // Msg::Info("MechSource Analytique: %e",ipvcur->getConstRefToMechanicalSource()(i)); // FLE
+    // ipvcur->getConstRefTodFluxdF()[i].print("d Flux dF Analytique");
+    // ipvcur->getConstRefTodFieldSourcedF()[i].print("d Field source dF Analytique");
+    // ipvcur->getConstRefTodMechanicalSourcedF()[i].print("d Mechanical source dF Analytique");
     ipvcur->getConstRefTodPdField()[i].print("dP d Field Analytique");
-    ipvcur->getConstRefTodEMFieldSourcedF()[i].print("dEMFieldSource dF Analytique");
-
+    // ipvcur->getConstRefTodEMFieldSourcedF()[i].print("dEMFieldSource dF Analytique");
+    
+    /*
     for (int k=0; k< numExtraDof; k++)
     {
       ipvcur->getConstRefTodFluxdField()[k][i].print("dFludx dField Analytique");
@@ -328,8 +329,8 @@ void dG3DMaterialLawWithTangentByPerturbation::stress(IPVariable* ipv, const IPV
     for (unsigned int k = 0; k < numNonLocalVars; ++k)
     {
         Msg::Info("dp dExtraDofDiffusionField Analytique: %e",ipvcur->getRefTodLocalVariableDExtraDofDiffusionField()(k,i));
-    }
-  }*/
+    }*/
+  }
   for (unsigned int i = 0; i < numCurlDof; ++i)
   {
       ipvcur->getConstRefTodPdVectorPotential()[i].print("dPdMagneticVectorPotential Analytique");
@@ -654,18 +655,19 @@ void dG3DMaterialLawWithTangentByPerturbation::stress(IPVariable* ipv, const IPV
             Msg::Info("dEMFieldSource dp Numerique: %e",ipvcur->getConstRefTodEMFieldSourcedNonLocalVariable()(j,i));
         }
     }
-    /*
+    
     for (int i=0; i< numExtraDof; i++)
     {
       Msg::Info("Field Numerique: %e",ipvcur->getConstRefToField(i)); // FLE
-      ipvcur->getConstRefToFlux()[i].print("Flux Numerique"); // FLE
-      Msg::Info("ThermSource Numerique: %e",ipvcur->getConstRefToFieldSource()(i)); // FLE
-      Msg::Info("MechSource Numerique: %e",ipvcur->getConstRefToMechanicalSource()(i)); // FLE
-      ipvcur->getConstRefTodFluxdF()[i].print("d Flux dF Numerique");
-      ipvcur->getConstRefTodFieldSourcedF()[i].print("d Field source dF Numerique");
-      ipvcur->getConstRefTodMechanicalSourcedF()[i].print("d Mechanical source dF Numerique");
+      // ipvcur->getConstRefToFlux()[i].print("Flux Numerique"); // FLE
+      // Msg::Info("ThermSource Numerique: %e",ipvcur->getConstRefToFieldSource()(i)); // FLE
+      // Msg::Info("MechSource Numerique: %e",ipvcur->getConstRefToMechanicalSource()(i)); // FLE
+      // ipvcur->getConstRefTodFluxdF()[i].print("d Flux dF Numerique");
+      // ipvcur->getConstRefTodFieldSourcedF()[i].print("d Field source dF Numerique");
+      // ipvcur->getConstRefTodMechanicalSourcedF()[i].print("d Mechanical source dF Numerique");
       ipvcur->getConstRefTodPdField()[i].print("dP d Field Numerique");
-      ipvcur->getConstRefTodEMFieldSourcedF()[i].print("dEMFieldSource dF Numerique");
+      // ipvcur->getConstRefTodEMFieldSourcedF()[i].print("dEMFieldSource dF Numerique");
+      /*
       for (int k=0; k< numExtraDof; k++)
       {
         ipvcur->getConstRefTodFluxdField()[k][i].print("dFludx dField Numerique");
@@ -694,8 +696,8 @@ void dG3DMaterialLawWithTangentByPerturbation::stress(IPVariable* ipv, const IPV
         for (unsigned int k = 0; k < numNonLocalVars; ++k)
         {
             Msg::Info("dp dExtraDofDiffusionField Numerique: %e",ipvcur->getRefTodLocalVariableDExtraDofDiffusionField()(k,i));
-        }
-    }*/
+        }*/
+    }
     for (unsigned int i = 0; i < numCurlDof; ++i)
     {
       const unsigned int extradof_T = 0; // Thermal field EM source