### check_midpoint argument to DirichletBC

239

views

4

How do I use the check_midpoint flag with DirichletBC? I think this used to work:

where V is a function space and Gamma is a routine defined via

For a complete example, this program fails:

`bc = DirichletBC(V, Constant(0.), Gamma, check_midpoint=False)`

where V is a function space and Gamma is a routine defined via

`def Gamma(x, on_boundary):....`

But, under FEniCS 2017.1.0, when I run this I get`TypeError: (size_t) expected positive 'int' for argument 3`

For a complete example, this program fails:

`from fenics import *`

`mesh = UnitSquareMesh(2, 2)`

`V = FunctionSpace(mesh, 'CG', 1)`

`def Gamma(x, on_boundary):`

` return near(x[0], 1.) and on_boundary`

`bc = DirichletBC(V, Constant(0.), Gamma, check_midpoint=False)`

Community: FEniCS Project

1

Apparently a bug in SWIG wrappers which does not occur in new pybind11 wrappers. As there is a simple workaround, mentioned by the answers of others, and SWIG will be removed soon, there is no need to fix this.

written
7 months ago by
Jan Blechta

1

Glad to hear that the bug is fixed in the upcoming versions, and I agree that in the mean time there is a simple workaround. Thanks to all.

written
7 months ago by
Douglas N Arnold

### 2 Answers

2

Hi, consider the following

```
from dolfin import *
from mshr import *
def main(check_midpoint):
domain = Circle(Point(0, 0), 1)
mesh = generate_mesh(domain, 40)
V = FunctionSpace(mesh, 'CG', 1)
bc = DirichletBC(V, Constant(0), 'near(x[0]*x[0]+x[1]*x[1], 1.)',
method='topological', check_midpoint=check_midpoint)
return len(bc.get_boundary_values())
assert main(False) > 0
assert main(True) == 0
```

2

`bc = DirichletBC(V, Constant(0.0), Gamma, method='topological', check_midpoint=False)`

`method='topological'`

is the default method.

Please login to add an answer/comment or follow this question.