diff --git a/dG3D/src/nonLocalDamageDG3DMaterialLaw.cpp b/dG3D/src/nonLocalDamageDG3DMaterialLaw.cpp
index bf234e4504b2517fbe25f367314fe462a4b25bde..b5e14db9e0dfcf14b3d82fc88f5caa9ded63fa21 100644
--- a/dG3D/src/nonLocalDamageDG3DMaterialLaw.cpp
+++ b/dG3D/src/nonLocalDamageDG3DMaterialLaw.cpp
@@ -2560,7 +2560,7 @@ NonlocalDamageTorchANNBasedDG3DMaterialLaw::NonlocalDamageTorchANNBasedDG3DMater
                 _SZXmean(SZXmean), _SZXstd(SZXstd), 
                 _elTangCompxxxxmean(elTangCompxxxxmean), _elTangCompxxxxstd(elTangCompxxxxstd), _elTangCompyyxxmean(elTangCompyyxxmean), _elTangCompyyxxstd(elTangCompyyxxstd), _elTangCompzzxxmean(elTangCompzzxxmean), _elTangCompzzxxstd(elTangCompzzxxstd), _elTangCompxyxymean(elTangCompxyxymean), _elTangCompxyxystd(elTangCompxyxystd), _elTangCompxzxzmean(elTangCompxzxzmean), _elTangCompxzxzstd(elTangCompxzxzstd), _elTangCompyyyymean(elTangCompyyyymean), _elTangCompyyyystd(elTangCompyyyystd), _elTangCompzzyymean(elTangCompzzyymean), _elTangCompzzyystd(elTangCompzzyystd), _elTangCompyzyzmean(elTangCompyzyzmean), _elTangCompyzyzstd(elTangCompyzyzstd), _elTangCompzzzzmean(elTangCompzzzzmean), _elTangCompzzzzstd(elTangCompzzzzstd),   
                 _NonDamTangCompxxxxmean(NonDamTangCompxxxxmean), _NonDamTangCompxxxxstd(NonDamTangCompxxxxstd), _NonDamTangCompyyxxmean(NonDamTangCompyyxxmean), _NonDamTangCompyyxxstd(NonDamTangCompyyxxstd), _NonDamTangCompzzxxmean(NonDamTangCompzzxxmean), _NonDamTangCompzzxxstd(NonDamTangCompzzxxstd), _NonDamTangCompxyxymean(NonDamTangCompxyxymean), _NonDamTangCompxyxystd(NonDamTangCompxyxystd), _NonDamTangCompxzxzmean(NonDamTangCompxzxzmean), _NonDamTangCompxzxzstd(NonDamTangCompxzxzstd), _NonDamTangCompyyyymean(NonDamTangCompyyyymean), _NonDamTangCompyyyystd(NonDamTangCompyyyystd), _NonDamTangCompzzyymean(NonDamTangCompzzyymean), _NonDamTangCompzzyystd(NonDamTangCompzzyystd), _NonDamTangCompyzyzmean(NonDamTangCompyzyzmean), _NonDamTangCompyzyzstd(NonDamTangCompyzyzstd), _NonDamTangCompzzzzmean(NonDamTangCompzzzzmean), _NonDamTangCompzzzzstd(NonDamTangCompzzzzstd),       
