dolfinx_mpc icon indicating copy to clipboard operation
dolfinx_mpc copied to clipboard

TypeError when running periodic demos with dolfinx/dolfinx_mpc v0.8.0

Open bnherrerac opened this issue 4 months ago • 6 comments

Hello, I am unable to run the periodic demos using dolfinx 0.8.0 and dolfinx_mpc 0.8.0, with Python 3.12.6. The demos I can't run are the following:

  • https://github.com/jorgensd/dolfinx_mpc/blob/v0.8.0/python/demos/demo_periodic_geometrical.py
  • https://github.com/jorgensd/dolfinx_mpc/blob/v0.8.0/python/demos/demo_periodic3d_topological.py

In both cases I get a similar error, here's the error for demo_periodic_geometrical.py:

  File "/home/bnherrerac/p2/demos/demo_periodic_geometrical.py", line 81, in <module>
    mpc.create_periodic_constraint_geometrical(V, periodic_boundary, periodic_relation, bcs)
  File "/home/bnherrerac/anaconda3/envs/fenicsx-env/lib/python3.12/site-packages/dolfinx_mpc/multipointconstraint.py", line 286, in create_periodic_constraint_geometrical
    mpc_data = dolfinx_mpc.cpp.mpc.create_periodic_constraint_geometrical(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: create_periodic_constraint_geometrical(): incompatible function arguments. The following argument types are supported:
    1. create_periodic_constraint_geometrical(V: dolfinx::fem::FunctionSpace<float>, indicator: Callable[[numpy.ndarray[dtype=float32, writable=False, shape=(*, *), ]], ndarray[dtype=bool, shape=(*), order='C']], relation: Callable[[numpy.ndarray[dtype=float32, writable=False, shape=(*, *), ]], numpy.ndarray[dtype=float32, shape=(*, *), ]], bcs: list[dolfinx::fem::DirichletBC<float, float>], scale: float, collapse: bool) -> dolfinx_mpc.cpp.mpc.mpc_data_float
    2. create_periodic_constraint_geometrical(V: dolfinx::fem::FunctionSpace<float>, indicator: Callable[[numpy.ndarray[dtype=float32, writable=False, shape=(*, *), ]], ndarray[dtype=bool, shape=(*), order='C']], relation: Callable[[numpy.ndarray[dtype=float32, writable=False, shape=(*, *), ]], numpy.ndarray[dtype=float32, shape=(*, *), ]], bcs: list[dolfinx::fem::DirichletBC<std::complex<float>, float>], scale: complex, collapse: bool) -> dolfinx_mpc.cpp.mpc.mpc_data_complex_float
    3. create_periodic_constraint_geometrical(V: dolfinx::fem::FunctionSpace<double>, indicator: Callable[[numpy.ndarray[dtype=float64, writable=False, shape=(*, *), ]], ndarray[dtype=bool, shape=(*), order='C']], relation: Callable[[numpy.ndarray[dtype=float64, writable=False, shape=(*, *), ]], numpy.ndarray[dtype=float64, shape=(*, *), ]], bcs: list[dolfinx::fem::DirichletBC<double, double>], scale: float, collapse: bool) -> dolfinx_mpc.cpp.mpc.mpc_data_double
    4. create_periodic_constraint_geometrical(V: dolfinx::fem::FunctionSpace<double>, indicator: Callable[[numpy.ndarray[dtype=float64, writable=False, shape=(*, *), ]], ndarray[dtype=bool, shape=(*), order='C']], relation: Callable[[numpy.ndarray[dtype=float64, writable=False, shape=(*, *), ]], numpy.ndarray[dtype=float64, shape=(*, *), ]], bcs: list[dolfinx::fem::DirichletBC<std::complex<double>, double>], scale: complex, collapse: bool) -> dolfinx_mpc.cpp.mpc.mpc_data_complex_double

Invoked with types: dolfinx.cpp.fem.FunctionSpace_float64, function, function, list, float, bool 

And the error for demo_periodic3d_topological.py:

Traceback (most recent call last):
  File "/home/bnherrerac/p2/demos/demo_periodic3d_topological.py", line 187, in <module>
    demo_periodic3D(celltype)
  File "/home/bnherrerac/p2/demos/demo_periodic3d_topological.py", line 97, in demo_periodic3D
    mpc.create_periodic_constraint_topological(V.sub(0), mt, 2, periodic_relation, bcs, default_scalar_type(1))
  File "/home/bnherrerac/anaconda3/envs/fenicsx-env/lib/python3.12/site-packages/dolfinx_mpc/multipointconstraint.py", line 254, in create_periodic_constraint_topological
    mpc_data = dolfinx_mpc.cpp.mpc.create_periodic_constraint_topological(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: create_periodic_constraint_topological(): incompatible function arguments. The following argument types are supported:
    1. create_periodic_constraint_topological(V: dolfinx::fem::FunctionSpace<float>, meshtags: dolfinx::mesh::MeshTags<int>, dim: int, relation: Callable[[numpy.ndarray[dtype=float32, writable=False, shape=(*, *), ]], numpy.ndarray[dtype=float32, shape=(*, *), ]], bcs: list[dolfinx::fem::DirichletBC<float, float>], scale: float, collapse: bool) -> dolfinx_mpc.cpp.mpc.mpc_data_float
    2. create_periodic_constraint_topological(V: dolfinx::fem::FunctionSpace<float>, meshtags: dolfinx::mesh::MeshTags<int>, dim: int, relation: Callable[[numpy.ndarray[dtype=float32, writable=False, shape=(*, *), ]], numpy.ndarray[dtype=float32, shape=(*, *), ]], bcs: list[dolfinx::fem::DirichletBC<std::complex<float>, float>], scale: complex, collapse: bool) -> dolfinx_mpc.cpp.mpc.mpc_data_complex_float
    3. create_periodic_constraint_topological(V: dolfinx::fem::FunctionSpace<double>, meshtags: dolfinx::mesh::MeshTags<int>, dim: int, relation: Callable[[numpy.ndarray[dtype=float64, writable=False, shape=(*, *), ]], numpy.ndarray[dtype=float64, shape=(*, *), ]], bcs: list[dolfinx::fem::DirichletBC<double, double>], scale: float, collapse: bool) -> dolfinx_mpc.cpp.mpc.mpc_data_double
    4. create_periodic_constraint_topological(V: dolfinx::fem::FunctionSpace<double>, meshtags: dolfinx::mesh::MeshTags<int>, dim: int, relation: Callable[[numpy.ndarray[dtype=float64, writable=False, shape=(*, *), ]], numpy.ndarray[dtype=float64, shape=(*, *), ]], bcs: list[dolfinx::fem::DirichletBC<std::complex<double>, double>], scale: complex, collapse: bool) -> dolfinx_mpc.cpp.mpc.mpc_data_complex_double

Invoked with types: dolfinx.cpp.fem.FunctionSpace_float64, dolfinx.cpp.mesh.MeshTags_int32, int, function, list, float, bool

I installed dolfinx and dolfinx_mpc via conda install, and made sure that both versions are 0.8.0. I am trying to run a similar code, where I impose periodic boundary conditions in opposite faces of an unit cell, but I get stuck when calling create_periodic_constraint_geometrical, as in the demo. If you have any idea how I could get around this, it would be very helpful. Thanks in advance!

bnherrerac avatar Sep 27 '24 17:09 bnherrerac