diff --git a/NonLinearSolver/materialLaw/mlawHyperelastic.cpp b/NonLinearSolver/materialLaw/mlawHyperelastic.cpp index 60d192e0a37cbde0b9464e1a5ab9ae1b2ae07238..bcecf02a594bc5a0c58b08517f9185b58c4a8615 100644 --- a/NonLinearSolver/materialLaw/mlawHyperelastic.cpp +++ b/NonLinearSolver/materialLaw/mlawHyperelastic.cpp @@ -859,7 +859,7 @@ void mlawPowerYieldHyper::predictorCorrector_nonAssociatedFlow(const STensor3& F q1->getRefToDissipationActive() = true; // plasticity int ite = 0; - int maxite = 100; // maximal number of iters + int maxite = 1000; // maximal number of iters //Msg::Error("plasticity occurs f = %e",f); @@ -919,8 +919,13 @@ void mlawPowerYieldHyper::predictorCorrector_nonAssociatedFlow(const STensor3& F if(ite > maxite){ Msg::Error("No convergence for plastic correction in mlawPowerYieldHyper nonAssociatedFlow Maxwell iter = %d, f = %e!!",ite,f); - P(0,0) = P(1,1) = P(2,2) = sqrt(-1.); - return; + if(fabs(f)<100.*_tol) + break; + else + { + P(0,0) = P(1,1) = P(2,2) = sqrt(-1.); + return; + } } };