Skip to content

Commit 53ff141

Browse files
Sébastien LoiselSébastien Loisel
authored andcommitted
Expand JOSS paper: add sections, figure, references, impact, AI disclosure
Grow paper.md to a full JOSS-style article (state of the field, software design incl. spectral hierarchy, research impact, AI usage disclosure, acknowledgements/COI) with a rendered figure; expand paper.bib to 16 references with verified DOIs; gitignore the generated paper.pdf.
1 parent c32c0df commit 53ff141

4 files changed

Lines changed: 198 additions & 50 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,6 @@ CLAUDE.md
3636

3737
# Development scratch folder
3838
dev/
39+
40+
# JOSS paper PDF is a build artifact (generated by the Open Journals action)
41+
paper/paper.pdf

paper/figure.png

101 KB
Loading

paper/paper.bib

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,71 @@ @article{loisel2020efficient
2222
doi = {10.1007/s00211-020-01141-z}
2323
}
2424

25+
@unpublished{loiselmgb,
26+
author = {Loisel, Sébastien},
27+
title = {Algorithm {MGB} to solve highly nonlinear elliptic {PDEs} in $\tilde{O}(n)$ {FLOPS}},
28+
year = {2026},
29+
note = {Submitted}
30+
}
31+
32+
@unpublished{loiselnonuniform,
33+
author = {Loisel, Sébastien},
34+
title = {The Multi-Grid-Barrier method on nonuniform grids},
35+
year = {2026},
36+
note = {Submitted}
37+
}
38+
39+
@unpublished{loiselhpc,
40+
author = {Loisel, Sébastien},
41+
title = {A high-performance solver for convex optimization problems in function spaces},
42+
year = {2026},
43+
note = {Submitted}
44+
}
45+
46+
@inproceedings{loiseldd29,
47+
author = {Loisel, Sébastien},
48+
title = {The Algebraic Multi-Grid-Barrier method for solving $p$-Laplace and other convex optimization problems},
49+
booktitle = {Proceedings of the 29th International Conference on Domain Decomposition Methods, Milan, Italy},
50+
publisher = {Springer},
51+
year = {2026},
52+
note = {Accepted, to appear}
53+
}
54+
55+
@article{zhangjiang2025cnn,
56+
author = {Zhang, Xiaoyu and Jiang, Lijian},
57+
title = {Convolutional neural network based reduced order modeling for multiscale problems},
58+
journal = {Journal of Computational Physics},
59+
volume = {524},
60+
pages = {113710},
61+
year = {2025},
62+
publisher = {Elsevier},
63+
doi = {10.1016/j.jcp.2024.113710}
64+
}
65+
66+
@article{muller2021pharmonic,
67+
author = {M{\"u}ller, Peter Marvin and K{\"u}hl, Niklas and Siebenborn, Martin and Deckelnick, Klaus and Hinze, Michael and Rung, Thomas},
68+
title = {A novel p-harmonic descent approach applied to fluid dynamic shape optimization},
69+
journal = {Structural and Multidisciplinary Optimization},
70+
volume = {64},
71+
number = {6},
72+
pages = {3489--3503},
73+
year = {2021},
74+
publisher = {Springer},
75+
doi = {10.1007/s00158-021-03030-x}
76+
}
77+
78+
@article{balci2023kacanov,
79+
author = {Balci, Anna Kh. and Diening, Lars and Storn, Johannes},
80+
title = {Relaxed {Ka{\v{c}}anov} scheme for the $p$-Laplacian with large exponent},
81+
journal = {SIAM Journal on Numerical Analysis},
82+
volume = {61},
83+
number = {6},
84+
pages = {2775--2794},
85+
year = {2023},
86+
publisher = {SIAM},
87+
doi = {10.1137/22M1528550}
88+
}
89+
2590
@article{bezanson2017julia,
2691
author = {Bezanson, Jeff and Edelman, Alan and Karpinski, Stefan and Shah, Viral B.},
2792
title = {Julia: A fresh approach to numerical computing},
@@ -34,6 +99,35 @@ @article{bezanson2017julia
3499
doi = {10.1137/141000671}
35100
}
36101

102+
@article{gridap,
103+
author = {Badia, Santiago and Verdugo, Francesc},
104+
title = {Gridap: An extensible finite element toolbox in {Julia}},
105+
journal = {Journal of Open Source Software},
106+
volume = {5},
107+
number = {52},
108+
pages = {2520},
109+
year = {2020},
110+
doi = {10.21105/joss.02520}
111+
}
112+
113+
@article{fenics,
114+
author = {Aln{\ae}s, Martin S. and Blechta, Jan and Hake, Johan and Johansson, August and Kehlet, Benjamin and Logg, Anders and Richardson, Chris and Ring, Johannes and Rognes, Marie E. and Wells, Garth N.},
115+
title = {The {FEniCS} project version 1.5},
116+
journal = {Archive of Numerical Software},
117+
volume = {3},
118+
number = {100},
119+
pages = {9--23},
120+
year = {2015},
121+
doi = {10.11588/ans.2015.100.20553}
122+
}
123+
124+
@misc{ferrite,
125+
author = {Carlsson, Kristoffer and Ekre, Fredrik and {Ferrite.jl contributors}},
126+
title = {{Ferrite.jl}: A finite element toolbox for {Julia}},
127+
year = {2024},
128+
doi = {10.5281/zenodo.18196628}
129+
}
130+
37131
@misc{AlgebraicMultigrid,
38132
author = {{JuliaLinearAlgebra contributors}},
39133
title = {{AlgebraicMultigrid.jl}: Algebraic multigrid (AMG) solvers in {Julia}},

paper/paper.md

Lines changed: 101 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -22,30 +22,28 @@ bibliography: paper.bib
2222

2323
# Summary
2424

25-
`MultiGridBarrier.jl` is a Julia package for solving convex variational problems in
26-
function spaces. These are the nonlinear partial differential equations (PDEs) and
27-
boundary-value problems that arise from minimizing a convex functional. Representative examples include
28-
the $p$-Laplacian for any $p \in [1, \infty]$, total-variation problems, and obstacle
29-
problems. The most useful of these are *nonsmooth*: the energy is convex but not
30-
differentiable (e.g. $p = 1$ or total variation), a regime in which Newton-type solvers
31-
applied naively either fail or require a number of iterations that grows rapidly with the
32-
mesh resolution.
33-
34-
The package implements the **multigrid barrier method**, which couples an interior-point
35-
(barrier) method with a multigrid hierarchy. For the problem classes covered by the
36-
supporting theory the method is *quasi-optimal*: the number of interior-point/Newton
37-
iterations grows only mildly with the number of degrees of freedom $n$. For instance, this
38-
count is $O(\sqrt{n}\,\log n)$ for the $p$-Laplacian [@loisel2020efficient], and
39-
polylogarithmic in the analytic, spectral setting [@loisel2026spectral].
25+
`MultiGridBarrier.jl` is a Julia [@bezanson2017julia] package for solving convex variational
26+
problems in function spaces. These are the nonlinear partial differential equations (PDEs) and boundary-value
27+
problems that arise from minimizing a convex functional. Representative examples include the
28+
$p$-Laplacian for any $p \in [1, \infty]$, total-variation problems, and obstacle problems.
29+
The most useful of these are *nonsmooth*: the energy is convex but not differentiable (for
30+
example $p = 1$, or total variation), a regime in which Newton-type solvers applied naively
31+
either fail or require a number of iterations that grows rapidly with the mesh resolution.
32+
33+
The package implements the **multigrid barrier method** [@loiselmgb; @loisel2020efficient;
34+
@loisel2026spectral], which couples an interior-point (barrier) method with a multigrid
35+
hierarchy. For the problem classes covered by the supporting theory the method is
36+
*quasi-optimal*: the number of interior-point/Newton iterations grows only mildly with the
37+
number of degrees of freedom $n$. For instance, this count is $O(\sqrt{n}\,\log n)$ for the
38+
$p$-Laplacian [@loisel2020efficient], and polylogarithmic in the analytic, spectral setting
39+
[@loisel2026spectral].
4040

4141
`MultiGridBarrier.jl` provides finite-element discretizations in one, two, and three
4242
dimensions (simplicial $P_1$/$P_2$ elements and tensor-product $Q_k$ elements), as well as
4343
Chebyshev spectral discretizations, all with isoparametric element maps. It builds an
44-
algebraic-multigrid hierarchy automatically (via `AlgebraicMultigrid.jl`
45-
[@AlgebraicMultigrid] or, optionally, `PyAMG` [@pyamg]), supports user-specified mesh
46-
connectivity (enabling slit domains, branch cuts, and glued manifolds), solves
47-
time-dependent problems, and offers optional GPU acceleration through CUDA. A typical solve
48-
is three lines:
44+
algebraic-multigrid hierarchy automatically, supports user-specified mesh connectivity
45+
(enabling slit domains, branch cuts, and glued manifolds), solves time-dependent problems,
46+
and offers optional GPU acceleration through CUDA. A typical solve is three lines:
4947

5048
```julia
5149
using MultiGridBarrier
@@ -58,38 +56,91 @@ sol = mgb_solve(assemble(amg(geom); p = 1.0)) # a nonsmooth p = 1 problem
5856
Convex variational problems are ubiquitous in computational science: nonlinear elasticity
5957
and plasticity, image denoising and segmentation (total variation), contact and obstacle
6058
problems, and non-Newtonian flow (the $p$-Laplacian). The difficulty is that the most
61-
interesting cases are nonsmooth (the energy is convex but not differentiable), so
62-
Newton-type methods applied naively either stagnate or require an iteration count that grows
63-
rapidly as the mesh is refined.
59+
interesting cases are nonsmooth (the energy is convex but not differentiable), so Newton-type
60+
methods applied naively either stagnate or require an iteration count that grows rapidly as
61+
the mesh is refined.
6462

6563
Interior-point (barrier) methods handle nonsmoothness robustly by following a smooth central
6664
path, but a single barrier solve still requires solving a sequence of large, increasingly
67-
ill-conditioned linear systems. The multigrid barrier method addresses both issues at once:
68-
a multigrid hierarchy preconditions the central-path subproblems so that the *total* cost
69-
stays close to linear in the number of unknowns, with rigorous bounds for the covered problem
70-
classes [@loisel2020efficient; @loisel2026spectral].
71-
72-
General-purpose finite-element libraries and algebraic-multigrid libraries in Julia provide
73-
the building blocks for discretizing PDEs and solving linear systems, but they do not provide
74-
an out-of-the-box, theoretically grounded solver for nonsmooth convex variational problems.
75-
`MultiGridBarrier.jl` fills this gap: it packages the discretization, the multigrid hierarchy,
76-
and the barrier solver behind a small high-level interface (`fem2d_P2`, `amg`, `assemble`,
77-
`mgb_solve`). Researchers and practitioners can then solve such problems, and reproduce the
78-
numerical results of the underlying papers, in a few lines on the CPU or the GPU.
79-
80-
# Functionality
81-
82-
- **Discretizations.** Finite elements in 1D/2D/3D: simplicial $P_1$/$P_2$ and tensor-product
83-
$Q_k$, plus Chebyshev spectral elements; all isoparametric.
84-
- **Solver.** An algebraic-multigrid hierarchy (`amg`) drives a barrier (interior-point)
85-
method (`mgb_solve`) for user-assembled convex problems (`assemble`).
86-
- **Convex constraints.** Built-in convex sets for $p$-norm/Euclidian-power, linear, and
87-
piecewise constraints, composable via `intersect`.
88-
- **Topological meshes.** Explicit connectivity (`tensor_dofmap` and the `t=` keyword) lets
89-
geometrically coincident nodes remain topologically distinct, supporting slit domains,
90-
branch cuts, and glued manifolds.
91-
- **Time dependence.** `parabolic_solve` for time-dependent problems.
92-
- **GPU.** Optional CUDA acceleration through a package extension.
93-
- **Visualization.** Plotting of 1D/2D/3D solutions and animations.
65+
ill-conditioned linear systems. The multigrid barrier method addresses both issues at once: a
66+
multigrid hierarchy preconditions the central-path subproblems so that the *total* cost stays
67+
close to linear in the number of unknowns, with rigorous bounds for the covered problem
68+
classes [@loiselmgb; @loisel2020efficient; @loisel2026spectral].
69+
70+
# State of the field
71+
72+
General-purpose finite-element libraries in Julia, such as `Gridap.jl` [@gridap] and
73+
`Ferrite.jl` [@ferrite], and in the wider ecosystem, such as the FEniCS project [@fenics],
74+
provide flexible tools for discretizing PDEs; algebraic-multigrid libraries such as
75+
`AlgebraicMultigrid.jl` [@AlgebraicMultigrid] and `PyAMG` [@pyamg] solve the resulting linear
76+
systems. These are general building blocks, but none provides an out-of-the-box,
77+
theoretically grounded solver for *nonsmooth convex variational* problems.
78+
`MultiGridBarrier.jl` fills this gap. It packages a discretization, a multigrid hierarchy, and
79+
a barrier solver behind a small high-level interface, and builds on (rather than reinvents)
80+
the Julia ecosystem: it uses `AlgebraicMultigrid.jl`, or optionally `PyAMG`, to coarsen its
81+
auxiliary problems, and runs on both CPU and GPU.
82+
83+
# Software design
84+
85+
A problem is solved with four composable steps. A *mesh constructor* (`fem1d`, `fem2d`,
86+
`fem2d_P1`, `fem2d_P2`, `fem3d`, `spectral1d`, `spectral2d`) returns a `Geometry` describing
87+
the discretization. `amg(geom)` attaches an algebraic-multigrid hierarchy, `assemble(mg; ...)`
88+
builds the convex problem (the functional, its barrier, and any constraints), and
89+
`mgb_solve(prob)` runs the barrier method.
90+
91+
Internally, the multigrid barrier method tracks the central path of an interior-point method
92+
while using a multigrid hierarchy to solve the Newton systems along that path
93+
[@loiselmgb; @loisel2026spectral]. The finite-element discretizations are isoparametric
94+
simplicial $P_k$ and tensor-product $Q_k$ elements. For these, the multigrid hierarchy is built
95+
algebraically: the package coarsens an auxiliary $P_1$/$Q_1$ problem on the element corners and
96+
lifts the resulting transfer operators to the full high-order basis, so the same machinery
97+
serves every finite-element family. Mesh topology is represented by an explicit node
98+
connectivity array, which decouples geometry from topology and lets geometrically coincident
99+
nodes remain distinct, supporting slit domains, branch cuts, and glued manifolds. The package
100+
also provides a structured, batched-GEMM assembly of the Newton Hessians that maps efficiently
101+
onto GPUs [@loiselhpc], a variant for nonuniform grids [@loiselnonuniform], and the algebraic
102+
formulation used here [@loiseldd29].
103+
104+
The Chebyshev spectral discretizations (`spectral1d`, `spectral2d`) use an intrinsically
105+
spectral hierarchy instead. The multigrid levels are a sequence of polynomial approximation
106+
spaces of increasing degree, with exact polynomial interpolation as the inter-level transfer
107+
and zero-trace boundary conditions imposed by basis construction rather than node masking. This
108+
is the setting of the spectral barrier method [@loisel2026spectral]: when the solution is
109+
analytic, the spectral discretization converges geometrically and the overall method is
110+
quasi-optimal, with the iteration count growing only polylogarithmically in the number of
111+
degrees of freedom.
112+
113+
Convex constraints (p-norm / Euclidian-power, linear, and piecewise) are built in and
114+
composable for any discretization, and `parabolic_solve` extends the method to time-dependent
115+
problems.
116+
117+
![A nonsmooth ($p = 1$) solution of a two-dimensional $p$-Laplace problem, computed with
118+
`MultiGridBarrier.jl` on a refined $Q_2$ mesh and rendered with the package's plotting
119+
front-end.](figure.png)
120+
121+
# Research impact
122+
123+
The methods implemented in `MultiGridBarrier.jl` underpin the numerical experiments in the
124+
papers that introduce them [@loisel2020efficient; @loiselmgb; @loisel2026spectral], and the
125+
solver and its earlier implementations have been used by other researchers. For example, Zhang
126+
and Jiang use this algorithm within a convolutional-neural-network reduced-order modeling
127+
method for multiscale problems [@zhangjiang2025cnn]. More broadly, the underlying $p$-Laplacian
128+
algorithm [@loisel2020efficient] has been cited around 26 times (Google Scholar, as of June
129+
2026) across the numerical-PDE and optimization literature, in areas such as computational
130+
$p$-Laplacian numerics [@balci2023kacanov] and $p$-harmonic shape optimization
131+
[@muller2021pharmonic].
132+
133+
# AI usage disclosure
134+
135+
Generative AI assistance (Anthropic Claude, via the Claude Code command-line tool) was used in
136+
preparing this submission: drafting and editing this paper and parts of the documentation and
137+
README, generating the illustrative figure, and assisting with some software changes
138+
(refactoring, a correctness fix, and a mesh-connectivity feature). All AI-assisted output was
139+
reviewed, validated, and edited by the author, who made all core design and research decisions
140+
and takes full responsibility for the software and the manuscript.
141+
142+
# Acknowledgements
143+
144+
This work received no specific external funding. The author declares no conflicts of interest.
94145

95146
# References

0 commit comments

Comments
 (0)