To follow up from on an old post. UMAT with Mortar BC didn't seem to give proper displacement contact load values at the mortar boundaries.
I think it has to do with ElasticSolver is normally (without UMAT) solving Ku = F using the total displacement while with UMAT it is solving for the incremental displacement.
I tried with the following modification in CalculateLoads in SolverUtils.F90
Code: Select all
13655 CALL MatrixVectorMultiply( Aaid, x, TempVector )
...
13713 ELSE
13714 UseUMAT = ListCheckPresentAnyMaterial(CurrentModel, 'UMAT Subroutine')
13715 IF (UseUmat) THEN
13716 CALL Info( 'CalculateLoads', 'Umat, omitting K*x', Level=5)
13717 TempVector = -RHS
13718 ELSE
13719 CALL Info( 'CalculateLoads', 'Not Umat, using K*x', Level=5)
13720 TempVector = TempVector - RHS
13721 END IF
13722 !TempVector = TempVector - RHS
13723 END IF
It seems to give reasonable values.
/Fredrik