Skip to content

Commit 5cdfd31

Browse files
authored
Merge pull request #1039 from jhdark/update_dolfinx_0.10
Update to use dolfinx v0.10
2 parents f4f7875 + ead036e commit 5cdfd31

File tree

11 files changed

+40
-41
lines changed

11 files changed

+40
-41
lines changed

.github/workflows/benchmark.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on: [pull_request, push]
44
jobs:
55
benchmark:
66
runs-on: ubuntu-latest
7-
container: dolfinx/dolfinx:v0.9.0
7+
container: dolfinx/dolfinx:v0.10.0
88

99
steps:
1010
- name: Checkout code

.github/workflows/ci_conda.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,14 @@ on: [pull_request, push]
33

44
jobs:
55
run-tests:
6+
name: run-tests (fenics-dolfinx v${{ matrix.dolfinx }})
67
runs-on: ubuntu-latest
78

9+
strategy:
10+
fail-fast: false
11+
matrix:
12+
dolfinx: ['0.9.0', '0.10.0']
13+
814
steps:
915
- name: Checkout code
1016
uses: actions/checkout@v2
@@ -20,7 +26,7 @@ jobs:
2026
- name: Create Conda environment
2127
shell: bash -l {0}
2228
run: |
23-
conda install -c conda-forge fenics-dolfinx=0.9.0 scifem adios4dolfinx
29+
conda install -c conda-forge fenics-dolfinx=${{ matrix.dolfinx }} scifem adios4dolfinx
2430
2531
- name: Install local package and dependencies
2632
shell: bash -l {0}

.github/workflows/ci_docker.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ on: [pull_request, push]
33

44
jobs:
55
run-tests:
6+
name: run-tests (fenics-dolfinx ${{ matrix.container_version }})
67
runs-on: ubuntu-latest
78
strategy:
89
fail-fast: false
910
matrix:
10-
container_version: [v0.9.0, nightly]
11+
container_version: [v0.9.0, v0.10.0, nightly]
1112
container: dolfinx/dolfinx:${{ matrix.container_version }}
1213
steps:
1314
- name: Checkout code

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ lint = ["ruff", "mypy"]
3232
docs = ["sphinx", "sphinx-book-theme", "sphinx-design", "matplotlib"]
3333

3434
[project.urls]
35-
Homepage = "https://github.com/RemDelaporteMathurin/FESTIM"
36-
Issues = "https://github.com/RemDelaporteMathurin/FESTIM/issues"
35+
Homepage = "https://github.com/festim-dev/FESTIM"
36+
Issues = "https://github.com/festim-dev/FESTIM/issues"
3737

3838

3939
[tool.setuptools_scm]

src/festim/exports/average_surface.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from dolfinx import fem
21
from scifem import assemble_scalar
32

43
from festim.exports.surface_quantity import SurfaceQuantity
@@ -27,6 +26,6 @@ def compute(self, ds):
2726
"""
2827

2928
self.value = assemble_scalar(
30-
fem.form(self.field.solution * ds(self.surface.id))
31-
) / assemble_scalar(fem.form(1 * ds(self.surface.id)))
29+
self.field.solution * ds(self.surface.id)
30+
) / assemble_scalar(1 * ds(self.surface.id))
3231
self.data.append(self.value)

src/festim/exports/average_volume.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from dolfinx import fem
21
from scifem import assemble_scalar
32

43
from festim.exports.volume_quantity import VolumeQuantity
@@ -26,6 +25,6 @@ def compute(self, u, dx, entity_maps=None):
2625
subdomain, and appends it to the data list
2726
"""
2827
self.value = assemble_scalar(
29-
fem.form(u * dx(self.volume.id), entity_maps=entity_maps)
30-
) / assemble_scalar(fem.form(1 * dx(self.volume.id)))
28+
u * dx(self.volume.id), entity_maps=entity_maps
29+
) / assemble_scalar(1 * dx(self.volume.id))
3130
self.data.append(self.value)

src/festim/exports/total_surface.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import ufl
2-
from dolfinx import fem
32
from scifem import assemble_scalar
43

