Conversation
…es with exact contact Jacobians
…n error in the gcc Release build due to a potential null pointer deference warning (error) in the body of the iterative solver GetComm method. Replacing the iterative solver GetComm call with a HypreParMatrix GetComm call, should serve the same purpose
ebchin
left a comment
There was a problem hiding this comment.
Thanks @thartland, looking forward to using it!
| // number of rows of the restriction | ||
| // operator owned by the local MPI process | ||
| int nrows_loc = contact_dofs_.Size(); | ||
| // should nrows_glb be of type HYPRE_BigInt? |
There was a problem hiding this comment.
Ideally, yes. this would limit us to 2 billions dofs, max. There are likely other places we'd need to fix this though.
tupek2
left a comment
There was a problem hiding this comment.
Are these subspace transfers being computed once up front, or would they occur every time a new Jacobian is assembled (say in a Newton iteration loop). Maybe the performance if not so bad, but something to consider down the line perhaps.
| std::unique_ptr<mfem::HypreParMatrix> ContactData::contactSubspaceTransferOperator() | ||
| { | ||
| // TODO: if there is no tribol contact what should be done here? | ||
| std::unique_ptr<mfem::HypreParMatrix> transfer_operator = nullptr; |
There was a problem hiding this comment.
presumably we error out. maybe that is already happening elsewhere?
…into hartland1/feature/amgf
Good point. The subspace transfer operator is computed once every time |
… not once per time step
This has now been updated and the subspace transfer operator is computed once per contact simulation. |
|
@white238 -- regarding the guarding against usage of the Nonetheless I put STRUMPACK specific guards for including this test in non strumpack builds. |
Thanks for putting the check in.. we should verify turning off our optional TPLs to see if they are properly guarded but that is outside the scope of this PR. |
This PR adds the capability of using AMGF (algebraic multigrid with filtering arXiv preprint)-preconditioned Krylov-subspace linear solvers for the Newton linear solves that arise in outer loop solves of contact problems.
ContactData::addContactInteractioncalls.mfem::HypreParMatrix) call. Much of this infastructure is in the utilities of continuationsolvers but a version most suitable for usage insmithwould be best for less complex code.print_levelandpreconditioner_print_levelfrom linear solver options in thebuildPreconditionermethod.For future investigation/potential PR(s)
(1) Make
AMGFContactrobust to indefiniteness issues stemming from using exact Hessians in Newton solves.(2) More careful consideration for setting outer/inner tolerances (as well as norms used) for Newton-Krylov.
Note --
AMGFContactpreconditioned Krylov-subspace methods will fails unless the problem is a contact problem. The failure is indicated by mfem generated error messages indicating that the subspace transfer operator has not been set.