Figures 3 (a) and (b) are generated with DOLFINx.
To reproduce the results in Figures 3 (a) (the comparison between Proximal Galerkin, SNES, Galahad, and IPOPT),
first deploy the ghcr.io/methods-group/proximalgalerkin:v0.3.0 Docker container.
Then execute the following scripts (in dolfinx-mode, see ../../README.md):
python3 generate_mesh_gmsh.py
python3 compare_all.py -P ./meshes/disk_1.xdmf -O coarse
python3 compare_all.py -P ./meshes/disk_2.xdmf -O medium
python3 compare_all.py -P ./meshes/disk_3.xdmf -O fineNote
The comparison script requires both GALAHAD and IPOPT which are not supplied by the standard FEniCS/DOLFINx installation.
To reproduce the finite difference and spectral method results in Figure 2 (c), deploy a container with Julia, for instance (julia:1.10.8 or ghcr.io/methods-group/proximalgalerkin).
julia obstacle_finite_difference.jl
julia obstacle_spectral.jlIf using the docker containers, you can most likely use the flag
julia --compiled-modules=existing obstacle_finite_difference.jlto speed up the run-time.