Skip to content

Conversation

@thartland
Copy link
Contributor

@thartland thartland commented Sep 8, 2025

The purpose of this PR is to add the ability to solve (tied) contact problems with the homotopy solver.

Tribol calls are wrapped in a constraint object which will define a NLMCProblem which is the object that the homotopy solver acts on.

Another addition of this PR is the complete avoidance of delete and replacing usage of raw pointers with std::unique_ptr in inertia relief and tied contact problem EqualityConstrainedHomotopyProblem's

Removing finite difference check task as such a check will only pass if we compile with enzyme and enable exact derivatives.

  • create a contact NLMCProblem and pass it to the HomotopySolver.
  • Have complementarity problems return Operator* instead of HypreParMatrix* to support a wider range of applications wherein the Operators are not assembled. Caveat: more work is needed for the HomotopySolver to fully support other operator types
  • More verbose function defs for serac wrapper of problems so things are more easily understood by others.
  • Utilize exceptions from Tribol compuations to signal bad contact computations to the solver and to reduce solver step length parameters. (Currently via a branch of Tribol)
  • (in progress) Cache function calls in order to avoid unnecessarily duplicate computations as is currently done when ContactConstraint calls Tribol.
  • An efficient way to use BoundaryConditionManager for a smith like way to communicate bcs to contact problem formulation for the HomotopySolver.

@thartland thartland added the WIP Work in progress label Sep 8, 2025
@codecov-commenter
Copy link

codecov-commenter commented Sep 9, 2025

Codecov Report

❌ Patch coverage is 1.35135% with 73 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.82%. Comparing base (db9409c) to head (604d8f7).
⚠️ Report is 15 commits behind head on develop.

Files with missing lines Patch % Lines
src/serac/physics/contact_constraint.hpp 1.38% 71 Missing ⚠️
src/serac/physics/constraint.hpp 0.00% 2 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #1463      +/-   ##
===========================================
- Coverage    92.03%   91.82%   -0.21%     
===========================================
  Files          199      200       +1     
  Lines        25212    25277      +65     
===========================================
+ Hits         23203    23210       +7     
- Misses        2009     2067      +58     
Flag Coverage Δ
unittests 91.82% <1.35%> (-0.21%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

…r not the computation is to be done at a new point or a point previously evaluated in order to cache computations, especially with regard to contact mechanics solves
… queried at a new point or not into the examples and into the EqualityConstrainedHomotopyProblem, as well as the mixed complementarity problem derivative calls
…s in the HomotopySolve of EqualityConstrainedHomotopyProblems such as the InertiaRelief problem
…vers that has has an exception catching mechanism on EqualityConstrainedHomotopyProblem::Q
…e, that is that the convergence has not been impacted due to an error in implementation of the function caching
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

WIP Work in progress

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants