Skip to content

Commit 812e5e2

Browse files
authored
Merge pull request #41 from jorgensd/dokken/main-typing
Typing for main branch
2 parents af029ef + 4ba3e6c commit 812e5e2

5 files changed

Lines changed: 25 additions & 17 deletions

File tree

‎demos/poisson_mother.py‎

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ def refinement_region(x, tol=1e-14):
140140

141141
u = ufl.TrialFunction(V)
142142
v = ufl.TestFunction(V)
143-
kappa = dolfinx.fem.Constant(refined_mesh, dolfinx.default_scalar_type(1.0)) # Thermal diffusivity
143+
kappa = dolfinx.fem.Constant(refined_mesh, np.dtype(dolfinx.default_scalar_type).type(1.0)) # Thermal diffusivity
144144
F = ufl.inner(kappa * ufl.grad(u), ufl.grad(v)) * ufl.dx - f * v * ufl.dx
145145
a, L = ufl.system(F)
146146

@@ -149,7 +149,7 @@ def refinement_region(x, tol=1e-14):
149149
refined_mesh.topology.create_connectivity(tdim - 1, tdim)
150150
exterior_facets = dolfinx.mesh.exterior_facet_indices(refined_mesh.topology)
151151
exterior_dofs = dolfinx.fem.locate_dofs_topological(V, tdim - 1, exterior_facets)
152-
zero = dolfinx.fem.Constant(refined_mesh, dolfinx.default_scalar_type(0.0))
152+
zero = dolfinx.fem.Constant(refined_mesh, np.dtype(dolfinx.default_scalar_type).type(0.0))
153153
bc = dolfinx.fem.dirichletbc(zero, exterior_dofs, V)
154154

155155
# Next, we define a `dolfinx_adjoint.LinearProblem` instance, which overloads
@@ -194,7 +194,9 @@ def refinement_region(x, tol=1e-14):
194194

195195
# The functional is written out in `ufl` and assembled with `dolfinx_adjoint.assemble_scalar`
196196