54
from festim.exports.surface_quantity import SurfaceQuantity
@@ -29,7 +28,5 @@ def compute(self, ds: ufl.Measure):
2928
Args:
3029
ds (ufl.Measure): surface measure of the model
3130
"""
32-
self.value = assemble_scalar(
33-
fem.form(self.field.solution * ds(self.surface.id))
34-
)
31+
self.value = assemble_scalar(self.field.solution * ds(self.surface.id))
3532
self.data.append(self.value)

src/festim/exports/total_volume.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import ufl
2-
from dolfinx import fem
32
from scifem import assemble_scalar
43

54
from festim.exports.volume_quantity import VolumeQuantity
@@ -31,7 +30,5 @@ def compute(self, u, dx: ufl.Measure, entity_maps=None):
3130
dx: volume measure of the model
3231
entity_maps: entity maps relating parent mesh and submesh
3332
"""
34-
self.value = assemble_scalar(
35-
fem.form(u * dx(self.volume.id), entity_maps=entity_maps)
36-
)
33+
self.value = assemble_scalar(u * dx(self.volume.id), entity_maps=entity_maps)
3734
self.data.append(self.value)

src/festim/problem.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,6 @@ def create_solver(self):
184184
"ksp_type": "preonly",
185185
"pc_type": "lu",
186186
"pc_factor_mat_solver_type": linear_solver,
187-
"snes_monitor": None,
188187
}
189188
else:
190189
petsc_options = self.petsc_options

test/benchmark.py

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from petsc4py import PETSc
66

77
import basix
8+
import dolfinx
89
import numpy as np
910
import tqdm.autonotebook
1011
from dolfinx.fem import (
@@ -17,12 +18,9 @@
1718
locate_dofs_geometrical,
1819
locate_dofs_topological,
1920
)
20-
from dolfinx.fem.petsc import (
21-
NonlinearProblem,
22-
)
21+
from dolfinx.fem.petsc import NonlinearProblem
2322
from dolfinx.io import XDMFFile
2423
from dolfinx.mesh import create_mesh, locate_entities, meshtags
25-
from dolfinx.nls.petsc import NewtonSolver
2624
from test_permeation_problem import test_permeation_problem
2725
from ufl import (
2826
FacetNormal,
@@ -111,24 +109,28 @@ def siverts_law(T, S_0, E_S, pressure):
111109

112110
dt = 1 / 20
113111
final_time = 50
114-
num_steps = int(final_time / dt)
115112

116113
F = dot(D * grad(u), grad(v)) * dx(1)
117114
F += ((u - u_n) / dt) * v * dx(1)
118115

119-
problem = NonlinearProblem(F, u, bcs=bcs)
120-
solver = NewtonSolver(MPI.COMM_WORLD, problem)
121-
solver.convergence_criterion = "incremental"
122-
solver.rtol = 1e-10
123-
solver.atol = 1e10
124-
solver.report = True
125-
ksp = solver.krylov_solver
126-
opts = PETSc.Options()
127-
option_prefix = ksp.getOptionsPrefix()
128-
opts[f"{option_prefix}ksp_type"] = "cg"
129-
opts[f"{option_prefix}pc_type"] = "gamg"
130-
opts[f"{option_prefix}pc_factor_mat_solver_type"] = "mumps"
131-
ksp.setFromOptions()
116+
petsc_options = {
117+
"snes_type": "newtonls",
118+
"snes_linesearch_type": "none",
119+
"snes_stol": 1e-8,
120+
"snes_atol": 0,
121+
"snes_rtol": 0,
122+
"snes_max_it": 30,
123+
"ksp_type": "cg",
124+
"pc_type": "gamg",
125+
}
126+
127+
solver = NonlinearProblem(
128+
F,
129+
u,
130+
bcs=bcs,
131+
petsc_options=petsc_options,
132+
petsc_options_prefix="festim_solver",
133+
)
132134

133135
temp_dir = tempfile.TemporaryDirectory()
134136
mobile_xdmf = XDMFFile(
@@ -146,7 +148,7 @@ def siverts_law(T, S_0, E_S, pressure):
146148
progress.update(float(dt))
147149
t += float(dt)
148150

149-
solver.solve(u)
151+
_ = solver.solve()
150152

151153
mobile_xdmf.write_function(u, t)
152154

0 commit comments

Comments
 (0)