-                _tangentByPerturbation(pert), _pertTol(tol), _kinematicInput(EGL),_NeedExtraNorm(false),_DoubleInput(false),_RNN(true),_Ie00(1), _Ie01(1), _Ie02(1), _Ie11(1), _Ie12(1), _Ie22(1), _Id0000(1), _Id0100(1), _Id0200(1), _Id1100(1), _Id1200(1), _Id2200(1), _Id0101(1), _Id0201(1), _Id1101(1), _Id1201(1), _Id2201(1), _Id0202(1), _Id1102(1), _Id1202(1), _Id2202(1), _Id1111(1), _Id1211(1), _Id2211(1), _Id1212(1), _Id2212(1), _Id2222(1), _incrlimit(0.0004)
+                _tangentByPerturbation(pert), _pertTol(tol), _kinematicInput(EGL),_NeedExtraNorm(false),_DoubleInput(false),_RNN(true),_Ie00(1), _Ie01(1), _Ie02(1), _Ie11(1), _Ie12(1), _Ie22(1), _Id0000(1), _Id0100(1), _Id0200(1), _Id1100(1), _Id1200(1), _Id2200(1), _Id0101(1), _Id0201(1), _Id1101(1), _Id1201(1), _Id2201(1), _Id0202(1), _Id1102(1), _Id1202(1), _Id2202(1), _Id1111(1), _Id1211(1), _Id2211(1), _Id1212(1), _Id2212(1), _Id2222(1), _incrlimit(0.0004), _tooBigStep(false)
 {
    _mecalocalLaw = NULL;
    cLLaw.resize(_numNonlocalVar);
@@ -2653,7 +2653,7 @@ NonlocalDamageTorchANNBasedDG3DMaterialLaw::NonlocalDamageTorchANNBasedDG3DMater
                 _SYZmean(src._SYZmean), _SYZstd(src._SYZstd), _SZZmean(src._SZZmean), _SZZstd(src._SZZstd), _SZXmean(src._SZXmean), _SZXstd(src._SZXstd), 
                 _elTangCompxxxxmean(src._elTangCompxxxxmean), _elTangCompxxxxstd(src._elTangCompxxxxstd), _elTangCompyyxxmean(src._elTangCompyyxxmean), _elTangCompyyxxstd(src._elTangCompyyxxstd),    _elTangCompzzxxmean(src._elTangCompzzxxmean), _elTangCompzzxxstd(src._elTangCompzzxxstd), _elTangCompxyxymean(src._elTangCompxyxymean), _elTangCompxyxystd(src._elTangCompxyxystd), _elTangCompxzxzmean(src._elTangCompxzxzmean), _elTangCompxzxzstd(src._elTangCompxzxzstd), _elTangCompyyyymean(src._elTangCompyyyymean), _elTangCompyyyystd(src._elTangCompyyyystd), _elTangCompzzyymean(src._elTangCompzzyymean), _elTangCompzzyystd(src._elTangCompzzyystd), _elTangCompyzyzmean(src._elTangCompyzyzmean), _elTangCompyzyzstd(src._elTangCompyzyzstd), _elTangCompzzzzmean(src._elTangCompzzzzmean), _elTangCompzzzzstd(src._elTangCompzzzzstd),       
                 _NonDamTangCompxxxxmean(src._NonDamTangCompxxxxmean), _NonDamTangCompxxxxstd(src._NonDamTangCompxxxxstd), _NonDamTangCompyyxxmean(src._NonDamTangCompyyxxmean), _NonDamTangCompyyxxstd(src._NonDamTangCompyyxxstd),    _NonDamTangCompzzxxmean(src._NonDamTangCompzzxxmean), _NonDamTangCompzzxxstd(src._NonDamTangCompzzxxstd), _NonDamTangCompxyxymean(src._NonDamTangCompxyxymean), _NonDamTangCompxyxystd(src._NonDamTangCompxyxystd), _NonDamTangCompxzxzmean(src._NonDamTangCompxzxzmean), _NonDamTangCompxzxzstd(src._NonDamTangCompxzxzstd), _NonDamTangCompyyyymean(src._NonDamTangCompyyyymean), _NonDamTangCompyyyystd(src._NonDamTangCompyyyystd), _NonDamTangCompzzyymean(src._NonDamTangCompzzyymean), _NonDamTangCompzzyystd(src._NonDamTangCompzzyystd), _NonDamTangCompyzyzmean(src._NonDamTangCompyzyzmean), _NonDamTangCompyzyzstd(src._NonDamTangCompyzyzstd), _NonDamTangCompzzzzmean(src._NonDamTangCompzzzzmean), _NonDamTangCompzzzzstd(src._NonDamTangCompzzzzstd),                                   
-                _tangentByPerturbation(src._tangentByPerturbation),_pertTol(src._pertTol), _kinematicInput(src._kinematicInput),_NeedExtraNorm(src._NeedExtraNorm),_DoubleInput(src._DoubleInput), _mecalocalLaw(NULL), _RNN(src._RNN),_Ie00(src._Ie00), _Ie01(src._Ie01), _Ie02(src._Ie02), _Ie11(src._Ie11), _Ie12(src._Ie12), _Ie22(src._Ie22), _Id0000(src._Id0000), _Id0100(src._Id0100), _Id0200(src._Id0200), _Id1100(src._Id1100), _Id1200(src._Id1200), _Id2200(src._Id2200), _Id0101(src._Id0101), _Id0201(src._Id0201), _Id1101(src._Id1101), _Id1201(src._Id1201), _Id2201(src._Id2201), _Id0202(src._Id0202), _Id1102(src._Id1102), _Id1202(src._Id1202), _Id2202(src._Id2202), _Id1111(src._Id1111), _Id1211(src._Id1211), _Id2211(src._Id2211), _Id1212(src._Id1212), _Id2212(src._Id2212), _Id2222(src._Id2222), _incrlimit(src._incrlimit)
+                _tangentByPerturbation(src._tangentByPerturbation),_pertTol(src._pertTol), _kinematicInput(src._kinematicInput),_NeedExtraNorm(src._NeedExtraNorm),_DoubleInput(src._DoubleInput), _mecalocalLaw(NULL), _RNN(src._RNN),_Ie00(src._Ie00), _Ie01(src._Ie01), _Ie02(src._Ie02), _Ie11(src._Ie11), _Ie12(src._Ie12), _Ie22(src._Ie22), _Id0000(src._Id0000), _Id0100(src._Id0100), _Id0200(src._Id0200), _Id1100(src._Id1100), _Id1200(src._Id1200), _Id2200(src._Id2200), _Id0101(src._Id0101), _Id0201(src._Id0201), _Id1101(src._Id1101), _Id1201(src._Id1201), _Id2201(src._Id2201), _Id0202(src._Id0202), _Id1102(src._Id1102), _Id1202(src._Id1202), _Id2202(src._Id2202), _Id1111(src._Id1111), _Id1211(src._Id1211), _Id2211(src._Id2211), _Id1212(src._Id1212), _Id2212(src._Id2212), _Id2222(src._Id2222), _incrlimit(src._incrlimit), _tooBigStep(src._tooBigStep)
 {
 #if defined(HAVE_TORCH)
        module_stress = src.module_stress;
@@ -3552,6 +3552,9 @@ void NonlocalDamageTorchANNBasedDG3DMaterialLaw::stress(IPVariable* ipv, const I
     //beginning step 8.1: we retrieve the stress
     STensor3& P = ipvcur->getRefToFirstPiolaKirchhoffStress();
     P=S_rec; 
+    if (_tooBigStep){   //added on 13/06/2025 to reject the step if the strain increment is too big
+      P(0,0)=P(1,1)=P(2,2)=sqrt(-1);
+    }
     //end step 8.1
     
     //beginning step 8.1.5: we compute the derivatives even if we do not retrieve them yet
@@ -5476,6 +5479,7 @@ void NonlocalDamageTorchANNBasedDG3DMaterialLaw::compute_local_values(const nonL
         dE(i,j)=E1Tensor(i,j)-E0Tensor(i,j);
       }
     }
+    
 
     //beginning of finding the maximal strain increment
     double max_incr=0.;
@@ -5489,11 +5493,16 @@ void NonlocalDamageTorchANNBasedDG3DMaterialLaw::compute_local_values(const nonL
     //end of finding the maximal strain increment
     
     int nb_substep=ceil(max_incr/_incrlimit);  //the number of substeps 
-    if(nb_substep >100)
-    {
-	   Msg::Info("substep reaches the maximum number, %d",nb_substep);
-	   nb_substep=100;
+    _tooBigStep = false;
+    if(nb_substep >100){
+      Msg::Info("substep reaches the maximum number, %d",nb_substep);
+      if (nb_substep > 500){  //added on 13/06/2025 to reject the step when the strain increment is too big
+        _tooBigStep=true;
+      }
+      nb_substep=100;
     } 
+    
+    
     STensor3 dEsubstep;
     for (int i=0;i<3;i++){
       for (int j=0;j<3;j++){
@@ -5560,13 +5569,13 @@ void NonlocalDamageTorchANNBasedDG3DMaterialLaw::RNNstress_stiff(const STensor3&
     dEyy=E1Tensor(1,1)-E0Tensor(1,1);
     dExy=E1Tensor(0,1)-E0Tensor(0,1); 
     if (abs(dExx)>_incrlimit){
-      //std::cout << "Warning: beyond the limit increment for epsilon_XX: " << dExx << "\n";
+      //std::cout << "Warning: beyond the limit increment for epsilon_XX: " << dExx << "\n";  //commented on 12/06/25 because the nb of substeps is limited and we can a bit beyond the limit increment
     }
     if (abs(dEyy)>_incrlimit){
-      //std::cout << "Warning: beyond the limit increment for epsilon_YY: " << dEyy << "\n";
+      //std::cout << "Warning: beyond the limit increment for epsilon_YY: " << dEyy << "\n";  //commented on 12/06/25 because the nb of substeps is limited and we can a bit beyond the limit increment
     }
     if (abs(dExy)>_incrlimit){
-      //std::cout << "Warning: beyond the limit increment for epsilon_XY: " << dExy << "\n";
+      //std::cout << "Warning: beyond the limit increment for epsilon_XY: " << dExy << "\n";  //commented on 12/06/25 because the nb of substeps is limited and we can a bit beyond the limit increment
     }
     //end check for strain increments
     
diff --git a/dG3D/src/nonLocalDamageDG3DMaterialLaw.h b/dG3D/src/nonLocalDamageDG3DMaterialLaw.h
index 89b80597507a5dd77a4bd7ab338b246ed4e5167f..cc31a0d1f1f840127f384b148c2a8aad7bf2ab28 100644
--- a/dG3D/src/nonLocalDamageDG3DMaterialLaw.h
+++ b/dG3D/src/nonLocalDamageDG3DMaterialLaw.h
@@ -913,6 +913,7 @@ class NonlocalDamageTorchANNBasedDG3DMaterialLaw : public dG3DMaterialLaw{
     bool _DoubleInput;
     int _numNonlocalVar;
     double _incrlimit; //the maximal strain increment with which your RNN trained can predict
+    bool _tooBigStep; //(added on 13/06/25) becomes true when the strain step is so big that it would need a lot of substeps to compute the stress corresponding correctly, in that case, the step is rejected
     std::vector< CLengthLaw * > cLLaw;
     materialLaw *_mecalocalLaw;
     bool _RNN;