197-
alpha = dolfinx.fem.Constant(refined_mesh, dolfinx.default_scalar_type(1.0e-6)) # Tikhonov regularization parameter
197+
alpha = dolfinx.fem.Constant(
198+
refined_mesh, np.dtype(dolfinx.default_scalar_type).type(1.0e-6)
199+
) # Tikhonov regularization parameter
198200
alpha.name = "alpha" # type: ignore
199201
J_symbolic = 0.5 * ufl.inner(uh - d, uh - d) * ufl.dx + 0.5 * alpha * ufl.inner(f, f) * ufl.dx
200202
J = dolfinx_adjoint.assemble_scalar(J_symbolic)
@@ -354,14 +356,14 @@ def solve_optimal_problem(N: int, use_newton: bool = False) -> dict[str, float |
354356

355357
u = ufl.TrialFunction(V)
356358
v = ufl.TestFunction(V)
357-
kappa = dolfinx.fem.Constant(refined_mesh, dolfinx.default_scalar_type(1.0)) # Thermal diffusivity
359+
kappa = dolfinx.fem.Constant(refined_mesh, np.dtype(dolfinx.default_scalar_type).type(1.0)) # Thermal diffusivity
358360
F = ufl.inner(kappa * ufl.grad(u), ufl.grad(v)) * ufl.dx - f * v * ufl.dx
359361
a, L = ufl.system(F)
360362

361363
refined_mesh.topology.create_connectivity(tdim - 1, tdim)
362364
exterior_facets = dolfinx.mesh.exterior_facet_indices(refined_mesh.topology)
363365
exterior_dofs = dolfinx.fem.locate_dofs_topological(V, tdim - 1, exterior_facets)
364-
zero = dolfinx.fem.Constant(refined_mesh, dolfinx.default_scalar_type(0.0))
366+
zero = dolfinx.fem.Constant(refined_mesh, np.dtype(dolfinx.default_scalar_type).type(0.0))
365367
bc = dolfinx.fem.dirichletbc(zero, exterior_dofs, V)
366368

367369
problem = dolfinx_adjoint.LinearProblem(
@@ -372,7 +374,9 @@ def solve_optimal_problem(N: int, use_newton: bool = False) -> dict[str, float |
372374
x, y = ufl.SpatialCoordinate(refined_mesh)
373375
d = 1 / (2 * ufl.pi**2) * ufl.sin(ufl.pi * x) * ufl.sin(ufl.pi * y)
374376

375-
alpha = dolfinx.fem.Constant(refined_mesh, dolfinx.default_scalar_type(1.0e-6)) # Tikhonov regularization parameter
377+
alpha = dolfinx.fem.Constant(
378+
refined_mesh, np.dtype(dolfinx.default_scalar_type).type(1.0e-6)
379+
) # Tikhonov regularization parameter
376380
J_symbolic = 0.5 * ufl.inner(uh - d, uh - d) * ufl.dx + 0.5 * alpha * ufl.inner(f, f) * ufl.dx
377381
J = dolfinx_adjoint.assemble_scalar(J_symbolic)
378382

‎src/dolfinx_adjoint/blocks/solvers.py‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -363,11 +363,11 @@ def evaluate_tlm_component(self, inputs, tlm_inputs, block_variable, idx, prepar
363363
if bcs is not None:
364364
# This system should never be "blocked"
365365
dolfinx.fem.petsc.apply_lifting(b_tlm.petsc_vec, [dFdu], bcs=[bcs], alpha=0)
366-
dolfinx.la.petsc._ghost_update(b_tlm.petsc_vec, PETSc.InsertMode.ADD, PETSc.ScatterMode.REVERSE) # type: ignore [attr-defined]
366+
dolfinx.la.petsc._ghost_update(b_tlm.petsc_vec, PETSc.InsertMode.ADD, PETSc.ScatterMode.REVERSE) # type: ignore[arg-type]
367367
for bc in bcs:
368368
bc.set(b_tlm.array, alpha=0)
369369
else:
370-
dolfinx.la.petsc._ghost_update(b_tlm, PETSc.InsertMode.ADD, PETSc.ScatterMode.REVERSE) # type: ignore [attr-defined]
370+
dolfinx.la.petsc._ghost_update(b_tlm, PETSc.InsertMode.ADD, PETSc.ScatterMode.REVERSE) # type: ignore[arg-type]
371371
solve_linear_problem(A_tlm, dudm.x, b_tlm, petsc_options=self._tlm_petsc_options)
372372
return dudm
373373

@@ -929,11 +929,11 @@ def evaluate_tlm_component(self, inputs, tlm_inputs, block_variable, idx, prepar
929929
if bcs is not None:
930930
# This system should never be "blocked"
931931
dolfinx.fem.petsc.apply_lifting(b_tlm.petsc_vec, [dFdu], bcs=[bcs], alpha=0)
932-
dolfinx.la.petsc._ghost_update(b_tlm.petsc_vec, PETSc.InsertMode.ADD, PETSc.ScatterMode.REVERSE) # type: ignore [attr-defined]
932+
dolfinx.la.petsc._ghost_update(b_tlm.petsc_vec, PETSc.InsertMode.ADD, PETSc.ScatterMode.REVERSE) # type: ignore [arg-type]
933933
for bc in bcs:
934934
bc.set(b_tlm.array, alpha=0)
935935
else:
936-
dolfinx.la.petsc._ghost_update(b_tlm, PETSc.InsertMode.ADD, PETSc.ScatterMode.REVERSE) # type: ignore [attr-defined]
936+
dolfinx.la.petsc._ghost_update(b_tlm, PETSc.InsertMode.ADD, PETSc.ScatterMode.REVERSE) # type: ignore [arg-type]
937937
solve_linear_problem(A_tlm, dudm.x, b_tlm, petsc_options=self._tlm_petsc_options)
938938
return dudm
939939

‎src/dolfinx_adjoint/petsc_utils.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def solve_linear_problem(
3737
opts = PETSc.Options() # type: ignore [attr-defined]
3838
opts.prefixPush(problem_prefix)
3939
for k, v in petsc_options.items():
40-
opts[k] = v
40+
opts.setValue(k, v)
4141
opts.prefixPop()
4242
ksp.setFromOptions()
4343

@@ -49,7 +49,7 @@ def solve_linear_problem(
4949

5050
# Free option space post setting
5151
for k in petsc_options.keys():
52-
del opts[k]
52+
opts.delValue(k)
5353
ksp.solve(b.petsc_vec, x.petsc_vec)
5454
ksp.destroy()
5555
x.scatter_forward()
@@ -85,5 +85,5 @@ def solve(
8585
# Solve linear system and update ghost values in the solution
8686
self._solver.solve(self._b, self._x)
8787
dolfinx.la.petsc._ghost_update(self._x, PETSc.InsertMode.INSERT, PETSc.ScatterMode.FORWARD) # type: ignore
88-
dolfinx.fem.petsc.assign(self._x, self._u)
88+
dolfinx.fem.petsc.assign(self._x, self._u) # type: ignore
8989
return self._u

‎tests/test_linear_solver.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def test_solver(mesh_var_name: str, request, constant: typing.Union[float, int,
4848
mesh.topology.create_connectivity(mesh.topology.dim - 1, mesh.topology.dim)
4949
boundary_facets = dolfinx.mesh.exterior_facet_indices(mesh.topology)
5050
boundary_dofs = dolfinx.fem.locate_dofs_topological(V, mesh.topology.dim - 1, boundary_facets)
51-
bc_val = dolfinx.fem.Constant(mesh, dolfinx.default_scalar_type(1.0))
51+
bc_val = dolfinx.fem.Constant(mesh, np.dtype(dolfinx.default_scalar_type).type(1.0))
5252
bc = dolfinx.fem.dirichletbc(bc_val, boundary_dofs, V)
5353

5454
options = {

‎tests/test_poisson_mother.py‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@ def reference_solution(
7373
mesh.topology.create_connectivity(mesh.topology.dim - 1, mesh.topology.dim)
7474
exterior_facets = dolfinx.mesh.exterior_facet_indices(mesh.topology)
7575
exterior_dofs = dolfinx.fem.locate_dofs_topological(V, mesh.topology.dim - 1, exterior_facets)
76-
bc = dolfinx.fem.dirichletbc(dolfinx.fem.Constant(mesh, dolfinx.default_scalar_type(0.0)), exterior_dofs, V)
76+
bc = dolfinx.fem.dirichletbc(
77+
dolfinx.fem.Constant(mesh, np.dtype(dolfinx.default_scalar_type).type(0.0)), exterior_dofs, V
78+
)
7779
petsc_options = {
7880
"ksp_type": "preonly",
7981
"pc_type": "lu",
@@ -182,7 +184,9 @@ def step_func(x: npt.NDArray[np.float64]) -> npt.NDArray[np.float64]:
182184
x, y = ufl.SpatialCoordinate(mesh)
183185
d = 1 / (2 * ufl.pi**2) * ufl.sin(ufl.pi * x) * ufl.sin(ufl.pi * y)
184186

185-
alpha = dolfinx.fem.Constant(mesh, dolfinx.default_scalar_type(1.0e-6)) # Tikhonov regularization parameter
187+
alpha = dolfinx.fem.Constant(
188+
mesh, np.dtype(dolfinx.default_scalar_type).type(1.0e-6)
189+
) # Tikhonov regularization parameter
186190
alpha.name = "alpha" # type: ignore
187191

188192
# Get reference values
@@ -206,7 +210,7 @@ def step_func(x: npt.NDArray[np.float64]) -> npt.NDArray[np.float64]:
206210
mesh.topology.create_connectivity(tdim - 1, tdim)
207211
exterior_facets = dolfinx.mesh.exterior_facet_indices(mesh.topology)
208212
exterior_dofs = dolfinx.fem.locate_dofs_topological(V, tdim - 1, exterior_facets)
209-
zero = dolfinx.fem.Constant(mesh, dolfinx.default_scalar_type(0.0))
213+
zero = dolfinx.fem.Constant(mesh, np.dtype(dolfinx.default_scalar_type).type(0.0))
210214
bc = dolfinx.fem.dirichletbc(zero, exterior_dofs, V)
211215

212216
petsc_options = {

0 commit comments

Comments
 (0)