Skip to content

Move AlgebraicMultigrid to a package extension#299

Draft
Copilot wants to merge 2 commits into
mainfrom
copilot/move-algebric-multigrid-dependency
Draft

Move AlgebraicMultigrid to a package extension#299
Copilot wants to merge 2 commits into
mainfrom
copilot/move-algebric-multigrid-dependency

Conversation

Copilot AI commented May 18, 2026

Copy link
Copy Markdown
Contributor

This change makes AlgebraicMultigrid optional at base package load time by moving its integration behind a Julia package extension. AMG functionality remains available when AlgebraicMultigrid is present, without forcing it as a hard dependency of Jutul.

  • Dependency model update

    • Moved AlgebraicMultigrid from [deps] to [weakdeps] in Project.toml.
    • Added extension registration:
      • JutulAlgebraicMultigridExt = "AlgebraicMultigrid"
    • Added AlgebraicMultigrid to test extras/targets so AMG tests still execute.
  • Core package decoupling

    • Removed unconditional using AlgebraicMultigrid from src/Jutul.jl.
    • Removed unconditional AMG implementation include from src/linsolve/precond/precond.jl.
    • Added src/ext/algebraicmultigrid_ext.jl with core-side AMG preconditioner interface and extension availability hooks.
  • Extension-backed AMG implementation

    • Added ext/JutulAlgebraicMultigridExt/JutulAlgebraicMultigridExt.jl.
    • Implemented extension hooks (check_algebraicmultigrid_availability_impl, default AMG cycle).
    • Loaded the existing AMG implementation from within the extension so it is only activated when AlgebraicMultigrid is loaded.
  • Test path alignment

    • Updated AMG test module imports so extension loading is explicit in the AlgebraicMultigrid test path.
[weakdeps]
AlgebraicMultigrid = "2169fc97-5a83-5252-b627-83903c6c433c"

[extensions]
JutulAlgebraicMultigridExt = "AlgebraicMultigrid"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants