GEOS icon indicating copy to clipboard operation
GEOS copied to clipboard

Unify convergence check for lagrange-contact solvers

Open paveltomin opened this issue 1 year ago • 3 comments

Main thing: unify convergence check for lagrange-contact solvers

  • do not assign max force to zero in SinglePhasePoromechanicsConformingFractures::assembleElementBasedContributions to ensure the same normalization across the solvers and FIM/SEQ
  • do not compute Rdisplacement in SolidMechanicsLagrangeContact::calculateContactResidualNorm and rely directly on equivalent computed by SolidMechanicsLagrangianFEM::calculateResidualNorm
  • keep the same (relative) logic for Rtraction for now but remove confusing Rtotal

Side thing: add derivative

dRdT( i, 0 ) = Ja * traction[kfe][i] * dLimitTau_dNormalTraction / vauxNorm;

in SolidMechanicsLagrangeContact::assembleTractionResidualDerivativeWrtDisplacementAndTraction, it seems missing and once added improves convergence for some cases.

paveltomin avatar Mar 20 '24 15:03 paveltomin

Codecov Report

Attention: Patch coverage is 0% with 27 lines in your changes are missing coverage. Please review.

Project coverage is 53.26%. Comparing base (6ee3428) to head (8e3f408).

Files Patch % Lines
...sSolvers/contact/SolidMechanicsLagrangeContact.cpp 0.00% 27 Missing :warning:
Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #3049      +/-   ##
===========================================
+ Coverage    53.24%   53.26%   +0.02%     
===========================================
  Files          989      989              
  Lines        83565    83529      -36     
===========================================
  Hits         44491    44491              
+ Misses       39074    39038      -36     

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

codecov[bot] avatar Mar 20 '24 18:03 codecov[bot]

In SolidMechanicsLagrangianFEM::calculateResidualNorm, Rdisplacement is actually computed. I agree to remove Rtotal, which is a bit confusing; but suggest to keep both Rdisplacement and Rtraction for SolidMechanicsLagrangeContact::calculateContactResidualNorm to check the convergence for different primary variables.

jhuang2601 avatar Mar 25 '24 20:03 jhuang2601

In SolidMechanicsLagrangianFEM::calculateResidualNorm, Rdisplacement is actually computed. I agree to remove Rtotal, which is a bit confusing; but suggest to keep both Rdisplacement and Rtraction for SolidMechanicsLagrangeContact::calculateContactResidualNorm to check the convergence for different primary variables.

My understanding is that Rdisplacement is the same thing as Rsolid (up to normalization). Both are checking momentum equation rhs, L2 norm.

paveltomin avatar Mar 25 '24 20:03 paveltomin