diff --git a/dG3D/src/dG3DMaterialLaw.cpp b/dG3D/src/dG3DMaterialLaw.cpp
index 48855bd72fd03719ca6cb73d6d7687655f077e8d..44a882b2d7c7735ddc696042fbe72c4555fa5bc3 100644
--- a/dG3D/src/dG3DMaterialLaw.cpp
+++ b/dG3D/src/dG3DMaterialLaw.cpp
@@ -260,7 +260,7 @@ void dG3DMaterialLawWithTangentByPerturbation::stress(IPVariable* ipv, const IPV
   {
     ipvcur->getConstRefToDLocalVariableDStrain()[k].print("dpdE Analyique");
   }
-  /*if (this->getMacroSolver() != NULL)
+  if (this->getMacroSolver() != NULL)
   {
     if (this->getMacroSolver()!=NULL)
     {
@@ -268,7 +268,7 @@ void dG3DMaterialLawWithTangentByPerturbation::stress(IPVariable* ipv, const IPV
         ipvcur->getConstRefToDIrreversibleEnergyDDeformationGradient().print("dEnedE Analytique");
       }
     }
-  }*/
+  }
   for (int i=0; i< numNonLocalVars; i++)
   {
     for (int j=0; j< numNonLocalVars; j++)
@@ -276,7 +276,7 @@ void dG3DMaterialLawWithTangentByPerturbation::stress(IPVariable* ipv, const IPV
       Msg::Info("dpdp Analytique: %e",ipvcur->getConstRefToDLocalVariableDNonLocalVariable()(j,i));
     }
     ipvcur->getConstRefToDStressDNonLocalVariable()[i].print("dPdp Analytique");
-    //Msg::Info("dEnedp Analytique: %e",ipvcur->getConstRefToDIrreversibleEnergyDNonLocalVariable(i));
+    Msg::Info("dEnedp Analytique: %e",ipvcur->getConstRefToDIrreversibleEnergyDNonLocalVariable(i));
 
     /*for (unsigned int j = 0; j < numCurlDof; ++j)
     {
@@ -634,12 +634,12 @@ void dG3DMaterialLawWithTangentByPerturbation::stress(IPVariable* ipv, const IPV
     {
       ipvcur->getConstRefToDLocalVariableDStrain()[k].print("dpdE Numerique");
     }
-    /*if (this->getMacroSolver() != NULL)
+    if (this->getMacroSolver() != NULL)
     {
       if (this->getMacroSolver()->withPathFollowing() and this->getMacroSolver()->getPathFollowingMethod() ==  pathFollowingManager::LOCAL_BASED){
         ipvcur->getConstRefToDIrreversibleEnergyDDeformationGradient().print("dEnedE Numerique");
       }
-    }*/
+    }
     for (int i=0; i< numNonLocalVars; i++)
     {
       for (int j=0; j< numNonLocalVars; j++)
@@ -647,7 +647,7 @@ void dG3DMaterialLawWithTangentByPerturbation::stress(IPVariable* ipv, const IPV
         Msg::Info("dpdp Numerique: %e",ipvcur->getConstRefToDLocalVariableDNonLocalVariable()(j,i));
       }
       ipvcur->getConstRefToDStressDNonLocalVariable()[i].print("dPdp Numerique");
-      //Msg::Info("dEnedp Numerique: %e",ipvcur->getConstRefToDIrreversibleEnergyDNonLocalVariable(i));
+      Msg::Info("dEnedp Numerique: %e",ipvcur->getConstRefToDIrreversibleEnergyDNonLocalVariable(i));
 
         /*const unsigned int extradof_T = 0; // Thermal field EM source
         for (unsigned int j = 0; j < numCurlDof; ++j)
diff --git a/dG3D/src/nonLocalDamageDG3DMaterialLaw.cpp b/dG3D/src/nonLocalDamageDG3DMaterialLaw.cpp
index 04add7ee1bdb85f3071fb283da30c3e85485a47c..cc869bf0448bd960517a25c89da5d3e941bcb8f2 100644
--- a/dG3D/src/nonLocalDamageDG3DMaterialLaw.cpp
+++ b/dG3D/src/nonLocalDamageDG3DMaterialLaw.cpp
@@ -4194,6 +4194,10 @@ void NonlocalDamageTorchANNBasedDG3DMaterialLaw::stress(IPVariable* ipv, const I
         plasticEnergy+=S_rec(i,j)*(Eplast_rec(i,j)-Eplast_rec0(i,j));
       }
     }
+    if (plasticEnergy<ipvprev->getConstRefToPlasticEnergy()){
+      //std::cout << "warning: the plastic energy decreases" << "\n";
+      //plasticEnergy=ipvprev->getConstRefToPlasticEnergy();
+    }
     
     
     //beginning step 9.2: computation of the damage energy