Running as unit: rb-build-arm64_5-121520.service; invocation ID: 546e63b26f3942c3a093bc6ff040a9e0 ==================================================================================== Wed Sep 17 13:49:22 UTC 2025 - running /srv/jenkins/bin/reproducible_build.sh (for job reproducible_builder_arm64_5) on jenkins, called using "codethink03-arm64 codethink04-arm64" as arguments. Wed Sep 17 13:49:22 UTC 2025 - actually running "reproducible_build.sh" (md5sum cc591790ab2c8e13f5e554202b95c89c) as "/tmp/jenkins-script-uYeLowfr" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Wed Sep 17 13:49:22 UTC 2025 - checking /var/lib/jenkins/offline_nodes if codethink03-arm64.debian.net is marked as down. Wed Sep 17 13:49:22 UTC 2025 - checking via ssh if codethink03-arm64.debian.net is up. removed '/tmp/read-only-fs-test-FTq8D8' Wed Sep 17 13:49:23 UTC 2025 - checking /var/lib/jenkins/offline_nodes if codethink04-arm64.debian.net is marked as down. Wed Sep 17 13:49:23 UTC 2025 - checking via ssh if codethink04-arm64.debian.net is up. removed '/tmp/read-only-fs-test-748QhK' ok, let's check if scifem is building anywhere yet… ok, scifem is not building anywhere… UPDATE 1 ============================================================================= Initialising reproducibly build of scifem in forky on arm64 on jenkins now. 1st build will be done on codethink03-arm64.debian.net. 2nd build will be done on codethink04-arm64.debian.net. ============================================================================= Wed Sep 17 13:49:40 UTC 2025 I: starting to build scifem/forky/arm64 on jenkins on '2025-09-17 13:49' Wed Sep 17 13:49:40 UTC 2025 I: The jenkins build log is/was available at https://jenkins.debian.net/userContent/reproducible/debian/build_service/arm64_5/121520/console.log 1758116980 arm64 forky scifem Wed Sep 17 13:49:40 UTC 2025 I: Downloading source for forky/scifem=0.6.0-2 --2025-09-17 13:49:40-- http://deb.debian.org/debian/pool/main/s/scifem/scifem_0.6.0-2.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2418 (2.4K) [text/prs.lines.tag] Saving to: ‘scifem_0.6.0-2.dsc’ 0K .. 100% 281M=0s 2025-09-17 13:49:40 (281 MB/s) - ‘scifem_0.6.0-2.dsc’ saved [2418/2418] --2025-09-17 13:49:40-- http://deb.debian.org/debian/pool/main/s/scifem/scifem_0.6.0-2.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2418 (2.4K) [text/prs.lines.tag] Saving to: ‘scifem_0.6.0-2.dsc’ 0K .. 100% 281M=0s 2025-09-17 13:49:40 (281 MB/s) - ‘scifem_0.6.0-2.dsc’ saved [2418/2418] Wed Sep 17 13:49:40 UTC 2025 I: scifem_0.6.0-2.dsc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Format: 3.0 (quilt) Source: scifem Binary: python3-scifem Architecture: any Version: 0.6.0-2 Maintainer: Drew Parsons Homepage: https://scientificcomputing.github.io/scifem/README.html Standards-Version: 4.7.2 Vcs-Browser: https://salsa.debian.org/science-team/fenics/scifem Vcs-Git: https://salsa.debian.org/science-team/fenics/scifem.git Testsuite: autopkgtest Testsuite-Triggers: mpi-default-dev, python3-all-dev, python3-h5py-mpi, python3-nibabel, python3-pytest Build-Depends: debhelper-compat (= 13), dh-sequence-python3, pybuild-plugin-pyproject, python3-scikit-build-core, python3-setuptools, python3-all-dev, python3-adios2 [!armel !armhf !i386 !hppa !hurd-amd64 !hurd-i386 !m68k !powerpc !sh4 !x32], python3-basix, python3-dolfinx, python3-h5py, python3-mpi4py, python3-nanobind, python3-nibabel, python3-numpy, python3-packaging, python3-petsc4py, python3-pytest , python3-ufl, libspdlog-dev, mpi-default-dev Package-List: python3-scifem deb libs optional arch=any Checksums-Sha1: 5ff93bce6fd0056b74da7199bc17bcbc78285d5b 1931410 scifem_0.6.0.orig.tar.gz 1ca6c85e3d6bb839423067524c66bbced3bf8ae1 4496 scifem_0.6.0-2.debian.tar.xz Checksums-Sha256: 0a14c6066c346648547aac2c2636a58011ba2adf91415dfa44834b02698a96f2 1931410 scifem_0.6.0.orig.tar.gz 0f80966e24e8146af33200b9239b7d6bddfe837ce88c3ee6071b906c85134d43 4496 scifem_0.6.0-2.debian.tar.xz Files: e8cf7f53ab7bd949f605a2992441e8cf 1931410 scifem_0.6.0.orig.tar.gz f048bc8b5e6703f0c1d7676fa9520aa0 4496 scifem_0.6.0-2.debian.tar.xz -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEI8mpPlhYGekSbQo2Vz7x5L1aAfoFAmg5kUsACgkQVz7x5L1a AfofYRAAkTPmhmtFmB4BVhabHbaHDVeXDgVskk5C7ZPT1E4PHoep2zz46KzYXss+ Ns0NTtnM+DC32/juog/85Dg1eRItjrJrg4ve90LCxKjqnDG0udLFy840vdjn+eHy ZG1OiiJdlUhIw0yxIkXhRXMyQ0K8skvjFnrIEvBFTIrSL7Rg1bpypRXSm4mBwtPY ztzHYPnUqwf4tSgtpKz9WmSqQboNM8rowYl8uGnrn9H9dFqLAG13P3tBXntDTPHP w3vELAqKsZBmJ/7svIF+dkG7MeHkZ7RP59jOzoPuWOI8ATATU6XWa910IAkk/2VO okbiksokyIS/c1Z+BRoQ75XPRL4TdUfNHL4cNvNOlQMIfeheRr4LegRXuw6IrSGy AJRsKbakrDIPUElcrL/orzQ4rWlLmaRE3ssx7wJGMuxDNhiNNB97/nfHkB96aUok ck4O1ITeN6oarzDvTnhg6Nx2ypRoqpUQHpMPzK0X1NRZuUS7S8p36uqNej1zm5MD bPgSaHbPxidS2vPX625EkkROKomqw162BGvi/qA/8Yd7mzghieCmHlXN1OaQZAHH HwCidKOUQyqA3fVCxwiv5FNA6xJaPDo5JBoaTTjfHEZ6THhk76lIr9CtEjS6e9VS gEJn2VMpHYTLP73AT0Cx9sh5dJwh+h4OJChOI/8A5X7Qxrr5J7Y= =k7jX -----END PGP SIGNATURE----- Wed Sep 17 13:49:40 UTC 2025 I: Checking whether the package is not for us Wed Sep 17 13:49:40 UTC 2025 I: Starting 1st build on remote node codethink03-arm64.debian.net. Wed Sep 17 13:49:40 UTC 2025 I: Preparing to do remote build '1' on codethink03-arm64.debian.net. Wed Sep 17 13:49:40 UTC 2025 - checking /var/lib/jenkins/offline_nodes if codethink03-arm64.debian.net is marked as down. Wed Sep 17 13:49:40 UTC 2025 - checking via ssh if codethink03-arm64.debian.net is up. removed '/tmp/read-only-fs-test-yP8qBW' ==================================================================================== Tue Oct 20 20:12:41 UTC 2026 - running /srv/jenkins/bin/reproducible_build.sh (for job /srv/jenkins/bin/reproducible_build.sh) on codethink03-arm64, called using "1 scifem forky /srv/reproducible-results/rbuild-debian/r-b-build.W9kh2TPg 0.6.0-2" as arguments. Tue Oct 20 20:12:41 UTC 2026 - actually running "reproducible_build.sh" (md5sum cc591790ab2c8e13f5e554202b95c89c) as "/tmp/jenkins-script-degmL5hJ" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Tue Oct 20 20:12:41 UTC 2026 I: Downloading source for forky/scifem=0.6.0-2 Reading package lists... NOTICE: 'scifem' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/science-team/fenics/scifem.git Please use: git clone https://salsa.debian.org/science-team/fenics/scifem.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 1938 kB of source archives. Get:1 http://deb.debian.org/debian forky/main scifem 0.6.0-2 (dsc) [2418 B] Get:2 http://deb.debian.org/debian forky/main scifem 0.6.0-2 (tar) [1931 kB] Get:3 http://deb.debian.org/debian forky/main scifem 0.6.0-2 (diff) [4496 B] Fetched 1938 kB in 0s (117 MB/s) Download complete and in download only mode Reading package lists... NOTICE: 'scifem' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/science-team/fenics/scifem.git Please use: git clone https://salsa.debian.org/science-team/fenics/scifem.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 1938 kB of source archives. Get:1 http://deb.debian.org/debian forky/main scifem 0.6.0-2 (dsc) [2418 B] Get:2 http://deb.debian.org/debian forky/main scifem 0.6.0-2 (tar) [1931 kB] Get:3 http://deb.debian.org/debian forky/main scifem 0.6.0-2 (diff) [4496 B] Fetched 1938 kB in 0s (117 MB/s) Download complete and in download only mode ============================================================================= Building scifem in forky on arm64 on codethink03-arm64 now. Date: Tue Oct 20 21:12:41 BST 2026 Date UTC: Tue Oct 20 20:12:41 UTC 2026 ============================================================================= W: /root/.pbuilderrc does not exist I: Logging to b1/build.log I: pbuilder: network access will be disabled during build I: Current time: Tue Oct 20 08:12:41 -12 2026 I: pbuilder-time-stamp: 1792527161 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/forky-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [scifem_0.6.0-2.dsc] I: copying [./scifem_0.6.0.orig.tar.gz] I: copying [./scifem_0.6.0-2.debian.tar.xz] I: Extracting source dpkg-source: warning: cannot verify inline signature for ./scifem_0.6.0-2.dsc: no acceptable signature found dpkg-source: info: extracting scifem in scifem-0.6.0 dpkg-source: info: unpacking scifem_0.6.0.orig.tar.gz dpkg-source: info: unpacking scifem_0.6.0-2.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying no_rpath.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/410781/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='arm64' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' DISTRIBUTION='forky' HOME='/root' HOST_ARCH='arm64' IFS=' ' INVOCATION_ID='f445a74377bb46198cd24244e55f893b' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='410781' PS1='# ' PS2='> ' PS4='+ ' PWD='/' SHELL='/bin/bash' SHLVL='2' SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.W9kh2TPg/pbuilderrc_YTmi --distribution forky --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.W9kh2TPg/b1 --logfile b1/build.log scifem_0.6.0-2.dsc' SUDO_GID='109' SUDO_HOME='/var/lib/jenkins' SUDO_UID='104' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://192.168.101.4:3128' I: uname -a Linux codethink03-arm64 6.12.43+deb13-cloud-arm64 #1 SMP Debian 6.12.43-1 (2025-08-27) aarch64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Aug 10 2025 /bin -> usr/bin I: user script /srv/workspace/pbuilder/410781/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: arm64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), dh-sequence-python3, pybuild-plugin-pyproject, python3-scikit-build-core, python3-setuptools, python3-all-dev, python3-adios2, python3-basix, python3-dolfinx, python3-h5py, python3-mpi4py, python3-nanobind, python3-nibabel, python3-numpy, python3-packaging, python3-petsc4py, python3-pytest, python3-ufl, libspdlog-dev, mpi-default-dev dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 20020 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on dh-sequence-python3; however: Package dh-sequence-python3 is not installed. pbuilder-satisfydepends-dummy depends on pybuild-plugin-pyproject; however: Package pybuild-plugin-pyproject is not installed. pbuilder-satisfydepends-dummy depends on python3-scikit-build-core; however: Package python3-scikit-build-core is not installed. pbuilder-satisfydepends-dummy depends on python3-setuptools; however: Package python3-setuptools is not installed. pbuilder-satisfydepends-dummy depends on python3-all-dev; however: Package python3-all-dev is not installed. pbuilder-satisfydepends-dummy depends on python3-adios2; however: Package python3-adios2 is not installed. pbuilder-satisfydepends-dummy depends on python3-basix; however: Package python3-basix is not installed. pbuilder-satisfydepends-dummy depends on python3-dolfinx; however: Package python3-dolfinx is not installed. pbuilder-satisfydepends-dummy depends on python3-h5py; however: Package python3-h5py is not installed. pbuilder-satisfydepends-dummy depends on python3-mpi4py; however: Package python3-mpi4py is not installed. pbuilder-satisfydepends-dummy depends on python3-nanobind; however: Package python3-nanobind is not installed. pbuilder-satisfydepends-dummy depends on python3-nibabel; however: Package python3-nibabel is not installed. pbuilder-satisfydepends-dummy depends on python3-numpy; however: Package python3-numpy is not installed. pbuilder-satisfydepends-dummy depends on python3-packaging; however: Package python3-packaging is not installed. pbuilder-satisfydepends-dummy depends on python3-petsc4py; however: Package python3-petsc4py is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest; however: Package python3-pytest is not installed. pbuilder-satisfydepends-dummy depends on python3-ufl; however: Package python3-ufl is not installed. pbuilder-satisfydepends-dummy depends on libspdlog-dev; however: Package libspdlog-dev is not installed. pbuilder-satisfydepends-dummy depends on mpi-default-dev; however: Package mpi-default-dev is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} cmake{a} cmake-data{a} comerr-dev{a} cpp-14{a} cpp-14-aarch64-linux-gnu{a} debhelper{a} dh-autoreconf{a} dh-python{a} dh-strip-nondeterminism{a} dwz{a} file{a} fonts-mathjax{a} gcc-14{a} gcc-14-aarch64-linux-gnu{a} gcc-14-base{a} gettext{a} gettext-base{a} gfortran{a} gfortran-14{a} gfortran-14-aarch64-linux-gnu{a} gfortran-15{a} gfortran-15-aarch64-linux-gnu{a} gfortran-aarch64-linux-gnu{a} groff-base{a} ibverbs-providers{a} icu-devtools{a} intltool-debian{a} krb5-multidev{a} libadios2-common-c++11-dev{a} libadios2-common-core-dev{a} libadios2-mpi-auxiliary-2.10{a} libadios2-mpi-auxiliary-dev{a} libadios2-mpi-c++11-2.10{a} libadios2-mpi-c++11-dev{a} libadios2-mpi-c-2.10{a} libadios2-mpi-core-2.10{a} libadios2-mpi-core-dev{a} libadios2-mpi-plugins{a} libadios2-serial-auxiliary-2.10{a} libadios2-serial-c-2.10{a} libadios2-serial-core-2.10{a} libadios2-serial-plugins{a} libaec-dev{a} libaec0{a} libamd-comgr2{a} libamd3{a} libamdhip64-5{a} libarchive-zip-perl{a} libarchive13t64{a} libarpack2-dev{a} libarpack2t64{a} libbasix-dev{a} libbasix0.9{a} libblas-dev{a} libblas3{a} libboost-atomic1.83-dev{a} libboost-atomic1.83.0{a} libboost-chrono-dev{a} libboost-chrono1.83-dev{a} libboost-chrono1.83.0t64{a} libboost-date-time1.83-dev{a} libboost-date-time1.83.0{a} libboost-dev{a} libboost-filesystem-dev{a} libboost-filesystem1.83-dev{a} libboost-filesystem1.83.0{a} libboost-iostreams-dev{a} libboost-iostreams1.83-dev{a} libboost-math-dev{a} libboost-math1.83-dev{a} libboost-math1.83.0{a} libboost-mpi-dev{a} libboost-mpi1.83-dev{a} libboost-mpi1.83.0{a} libboost-program-options-dev{a} libboost-program-options1.83-dev{a} libboost-program-options1.83.0{a} libboost-regex1.83-dev{a} libboost-regex1.83.0{a} libboost-serialization-dev{a} libboost-serialization1.83-dev{a} libboost-serialization1.83.0{a} libboost-system1.83-dev{a} libboost-system1.83.0{a} libboost-thread-dev{a} libboost-thread1.83-dev{a} libboost-thread1.83.0{a} libboost-timer-dev{a} libboost-timer1.83-dev{a} libboost-timer1.83.0{a} libboost1.83-dev{a} libbrotli-dev{a} libbrotli1{a} libbtf2{a} libc6-dbg{a} libcamd3{a} libcbor0.10{a} libccolamd3{a} libcholmod5{a} libcolamd3{a} libcom-err2{a} libcombblas2.0.0t64{a} libcurl4-openssl-dev{a} libcurl4t64{a} libcxsparse4{a} libdebhelper-perl{a} libdolfinx-dev{a} libdolfinx-real-dev{a} libdolfinx-real0.9{a} libdrm-amdgpu1{a} libdrm-common{a} libdrm2{a} libedit2{a} libeigen3-dev{a} libelf1t64{a} libevent-2.1-7t64{a} libevent-core-2.1-7t64{a} libevent-dev{a} libevent-extra-2.1-7t64{a} libevent-openssl-2.1-7t64{a} libevent-pthreads-2.1-7t64{a} libexpat1{a} libexpat1-dev{a} libfabric1{a} libffi8{a} libfftw3-bin{a} libfftw3-dev{a} libfftw3-double3{a} libfftw3-long3{a} libfftw3-mpi-dev{a} libfftw3-mpi3{a} libfftw3-single3{a} libfido2-1{a} libfile-stripnondeterminism-perl{a} libfmt-dev{a} libfmt10{a} libgcc-14-dev{a} libgfortran-14-dev{a} libgfortran-15-dev{a} libgfortran5{a} libgmp-dev{a} libgmpxx4ldbl{a} libgnutls-dane0t64{a} libgnutls-openssl27t64{a} libgnutls28-dev{a} libgnutls30t64{a} libgssapi-krb5-2{a} libgssrpc4t64{a} libhdf5-310{a} libhdf5-hl-310{a} libhdf5-mpi-dev{a} libhdf5-openmpi-310{a} libhdf5-openmpi-cpp-310{a} libhdf5-openmpi-dev{a} libhdf5-openmpi-fortran-310{a} libhdf5-openmpi-hl-310{a} libhdf5-openmpi-hl-cpp-310{a} libhdf5-openmpi-hl-fortran-310{a} libhsa-runtime64-1{a} libhsakmt1{a} libhwloc-dev{a} libhwloc-plugins{a} libhwloc15{a} libhypre-2.32.0{a} libhypre-dev{a} libibmad5{a} libibumad3{a} libibverbs-dev{a} libibverbs1{a} libicu-dev{a} libicu76{a} libidn2-0{a} libidn2-dev{a} libjpeg-dev{a} libjpeg62-turbo{a} libjpeg62-turbo-dev{a} libjs-jquery{a} libjs-jquery-ui{a} libjs-mathjax{a} libjs-sphinxdoc{a} libjson-perl{a} libjsoncpp26{a} libk5crypto3{a} libkadm5clnt-mit12{a} libkadm5srv-mit12{a} libkdb5-10t64{a} libkeyutils1{a} libklu2{a} libkrb5-3{a} libkrb5-dev{a} libkrb5support0{a} liblapack-dev{a} liblapack3{a} libldap-dev{a} libldap2{a} libldl3{a} libllvm17t64{a} libltdl-dev{a} libltdl7{a} liblzf1{a} liblzma-dev{a} libmagic-mgc{a} libmagic1t64{a} libmetis5{a} libmumps-5.7{a} libmumps-dev{a} libmumps-headers-dev{a} libmunge2{a} libnghttp2-14{a} libnghttp2-dev{a} libnghttp3-9{a} libnghttp3-dev{a} libnl-3-200{a} libnl-3-dev{a} libnl-route-3-200{a} libnl-route-3-dev{a} libnorm1t64{a} libnuma-dev{a} libnuma1{a} libopenmpi-dev{a} libopenmpi40{a} libp11-kit-dev{a} libp11-kit0{a} libparpack2-dev{a} libparpack2t64{a} libparu1{a} libpciaccess0{a} libpetsc-real3.22{a} libpetsc-real3.22-dev{a} libpetsc3.22-dev-common{a} libpgm-5.3-0t64{a} libpipeline1{a} libpkgconf3{a} libpmix-dev{a} libpmix2t64{a} libpng16-16t64{a} libproc2-0{a} libpsl-dev{a} libpsl5t64{a} libptscotch-7.0{a} libptscotch-dev{a} libpugixml-dev{a} libpugixml1v5{a} libpython3-all-dev{a} libpython3-dev{a} libpython3-stdlib{a} libpython3.13{a} libpython3.13-dev{a} libpython3.13-minimal{a} libpython3.13-stdlib{a} librbio4{a} librdmacm1t64{a} libreadline8t64{a} librhash1{a} librtmp-dev{a} librtmp1{a} libsasl2-2{a} libsasl2-modules-db{a} libscalapack-mpi-dev{a} libscalapack-openmpi-dev{a} libscalapack-openmpi2.2{a} libscotch-7.0{a} libscotch-dev{a} libslepc-real3.22{a} libslepc-real3.22-dev{a} libsodium23{a} libspdlog-dev{a} libspdlog1.15{a} libspex3{a} libspqr4{a} libssh2-1-dev{a} libssh2-1t64{a} libssl-dev{a} libstdc++-14-dev{a} libsuitesparse-dev{a} libsuitesparse-mongoose3{a} libsuitesparseconfig7{a} libsuperlu-dev{a} libsuperlu-dist-dev{a} libsuperlu-dist8{a} libsuperlu7{a} libsz2{a} libtasn1-6{a} libtasn1-6-dev{a} libtool{a} libuchardet0{a} libucx0{a} libumfpack6{a} libunbound8{a} libunistring5{a} libuv1t64{a} libx11-6{a} libx11-data{a} libx11-dev{a} libxau-dev{a} libxau6{a} libxcb1{a} libxcb1-dev{a} libxdmcp-dev{a} libxdmcp6{a} libxext6{a} libxml2-16{a} libxml2-dev{a} libxnvctrl0{a} libyaml-0-2{a} libyaml-cpp0.8{a} libyaml-dev{a} libz3-4{a} libzmq5{a} libzstd-dev{a} m4{a} man-db{a} media-types{a} mpi-default-bin{a} mpi-default-dev{a} nanobind-dev{a} netbase{a} nettle-dev{a} ocl-icd-libopencl1{a} ocl-icd-opencl-dev{a} opencl-c-headers{a} opencl-clhpp-headers{a} openmpi-bin{a} openmpi-common{a} openssh-client{a} pkg-config{a} pkgconf{a} pkgconf-bin{a} po-debconf{a} procps{a} pybuild-plugin-pyproject{a} python-petsc4py-doc{a} python3{a} python3-adios2{a} python3-adios2-serial{a} python3-all{a} python3-all-dev{a} python3-autocommand{a} python3-basix{a} python3-build{a} python3-cffi{a} python3-cffi-backend{a} python3-decorator{a} python3-dev{a} python3-dolfinx{a} python3-dolfinx-real{a} python3-ffcx{a} python3-h5py{a} python3-h5py-serial{a} python3-inflect{a} python3-iniconfig{a} python3-installer{a} python3-jaraco.context{a} python3-jaraco.functools{a} python3-jaraco.text{a} python3-minimal{a} python3-more-itertools{a} python3-mpi4py{a} python3-nanobind{a} python3-nibabel{a} python3-numpy{a} python3-numpy-dev{a} python3-packaging{a} python3-pathspec{a} python3-petsc4py{a} python3-petsc4py-real{a} python3-petsc4py-real3.22{a} python3-pkg-resources{a} python3-pluggy{a} python3-ply{a} python3-pusimp{a} python3-pycparser{a} python3-pyproject-hooks{a} python3-pyproject-metadata{a} python3-pytest{a} python3-scikit-build-core{a} python3-scipy{a} python3-setuptools{a} python3-slepc4py{a} python3-slepc4py-real{a} python3-slepc4py-real3.22{a} python3-typeguard{a} python3-typing-extensions{a} python3-ufl{a} python3-wheel{a} python3-zipp{a} python3.13{a} python3.13-dev{a} python3.13-minimal{a} readline-common{a} robin-map-dev{a} sensible-utils{a} sphinx-common{a} swig{a} tzdata{a} valgrind{a} valgrind-mpi{a} x11proto-dev{a} xorg-sgml-doctools{a} xtrans-dev{a} zlib1g-dev{a} The following packages are RECOMMENDED but will NOT be installed: ca-certificates curl gdb javascript-common krb5-locales ksh ksh93u+m libarchive-cpio-perl libcoarrays-openmpi-dev libgl-dev libgraphblas-dev libjson-xs-perl libldap-common libmail-sendmail-perl libpetsc-complex-dev libpetsc-real-dev libpetsc3.22-dev-examples libsasl2-modules libtasn1-doc linux-sysctl-defaults lynx mksh psmisc publicsuffix python3-fuse python3-gmsh python3-pil python3-pooch python3-pydicom python3-pygments python3-sphinx python3-yaml wget xauth zsh 0 packages upgraded, 406 newly installed, 0 to remove and 0 not upgraded. Need to get 401 MB of archives. After unpacking 1914 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian forky/main arm64 libexpat1 arm64 2.7.1-2 [93.3 kB] Get: 2 http://deb.debian.org/debian forky/main arm64 libpython3.13-minimal arm64 3.13.7-1 [857 kB] Get: 3 http://deb.debian.org/debian forky/main arm64 python3.13-minimal arm64 3.13.7-1 [2001 kB] Get: 4 http://deb.debian.org/debian forky/main arm64 python3-minimal arm64 3.13.7-1 [27.2 kB] Get: 5 http://deb.debian.org/debian forky/main arm64 media-types all 13.0.0 [29.3 kB] Get: 6 http://deb.debian.org/debian forky/main arm64 netbase all 6.5 [12.4 kB] Get: 7 http://deb.debian.org/debian forky/main arm64 tzdata all 2025b-5 [260 kB] Get: 8 http://deb.debian.org/debian forky/main arm64 libffi8 arm64 3.5.2-2 [21.5 kB] Get: 9 http://deb.debian.org/debian forky/main arm64 readline-common all 8.3-3 [74.8 kB] Get: 10 http://deb.debian.org/debian forky/main arm64 libreadline8t64 arm64 8.3-3 [169 kB] Get: 11 http://deb.debian.org/debian forky/main arm64 libpython3.13-stdlib arm64 3.13.7-1 [1895 kB] Get: 12 http://deb.debian.org/debian forky/main arm64 python3.13 arm64 3.13.7-1 [761 kB] Get: 13 http://deb.debian.org/debian forky/main arm64 libpython3-stdlib arm64 3.13.7-1 [10.2 kB] Get: 14 http://deb.debian.org/debian forky/main arm64 python3 arm64 3.13.7-1 [28.3 kB] Get: 15 http://deb.debian.org/debian forky/main arm64 python3-numpy-dev arm64 1:2.2.4+ds-1.2 [138 kB] Get: 16 http://deb.debian.org/debian forky/main arm64 libblas3 arm64 3.12.1-7 [135 kB] Get: 17 http://deb.debian.org/debian forky/main arm64 libgfortran5 arm64 15.2.0-3 [390 kB] Get: 18 http://deb.debian.org/debian forky/main arm64 liblapack3 arm64 3.12.1-7 [1846 kB] Get: 19 http://deb.debian.org/debian forky/main arm64 python3-numpy arm64 1:2.2.4+ds-1.2 [3620 kB] Get: 20 http://deb.debian.org/debian forky/main arm64 libproc2-0 arm64 2:4.0.4-9 [62.8 kB] Get: 21 http://deb.debian.org/debian forky/main arm64 procps arm64 2:4.0.4-9 [871 kB] Get: 22 http://deb.debian.org/debian forky/main arm64 sensible-utils all 0.0.26 [27.0 kB] Get: 23 http://deb.debian.org/debian forky/main arm64 libmagic-mgc arm64 1:5.46-5 [338 kB] Get: 24 http://deb.debian.org/debian forky/main arm64 libmagic1t64 arm64 1:5.46-5 [103 kB] Get: 25 http://deb.debian.org/debian forky/main arm64 file arm64 1:5.46-5 [43.7 kB] Get: 26 http://deb.debian.org/debian forky/main arm64 gettext-base arm64 0.23.1-2+b1 [241 kB] Get: 27 http://deb.debian.org/debian forky/main arm64 libuchardet0 arm64 0.0.8-2 [69.0 kB] Get: 28 http://deb.debian.org/debian forky/main arm64 groff-base arm64 1.23.0-9 [1130 kB] Get: 29 http://deb.debian.org/debian forky/main arm64 bsdextrautils arm64 2.41.1-3 [98.1 kB] Get: 30 http://deb.debian.org/debian forky/main arm64 libpipeline1 arm64 1.5.8-1 [40.2 kB] Get: 31 http://deb.debian.org/debian forky/main arm64 man-db arm64 2.13.1-1 [1453 kB] Get: 32 http://deb.debian.org/debian forky/main arm64 libedit2 arm64 3.1-20250104-1 [89.3 kB] Get: 33 http://deb.debian.org/debian forky/main arm64 libcbor0.10 arm64 0.10.2-2 [27.4 kB] Get: 34 http://deb.debian.org/debian forky/main arm64 libfido2-1 arm64 1.16.0-2 [74.4 kB] Get: 35 http://deb.debian.org/debian forky/main arm64 libkrb5support0 arm64 1.21.3-5 [32.4 kB] Get: 36 http://deb.debian.org/debian forky/main arm64 libcom-err2 arm64 1.47.2-3+b3 [24.9 kB] Get: 37 http://deb.debian.org/debian forky/main arm64 libk5crypto3 arm64 1.21.3-5 [81.2 kB] Get: 38 http://deb.debian.org/debian forky/main arm64 libkeyutils1 arm64 1.6.3-6 [9716 B] Get: 39 http://deb.debian.org/debian forky/main arm64 libkrb5-3 arm64 1.21.3-5 [308 kB] Get: 40 http://deb.debian.org/debian forky/main arm64 libgssapi-krb5-2 arm64 1.21.3-5 [127 kB] Get: 41 http://deb.debian.org/debian forky/main arm64 openssh-client arm64 1:10.0p1-8 [925 kB] Get: 42 http://deb.debian.org/debian forky/main arm64 m4 arm64 1.4.20-1 [316 kB] Get: 43 http://deb.debian.org/debian forky/main arm64 autoconf all 2.72-3.1 [494 kB] Get: 44 http://deb.debian.org/debian forky/main arm64 autotools-dev all 20240727.1 [60.2 kB] Get: 45 http://deb.debian.org/debian forky/main arm64 automake all 1:1.17-4 [862 kB] Get: 46 http://deb.debian.org/debian forky/main arm64 autopoint all 0.23.1-2 [770 kB] Get: 47 http://deb.debian.org/debian forky/main arm64 cmake-data all 4.1.1+really3.31.6-1 [2268 kB] Get: 48 http://deb.debian.org/debian forky/main arm64 libxml2-16 arm64 2.14.5+dfsg-0.2 [582 kB] Get: 49 http://deb.debian.org/debian forky/main arm64 libarchive13t64 arm64 3.7.4-4+b1 [323 kB] Get: 50 http://deb.debian.org/debian forky/main arm64 libbrotli1 arm64 1.1.0-2+b7 [308 kB] Get: 51 http://deb.debian.org/debian forky/main arm64 libunistring5 arm64 1.3-2 [453 kB] Get: 52 http://deb.debian.org/debian forky/main arm64 libidn2-0 arm64 2.3.8-4 [108 kB] Get: 53 http://deb.debian.org/debian forky/main arm64 libsasl2-modules-db arm64 2.1.28+dfsg1-9 [20.1 kB] Get: 54 http://deb.debian.org/debian forky/main arm64 libsasl2-2 arm64 2.1.28+dfsg1-9 [55.6 kB] Get: 55 http://deb.debian.org/debian forky/main arm64 libldap2 arm64 2.6.10+dfsg-1 [179 kB] Get: 56 http://deb.debian.org/debian forky/main arm64 libnghttp2-14 arm64 1.64.0-1.1+b1 [71.7 kB] Get: 57 http://deb.debian.org/debian forky/main arm64 libnghttp3-9 arm64 1.11.0-1 [66.7 kB] Get: 58 http://deb.debian.org/debian forky/main arm64 libpsl5t64 arm64 0.21.2-1.1+b1 [57.1 kB] Get: 59 http://deb.debian.org/debian forky/main arm64 libp11-kit0 arm64 0.25.5-3 [409 kB] Get: 60 http://deb.debian.org/debian forky/main arm64 libtasn1-6 arm64 4.20.0-2 [47.3 kB] Get: 61 http://deb.debian.org/debian forky/main arm64 libgnutls30t64 arm64 3.8.9-3 [1375 kB] Get: 62 http://deb.debian.org/debian forky/main arm64 librtmp1 arm64 2.4+20151223.gitfa8646d.1-3 [56.3 kB] Get: 63 http://deb.debian.org/debian forky/main arm64 libssh2-1t64 arm64 1.11.1-1 [235 kB] Get: 64 http://deb.debian.org/debian forky/main arm64 libcurl4t64 arm64 8.15.0-1 [360 kB] Get: 65 http://deb.debian.org/debian forky/main arm64 libjsoncpp26 arm64 1.9.6-4 [73.2 kB] Get: 66 http://deb.debian.org/debian forky/main arm64 librhash1 arm64 1.4.6-1 [131 kB] Get: 67 http://deb.debian.org/debian forky/main arm64 libuv1t64 arm64 1.51.0-2 [150 kB] Get: 68 http://deb.debian.org/debian forky/main arm64 cmake arm64 4.1.1+really3.31.6-1 [9905 kB] Get: 69 http://deb.debian.org/debian forky/main arm64 comerr-dev arm64 2.1-1.47.2-3+b3 [56.9 kB] Get: 70 http://deb.debian.org/debian forky/main arm64 gcc-14-base arm64 14.3.0-8 [52.1 kB] Get: 71 http://deb.debian.org/debian forky/main arm64 cpp-14-aarch64-linux-gnu arm64 14.3.0-8 [9173 kB] Get: 72 http://deb.debian.org/debian forky/main arm64 cpp-14 arm64 14.3.0-8 [1276 B] Get: 73 http://deb.debian.org/debian forky/main arm64 libdebhelper-perl all 13.26 [91.8 kB] Get: 74 http://deb.debian.org/debian forky/main arm64 libgcc-14-dev arm64 14.3.0-8 [2364 kB] Get: 75 http://deb.debian.org/debian forky/main arm64 gcc-14-aarch64-linux-gnu arm64 14.3.0-8 [17.7 MB] Get: 76 http://deb.debian.org/debian forky/main arm64 gcc-14 arm64 14.3.0-8 [544 kB] Get: 77 http://deb.debian.org/debian forky/main arm64 libtool all 2.5.4-5 [540 kB] Get: 78 http://deb.debian.org/debian forky/main arm64 dh-autoreconf all 20 [17.1 kB] Get: 79 http://deb.debian.org/debian forky/main arm64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 80 http://deb.debian.org/debian forky/main arm64 libfile-stripnondeterminism-perl all 1.15.0-1 [19.9 kB] Get: 81 http://deb.debian.org/debian forky/main arm64 dh-strip-nondeterminism all 1.15.0-1 [8812 B] Get: 82 http://deb.debian.org/debian forky/main arm64 libelf1t64 arm64 0.193-3 [189 kB] Get: 83 http://deb.debian.org/debian forky/main arm64 dwz arm64 0.16-2 [100 kB] Get: 84 http://deb.debian.org/debian forky/main arm64 gettext arm64 0.23.1-2+b1 [1612 kB] Get: 85 http://deb.debian.org/debian forky/main arm64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 86 http://deb.debian.org/debian forky/main arm64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 87 http://deb.debian.org/debian forky/main arm64 debhelper all 13.26 [939 kB] Get: 88 http://deb.debian.org/debian forky/main arm64 dh-python all 6.20250414 [116 kB] Get: 89 http://deb.debian.org/debian forky/main arm64 fonts-mathjax all 2.7.9+dfsg-1 [2210 kB] Get: 90 http://deb.debian.org/debian forky/main arm64 libgfortran-15-dev arm64 15.2.0-3 [431 kB] Get: 91 http://deb.debian.org/debian forky/main arm64 gfortran-15-aarch64-linux-gnu arm64 15.2.0-3 [77.2 MB] Get: 92 http://deb.debian.org/debian forky/main arm64 gfortran-15 arm64 15.2.0-3 [17.8 kB] Get: 93 http://deb.debian.org/debian forky/main arm64 gfortran-aarch64-linux-gnu arm64 4:15.2.0-1 [1280 B] Get: 94 http://deb.debian.org/debian forky/main arm64 gfortran arm64 4:15.2.0-1 [1428 B] Get: 95 http://deb.debian.org/debian forky/main arm64 libgfortran-14-dev arm64 14.3.0-8 [417 kB] Get: 96 http://deb.debian.org/debian forky/main arm64 gfortran-14-aarch64-linux-gnu arm64 14.3.0-8 [9799 kB] Get: 97 http://deb.debian.org/debian forky/main arm64 gfortran-14 arm64 14.3.0-8 [15.3 kB] Get: 98 http://deb.debian.org/debian forky/main arm64 libnl-3-200 arm64 3.11.0-2 [57.9 kB] Get: 99 http://deb.debian.org/debian forky/main arm64 libnl-route-3-200 arm64 3.11.0-2 [176 kB] Get: 100 http://deb.debian.org/debian forky/main arm64 libibverbs1 arm64 56.1-1 [58.9 kB] Get: 101 http://deb.debian.org/debian forky/main arm64 ibverbs-providers arm64 56.1-1 [333 kB] Get: 102 http://deb.debian.org/debian forky/main arm64 libicu76 arm64 76.1-4 [9524 kB] Get: 103 http://deb.debian.org/debian forky/main arm64 icu-devtools arm64 76.1-4 [200 kB] Get: 104 http://deb.debian.org/debian forky/main arm64 libgssrpc4t64 arm64 1.21.3-5 [57.2 kB] Get: 105 http://deb.debian.org/debian forky/main arm64 libkadm5clnt-mit12 arm64 1.21.3-5 [41.1 kB] Get: 106 http://deb.debian.org/debian forky/main arm64 libkdb5-10t64 arm64 1.21.3-5 [41.3 kB] Get: 107 http://deb.debian.org/debian forky/main arm64 libkadm5srv-mit12 arm64 1.21.3-5 [53.0 kB] Get: 108 http://deb.debian.org/debian forky/main arm64 krb5-multidev arm64 1.21.3-5 [126 kB] Get: 109 http://deb.debian.org/debian forky/main arm64 libadios2-common-c++11-dev all 2.10.2+dfsg1-3 [25.9 kB] Get: 110 http://deb.debian.org/debian forky/main arm64 libadios2-common-core-dev arm64 2.10.2+dfsg1-3 [123 kB] Get: 111 http://deb.debian.org/debian forky/main arm64 librdmacm1t64 arm64 56.1-1 [67.2 kB] Get: 112 http://deb.debian.org/debian forky/main arm64 libfabric1 arm64 2.1.0-1.1 [548 kB] Get: 113 http://deb.debian.org/debian forky/main arm64 libevent-core-2.1-7t64 arm64 2.1.12-stable-10+b1 [126 kB] Get: 114 http://deb.debian.org/debian forky/main arm64 libevent-pthreads-2.1-7t64 arm64 2.1.12-stable-10+b1 [54.4 kB] Get: 115 http://deb.debian.org/debian forky/main arm64 libhwloc15 arm64 2.12.2-1 [142 kB] Get: 116 http://deb.debian.org/debian forky/main arm64 libmunge2 arm64 0.5.16-1 [19.2 kB] Get: 117 http://deb.debian.org/debian forky/main arm64 libpciaccess0 arm64 0.17-3+b3 [51.2 kB] Get: 118 http://deb.debian.org/debian forky/main arm64 libxau6 arm64 1:1.0.11-1 [20.6 kB] Get: 119 http://deb.debian.org/debian forky/main arm64 libxdmcp6 arm64 1:1.1.5-1 [27.8 kB] Get: 120 http://deb.debian.org/debian forky/main arm64 libxcb1 arm64 1.17.0-2+b1 [143 kB] Get: 121 http://deb.debian.org/debian forky/main arm64 libx11-data all 2:1.8.12-1 [343 kB] Get: 122 http://deb.debian.org/debian forky/main arm64 libx11-6 arm64 2:1.8.12-1 [795 kB] Get: 123 http://deb.debian.org/debian forky/main arm64 libxext6 arm64 2:1.3.4-1+b3 [49.2 kB] Get: 124 http://deb.debian.org/debian forky/main arm64 libxnvctrl0 arm64 535.171.04-1+b2 [14.0 kB] Get: 125 http://deb.debian.org/debian forky/main arm64 ocl-icd-libopencl1 arm64 2.3.3-1 [42.7 kB] Get: 126 http://deb.debian.org/debian forky/main arm64 libhwloc-plugins arm64 2.12.2-1 [18.1 kB] Get: 127 http://deb.debian.org/debian forky/main arm64 libpmix2t64 arm64 5.0.7-1 [585 kB] Get: 128 http://deb.debian.org/debian forky/main arm64 libz3-4 arm64 4.13.3-1 [7507 kB] Get: 129 http://deb.debian.org/debian forky/main arm64 libllvm17t64 arm64 1:17.0.6-22+b3 [21.3 MB] Get: 130 http://deb.debian.org/debian forky/main arm64 libamd-comgr2 arm64 6.0+git20231212.4510c28+dfsg-3+b2 [12.1 MB] Get: 131 http://deb.debian.org/debian forky/main arm64 libdrm-common all 2.4.125-2 [8576 B] Get: 132 http://deb.debian.org/debian forky/main arm64 libdrm2 arm64 2.4.125-2 [38.4 kB] Get: 133 http://deb.debian.org/debian forky/main arm64 libdrm-amdgpu1 arm64 2.4.125-2 [22.3 kB] Get: 134 http://deb.debian.org/debian forky/main arm64 libnuma1 arm64 2.0.19-1 [21.6 kB] Get: 135 http://deb.debian.org/debian forky/main arm64 libhsakmt1 arm64 6.2.4+ds-1 [58.3 kB] Get: 136 http://deb.debian.org/debian forky/main arm64 libhsa-runtime64-1 arm64 6.1.2-3 [302 kB] Get: 137 http://deb.debian.org/debian forky/main arm64 libamdhip64-5 arm64 5.7.1-6 [8824 kB] Get: 138 http://deb.debian.org/debian forky/main arm64 libibumad3 arm64 56.1-1 [28.6 kB] Get: 139 http://deb.debian.org/debian forky/main arm64 libibmad5 arm64 56.1-1 [42.4 kB] Get: 140 http://deb.debian.org/debian forky/main arm64 libucx0 arm64 1.18.1+ds-2+b1 [1016 kB] Get: 141 http://deb.debian.org/debian forky/main arm64 libopenmpi40 arm64 5.0.7-1 [2087 kB] Get: 142 http://deb.debian.org/debian forky/main arm64 libaec0 arm64 1.1.4-2 [22.6 kB] Get: 143 http://deb.debian.org/debian forky/main arm64 libsz2 arm64 1.1.4-2 [8072 B] Get: 144 http://deb.debian.org/debian forky/main arm64 libhdf5-openmpi-310 arm64 1.14.5+repack-3 [1207 kB] Get: 145 http://deb.debian.org/debian forky/main arm64 libpng16-16t64 arm64 1.6.50-1 [275 kB] Get: 146 http://deb.debian.org/debian forky/main arm64 libpugixml1v5 arm64 1.14-2 [80.1 kB] Get: 147 http://deb.debian.org/debian forky/main arm64 libyaml-cpp0.8 arm64 0.8.0+dfsg-7 [119 kB] Get: 148 http://deb.debian.org/debian forky/main arm64 libnorm1t64 arm64 1.5.9+dfsg-3.1+b2 [205 kB] Get: 149 http://deb.debian.org/debian forky/main arm64 libpgm-5.3-0t64 arm64 5.3.128~dfsg-2.1+b1 [152 kB] Get: 150 http://deb.debian.org/debian forky/main arm64 libsodium23 arm64 1.0.18-1+b2 [121 kB] Get: 151 http://deb.debian.org/debian forky/main arm64 libzmq5 arm64 4.3.5-1+b3 [253 kB] Get: 152 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-plugins arm64 2.10.2+dfsg1-3 [15.2 kB] Get: 153 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-core-2.10 arm64 2.10.2+dfsg1-3 [1521 kB] Get: 154 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-c-2.10 arm64 2.10.2+dfsg1-3 [59.6 kB] Get: 155 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-auxiliary-2.10 arm64 2.10.2+dfsg1-3 [373 kB] Get: 156 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-auxiliary-dev arm64 2.10.2+dfsg1-3 [23.4 kB] Get: 157 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-c++11-2.10 arm64 2.10.2+dfsg1-3 [185 kB] Get: 158 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-core-dev arm64 2.10.2+dfsg1-3 [80.0 kB] Get: 159 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-c++11-dev arm64 2.10.2+dfsg1-3 [11.4 kB] Get: 160 http://deb.debian.org/debian forky/main arm64 libhdf5-310 arm64 1.14.5+repack-3 [1155 kB] Get: 161 http://deb.debian.org/debian forky/main arm64 libadios2-serial-plugins arm64 2.10.2+dfsg1-3 [15.2 kB] Get: 162 http://deb.debian.org/debian forky/main arm64 libadios2-serial-core-2.10 arm64 2.10.2+dfsg1-3 [1440 kB] Get: 163 http://deb.debian.org/debian forky/main arm64 libadios2-serial-c-2.10 arm64 2.10.2+dfsg1-3 [57.4 kB] Get: 164 http://deb.debian.org/debian forky/main arm64 libadios2-serial-auxiliary-2.10 arm64 2.10.2+dfsg1-3 [373 kB] Get: 165 http://deb.debian.org/debian forky/main arm64 libaec-dev arm64 1.1.4-2 [20.3 kB] Get: 166 http://deb.debian.org/debian forky/main arm64 libsuitesparseconfig7 arm64 1:7.11.0+dfsg-2 [33.3 kB] Get: 167 http://deb.debian.org/debian forky/main arm64 libamd3 arm64 1:7.11.0+dfsg-2 [48.1 kB] Get: 168 http://deb.debian.org/debian forky/main arm64 libarpack2t64 arm64 3.9.1-6 [84.2 kB] Get: 169 http://deb.debian.org/debian forky/main arm64 libblas-dev arm64 3.12.1-7 [145 kB] Get: 170 http://deb.debian.org/debian forky/main arm64 liblapack-dev arm64 3.12.1-7 [3829 kB] Get: 171 http://deb.debian.org/debian forky/main arm64 libarpack2-dev arm64 3.9.1-6 [102 kB] Get: 172 http://deb.debian.org/debian forky/main arm64 libbasix0.9 arm64 0.9.0-2+b2 [356 kB] Get: 173 http://deb.debian.org/debian forky/main arm64 libpkgconf3 arm64 1.8.1-4 [35.3 kB] Get: 174 http://deb.debian.org/debian forky/main arm64 pkgconf-bin arm64 1.8.1-4 [29.6 kB] Get: 175 http://deb.debian.org/debian forky/main arm64 pkgconf arm64 1.8.1-4 [26.1 kB] Get: 176 http://deb.debian.org/debian forky/main arm64 pkg-config arm64 1.8.1-4 [14.0 kB] Get: 177 http://deb.debian.org/debian forky/main arm64 libeigen3-dev all 3.4.0-5 [1034 kB] Get: 178 http://deb.debian.org/debian forky/main arm64 libbasix-dev arm64 0.9.0-2+b2 [67.1 kB] Get: 179 http://deb.debian.org/debian forky/main arm64 libstdc++-14-dev arm64 14.3.0-8 [2567 kB] Get: 180 http://deb.debian.org/debian forky/main arm64 libboost1.83-dev arm64 1.83.0-4.2 [10.6 MB] Get: 181 http://deb.debian.org/debian forky/main arm64 libboost-atomic1.83.0 arm64 1.83.0-4.2 [234 kB] Get: 182 http://deb.debian.org/debian forky/main arm64 libboost-atomic1.83-dev arm64 1.83.0-4.2 [235 kB] Get: 183 http://deb.debian.org/debian forky/main arm64 libboost-chrono1.83.0t64 arm64 1.83.0-4.2 [239 kB] Get: 184 http://deb.debian.org/debian forky/main arm64 libboost-chrono1.83-dev arm64 1.83.0-4.2 [245 kB] Get: 185 http://deb.debian.org/debian forky/main arm64 libboost-chrono-dev arm64 1.83.0.2+b2 [4212 B] Get: 186 http://deb.debian.org/debian forky/main arm64 libboost-date-time1.83.0 arm64 1.83.0-4.2 [231 kB] Get: 187 http://deb.debian.org/debian forky/main arm64 libboost-serialization1.83.0 arm64 1.83.0-4.2 [325 kB] Get: 188 http://deb.debian.org/debian forky/main arm64 libboost-serialization1.83-dev arm64 1.83.0-4.2 [373 kB] Get: 189 http://deb.debian.org/debian forky/main arm64 libboost-date-time1.83-dev arm64 1.83.0-4.2 [239 kB] Get: 190 http://deb.debian.org/debian forky/main arm64 libboost-dev arm64 1.83.0.2+b2 [3828 B] Get: 191 http://deb.debian.org/debian forky/main arm64 libboost-filesystem1.83.0 arm64 1.83.0-4.2 [273 kB] Get: 192 http://deb.debian.org/debian forky/main arm64 libboost-system1.83.0 arm64 1.83.0-4.2 [231 kB] Get: 193 http://deb.debian.org/debian forky/main arm64 libboost-system1.83-dev arm64 1.83.0-4.2 [232 kB] Get: 194 http://deb.debian.org/debian forky/main arm64 libboost-filesystem1.83-dev arm64 1.83.0-4.2 [292 kB] Get: 195 http://deb.debian.org/debian forky/main arm64 libboost-filesystem-dev arm64 1.83.0.2+b2 [3616 B] Get: 196 http://deb.debian.org/debian forky/main arm64 libboost-regex1.83.0 arm64 1.83.0-4.2 [314 kB] Get: 197 http://deb.debian.org/debian forky/main arm64 libicu-dev arm64 76.1-4 [10.6 MB] Get: 198 http://deb.debian.org/debian forky/main arm64 libboost-regex1.83-dev arm64 1.83.0-4.2 [335 kB] Get: 199 http://deb.debian.org/debian forky/main arm64 libboost-iostreams1.83-dev arm64 1.83.0-4.2 [261 kB] Get: 200 http://deb.debian.org/debian forky/main arm64 libboost-iostreams-dev arm64 1.83.0.2+b2 [3568 B] Get: 201 http://deb.debian.org/debian forky/main arm64 libboost-math1.83.0 arm64 1.83.0-4.2 [471 kB] Get: 202 http://deb.debian.org/debian forky/main arm64 libboost-math1.83-dev arm64 1.83.0-4.2 [536 kB] Get: 203 http://deb.debian.org/debian forky/main arm64 libboost-math-dev arm64 1.83.0.2+b2 [3784 B] Get: 204 http://deb.debian.org/debian forky/main arm64 libboost-mpi1.83.0 arm64 1.83.0-4.2 [268 kB] Get: 205 http://deb.debian.org/debian forky/main arm64 openmpi-common all 5.0.7-1 [97.2 kB] Get: 206 http://deb.debian.org/debian forky/main arm64 libnl-3-dev arm64 3.11.0-2 [104 kB] Get: 207 http://deb.debian.org/debian forky/main arm64 libnl-route-3-dev arm64 3.11.0-2 [210 kB] Get: 208 http://deb.debian.org/debian forky/main arm64 libibverbs-dev arm64 56.1-1 [642 kB] Get: 209 http://deb.debian.org/debian forky/main arm64 libnuma-dev arm64 2.0.19-1 [37.6 kB] Get: 210 http://deb.debian.org/debian forky/main arm64 libltdl7 arm64 2.5.4-5 [415 kB] Get: 211 http://deb.debian.org/debian forky/main arm64 libltdl-dev arm64 2.5.4-5 [168 kB] Get: 212 http://deb.debian.org/debian forky/main arm64 libhwloc-dev arm64 2.12.2-1 [239 kB] Get: 213 http://deb.debian.org/debian forky/main arm64 libevent-2.1-7t64 arm64 2.1.12-stable-10+b1 [170 kB] Get: 214 http://deb.debian.org/debian forky/main arm64 libevent-extra-2.1-7t64 arm64 2.1.12-stable-10+b1 [102 kB] Get: 215 http://deb.debian.org/debian forky/main arm64 libevent-openssl-2.1-7t64 arm64 2.1.12-stable-10+b1 [60.4 kB] Get: 216 http://deb.debian.org/debian forky/main arm64 libevent-dev arm64 2.1.12-stable-10+b1 [304 kB] Get: 217 http://deb.debian.org/debian forky/main arm64 zlib1g-dev arm64 1:1.3.dfsg+really1.3.1-1+b1 [917 kB] Get: 218 http://deb.debian.org/debian forky/main arm64 libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [326 kB] Get: 219 http://deb.debian.org/debian forky/main arm64 libpmix-dev arm64 5.0.7-1 [3947 kB] Get: 220 http://deb.debian.org/debian forky/main arm64 libjs-jquery-ui all 1.13.2+dfsg-1 [250 kB] Get: 221 http://deb.debian.org/debian forky/main arm64 openmpi-bin arm64 5.0.7-1 [180 kB] Get: 222 http://deb.debian.org/debian forky/main arm64 libopenmpi-dev arm64 5.0.7-1 [1089 kB] Get: 223 http://deb.debian.org/debian forky/main arm64 mpi-default-dev arm64 1.18 [3372 B] Get: 224 http://deb.debian.org/debian forky/main arm64 libboost-mpi1.83-dev arm64 1.83.0-4.2 [291 kB] Get: 225 http://deb.debian.org/debian forky/main arm64 libboost-mpi-dev arm64 1.83.0.2+b2 [3668 B] Get: 226 http://deb.debian.org/debian forky/main arm64 libboost-program-options1.83.0 arm64 1.83.0-4.2 [331 kB] Get: 227 http://deb.debian.org/debian forky/main arm64 libboost-program-options1.83-dev arm64 1.83.0-4.2 [368 kB] Get: 228 http://deb.debian.org/debian forky/main arm64 libboost-program-options-dev arm64 1.83.0.2+b2 [3600 B] Get: 229 http://deb.debian.org/debian forky/main arm64 libboost-serialization-dev arm64 1.83.0.2+b2 [3816 B] Get: 230 http://deb.debian.org/debian forky/main arm64 libboost-thread1.83.0 arm64 1.83.0-4.2 [266 kB] Get: 231 http://deb.debian.org/debian forky/main arm64 libboost-thread1.83-dev arm64 1.83.0-4.2 [276 kB] Get: 232 http://deb.debian.org/debian forky/main arm64 libboost-thread-dev arm64 1.83.0.2+b2 [3616 B] Get: 233 http://deb.debian.org/debian forky/main arm64 libboost-timer1.83.0 arm64 1.83.0-4.2 [235 kB] Get: 234 http://deb.debian.org/debian forky/main arm64 libboost-timer1.83-dev arm64 1.83.0-4.2 [237 kB] Get: 235 http://deb.debian.org/debian forky/main arm64 libboost-timer-dev arm64 1.83.0.2+b2 [3712 B] Get: 236 http://deb.debian.org/debian forky/main arm64 libbrotli-dev arm64 1.1.0-2+b7 [308 kB] Get: 237 http://deb.debian.org/debian forky/main arm64 libbtf2 arm64 1:7.11.0+dfsg-2 [33.9 kB] Get: 238 http://deb.debian.org/debian forky/main arm64 libc6-dbg arm64 2.41-12 [6679 kB] Get: 239 http://deb.debian.org/debian forky/main arm64 libcamd3 arm64 1:7.11.0+dfsg-2 [44.7 kB] Get: 240 http://deb.debian.org/debian forky/main arm64 libccolamd3 arm64 1:7.11.0+dfsg-2 [47.3 kB] Get: 241 http://deb.debian.org/debian forky/main arm64 libcolamd3 arm64 1:7.11.0+dfsg-2 [41.5 kB] Get: 242 http://deb.debian.org/debian forky/main arm64 libcholmod5 arm64 1:7.11.0+dfsg-2 [563 kB] Get: 243 http://deb.debian.org/debian forky/main arm64 libcombblas2.0.0t64 arm64 2.0.0-6+b2 [258 kB] Get: 244 http://deb.debian.org/debian forky/main arm64 libidn2-dev arm64 2.3.8-4 [102 kB] Get: 245 http://deb.debian.org/debian forky/main arm64 libkrb5-dev arm64 1.21.3-5 [16.1 kB] Get: 246 http://deb.debian.org/debian forky/main arm64 libldap-dev arm64 2.6.10+dfsg-1 [305 kB] Get: 247 http://deb.debian.org/debian forky/main arm64 libnghttp2-dev arm64 1.64.0-1.1+b1 [112 kB] Get: 248 http://deb.debian.org/debian forky/main arm64 libnghttp3-dev arm64 1.11.0-1 [94.6 kB] Get: 249 http://deb.debian.org/debian forky/main arm64 libpsl-dev arm64 0.21.2-1.1+b1 [77.9 kB] Get: 250 http://deb.debian.org/debian forky/main arm64 libgmpxx4ldbl arm64 2:6.3.0+dfsg-5 [329 kB] Get: 251 http://deb.debian.org/debian forky/main arm64 libgmp-dev arm64 2:6.3.0+dfsg-5 [621 kB] Get: 252 http://deb.debian.org/debian forky/main arm64 libunbound8 arm64 1.23.1-1 [561 kB] Get: 253 http://deb.debian.org/debian forky/main arm64 libgnutls-dane0t64 arm64 3.8.9-3 [453 kB] Get: 254 http://deb.debian.org/debian forky/main arm64 libgnutls-openssl27t64 arm64 3.8.9-3 [453 kB] Get: 255 http://deb.debian.org/debian forky/main arm64 libp11-kit-dev arm64 0.25.5-3 [208 kB] Get: 256 http://deb.debian.org/debian forky/main arm64 libtasn1-6-dev arm64 4.20.0-2 [96.7 kB] Get: 257 http://deb.debian.org/debian forky/main arm64 nettle-dev arm64 3.10.1-1 [1325 kB] Get: 258 http://deb.debian.org/debian forky/main arm64 libgnutls28-dev arm64 3.8.9-3 [1416 kB] Get: 259 http://deb.debian.org/debian forky/main arm64 librtmp-dev arm64 2.4+20151223.gitfa8646d.1-3 [173 kB] Get: 260 http://deb.debian.org/debian forky/main arm64 libssl-dev arm64 3.5.2-1 [3386 kB] Get: 261 http://deb.debian.org/debian forky/main arm64 libssh2-1-dev arm64 1.11.1-1 [388 kB] Get: 262 http://deb.debian.org/debian forky/main arm64 libzstd-dev arm64 1.5.7+dfsg-1.1 [335 kB] Get: 263 http://deb.debian.org/debian forky/main arm64 libcurl4-openssl-dev arm64 8.15.0-1 [497 kB] Get: 264 http://deb.debian.org/debian forky/main arm64 libcxsparse4 arm64 1:7.11.0+dfsg-2 [89.4 kB] Get: 265 http://deb.debian.org/debian forky/main arm64 libfmt10 arm64 10.1.1+ds1-4 [121 kB] Get: 266 http://deb.debian.org/debian forky/main arm64 libfftw3-double3 arm64 3.3.10-2+b1 [337 kB] Get: 267 http://deb.debian.org/debian forky/main arm64 libfftw3-long3 arm64 3.3.10-2+b1 [546 kB] Get: 268 http://deb.debian.org/debian forky/main arm64 libfftw3-single3 arm64 3.3.10-2+b1 [517 kB] Get: 269 http://deb.debian.org/debian forky/main arm64 libfftw3-mpi3 arm64 3.3.10-2+b1 [54.3 kB] Get: 270 http://deb.debian.org/debian forky/main arm64 libmetis5 arm64 5.1.0.dfsg-7+b2 [161 kB] Get: 271 http://deb.debian.org/debian forky/main arm64 libptscotch-7.0 arm64 7.0.7-1 [571 kB] Get: 272 http://deb.debian.org/debian forky/main arm64 libsuperlu-dist8 arm64 8.2.1+dfsg1-5+b1 [526 kB] Get: 273 http://deb.debian.org/debian forky/main arm64 libhypre-2.32.0 arm64 2.32.0-4 [1507 kB] Get: 274 http://deb.debian.org/debian forky/main arm64 libklu2 arm64 1:7.11.0+dfsg-2 [92.5 kB] Get: 275 http://deb.debian.org/debian forky/main arm64 mpi-default-bin arm64 1.18 [2576 B] Get: 276 http://deb.debian.org/debian forky/main arm64 libscalapack-openmpi2.2 arm64 2.2.2-1 [1246 kB] Get: 277 http://deb.debian.org/debian forky/main arm64 libmumps-5.7 arm64 5.7.3-3+b1 [1716 kB] Get: 278 http://deb.debian.org/debian forky/main arm64 libspqr4 arm64 1:7.11.0+dfsg-2 [139 kB] Get: 279 http://deb.debian.org/debian forky/main arm64 libsuperlu7 arm64 7.0.1+dfsg1-2 [145 kB] Get: 280 http://deb.debian.org/debian forky/main arm64 libumfpack6 arm64 1:7.11.0+dfsg-2 [240 kB] Get: 281 http://deb.debian.org/debian forky/main arm64 libyaml-0-2 arm64 0.2.5-2 [49.2 kB] Get: 282 http://deb.debian.org/debian forky/main arm64 libpetsc-real3.22 arm64 3.22.5+dfsg1-2+b1 [5541 kB] Get: 283 http://deb.debian.org/debian forky/main arm64 libparpack2t64 arm64 3.9.1-6 [78.2 kB] Get: 284 http://deb.debian.org/debian forky/main arm64 libslepc-real3.22 arm64 3.22.2+dfsg1-1 [955 kB] Get: 285 http://deb.debian.org/debian forky/main arm64 libspdlog1.15 arm64 1:1.15.3+ds-1 [99.9 kB] Get: 286 http://deb.debian.org/debian forky/main arm64 libdolfinx-real0.9 arm64 1:0.9.0-7 [476 kB] Get: 287 http://deb.debian.org/debian forky/main arm64 libjs-mathjax all 2.7.9+dfsg-1 [5667 kB] Get: 288 http://deb.debian.org/debian forky/main arm64 libldl3 arm64 1:7.11.0+dfsg-2 [33.9 kB] Get: 289 http://deb.debian.org/debian forky/main arm64 libsuitesparse-mongoose3 arm64 1:7.11.0+dfsg-2 [54.9 kB] Get: 290 http://deb.debian.org/debian forky/main arm64 librbio4 arm64 1:7.11.0+dfsg-2 [47.4 kB] Get: 291 http://deb.debian.org/debian forky/main arm64 libspex3 arm64 1:7.11.0+dfsg-2 [66.2 kB] Get: 292 http://deb.debian.org/debian forky/main arm64 libparu1 arm64 1:7.11.0+dfsg-2 [71.5 kB] Get: 293 http://deb.debian.org/debian forky/main arm64 libsuitesparse-dev arm64 1:7.11.0+dfsg-2 [1355 kB] Get: 294 http://deb.debian.org/debian forky/main arm64 libscotch-7.0 arm64 7.0.7-1 [367 kB] Get: 295 http://deb.debian.org/debian forky/main arm64 libscotch-dev arm64 7.0.7-1 [1543 kB] Get: 296 http://deb.debian.org/debian forky/main arm64 libptscotch-dev arm64 7.0.7-1 [1315 kB] Get: 297 http://deb.debian.org/debian forky/main arm64 libscalapack-openmpi-dev arm64 2.2.2-1 [11.1 kB] Get: 298 http://deb.debian.org/debian forky/main arm64 libscalapack-mpi-dev arm64 2.2.2-1 [6264 B] Get: 299 http://deb.debian.org/debian forky/main arm64 libfftw3-bin arm64 3.3.10-2+b1 [44.3 kB] Get: 300 http://deb.debian.org/debian forky/main arm64 libfftw3-dev arm64 3.3.10-2+b1 [1280 kB] Get: 301 http://deb.debian.org/debian forky/main arm64 libfftw3-mpi-dev arm64 3.3.10-2+b1 [59.5 kB] Get: 302 http://deb.debian.org/debian forky/main arm64 opencl-c-headers all 3.0~2025.07.22-1 [47.5 kB] Get: 303 http://deb.debian.org/debian forky/main arm64 opencl-clhpp-headers all 3.0~2025.07.22-1 [51.0 kB] Get: 304 http://deb.debian.org/debian forky/main arm64 ocl-icd-opencl-dev arm64 2.3.3-1 [8808 B] Get: 305 http://deb.debian.org/debian forky/main arm64 libhdf5-openmpi-fortran-310 arm64 1.14.5+repack-3 [110 kB] Get: 306 http://deb.debian.org/debian forky/main arm64 libhdf5-openmpi-hl-310 arm64 1.14.5+repack-3 [66.2 kB] Get: 307 http://deb.debian.org/debian forky/main arm64 libhdf5-openmpi-hl-fortran-310 arm64 1.14.5+repack-3 [42.3 kB] Get: 308 http://deb.debian.org/debian forky/main arm64 libhdf5-openmpi-cpp-310 arm64 1.14.5+repack-3 [121 kB] Get: 309 http://deb.debian.org/debian forky/main arm64 libhdf5-openmpi-hl-cpp-310 arm64 1.14.5+repack-3 [24.5 kB] Get: 310 http://deb.debian.org/debian forky/main arm64 libjpeg62-turbo arm64 1:2.1.5-4 [173 kB] Get: 311 http://deb.debian.org/debian forky/main arm64 libjpeg62-turbo-dev arm64 1:2.1.5-4 [293 kB] Get: 312 http://deb.debian.org/debian forky/main arm64 libjpeg-dev arm64 1:2.1.5-4 [72.2 kB] Get: 313 http://deb.debian.org/debian forky/main arm64 libhdf5-openmpi-dev arm64 1.14.5+repack-3 [3335 kB] Get: 314 http://deb.debian.org/debian forky/main arm64 libhdf5-mpi-dev arm64 1.14.5+repack-3 [18.7 kB] Get: 315 http://deb.debian.org/debian forky/main arm64 libsuperlu-dev arm64 7.0.1+dfsg1-2 [22.0 kB] Get: 316 http://deb.debian.org/debian forky/main arm64 libsuperlu-dist-dev arm64 8.2.1+dfsg1-5+b1 [849 kB] Get: 317 http://deb.debian.org/debian forky/main arm64 xorg-sgml-doctools all 1:1.11-1.1 [22.1 kB] Get: 318 http://deb.debian.org/debian forky/main arm64 x11proto-dev all 2024.1-1 [603 kB] Get: 319 http://deb.debian.org/debian forky/main arm64 libxau-dev arm64 1:1.0.11-1 [23.9 kB] Get: 320 http://deb.debian.org/debian forky/main arm64 libxdmcp-dev arm64 1:1.1.5-1 [44.2 kB] Get: 321 http://deb.debian.org/debian forky/main arm64 xtrans-dev all 1.4.0-1 [98.7 kB] Get: 322 http://deb.debian.org/debian forky/main arm64 libxcb1-dev arm64 1.17.0-2+b1 [182 kB] Get: 323 http://deb.debian.org/debian forky/main arm64 libx11-dev arm64 2:1.8.12-1 [883 kB] Get: 324 http://deb.debian.org/debian forky/main arm64 libyaml-dev arm64 0.2.5-2 [61.1 kB] Get: 325 http://deb.debian.org/debian forky/main arm64 libpetsc3.22-dev-common all 3.22.5+dfsg1-2 [310 kB] Get: 326 http://deb.debian.org/debian forky/main arm64 libhypre-dev arm64 2.32.0-4 [1845 kB] Get: 327 http://deb.debian.org/debian forky/main arm64 libmumps-headers-dev all 5.7.3-3 [36.3 kB] Get: 328 http://deb.debian.org/debian forky/main arm64 libmumps-dev arm64 5.7.3-3+b1 [1741 kB] Get: 329 http://deb.debian.org/debian forky/main arm64 valgrind arm64 1:3.24.0-3 [8820 kB] Get: 330 http://deb.debian.org/debian forky/main arm64 valgrind-mpi arm64 1:3.24.0-3 [53.9 kB] Get: 331 http://deb.debian.org/debian forky/main arm64 libpetsc-real3.22-dev arm64 3.22.5+dfsg1-2+b1 [7951 kB] Get: 332 http://deb.debian.org/debian forky/main arm64 libparpack2-dev arm64 3.9.1-6 [93.2 kB] Get: 333 http://deb.debian.org/debian forky/main arm64 libslepc-real3.22-dev arm64 3.22.2+dfsg1-1 [6370 kB] Get: 334 http://deb.debian.org/debian forky/main arm64 libdolfinx-real-dev arm64 1:0.9.0-7 [48.8 kB] Get: 335 http://deb.debian.org/debian forky/main arm64 libpugixml-dev arm64 1.14-2 [103 kB] Get: 336 http://deb.debian.org/debian forky/main arm64 libfmt-dev arm64 10.1.1+ds1-4 [177 kB] Get: 337 http://deb.debian.org/debian forky/main arm64 libspdlog-dev arm64 1:1.15.3+ds-1 [91.9 kB] Get: 338 http://deb.debian.org/debian forky/main arm64 liblzma-dev arm64 5.8.1-1.1 [344 kB] Get: 339 http://deb.debian.org/debian forky/main arm64 libxml2-dev arm64 2.14.5+dfsg-0.2 [709 kB] Get: 340 http://deb.debian.org/debian forky/main arm64 python3-cffi-backend arm64 2.0.0-1 [97.8 kB] Get: 341 http://deb.debian.org/debian forky/main arm64 python3-ply all 3.11-9 [62.9 kB] Get: 342 http://deb.debian.org/debian forky/main arm64 python3-pycparser all 2.23-1 [78.4 kB] Get: 343 http://deb.debian.org/debian forky/main arm64 python3-cffi all 2.0.0-1 [90.3 kB] Get: 344 http://deb.debian.org/debian forky/main arm64 libpython3.13 arm64 3.13.7-1 [1978 kB] Get: 345 http://deb.debian.org/debian forky/main arm64 libexpat1-dev arm64 2.7.1-2 [145 kB] Get: 346 http://deb.debian.org/debian forky/main arm64 libpython3.13-dev arm64 3.13.7-1 [4924 kB] Get: 347 http://deb.debian.org/debian forky/main arm64 libpython3-dev arm64 3.13.7-1 [10.5 kB] Get: 348 http://deb.debian.org/debian forky/main arm64 python3.13-dev arm64 3.13.7-1 [504 kB] Get: 349 http://deb.debian.org/debian forky/main arm64 libjs-sphinxdoc all 8.2.3-6 [27.5 kB] Get: 350 http://deb.debian.org/debian forky/main arm64 python3-dev arm64 3.13.7-1 [26.1 kB] Get: 351 http://deb.debian.org/debian forky/main arm64 python3-ufl all 2024.2.0-3 [150 kB] Get: 352 http://deb.debian.org/debian forky/main arm64 python3-basix arm64 0.9.0-2+b2 [118 kB] Get: 353 http://deb.debian.org/debian forky/main arm64 python3-autocommand all 2.2.2-3 [13.6 kB] Get: 354 http://deb.debian.org/debian forky/main arm64 python3-more-itertools all 10.8.0-1 [71.7 kB] Get: 355 http://deb.debian.org/debian forky/main arm64 python3-typing-extensions all 4.15.0-1 [92.4 kB] Get: 356 http://deb.debian.org/debian forky/main arm64 python3-typeguard all 4.4.4-1 [37.1 kB] Get: 357 http://deb.debian.org/debian forky/main arm64 python3-inflect all 7.5.0-1 [33.0 kB] Get: 358 http://deb.debian.org/debian forky/main arm64 python3-jaraco.context all 6.0.1-1 [8276 B] Get: 359 http://deb.debian.org/debian forky/main arm64 python3-jaraco.functools all 4.1.0-1 [12.0 kB] Get: 360 http://deb.debian.org/debian forky/main arm64 python3-pkg-resources all 78.1.1-0.1 [224 kB] Get: 361 http://deb.debian.org/debian forky/main arm64 python3-jaraco.text all 4.0.0-1 [11.4 kB] Get: 362 http://deb.debian.org/debian forky/main arm64 python3-zipp all 3.23.0-1 [11.0 kB] Get: 363 http://deb.debian.org/debian forky/main arm64 python3-setuptools all 78.1.1-0.1 [738 kB] Get: 364 http://deb.debian.org/debian forky/main arm64 python3-ffcx all 1:0.9.0-2 [94.9 kB] Get: 365 http://deb.debian.org/debian forky/main arm64 libdolfinx-dev arm64 1:0.9.0-7 [202 kB] Get: 366 http://deb.debian.org/debian forky/main arm64 libhdf5-hl-310 arm64 1.14.5+repack-3 [66.1 kB] Get: 367 http://deb.debian.org/debian forky/main arm64 libjson-perl all 4.10000-1 [87.5 kB] Get: 368 http://deb.debian.org/debian forky/main arm64 liblzf1 arm64 3.6-4+b3 [10.1 kB] Get: 369 http://deb.debian.org/debian forky/main arm64 libpython3-all-dev arm64 3.13.7-1 [1068 B] Get: 370 http://deb.debian.org/debian forky/main arm64 robin-map-dev all 1.3.0-1 [29.8 kB] Get: 371 http://deb.debian.org/debian forky/main arm64 nanobind-dev all 2.5.0-1 [165 kB] Get: 372 http://deb.debian.org/debian forky/main arm64 python3-packaging all 25.0-1 [56.6 kB] Get: 373 http://deb.debian.org/debian forky/main arm64 python3-pyproject-hooks all 1.2.0-1 [11.7 kB] Get: 374 http://deb.debian.org/debian forky/main arm64 python3-wheel all 0.46.1-2 [21.7 kB] Get: 375 http://deb.debian.org/debian forky/main arm64 python3-build all 1.2.2-4 [36.2 kB] Get: 376 http://deb.debian.org/debian forky/main arm64 python3-installer all 0.7.0+dfsg1-3 [18.6 kB] Get: 377 http://deb.debian.org/debian forky/main arm64 pybuild-plugin-pyproject all 6.20250414 [11.8 kB] Get: 378 http://deb.debian.org/debian forky/main arm64 sphinx-common all 8.2.3-6 [619 kB] Get: 379 http://deb.debian.org/debian forky/main arm64 python-petsc4py-doc all 3.22.4-1 [779 kB] Get: 380 http://deb.debian.org/debian forky/main arm64 python3-adios2-serial arm64 2.10.2+dfsg1-3 [188 kB] Get: 381 http://deb.debian.org/debian forky/main arm64 python3-adios2 all 2.10.2+dfsg1-3 [19.7 kB] Get: 382 http://deb.debian.org/debian forky/main arm64 python3-all arm64 3.13.7-1 [1044 B] Get: 383 http://deb.debian.org/debian forky/main arm64 python3-all-dev arm64 3.13.7-1 [1068 B] Get: 384 http://deb.debian.org/debian forky/main arm64 python3-decorator all 5.2.1-2 [33.0 kB] Get: 385 http://deb.debian.org/debian forky/main arm64 python3-mpi4py arm64 4.1.0-3 [662 kB] Get: 386 http://deb.debian.org/debian forky/main arm64 python3-nanobind all 2.5.0-1 [41.8 kB] Get: 387 http://deb.debian.org/debian forky/main arm64 python3-pusimp all 0.1.1-1 [10.1 kB] Get: 388 http://deb.debian.org/debian forky/main arm64 python3-scipy arm64 1.15.3-1.1 [15.1 MB] Get: 389 http://deb.debian.org/debian forky/main arm64 swig arm64 4.3.0-1 [1406 kB] Get: 390 http://deb.debian.org/debian forky/main arm64 python3-petsc4py-real3.22 arm64 3.22.4-1 [1072 kB] Get: 391 http://deb.debian.org/debian forky/main arm64 python3-petsc4py-real all 3.22.4-1 [11.0 kB] Get: 392 http://deb.debian.org/debian forky/main arm64 python3-petsc4py all 3.22.4-1 [11.1 kB] Get: 393 http://deb.debian.org/debian forky/main arm64 python3-slepc4py-real3.22 arm64 3.22.2-1+b1 [272 kB] Get: 394 http://deb.debian.org/debian forky/main arm64 python3-slepc4py-real all 3.22.2-1 [6636 B] Get: 395 http://deb.debian.org/debian forky/main arm64 python3-slepc4py all 3.22.2-1 [6828 B] Get: 396 http://deb.debian.org/debian forky/main arm64 python3-dolfinx-real arm64 1:0.9.0-7 [1125 kB] Get: 397 http://deb.debian.org/debian forky/main arm64 python3-dolfinx arm64 1:0.9.0-7 [50.1 kB] Get: 398 http://deb.debian.org/debian forky/main arm64 python3-h5py-serial arm64 3.13.0-1+b1 [953 kB] Get: 399 http://deb.debian.org/debian forky/main arm64 python3-h5py all 3.13.0-1 [15.0 kB] Get: 400 http://deb.debian.org/debian forky/main arm64 python3-iniconfig all 1.1.1-2 [6396 B] Get: 401 http://deb.debian.org/debian forky/main arm64 python3-nibabel all 5.3.2-2 [2667 kB] Get: 402 http://deb.debian.org/debian forky/main arm64 python3-pathspec all 0.12.1-1 [28.1 kB] Get: 403 http://deb.debian.org/debian forky/main arm64 python3-pluggy all 1.6.0-1 [27.1 kB] Get: 404 http://deb.debian.org/debian forky/main arm64 python3-pyproject-metadata all 0.9.1-2 [21.6 kB] Get: 405 http://deb.debian.org/debian forky/main arm64 python3-pytest all 8.3.5-2 [250 kB] Get: 406 http://deb.debian.org/debian forky/main arm64 python3-scikit-build-core all 0.11.1-3 [118 kB] Fetched 401 MB in 1s (285 MB/s) Preconfiguring packages ... Selecting previously unselected package libexpat1:arm64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20020 files and directories currently installed.) Preparing to unpack .../libexpat1_2.7.1-2_arm64.deb ... Unpacking libexpat1:arm64 (2.7.1-2) ... Selecting previously unselected package libpython3.13-minimal:arm64. Preparing to unpack .../libpython3.13-minimal_3.13.7-1_arm64.deb ... Unpacking libpython3.13-minimal:arm64 (3.13.7-1) ... Selecting previously unselected package python3.13-minimal. Preparing to unpack .../python3.13-minimal_3.13.7-1_arm64.deb ... Unpacking python3.13-minimal (3.13.7-1) ... Setting up libpython3.13-minimal:arm64 (3.13.7-1) ... Setting up libexpat1:arm64 (2.7.1-2) ... Setting up python3.13-minimal (3.13.7-1) ... Selecting previously unselected package python3-minimal. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20354 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.13.7-1_arm64.deb ... Unpacking python3-minimal (3.13.7-1) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_13.0.0_all.deb ... Unpacking media-types (13.0.0) ... Selecting previously unselected package netbase. Preparing to unpack .../2-netbase_6.5_all.deb ... Unpacking netbase (6.5) ... Selecting previously unselected package tzdata. Preparing to unpack .../3-tzdata_2025b-5_all.deb ... Unpacking tzdata (2025b-5) ... Selecting previously unselected package libffi8:arm64. Preparing to unpack .../4-libffi8_3.5.2-2_arm64.deb ... Unpacking libffi8:arm64 (3.5.2-2) ... Selecting previously unselected package readline-common. Preparing to unpack .../5-readline-common_8.3-3_all.deb ... Unpacking readline-common (8.3-3) ... Selecting previously unselected package libreadline8t64:arm64. Preparing to unpack .../6-libreadline8t64_8.3-3_arm64.deb ... Adding 'diversion of /lib/aarch64-linux-gnu/libhistory.so.8 to /lib/aarch64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/aarch64-linux-gnu/libhistory.so.8.2 to /lib/aarch64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/aarch64-linux-gnu/libreadline.so.8 to /lib/aarch64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/aarch64-linux-gnu/libreadline.so.8.2 to /lib/aarch64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:arm64 (8.3-3) ... Selecting previously unselected package libpython3.13-stdlib:arm64. Preparing to unpack .../7-libpython3.13-stdlib_3.13.7-1_arm64.deb ... Unpacking libpython3.13-stdlib:arm64 (3.13.7-1) ... Selecting previously unselected package python3.13. Preparing to unpack .../8-python3.13_3.13.7-1_arm64.deb ... Unpacking python3.13 (3.13.7-1) ... Selecting previously unselected package libpython3-stdlib:arm64. Preparing to unpack .../9-libpython3-stdlib_3.13.7-1_arm64.deb ... Unpacking libpython3-stdlib:arm64 (3.13.7-1) ... Setting up python3-minimal (3.13.7-1) ... Selecting previously unselected package python3. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21369 files and directories currently installed.) Preparing to unpack .../000-python3_3.13.7-1_arm64.deb ... Unpacking python3 (3.13.7-1) ... Selecting previously unselected package python3-numpy-dev:arm64. Preparing to unpack .../001-python3-numpy-dev_1%3a2.2.4+ds-1.2_arm64.deb ... Unpacking python3-numpy-dev:arm64 (1:2.2.4+ds-1.2) ... Selecting previously unselected package libblas3:arm64. Preparing to unpack .../002-libblas3_3.12.1-7_arm64.deb ... Unpacking libblas3:arm64 (3.12.1-7) ... Selecting previously unselected package libgfortran5:arm64. Preparing to unpack .../003-libgfortran5_15.2.0-3_arm64.deb ... Unpacking libgfortran5:arm64 (15.2.0-3) ... Selecting previously unselected package liblapack3:arm64. Preparing to unpack .../004-liblapack3_3.12.1-7_arm64.deb ... Unpacking liblapack3:arm64 (3.12.1-7) ... Selecting previously unselected package python3-numpy. Preparing to unpack .../005-python3-numpy_1%3a2.2.4+ds-1.2_arm64.deb ... Unpacking python3-numpy (1:2.2.4+ds-1.2) ... Selecting previously unselected package libproc2-0:arm64. Preparing to unpack .../006-libproc2-0_2%3a4.0.4-9_arm64.deb ... Unpacking libproc2-0:arm64 (2:4.0.4-9) ... Selecting previously unselected package procps. Preparing to unpack .../007-procps_2%3a4.0.4-9_arm64.deb ... Unpacking procps (2:4.0.4-9) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../008-sensible-utils_0.0.26_all.deb ... Unpacking sensible-utils (0.0.26) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../009-libmagic-mgc_1%3a5.46-5_arm64.deb ... Unpacking libmagic-mgc (1:5.46-5) ... Selecting previously unselected package libmagic1t64:arm64. Preparing to unpack .../010-libmagic1t64_1%3a5.46-5_arm64.deb ... Unpacking libmagic1t64:arm64 (1:5.46-5) ... Selecting previously unselected package file. Preparing to unpack .../011-file_1%3a5.46-5_arm64.deb ... Unpacking file (1:5.46-5) ... Selecting previously unselected package gettext-base. Preparing to unpack .../012-gettext-base_0.23.1-2+b1_arm64.deb ... Unpacking gettext-base (0.23.1-2+b1) ... Selecting previously unselected package libuchardet0:arm64. Preparing to unpack .../013-libuchardet0_0.0.8-2_arm64.deb ... Unpacking libuchardet0:arm64 (0.0.8-2) ... Selecting previously unselected package groff-base. Preparing to unpack .../014-groff-base_1.23.0-9_arm64.deb ... Unpacking groff-base (1.23.0-9) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../015-bsdextrautils_2.41.1-3_arm64.deb ... Unpacking bsdextrautils (2.41.1-3) ... Selecting previously unselected package libpipeline1:arm64. Preparing to unpack .../016-libpipeline1_1.5.8-1_arm64.deb ... Unpacking libpipeline1:arm64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../017-man-db_2.13.1-1_arm64.deb ... Unpacking man-db (2.13.1-1) ... Selecting previously unselected package libedit2:arm64. Preparing to unpack .../018-libedit2_3.1-20250104-1_arm64.deb ... Unpacking libedit2:arm64 (3.1-20250104-1) ... Selecting previously unselected package libcbor0.10:arm64. Preparing to unpack .../019-libcbor0.10_0.10.2-2_arm64.deb ... Unpacking libcbor0.10:arm64 (0.10.2-2) ... Selecting previously unselected package libfido2-1:arm64. Preparing to unpack .../020-libfido2-1_1.16.0-2_arm64.deb ... Unpacking libfido2-1:arm64 (1.16.0-2) ... Selecting previously unselected package libkrb5support0:arm64. Preparing to unpack .../021-libkrb5support0_1.21.3-5_arm64.deb ... Unpacking libkrb5support0:arm64 (1.21.3-5) ... Selecting previously unselected package libcom-err2:arm64. Preparing to unpack .../022-libcom-err2_1.47.2-3+b3_arm64.deb ... Unpacking libcom-err2:arm64 (1.47.2-3+b3) ... Selecting previously unselected package libk5crypto3:arm64. Preparing to unpack .../023-libk5crypto3_1.21.3-5_arm64.deb ... Unpacking libk5crypto3:arm64 (1.21.3-5) ... Selecting previously unselected package libkeyutils1:arm64. Preparing to unpack .../024-libkeyutils1_1.6.3-6_arm64.deb ... Unpacking libkeyutils1:arm64 (1.6.3-6) ... Selecting previously unselected package libkrb5-3:arm64. Preparing to unpack .../025-libkrb5-3_1.21.3-5_arm64.deb ... Unpacking libkrb5-3:arm64 (1.21.3-5) ... Selecting previously unselected package libgssapi-krb5-2:arm64. Preparing to unpack .../026-libgssapi-krb5-2_1.21.3-5_arm64.deb ... Unpacking libgssapi-krb5-2:arm64 (1.21.3-5) ... Selecting previously unselected package openssh-client. Preparing to unpack .../027-openssh-client_1%3a10.0p1-8_arm64.deb ... Unpacking openssh-client (1:10.0p1-8) ... Selecting previously unselected package m4. Preparing to unpack .../028-m4_1.4.20-1_arm64.deb ... Unpacking m4 (1.4.20-1) ... Selecting previously unselected package autoconf. Preparing to unpack .../029-autoconf_2.72-3.1_all.deb ... Unpacking autoconf (2.72-3.1) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../030-autotools-dev_20240727.1_all.deb ... Unpacking autotools-dev (20240727.1) ... Selecting previously unselected package automake. Preparing to unpack .../031-automake_1%3a1.17-4_all.deb ... Unpacking automake (1:1.17-4) ... Selecting previously unselected package autopoint. Preparing to unpack .../032-autopoint_0.23.1-2_all.deb ... Unpacking autopoint (0.23.1-2) ... Selecting previously unselected package cmake-data. Preparing to unpack .../033-cmake-data_4.1.1+really3.31.6-1_all.deb ... Unpacking cmake-data (4.1.1+really3.31.6-1) ... Selecting previously unselected package libxml2-16:arm64. Preparing to unpack .../034-libxml2-16_2.14.5+dfsg-0.2_arm64.deb ... Unpacking libxml2-16:arm64 (2.14.5+dfsg-0.2) ... Selecting previously unselected package libarchive13t64:arm64. Preparing to unpack .../035-libarchive13t64_3.7.4-4+b1_arm64.deb ... Unpacking libarchive13t64:arm64 (3.7.4-4+b1) ... Selecting previously unselected package libbrotli1:arm64. Preparing to unpack .../036-libbrotli1_1.1.0-2+b7_arm64.deb ... Unpacking libbrotli1:arm64 (1.1.0-2+b7) ... Selecting previously unselected package libunistring5:arm64. Preparing to unpack .../037-libunistring5_1.3-2_arm64.deb ... Unpacking libunistring5:arm64 (1.3-2) ... Selecting previously unselected package libidn2-0:arm64. Preparing to unpack .../038-libidn2-0_2.3.8-4_arm64.deb ... Unpacking libidn2-0:arm64 (2.3.8-4) ... Selecting previously unselected package libsasl2-modules-db:arm64. Preparing to unpack .../039-libsasl2-modules-db_2.1.28+dfsg1-9_arm64.deb ... Unpacking libsasl2-modules-db:arm64 (2.1.28+dfsg1-9) ... Selecting previously unselected package libsasl2-2:arm64. Preparing to unpack .../040-libsasl2-2_2.1.28+dfsg1-9_arm64.deb ... Unpacking libsasl2-2:arm64 (2.1.28+dfsg1-9) ... Selecting previously unselected package libldap2:arm64. Preparing to unpack .../041-libldap2_2.6.10+dfsg-1_arm64.deb ... Unpacking libldap2:arm64 (2.6.10+dfsg-1) ... Selecting previously unselected package libnghttp2-14:arm64. Preparing to unpack .../042-libnghttp2-14_1.64.0-1.1+b1_arm64.deb ... Unpacking libnghttp2-14:arm64 (1.64.0-1.1+b1) ... Selecting previously unselected package libnghttp3-9:arm64. Preparing to unpack .../043-libnghttp3-9_1.11.0-1_arm64.deb ... Unpacking libnghttp3-9:arm64 (1.11.0-1) ... Selecting previously unselected package libpsl5t64:arm64. Preparing to unpack .../044-libpsl5t64_0.21.2-1.1+b1_arm64.deb ... Unpacking libpsl5t64:arm64 (0.21.2-1.1+b1) ... Selecting previously unselected package libp11-kit0:arm64. Preparing to unpack .../045-libp11-kit0_0.25.5-3_arm64.deb ... Unpacking libp11-kit0:arm64 (0.25.5-3) ... Selecting previously unselected package libtasn1-6:arm64. Preparing to unpack .../046-libtasn1-6_4.20.0-2_arm64.deb ... Unpacking libtasn1-6:arm64 (4.20.0-2) ... Selecting previously unselected package libgnutls30t64:arm64. Preparing to unpack .../047-libgnutls30t64_3.8.9-3_arm64.deb ... Unpacking libgnutls30t64:arm64 (3.8.9-3) ... Selecting previously unselected package librtmp1:arm64. Preparing to unpack .../048-librtmp1_2.4+20151223.gitfa8646d.1-3_arm64.deb ... Unpacking librtmp1:arm64 (2.4+20151223.gitfa8646d.1-3) ... Selecting previously unselected package libssh2-1t64:arm64. Preparing to unpack .../049-libssh2-1t64_1.11.1-1_arm64.deb ... Unpacking libssh2-1t64:arm64 (1.11.1-1) ... Selecting previously unselected package libcurl4t64:arm64. Preparing to unpack .../050-libcurl4t64_8.15.0-1_arm64.deb ... Unpacking libcurl4t64:arm64 (8.15.0-1) ... Selecting previously unselected package libjsoncpp26:arm64. Preparing to unpack .../051-libjsoncpp26_1.9.6-4_arm64.deb ... Unpacking libjsoncpp26:arm64 (1.9.6-4) ... Selecting previously unselected package librhash1:arm64. Preparing to unpack .../052-librhash1_1.4.6-1_arm64.deb ... Unpacking librhash1:arm64 (1.4.6-1) ... Selecting previously unselected package libuv1t64:arm64. Preparing to unpack .../053-libuv1t64_1.51.0-2_arm64.deb ... Unpacking libuv1t64:arm64 (1.51.0-2) ... Selecting previously unselected package cmake. Preparing to unpack .../054-cmake_4.1.1+really3.31.6-1_arm64.deb ... Unpacking cmake (4.1.1+really3.31.6-1) ... Selecting previously unselected package comerr-dev:arm64. Preparing to unpack .../055-comerr-dev_2.1-1.47.2-3+b3_arm64.deb ... Unpacking comerr-dev:arm64 (2.1-1.47.2-3+b3) ... Selecting previously unselected package gcc-14-base:arm64. Preparing to unpack .../056-gcc-14-base_14.3.0-8_arm64.deb ... Unpacking gcc-14-base:arm64 (14.3.0-8) ... Selecting previously unselected package cpp-14-aarch64-linux-gnu. Preparing to unpack .../057-cpp-14-aarch64-linux-gnu_14.3.0-8_arm64.deb ... Unpacking cpp-14-aarch64-linux-gnu (14.3.0-8) ... Selecting previously unselected package cpp-14. Preparing to unpack .../058-cpp-14_14.3.0-8_arm64.deb ... Unpacking cpp-14 (14.3.0-8) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../059-libdebhelper-perl_13.26_all.deb ... Unpacking libdebhelper-perl (13.26) ... Selecting previously unselected package libgcc-14-dev:arm64. Preparing to unpack .../060-libgcc-14-dev_14.3.0-8_arm64.deb ... Unpacking libgcc-14-dev:arm64 (14.3.0-8) ... Selecting previously unselected package gcc-14-aarch64-linux-gnu. Preparing to unpack .../061-gcc-14-aarch64-linux-gnu_14.3.0-8_arm64.deb ... Unpacking gcc-14-aarch64-linux-gnu (14.3.0-8) ... Selecting previously unselected package gcc-14. Preparing to unpack .../062-gcc-14_14.3.0-8_arm64.deb ... Unpacking gcc-14 (14.3.0-8) ... Selecting previously unselected package libtool. Preparing to unpack .../063-libtool_2.5.4-5_all.deb ... Unpacking libtool (2.5.4-5) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../064-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../065-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../066-libfile-stripnondeterminism-perl_1.15.0-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.15.0-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../067-dh-strip-nondeterminism_1.15.0-1_all.deb ... Unpacking dh-strip-nondeterminism (1.15.0-1) ... Selecting previously unselected package libelf1t64:arm64. Preparing to unpack .../068-libelf1t64_0.193-3_arm64.deb ... Unpacking libelf1t64:arm64 (0.193-3) ... Selecting previously unselected package dwz. Preparing to unpack .../069-dwz_0.16-2_arm64.deb ... Unpacking dwz (0.16-2) ... Selecting previously unselected package gettext. Preparing to unpack .../070-gettext_0.23.1-2+b1_arm64.deb ... Unpacking gettext (0.23.1-2+b1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../071-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../072-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../073-debhelper_13.26_all.deb ... Unpacking debhelper (13.26) ... Selecting previously unselected package dh-python. Preparing to unpack .../074-dh-python_6.20250414_all.deb ... Unpacking dh-python (6.20250414) ... Selecting previously unselected package fonts-mathjax. Preparing to unpack .../075-fonts-mathjax_2.7.9+dfsg-1_all.deb ... Unpacking fonts-mathjax (2.7.9+dfsg-1) ... Selecting previously unselected package libgfortran-15-dev:arm64. Preparing to unpack .../076-libgfortran-15-dev_15.2.0-3_arm64.deb ... Unpacking libgfortran-15-dev:arm64 (15.2.0-3) ... Selecting previously unselected package gfortran-15-aarch64-linux-gnu. Preparing to unpack .../077-gfortran-15-aarch64-linux-gnu_15.2.0-3_arm64.deb ... Unpacking gfortran-15-aarch64-linux-gnu (15.2.0-3) ... Selecting previously unselected package gfortran-15. Preparing to unpack .../078-gfortran-15_15.2.0-3_arm64.deb ... Unpacking gfortran-15 (15.2.0-3) ... Selecting previously unselected package gfortran-aarch64-linux-gnu. Preparing to unpack .../079-gfortran-aarch64-linux-gnu_4%3a15.2.0-1_arm64.deb ... Unpacking gfortran-aarch64-linux-gnu (4:15.2.0-1) ... Selecting previously unselected package gfortran. Preparing to unpack .../080-gfortran_4%3a15.2.0-1_arm64.deb ... Unpacking gfortran (4:15.2.0-1) ... Selecting previously unselected package libgfortran-14-dev:arm64. Preparing to unpack .../081-libgfortran-14-dev_14.3.0-8_arm64.deb ... Unpacking libgfortran-14-dev:arm64 (14.3.0-8) ... Selecting previously unselected package gfortran-14-aarch64-linux-gnu. Preparing to unpack .../082-gfortran-14-aarch64-linux-gnu_14.3.0-8_arm64.deb ... Unpacking gfortran-14-aarch64-linux-gnu (14.3.0-8) ... Selecting previously unselected package gfortran-14. Preparing to unpack .../083-gfortran-14_14.3.0-8_arm64.deb ... Unpacking gfortran-14 (14.3.0-8) ... Selecting previously unselected package libnl-3-200:arm64. Preparing to unpack .../084-libnl-3-200_3.11.0-2_arm64.deb ... Unpacking libnl-3-200:arm64 (3.11.0-2) ... Selecting previously unselected package libnl-route-3-200:arm64. Preparing to unpack .../085-libnl-route-3-200_3.11.0-2_arm64.deb ... Unpacking libnl-route-3-200:arm64 (3.11.0-2) ... Selecting previously unselected package libibverbs1:arm64. Preparing to unpack .../086-libibverbs1_56.1-1_arm64.deb ... Unpacking libibverbs1:arm64 (56.1-1) ... Selecting previously unselected package ibverbs-providers:arm64. Preparing to unpack .../087-ibverbs-providers_56.1-1_arm64.deb ... Unpacking ibverbs-providers:arm64 (56.1-1) ... Selecting previously unselected package libicu76:arm64. Preparing to unpack .../088-libicu76_76.1-4_arm64.deb ... Unpacking libicu76:arm64 (76.1-4) ... Selecting previously unselected package icu-devtools. Preparing to unpack .../089-icu-devtools_76.1-4_arm64.deb ... Unpacking icu-devtools (76.1-4) ... Selecting previously unselected package libgssrpc4t64:arm64. Preparing to unpack .../090-libgssrpc4t64_1.21.3-5_arm64.deb ... Unpacking libgssrpc4t64:arm64 (1.21.3-5) ... Selecting previously unselected package libkadm5clnt-mit12:arm64. Preparing to unpack .../091-libkadm5clnt-mit12_1.21.3-5_arm64.deb ... Unpacking libkadm5clnt-mit12:arm64 (1.21.3-5) ... Selecting previously unselected package libkdb5-10t64:arm64. Preparing to unpack .../092-libkdb5-10t64_1.21.3-5_arm64.deb ... Unpacking libkdb5-10t64:arm64 (1.21.3-5) ... Selecting previously unselected package libkadm5srv-mit12:arm64. Preparing to unpack .../093-libkadm5srv-mit12_1.21.3-5_arm64.deb ... Unpacking libkadm5srv-mit12:arm64 (1.21.3-5) ... Selecting previously unselected package krb5-multidev:arm64. Preparing to unpack .../094-krb5-multidev_1.21.3-5_arm64.deb ... Unpacking krb5-multidev:arm64 (1.21.3-5) ... Selecting previously unselected package libadios2-common-c++11-dev. Preparing to unpack .../095-libadios2-common-c++11-dev_2.10.2+dfsg1-3_all.deb ... Unpacking libadios2-common-c++11-dev (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-common-core-dev:arm64. Preparing to unpack .../096-libadios2-common-core-dev_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-common-core-dev:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package librdmacm1t64:arm64. Preparing to unpack .../097-librdmacm1t64_56.1-1_arm64.deb ... Unpacking librdmacm1t64:arm64 (56.1-1) ... Selecting previously unselected package libfabric1:arm64. Preparing to unpack .../098-libfabric1_2.1.0-1.1_arm64.deb ... Unpacking libfabric1:arm64 (2.1.0-1.1) ... Selecting previously unselected package libevent-core-2.1-7t64:arm64. Preparing to unpack .../099-libevent-core-2.1-7t64_2.1.12-stable-10+b1_arm64.deb ... Unpacking libevent-core-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-pthreads-2.1-7t64:arm64. Preparing to unpack .../100-libevent-pthreads-2.1-7t64_2.1.12-stable-10+b1_arm64.deb ... Unpacking libevent-pthreads-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libhwloc15:arm64. Preparing to unpack .../101-libhwloc15_2.12.2-1_arm64.deb ... Unpacking libhwloc15:arm64 (2.12.2-1) ... Selecting previously unselected package libmunge2:arm64. Preparing to unpack .../102-libmunge2_0.5.16-1_arm64.deb ... Unpacking libmunge2:arm64 (0.5.16-1) ... Selecting previously unselected package libpciaccess0:arm64. Preparing to unpack .../103-libpciaccess0_0.17-3+b3_arm64.deb ... Unpacking libpciaccess0:arm64 (0.17-3+b3) ... Selecting previously unselected package libxau6:arm64. Preparing to unpack .../104-libxau6_1%3a1.0.11-1_arm64.deb ... Unpacking libxau6:arm64 (1:1.0.11-1) ... Selecting previously unselected package libxdmcp6:arm64. Preparing to unpack .../105-libxdmcp6_1%3a1.1.5-1_arm64.deb ... Unpacking libxdmcp6:arm64 (1:1.1.5-1) ... Selecting previously unselected package libxcb1:arm64. Preparing to unpack .../106-libxcb1_1.17.0-2+b1_arm64.deb ... Unpacking libxcb1:arm64 (1.17.0-2+b1) ... Selecting previously unselected package libx11-data. Preparing to unpack .../107-libx11-data_2%3a1.8.12-1_all.deb ... Unpacking libx11-data (2:1.8.12-1) ... Selecting previously unselected package libx11-6:arm64. Preparing to unpack .../108-libx11-6_2%3a1.8.12-1_arm64.deb ... Unpacking libx11-6:arm64 (2:1.8.12-1) ... Selecting previously unselected package libxext6:arm64. Preparing to unpack .../109-libxext6_2%3a1.3.4-1+b3_arm64.deb ... Unpacking libxext6:arm64 (2:1.3.4-1+b3) ... Selecting previously unselected package libxnvctrl0:arm64. Preparing to unpack .../110-libxnvctrl0_535.171.04-1+b2_arm64.deb ... Unpacking libxnvctrl0:arm64 (535.171.04-1+b2) ... Selecting previously unselected package ocl-icd-libopencl1:arm64. Preparing to unpack .../111-ocl-icd-libopencl1_2.3.3-1_arm64.deb ... Unpacking ocl-icd-libopencl1:arm64 (2.3.3-1) ... Selecting previously unselected package libhwloc-plugins:arm64. Preparing to unpack .../112-libhwloc-plugins_2.12.2-1_arm64.deb ... Unpacking libhwloc-plugins:arm64 (2.12.2-1) ... Selecting previously unselected package libpmix2t64:arm64. Preparing to unpack .../113-libpmix2t64_5.0.7-1_arm64.deb ... Unpacking libpmix2t64:arm64 (5.0.7-1) ... Selecting previously unselected package libz3-4:arm64. Preparing to unpack .../114-libz3-4_4.13.3-1_arm64.deb ... Unpacking libz3-4:arm64 (4.13.3-1) ... Selecting previously unselected package libllvm17t64:arm64. Preparing to unpack .../115-libllvm17t64_1%3a17.0.6-22+b3_arm64.deb ... Unpacking libllvm17t64:arm64 (1:17.0.6-22+b3) ... Selecting previously unselected package libamd-comgr2:arm64. Preparing to unpack .../116-libamd-comgr2_6.0+git20231212.4510c28+dfsg-3+b2_arm64.deb ... Unpacking libamd-comgr2:arm64 (6.0+git20231212.4510c28+dfsg-3+b2) ... Selecting previously unselected package libdrm-common. Preparing to unpack .../117-libdrm-common_2.4.125-2_all.deb ... Unpacking libdrm-common (2.4.125-2) ... Selecting previously unselected package libdrm2:arm64. Preparing to unpack .../118-libdrm2_2.4.125-2_arm64.deb ... Unpacking libdrm2:arm64 (2.4.125-2) ... Selecting previously unselected package libdrm-amdgpu1:arm64. Preparing to unpack .../119-libdrm-amdgpu1_2.4.125-2_arm64.deb ... Unpacking libdrm-amdgpu1:arm64 (2.4.125-2) ... Selecting previously unselected package libnuma1:arm64. Preparing to unpack .../120-libnuma1_2.0.19-1_arm64.deb ... Unpacking libnuma1:arm64 (2.0.19-1) ... Selecting previously unselected package libhsakmt1:arm64. Preparing to unpack .../121-libhsakmt1_6.2.4+ds-1_arm64.deb ... Unpacking libhsakmt1:arm64 (6.2.4+ds-1) ... Selecting previously unselected package libhsa-runtime64-1:arm64. Preparing to unpack .../122-libhsa-runtime64-1_6.1.2-3_arm64.deb ... Unpacking libhsa-runtime64-1:arm64 (6.1.2-3) ... Selecting previously unselected package libamdhip64-5:arm64. Preparing to unpack .../123-libamdhip64-5_5.7.1-6_arm64.deb ... Unpacking libamdhip64-5:arm64 (5.7.1-6) ... Selecting previously unselected package libibumad3:arm64. Preparing to unpack .../124-libibumad3_56.1-1_arm64.deb ... Unpacking libibumad3:arm64 (56.1-1) ... Selecting previously unselected package libibmad5:arm64. Preparing to unpack .../125-libibmad5_56.1-1_arm64.deb ... Unpacking libibmad5:arm64 (56.1-1) ... Selecting previously unselected package libucx0:arm64. Preparing to unpack .../126-libucx0_1.18.1+ds-2+b1_arm64.deb ... Unpacking libucx0:arm64 (1.18.1+ds-2+b1) ... Selecting previously unselected package libopenmpi40:arm64. Preparing to unpack .../127-libopenmpi40_5.0.7-1_arm64.deb ... Unpacking libopenmpi40:arm64 (5.0.7-1) ... Selecting previously unselected package libaec0:arm64. Preparing to unpack .../128-libaec0_1.1.4-2_arm64.deb ... Unpacking libaec0:arm64 (1.1.4-2) ... Selecting previously unselected package libsz2:arm64. Preparing to unpack .../129-libsz2_1.1.4-2_arm64.deb ... Unpacking libsz2:arm64 (1.1.4-2) ... Selecting previously unselected package libhdf5-openmpi-310:arm64. Preparing to unpack .../130-libhdf5-openmpi-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-openmpi-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libpng16-16t64:arm64. Preparing to unpack .../131-libpng16-16t64_1.6.50-1_arm64.deb ... Unpacking libpng16-16t64:arm64 (1.6.50-1) ... Selecting previously unselected package libpugixml1v5:arm64. Preparing to unpack .../132-libpugixml1v5_1.14-2_arm64.deb ... Unpacking libpugixml1v5:arm64 (1.14-2) ... Selecting previously unselected package libyaml-cpp0.8:arm64. Preparing to unpack .../133-libyaml-cpp0.8_0.8.0+dfsg-7_arm64.deb ... Unpacking libyaml-cpp0.8:arm64 (0.8.0+dfsg-7) ... Selecting previously unselected package libnorm1t64:arm64. Preparing to unpack .../134-libnorm1t64_1.5.9+dfsg-3.1+b2_arm64.deb ... Unpacking libnorm1t64:arm64 (1.5.9+dfsg-3.1+b2) ... Selecting previously unselected package libpgm-5.3-0t64:arm64. Preparing to unpack .../135-libpgm-5.3-0t64_5.3.128~dfsg-2.1+b1_arm64.deb ... Unpacking libpgm-5.3-0t64:arm64 (5.3.128~dfsg-2.1+b1) ... Selecting previously unselected package libsodium23:arm64. Preparing to unpack .../136-libsodium23_1.0.18-1+b2_arm64.deb ... Unpacking libsodium23:arm64 (1.0.18-1+b2) ... Selecting previously unselected package libzmq5:arm64. Preparing to unpack .../137-libzmq5_4.3.5-1+b3_arm64.deb ... Unpacking libzmq5:arm64 (4.3.5-1+b3) ... Selecting previously unselected package libadios2-mpi-plugins:arm64. Preparing to unpack .../138-libadios2-mpi-plugins_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-plugins:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-mpi-core-2.10:arm64. Preparing to unpack .../139-libadios2-mpi-core-2.10_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-core-2.10:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-mpi-c-2.10:arm64. Preparing to unpack .../140-libadios2-mpi-c-2.10_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-c-2.10:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-mpi-auxiliary-2.10:arm64. Preparing to unpack .../141-libadios2-mpi-auxiliary-2.10_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-auxiliary-2.10:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-mpi-auxiliary-dev:arm64. Preparing to unpack .../142-libadios2-mpi-auxiliary-dev_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-auxiliary-dev:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-mpi-c++11-2.10:arm64. Preparing to unpack .../143-libadios2-mpi-c++11-2.10_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-c++11-2.10:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-mpi-core-dev:arm64. Preparing to unpack .../144-libadios2-mpi-core-dev_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-core-dev:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-mpi-c++11-dev:arm64. Preparing to unpack .../145-libadios2-mpi-c++11-dev_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-c++11-dev:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libhdf5-310:arm64. Preparing to unpack .../146-libhdf5-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libadios2-serial-plugins:arm64. Preparing to unpack .../147-libadios2-serial-plugins_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-serial-plugins:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-serial-core-2.10:arm64. Preparing to unpack .../148-libadios2-serial-core-2.10_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-serial-core-2.10:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-serial-c-2.10:arm64. Preparing to unpack .../149-libadios2-serial-c-2.10_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-serial-c-2.10:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-serial-auxiliary-2.10:arm64. Preparing to unpack .../150-libadios2-serial-auxiliary-2.10_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-serial-auxiliary-2.10:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libaec-dev:arm64. Preparing to unpack .../151-libaec-dev_1.1.4-2_arm64.deb ... Unpacking libaec-dev:arm64 (1.1.4-2) ... Selecting previously unselected package libsuitesparseconfig7:arm64. Preparing to unpack .../152-libsuitesparseconfig7_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libsuitesparseconfig7:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libamd3:arm64. Preparing to unpack .../153-libamd3_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libamd3:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libarpack2t64:arm64. Preparing to unpack .../154-libarpack2t64_3.9.1-6_arm64.deb ... Unpacking libarpack2t64:arm64 (3.9.1-6) ... Selecting previously unselected package libblas-dev:arm64. Preparing to unpack .../155-libblas-dev_3.12.1-7_arm64.deb ... Unpacking libblas-dev:arm64 (3.12.1-7) ... Selecting previously unselected package liblapack-dev:arm64. Preparing to unpack .../156-liblapack-dev_3.12.1-7_arm64.deb ... Unpacking liblapack-dev:arm64 (3.12.1-7) ... Selecting previously unselected package libarpack2-dev:arm64. Preparing to unpack .../157-libarpack2-dev_3.9.1-6_arm64.deb ... Unpacking libarpack2-dev:arm64 (3.9.1-6) ... Selecting previously unselected package libbasix0.9:arm64. Preparing to unpack .../158-libbasix0.9_0.9.0-2+b2_arm64.deb ... Unpacking libbasix0.9:arm64 (0.9.0-2+b2) ... Selecting previously unselected package libpkgconf3:arm64. Preparing to unpack .../159-libpkgconf3_1.8.1-4_arm64.deb ... Unpacking libpkgconf3:arm64 (1.8.1-4) ... Selecting previously unselected package pkgconf-bin. Preparing to unpack .../160-pkgconf-bin_1.8.1-4_arm64.deb ... Unpacking pkgconf-bin (1.8.1-4) ... Selecting previously unselected package pkgconf:arm64. Preparing to unpack .../161-pkgconf_1.8.1-4_arm64.deb ... Unpacking pkgconf:arm64 (1.8.1-4) ... Selecting previously unselected package pkg-config:arm64. Preparing to unpack .../162-pkg-config_1.8.1-4_arm64.deb ... Unpacking pkg-config:arm64 (1.8.1-4) ... Selecting previously unselected package libeigen3-dev. Preparing to unpack .../163-libeigen3-dev_3.4.0-5_all.deb ... Unpacking libeigen3-dev (3.4.0-5) ... Selecting previously unselected package libbasix-dev:arm64. Preparing to unpack .../164-libbasix-dev_0.9.0-2+b2_arm64.deb ... Unpacking libbasix-dev:arm64 (0.9.0-2+b2) ... Selecting previously unselected package libstdc++-14-dev:arm64. Preparing to unpack .../165-libstdc++-14-dev_14.3.0-8_arm64.deb ... Unpacking libstdc++-14-dev:arm64 (14.3.0-8) ... Selecting previously unselected package libboost1.83-dev:arm64. Preparing to unpack .../166-libboost1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-atomic1.83.0:arm64. Preparing to unpack .../167-libboost-atomic1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-atomic1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-atomic1.83-dev:arm64. Preparing to unpack .../168-libboost-atomic1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-atomic1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-chrono1.83.0t64:arm64. Preparing to unpack .../169-libboost-chrono1.83.0t64_1.83.0-4.2_arm64.deb ... Unpacking libboost-chrono1.83.0t64:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-chrono1.83-dev:arm64. Preparing to unpack .../170-libboost-chrono1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-chrono1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-chrono-dev:arm64. Preparing to unpack .../171-libboost-chrono-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-chrono-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-date-time1.83.0:arm64. Preparing to unpack .../172-libboost-date-time1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-date-time1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-serialization1.83.0:arm64. Preparing to unpack .../173-libboost-serialization1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-serialization1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-serialization1.83-dev:arm64. Preparing to unpack .../174-libboost-serialization1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-serialization1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-date-time1.83-dev:arm64. Preparing to unpack .../175-libboost-date-time1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-date-time1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-dev:arm64. Preparing to unpack .../176-libboost-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-filesystem1.83.0:arm64. Preparing to unpack .../177-libboost-filesystem1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-filesystem1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-system1.83.0:arm64. Preparing to unpack .../178-libboost-system1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-system1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-system1.83-dev:arm64. Preparing to unpack .../179-libboost-system1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-system1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-filesystem1.83-dev:arm64. Preparing to unpack .../180-libboost-filesystem1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-filesystem1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-filesystem-dev:arm64. Preparing to unpack .../181-libboost-filesystem-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-filesystem-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-regex1.83.0:arm64. Preparing to unpack .../182-libboost-regex1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-regex1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libicu-dev:arm64. Preparing to unpack .../183-libicu-dev_76.1-4_arm64.deb ... Unpacking libicu-dev:arm64 (76.1-4) ... Selecting previously unselected package libboost-regex1.83-dev:arm64. Preparing to unpack .../184-libboost-regex1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-regex1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-iostreams1.83-dev:arm64. Preparing to unpack .../185-libboost-iostreams1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-iostreams1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-iostreams-dev:arm64. Preparing to unpack .../186-libboost-iostreams-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-iostreams-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-math1.83.0:arm64. Preparing to unpack .../187-libboost-math1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-math1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-math1.83-dev:arm64. Preparing to unpack .../188-libboost-math1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-math1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-math-dev:arm64. Preparing to unpack .../189-libboost-math-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-math-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-mpi1.83.0. Preparing to unpack .../190-libboost-mpi1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-mpi1.83.0 (1.83.0-4.2) ... Selecting previously unselected package openmpi-common. Preparing to unpack .../191-openmpi-common_5.0.7-1_all.deb ... Unpacking openmpi-common (5.0.7-1) ... Selecting previously unselected package libnl-3-dev:arm64. Preparing to unpack .../192-libnl-3-dev_3.11.0-2_arm64.deb ... Unpacking libnl-3-dev:arm64 (3.11.0-2) ... Selecting previously unselected package libnl-route-3-dev:arm64. Preparing to unpack .../193-libnl-route-3-dev_3.11.0-2_arm64.deb ... Unpacking libnl-route-3-dev:arm64 (3.11.0-2) ... Selecting previously unselected package libibverbs-dev:arm64. Preparing to unpack .../194-libibverbs-dev_56.1-1_arm64.deb ... Unpacking libibverbs-dev:arm64 (56.1-1) ... Selecting previously unselected package libnuma-dev:arm64. Preparing to unpack .../195-libnuma-dev_2.0.19-1_arm64.deb ... Unpacking libnuma-dev:arm64 (2.0.19-1) ... Selecting previously unselected package libltdl7:arm64. Preparing to unpack .../196-libltdl7_2.5.4-5_arm64.deb ... Unpacking libltdl7:arm64 (2.5.4-5) ... Selecting previously unselected package libltdl-dev:arm64. Preparing to unpack .../197-libltdl-dev_2.5.4-5_arm64.deb ... Unpacking libltdl-dev:arm64 (2.5.4-5) ... Selecting previously unselected package libhwloc-dev:arm64. Preparing to unpack .../198-libhwloc-dev_2.12.2-1_arm64.deb ... Unpacking libhwloc-dev:arm64 (2.12.2-1) ... Selecting previously unselected package libevent-2.1-7t64:arm64. Preparing to unpack .../199-libevent-2.1-7t64_2.1.12-stable-10+b1_arm64.deb ... Unpacking libevent-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-extra-2.1-7t64:arm64. Preparing to unpack .../200-libevent-extra-2.1-7t64_2.1.12-stable-10+b1_arm64.deb ... Unpacking libevent-extra-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-openssl-2.1-7t64:arm64. Preparing to unpack .../201-libevent-openssl-2.1-7t64_2.1.12-stable-10+b1_arm64.deb ... Unpacking libevent-openssl-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-dev. Preparing to unpack .../202-libevent-dev_2.1.12-stable-10+b1_arm64.deb ... Unpacking libevent-dev (2.1.12-stable-10+b1) ... Selecting previously unselected package zlib1g-dev:arm64. Preparing to unpack .../203-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1+b1_arm64.deb ... Unpacking zlib1g-dev:arm64 (1:1.3.dfsg+really1.3.1-1+b1) ... Selecting previously unselected package libjs-jquery. Preparing to unpack .../204-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Selecting previously unselected package libpmix-dev:arm64. Preparing to unpack .../205-libpmix-dev_5.0.7-1_arm64.deb ... Unpacking libpmix-dev:arm64 (5.0.7-1) ... Selecting previously unselected package libjs-jquery-ui. Preparing to unpack .../206-libjs-jquery-ui_1.13.2+dfsg-1_all.deb ... Unpacking libjs-jquery-ui (1.13.2+dfsg-1) ... Selecting previously unselected package openmpi-bin. Preparing to unpack .../207-openmpi-bin_5.0.7-1_arm64.deb ... Unpacking openmpi-bin (5.0.7-1) ... Selecting previously unselected package libopenmpi-dev:arm64. Preparing to unpack .../208-libopenmpi-dev_5.0.7-1_arm64.deb ... Unpacking libopenmpi-dev:arm64 (5.0.7-1) ... Selecting previously unselected package mpi-default-dev. Preparing to unpack .../209-mpi-default-dev_1.18_arm64.deb ... Unpacking mpi-default-dev (1.18) ... Selecting previously unselected package libboost-mpi1.83-dev. Preparing to unpack .../210-libboost-mpi1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-mpi1.83-dev (1.83.0-4.2) ... Selecting previously unselected package libboost-mpi-dev. Preparing to unpack .../211-libboost-mpi-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-mpi-dev (1.83.0.2+b2) ... Selecting previously unselected package libboost-program-options1.83.0:arm64. Preparing to unpack .../212-libboost-program-options1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-program-options1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-program-options1.83-dev:arm64. Preparing to unpack .../213-libboost-program-options1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-program-options1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-program-options-dev:arm64. Preparing to unpack .../214-libboost-program-options-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-program-options-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-serialization-dev:arm64. Preparing to unpack .../215-libboost-serialization-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-serialization-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-thread1.83.0:arm64. Preparing to unpack .../216-libboost-thread1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-thread1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-thread1.83-dev:arm64. Preparing to unpack .../217-libboost-thread1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-thread1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-thread-dev:arm64. Preparing to unpack .../218-libboost-thread-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-thread-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-timer1.83.0:arm64. Preparing to unpack .../219-libboost-timer1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-timer1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-timer1.83-dev:arm64. Preparing to unpack .../220-libboost-timer1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-timer1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-timer-dev:arm64. Preparing to unpack .../221-libboost-timer-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-timer-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libbrotli-dev:arm64. Preparing to unpack .../222-libbrotli-dev_1.1.0-2+b7_arm64.deb ... Unpacking libbrotli-dev:arm64 (1.1.0-2+b7) ... Selecting previously unselected package libbtf2:arm64. Preparing to unpack .../223-libbtf2_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libbtf2:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libc6-dbg:arm64. Preparing to unpack .../224-libc6-dbg_2.41-12_arm64.deb ... Unpacking libc6-dbg:arm64 (2.41-12) ... Selecting previously unselected package libcamd3:arm64. Preparing to unpack .../225-libcamd3_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libcamd3:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libccolamd3:arm64. Preparing to unpack .../226-libccolamd3_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libccolamd3:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libcolamd3:arm64. Preparing to unpack .../227-libcolamd3_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libcolamd3:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libcholmod5:arm64. Preparing to unpack .../228-libcholmod5_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libcholmod5:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libcombblas2.0.0t64:arm64. Preparing to unpack .../229-libcombblas2.0.0t64_2.0.0-6+b2_arm64.deb ... Unpacking libcombblas2.0.0t64:arm64 (2.0.0-6+b2) ... Selecting previously unselected package libidn2-dev:arm64. Preparing to unpack .../230-libidn2-dev_2.3.8-4_arm64.deb ... Unpacking libidn2-dev:arm64 (2.3.8-4) ... Selecting previously unselected package libkrb5-dev:arm64. Preparing to unpack .../231-libkrb5-dev_1.21.3-5_arm64.deb ... Unpacking libkrb5-dev:arm64 (1.21.3-5) ... Selecting previously unselected package libldap-dev:arm64. Preparing to unpack .../232-libldap-dev_2.6.10+dfsg-1_arm64.deb ... Unpacking libldap-dev:arm64 (2.6.10+dfsg-1) ... Selecting previously unselected package libnghttp2-dev:arm64. Preparing to unpack .../233-libnghttp2-dev_1.64.0-1.1+b1_arm64.deb ... Unpacking libnghttp2-dev:arm64 (1.64.0-1.1+b1) ... Selecting previously unselected package libnghttp3-dev:arm64. Preparing to unpack .../234-libnghttp3-dev_1.11.0-1_arm64.deb ... Unpacking libnghttp3-dev:arm64 (1.11.0-1) ... Selecting previously unselected package libpsl-dev:arm64. Preparing to unpack .../235-libpsl-dev_0.21.2-1.1+b1_arm64.deb ... Unpacking libpsl-dev:arm64 (0.21.2-1.1+b1) ... Selecting previously unselected package libgmpxx4ldbl:arm64. Preparing to unpack .../236-libgmpxx4ldbl_2%3a6.3.0+dfsg-5_arm64.deb ... Unpacking libgmpxx4ldbl:arm64 (2:6.3.0+dfsg-5) ... Selecting previously unselected package libgmp-dev:arm64. Preparing to unpack .../237-libgmp-dev_2%3a6.3.0+dfsg-5_arm64.deb ... Unpacking libgmp-dev:arm64 (2:6.3.0+dfsg-5) ... Selecting previously unselected package libunbound8:arm64. Preparing to unpack .../238-libunbound8_1.23.1-1_arm64.deb ... Unpacking libunbound8:arm64 (1.23.1-1) ... Selecting previously unselected package libgnutls-dane0t64:arm64. Preparing to unpack .../239-libgnutls-dane0t64_3.8.9-3_arm64.deb ... Unpacking libgnutls-dane0t64:arm64 (3.8.9-3) ... Selecting previously unselected package libgnutls-openssl27t64:arm64. Preparing to unpack .../240-libgnutls-openssl27t64_3.8.9-3_arm64.deb ... Unpacking libgnutls-openssl27t64:arm64 (3.8.9-3) ... Selecting previously unselected package libp11-kit-dev:arm64. Preparing to unpack .../241-libp11-kit-dev_0.25.5-3_arm64.deb ... Unpacking libp11-kit-dev:arm64 (0.25.5-3) ... Selecting previously unselected package libtasn1-6-dev:arm64. Preparing to unpack .../242-libtasn1-6-dev_4.20.0-2_arm64.deb ... Unpacking libtasn1-6-dev:arm64 (4.20.0-2) ... Selecting previously unselected package nettle-dev:arm64. Preparing to unpack .../243-nettle-dev_3.10.1-1_arm64.deb ... Unpacking nettle-dev:arm64 (3.10.1-1) ... Selecting previously unselected package libgnutls28-dev:arm64. Preparing to unpack .../244-libgnutls28-dev_3.8.9-3_arm64.deb ... Unpacking libgnutls28-dev:arm64 (3.8.9-3) ... Selecting previously unselected package librtmp-dev:arm64. Preparing to unpack .../245-librtmp-dev_2.4+20151223.gitfa8646d.1-3_arm64.deb ... Unpacking librtmp-dev:arm64 (2.4+20151223.gitfa8646d.1-3) ... Selecting previously unselected package libssl-dev:arm64. Preparing to unpack .../246-libssl-dev_3.5.2-1_arm64.deb ... Unpacking libssl-dev:arm64 (3.5.2-1) ... Selecting previously unselected package libssh2-1-dev:arm64. Preparing to unpack .../247-libssh2-1-dev_1.11.1-1_arm64.deb ... Unpacking libssh2-1-dev:arm64 (1.11.1-1) ... Selecting previously unselected package libzstd-dev:arm64. Preparing to unpack .../248-libzstd-dev_1.5.7+dfsg-1.1_arm64.deb ... Unpacking libzstd-dev:arm64 (1.5.7+dfsg-1.1) ... Selecting previously unselected package libcurl4-openssl-dev:arm64. Preparing to unpack .../249-libcurl4-openssl-dev_8.15.0-1_arm64.deb ... Unpacking libcurl4-openssl-dev:arm64 (8.15.0-1) ... Selecting previously unselected package libcxsparse4:arm64. Preparing to unpack .../250-libcxsparse4_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libcxsparse4:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libfmt10:arm64. Preparing to unpack .../251-libfmt10_10.1.1+ds1-4_arm64.deb ... Unpacking libfmt10:arm64 (10.1.1+ds1-4) ... Selecting previously unselected package libfftw3-double3:arm64. Preparing to unpack .../252-libfftw3-double3_3.3.10-2+b1_arm64.deb ... Unpacking libfftw3-double3:arm64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-long3:arm64. Preparing to unpack .../253-libfftw3-long3_3.3.10-2+b1_arm64.deb ... Unpacking libfftw3-long3:arm64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-single3:arm64. Preparing to unpack .../254-libfftw3-single3_3.3.10-2+b1_arm64.deb ... Unpacking libfftw3-single3:arm64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-mpi3:arm64. Preparing to unpack .../255-libfftw3-mpi3_3.3.10-2+b1_arm64.deb ... Unpacking libfftw3-mpi3:arm64 (3.3.10-2+b1) ... Selecting previously unselected package libmetis5:arm64. Preparing to unpack .../256-libmetis5_5.1.0.dfsg-7+b2_arm64.deb ... Unpacking libmetis5:arm64 (5.1.0.dfsg-7+b2) ... Selecting previously unselected package libptscotch-7.0:arm64. Preparing to unpack .../257-libptscotch-7.0_7.0.7-1_arm64.deb ... Unpacking libptscotch-7.0:arm64 (7.0.7-1) ... Selecting previously unselected package libsuperlu-dist8:arm64. Preparing to unpack .../258-libsuperlu-dist8_8.2.1+dfsg1-5+b1_arm64.deb ... Unpacking libsuperlu-dist8:arm64 (8.2.1+dfsg1-5+b1) ... Selecting previously unselected package libhypre-2.32.0:arm64. Preparing to unpack .../259-libhypre-2.32.0_2.32.0-4_arm64.deb ... Unpacking libhypre-2.32.0:arm64 (2.32.0-4) ... Selecting previously unselected package libklu2:arm64. Preparing to unpack .../260-libklu2_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libklu2:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package mpi-default-bin. Preparing to unpack .../261-mpi-default-bin_1.18_arm64.deb ... Unpacking mpi-default-bin (1.18) ... Selecting previously unselected package libscalapack-openmpi2.2:arm64. Preparing to unpack .../262-libscalapack-openmpi2.2_2.2.2-1_arm64.deb ... Unpacking libscalapack-openmpi2.2:arm64 (2.2.2-1) ... Selecting previously unselected package libmumps-5.7:arm64. Preparing to unpack .../263-libmumps-5.7_5.7.3-3+b1_arm64.deb ... Unpacking libmumps-5.7:arm64 (5.7.3-3+b1) ... Selecting previously unselected package libspqr4:arm64. Preparing to unpack .../264-libspqr4_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libspqr4:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libsuperlu7:arm64. Preparing to unpack .../265-libsuperlu7_7.0.1+dfsg1-2_arm64.deb ... Unpacking libsuperlu7:arm64 (7.0.1+dfsg1-2) ... Selecting previously unselected package libumfpack6:arm64. Preparing to unpack .../266-libumfpack6_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libumfpack6:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libyaml-0-2:arm64. Preparing to unpack .../267-libyaml-0-2_0.2.5-2_arm64.deb ... Unpacking libyaml-0-2:arm64 (0.2.5-2) ... Selecting previously unselected package libpetsc-real3.22:arm64. Preparing to unpack .../268-libpetsc-real3.22_3.22.5+dfsg1-2+b1_arm64.deb ... Unpacking libpetsc-real3.22:arm64 (3.22.5+dfsg1-2+b1) ... Selecting previously unselected package libparpack2t64:arm64. Preparing to unpack .../269-libparpack2t64_3.9.1-6_arm64.deb ... Unpacking libparpack2t64:arm64 (3.9.1-6) ... Selecting previously unselected package libslepc-real3.22. Preparing to unpack .../270-libslepc-real3.22_3.22.2+dfsg1-1_arm64.deb ... Unpacking libslepc-real3.22 (3.22.2+dfsg1-1) ... Selecting previously unselected package libspdlog1.15:arm64. Preparing to unpack .../271-libspdlog1.15_1%3a1.15.3+ds-1_arm64.deb ... Unpacking libspdlog1.15:arm64 (1:1.15.3+ds-1) ... Selecting previously unselected package libdolfinx-real0.9:arm64. Preparing to unpack .../272-libdolfinx-real0.9_1%3a0.9.0-7_arm64.deb ... Unpacking libdolfinx-real0.9:arm64 (1:0.9.0-7) ... Selecting previously unselected package libjs-mathjax. Preparing to unpack .../273-libjs-mathjax_2.7.9+dfsg-1_all.deb ... Unpacking libjs-mathjax (2.7.9+dfsg-1) ... Selecting previously unselected package libldl3:arm64. Preparing to unpack .../274-libldl3_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libldl3:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libsuitesparse-mongoose3:arm64. Preparing to unpack .../275-libsuitesparse-mongoose3_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libsuitesparse-mongoose3:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package librbio4:arm64. Preparing to unpack .../276-librbio4_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking librbio4:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libspex3:arm64. Preparing to unpack .../277-libspex3_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libspex3:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libparu1:arm64. Preparing to unpack .../278-libparu1_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libparu1:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libsuitesparse-dev:arm64. Preparing to unpack .../279-libsuitesparse-dev_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libsuitesparse-dev:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libscotch-7.0:arm64. Preparing to unpack .../280-libscotch-7.0_7.0.7-1_arm64.deb ... Unpacking libscotch-7.0:arm64 (7.0.7-1) ... Selecting previously unselected package libscotch-dev. Preparing to unpack .../281-libscotch-dev_7.0.7-1_arm64.deb ... Unpacking libscotch-dev (7.0.7-1) ... Selecting previously unselected package libptscotch-dev. Preparing to unpack .../282-libptscotch-dev_7.0.7-1_arm64.deb ... Unpacking libptscotch-dev (7.0.7-1) ... Selecting previously unselected package libscalapack-openmpi-dev:arm64. Preparing to unpack .../283-libscalapack-openmpi-dev_2.2.2-1_arm64.deb ... Unpacking libscalapack-openmpi-dev:arm64 (2.2.2-1) ... Selecting previously unselected package libscalapack-mpi-dev:arm64. Preparing to unpack .../284-libscalapack-mpi-dev_2.2.2-1_arm64.deb ... Unpacking libscalapack-mpi-dev:arm64 (2.2.2-1) ... Selecting previously unselected package libfftw3-bin. Preparing to unpack .../285-libfftw3-bin_3.3.10-2+b1_arm64.deb ... Unpacking libfftw3-bin (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-dev:arm64. Preparing to unpack .../286-libfftw3-dev_3.3.10-2+b1_arm64.deb ... Unpacking libfftw3-dev:arm64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-mpi-dev:arm64. Preparing to unpack .../287-libfftw3-mpi-dev_3.3.10-2+b1_arm64.deb ... Unpacking libfftw3-mpi-dev:arm64 (3.3.10-2+b1) ... Selecting previously unselected package opencl-c-headers. Preparing to unpack .../288-opencl-c-headers_3.0~2025.07.22-1_all.deb ... Unpacking opencl-c-headers (3.0~2025.07.22-1) ... Selecting previously unselected package opencl-clhpp-headers. Preparing to unpack .../289-opencl-clhpp-headers_3.0~2025.07.22-1_all.deb ... Unpacking opencl-clhpp-headers (3.0~2025.07.22-1) ... Selecting previously unselected package ocl-icd-opencl-dev:arm64. Preparing to unpack .../290-ocl-icd-opencl-dev_2.3.3-1_arm64.deb ... Unpacking ocl-icd-opencl-dev:arm64 (2.3.3-1) ... Selecting previously unselected package libhdf5-openmpi-fortran-310:arm64. Preparing to unpack .../291-libhdf5-openmpi-fortran-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-openmpi-fortran-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-openmpi-hl-310:arm64. Preparing to unpack .../292-libhdf5-openmpi-hl-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-openmpi-hl-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-openmpi-hl-fortran-310:arm64. Preparing to unpack .../293-libhdf5-openmpi-hl-fortran-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-openmpi-hl-fortran-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-openmpi-cpp-310:arm64. Preparing to unpack .../294-libhdf5-openmpi-cpp-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-openmpi-cpp-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-openmpi-hl-cpp-310:arm64. Preparing to unpack .../295-libhdf5-openmpi-hl-cpp-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-openmpi-hl-cpp-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libjpeg62-turbo:arm64. Preparing to unpack .../296-libjpeg62-turbo_1%3a2.1.5-4_arm64.deb ... Unpacking libjpeg62-turbo:arm64 (1:2.1.5-4) ... Selecting previously unselected package libjpeg62-turbo-dev:arm64. Preparing to unpack .../297-libjpeg62-turbo-dev_1%3a2.1.5-4_arm64.deb ... Unpacking libjpeg62-turbo-dev:arm64 (1:2.1.5-4) ... Selecting previously unselected package libjpeg-dev:arm64. Preparing to unpack .../298-libjpeg-dev_1%3a2.1.5-4_arm64.deb ... Unpacking libjpeg-dev:arm64 (1:2.1.5-4) ... Selecting previously unselected package libhdf5-openmpi-dev. Preparing to unpack .../299-libhdf5-openmpi-dev_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-openmpi-dev (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-mpi-dev:arm64. Preparing to unpack .../300-libhdf5-mpi-dev_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-mpi-dev:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libsuperlu-dev:arm64. Preparing to unpack .../301-libsuperlu-dev_7.0.1+dfsg1-2_arm64.deb ... Unpacking libsuperlu-dev:arm64 (7.0.1+dfsg1-2) ... Selecting previously unselected package libsuperlu-dist-dev:arm64. Preparing to unpack .../302-libsuperlu-dist-dev_8.2.1+dfsg1-5+b1_arm64.deb ... Unpacking libsuperlu-dist-dev:arm64 (8.2.1+dfsg1-5+b1) ... Selecting previously unselected package xorg-sgml-doctools. Preparing to unpack .../303-xorg-sgml-doctools_1%3a1.11-1.1_all.deb ... Unpacking xorg-sgml-doctools (1:1.11-1.1) ... Selecting previously unselected package x11proto-dev. Preparing to unpack .../304-x11proto-dev_2024.1-1_all.deb ... Unpacking x11proto-dev (2024.1-1) ... Selecting previously unselected package libxau-dev:arm64. Preparing to unpack .../305-libxau-dev_1%3a1.0.11-1_arm64.deb ... Unpacking libxau-dev:arm64 (1:1.0.11-1) ... Selecting previously unselected package libxdmcp-dev:arm64. Preparing to unpack .../306-libxdmcp-dev_1%3a1.1.5-1_arm64.deb ... Unpacking libxdmcp-dev:arm64 (1:1.1.5-1) ... Selecting previously unselected package xtrans-dev. Preparing to unpack .../307-xtrans-dev_1.4.0-1_all.deb ... Unpacking xtrans-dev (1.4.0-1) ... Selecting previously unselected package libxcb1-dev:arm64. Preparing to unpack .../308-libxcb1-dev_1.17.0-2+b1_arm64.deb ... Unpacking libxcb1-dev:arm64 (1.17.0-2+b1) ... Selecting previously unselected package libx11-dev:arm64. Preparing to unpack .../309-libx11-dev_2%3a1.8.12-1_arm64.deb ... Unpacking libx11-dev:arm64 (2:1.8.12-1) ... Selecting previously unselected package libyaml-dev:arm64. Preparing to unpack .../310-libyaml-dev_0.2.5-2_arm64.deb ... Unpacking libyaml-dev:arm64 (0.2.5-2) ... Selecting previously unselected package libpetsc3.22-dev-common. Preparing to unpack .../311-libpetsc3.22-dev-common_3.22.5+dfsg1-2_all.deb ... Unpacking libpetsc3.22-dev-common (3.22.5+dfsg1-2) ... Selecting previously unselected package libhypre-dev:arm64. Preparing to unpack .../312-libhypre-dev_2.32.0-4_arm64.deb ... Unpacking libhypre-dev:arm64 (2.32.0-4) ... Selecting previously unselected package libmumps-headers-dev. Preparing to unpack .../313-libmumps-headers-dev_5.7.3-3_all.deb ... Unpacking libmumps-headers-dev (5.7.3-3) ... Selecting previously unselected package libmumps-dev:arm64. Preparing to unpack .../314-libmumps-dev_5.7.3-3+b1_arm64.deb ... Unpacking libmumps-dev:arm64 (5.7.3-3+b1) ... Selecting previously unselected package valgrind. Preparing to unpack .../315-valgrind_1%3a3.24.0-3_arm64.deb ... Unpacking valgrind (1:3.24.0-3) ... Selecting previously unselected package valgrind-mpi. Preparing to unpack .../316-valgrind-mpi_1%3a3.24.0-3_arm64.deb ... Unpacking valgrind-mpi (1:3.24.0-3) ... Selecting previously unselected package libpetsc-real3.22-dev:arm64. Preparing to unpack .../317-libpetsc-real3.22-dev_3.22.5+dfsg1-2+b1_arm64.deb ... Unpacking libpetsc-real3.22-dev:arm64 (3.22.5+dfsg1-2+b1) ... Selecting previously unselected package libparpack2-dev:arm64. Preparing to unpack .../318-libparpack2-dev_3.9.1-6_arm64.deb ... Unpacking libparpack2-dev:arm64 (3.9.1-6) ... Selecting previously unselected package libslepc-real3.22-dev. Preparing to unpack .../319-libslepc-real3.22-dev_3.22.2+dfsg1-1_arm64.deb ... Unpacking libslepc-real3.22-dev (3.22.2+dfsg1-1) ... Selecting previously unselected package libdolfinx-real-dev:arm64. Preparing to unpack .../320-libdolfinx-real-dev_1%3a0.9.0-7_arm64.deb ... Unpacking libdolfinx-real-dev:arm64 (1:0.9.0-7) ... Selecting previously unselected package libpugixml-dev:arm64. Preparing to unpack .../321-libpugixml-dev_1.14-2_arm64.deb ... Unpacking libpugixml-dev:arm64 (1.14-2) ... Selecting previously unselected package libfmt-dev:arm64. Preparing to unpack .../322-libfmt-dev_10.1.1+ds1-4_arm64.deb ... Unpacking libfmt-dev:arm64 (10.1.1+ds1-4) ... Selecting previously unselected package libspdlog-dev:arm64. Preparing to unpack .../323-libspdlog-dev_1%3a1.15.3+ds-1_arm64.deb ... Unpacking libspdlog-dev:arm64 (1:1.15.3+ds-1) ... Selecting previously unselected package liblzma-dev:arm64. Preparing to unpack .../324-liblzma-dev_5.8.1-1.1_arm64.deb ... Unpacking liblzma-dev:arm64 (5.8.1-1.1) ... Selecting previously unselected package libxml2-dev:arm64. Preparing to unpack .../325-libxml2-dev_2.14.5+dfsg-0.2_arm64.deb ... Unpacking libxml2-dev:arm64 (2.14.5+dfsg-0.2) ... Selecting previously unselected package python3-cffi-backend:arm64. Preparing to unpack .../326-python3-cffi-backend_2.0.0-1_arm64.deb ... Unpacking python3-cffi-backend:arm64 (2.0.0-1) ... Selecting previously unselected package python3-ply. Preparing to unpack .../327-python3-ply_3.11-9_all.deb ... Unpacking python3-ply (3.11-9) ... Selecting previously unselected package python3-pycparser. Preparing to unpack .../328-python3-pycparser_2.23-1_all.deb ... Unpacking python3-pycparser (2.23-1) ... Selecting previously unselected package python3-cffi. Preparing to unpack .../329-python3-cffi_2.0.0-1_all.deb ... Unpacking python3-cffi (2.0.0-1) ... Selecting previously unselected package libpython3.13:arm64. Preparing to unpack .../330-libpython3.13_3.13.7-1_arm64.deb ... Unpacking libpython3.13:arm64 (3.13.7-1) ... Selecting previously unselected package libexpat1-dev:arm64. Preparing to unpack .../331-libexpat1-dev_2.7.1-2_arm64.deb ... Unpacking libexpat1-dev:arm64 (2.7.1-2) ... Selecting previously unselected package libpython3.13-dev:arm64. Preparing to unpack .../332-libpython3.13-dev_3.13.7-1_arm64.deb ... Unpacking libpython3.13-dev:arm64 (3.13.7-1) ... Selecting previously unselected package libpython3-dev:arm64. Preparing to unpack .../333-libpython3-dev_3.13.7-1_arm64.deb ... Unpacking libpython3-dev:arm64 (3.13.7-1) ... Selecting previously unselected package python3.13-dev. Preparing to unpack .../334-python3.13-dev_3.13.7-1_arm64.deb ... Unpacking python3.13-dev (3.13.7-1) ... Selecting previously unselected package libjs-sphinxdoc. Preparing to unpack .../335-libjs-sphinxdoc_8.2.3-6_all.deb ... Unpacking libjs-sphinxdoc (8.2.3-6) ... Selecting previously unselected package python3-dev. Preparing to unpack .../336-python3-dev_3.13.7-1_arm64.deb ... Unpacking python3-dev (3.13.7-1) ... Selecting previously unselected package python3-ufl. Preparing to unpack .../337-python3-ufl_2024.2.0-3_all.deb ... Unpacking python3-ufl (2024.2.0-3) ... Selecting previously unselected package python3-basix. Preparing to unpack .../338-python3-basix_0.9.0-2+b2_arm64.deb ... Unpacking python3-basix (0.9.0-2+b2) ... Selecting previously unselected package python3-autocommand. Preparing to unpack .../339-python3-autocommand_2.2.2-3_all.deb ... Unpacking python3-autocommand (2.2.2-3) ... Selecting previously unselected package python3-more-itertools. Preparing to unpack .../340-python3-more-itertools_10.8.0-1_all.deb ... Unpacking python3-more-itertools (10.8.0-1) ... Selecting previously unselected package python3-typing-extensions. Preparing to unpack .../341-python3-typing-extensions_4.15.0-1_all.deb ... Unpacking python3-typing-extensions (4.15.0-1) ... Selecting previously unselected package python3-typeguard. Preparing to unpack .../342-python3-typeguard_4.4.4-1_all.deb ... Unpacking python3-typeguard (4.4.4-1) ... Selecting previously unselected package python3-inflect. Preparing to unpack .../343-python3-inflect_7.5.0-1_all.deb ... Unpacking python3-inflect (7.5.0-1) ... Selecting previously unselected package python3-jaraco.context. Preparing to unpack .../344-python3-jaraco.context_6.0.1-1_all.deb ... Unpacking python3-jaraco.context (6.0.1-1) ... Selecting previously unselected package python3-jaraco.functools. Preparing to unpack .../345-python3-jaraco.functools_4.1.0-1_all.deb ... Unpacking python3-jaraco.functools (4.1.0-1) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../346-python3-pkg-resources_78.1.1-0.1_all.deb ... Unpacking python3-pkg-resources (78.1.1-0.1) ... Selecting previously unselected package python3-jaraco.text. Preparing to unpack .../347-python3-jaraco.text_4.0.0-1_all.deb ... Unpacking python3-jaraco.text (4.0.0-1) ... Selecting previously unselected package python3-zipp. Preparing to unpack .../348-python3-zipp_3.23.0-1_all.deb ... Unpacking python3-zipp (3.23.0-1) ... Selecting previously unselected package python3-setuptools. Preparing to unpack .../349-python3-setuptools_78.1.1-0.1_all.deb ... Unpacking python3-setuptools (78.1.1-0.1) ... Selecting previously unselected package python3-ffcx. Preparing to unpack .../350-python3-ffcx_1%3a0.9.0-2_all.deb ... Unpacking python3-ffcx (1:0.9.0-2) ... Selecting previously unselected package libdolfinx-dev:arm64. Preparing to unpack .../351-libdolfinx-dev_1%3a0.9.0-7_arm64.deb ... Unpacking libdolfinx-dev:arm64 (1:0.9.0-7) ... Selecting previously unselected package libhdf5-hl-310:arm64. Preparing to unpack .../352-libhdf5-hl-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-hl-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libjson-perl. Preparing to unpack .../353-libjson-perl_4.10000-1_all.deb ... Unpacking libjson-perl (4.10000-1) ... Selecting previously unselected package liblzf1:arm64. Preparing to unpack .../354-liblzf1_3.6-4+b3_arm64.deb ... Unpacking liblzf1:arm64 (3.6-4+b3) ... Selecting previously unselected package libpython3-all-dev:arm64. Preparing to unpack .../355-libpython3-all-dev_3.13.7-1_arm64.deb ... Unpacking libpython3-all-dev:arm64 (3.13.7-1) ... Selecting previously unselected package robin-map-dev. Preparing to unpack .../356-robin-map-dev_1.3.0-1_all.deb ... Unpacking robin-map-dev (1.3.0-1) ... Selecting previously unselected package nanobind-dev. Preparing to unpack .../357-nanobind-dev_2.5.0-1_all.deb ... Unpacking nanobind-dev (2.5.0-1) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../358-python3-packaging_25.0-1_all.deb ... Unpacking python3-packaging (25.0-1) ... Selecting previously unselected package python3-pyproject-hooks. Preparing to unpack .../359-python3-pyproject-hooks_1.2.0-1_all.deb ... Unpacking python3-pyproject-hooks (1.2.0-1) ... Selecting previously unselected package python3-wheel. Preparing to unpack .../360-python3-wheel_0.46.1-2_all.deb ... Unpacking python3-wheel (0.46.1-2) ... Selecting previously unselected package python3-build. Preparing to unpack .../361-python3-build_1.2.2-4_all.deb ... Unpacking python3-build (1.2.2-4) ... Selecting previously unselected package python3-installer. Preparing to unpack .../362-python3-installer_0.7.0+dfsg1-3_all.deb ... Unpacking python3-installer (0.7.0+dfsg1-3) ... Selecting previously unselected package pybuild-plugin-pyproject. Preparing to unpack .../363-pybuild-plugin-pyproject_6.20250414_all.deb ... Unpacking pybuild-plugin-pyproject (6.20250414) ... Selecting previously unselected package sphinx-common. Preparing to unpack .../364-sphinx-common_8.2.3-6_all.deb ... Unpacking sphinx-common (8.2.3-6) ... Selecting previously unselected package python-petsc4py-doc. Preparing to unpack .../365-python-petsc4py-doc_3.22.4-1_all.deb ... Unpacking python-petsc4py-doc (3.22.4-1) ... Selecting previously unselected package python3-adios2-serial. Preparing to unpack .../366-python3-adios2-serial_2.10.2+dfsg1-3_arm64.deb ... Unpacking python3-adios2-serial (2.10.2+dfsg1-3) ... Selecting previously unselected package python3-adios2. Preparing to unpack .../367-python3-adios2_2.10.2+dfsg1-3_all.deb ... Unpacking python3-adios2 (2.10.2+dfsg1-3) ... Selecting previously unselected package python3-all. Preparing to unpack .../368-python3-all_3.13.7-1_arm64.deb ... Unpacking python3-all (3.13.7-1) ... Selecting previously unselected package python3-all-dev. Preparing to unpack .../369-python3-all-dev_3.13.7-1_arm64.deb ... Unpacking python3-all-dev (3.13.7-1) ... Selecting previously unselected package python3-decorator. Preparing to unpack .../370-python3-decorator_5.2.1-2_all.deb ... Unpacking python3-decorator (5.2.1-2) ... Selecting previously unselected package python3-mpi4py. Preparing to unpack .../371-python3-mpi4py_4.1.0-3_arm64.deb ... Unpacking python3-mpi4py (4.1.0-3) ... Selecting previously unselected package python3-nanobind. Preparing to unpack .../372-python3-nanobind_2.5.0-1_all.deb ... Unpacking python3-nanobind (2.5.0-1) ... Selecting previously unselected package python3-pusimp. Preparing to unpack .../373-python3-pusimp_0.1.1-1_all.deb ... Unpacking python3-pusimp (0.1.1-1) ... Selecting previously unselected package python3-scipy. Preparing to unpack .../374-python3-scipy_1.15.3-1.1_arm64.deb ... Unpacking python3-scipy (1.15.3-1.1) ... Selecting previously unselected package swig. Preparing to unpack .../375-swig_4.3.0-1_arm64.deb ... Unpacking swig (4.3.0-1) ... Selecting previously unselected package python3-petsc4py-real3.22. Preparing to unpack .../376-python3-petsc4py-real3.22_3.22.4-1_arm64.deb ... Unpacking python3-petsc4py-real3.22 (3.22.4-1) ... Selecting previously unselected package python3-petsc4py-real. Preparing to unpack .../377-python3-petsc4py-real_3.22.4-1_all.deb ... Unpacking python3-petsc4py-real (3.22.4-1) ... Selecting previously unselected package python3-petsc4py. Preparing to unpack .../378-python3-petsc4py_3.22.4-1_all.deb ... Unpacking python3-petsc4py (3.22.4-1) ... Selecting previously unselected package python3-slepc4py-real3.22. Preparing to unpack .../379-python3-slepc4py-real3.22_3.22.2-1+b1_arm64.deb ... Unpacking python3-slepc4py-real3.22 (3.22.2-1+b1) ... Selecting previously unselected package python3-slepc4py-real. Preparing to unpack .../380-python3-slepc4py-real_3.22.2-1_all.deb ... Unpacking python3-slepc4py-real (3.22.2-1) ... Selecting previously unselected package python3-slepc4py. Preparing to unpack .../381-python3-slepc4py_3.22.2-1_all.deb ... Unpacking python3-slepc4py (3.22.2-1) ... Selecting previously unselected package python3-dolfinx-real. Preparing to unpack .../382-python3-dolfinx-real_1%3a0.9.0-7_arm64.deb ... Unpacking python3-dolfinx-real (1:0.9.0-7) ... Selecting previously unselected package python3-dolfinx:arm64. Preparing to unpack .../383-python3-dolfinx_1%3a0.9.0-7_arm64.deb ... Unpacking python3-dolfinx:arm64 (1:0.9.0-7) ... Selecting previously unselected package python3-h5py-serial. Preparing to unpack .../384-python3-h5py-serial_3.13.0-1+b1_arm64.deb ... Unpacking python3-h5py-serial (3.13.0-1+b1) ... Selecting previously unselected package python3-h5py. Preparing to unpack .../385-python3-h5py_3.13.0-1_all.deb ... Unpacking python3-h5py (3.13.0-1) ... Selecting previously unselected package python3-iniconfig. Preparing to unpack .../386-python3-iniconfig_1.1.1-2_all.deb ... Unpacking python3-iniconfig (1.1.1-2) ... Selecting previously unselected package python3-nibabel. Preparing to unpack .../387-python3-nibabel_5.3.2-2_all.deb ... Unpacking python3-nibabel (5.3.2-2) ... Selecting previously unselected package python3-pathspec. Preparing to unpack .../388-python3-pathspec_0.12.1-1_all.deb ... Unpacking python3-pathspec (0.12.1-1) ... Selecting previously unselected package python3-pluggy. Preparing to unpack .../389-python3-pluggy_1.6.0-1_all.deb ... Unpacking python3-pluggy (1.6.0-1) ... Selecting previously unselected package python3-pyproject-metadata. Preparing to unpack .../390-python3-pyproject-metadata_0.9.1-2_all.deb ... Unpacking python3-pyproject-metadata (0.9.1-2) ... Selecting previously unselected package python3-pytest. Preparing to unpack .../391-python3-pytest_8.3.5-2_all.deb ... Unpacking python3-pytest (8.3.5-2) ... Selecting previously unselected package python3-scikit-build-core. Preparing to unpack .../392-python3-scikit-build-core_0.11.1-3_all.deb ... Unpacking python3-scikit-build-core (0.11.1-3) ... Setting up media-types (13.0.0) ... Setting up libpipeline1:arm64 (1.5.8-1) ... Setting up libboost-program-options1.83.0:arm64 (1.83.0-4.2) ... Setting up libnorm1t64:arm64 (1.5.9+dfsg-3.1+b2) ... Setting up libpciaccess0:arm64 (0.17-3+b3) ... Setting up libxau6:arm64 (1:1.0.11-1) ... Setting up libxdmcp6:arm64 (1:1.1.5-1) ... Setting up libkeyutils1:arm64 (1.6.3-6) ... Setting up libadios2-common-c++11-dev (2.10.2+dfsg1-3) ... Setting up libxcb1:arm64 (1.17.0-2+b1) ... Setting up fonts-mathjax (2.7.9+dfsg-1) ... Setting up libfftw3-single3:arm64 (3.3.10-2+b1) ... Setting up libsodium23:arm64 (1.0.18-1+b2) ... Setting up swig (4.3.0-1) ... Setting up libzstd-dev:arm64 (1.5.7+dfsg-1.1) ... Setting up bsdextrautils (2.41.1-3) ... Setting up libjs-mathjax (2.7.9+dfsg-1) ... Setting up libboost-date-time1.83.0:arm64 (1.83.0-4.2) ... Setting up libmagic-mgc (1:5.46-5) ... Setting up libboost-timer1.83.0:arm64 (1.83.0-4.2) ... Setting up gcc-14-base:arm64 (14.3.0-8) ... Setting up libcbor0.10:arm64 (0.10.2-2) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:arm64 (0.2.5-2) ... Setting up libxml2-16:arm64 (2.14.5+dfsg-0.2) ... Setting up libscotch-7.0:arm64 (7.0.7-1) ... Setting up libyaml-cpp0.8:arm64 (0.8.0+dfsg-7) ... Setting up libboost-regex1.83.0:arm64 (1.83.0-4.2) ... Setting up libdebhelper-perl (13.26) ... Setting up libbrotli1:arm64 (1.1.0-2+b7) ... Setting up libedit2:arm64 (3.1-20250104-1) ... Setting up libboost-system1.83.0:arm64 (1.83.0-4.2) ... Setting up libuv1t64:arm64 (1.51.0-2) ... Setting up libmagic1t64:arm64 (1:5.46-5) ... Setting up libadios2-common-core-dev:arm64 (2.10.2+dfsg1-3) ... Setting up libnghttp2-14:arm64 (1.64.0-1.1+b1) ... Setting up libibumad3:arm64 (56.1-1) ... Setting up libboost-thread1.83.0:arm64 (1.83.0-4.2) ... Setting up libfftw3-long3:arm64 (3.3.10-2+b1) ... Setting up gettext-base (0.23.1-2+b1) ... Setting up m4 (1.4.20-1) ... Setting up libevent-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Setting up libmetis5:arm64 (5.1.0.dfsg-7+b2) ... Setting up libibmad5:arm64 (56.1-1) ... Setting up libcom-err2:arm64 (1.47.2-3+b3) ... Setting up libldl3:arm64 (1:7.11.0+dfsg-2) ... Setting up file (1:5.46-5) ... Setting up libboost-filesystem1.83.0:arm64 (1.83.0-4.2) ... Setting up libaec0:arm64 (1.1.4-2) ... Setting up libpugixml1v5:arm64 (1.14-2) ... Setting up libelf1t64:arm64 (0.193-3) ... Setting up libc6-dbg:arm64 (2.41-12) ... Setting up libkrb5support0:arm64 (1.21.3-5) ... Setting up libsasl2-modules-db:arm64 (2.1.28+dfsg1-9) ... Setting up tzdata (2025b-5) ... Current default time zone: 'Etc/UTC' Local time is now: Tue Oct 20 20:13:39 UTC 2026. Universal Time is now: Tue Oct 20 20:13:39 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up libboost-atomic1.83.0:arm64 (1.83.0-4.2) ... Setting up libboost-serialization1.83.0:arm64 (1.83.0-4.2) ... Setting up libbtf2:arm64 (1:7.11.0+dfsg-2) ... Setting up libpgm-5.3-0t64:arm64 (5.3.128~dfsg-2.1+b1) ... Setting up xtrans-dev (1.4.0-1) ... Setting up autotools-dev (20240727.1) ... Setting up libz3-4:arm64 (4.13.3-1) ... Setting up libblas3:arm64 (3.12.1-7) ... update-alternatives: using /usr/lib/aarch64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/aarch64-linux-gnu/libblas.so.3 (libblas.so.3-aarch64-linux-gnu) in auto mode Setting up libunbound8:arm64 (1.23.1-1) ... Setting up libpkgconf3:arm64 (1.8.1-4) ... Setting up libgmpxx4ldbl:arm64 (2:6.3.0+dfsg-5) ... Setting up libmunge2:arm64 (0.5.16-1) ... Setting up libexpat1-dev:arm64 (2.7.1-2) ... Setting up libjpeg62-turbo:arm64 (1:2.1.5-4) ... Setting up libx11-data (2:1.8.12-1) ... Setting up libjpeg62-turbo-dev:arm64 (1:2.1.5-4) ... Setting up libboost-chrono1.83.0t64:arm64 (1.83.0-4.2) ... Setting up libjsoncpp26:arm64 (1.9.6-4) ... Setting up liblzf1:arm64 (3.6-4+b3) ... Setting up libproc2-0:arm64 (2:4.0.4-9) ... Setting up comerr-dev:arm64 (2.1-1.47.2-3+b3) ... Setting up libunistring5:arm64 (1.3-2) ... Setting up libssl-dev:arm64 (3.5.2-1) ... Setting up libpng16-16t64:arm64 (1.6.50-1) ... Setting up libhwloc15:arm64 (2.12.2-1) ... Setting up python3-numpy-dev:arm64 (1:2.2.4+ds-1.2) ... Setting up autopoint (0.23.1-2) ... Setting up pkgconf-bin (1.8.1-4) ... Setting up libk5crypto3:arm64 (1.21.3-5) ... Setting up libltdl7:arm64 (2.5.4-5) ... Setting up opencl-c-headers (3.0~2025.07.22-1) ... Setting up libfftw3-double3:arm64 (3.3.10-2+b1) ... Setting up libjs-sphinxdoc (8.2.3-6) ... Setting up libsasl2-2:arm64 (2.1.28+dfsg1-9) ... Setting up libgfortran5:arm64 (15.2.0-3) ... Setting up autoconf (2.72-3.1) ... Setting up libnghttp3-9:arm64 (1.11.0-1) ... Setting up libnghttp3-dev:arm64 (1.11.0-1) ... Setting up libmumps-headers-dev (5.7.3-3) ... Setting up liblzma-dev:arm64 (5.8.1-1.1) ... Setting up zlib1g-dev:arm64 (1:1.3.dfsg+really1.3.1-1+b1) ... Setting up robin-map-dev (1.3.0-1) ... Setting up libffi8:arm64 (3.5.2-2) ... Setting up libnuma1:arm64 (2.0.19-1) ... Setting up dwz (0.16-2) ... Setting up sensible-utils (0.0.26) ... Setting up cpp-14-aarch64-linux-gnu (14.3.0-8) ... Setting up ocl-icd-libopencl1:arm64 (2.3.3-1) ... Setting up libuchardet0:arm64 (0.0.8-2) ... Setting up procps (2:4.0.4-9) ... Setting up libjson-perl (4.10000-1) ... Setting up libnl-3-200:arm64 (3.11.0-2) ... Setting up openmpi-common (5.0.7-1) ... Setting up libtasn1-6:arm64 (4.20.0-2) ... Setting up libsuitesparseconfig7:arm64 (1:7.11.0+dfsg-2) ... Setting up libx11-6:arm64 (2:1.8.12-1) ... Setting up xorg-sgml-doctools (1:1.11-1.1) ... Setting up netbase (6.5) ... Setting up cmake-data (4.1.1+really3.31.6-1) ... Setting up librhash1:arm64 (1.4.6-1) ... Setting up libkrb5-3:arm64 (1.21.3-5) ... Setting up libevent-core-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Setting up libicu76:arm64 (76.1-4) ... Setting up libssh2-1t64:arm64 (1.11.1-1) ... Setting up libboost-math1.83.0:arm64 (1.83.0-4.2) ... Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Setting up libgcc-14-dev:arm64 (14.3.0-8) ... Setting up libfido2-1:arm64 (1.16.0-2) ... Setting up valgrind (1:3.24.0-3) ... Setting up libtasn1-6-dev:arm64 (4.20.0-2) ... Setting up libstdc++-14-dev:arm64 (14.3.0-8) ... Setting up libdrm-common (2.4.125-2) ... Setting up valgrind-mpi (1:3.24.0-3) ... Setting up libarchive13t64:arm64 (3.7.4-4+b1) ... Setting up readline-common (8.3-3) ... Setting up libldap2:arm64 (2.6.10+dfsg-1) ... Setting up libbrotli-dev:arm64 (1.1.0-2+b7) ... Setting up libfmt10:arm64 (10.1.1+ds1-4) ... Setting up libblas-dev:arm64 (3.12.1-7) ... update-alternatives: using /usr/lib/aarch64-linux-gnu/blas/libblas.so to provide /usr/lib/aarch64-linux-gnu/libblas.so (libblas.so-aarch64-linux-gnu) in auto mode Setting up libsz2:arm64 (1.1.4-2) ... Setting up automake (1:1.17-4) ... update-alternatives: using /usr/bin/automake-1.17 to provide /usr/bin/automake (automake) in auto mode Setting up libgfortran-14-dev:arm64 (14.3.0-8) ... Setting up x11proto-dev (2024.1-1) ... Setting up libfile-stripnondeterminism-perl (1.15.0-1) ... Setting up liblapack3:arm64 (3.12.1-7) ... update-alternatives: using /usr/lib/aarch64-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/aarch64-linux-gnu/liblapack.so.3 (liblapack.so.3-aarch64-linux-gnu) in auto mode Setting up libboost1.83-dev:arm64 (1.83.0-4.2) ... Setting up gettext (0.23.1-2+b1) ... Setting up libarpack2t64:arm64 (3.9.1-6) ... Setting up libgmp-dev:arm64 (2:6.3.0+dfsg-5) ... Setting up libamd3:arm64 (1:7.11.0+dfsg-2) ... Setting up libxau-dev:arm64 (1:1.0.11-1) ... Setting up libboost-chrono1.83-dev:arm64 (1.83.0-4.2) ... Setting up nettle-dev:arm64 (3.10.1-1) ... Setting up libyaml-dev:arm64 (0.2.5-2) ... Setting up libboost-math1.83-dev:arm64 (1.83.0-4.2) ... Setting up libtool (2.5.4-5) ... Setting up libcolamd3:arm64 (1:7.11.0+dfsg-2) ... Setting up libspex3:arm64 (1:7.11.0+dfsg-2) ... Setting up libboost-chrono-dev:arm64 (1.83.0.2+b2) ... Setting up libfftw3-bin (3.3.10-2+b1) ... Setting up libsuitesparse-mongoose3:arm64 (1:7.11.0+dfsg-2) ... Setting up libevent-pthreads-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Setting up libboost-math-dev:arm64 (1.83.0.2+b2) ... Setting up libevent-openssl-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Setting up libpugixml-dev:arm64 (1.14-2) ... Setting up libboost-program-options1.83-dev:arm64 (1.83.0-4.2) ... Setting up libaec-dev:arm64 (1.1.4-2) ... Setting up libcxsparse4:arm64 (1:7.11.0+dfsg-2) ... Setting up libboost-serialization1.83-dev:arm64 (1.83.0-4.2) ... Setting up libjpeg-dev:arm64 (1:2.1.5-4) ... Setting up libxext6:arm64 (2:1.3.4-1+b3) ... Setting up libidn2-0:arm64 (2.3.8-4) ... Setting up libgfortran-15-dev:arm64 (15.2.0-3) ... Setting up libcamd3:arm64 (1:7.11.0+dfsg-2) ... Setting up libsuperlu7:arm64 (7.0.1+dfsg1-2) ... Setting up pkgconf:arm64 (1.8.1-4) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up libnuma-dev:arm64 (2.0.19-1) ... Setting up libnl-route-3-200:arm64 (3.11.0-2) ... Setting up libxnvctrl0:arm64 (535.171.04-1+b2) ... Setting up dh-autoreconf (20) ... Setting up libltdl-dev:arm64 (2.5.4-5) ... Setting up libxdmcp-dev:arm64 (1:1.1.5-1) ... Setting up libxml2-dev:arm64 (2.14.5+dfsg-0.2) ... Setting up libjs-jquery-ui (1.13.2+dfsg-1) ... Setting up libboost-timer1.83-dev:arm64 (1.83.0-4.2) ... Setting up libllvm17t64:arm64 (1:17.0.6-22+b3) ... Setting up libboost-program-options-dev:arm64 (1.83.0.2+b2) ... Setting up gfortran-15-aarch64-linux-gnu (15.2.0-3) ... Setting up librbio4:arm64 (1:7.11.0+dfsg-2) ... Setting up libboost-date-time1.83-dev:arm64 (1.83.0-4.2) ... Setting up libldap-dev:arm64 (2.6.10+dfsg-1) ... Setting up sphinx-common (8.2.3-6) ... Setting up libp11-kit0:arm64 (0.25.5-3) ... Setting up opencl-clhpp-headers (3.0~2025.07.22-1) ... Setting up liblapack-dev:arm64 (3.12.1-7) ... update-alternatives: using /usr/lib/aarch64-linux-gnu/lapack/liblapack.so to provide /usr/lib/aarch64-linux-gnu/liblapack.so (liblapack.so-aarch64-linux-gnu) in auto mode Setting up libeigen3-dev (3.4.0-5) ... Setting up libgssapi-krb5-2:arm64 (1.21.3-5) ... Setting up libfmt-dev:arm64 (10.1.1+ds1-4) ... Setting up icu-devtools (76.1-4) ... Setting up pkg-config:arm64 (1.8.1-4) ... Setting up libboost-serialization-dev:arm64 (1.83.0.2+b2) ... Setting up libspdlog1.15:arm64 (1:1.15.3+ds-1) ... Setting up libssh2-1-dev:arm64 (1.11.1-1) ... Setting up libidn2-dev:arm64 (2.3.8-4) ... Setting up ocl-icd-opencl-dev:arm64 (2.3.3-1) ... Setting up libboost-atomic1.83-dev:arm64 (1.83.0-4.2) ... Setting up cpp-14 (14.3.0-8) ... Setting up libevent-extra-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Setting up libccolamd3:arm64 (1:7.11.0+dfsg-2) ... Setting up libreadline8t64:arm64 (8.3-3) ... Setting up dh-strip-nondeterminism (1.15.0-1) ... Setting up libdrm2:arm64 (2.4.125-2) ... Setting up libnl-3-dev:arm64 (3.11.0-2) ... Setting up libbasix0.9:arm64 (0.9.0-2+b2) ... Setting up groff-base (1.23.0-9) ... Setting up gfortran-aarch64-linux-gnu (4:15.2.0-1) ... Setting up libhwloc-dev:arm64 (2.12.2-1) ... Setting up libboost-dev:arm64 (1.83.0.2+b2) ... Setting up gcc-14-aarch64-linux-gnu (14.3.0-8) ... Setting up libamd-comgr2:arm64 (6.0+git20231212.4510c28+dfsg-3+b2) ... Setting up libboost-system1.83-dev:arm64 (1.83.0-4.2) ... Setting up libsuperlu-dev:arm64 (7.0.1+dfsg1-2) ... Setting up libbasix-dev:arm64 (0.9.0-2+b2) ... Setting up libpython3.13-stdlib:arm64 (3.13.7-1) ... Setting up libfftw3-dev:arm64 (3.3.10-2+b1) ... Setting up libicu-dev:arm64 (76.1-4) ... Setting up libboost-timer-dev:arm64 (1.83.0.2+b2) ... Setting up libp11-kit-dev:arm64 (0.25.5-3) ... Setting up gfortran-15 (15.2.0-3) ... Setting up libpython3-stdlib:arm64 (3.13.7-1) ... Setting up libdrm-amdgpu1:arm64 (2.4.125-2) ... Setting up libpython3.13:arm64 (3.13.7-1) ... Setting up libgnutls30t64:arm64 (3.8.9-3) ... Setting up libboost-thread1.83-dev:arm64 (1.83.0-4.2) ... Setting up libgnutls-openssl27t64:arm64 (3.8.9-3) ... Setting up libnghttp2-dev:arm64 (1.64.0-1.1+b1) ... Setting up libibverbs1:arm64 (56.1-1) ... Setting up libcholmod5:arm64 (1:7.11.0+dfsg-2) ... Setting up libarpack2-dev:arm64 (3.9.1-6) ... Setting up libxcb1-dev:arm64 (1.17.0-2+b1) ... Setting up libzmq5:arm64 (4.3.5-1+b3) ... Setting up ibverbs-providers:arm64 (56.1-1) ... Setting up libspqr4:arm64 (1:7.11.0+dfsg-2) ... Setting up python3.13 (3.13.7-1) ... Setting up openssh-client (1:10.0p1-8) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up nanobind-dev (2.5.0-1) ... Setting up libpsl5t64:arm64 (0.21.2-1.1+b1) ... Setting up libx11-dev:arm64 (2:1.8.12-1) ... Setting up python3 (3.13.7-1) ... /usr/share/petsc/3.22/lib/petsc/bin/petsc_tas_analysis.py:779: SyntaxWarning: invalid escape sequence '\l' axMeshConv.set(xlabel='Problem Size $\log N$', ylabel='Error $\log |x - x^*|$', title='Mesh Convergence') /usr/share/petsc/3.22/lib/petsc/bin/petsc_tas_analysis.py:779: SyntaxWarning: invalid escape sequence '\l' axMeshConv.set(xlabel='Problem Size $\log N$', ylabel='Error $\log |x - x^*|$', title='Mesh Convergence') /usr/share/petsc/3.22/lib/petsc/bin/petsclogformat.py:253: SyntaxWarning: invalid escape sequence '\d' print("\documentclass{article}") /usr/share/petsc/3.22/lib/petsc/bin/petsclogformat.py:256: SyntaxWarning: invalid escape sequence '\c' print("\centering") /usr/share/petsc/3.22/lib/petsc/bin/petsclogformat.py:259: SyntaxWarning: invalid escape sequence '\m' print(" & & \multicolumn{4}{c}{--------------- Percent of -------------} & \\\\") /usr/share/petsc/3.22/lib/petsc/bin/petsclogformat.py:261: SyntaxWarning: invalid escape sequence '\h' print("\hline") /usr/share/petsc/3.22/lib/petsc/bin/petsclogformat.py:321: SyntaxWarning: invalid escape sequence '\e' print("\end{tabular}") /usr/share/petsc/3.22/lib/petsc/bin/petsclogformat.py:322: SyntaxWarning: invalid escape sequence '\e' print("\end{table}") /usr/share/petsc/3.22/lib/petsc/bin/petsclogformat.py:323: SyntaxWarning: invalid escape sequence '\e' print("\end{document}") Setting up libboost-filesystem1.83-dev:arm64 (1.83.0-4.2) ... Setting up python3-zipp (3.23.0-1) ... Setting up python-petsc4py-doc (3.22.4-1) ... Setting up python3-autocommand (2.2.2-3) ... Setting up libhwloc-plugins:arm64 (2.12.2-1) ... Setting up libspdlog-dev:arm64 (1:1.15.3+ds-1) ... Setting up man-db (2.13.1-1) ... Not building database; man-db/auto-update is not 'true'. Setting up gfortran (4:15.2.0-1) ... update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f95 (f95) in auto mode update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f77 (f77) in auto mode Setting up gcc-14 (14.3.0-8) ... Setting up libpsl-dev:arm64 (0.21.2-1.1+b1) ... Setting up libnl-route-3-dev:arm64 (3.11.0-2) ... Setting up python3-decorator (5.2.1-2) ... Setting up python3-packaging (25.0-1) ... Setting up python3-pyproject-hooks (1.2.0-1) ... Setting up libgnutls-dane0t64:arm64 (3.8.9-3) ... Setting up librtmp1:arm64 (2.4+20151223.gitfa8646d.1-3) ... Setting up libklu2:arm64 (1:7.11.0+dfsg-2) ... Setting up libgssrpc4t64:arm64 (1.21.3-5) ... Setting up libpython3.13-dev:arm64 (3.13.7-1) ... Setting up libevent-dev (2.1.12-stable-10+b1) ... Setting up libboost-regex1.83-dev:arm64 (1.83.0-4.2) ... Setting up python3-typing-extensions (4.15.0-1) ... Setting up libpmix2t64:arm64 (5.0.7-1) ... Setting up python3-numpy (1:2.2.4+ds-1.2) ... Setting up python3-installer (0.7.0+dfsg1-3) ... Setting up python3-pluggy (1.6.0-1) ... Setting up libumfpack6:arm64 (1:7.11.0+dfsg-2) ... Setting up gfortran-14-aarch64-linux-gnu (14.3.0-8) ... Setting up librdmacm1t64:arm64 (56.1-1) ... Setting up gfortran-14 (14.3.0-8) ... Setting up python3-pathspec (0.12.1-1) ... Setting up python3-pusimp (0.1.1-1) ... Setting up libboost-filesystem-dev:arm64 (1.83.0.2+b2) ... Setting up libpmix-dev:arm64 (5.0.7-1) ... Setting up libhsakmt1:arm64 (6.2.4+ds-1) ... Setting up python3-cffi-backend:arm64 (2.0.0-1) ... Setting up libboost-thread-dev:arm64 (1.83.0.2+b2) ... Setting up libkadm5clnt-mit12:arm64 (1.21.3-5) ... Setting up dh-python (6.20250414) ... Setting up libgnutls28-dev:arm64 (3.8.9-3) ... Setting up python3-more-itertools (10.8.0-1) ... Setting up libfabric1:arm64 (2.1.0-1.1) ... Setting up python3-iniconfig (1.1.1-2) ... Setting up python3-nanobind (2.5.0-1) ... Setting up python3-scipy (1.15.3-1.1) ... Setting up libpython3-dev:arm64 (3.13.7-1) ... Setting up python3-jaraco.functools (4.1.0-1) ... Setting up python3-ufl (2024.2.0-3) ... Setting up python3-jaraco.context (6.0.1-1) ... Setting up libcurl4t64:arm64 (8.15.0-1) ... Setting up libkdb5-10t64:arm64 (1.21.3-5) ... Setting up python3-pyproject-metadata (0.9.1-2) ... Setting up python3.13-dev (3.13.7-1) ... Setting up libboost-iostreams1.83-dev:arm64 (1.83.0-4.2) ... Setting up python3-pytest (8.3.5-2) ... Setting up python3-ply (3.11-9) ... Setting up python3-typeguard (4.4.4-1) ... Setting up python3-all (3.13.7-1) ... Setting up debhelper (13.26) ... Setting up libboost-iostreams-dev:arm64 (1.83.0.2+b2) ... Setting up libibverbs-dev:arm64 (56.1-1) ... Setting up libparu1:arm64 (1:7.11.0+dfsg-2) ... Setting up python3-wheel (0.46.1-2) ... Setting up python3-pycparser (2.23-1) ... Setting up python3-inflect (7.5.0-1) ... Setting up libpython3-all-dev:arm64 (3.13.7-1) ... Setting up python3-jaraco.text (4.0.0-1) ... Setting up python3-nibabel (5.3.2-2) ... Setting up python3-dev (3.13.7-1) ... Setting up librtmp-dev:arm64 (2.4+20151223.gitfa8646d.1-3) ... Setting up libhdf5-310:arm64 (1.14.5+repack-3) ... Setting up libhsa-runtime64-1:arm64 (6.1.2-3) ... Setting up libkadm5srv-mit12:arm64 (1.21.3-5) ... Setting up cmake (4.1.1+really3.31.6-1) ... Setting up python3-build (1.2.2-4) ... Setting up python3-basix (0.9.0-2+b2) ... Setting up krb5-multidev:arm64 (1.21.3-5) ... Setting up python3-pkg-resources (78.1.1-0.1) ... Setting up python3-all-dev (3.13.7-1) ... Setting up libhdf5-hl-310:arm64 (1.14.5+repack-3) ... Setting up python3-setuptools (78.1.1-0.1) ... Setting up libsuitesparse-dev:arm64 (1:7.11.0+dfsg-2) ... Setting up python3-scikit-build-core (0.11.1-3) ... Setting up pybuild-plugin-pyproject (6.20250414) ... Setting up python3-cffi (2.0.0-1) ... Setting up python3-h5py-serial (3.13.0-1+b1) ... Setting up python3-ffcx (1:0.9.0-2) ... Setting up libkrb5-dev:arm64 (1.21.3-5) ... Setting up libamdhip64-5:arm64 (5.7.1-6) ... Setting up libcurl4-openssl-dev:arm64 (8.15.0-1) ... Setting up python3-h5py (3.13.0-1) ... Setting up libucx0:arm64 (1.18.1+ds-2+b1) ... Setting up libopenmpi40:arm64 (5.0.7-1) ... Setting up libptscotch-7.0:arm64 (7.0.7-1) ... Setting up libcombblas2.0.0t64:arm64 (2.0.0-6+b2) ... Setting up libfftw3-mpi3:arm64 (3.3.10-2+b1) ... Setting up libhdf5-openmpi-310:arm64 (1.14.5+repack-3) ... Setting up libhdf5-openmpi-fortran-310:arm64 (1.14.5+repack-3) ... Setting up libparpack2t64:arm64 (3.9.1-6) ... Setting up libboost-mpi1.83.0 (1.83.0-4.2) ... Setting up openmpi-bin (5.0.7-1) ... update-alternatives: using /usr/bin/mpirun.openmpi to provide /usr/bin/mpirun (mpirun) in auto mode update-alternatives: warning: skip creation of /usr/share/man/man1/mpiexec.1.gz because associated file /usr/share/man/man1/mpiexec.openmpi.1.gz (of link group mpirun) doesn't exist update-alternatives: using /usr/bin/mpicc.openmpi to provide /usr/bin/mpicc (mpi) in auto mode Setting up libhdf5-openmpi-hl-310:arm64 (1.14.5+repack-3) ... Setting up libhdf5-openmpi-hl-fortran-310:arm64 (1.14.5+repack-3) ... Setting up libhdf5-openmpi-hl-cpp-310:arm64 (1.14.5+repack-3) ... Setting up libsuperlu-dist8:arm64 (8.2.1+dfsg1-5+b1) ... Setting up libhdf5-openmpi-cpp-310:arm64 (1.14.5+repack-3) ... Setting up libfftw3-mpi-dev:arm64 (3.3.10-2+b1) ... Setting up mpi-default-bin (1.18) ... Setting up libhypre-2.32.0:arm64 (2.32.0-4) ... Setting up python3-mpi4py (4.1.0-3) ... Setting up libsuperlu-dist-dev:arm64 (8.2.1+dfsg1-5+b1) ... Setting up libopenmpi-dev:arm64 (5.0.7-1) ... update-alternatives: using /usr/lib/aarch64-linux-gnu/openmpi/include to provide /usr/include/aarch64-linux-gnu/mpi (mpi-aarch64-linux-gnu) in auto mode Setting up libhdf5-openmpi-dev (1.14.5+repack-3) ... update-alternatives: using /usr/bin/h5pcc.openmpi to provide /usr/bin/h5pcc (h5pcc) in auto mode update-alternatives: using /usr/lib/aarch64-linux-gnu/pkgconfig/hdf5-openmpi.pc to provide /usr/lib/aarch64-linux-gnu/pkgconfig/hdf5.pc (hdf5.pc) in auto mode update-alternatives: updating alternative /usr/bin/mpicc.openmpi because link group mpi has changed slave links update-alternatives: using /usr/lib/aarch64-linux-gnu/pkgconfig/hdf5-mpi.pc to provide /usr/lib/aarch64-linux-gnu/pkgconfig/hdf5.pc (hdf5.pc) in auto mode Setting up libscalapack-openmpi2.2:arm64 (2.2.2-1) ... Setting up libmumps-5.7:arm64 (5.7.3-3+b1) ... Setting up libscalapack-openmpi-dev:arm64 (2.2.2-1) ... Setting up mpi-default-dev (1.18) ... Setting up libscalapack-mpi-dev:arm64 (2.2.2-1) ... Setting up libmumps-dev:arm64 (5.7.3-3+b1) ... Setting up libscotch-dev (7.0.7-1) ... Setting up libparpack2-dev:arm64 (3.9.1-6) ... Setting up libpetsc-real3.22:arm64 (3.22.5+dfsg1-2+b1) ... update-alternatives: using /usr/lib/aarch64-linux-gnu/libpetsc_real.so.3.22.5 to provide /usr/lib/aarch64-linux-gnu/libpetsc.so.3.22 (libpetsc.so.3.22) in auto mode Setting up libhypre-dev:arm64 (2.32.0-4) ... Setting up libptscotch-dev (7.0.7-1) ... Setting up python3-petsc4py-real3.22 (3.22.4-1) ... Setting up libboost-mpi1.83-dev (1.83.0-4.2) ... Setting up libboost-mpi-dev (1.83.0.2+b2) ... Setting up libhdf5-mpi-dev:arm64 (1.14.5+repack-3) ... Setting up libpetsc3.22-dev-common (3.22.5+dfsg1-2) ... Setting up python3-petsc4py (3.22.4-1) ... Setting up libslepc-real3.22 (3.22.2+dfsg1-1) ... update-alternatives: using /usr/lib/aarch64-linux-gnu/libslepc_real.so.3.22.2 to provide /usr/lib/aarch64-linux-gnu/libslepc.so.3.22 (libslepc.so.3.22) in auto mode Setting up python3-petsc4py-real (3.22.4-1) ... Setting up libpetsc-real3.22-dev:arm64 (3.22.5+dfsg1-2+b1) ... update-alternatives: error: no alternatives for petsc update-alternatives: using /usr/lib/petscdir/petsc3.22/aarch64-linux-gnu-real to provide /usr/lib/petsc (petsc) in auto mode update-alternatives: using /usr/lib/aarch64-linux-gnu/libpetsc_real.so.3.22.5 to provide /usr/lib/aarch64-linux-gnu/libpetsc_real.so (libpetsc_real.so) in auto mode update-alternatives: using /usr/lib/petscdir/petsc3.22/aarch64-linux-gnu-real to provide /usr/lib/petscdir/3.22 (petsc3.22) in auto mode Setting up python3-slepc4py-real3.22 (3.22.2-1+b1) ... Setting up python3-slepc4py (3.22.2-1) ... Setting up libslepc-real3.22-dev (3.22.2+dfsg1-1) ... update-alternatives: error: no alternatives for slepc update-alternatives: using /usr/lib/slepcdir/slepc3.22/aarch64-linux-gnu-real to provide /usr/lib/slepc (slepc) in auto mode update-alternatives: using /usr/lib/aarch64-linux-gnu/libslepc_real.so.3.22.2 to provide /usr/lib/aarch64-linux-gnu/libslepc_real.so (libslepc_real.so) in auto mode update-alternatives: using /usr/lib/slepcdir/slepc3.22/aarch64-linux-gnu-real to provide /usr/lib/slepcdir/3.22 (slepc3.22) in auto mode Setting up python3-slepc4py-real (3.22.2-1) ... Setting up libadios2-serial-c-2.10:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-mpi-plugins:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-serial-auxiliary-2.10:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-serial-plugins:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-mpi-core-2.10:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-mpi-c++11-2.10:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-serial-core-2.10:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-mpi-c-2.10:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-mpi-auxiliary-2.10:arm64 (2.10.2+dfsg1-3) ... Setting up libdolfinx-real0.9:arm64 (1:0.9.0-7) ... Setting up python3-adios2-serial (2.10.2+dfsg1-3) ... Setting up libdolfinx-real-dev:arm64 (1:0.9.0-7) ... Setting up libadios2-mpi-auxiliary-dev:arm64 (2.10.2+dfsg1-3) ... Setting up python3-adios2 (2.10.2+dfsg1-3) ... Setting up libadios2-mpi-core-dev:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-mpi-c++11-dev:arm64 (2.10.2+dfsg1-3) ... Setting up libdolfinx-dev:arm64 (1:0.9.0-7) ... Setting up python3-dolfinx-real (1:0.9.0-7) ... Setting up python3-dolfinx:arm64 (1:0.9.0-7) ... Processing triggers for libc-bin (2.41-12) ... Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: Running cd /build/reproducible-path/scifem-0.6.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../scifem_0.6.0-2_source.changes dpkg-buildpackage: info: source package scifem dpkg-buildpackage: info: source version 0.6.0-2 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Drew Parsons dpkg-source --before-build . dpkg-buildpackage: info: host architecture arm64 dpkg-source: info: using options from scifem-0.6.0/debian/source/options: --extend-diff-ignore=^[^/]*[.]egg-info/ debian/rules clean dh clean --buildsystem=pybuild dh_auto_clean -O--buildsystem=pybuild dh_autoreconf_clean -O--buildsystem=pybuild dh_clean -O--buildsystem=pybuild debian/rules binary dh binary --buildsystem=pybuild dh_update_autotools_config -O--buildsystem=pybuild dh_autoreconf -O--buildsystem=pybuild dh_auto_configure -O--buildsystem=pybuild dh_auto_build -O--buildsystem=pybuild I: pybuild plugin_pyproject:129: Building wheel for python3.13 with "build" module I: pybuild base:311: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem * Building wheel... *** scikit-build-core 0.11.1 using CMake 3.31.6 (wheel) *** Configuring CMake... loading initial cache file /tmp/tmplvp81ojy/build/CMakeInit.txt -- The C compiler identification is GNU 15.2.0 -- The CXX compiler identification is GNU 15.2.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/aarch64-linux-gnu-gcc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/aarch64-linux-gnu-g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found Basix at /usr/lib/aarch64-linux-gnu/cmake/basix -- Found MPI_C: /usr/lib/aarch64-linux-gnu/openmpi/lib/libmpi.so (found version "3.1") -- Found MPI_CXX: /usr/lib/aarch64-linux-gnu/openmpi/lib/libmpi.so (found version "3.1") -- Found MPI: TRUE (found version "3.1") -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success -- Found Threads: TRUE -- Found Boost 1.83.0 at /usr/lib/aarch64-linux-gnu/cmake/Boost-1.83.0 -- Requested configuration: REQUIRED COMPONENTS timer -- Found boost_headers 1.83.0 at /usr/lib/aarch64-linux-gnu/cmake/boost_headers-1.83.0 -- Found boost_timer 1.83.0 at /usr/lib/aarch64-linux-gnu/cmake/boost_timer-1.83.0 -- [x] libboost_timer.so.1.83.0 -- [ ] libboost_timer.a -- Adding boost_timer dependencies: headers -- Checking for Basix hints with /usr/bin/python3.13 -- Adding /usr/lib/python3/dist-packages/basix to Basix search hints -- HDF5: Using hdf5 compiler wrapper to determine C configuration -- Found HDF5: /usr/lib/aarch64-linux-gnu/hdf5/openmpi/libhdf5.so;/usr/lib/aarch64-linux-gnu/libcrypto.so;/usr/lib/aarch64-linux-gnu/libcurl.so;/usr/lib/aarch64-linux-gnu/libsz.so;/usr/lib/aarch64-linux-gnu/libz.so;/usr/lib/aarch64-linux-gnu/libdl.a;/usr/lib/aarch64-linux-gnu/libm.so (found version "1.14.5") found components: C -- HDF5_DIR: HDF5_DIR-NOTFOUND -- HDF5_DEFINITIONS: -- HDF5_INCLUDE_DIRS: /usr/include/hdf5/openmpi -- HDF5_LIBRARIES: /usr/lib/aarch64-linux-gnu/hdf5/openmpi/libhdf5.so;/usr/lib/aarch64-linux-gnu/libcrypto.so;/usr/lib/aarch64-linux-gnu/libcurl.so;/usr/lib/aarch64-linux-gnu/libsz.so;/usr/lib/aarch64-linux-gnu/libz.so;/usr/lib/aarch64-linux-gnu/libdl.a;/usr/lib/aarch64-linux-gnu/libm.so -- HDF5_HL_LIBRARIES: -- HDF5_C_DEFINITIONS: -- HDF5_C_INCLUDE_DIR: -- HDF5_C_INCLUDE_DIRS: /usr/include/hdf5/openmpi -- HDF5_C_LIBRARY: -- HDF5_C_LIBRARIES: /usr/lib/aarch64-linux-gnu/hdf5/openmpi/libhdf5.so;/usr/lib/aarch64-linux-gnu/libcrypto.so;/usr/lib/aarch64-linux-gnu/libcurl.so;/usr/lib/aarch64-linux-gnu/libsz.so;/usr/lib/aarch64-linux-gnu/libz.so;/usr/lib/aarch64-linux-gnu/libdl.a;/usr/lib/aarch64-linux-gnu/libm.so -- HDF5_C_HL_LIBRARY: -- HDF5_C_HL_LIBRARIES: -- Defined targets (if any): -- ... hdf5::hdf5 -- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.1") -- Checking for one of the modules 'PETSc;petsc' -- Looking for PETSC_USE_COMPLEX -- Looking for PETSC_USE_COMPLEX - not found -- Checking for one of the modules 'SLEPc;slepc' -- Found ADIOS2: /usr/lib/aarch64-linux-gnu/cmake/adios2/mpi/adios2-config.cmake (found suitable version "2.10.2", minimum required is "2.8.1") found components: CXX -- Found DOLFINx at /usr/lib/aarch64-linux-gnu/cmake/dolfinx -- Found Python: /usr/bin/python3.13 (found version "3.13.7") found components: Interpreter Development.Module -- Configuring done (6.5s) -- Generating done (0.0s) -- Build files have been written to: /tmp/tmplvp81ojy/build *** Building project with Unix Makefiles... gmake[1]: Entering directory '/tmp/tmplvp81ojy/build' [ 7%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/nb_internals.cpp.o [ 14%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/nb_func.cpp.o [ 21%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/nb_type.cpp.o [ 28%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/nb_enum.cpp.o [ 35%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/nb_ndarray.cpp.o [ 42%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/nb_static_property.cpp.o [ 50%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/nb_ft.cpp.o [ 57%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/common.cpp.o [ 64%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/error.cpp.o [ 71%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/trampoline.cpp.o [ 78%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/implicit.cpp.o [ 85%] Linking CXX static library libnanobind-static.a [ 85%] Built target nanobind-static [ 92%] Building CXX object CMakeFiles/_scifem.dir/src/scifem.cpp.o [100%] Linking CXX shared module _scifem.cpython-313-aarch64-linux-gnu.so /usr/lib/aarch64-linux-gnu/libdolfinx_real.so.0.9.0: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/libpugixml.so.1.14: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/libbasix.so.0.9.0: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/libboost_timer.so.1.83.0: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/libspdlog.so.1.15.3: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/libfmt.so.10.1.0: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/hdf5/openmpi/libhdf5.so: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/libadios2_mpi_cxx11_mpi.so.2.10.2: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/libadios2_mpi_cxx11.so.2.10.2: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/openmpi/lib/libmpi.so: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/slepcdir/slepc3.22/aarch64-linux-gnu-real/lib/libslepc_real.so: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/petscdir/petsc3.22/aarch64-linux-gnu-real/lib/libpetsc_real.so: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/gcc/aarch64-linux-gnu/15/libstdc++.so: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /lib/aarch64-linux-gnu/libm.so.6: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /lib/aarch64-linux-gnu/libmvec.so.1: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /lib/aarch64-linux-gnu/libc.so.6: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /lib/ld-linux-aarch64.so.1: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. [100%] Built target _scifem gmake[1]: Leaving directory '/tmp/tmplvp81ojy/build' *** Installing project into wheel... -- Install configuration: "Release" -- Installing: /tmp/tmplvp81ojy/wheel/platlib/scifem/_scifem.cpython-313-aarch64-linux-gnu.so -- Set non-toolchain portion of runtime path of "/tmp/tmplvp81ojy/wheel/platlib/scifem/_scifem.cpython-313-aarch64-linux-gnu.so" to "" *** Making wheel... *** Created scifem-0.6.0-cp313-cp313-linux_aarch64.whl Successfully built scifem-0.6.0-cp313-cp313-linux_aarch64.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module dh_auto_test -O--buildsystem=pybuild I: pybuild base:311: cd /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build; python3.13 -m pytest tests ============================= test session starts ============================== platform linux -- Python 3.13.7, pytest-8.3.5, pluggy-1.6.0 rootdir: /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build configfile: pyproject.toml plugins: typeguard-4.4.4 collected 1473 items tests/test_assembly.py .......................xxxxssssss [ 2%] tests/test_blocked_newton_solver.py .... [ 2%] tests/test_eval.py ........ [ 3%] tests/test_mesh.py ............FFFFFFxFFFFFFFFxFFFFFF............FFFFFFF [ 6%] F [ 6%] tests/test_point_source.py .. [ 6%] tests/test_read_mri_data.py ............................................ [ 9%] ........................................................................ [ 14%] ........................................................................ [ 19%] ........................................................................ [ 24%] ........................................................................ [ 29%] ........................................................................ [ 34%] ........................................................................ [ 39%] ........................................................................ [ 44%] ........................................................................ [ 48%] ........................................................................ [ 53%] ........................................................................ [ 58%] ........................................................................ [ 63%] ........................................................................ [ 68%] ........................................................................ [ 73%] ........................................................................ [ 78%] ........................................................................ [ 83%] ............................ [ 85%] tests/test_real_functionspace.py FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 87%] FFFFFFFFFFFFFFF [ 88%] tests/test_vertex_to_dofmap.py FFFFFFFFF [ 89%] tests/test_xdmf.py ..................................................... [ 92%] ........................................................................ [ 97%] ................................ [100%] =================================== FAILURES =================================== ___________________________ test_submesh_meshtags[0] ___________________________ edim = 0 @pytest.mark.parametrize("edim", [0, 1, 2, 3]) def test_submesh_meshtags(edim): mesh = dolfinx.mesh.create_unit_cube( MPI.COMM_WORLD, 3, 4, 7, cell_type=dolfinx.cpp.mesh.CellType.tetrahedron, ghost_mode=dolfinx.cpp.mesh.GhostMode.shared_facet, ) mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Put every second owned cell in submesh num_entities_local = emap.size_local subset_entities = np.arange(0, num_entities_local, 2, dtype=np.int32) # Include ghosts entities subset_cells = scifem.mesh.reverse_mark_entities(emap, subset_entities) submesh, entity_to_parent, vertex_to_parent, _ = dolfinx.mesh.create_submesh( mesh, edim, subset_cells ) # Create meshtags on the parent mesh for i in range(edim + 1): mesh.topology.create_entities(i) parent_e_map = mesh.topology.index_map(i) num_parent_entities = parent_e_map.size_local + parent_e_map.num_ghosts values = parent_e_map.local_range[0] + np.arange(num_parent_entities, dtype=np.int32) entity_communicator = dolfinx.la.vector(parent_e_map, 1) entity_communicator.array[:] = values entity_communicator.scatter_forward() parent_tag = dolfinx.mesh.meshtags( mesh, i, np.arange(num_parent_entities, dtype=np.int32), entity_communicator.array.astype(np.int32), ) > sub_tag, sub_entity_to_parent = scifem.mesh.transfer_meshtags_to_submesh( parent_tag, submesh, vertex_to_parent, entity_to_parent ) tests/test_mesh.py:151: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40,..., 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158], dtype=int32) cell_to_parent = array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40,..., 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.766] [info] Extract basic topology: 2016->2016 [2026-10-20 08:15:19.766] [info] Build local dual graph [2026-10-20 08:15:19.766] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.766] [info] GPS pseudo-diameter:(31) 490-12 [2026-10-20 08:15:19.766] [info] Create topology (single cell type) [2026-10-20 08:15:19.766] [info] Create topology (generalised) [2026-10-20 08:15:19.766] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.766] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.766] [info] Compute ghost indices [2026-10-20 08:15:19.766] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.766] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.766] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.766] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.766] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.766] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.766] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.766] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.766] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.766] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.766] [info] Checking required entities per dimension [2026-10-20 08:15:19.766] [info] Cell type: 0 dofmap: 504x4 [2026-10-20 08:15:19.766] [info] Global index computation [2026-10-20 08:15:19.766] [info] Got 1 index_maps [2026-10-20 08:15:19.767] [info] Get global indices [2026-10-20 08:15:19.768] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.769] [info] Requesting connectivity (0, 0) - (3, 0) [2026-10-20 08:15:19.769] [info] Computing mesh connectivity 0-3 from transpose. [2026-10-20 08:15:19.770] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.770] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.770] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.770] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.770] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:19.770] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.770] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.770] [info] Compute face permutations [2026-10-20 08:15:19.770] [info] Computing permutations for face type 0 [2026-10-20 08:15:19.771] [info] Compute edge permutations [2026-10-20 08:15:19.771] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.771] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.771] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.771] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.771] [info] Requesting connectivity (0, 0) - (0, 0) ___________________________ test_submesh_meshtags[1] ___________________________ edim = 1 @pytest.mark.parametrize("edim", [0, 1, 2, 3]) def test_submesh_meshtags(edim): mesh = dolfinx.mesh.create_unit_cube( MPI.COMM_WORLD, 3, 4, 7, cell_type=dolfinx.cpp.mesh.CellType.tetrahedron, ghost_mode=dolfinx.cpp.mesh.GhostMode.shared_facet, ) mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Put every second owned cell in submesh num_entities_local = emap.size_local subset_entities = np.arange(0, num_entities_local, 2, dtype=np.int32) # Include ghosts entities subset_cells = scifem.mesh.reverse_mark_entities(emap, subset_entities) submesh, entity_to_parent, vertex_to_parent, _ = dolfinx.mesh.create_submesh( mesh, edim, subset_cells ) # Create meshtags on the parent mesh for i in range(edim + 1): mesh.topology.create_entities(i) parent_e_map = mesh.topology.index_map(i) num_parent_entities = parent_e_map.size_local + parent_e_map.num_ghosts values = parent_e_map.local_range[0] + np.arange(num_parent_entities, dtype=np.int32) entity_communicator = dolfinx.la.vector(parent_e_map, 1) entity_communicator.array[:] = values entity_communicator.scatter_forward() parent_tag = dolfinx.mesh.meshtags( mesh, i, np.arange(num_parent_entities, dtype=np.int32), entity_communicator.array.astype(np.int32), ) > sub_tag, sub_entity_to_parent = scifem.mesh.transfer_meshtags_to_submesh( parent_tag, submesh, vertex_to_parent, entity_to_parent ) tests/test_mesh.py:151: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,..., 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159], dtype=int32) cell_to_parent = array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40,..., 750, 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.786] [info] Extract basic topology: 2016->2016 [2026-10-20 08:15:19.786] [info] Build local dual graph [2026-10-20 08:15:19.786] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.786] [info] GPS pseudo-diameter:(31) 490-12 [2026-10-20 08:15:19.786] [info] Create topology (single cell type) [2026-10-20 08:15:19.786] [info] Create topology (generalised) [2026-10-20 08:15:19.786] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.786] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.787] [info] Compute ghost indices [2026-10-20 08:15:19.787] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.787] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.787] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.787] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.787] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.787] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.787] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.787] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.787] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.787] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.787] [info] Checking required entities per dimension [2026-10-20 08:15:19.787] [info] Cell type: 0 dofmap: 504x4 [2026-10-20 08:15:19.787] [info] Global index computation [2026-10-20 08:15:19.787] [info] Got 1 index_maps [2026-10-20 08:15:19.787] [info] Get global indices [2026-10-20 08:15:19.787] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.787] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.787] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.788] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.788] [info] Requesting connectivity (1, 0) - (3, 0) [2026-10-20 08:15:19.788] [info] Computing mesh connectivity 1-3 from transpose. [2026-10-20 08:15:19.788] [info] Requesting connectivity (3, 0) - (1, 0) [2026-10-20 08:15:19.788] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:19.788] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.788] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.788] [info] Compute face permutations [2026-10-20 08:15:19.788] [info] Computing permutations for face type 0 [2026-10-20 08:15:19.788] [info] Compute edge permutations [2026-10-20 08:15:19.789] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.789] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.789] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.789] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.789] [info] Requesting connectivity (0, 0) - (1, 0) [2026-10-20 08:15:19.789] [info] Computing mesh connectivity 0-1 from transpose. ___________________________ test_submesh_meshtags[2] ___________________________ edim = 2 @pytest.mark.parametrize("edim", [0, 1, 2, 3]) def test_submesh_meshtags(edim): mesh = dolfinx.mesh.create_unit_cube( MPI.COMM_WORLD, 3, 4, 7, cell_type=dolfinx.cpp.mesh.CellType.tetrahedron, ghost_mode=dolfinx.cpp.mesh.GhostMode.shared_facet, ) mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Put every second owned cell in submesh num_entities_local = emap.size_local subset_entities = np.arange(0, num_entities_local, 2, dtype=np.int32) # Include ghosts entities subset_cells = scifem.mesh.reverse_mark_entities(emap, subset_entities) submesh, entity_to_parent, vertex_to_parent, _ = dolfinx.mesh.create_submesh( mesh, edim, subset_cells ) # Create meshtags on the parent mesh for i in range(edim + 1): mesh.topology.create_entities(i) parent_e_map = mesh.topology.index_map(i) num_parent_entities = parent_e_map.size_local + parent_e_map.num_ghosts values = parent_e_map.local_range[0] + np.arange(num_parent_entities, dtype=np.int32) entity_communicator = dolfinx.la.vector(parent_e_map, 1) entity_communicator.array[:] = values entity_communicator.scatter_forward() parent_tag = dolfinx.mesh.meshtags( mesh, i, np.arange(num_parent_entities, dtype=np.int32), entity_communicator.array.astype(np.int32), ) > sub_tag, sub_entity_to_parent = scifem.mesh.transfer_meshtags_to_submesh( parent_tag, submesh, vertex_to_parent, entity_to_parent ) tests/test_mesh.py:151: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,..., 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159], dtype=int32) cell_to_parent = array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, ..., 1100, 1102, 1104, 1106, 1108, 1110, 1112, 1114, 1116, 1118, 1120, 1122, 1124, 1126, 1128], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.803] [info] Extract basic topology: 2016->2016 [2026-10-20 08:15:19.803] [info] Build local dual graph [2026-10-20 08:15:19.803] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.804] [info] GPS pseudo-diameter:(31) 490-12 [2026-10-20 08:15:19.804] [info] Create topology (single cell type) [2026-10-20 08:15:19.804] [info] Create topology (generalised) [2026-10-20 08:15:19.804] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.804] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.804] [info] Compute ghost indices [2026-10-20 08:15:19.804] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.804] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.804] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.804] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.804] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.804] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.804] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.804] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.804] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.804] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.804] [info] Checking required entities per dimension [2026-10-20 08:15:19.804] [info] Cell type: 0 dofmap: 504x4 [2026-10-20 08:15:19.804] [info] Global index computation [2026-10-20 08:15:19.804] [info] Got 1 index_maps [2026-10-20 08:15:19.804] [info] Get global indices [2026-10-20 08:15:19.805] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:19.805] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.805] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.805] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.805] [info] Requesting connectivity (2, 0) - (3, 0) [2026-10-20 08:15:19.805] [info] Computing mesh connectivity 2-3 from transpose. [2026-10-20 08:15:19.805] [info] Requesting connectivity (3, 0) - (2, 0) [2026-10-20 08:15:19.805] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.806] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.806] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.806] [info] Compute face permutations [2026-10-20 08:15:19.806] [info] Computing permutations for face type 0 [2026-10-20 08:15:19.806] [info] Compute edge permutations [2026-10-20 08:15:19.807] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.807] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.807] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.807] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.807] [info] Requesting connectivity (0, 0) - (2, 0) [2026-10-20 08:15:19.807] [info] Computing mesh connectivity 0-2 from transpose. ___________________________ test_submesh_meshtags[3] ___________________________ edim = 3 @pytest.mark.parametrize("edim", [0, 1, 2, 3]) def test_submesh_meshtags(edim): mesh = dolfinx.mesh.create_unit_cube( MPI.COMM_WORLD, 3, 4, 7, cell_type=dolfinx.cpp.mesh.CellType.tetrahedron, ghost_mode=dolfinx.cpp.mesh.GhostMode.shared_facet, ) mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Put every second owned cell in submesh num_entities_local = emap.size_local subset_entities = np.arange(0, num_entities_local, 2, dtype=np.int32) # Include ghosts entities subset_cells = scifem.mesh.reverse_mark_entities(emap, subset_entities) submesh, entity_to_parent, vertex_to_parent, _ = dolfinx.mesh.create_submesh( mesh, edim, subset_cells ) # Create meshtags on the parent mesh for i in range(edim + 1): mesh.topology.create_entities(i) parent_e_map = mesh.topology.index_map(i) num_parent_entities = parent_e_map.size_local + parent_e_map.num_ghosts values = parent_e_map.local_range[0] + np.arange(num_parent_entities, dtype=np.int32) entity_communicator = dolfinx.la.vector(parent_e_map, 1) entity_communicator.array[:] = values entity_communicator.scatter_forward() parent_tag = dolfinx.mesh.meshtags( mesh, i, np.arange(num_parent_entities, dtype=np.int32), entity_communicator.array.astype(np.int32), ) > sub_tag, sub_entity_to_parent = scifem.mesh.transfer_meshtags_to_submesh( parent_tag, submesh, vertex_to_parent, entity_to_parent ) tests/test_mesh.py:151: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...1, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159], dtype=int32) cell_to_parent = array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40,..., 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.821] [info] Extract basic topology: 2016->2016 [2026-10-20 08:15:19.821] [info] Build local dual graph [2026-10-20 08:15:19.821] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.821] [info] GPS pseudo-diameter:(31) 490-12 [2026-10-20 08:15:19.821] [info] Create topology (single cell type) [2026-10-20 08:15:19.821] [info] Create topology (generalised) [2026-10-20 08:15:19.821] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.821] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.822] [info] Compute ghost indices [2026-10-20 08:15:19.822] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.822] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.822] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.822] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.822] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.822] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.822] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.822] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.822] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.822] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.822] [info] Checking required entities per dimension [2026-10-20 08:15:19.822] [info] Cell type: 0 dofmap: 504x4 [2026-10-20 08:15:19.822] [info] Global index computation [2026-10-20 08:15:19.822] [info] Got 1 index_maps [2026-10-20 08:15:19.822] [info] Get global indices [2026-10-20 08:15:19.822] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.822] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.822] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.822] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.823] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.823] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.823] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:19.823] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.823] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.823] [info] Compute face permutations [2026-10-20 08:15:19.823] [info] Computing permutations for face type 0 [2026-10-20 08:15:19.823] [info] Compute edge permutations [2026-10-20 08:15:19.824] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.824] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.824] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.824] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.824] [info] Requesting connectivity (0, 0) - (3, 0) [2026-10-20 08:15:19.824] [info] Computing mesh connectivity 0-3 from transpose. ___________________ test_submesh_creator[GhostMode.none-1-0] ___________________ codim = 0, tdim = 1, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.838] [info] Extract basic topology: 54->54 [2026-10-20 08:15:19.838] [info] Build local dual graph [2026-10-20 08:15:19.838] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.838] [info] GPS pseudo-diameter:(27) 26-0 [2026-10-20 08:15:19.838] [info] Create topology (single cell type) [2026-10-20 08:15:19.838] [info] Create topology (generalised) [2026-10-20 08:15:19.838] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.838] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.838] [info] Compute ghost indices [2026-10-20 08:15:19.838] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.838] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.838] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.838] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.838] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.838] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.838] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.838] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.838] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.838] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.838] [info] Checking required entities per dimension [2026-10-20 08:15:19.838] [info] Cell type: 0 dofmap: 27x2 [2026-10-20 08:15:19.838] [info] Global index computation [2026-10-20 08:15:19.838] [info] Got 1 index_maps [2026-10-20 08:15:19.838] [info] Get global indices [2026-10-20 08:15:19.839] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.839] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.839] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.839] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.839] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.840] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.840] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.840] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.841] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.841] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.841] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.841] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.841] [info] Requesting connectivity (1, 0) - (1, 0) ___________________ test_submesh_creator[GhostMode.none-1-1] ___________________ codim = 1, tdim = 1, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.855] [info] Extract basic topology: 54->54 [2026-10-20 08:15:19.855] [info] Build local dual graph [2026-10-20 08:15:19.855] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.855] [info] GPS pseudo-diameter:(27) 26-0 [2026-10-20 08:15:19.855] [info] Create topology (single cell type) [2026-10-20 08:15:19.855] [info] Create topology (generalised) [2026-10-20 08:15:19.855] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.855] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.855] [info] Compute ghost indices [2026-10-20 08:15:19.855] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.855] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.855] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.855] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.855] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.855] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.855] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.855] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.855] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.855] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.855] [info] Checking required entities per dimension [2026-10-20 08:15:19.855] [info] Cell type: 0 dofmap: 27x2 [2026-10-20 08:15:19.855] [info] Global index computation [2026-10-20 08:15:19.855] [info] Got 1 index_maps [2026-10-20 08:15:19.855] [info] Get global indices [2026-10-20 08:15:19.856] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (0, 0) - (1, 0) [2026-10-20 08:15:19.856] [info] Computing mesh connectivity 0-1 from transpose. [2026-10-20 08:15:19.856] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (0, 0) - (1, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.857] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.857] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.857] [info] Requesting connectivity (0, 0) - (0, 0) ___________________ test_submesh_creator[GhostMode.none-2-0] ___________________ codim = 0, tdim = 2, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) cell_to_parent = array([ 30, 36, 42, 43, 49, 50, 56, 57, 58, 64, 65, 66, 72, 73, 74, 75, 81, 82, 83, 84, 90,..., 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.882] [info] Extract basic topology: 1080->1080 [2026-10-20 08:15:19.882] [info] Build local dual graph [2026-10-20 08:15:19.882] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.882] [info] GPS pseudo-diameter:(54) 341-18 [2026-10-20 08:15:19.882] [info] Create topology (single cell type) [2026-10-20 08:15:19.882] [info] Create topology (generalised) [2026-10-20 08:15:19.882] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.882] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.882] [info] Compute ghost indices [2026-10-20 08:15:19.882] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.882] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.882] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.882] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.882] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.882] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.882] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.882] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.882] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.882] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.882] [info] Checking required entities per dimension [2026-10-20 08:15:19.882] [info] Cell type: 0 dofmap: 360x3 [2026-10-20 08:15:19.882] [info] Global index computation [2026-10-20 08:15:19.882] [info] Got 1 index_maps [2026-10-20 08:15:19.882] [info] Get global indices [2026-10-20 08:15:19.882] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.883] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.883] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.883] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.883] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.883] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.883] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.883] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.883] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.883] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.883] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.883] [info] Compute edge permutations [2026-10-20 08:15:19.884] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.884] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.884] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.884] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.884] [info] Requesting connectivity (2, 0) - (2, 0) ___________________ test_submesh_creator[GhostMode.none-2-1] ___________________ codim = 1, tdim = 2, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) cell_to_parent = array([ 53, 54, 58, 59, 60, 73, 74, 77, 78, 79, 80, 82, 83, 96, 97, 100, 101, 102, 103, 104, 105,...9, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.899] [info] Extract basic topology: 1080->1080 [2026-10-20 08:15:19.899] [info] Build local dual graph [2026-10-20 08:15:19.899] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.899] [info] GPS pseudo-diameter:(54) 341-18 [2026-10-20 08:15:19.899] [info] Create topology (single cell type) [2026-10-20 08:15:19.899] [info] Create topology (generalised) [2026-10-20 08:15:19.899] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.900] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.900] [info] Compute ghost indices [2026-10-20 08:15:19.900] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.900] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.900] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.900] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.900] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.900] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.900] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.900] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.900] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.900] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.900] [info] Checking required entities per dimension [2026-10-20 08:15:19.900] [info] Cell type: 0 dofmap: 360x3 [2026-10-20 08:15:19.900] [info] Global index computation [2026-10-20 08:15:19.900] [info] Got 1 index_maps [2026-10-20 08:15:19.900] [info] Get global indices [2026-10-20 08:15:19.900] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.900] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.900] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.900] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.900] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.900] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.901] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.901] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.901] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.901] [info] Requesting connectivity (1, 0) - (2, 0) [2026-10-20 08:15:19.901] [info] Computing mesh connectivity 1-2 from transpose. [2026-10-20 08:15:19.901] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.901] [info] Requesting connectivity (1, 0) - (2, 0) [2026-10-20 08:15:19.901] [info] Requesting connectivity (2, 0) - (1, 0) [2026-10-20 08:15:19.901] [info] Compute edge permutations [2026-10-20 08:15:19.901] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.902] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.902] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.902] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.902] [info] Requesting connectivity (1, 0) - (1, 0) ___________________ test_submesh_creator[GhostMode.none-2-2] ___________________ codim = 2, tdim = 2, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) cell_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.917] [info] Extract basic topology: 1080->1080 [2026-10-20 08:15:19.917] [info] Build local dual graph [2026-10-20 08:15:19.917] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.917] [info] GPS pseudo-diameter:(54) 341-18 [2026-10-20 08:15:19.917] [info] Create topology (single cell type) [2026-10-20 08:15:19.917] [info] Create topology (generalised) [2026-10-20 08:15:19.918] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.918] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.918] [info] Compute ghost indices [2026-10-20 08:15:19.918] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.918] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.918] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.918] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.918] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.918] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.918] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.918] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.918] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.918] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.918] [info] Checking required entities per dimension [2026-10-20 08:15:19.918] [info] Cell type: 0 dofmap: 360x3 [2026-10-20 08:15:19.918] [info] Global index computation [2026-10-20 08:15:19.918] [info] Got 1 index_maps [2026-10-20 08:15:19.918] [info] Get global indices [2026-10-20 08:15:19.918] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.918] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.918] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.918] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.918] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.918] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.918] [info] Requesting connectivity (0, 0) - (2, 0) [2026-10-20 08:15:19.918] [info] Computing mesh connectivity 0-2 from transpose. [2026-10-20 08:15:19.919] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.919] [info] Requesting connectivity (0, 0) - (2, 0) [2026-10-20 08:15:19.919] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.919] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.919] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.919] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.919] [info] Compute edge permutations [2026-10-20 08:15:19.919] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.919] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.919] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.919] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.919] [info] Requesting connectivity (0, 0) - (0, 0) ___________________ test_submesh_creator[GhostMode.none-3-0] ___________________ codim = 0, tdim = 3, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 62, 71, 83, 84, 86, 90, 95, 96, 98, 101, 102, 105, 108, 109, 110, 111, 115, 117, 118, 119, 121,...3, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431], dtype=int32) cell_to_parent = array([ 226, 260, 267, ..., 1677, 1678, 1679], shape=(1080,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.935] [info] Extract basic topology: 6720->6720 [2026-10-20 08:15:19.935] [info] Build local dual graph [2026-10-20 08:15:19.935] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.936] [info] GPS pseudo-diameter:(47) 1642-36 [2026-10-20 08:15:19.936] [info] Create topology (single cell type) [2026-10-20 08:15:19.936] [info] Create topology (generalised) [2026-10-20 08:15:19.936] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.936] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.936] [info] Compute ghost indices [2026-10-20 08:15:19.937] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.937] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.937] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.937] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.937] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.937] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.937] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.937] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.937] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.937] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.937] [info] Checking required entities per dimension [2026-10-20 08:15:19.937] [info] Cell type: 0 dofmap: 1680x4 [2026-10-20 08:15:19.937] [info] Global index computation [2026-10-20 08:15:19.937] [info] Got 1 index_maps [2026-10-20 08:15:19.937] [info] Get global indices [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.938] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.940] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.940] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.940] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:19.941] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.941] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.941] [info] Compute face permutations [2026-10-20 08:15:19.941] [info] Computing permutations for face type 0 [2026-10-20 08:15:19.941] [info] Compute edge permutations [2026-10-20 08:15:19.943] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.943] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.943] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.943] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.943] [info] Requesting connectivity (3, 0) - (3, 0) ___________________ test_submesh_creator[GhostMode.none-3-1] ___________________ codim = 1, tdim = 3, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 62, 71, 83, 84, 86, 90, 95, 96, 98, 101, 102, 105, 108, 109, 110, 111, 115, 117, 118, 119, 121,...3, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431], dtype=int32) cell_to_parent = array([ 585, 586, 587, ..., 3619, 3620, 3621], shape=(2382,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.958] [info] Extract basic topology: 6720->6720 [2026-10-20 08:15:19.958] [info] Build local dual graph [2026-10-20 08:15:19.958] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.959] [info] GPS pseudo-diameter:(47) 1642-36 [2026-10-20 08:15:19.959] [info] Create topology (single cell type) [2026-10-20 08:15:19.959] [info] Create topology (generalised) [2026-10-20 08:15:19.959] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.959] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.960] [info] Compute ghost indices [2026-10-20 08:15:19.960] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.960] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.960] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.960] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.960] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.960] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.960] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.960] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.960] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.960] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.960] [info] Checking required entities per dimension [2026-10-20 08:15:19.960] [info] Cell type: 0 dofmap: 1680x4 [2026-10-20 08:15:19.960] [info] Global index computation [2026-10-20 08:15:19.960] [info] Got 1 index_maps [2026-10-20 08:15:19.960] [info] Get global indices [2026-10-20 08:15:19.961] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:19.962] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.962] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.962] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.962] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.962] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.962] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.962] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.962] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.962] [info] Requesting connectivity (2, 0) - (3, 0) [2026-10-20 08:15:19.962] [info] Computing mesh connectivity 2-3 from transpose. [2026-10-20 08:15:19.962] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.963] [info] Requesting connectivity (2, 0) - (3, 0) [2026-10-20 08:15:19.963] [info] Requesting connectivity (3, 0) - (2, 0) [2026-10-20 08:15:19.963] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.964] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.964] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.964] [info] Compute face permutations [2026-10-20 08:15:19.964] [info] Computing permutations for face type 0 [2026-10-20 08:15:19.965] [info] Compute edge permutations [2026-10-20 08:15:19.966] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.966] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.966] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.966] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.966] [info] Requesting connectivity (2, 0) - (2, 0) ___________________ test_submesh_creator[GhostMode.none-3-2] ___________________ codim = 2, tdim = 3, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 62, 71, 83, 84, 86, 90, 95, 96, 98, 101, 102, 105, 108, 109, 110, 111, 115, 117, 118, 119, 121,...3, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431], dtype=int32) cell_to_parent = array([ 368, 369, 370, ..., 2370, 2371, 2372], shape=(1613,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.981] [info] Extract basic topology: 6720->6720 [2026-10-20 08:15:19.981] [info] Build local dual graph [2026-10-20 08:15:19.981] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.982] [info] GPS pseudo-diameter:(47) 1642-36 [2026-10-20 08:15:19.983] [info] Create topology (single cell type) [2026-10-20 08:15:19.983] [info] Create topology (generalised) [2026-10-20 08:15:19.983] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.983] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.983] [info] Compute ghost indices [2026-10-20 08:15:19.983] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.983] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.983] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.983] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.983] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.983] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.983] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.984] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.984] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.984] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.984] [info] Checking required entities per dimension [2026-10-20 08:15:19.984] [info] Cell type: 0 dofmap: 1680x4 [2026-10-20 08:15:19.984] [info] Global index computation [2026-10-20 08:15:19.984] [info] Got 1 index_maps [2026-10-20 08:15:19.984] [info] Get global indices [2026-10-20 08:15:19.984] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.985] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.985] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.986] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (1, 0) - (3, 0) [2026-10-20 08:15:19.986] [info] Computing mesh connectivity 1-3 from transpose. [2026-10-20 08:15:19.986] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (1, 0) - (3, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (3, 0) - (1, 0) [2026-10-20 08:15:19.986] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:19.987] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.987] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.988] [info] Compute face permutations [2026-10-20 08:15:19.988] [info] Computing permutations for face type 0 [2026-10-20 08:15:19.988] [info] Compute edge permutations [2026-10-20 08:15:19.989] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.989] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.989] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.989] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.989] [info] Requesting connectivity (1, 0) - (1, 0) _______________ test_submesh_creator[GhostMode.shared_facet-1-0] _______________ codim = 0, tdim = 1, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.006] [info] Extract basic topology: 54->54 [2026-10-20 08:15:20.006] [info] Build local dual graph [2026-10-20 08:15:20.006] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.006] [info] GPS pseudo-diameter:(27) 26-0 [2026-10-20 08:15:20.006] [info] Create topology (single cell type) [2026-10-20 08:15:20.006] [info] Create topology (generalised) [2026-10-20 08:15:20.006] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.006] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.006] [info] Compute ghost indices [2026-10-20 08:15:20.006] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.006] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.006] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.006] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.006] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.006] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.006] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.006] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.006] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.006] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.006] [info] Checking required entities per dimension [2026-10-20 08:15:20.006] [info] Cell type: 0 dofmap: 27x2 [2026-10-20 08:15:20.006] [info] Global index computation [2026-10-20 08:15:20.006] [info] Got 1 index_maps [2026-10-20 08:15:20.006] [info] Get global indices [2026-10-20 08:15:20.006] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (1, 0) _______________ test_submesh_creator[GhostMode.shared_facet-1-1] _______________ codim = 1, tdim = 1, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.022] [info] Extract basic topology: 54->54 [2026-10-20 08:15:20.022] [info] Build local dual graph [2026-10-20 08:15:20.022] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.022] [info] GPS pseudo-diameter:(27) 26-0 [2026-10-20 08:15:20.022] [info] Create topology (single cell type) [2026-10-20 08:15:20.022] [info] Create topology (generalised) [2026-10-20 08:15:20.022] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.022] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.023] [info] Compute ghost indices [2026-10-20 08:15:20.023] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.023] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.023] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.023] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.023] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.023] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.023] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.023] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.023] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.023] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.023] [info] Checking required entities per dimension [2026-10-20 08:15:20.023] [info] Cell type: 0 dofmap: 27x2 [2026-10-20 08:15:20.023] [info] Global index computation [2026-10-20 08:15:20.023] [info] Got 1 index_maps [2026-10-20 08:15:20.023] [info] Get global indices [2026-10-20 08:15:20.023] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (0, 0) - (1, 0) [2026-10-20 08:15:20.023] [info] Computing mesh connectivity 0-1 from transpose. [2026-10-20 08:15:20.023] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (0, 0) - (1, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.024] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.024] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.024] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.024] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.024] [info] Requesting connectivity (0, 0) - (0, 0) _______________ test_submesh_creator[GhostMode.shared_facet-2-0] _______________ codim = 0, tdim = 2, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) cell_to_parent = array([ 30, 36, 42, 43, 49, 50, 56, 57, 58, 64, 65, 66, 72, 73, 74, 75, 81, 82, 83, 84, 90,..., 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.047] [info] Extract basic topology: 1080->1080 [2026-10-20 08:15:20.047] [info] Build local dual graph [2026-10-20 08:15:20.047] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.047] [info] GPS pseudo-diameter:(54) 341-18 [2026-10-20 08:15:20.047] [info] Create topology (single cell type) [2026-10-20 08:15:20.047] [info] Create topology (generalised) [2026-10-20 08:15:20.047] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.047] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.047] [info] Compute ghost indices [2026-10-20 08:15:20.047] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.047] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.047] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.047] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.047] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.047] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.047] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.047] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.047] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.047] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.047] [info] Checking required entities per dimension [2026-10-20 08:15:20.047] [info] Cell type: 0 dofmap: 360x3 [2026-10-20 08:15:20.047] [info] Global index computation [2026-10-20 08:15:20.047] [info] Got 1 index_maps [2026-10-20 08:15:20.047] [info] Get global indices [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:20.048] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.048] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.048] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.048] [info] Compute edge permutations [2026-10-20 08:15:20.049] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:20.049] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.049] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:20.049] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.049] [info] Requesting connectivity (2, 0) - (2, 0) _______________ test_submesh_creator[GhostMode.shared_facet-2-1] _______________ codim = 1, tdim = 2, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) cell_to_parent = array([ 53, 54, 58, 59, 60, 73, 74, 77, 78, 79, 80, 82, 83, 96, 97, 100, 101, 102, 103, 104, 105,...9, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.064] [info] Extract basic topology: 1080->1080 [2026-10-20 08:15:20.064] [info] Build local dual graph [2026-10-20 08:15:20.064] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.064] [info] GPS pseudo-diameter:(54) 341-18 [2026-10-20 08:15:20.064] [info] Create topology (single cell type) [2026-10-20 08:15:20.064] [info] Create topology (generalised) [2026-10-20 08:15:20.064] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.064] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.064] [info] Compute ghost indices [2026-10-20 08:15:20.064] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.064] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.065] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.065] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.065] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.065] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.065] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.065] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.065] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.065] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.065] [info] Checking required entities per dimension [2026-10-20 08:15:20.065] [info] Cell type: 0 dofmap: 360x3 [2026-10-20 08:15:20.065] [info] Global index computation [2026-10-20 08:15:20.065] [info] Got 1 index_maps [2026-10-20 08:15:20.065] [info] Get global indices [2026-10-20 08:15:20.065] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.065] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.065] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.065] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.065] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.065] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.065] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.065] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.065] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.065] [info] Requesting connectivity (1, 0) - (2, 0) [2026-10-20 08:15:20.065] [info] Computing mesh connectivity 1-2 from transpose. [2026-10-20 08:15:20.066] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.066] [info] Requesting connectivity (1, 0) - (2, 0) [2026-10-20 08:15:20.066] [info] Requesting connectivity (2, 0) - (1, 0) [2026-10-20 08:15:20.066] [info] Compute edge permutations [2026-10-20 08:15:20.066] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.066] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.066] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.066] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.066] [info] Requesting connectivity (1, 0) - (1, 0) _______________ test_submesh_creator[GhostMode.shared_facet-2-2] _______________ codim = 2, tdim = 2, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) cell_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.082] [info] Extract basic topology: 1080->1080 [2026-10-20 08:15:20.082] [info] Build local dual graph [2026-10-20 08:15:20.082] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.082] [info] GPS pseudo-diameter:(54) 341-18 [2026-10-20 08:15:20.082] [info] Create topology (single cell type) [2026-10-20 08:15:20.082] [info] Create topology (generalised) [2026-10-20 08:15:20.082] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.082] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.082] [info] Compute ghost indices [2026-10-20 08:15:20.082] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.082] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.082] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.082] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.082] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.082] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.082] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.082] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.082] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.082] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.082] [info] Checking required entities per dimension [2026-10-20 08:15:20.082] [info] Cell type: 0 dofmap: 360x3 [2026-10-20 08:15:20.082] [info] Global index computation [2026-10-20 08:15:20.082] [info] Got 1 index_maps [2026-10-20 08:15:20.083] [info] Get global indices [2026-10-20 08:15:20.083] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (0, 0) - (2, 0) [2026-10-20 08:15:20.083] [info] Computing mesh connectivity 0-2 from transpose. [2026-10-20 08:15:20.083] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (0, 0) - (2, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.083] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.083] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.083] [info] Compute edge permutations [2026-10-20 08:15:20.084] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.084] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.084] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.084] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.084] [info] Requesting connectivity (0, 0) - (0, 0) _______________ test_submesh_creator[GhostMode.shared_facet-3-0] _______________ codim = 0, tdim = 3, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 62, 71, 83, 84, 86, 90, 95, 96, 98, 101, 102, 105, 108, 109, 110, 111, 115, 117, 118, 119, 121,...3, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431], dtype=int32) cell_to_parent = array([ 226, 260, 267, ..., 1677, 1678, 1679], shape=(1080,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.102] [info] Extract basic topology: 6720->6720 [2026-10-20 08:15:20.102] [info] Build local dual graph [2026-10-20 08:15:20.102] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.103] [info] GPS pseudo-diameter:(47) 1642-36 [2026-10-20 08:15:20.103] [info] Create topology (single cell type) [2026-10-20 08:15:20.103] [info] Create topology (generalised) [2026-10-20 08:15:20.103] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.103] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.103] [info] Compute ghost indices [2026-10-20 08:15:20.103] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.103] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.104] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.104] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.104] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.104] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.104] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.104] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.104] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.104] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.104] [info] Checking required entities per dimension [2026-10-20 08:15:20.104] [info] Cell type: 0 dofmap: 1680x4 [2026-10-20 08:15:20.104] [info] Global index computation [2026-10-20 08:15:20.104] [info] Got 1 index_maps [2026-10-20 08:15:20.104] [info] Get global indices [2026-10-20 08:15:20.104] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.104] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.104] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.104] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.105] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.105] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.105] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.105] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.105] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.106] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.106] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.107] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.108] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.108] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.108] [info] Compute face permutations [2026-10-20 08:15:20.108] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.108] [info] Compute edge permutations [2026-10-20 08:15:20.109] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.109] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.109] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.109] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.109] [info] Requesting connectivity (3, 0) - (3, 0) _______________ test_submesh_creator[GhostMode.shared_facet-3-1] _______________ codim = 1, tdim = 3, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 62, 71, 83, 84, 86, 90, 95, 96, 98, 101, 102, 105, 108, 109, 110, 111, 115, 117, 118, 119, 121,...3, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431], dtype=int32) cell_to_parent = array([ 585, 586, 587, ..., 3619, 3620, 3621], shape=(2382,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.125] [info] Extract basic topology: 6720->6720 [2026-10-20 08:15:20.125] [info] Build local dual graph [2026-10-20 08:15:20.125] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.126] [info] GPS pseudo-diameter:(47) 1642-36 [2026-10-20 08:15:20.127] [info] Create topology (single cell type) [2026-10-20 08:15:20.127] [info] Create topology (generalised) [2026-10-20 08:15:20.127] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.127] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.127] [info] Compute ghost indices [2026-10-20 08:15:20.127] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.127] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.128] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.128] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.128] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.128] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.128] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.128] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.128] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.128] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.128] [info] Checking required entities per dimension [2026-10-20 08:15:20.128] [info] Cell type: 0 dofmap: 1680x4 [2026-10-20 08:15:20.128] [info] Global index computation [2026-10-20 08:15:20.128] [info] Got 1 index_maps [2026-10-20 08:15:20.128] [info] Get global indices [2026-10-20 08:15:20.128] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.129] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.129] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.130] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.130] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.130] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.130] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.130] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.130] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.130] [info] Requesting connectivity (2, 0) - (3, 0) [2026-10-20 08:15:20.130] [info] Computing mesh connectivity 2-3 from transpose. [2026-10-20 08:15:20.130] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.131] [info] Requesting connectivity (2, 0) - (3, 0) [2026-10-20 08:15:20.131] [info] Requesting connectivity (3, 0) - (2, 0) [2026-10-20 08:15:20.131] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.132] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.132] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.132] [info] Compute face permutations [2026-10-20 08:15:20.132] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.132] [info] Compute edge permutations [2026-10-20 08:15:20.133] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:20.134] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.134] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:20.134] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.134] [info] Requesting connectivity (2, 0) - (2, 0) _______________ test_submesh_creator[GhostMode.shared_facet-3-2] _______________ codim = 2, tdim = 3, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 62, 71, 83, 84, 86, 90, 95, 96, 98, 101, 102, 105, 108, 109, 110, 111, 115, 117, 118, 119, 121,...3, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431], dtype=int32) cell_to_parent = array([ 368, 369, 370, ..., 2370, 2371, 2372], shape=(1613,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.149] [info] Extract basic topology: 6720->6720 [2026-10-20 08:15:20.149] [info] Build local dual graph [2026-10-20 08:15:20.149] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.150] [info] GPS pseudo-diameter:(47) 1642-36 [2026-10-20 08:15:20.150] [info] Create topology (single cell type) [2026-10-20 08:15:20.150] [info] Create topology (generalised) [2026-10-20 08:15:20.150] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.151] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.151] [info] Compute ghost indices [2026-10-20 08:15:20.151] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.151] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.151] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.151] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.151] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.151] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.151] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.151] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.151] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.151] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.151] [info] Checking required entities per dimension [2026-10-20 08:15:20.151] [info] Cell type: 0 dofmap: 1680x4 [2026-10-20 08:15:20.152] [info] Global index computation [2026-10-20 08:15:20.152] [info] Got 1 index_maps [2026-10-20 08:15:20.152] [info] Get global indices [2026-10-20 08:15:20.152] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.153] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.153] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.153] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (1, 0) - (3, 0) [2026-10-20 08:15:20.154] [info] Computing mesh connectivity 1-3 from transpose. [2026-10-20 08:15:20.154] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (1, 0) - (3, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (3, 0) - (1, 0) [2026-10-20 08:15:20.154] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.155] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.155] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.156] [info] Compute face permutations [2026-10-20 08:15:20.156] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.156] [info] Compute edge permutations [2026-10-20 08:15:20.157] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.157] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.157] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.157] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.157] [info] Requesting connectivity (1, 0) - (1, 0) _ test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.none-float64] _ dtype = , ghost_mode = GhostMode.none cell_type = CellType.tetrahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, ..., 2097, 2098, 2099], shape=(2088,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.231] [info] Extract basic topology: 8400->8400 [2026-10-20 08:15:20.231] [info] Build local dual graph [2026-10-20 08:15:20.231] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.232] [info] GPS pseudo-diameter:(53) 2044-54 [2026-10-20 08:15:20.232] [info] Create topology (single cell type) [2026-10-20 08:15:20.232] [info] Create topology (generalised) [2026-10-20 08:15:20.232] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.232] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.233] [info] Compute ghost indices [2026-10-20 08:15:20.233] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.233] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.233] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.233] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.233] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.233] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.233] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.233] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.233] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.233] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.233] [info] Checking required entities per dimension [2026-10-20 08:15:20.233] [info] Cell type: 0 dofmap: 2100x4 [2026-10-20 08:15:20.234] [info] Global index computation [2026-10-20 08:15:20.234] [info] Got 1 index_maps [2026-10-20 08:15:20.234] [info] Get global indices [2026-10-20 08:15:20.234] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.234] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.234] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.234] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.235] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.235] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.235] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.236] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.236] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.237] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.238] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.238] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.238] [info] Compute face permutations [2026-10-20 08:15:20.238] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.238] [info] Compute edge permutations [2026-10-20 08:15:20.240] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.240] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.240] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.240] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.240] [info] Requesting connectivity (3, 0) - (3, 0) _ test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.none-float32] _ dtype = , ghost_mode = GhostMode.none cell_type = CellType.tetrahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, ..., 2097, 2098, 2099], shape=(2088,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.258] [info] Extract basic topology: 8400->8400 [2026-10-20 08:15:20.258] [info] Build local dual graph [2026-10-20 08:15:20.258] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.259] [info] GPS pseudo-diameter:(53) 2044-54 [2026-10-20 08:15:20.259] [info] Create topology (single cell type) [2026-10-20 08:15:20.259] [info] Create topology (generalised) [2026-10-20 08:15:20.259] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.259] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.260] [info] Compute ghost indices [2026-10-20 08:15:20.260] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.260] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.260] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.260] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.260] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.260] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.260] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.260] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.260] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.260] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.260] [info] Checking required entities per dimension [2026-10-20 08:15:20.260] [info] Cell type: 0 dofmap: 2100x4 [2026-10-20 08:15:20.260] [info] Global index computation [2026-10-20 08:15:20.260] [info] Got 1 index_maps [2026-10-20 08:15:20.260] [info] Get global indices [2026-10-20 08:15:20.261] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.261] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.261] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.261] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.262] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.262] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.262] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.263] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.263] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.263] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.265] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.265] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.265] [info] Compute face permutations [2026-10-20 08:15:20.265] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.265] [info] Compute edge permutations [2026-10-20 08:15:20.267] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.267] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.267] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.267] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.267] [info] Requesting connectivity (3, 0) - (3, 0) _ test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.shared_facet-float64] _ dtype = , ghost_mode = GhostMode.shared_facet cell_type = CellType.tetrahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, ..., 2097, 2098, 2099], shape=(2088,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.284] [info] Extract basic topology: 8400->8400 [2026-10-20 08:15:20.284] [info] Build local dual graph [2026-10-20 08:15:20.284] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.285] [info] GPS pseudo-diameter:(53) 2044-54 [2026-10-20 08:15:20.286] [info] Create topology (single cell type) [2026-10-20 08:15:20.286] [info] Create topology (generalised) [2026-10-20 08:15:20.286] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.286] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.286] [info] Compute ghost indices [2026-10-20 08:15:20.286] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.286] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.287] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.287] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.287] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.287] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.287] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.287] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.287] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.287] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.287] [info] Checking required entities per dimension [2026-10-20 08:15:20.287] [info] Cell type: 0 dofmap: 2100x4 [2026-10-20 08:15:20.287] [info] Global index computation [2026-10-20 08:15:20.287] [info] Got 1 index_maps [2026-10-20 08:15:20.287] [info] Get global indices [2026-10-20 08:15:20.287] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.288] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.288] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.288] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.288] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.288] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.288] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.290] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.290] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.290] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.292] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.292] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.292] [info] Compute face permutations [2026-10-20 08:15:20.292] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.292] [info] Compute edge permutations [2026-10-20 08:15:20.294] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.294] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.294] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.294] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.294] [info] Requesting connectivity (3, 0) - (3, 0) _ test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.shared_facet-float32] _ dtype = , ghost_mode = GhostMode.shared_facet cell_type = CellType.tetrahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, ..., 2097, 2098, 2099], shape=(2088,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.314] [info] Extract basic topology: 8400->8400 [2026-10-20 08:15:20.314] [info] Build local dual graph [2026-10-20 08:15:20.314] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.316] [info] GPS pseudo-diameter:(53) 2044-54 [2026-10-20 08:15:20.316] [info] Create topology (single cell type) [2026-10-20 08:15:20.316] [info] Create topology (generalised) [2026-10-20 08:15:20.316] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.316] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.316] [info] Compute ghost indices [2026-10-20 08:15:20.316] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.316] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.317] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.317] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.317] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.317] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.317] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.317] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.317] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.317] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.317] [info] Checking required entities per dimension [2026-10-20 08:15:20.317] [info] Cell type: 0 dofmap: 2100x4 [2026-10-20 08:15:20.317] [info] Global index computation [2026-10-20 08:15:20.317] [info] Got 1 index_maps [2026-10-20 08:15:20.317] [info] Get global indices [2026-10-20 08:15:20.318] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.318] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.318] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.318] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.319] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.319] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.319] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.320] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.320] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.320] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.322] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.322] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.322] [info] Compute face permutations [2026-10-20 08:15:20.322] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.322] [info] Compute edge permutations [2026-10-20 08:15:20.324] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.324] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.324] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.324] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.324] [info] Requesting connectivity (3, 0) - (3, 0) _ test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.none-float64] _ dtype = , ghost_mode = GhostMode.none cell_type = CellType.hexahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...30, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.342] [info] Extract basic topology: 2800->2800 [2026-10-20 08:15:20.342] [info] Build local dual graph [2026-10-20 08:15:20.342] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.342] [info] GPS pseudo-diameter:(20) 349-0 [2026-10-20 08:15:20.342] [info] Create topology (single cell type) [2026-10-20 08:15:20.342] [info] Create topology (generalised) [2026-10-20 08:15:20.342] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.342] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.343] [info] Compute ghost indices [2026-10-20 08:15:20.343] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.343] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.343] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.343] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.343] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.343] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.343] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.343] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.343] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.343] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.343] [info] Checking required entities per dimension [2026-10-20 08:15:20.343] [info] Cell type: 0 dofmap: 350x8 [2026-10-20 08:15:20.343] [info] Global index computation [2026-10-20 08:15:20.343] [info] Got 1 index_maps [2026-10-20 08:15:20.343] [info] Get global indices [2026-10-20 08:15:20.343] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.343] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.343] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.344] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.344] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.344] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.344] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.345] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.345] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.345] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.345] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.345] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.345] [info] Compute face permutations [2026-10-20 08:15:20.345] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.345] [info] Compute edge permutations [2026-10-20 08:15:20.347] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.347] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.347] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.347] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.347] [info] Requesting connectivity (3, 0) - (3, 0) _ test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.none-float32] _ dtype = , ghost_mode = GhostMode.none cell_type = CellType.hexahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...30, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.365] [info] Extract basic topology: 2800->2800 [2026-10-20 08:15:20.365] [info] Build local dual graph [2026-10-20 08:15:20.365] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.365] [info] GPS pseudo-diameter:(20) 349-0 [2026-10-20 08:15:20.365] [info] Create topology (single cell type) [2026-10-20 08:15:20.365] [info] Create topology (generalised) [2026-10-20 08:15:20.365] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.365] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.366] [info] Compute ghost indices [2026-10-20 08:15:20.366] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.366] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.366] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.366] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.366] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.366] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.366] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.366] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.366] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.366] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.366] [info] Checking required entities per dimension [2026-10-20 08:15:20.366] [info] Cell type: 0 dofmap: 350x8 [2026-10-20 08:15:20.366] [info] Global index computation [2026-10-20 08:15:20.366] [info] Got 1 index_maps [2026-10-20 08:15:20.366] [info] Get global indices [2026-10-20 08:15:20.366] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.367] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.367] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.367] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.367] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.367] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.367] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.368] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.368] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.368] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.368] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.368] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.368] [info] Compute face permutations [2026-10-20 08:15:20.368] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.368] [info] Compute edge permutations [2026-10-20 08:15:20.370] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.370] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.370] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.370] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.370] [info] Requesting connectivity (3, 0) - (3, 0) _ test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.shared_facet-float64] _ dtype = , ghost_mode = GhostMode.shared_facet cell_type = CellType.hexahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...30, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.388] [info] Extract basic topology: 2800->2800 [2026-10-20 08:15:20.388] [info] Build local dual graph [2026-10-20 08:15:20.388] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.388] [info] GPS pseudo-diameter:(20) 349-0 [2026-10-20 08:15:20.388] [info] Create topology (single cell type) [2026-10-20 08:15:20.388] [info] Create topology (generalised) [2026-10-20 08:15:20.389] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.389] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.389] [info] Compute ghost indices [2026-10-20 08:15:20.389] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.389] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.389] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.389] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.389] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.389] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.389] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.389] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.389] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.389] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.389] [info] Checking required entities per dimension [2026-10-20 08:15:20.389] [info] Cell type: 0 dofmap: 350x8 [2026-10-20 08:15:20.389] [info] Global index computation [2026-10-20 08:15:20.389] [info] Got 1 index_maps [2026-10-20 08:15:20.389] [info] Get global indices [2026-10-20 08:15:20.389] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.390] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.390] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.390] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.390] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.390] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.390] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.391] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.391] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.391] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.391] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.391] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.391] [info] Compute face permutations [2026-10-20 08:15:20.391] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.391] [info] Compute edge permutations [2026-10-20 08:15:20.393] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.393] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.393] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.393] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.393] [info] Requesting connectivity (3, 0) - (3, 0) _ test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.shared_facet-float32] _ dtype = , ghost_mode = GhostMode.shared_facet cell_type = CellType.hexahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...30, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.411] [info] Extract basic topology: 2800->2800 [2026-10-20 08:15:20.411] [info] Build local dual graph [2026-10-20 08:15:20.411] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.411] [info] GPS pseudo-diameter:(20) 349-0 [2026-10-20 08:15:20.411] [info] Create topology (single cell type) [2026-10-20 08:15:20.411] [info] Create topology (generalised) [2026-10-20 08:15:20.411] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.411] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.412] [info] Compute ghost indices [2026-10-20 08:15:20.412] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.412] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.412] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.412] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.412] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.412] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.412] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.412] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.412] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.412] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.412] [info] Checking required entities per dimension [2026-10-20 08:15:20.412] [info] Cell type: 0 dofmap: 350x8 [2026-10-20 08:15:20.412] [info] Global index computation [2026-10-20 08:15:20.412] [info] Got 1 index_maps [2026-10-20 08:15:20.412] [info] Get global indices [2026-10-20 08:15:20.412] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.412] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.413] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.413] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.413] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.413] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.413] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.414] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.414] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.414] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.414] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.414] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.414] [info] Compute face permutations [2026-10-20 08:15:20.414] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.414] [info] Compute edge permutations [2026-10-20 08:15:20.416] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.416] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.416] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.416] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.416] [info] Requesting connectivity (3, 0) - (3, 0) _______ test_real_function_space_mass[float64-CellType.triangle-1.3-0.1] _______ L = 0.1, H = 1.3, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.651] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.651] [info] Build local dual graph [2026-10-20 08:15:44.651] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.651] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.651] [info] Create topology (single cell type) [2026-10-20 08:15:44.651] [info] Create topology (generalised) [2026-10-20 08:15:44.651] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.651] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.651] [info] Compute ghost indices [2026-10-20 08:15:44.651] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.651] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.651] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.651] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.651] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.651] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.651] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.651] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.651] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.651] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.651] [info] Checking required entities per dimension [2026-10-20 08:15:44.651] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.651] [info] Global index computation [2026-10-20 08:15:44.651] [info] Got 1 index_maps [2026-10-20 08:15:44.651] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-1.3-0.2] _______ L = 0.2, H = 1.3, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.660] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.660] [info] Build local dual graph [2026-10-20 08:15:44.660] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.660] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.660] [info] Create topology (single cell type) [2026-10-20 08:15:44.660] [info] Create topology (generalised) [2026-10-20 08:15:44.660] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.660] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.661] [info] Compute ghost indices [2026-10-20 08:15:44.661] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.661] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.661] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.661] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.661] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.661] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.661] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.661] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.661] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.661] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.661] [info] Checking required entities per dimension [2026-10-20 08:15:44.661] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.661] [info] Global index computation [2026-10-20 08:15:44.661] [info] Got 1 index_maps [2026-10-20 08:15:44.661] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-1.3-0.3] _______ L = 0.3, H = 1.3, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.669] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.669] [info] Build local dual graph [2026-10-20 08:15:44.669] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.669] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.669] [info] Create topology (single cell type) [2026-10-20 08:15:44.669] [info] Create topology (generalised) [2026-10-20 08:15:44.669] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.669] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.670] [info] Compute ghost indices [2026-10-20 08:15:44.670] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.670] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.670] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.670] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.670] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.670] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.670] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.670] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.670] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.670] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.670] [info] Checking required entities per dimension [2026-10-20 08:15:44.670] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.670] [info] Global index computation [2026-10-20 08:15:44.670] [info] Got 1 index_maps [2026-10-20 08:15:44.670] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-0.8-0.1] _______ L = 0.1, H = 0.8, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.678] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.678] [info] Build local dual graph [2026-10-20 08:15:44.678] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.678] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.678] [info] Create topology (single cell type) [2026-10-20 08:15:44.678] [info] Create topology (generalised) [2026-10-20 08:15:44.678] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.678] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.678] [info] Compute ghost indices [2026-10-20 08:15:44.678] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.679] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.679] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.679] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.679] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.679] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.679] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.679] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.679] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.679] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.679] [info] Checking required entities per dimension [2026-10-20 08:15:44.679] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.679] [info] Global index computation [2026-10-20 08:15:44.679] [info] Got 1 index_maps [2026-10-20 08:15:44.679] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-0.8-0.2] _______ L = 0.2, H = 0.8, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.687] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.687] [info] Build local dual graph [2026-10-20 08:15:44.687] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.687] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.687] [info] Create topology (single cell type) [2026-10-20 08:15:44.687] [info] Create topology (generalised) [2026-10-20 08:15:44.687] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.687] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.687] [info] Compute ghost indices [2026-10-20 08:15:44.687] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.687] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.687] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.687] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.688] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.688] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.688] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.688] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.688] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.688] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.688] [info] Checking required entities per dimension [2026-10-20 08:15:44.688] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.688] [info] Global index computation [2026-10-20 08:15:44.688] [info] Got 1 index_maps [2026-10-20 08:15:44.688] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-0.8-0.3] _______ L = 0.3, H = 0.8, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.696] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.696] [info] Build local dual graph [2026-10-20 08:15:44.696] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.696] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.696] [info] Create topology (single cell type) [2026-10-20 08:15:44.696] [info] Create topology (generalised) [2026-10-20 08:15:44.696] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.696] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.696] [info] Compute ghost indices [2026-10-20 08:15:44.696] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.696] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.696] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.696] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.696] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.696] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.696] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.696] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.696] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.696] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.696] [info] Checking required entities per dimension [2026-10-20 08:15:44.696] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.696] [info] Global index computation [2026-10-20 08:15:44.696] [info] Got 1 index_maps [2026-10-20 08:15:44.696] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-0.2-0.1] _______ L = 0.1, H = 0.2, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.705] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.705] [info] Build local dual graph [2026-10-20 08:15:44.705] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.705] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.705] [info] Create topology (single cell type) [2026-10-20 08:15:44.705] [info] Create topology (generalised) [2026-10-20 08:15:44.705] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.705] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.705] [info] Compute ghost indices [2026-10-20 08:15:44.705] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.705] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.705] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.705] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.705] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.705] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.705] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.705] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.705] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.705] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.705] [info] Checking required entities per dimension [2026-10-20 08:15:44.705] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.705] [info] Global index computation [2026-10-20 08:15:44.705] [info] Got 1 index_maps [2026-10-20 08:15:44.705] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-0.2-0.2] _______ L = 0.2, H = 0.2, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.714] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.714] [info] Build local dual graph [2026-10-20 08:15:44.714] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.714] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.714] [info] Create topology (single cell type) [2026-10-20 08:15:44.714] [info] Create topology (generalised) [2026-10-20 08:15:44.714] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.714] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.714] [info] Compute ghost indices [2026-10-20 08:15:44.714] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.714] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.714] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.714] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.714] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.714] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.714] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.714] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.714] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.714] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.714] [info] Checking required entities per dimension [2026-10-20 08:15:44.714] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.714] [info] Global index computation [2026-10-20 08:15:44.714] [info] Got 1 index_maps [2026-10-20 08:15:44.714] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-0.2-0.3] _______ L = 0.3, H = 0.2, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.724] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.724] [info] Build local dual graph [2026-10-20 08:15:44.724] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.724] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.724] [info] Create topology (single cell type) [2026-10-20 08:15:44.724] [info] Create topology (generalised) [2026-10-20 08:15:44.724] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.724] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.725] [info] Compute ghost indices [2026-10-20 08:15:44.725] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.725] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.725] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.725] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.725] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.725] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.725] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.725] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.725] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.725] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.725] [info] Checking required entities per dimension [2026-10-20 08:15:44.725] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.725] [info] Global index computation [2026-10-20 08:15:44.725] [info] Got 1 index_maps [2026-10-20 08:15:44.725] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-1.3-0.1] _____ L = 0.1, H = 1.3, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.734] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.734] [info] Build local dual graph [2026-10-20 08:15:44.734] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.734] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.734] [info] Create topology (single cell type) [2026-10-20 08:15:44.734] [info] Create topology (generalised) [2026-10-20 08:15:44.734] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.734] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.734] [info] Compute ghost indices [2026-10-20 08:15:44.734] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.734] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.734] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.734] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.734] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.734] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.734] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.734] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.734] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.734] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.734] [info] Checking required entities per dimension [2026-10-20 08:15:44.734] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.734] [info] Global index computation [2026-10-20 08:15:44.734] [info] Got 1 index_maps [2026-10-20 08:15:44.734] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-1.3-0.2] _____ L = 0.2, H = 1.3, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.743] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.743] [info] Build local dual graph [2026-10-20 08:15:44.743] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.743] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.743] [info] Create topology (single cell type) [2026-10-20 08:15:44.743] [info] Create topology (generalised) [2026-10-20 08:15:44.743] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.743] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.743] [info] Compute ghost indices [2026-10-20 08:15:44.743] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.743] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.743] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.743] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.743] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.743] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.743] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.743] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.743] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.743] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.743] [info] Checking required entities per dimension [2026-10-20 08:15:44.743] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.743] [info] Global index computation [2026-10-20 08:15:44.743] [info] Got 1 index_maps [2026-10-20 08:15:44.743] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-1.3-0.3] _____ L = 0.3, H = 1.3, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.752] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.752] [info] Build local dual graph [2026-10-20 08:15:44.752] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.752] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.752] [info] Create topology (single cell type) [2026-10-20 08:15:44.752] [info] Create topology (generalised) [2026-10-20 08:15:44.752] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.752] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.752] [info] Compute ghost indices [2026-10-20 08:15:44.752] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.752] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.753] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.753] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.753] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.753] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.753] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.753] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.753] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.753] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.753] [info] Checking required entities per dimension [2026-10-20 08:15:44.753] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.753] [info] Global index computation [2026-10-20 08:15:44.753] [info] Got 1 index_maps [2026-10-20 08:15:44.753] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-0.8-0.1] _____ L = 0.1, H = 0.8, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.761] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.761] [info] Build local dual graph [2026-10-20 08:15:44.761] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.761] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.762] [info] Create topology (single cell type) [2026-10-20 08:15:44.762] [info] Create topology (generalised) [2026-10-20 08:15:44.762] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.762] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.762] [info] Compute ghost indices [2026-10-20 08:15:44.762] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.762] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.762] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.762] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.762] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.762] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.762] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.762] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.762] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.762] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.762] [info] Checking required entities per dimension [2026-10-20 08:15:44.762] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.762] [info] Global index computation [2026-10-20 08:15:44.762] [info] Got 1 index_maps [2026-10-20 08:15:44.762] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-0.8-0.2] _____ L = 0.2, H = 0.8, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.771] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.771] [info] Build local dual graph [2026-10-20 08:15:44.771] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.771] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.771] [info] Create topology (single cell type) [2026-10-20 08:15:44.771] [info] Create topology (generalised) [2026-10-20 08:15:44.771] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.771] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.771] [info] Compute ghost indices [2026-10-20 08:15:44.771] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.771] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.771] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.771] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.771] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.771] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.771] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.771] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.771] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.771] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.771] [info] Checking required entities per dimension [2026-10-20 08:15:44.771] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.771] [info] Global index computation [2026-10-20 08:15:44.771] [info] Got 1 index_maps [2026-10-20 08:15:44.771] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-0.8-0.3] _____ L = 0.3, H = 0.8, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.780] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.780] [info] Build local dual graph [2026-10-20 08:15:44.780] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.780] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.780] [info] Create topology (single cell type) [2026-10-20 08:15:44.780] [info] Create topology (generalised) [2026-10-20 08:15:44.780] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.780] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.780] [info] Compute ghost indices [2026-10-20 08:15:44.780] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.780] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.780] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.780] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.780] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.780] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.780] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.780] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.780] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.780] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.780] [info] Checking required entities per dimension [2026-10-20 08:15:44.780] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.780] [info] Global index computation [2026-10-20 08:15:44.780] [info] Got 1 index_maps [2026-10-20 08:15:44.780] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-0.2-0.1] _____ L = 0.1, H = 0.2, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.789] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.789] [info] Build local dual graph [2026-10-20 08:15:44.789] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.789] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.789] [info] Create topology (single cell type) [2026-10-20 08:15:44.789] [info] Create topology (generalised) [2026-10-20 08:15:44.789] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.789] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.789] [info] Compute ghost indices [2026-10-20 08:15:44.789] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.789] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.789] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.789] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.789] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.789] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.789] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.789] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.789] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.789] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.789] [info] Checking required entities per dimension [2026-10-20 08:15:44.789] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.789] [info] Global index computation [2026-10-20 08:15:44.789] [info] Got 1 index_maps [2026-10-20 08:15:44.789] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-0.2-0.2] _____ L = 0.2, H = 0.2, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.798] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.798] [info] Build local dual graph [2026-10-20 08:15:44.798] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.798] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.798] [info] Create topology (single cell type) [2026-10-20 08:15:44.798] [info] Create topology (generalised) [2026-10-20 08:15:44.798] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.798] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.798] [info] Compute ghost indices [2026-10-20 08:15:44.798] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.798] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.798] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.798] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.798] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.798] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.798] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.798] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.798] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.798] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.798] [info] Checking required entities per dimension [2026-10-20 08:15:44.798] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.798] [info] Global index computation [2026-10-20 08:15:44.798] [info] Got 1 index_maps [2026-10-20 08:15:44.798] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-0.2-0.3] _____ L = 0.3, H = 0.2, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.807] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.807] [info] Build local dual graph [2026-10-20 08:15:44.807] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.807] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.807] [info] Create topology (single cell type) [2026-10-20 08:15:44.807] [info] Create topology (generalised) [2026-10-20 08:15:44.807] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.807] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.807] [info] Compute ghost indices [2026-10-20 08:15:44.807] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.807] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.807] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.807] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.807] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.807] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.807] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.807] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.808] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.808] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.808] [info] Checking required entities per dimension [2026-10-20 08:15:44.808] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.808] [info] Global index computation [2026-10-20 08:15:44.808] [info] Got 1 index_maps [2026-10-20 08:15:44.808] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-1.3-0.1] _______ L = 0.1, H = 1.3, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.816] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.816] [info] Build local dual graph [2026-10-20 08:15:44.816] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.816] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.816] [info] Create topology (single cell type) [2026-10-20 08:15:44.816] [info] Create topology (generalised) [2026-10-20 08:15:44.816] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.816] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.816] [info] Compute ghost indices [2026-10-20 08:15:44.816] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.816] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.817] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.817] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.817] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.817] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.817] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.817] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.817] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.817] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.817] [info] Checking required entities per dimension [2026-10-20 08:15:44.817] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.817] [info] Global index computation [2026-10-20 08:15:44.817] [info] Got 1 index_maps [2026-10-20 08:15:44.817] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-1.3-0.2] _______ L = 0.2, H = 1.3, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.826] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.826] [info] Build local dual graph [2026-10-20 08:15:44.826] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.826] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.826] [info] Create topology (single cell type) [2026-10-20 08:15:44.826] [info] Create topology (generalised) [2026-10-20 08:15:44.826] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.826] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.826] [info] Compute ghost indices [2026-10-20 08:15:44.826] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.826] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.826] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.826] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.826] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.826] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.826] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.826] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.826] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.826] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.826] [info] Checking required entities per dimension [2026-10-20 08:15:44.826] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.826] [info] Global index computation [2026-10-20 08:15:44.826] [info] Got 1 index_maps [2026-10-20 08:15:44.826] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-1.3-0.3] _______ L = 0.3, H = 1.3, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.837] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.837] [info] Build local dual graph [2026-10-20 08:15:44.837] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.837] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.837] [info] Create topology (single cell type) [2026-10-20 08:15:44.837] [info] Create topology (generalised) [2026-10-20 08:15:44.837] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.837] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.837] [info] Compute ghost indices [2026-10-20 08:15:44.837] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.837] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.837] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.837] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.837] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.837] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.837] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.837] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.837] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.837] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.837] [info] Checking required entities per dimension [2026-10-20 08:15:44.837] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.837] [info] Global index computation [2026-10-20 08:15:44.837] [info] Got 1 index_maps [2026-10-20 08:15:44.837] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-0.8-0.1] _______ L = 0.1, H = 0.8, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.846] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.846] [info] Build local dual graph [2026-10-20 08:15:44.846] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.846] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.846] [info] Create topology (single cell type) [2026-10-20 08:15:44.846] [info] Create topology (generalised) [2026-10-20 08:15:44.846] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.846] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.846] [info] Compute ghost indices [2026-10-20 08:15:44.846] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.846] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.846] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.846] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.846] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.846] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.846] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.847] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.847] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.847] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.847] [info] Checking required entities per dimension [2026-10-20 08:15:44.847] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.847] [info] Global index computation [2026-10-20 08:15:44.847] [info] Got 1 index_maps [2026-10-20 08:15:44.847] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-0.8-0.2] _______ L = 0.2, H = 0.8, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.855] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.855] [info] Build local dual graph [2026-10-20 08:15:44.855] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.856] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.856] [info] Create topology (single cell type) [2026-10-20 08:15:44.856] [info] Create topology (generalised) [2026-10-20 08:15:44.856] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.856] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.856] [info] Compute ghost indices [2026-10-20 08:15:44.856] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.856] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.856] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.856] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.856] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.856] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.856] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.856] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.856] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.856] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.856] [info] Checking required entities per dimension [2026-10-20 08:15:44.856] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.856] [info] Global index computation [2026-10-20 08:15:44.856] [info] Got 1 index_maps [2026-10-20 08:15:44.856] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-0.8-0.3] _______ L = 0.3, H = 0.8, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.865] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.865] [info] Build local dual graph [2026-10-20 08:15:44.865] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.865] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.865] [info] Create topology (single cell type) [2026-10-20 08:15:44.865] [info] Create topology (generalised) [2026-10-20 08:15:44.865] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.865] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.865] [info] Compute ghost indices [2026-10-20 08:15:44.865] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.865] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.865] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.865] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.865] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.865] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.865] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.865] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.865] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.865] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.865] [info] Checking required entities per dimension [2026-10-20 08:15:44.865] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.865] [info] Global index computation [2026-10-20 08:15:44.865] [info] Got 1 index_maps [2026-10-20 08:15:44.865] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-0.2-0.1] _______ L = 0.1, H = 0.2, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.874] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.874] [info] Build local dual graph [2026-10-20 08:15:44.874] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.874] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.874] [info] Create topology (single cell type) [2026-10-20 08:15:44.874] [info] Create topology (generalised) [2026-10-20 08:15:44.875] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.875] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.875] [info] Compute ghost indices [2026-10-20 08:15:44.875] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.875] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.875] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.875] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.875] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.875] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.875] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.875] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.875] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.875] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.875] [info] Checking required entities per dimension [2026-10-20 08:15:44.875] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.875] [info] Global index computation [2026-10-20 08:15:44.875] [info] Got 1 index_maps [2026-10-20 08:15:44.875] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-0.2-0.2] _______ L = 0.2, H = 0.2, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.884] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.884] [info] Build local dual graph [2026-10-20 08:15:44.884] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.884] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.884] [info] Create topology (single cell type) [2026-10-20 08:15:44.884] [info] Create topology (generalised) [2026-10-20 08:15:44.884] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.884] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.884] [info] Compute ghost indices [2026-10-20 08:15:44.884] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.884] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.884] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.884] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.884] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.884] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.884] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.884] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.884] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.884] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.884] [info] Checking required entities per dimension [2026-10-20 08:15:44.884] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.884] [info] Global index computation [2026-10-20 08:15:44.884] [info] Got 1 index_maps [2026-10-20 08:15:44.884] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-0.2-0.3] _______ L = 0.3, H = 0.2, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.893] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.893] [info] Build local dual graph [2026-10-20 08:15:44.893] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.893] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.893] [info] Create topology (single cell type) [2026-10-20 08:15:44.893] [info] Create topology (generalised) [2026-10-20 08:15:44.893] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.893] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.893] [info] Compute ghost indices [2026-10-20 08:15:44.893] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.893] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.893] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.893] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.893] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.893] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.893] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.893] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.893] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.893] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.893] [info] Checking required entities per dimension [2026-10-20 08:15:44.893] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.893] [info] Global index computation [2026-10-20 08:15:44.893] [info] Got 1 index_maps [2026-10-20 08:15:44.893] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-1.3-0.1] _____ L = 0.1, H = 1.3, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.902] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.902] [info] Build local dual graph [2026-10-20 08:15:44.902] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.902] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.902] [info] Create topology (single cell type) [2026-10-20 08:15:44.902] [info] Create topology (generalised) [2026-10-20 08:15:44.902] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.902] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.903] [info] Compute ghost indices [2026-10-20 08:15:44.903] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.903] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.903] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.903] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.903] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.903] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.903] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.903] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.903] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.903] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.903] [info] Checking required entities per dimension [2026-10-20 08:15:44.903] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.903] [info] Global index computation [2026-10-20 08:15:44.903] [info] Got 1 index_maps [2026-10-20 08:15:44.903] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-1.3-0.2] _____ L = 0.2, H = 1.3, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.911] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.911] [info] Build local dual graph [2026-10-20 08:15:44.911] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.911] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.911] [info] Create topology (single cell type) [2026-10-20 08:15:44.911] [info] Create topology (generalised) [2026-10-20 08:15:44.911] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.911] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.911] [info] Compute ghost indices [2026-10-20 08:15:44.911] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.912] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.912] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.912] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.912] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.912] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.912] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.912] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.912] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.912] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.912] [info] Checking required entities per dimension [2026-10-20 08:15:44.912] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.912] [info] Global index computation [2026-10-20 08:15:44.912] [info] Got 1 index_maps [2026-10-20 08:15:44.912] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-1.3-0.3] _____ L = 0.3, H = 1.3, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.920] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.920] [info] Build local dual graph [2026-10-20 08:15:44.920] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.920] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.920] [info] Create topology (single cell type) [2026-10-20 08:15:44.920] [info] Create topology (generalised) [2026-10-20 08:15:44.920] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.920] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.920] [info] Compute ghost indices [2026-10-20 08:15:44.920] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.920] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.920] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.920] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.920] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.920] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.920] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.921] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.921] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.921] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.921] [info] Checking required entities per dimension [2026-10-20 08:15:44.921] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.921] [info] Global index computation [2026-10-20 08:15:44.921] [info] Got 1 index_maps [2026-10-20 08:15:44.921] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-0.8-0.1] _____ L = 0.1, H = 0.8, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.929] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.929] [info] Build local dual graph [2026-10-20 08:15:44.929] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.929] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.929] [info] Create topology (single cell type) [2026-10-20 08:15:44.929] [info] Create topology (generalised) [2026-10-20 08:15:44.929] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.929] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.929] [info] Compute ghost indices [2026-10-20 08:15:44.929] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.929] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.929] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.929] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.929] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.929] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.929] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.929] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.929] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.929] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.929] [info] Checking required entities per dimension [2026-10-20 08:15:44.930] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.930] [info] Global index computation [2026-10-20 08:15:44.930] [info] Got 1 index_maps [2026-10-20 08:15:44.930] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-0.8-0.2] _____ L = 0.2, H = 0.8, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.938] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.938] [info] Build local dual graph [2026-10-20 08:15:44.938] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.938] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.938] [info] Create topology (single cell type) [2026-10-20 08:15:44.938] [info] Create topology (generalised) [2026-10-20 08:15:44.938] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.938] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.938] [info] Compute ghost indices [2026-10-20 08:15:44.938] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.938] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.938] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.938] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.938] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.938] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.938] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.938] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.938] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.938] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.938] [info] Checking required entities per dimension [2026-10-20 08:15:44.938] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.938] [info] Global index computation [2026-10-20 08:15:44.938] [info] Got 1 index_maps [2026-10-20 08:15:44.938] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-0.8-0.3] _____ L = 0.3, H = 0.8, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.949] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.949] [info] Build local dual graph [2026-10-20 08:15:44.949] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.949] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.949] [info] Create topology (single cell type) [2026-10-20 08:15:44.949] [info] Create topology (generalised) [2026-10-20 08:15:44.949] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.949] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.949] [info] Compute ghost indices [2026-10-20 08:15:44.949] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.949] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.949] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.949] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.950] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.950] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.950] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.950] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.950] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.950] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.950] [info] Checking required entities per dimension [2026-10-20 08:15:44.950] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.950] [info] Global index computation [2026-10-20 08:15:44.950] [info] Got 1 index_maps [2026-10-20 08:15:44.950] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-0.2-0.1] _____ L = 0.1, H = 0.2, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.959] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.959] [info] Build local dual graph [2026-10-20 08:15:44.959] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.959] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.959] [info] Create topology (single cell type) [2026-10-20 08:15:44.959] [info] Create topology (generalised) [2026-10-20 08:15:44.959] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.959] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.959] [info] Compute ghost indices [2026-10-20 08:15:44.959] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.959] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.959] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.959] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.959] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.959] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.959] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.959] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.959] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.959] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.959] [info] Checking required entities per dimension [2026-10-20 08:15:44.959] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.959] [info] Global index computation [2026-10-20 08:15:44.959] [info] Got 1 index_maps [2026-10-20 08:15:44.959] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-0.2-0.2] _____ L = 0.2, H = 0.2, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.968] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.968] [info] Build local dual graph [2026-10-20 08:15:44.968] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.968] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.968] [info] Create topology (single cell type) [2026-10-20 08:15:44.968] [info] Create topology (generalised) [2026-10-20 08:15:44.968] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.968] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.968] [info] Compute ghost indices [2026-10-20 08:15:44.968] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.968] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.968] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.968] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.968] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.968] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.968] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.968] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.968] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.968] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.969] [info] Checking required entities per dimension [2026-10-20 08:15:44.969] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.969] [info] Global index computation [2026-10-20 08:15:44.969] [info] Got 1 index_maps [2026-10-20 08:15:44.969] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-0.2-0.3] _____ L = 0.3, H = 0.2, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.977] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.977] [info] Build local dual graph [2026-10-20 08:15:44.977] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.977] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.977] [info] Create topology (single cell type) [2026-10-20 08:15:44.977] [info] Create topology (generalised) [2026-10-20 08:15:44.977] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.977] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.977] [info] Compute ghost indices [2026-10-20 08:15:44.977] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.977] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.978] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.978] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.978] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.978] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.978] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.978] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.978] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.978] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.978] [info] Checking required entities per dimension [2026-10-20 08:15:44.978] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.978] [info] Global index computation [2026-10-20 08:15:44.978] [info] Got 1 index_maps [2026-10-20 08:15:44.978] [info] Get global indices ________ test_real_function_space_vector[CellType.tetrahedron-float64] _________ cell_type = CellType.tetrahedron, dtype = @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.tetrahedron, dolfinx.mesh.CellType.hexahedron] ) def test_real_function_space_vector(cell_type, dtype): """ Test that assembling against a real space test function is equivalent to assembling a vector """ mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 2, 3, 5, cell_type, dtype=dtype) V = dolfinx.fem.functionspace(mesh, ("Lagrange", 3)) v = ufl.TrialFunction(V) > R = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:54: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.987] [info] Extract basic topology: 720->720 [2026-10-20 08:15:44.987] [info] Build local dual graph [2026-10-20 08:15:44.987] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.987] [info] GPS pseudo-diameter:(21) 172-6 [2026-10-20 08:15:44.987] [info] Create topology (single cell type) [2026-10-20 08:15:44.987] [info] Create topology (generalised) [2026-10-20 08:15:44.987] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.987] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.987] [info] Compute ghost indices [2026-10-20 08:15:44.987] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.987] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.987] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.987] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.987] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.987] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.987] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.987] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.987] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.987] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.987] [info] Checking required entities per dimension [2026-10-20 08:15:44.987] [info] Cell type: 0 dofmap: 180x4 [2026-10-20 08:15:44.987] [info] Global index computation [2026-10-20 08:15:44.987] [info] Got 1 index_maps [2026-10-20 08:15:44.987] [info] Get global indices [2026-10-20 08:15:44.989] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:44.989] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.989] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.989] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:44.989] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.989] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.989] [info] Checking required entities per dimension [2026-10-20 08:15:44.989] [info] Cell type: 0 dofmap: 180x20 [2026-10-20 08:15:44.989] [info] Global index computation [2026-10-20 08:15:44.989] [info] Got 3 index_maps [2026-10-20 08:15:44.989] [info] Get global indices [2026-10-20 08:15:44.990] [info] Compute face permutations [2026-10-20 08:15:44.990] [info] Computing permutations for face type 0 [2026-10-20 08:15:44.990] [info] Compute edge permutations ________ test_real_function_space_vector[CellType.tetrahedron-float32] _________ cell_type = CellType.tetrahedron, dtype = @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.tetrahedron, dolfinx.mesh.CellType.hexahedron] ) def test_real_function_space_vector(cell_type, dtype): """ Test that assembling against a real space test function is equivalent to assembling a vector """ mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 2, 3, 5, cell_type, dtype=dtype) V = dolfinx.fem.functionspace(mesh, ("Lagrange", 3)) v = ufl.TrialFunction(V) > R = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:54: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.999] [info] Extract basic topology: 720->720 [2026-10-20 08:15:44.999] [info] Build local dual graph [2026-10-20 08:15:44.999] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.999] [info] GPS pseudo-diameter:(21) 172-6 [2026-10-20 08:15:44.999] [info] Create topology (single cell type) [2026-10-20 08:15:44.999] [info] Create topology (generalised) [2026-10-20 08:15:44.999] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.999] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.000] [info] Compute ghost indices [2026-10-20 08:15:45.000] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.000] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.000] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.000] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.000] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.000] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.000] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.000] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.000] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.000] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.000] [info] Checking required entities per dimension [2026-10-20 08:15:45.000] [info] Cell type: 0 dofmap: 180x4 [2026-10-20 08:15:45.000] [info] Global index computation [2026-10-20 08:15:45.000] [info] Got 1 index_maps [2026-10-20 08:15:45.000] [info] Get global indices [2026-10-20 08:15:45.001] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.001] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.001] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.001] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:45.002] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.002] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.002] [info] Checking required entities per dimension [2026-10-20 08:15:45.002] [info] Cell type: 0 dofmap: 180x20 [2026-10-20 08:15:45.002] [info] Global index computation [2026-10-20 08:15:45.002] [info] Got 3 index_maps [2026-10-20 08:15:45.002] [info] Get global indices [2026-10-20 08:15:45.002] [info] Compute face permutations [2026-10-20 08:15:45.002] [info] Computing permutations for face type 0 [2026-10-20 08:15:45.002] [info] Compute edge permutations _________ test_real_function_space_vector[CellType.hexahedron-float64] _________ cell_type = CellType.hexahedron, dtype = @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.tetrahedron, dolfinx.mesh.CellType.hexahedron] ) def test_real_function_space_vector(cell_type, dtype): """ Test that assembling against a real space test function is equivalent to assembling a vector """ mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 2, 3, 5, cell_type, dtype=dtype) V = dolfinx.fem.functionspace(mesh, ("Lagrange", 3)) v = ufl.TrialFunction(V) > R = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:54: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.012] [info] Extract basic topology: 240->240 [2026-10-20 08:15:45.012] [info] Build local dual graph [2026-10-20 08:15:45.012] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.012] [info] GPS pseudo-diameter:(8) 29-0 [2026-10-20 08:15:45.012] [info] Create topology (single cell type) [2026-10-20 08:15:45.012] [info] Create topology (generalised) [2026-10-20 08:15:45.012] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.012] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.012] [info] Compute ghost indices [2026-10-20 08:15:45.012] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.012] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.012] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.012] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.012] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.012] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.012] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.012] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.012] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.012] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.012] [info] Checking required entities per dimension [2026-10-20 08:15:45.012] [info] Cell type: 0 dofmap: 30x8 [2026-10-20 08:15:45.012] [info] Global index computation [2026-10-20 08:15:45.012] [info] Got 1 index_maps [2026-10-20 08:15:45.012] [info] Get global indices [2026-10-20 08:15:45.015] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.015] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.015] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.015] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:45.015] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.015] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.015] [info] Checking required entities per dimension [2026-10-20 08:15:45.015] [info] Cell type: 0 dofmap: 30x64 [2026-10-20 08:15:45.015] [info] Global index computation [2026-10-20 08:15:45.015] [info] Got 4 index_maps [2026-10-20 08:15:45.015] [info] Get global indices [2026-10-20 08:15:45.016] [info] Compute face permutations [2026-10-20 08:15:45.016] [info] Computing permutations for face type 0 [2026-10-20 08:15:45.016] [info] Compute edge permutations _________ test_real_function_space_vector[CellType.hexahedron-float32] _________ cell_type = CellType.hexahedron, dtype = @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.tetrahedron, dolfinx.mesh.CellType.hexahedron] ) def test_real_function_space_vector(cell_type, dtype): """ Test that assembling against a real space test function is equivalent to assembling a vector """ mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 2, 3, 5, cell_type, dtype=dtype) V = dolfinx.fem.functionspace(mesh, ("Lagrange", 3)) v = ufl.TrialFunction(V) > R = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:54: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.026] [info] Extract basic topology: 240->240 [2026-10-20 08:15:45.026] [info] Build local dual graph [2026-10-20 08:15:45.026] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.026] [info] GPS pseudo-diameter:(8) 29-0 [2026-10-20 08:15:45.026] [info] Create topology (single cell type) [2026-10-20 08:15:45.026] [info] Create topology (generalised) [2026-10-20 08:15:45.026] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.026] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.026] [info] Compute ghost indices [2026-10-20 08:15:45.026] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.026] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.026] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.026] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.026] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.026] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.026] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.026] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.026] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.026] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.026] [info] Checking required entities per dimension [2026-10-20 08:15:45.026] [info] Cell type: 0 dofmap: 30x8 [2026-10-20 08:15:45.026] [info] Global index computation [2026-10-20 08:15:45.026] [info] Got 1 index_maps [2026-10-20 08:15:45.026] [info] Get global indices [2026-10-20 08:15:45.029] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.029] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.029] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.029] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:45.029] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.029] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.030] [info] Checking required entities per dimension [2026-10-20 08:15:45.030] [info] Cell type: 0 dofmap: 30x64 [2026-10-20 08:15:45.030] [info] Global index computation [2026-10-20 08:15:45.030] [info] Got 4 index_maps [2026-10-20 08:15:45.030] [info] Get global indices [2026-10-20 08:15:45.030] [info] Compute face permutations [2026-10-20 08:15:45.030] [info] Computing permutations for face type 0 [2026-10-20 08:15:45.030] [info] Compute edge permutations ______________________ test_singular_poisson[1-0-dtype0] _______________________ tensor = 0, degree = 1 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.039] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.039] [info] Build local dual graph [2026-10-20 08:15:45.039] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.040] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.040] [info] Create topology (single cell type) [2026-10-20 08:15:45.040] [info] Create topology (generalised) [2026-10-20 08:15:45.040] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.040] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.040] [info] Compute ghost indices [2026-10-20 08:15:45.040] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.040] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.041] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.041] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.041] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.041] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.041] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.041] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.041] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.041] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.041] [info] Checking required entities per dimension [2026-10-20 08:15:45.041] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.041] [info] Global index computation [2026-10-20 08:15:45.041] [info] Got 1 index_maps [2026-10-20 08:15:45.041] [info] Get global indices [2026-10-20 08:15:45.041] [info] Checking required entities per dimension [2026-10-20 08:15:45.042] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.042] [info] Global index computation [2026-10-20 08:15:45.042] [info] Got 1 index_maps [2026-10-20 08:15:45.042] [info] Get global indices ______________________ test_singular_poisson[1-1-dtype0] _______________________ tensor = 1, degree = 1 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (2,) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.050] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.050] [info] Build local dual graph [2026-10-20 08:15:45.050] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.051] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.051] [info] Create topology (single cell type) [2026-10-20 08:15:45.051] [info] Create topology (generalised) [2026-10-20 08:15:45.051] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.051] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.051] [info] Compute ghost indices [2026-10-20 08:15:45.051] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.051] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.052] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.052] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.052] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.052] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.052] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.052] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.052] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.052] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.052] [info] Checking required entities per dimension [2026-10-20 08:15:45.052] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.052] [info] Global index computation [2026-10-20 08:15:45.052] [info] Got 1 index_maps [2026-10-20 08:15:45.052] [info] Get global indices [2026-10-20 08:15:45.053] [info] Checking required entities per dimension [2026-10-20 08:15:45.053] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.053] [info] Global index computation [2026-10-20 08:15:45.053] [info] Got 1 index_maps [2026-10-20 08:15:45.053] [info] Get global indices ______________________ test_singular_poisson[1-2-dtype0] _______________________ tensor = 2, degree = 1 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (3, 2) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.061] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.061] [info] Build local dual graph [2026-10-20 08:15:45.061] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.062] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.062] [info] Create topology (single cell type) [2026-10-20 08:15:45.062] [info] Create topology (generalised) [2026-10-20 08:15:45.062] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.062] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.062] [info] Compute ghost indices [2026-10-20 08:15:45.062] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.062] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.062] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.062] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.063] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.063] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.063] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.063] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.063] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.063] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.063] [info] Checking required entities per dimension [2026-10-20 08:15:45.063] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.063] [info] Global index computation [2026-10-20 08:15:45.063] [info] Got 1 index_maps [2026-10-20 08:15:45.063] [info] Get global indices [2026-10-20 08:15:45.063] [info] Checking required entities per dimension [2026-10-20 08:15:45.063] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.063] [info] Global index computation [2026-10-20 08:15:45.063] [info] Got 1 index_maps [2026-10-20 08:15:45.064] [info] Get global indices ______________________ test_singular_poisson[2-0-dtype0] _______________________ tensor = 0, degree = 2 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.072] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.072] [info] Build local dual graph [2026-10-20 08:15:45.072] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.073] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.073] [info] Create topology (single cell type) [2026-10-20 08:15:45.073] [info] Create topology (generalised) [2026-10-20 08:15:45.073] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.073] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.073] [info] Compute ghost indices [2026-10-20 08:15:45.073] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.073] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.073] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.073] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.073] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.073] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.073] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.073] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.073] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.073] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.073] [info] Checking required entities per dimension [2026-10-20 08:15:45.073] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.074] [info] Global index computation [2026-10-20 08:15:45.074] [info] Got 1 index_maps [2026-10-20 08:15:45.074] [info] Get global indices [2026-10-20 08:15:45.074] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.075] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.075] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.075] [info] Checking required entities per dimension [2026-10-20 08:15:45.075] [info] Cell type: 0 dofmap: 1250x6 [2026-10-20 08:15:45.075] [info] Global index computation [2026-10-20 08:15:45.075] [info] Got 2 index_maps [2026-10-20 08:15:45.075] [info] Get global indices ______________________ test_singular_poisson[2-1-dtype0] _______________________ tensor = 1, degree = 2 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (2,) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.086] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.086] [info] Build local dual graph [2026-10-20 08:15:45.086] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.087] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.087] [info] Create topology (single cell type) [2026-10-20 08:15:45.087] [info] Create topology (generalised) [2026-10-20 08:15:45.087] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.087] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.087] [info] Compute ghost indices [2026-10-20 08:15:45.087] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.087] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.087] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.087] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.088] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.088] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.088] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.088] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.088] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.088] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.088] [info] Checking required entities per dimension [2026-10-20 08:15:45.088] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.088] [info] Global index computation [2026-10-20 08:15:45.088] [info] Got 1 index_maps [2026-10-20 08:15:45.088] [info] Get global indices [2026-10-20 08:15:45.089] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.089] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.089] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.089] [info] Checking required entities per dimension [2026-10-20 08:15:45.089] [info] Cell type: 0 dofmap: 1250x6 [2026-10-20 08:15:45.090] [info] Global index computation [2026-10-20 08:15:45.090] [info] Got 2 index_maps [2026-10-20 08:15:45.090] [info] Get global indices ______________________ test_singular_poisson[2-2-dtype0] _______________________ tensor = 2, degree = 2 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (3, 2) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.099] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.099] [info] Build local dual graph [2026-10-20 08:15:45.099] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.099] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.099] [info] Create topology (single cell type) [2026-10-20 08:15:45.099] [info] Create topology (generalised) [2026-10-20 08:15:45.099] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.099] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.100] [info] Compute ghost indices [2026-10-20 08:15:45.100] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.100] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.100] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.100] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.100] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.100] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.100] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.100] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.100] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.100] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.100] [info] Checking required entities per dimension [2026-10-20 08:15:45.100] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.100] [info] Global index computation [2026-10-20 08:15:45.100] [info] Got 1 index_maps [2026-10-20 08:15:45.100] [info] Get global indices [2026-10-20 08:15:45.101] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.101] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.101] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.102] [info] Checking required entities per dimension [2026-10-20 08:15:45.102] [info] Cell type: 0 dofmap: 1250x6 [2026-10-20 08:15:45.102] [info] Global index computation [2026-10-20 08:15:45.102] [info] Got 2 index_maps [2026-10-20 08:15:45.102] [info] Get global indices ______________________ test_singular_poisson[3-0-dtype0] _______________________ tensor = 0, degree = 3 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.111] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.111] [info] Build local dual graph [2026-10-20 08:15:45.111] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.111] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.112] [info] Create topology (single cell type) [2026-10-20 08:15:45.112] [info] Create topology (generalised) [2026-10-20 08:15:45.112] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.112] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.112] [info] Compute ghost indices [2026-10-20 08:15:45.112] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.112] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.112] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.112] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.112] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.112] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.112] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.112] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.112] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.112] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.112] [info] Checking required entities per dimension [2026-10-20 08:15:45.112] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.113] [info] Global index computation [2026-10-20 08:15:45.113] [info] Got 1 index_maps [2026-10-20 08:15:45.113] [info] Get global indices [2026-10-20 08:15:45.113] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.114] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.114] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.114] [info] Checking required entities per dimension [2026-10-20 08:15:45.114] [info] Cell type: 0 dofmap: 1250x10 [2026-10-20 08:15:45.114] [info] Global index computation [2026-10-20 08:15:45.114] [info] Got 3 index_maps [2026-10-20 08:15:45.114] [info] Get global indices [2026-10-20 08:15:45.114] [info] Compute edge permutations ______________________ test_singular_poisson[3-1-dtype0] _______________________ tensor = 1, degree = 3 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (2,) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.123] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.123] [info] Build local dual graph [2026-10-20 08:15:45.123] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.124] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.124] [info] Create topology (single cell type) [2026-10-20 08:15:45.124] [info] Create topology (generalised) [2026-10-20 08:15:45.124] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.124] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.124] [info] Compute ghost indices [2026-10-20 08:15:45.124] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.124] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.125] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.125] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.125] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.125] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.125] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.125] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.125] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.125] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.125] [info] Checking required entities per dimension [2026-10-20 08:15:45.125] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.125] [info] Global index computation [2026-10-20 08:15:45.125] [info] Got 1 index_maps [2026-10-20 08:15:45.125] [info] Get global indices [2026-10-20 08:15:45.125] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.126] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.126] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.126] [info] Checking required entities per dimension [2026-10-20 08:15:45.126] [info] Cell type: 0 dofmap: 1250x10 [2026-10-20 08:15:45.126] [info] Global index computation [2026-10-20 08:15:45.126] [info] Got 3 index_maps [2026-10-20 08:15:45.126] [info] Get global indices [2026-10-20 08:15:45.127] [info] Compute edge permutations ______________________ test_singular_poisson[3-2-dtype0] _______________________ tensor = 2, degree = 3 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (3, 2) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.135] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.135] [info] Build local dual graph [2026-10-20 08:15:45.135] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.136] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.136] [info] Create topology (single cell type) [2026-10-20 08:15:45.136] [info] Create topology (generalised) [2026-10-20 08:15:45.136] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.136] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.136] [info] Compute ghost indices [2026-10-20 08:15:45.136] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.136] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.137] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.137] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.137] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.137] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.137] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.137] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.137] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.137] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.137] [info] Checking required entities per dimension [2026-10-20 08:15:45.137] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.137] [info] Global index computation [2026-10-20 08:15:45.137] [info] Got 1 index_maps [2026-10-20 08:15:45.137] [info] Get global indices [2026-10-20 08:15:45.138] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.138] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.138] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.138] [info] Checking required entities per dimension [2026-10-20 08:15:45.138] [info] Cell type: 0 dofmap: 1250x10 [2026-10-20 08:15:45.138] [info] Global index computation [2026-10-20 08:15:45.139] [info] Got 3 index_maps [2026-10-20 08:15:45.139] [info] Get global indices [2026-10-20 08:15:45.139] [info] Compute edge permutations ______________________ test_singular_poisson[4-0-dtype0] _______________________ tensor = 0, degree = 4 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.147] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.147] [info] Build local dual graph [2026-10-20 08:15:45.147] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.148] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.148] [info] Create topology (single cell type) [2026-10-20 08:15:45.148] [info] Create topology (generalised) [2026-10-20 08:15:45.148] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.148] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.148] [info] Compute ghost indices [2026-10-20 08:15:45.148] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.148] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.149] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.149] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.149] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.149] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.149] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.149] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.149] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.149] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.149] [info] Checking required entities per dimension [2026-10-20 08:15:45.149] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.149] [info] Global index computation [2026-10-20 08:15:45.149] [info] Got 1 index_maps [2026-10-20 08:15:45.149] [info] Get global indices [2026-10-20 08:15:45.150] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.150] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.150] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.150] [info] Checking required entities per dimension [2026-10-20 08:15:45.150] [info] Cell type: 0 dofmap: 1250x15 [2026-10-20 08:15:45.150] [info] Global index computation [2026-10-20 08:15:45.150] [info] Got 3 index_maps [2026-10-20 08:15:45.151] [info] Get global indices [2026-10-20 08:15:45.151] [info] Compute edge permutations ______________________ test_singular_poisson[4-1-dtype0] _______________________ tensor = 1, degree = 4 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (2,) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.159] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.159] [info] Build local dual graph [2026-10-20 08:15:45.159] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.160] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.160] [info] Create topology (single cell type) [2026-10-20 08:15:45.160] [info] Create topology (generalised) [2026-10-20 08:15:45.160] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.160] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.160] [info] Compute ghost indices [2026-10-20 08:15:45.160] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.160] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.161] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.161] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.161] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.161] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.161] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.161] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.161] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.161] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.161] [info] Checking required entities per dimension [2026-10-20 08:15:45.161] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.161] [info] Global index computation [2026-10-20 08:15:45.161] [info] Got 1 index_maps [2026-10-20 08:15:45.161] [info] Get global indices [2026-10-20 08:15:45.162] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.162] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.162] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.162] [info] Checking required entities per dimension [2026-10-20 08:15:45.162] [info] Cell type: 0 dofmap: 1250x15 [2026-10-20 08:15:45.163] [info] Global index computation [2026-10-20 08:15:45.163] [info] Got 3 index_maps [2026-10-20 08:15:45.163] [info] Get global indices [2026-10-20 08:15:45.163] [info] Compute edge permutations ______________________ test_singular_poisson[4-2-dtype0] _______________________ tensor = 2, degree = 4 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (3, 2) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.172] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.172] [info] Build local dual graph [2026-10-20 08:15:45.172] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.172] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.172] [info] Create topology (single cell type) [2026-10-20 08:15:45.172] [info] Create topology (generalised) [2026-10-20 08:15:45.172] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.172] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.172] [info] Compute ghost indices [2026-10-20 08:15:45.172] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.172] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.173] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.173] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.173] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.173] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.173] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.173] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.173] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.173] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.173] [info] Checking required entities per dimension [2026-10-20 08:15:45.173] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.173] [info] Global index computation [2026-10-20 08:15:45.173] [info] Got 1 index_maps [2026-10-20 08:15:45.173] [info] Get global indices [2026-10-20 08:15:45.174] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.174] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.174] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.174] [info] Checking required entities per dimension [2026-10-20 08:15:45.174] [info] Cell type: 0 dofmap: 1250x15 [2026-10-20 08:15:45.175] [info] Global index computation [2026-10-20 08:15:45.175] [info] Got 3 index_maps [2026-10-20 08:15:45.175] [info] Get global indices [2026-10-20 08:15:45.175] [info] Compute edge permutations __________________ test_complex_real_space[float32-complex64] __________________ ftype = , stype = @pytest.mark.parametrize("ftype, stype", [(np.float32, np.complex64), (np.float64, np.complex128)]) def test_complex_real_space(ftype, stype): mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 13, dtype=ftype) val = (2 + 3j, -4 + 5j) value_shape = (2,) > R = scifem.create_real_functionspace(mesh, value_shape=value_shape) tests/test_real_functionspace.py:216: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (2,) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.184] [info] Extract basic topology: 26->26 [2026-10-20 08:15:45.184] [info] Build local dual graph [2026-10-20 08:15:45.184] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.184] [info] GPS pseudo-diameter:(13) 12-0 [2026-10-20 08:15:45.184] [info] Create topology (single cell type) [2026-10-20 08:15:45.184] [info] Create topology (generalised) [2026-10-20 08:15:45.184] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.184] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.184] [info] Compute ghost indices [2026-10-20 08:15:45.184] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.184] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.184] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.184] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.184] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.184] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.184] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.184] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.184] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.184] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.184] [info] Checking required entities per dimension [2026-10-20 08:15:45.184] [info] Cell type: 0 dofmap: 13x2 [2026-10-20 08:15:45.184] [info] Global index computation [2026-10-20 08:15:45.184] [info] Got 1 index_maps [2026-10-20 08:15:45.184] [info] Get global indices _________________ test_complex_real_space[float64-complex128] __________________ ftype = , stype = @pytest.mark.parametrize("ftype, stype", [(np.float32, np.complex64), (np.float64, np.complex128)]) def test_complex_real_space(ftype, stype): mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 13, dtype=ftype) val = (2 + 3j, -4 + 5j) value_shape = (2,) > R = scifem.create_real_functionspace(mesh, value_shape=value_shape) tests/test_real_functionspace.py:216: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (2,) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.192] [info] Extract basic topology: 26->26 [2026-10-20 08:15:45.192] [info] Build local dual graph [2026-10-20 08:15:45.192] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.192] [info] GPS pseudo-diameter:(13) 12-0 [2026-10-20 08:15:45.192] [info] Create topology (single cell type) [2026-10-20 08:15:45.192] [info] Create topology (generalised) [2026-10-20 08:15:45.192] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.192] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.193] [info] Compute ghost indices [2026-10-20 08:15:45.193] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.193] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.193] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.193] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.193] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.193] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.193] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.193] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.193] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.193] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.193] [info] Checking required entities per dimension [2026-10-20 08:15:45.193] [info] Cell type: 0 dofmap: 13x2 [2026-10-20 08:15:45.193] [info] Global index computation [2026-10-20 08:15:45.193] [info] Got 1 index_maps [2026-10-20 08:15:45.193] [info] Get global indices ____________________ test_vertex_to_dofmap_P[value_size0-1] ____________________ degree = 1, value_size = () @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1323), Basix element (P, triangle, 1, gll_warped, unset, False, float64, [])) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.201] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.201] [info] Build local dual graph [2026-10-20 08:15:45.201] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.201] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.201] [info] Create topology (single cell type) [2026-10-20 08:15:45.201] [info] Create topology (generalised) [2026-10-20 08:15:45.201] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.201] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.201] [info] Compute ghost indices [2026-10-20 08:15:45.201] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.201] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.201] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.202] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.202] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.202] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.202] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.202] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.202] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.202] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.202] [info] Checking required entities per dimension [2026-10-20 08:15:45.202] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.202] [info] Global index computation [2026-10-20 08:15:45.202] [info] Got 1 index_maps [2026-10-20 08:15:45.202] [info] Get global indices [2026-10-20 08:15:45.202] [info] Checking required entities per dimension [2026-10-20 08:15:45.202] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.202] [info] Global index computation [2026-10-20 08:15:45.202] [info] Got 1 index_maps [2026-10-20 08:15:45.202] [info] Get global indices ____________________ test_vertex_to_dofmap_P[value_size0-2] ____________________ degree = 2, value_size = () @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1324), Basix element (P, triangle, 2, gll_warped, unset, False, float64, [])) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.206] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.206] [info] Build local dual graph [2026-10-20 08:15:45.206] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.206] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.206] [info] Create topology (single cell type) [2026-10-20 08:15:45.206] [info] Create topology (generalised) [2026-10-20 08:15:45.207] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.207] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.207] [info] Compute ghost indices [2026-10-20 08:15:45.207] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.207] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.207] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.207] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.207] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.207] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.207] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.207] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.207] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.207] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.207] [info] Checking required entities per dimension [2026-10-20 08:15:45.207] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.207] [info] Global index computation [2026-10-20 08:15:45.207] [info] Got 1 index_maps [2026-10-20 08:15:45.207] [info] Get global indices [2026-10-20 08:15:45.207] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.207] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.207] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.207] [info] Checking required entities per dimension [2026-10-20 08:15:45.207] [info] Cell type: 0 dofmap: 40x6 [2026-10-20 08:15:45.207] [info] Global index computation [2026-10-20 08:15:45.207] [info] Got 2 index_maps [2026-10-20 08:15:45.207] [info] Get global indices ____________________ test_vertex_to_dofmap_P[value_size0-3] ____________________ degree = 3, value_size = () @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1325), Basix element (P, triangle, 3, gll_warped, unset, False, float64, [])) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.212] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.212] [info] Build local dual graph [2026-10-20 08:15:45.212] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.212] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.212] [info] Create topology (single cell type) [2026-10-20 08:15:45.212] [info] Create topology (generalised) [2026-10-20 08:15:45.212] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.212] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.212] [info] Compute ghost indices [2026-10-20 08:15:45.212] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.212] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.212] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.212] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.212] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.212] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.212] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.212] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.212] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.212] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.212] [info] Checking required entities per dimension [2026-10-20 08:15:45.212] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.212] [info] Global index computation [2026-10-20 08:15:45.212] [info] Got 1 index_maps [2026-10-20 08:15:45.212] [info] Get global indices [2026-10-20 08:15:45.212] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.212] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.212] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.213] [info] Checking required entities per dimension [2026-10-20 08:15:45.213] [info] Cell type: 0 dofmap: 40x10 [2026-10-20 08:15:45.213] [info] Global index computation [2026-10-20 08:15:45.213] [info] Got 3 index_maps [2026-10-20 08:15:45.213] [info] Get global indices [2026-10-20 08:15:45.213] [info] Compute edge permutations ____________________ test_vertex_to_dofmap_P[value_size1-1] ____________________ degree = 1, value_size = (2,) @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1326), blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,))) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.217] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.217] [info] Build local dual graph [2026-10-20 08:15:45.217] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.217] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.217] [info] Create topology (single cell type) [2026-10-20 08:15:45.217] [info] Create topology (generalised) [2026-10-20 08:15:45.217] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.217] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.217] [info] Compute ghost indices [2026-10-20 08:15:45.217] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.217] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.217] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.217] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.217] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.217] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.217] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.217] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.217] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.217] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.217] [info] Checking required entities per dimension [2026-10-20 08:15:45.217] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.217] [info] Global index computation [2026-10-20 08:15:45.217] [info] Got 1 index_maps [2026-10-20 08:15:45.217] [info] Get global indices [2026-10-20 08:15:45.218] [info] Checking required entities per dimension [2026-10-20 08:15:45.218] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.218] [info] Global index computation [2026-10-20 08:15:45.218] [info] Got 1 index_maps [2026-10-20 08:15:45.218] [info] Get global indices ____________________ test_vertex_to_dofmap_P[value_size1-2] ____________________ degree = 2, value_size = (2,) @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1327), blocked element (Basix element (P, triangle, 2, gll_warped, unset, False, float64, []), (2,))) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.222] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.222] [info] Build local dual graph [2026-10-20 08:15:45.222] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.222] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.222] [info] Create topology (single cell type) [2026-10-20 08:15:45.222] [info] Create topology (generalised) [2026-10-20 08:15:45.222] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.222] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.222] [info] Compute ghost indices [2026-10-20 08:15:45.222] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.222] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.222] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.222] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.222] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.222] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.222] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.222] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.222] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.222] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.222] [info] Checking required entities per dimension [2026-10-20 08:15:45.222] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.222] [info] Global index computation [2026-10-20 08:15:45.222] [info] Got 1 index_maps [2026-10-20 08:15:45.222] [info] Get global indices [2026-10-20 08:15:45.223] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.223] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.223] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.223] [info] Checking required entities per dimension [2026-10-20 08:15:45.223] [info] Cell type: 0 dofmap: 40x6 [2026-10-20 08:15:45.223] [info] Global index computation [2026-10-20 08:15:45.223] [info] Got 2 index_maps [2026-10-20 08:15:45.223] [info] Get global indices ____________________ test_vertex_to_dofmap_P[value_size1-3] ____________________ degree = 3, value_size = (2,) @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1328), blocked element (Basix element (P, triangle, 3, gll_warped, unset, False, float64, []), (2,))) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.227] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.227] [info] Build local dual graph [2026-10-20 08:15:45.227] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.227] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.227] [info] Create topology (single cell type) [2026-10-20 08:15:45.227] [info] Create topology (generalised) [2026-10-20 08:15:45.227] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.227] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.227] [info] Compute ghost indices [2026-10-20 08:15:45.227] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.227] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.227] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.227] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.227] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.227] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.227] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.227] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.227] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.227] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.227] [info] Checking required entities per dimension [2026-10-20 08:15:45.227] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.227] [info] Global index computation [2026-10-20 08:15:45.227] [info] Got 1 index_maps [2026-10-20 08:15:45.227] [info] Get global indices [2026-10-20 08:15:45.228] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.228] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.228] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.228] [info] Checking required entities per dimension [2026-10-20 08:15:45.228] [info] Cell type: 0 dofmap: 40x10 [2026-10-20 08:15:45.228] [info] Global index computation [2026-10-20 08:15:45.228] [info] Got 3 index_maps [2026-10-20 08:15:45.228] [info] Get global indices [2026-10-20 08:15:45.228] [info] Compute edge permutations ____________________ test_vertex_to_dofmap_P[value_size2-1] ____________________ degree = 1, value_size = (2, 3) @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1329), blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2, 3))) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.233] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.233] [info] Build local dual graph [2026-10-20 08:15:45.233] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.233] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.233] [info] Create topology (single cell type) [2026-10-20 08:15:45.233] [info] Create topology (generalised) [2026-10-20 08:15:45.233] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.233] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.234] [info] Compute ghost indices [2026-10-20 08:15:45.234] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.234] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.234] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.234] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.234] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.234] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.234] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.234] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.234] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.234] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.234] [info] Checking required entities per dimension [2026-10-20 08:15:45.234] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.234] [info] Global index computation [2026-10-20 08:15:45.234] [info] Got 1 index_maps [2026-10-20 08:15:45.234] [info] Get global indices [2026-10-20 08:15:45.234] [info] Checking required entities per dimension [2026-10-20 08:15:45.234] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.234] [info] Global index computation [2026-10-20 08:15:45.234] [info] Got 1 index_maps [2026-10-20 08:15:45.234] [info] Get global indices ____________________ test_vertex_to_dofmap_P[value_size2-2] ____________________ degree = 2, value_size = (2, 3) @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1330), blocked element (Basix element (P, triangle, 2, gll_warped, unset, False, float64, []), (2, 3))) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.239] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.239] [info] Build local dual graph [2026-10-20 08:15:45.239] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.239] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.239] [info] Create topology (single cell type) [2026-10-20 08:15:45.239] [info] Create topology (generalised) [2026-10-20 08:15:45.239] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.239] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.239] [info] Compute ghost indices [2026-10-20 08:15:45.239] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.239] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.239] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.239] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.239] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.239] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.239] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.239] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.239] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.239] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.239] [info] Checking required entities per dimension [2026-10-20 08:15:45.239] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.239] [info] Global index computation [2026-10-20 08:15:45.239] [info] Got 1 index_maps [2026-10-20 08:15:45.239] [info] Get global indices [2026-10-20 08:15:45.239] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.239] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.239] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.240] [info] Checking required entities per dimension [2026-10-20 08:15:45.240] [info] Cell type: 0 dofmap: 40x6 [2026-10-20 08:15:45.240] [info] Global index computation [2026-10-20 08:15:45.240] [info] Got 2 index_maps [2026-10-20 08:15:45.240] [info] Get global indices ____________________ test_vertex_to_dofmap_P[value_size2-3] ____________________ degree = 3, value_size = (2, 3) @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1331), blocked element (Basix element (P, triangle, 3, gll_warped, unset, False, float64, []), (2, 3))) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.244] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.244] [info] Build local dual graph [2026-10-20 08:15:45.244] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.244] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.244] [info] Create topology (single cell type) [2026-10-20 08:15:45.244] [info] Create topology (generalised) [2026-10-20 08:15:45.244] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.244] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.244] [info] Compute ghost indices [2026-10-20 08:15:45.244] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.244] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.244] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.244] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.244] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.244] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.244] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.244] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.244] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.244] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.244] [info] Checking required entities per dimension [2026-10-20 08:15:45.244] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.244] [info] Global index computation [2026-10-20 08:15:45.244] [info] Got 1 index_maps [2026-10-20 08:15:45.244] [info] Get global indices [2026-10-20 08:15:45.245] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.245] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.245] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.245] [info] Checking required entities per dimension [2026-10-20 08:15:45.245] [info] Cell type: 0 dofmap: 40x10 [2026-10-20 08:15:45.245] [info] Global index computation [2026-10-20 08:15:45.245] [info] Got 3 index_maps [2026-10-20 08:15:45.245] [info] Get global indices [2026-10-20 08:15:45.245] [info] Compute edge permutations =============================== warnings summary =============================== tests/test_point_source.py::test_midpoint /usr/lib/python3/dist-packages/ufl/utils/sorting.py:88: UserWarning: Applying str() to a metadata value of type ndarray, don't know if this is safe. warnings.warn( tests/test_xdmf.py: 60 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/scifem/xdmf.py:420: UserWarning: ADIOS2 not available, using h5py warnings.warn(msg) tests/test_xdmf.py: 12 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/tests/test_xdmf.py:256: DeprecationWarning: ('Call to deprecated function create_pointcloud.', 'Please use the class scifem.xdmf.XDMFFile instead.') scifem.xdmf.create_pointcloud(folder / "data.xdmf", [u, v]) tests/test_xdmf.py: 36 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/scifem/xdmf.py:368: DeprecationWarning: ('Call to deprecated function write_xdmf.', 'Please use the class scifem.xdmf.XDMFFile instead.') write_xdmf(functions, filename, h5name, data) tests/test_xdmf.py: 36 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/scifem/xdmf.py:371: DeprecationWarning: ('Call to deprecated function write_hdf5_adios.', 'Please use the class scifem.xdmf.XDMFFile instead.') write_hdf5_adios(functions=functions, h5name=h5name, data=data) tests/test_xdmf.py: 36 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/scifem/xdmf.py:40: UserWarning: ADIOS2 not available, using h5py return func(*args, **kwargs) tests/test_xdmf.py: 36 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/scifem/xdmf.py:374: DeprecationWarning: ('Call to deprecated function write_hdf5_h5py.', 'Please use the class scifem.xdmf.XDMFFile instead.') write_hdf5_h5py(functions=functions, h5name=h5name, data=data) tests/test_xdmf.py: 12 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/tests/test_xdmf.py:287: DeprecationWarning: ('Call to deprecated function create_pointcloud.', 'Please use the class scifem.xdmf.XDMFFile instead.') scifem.xdmf.create_pointcloud(folder / "data.xdmf", [u, v]) tests/test_xdmf.py::test_different_function_spaces_raises_ValueError /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/tests/test_xdmf.py:301: DeprecationWarning: ('Call to deprecated function create_pointcloud.', 'Please use the class scifem.xdmf.XDMFFile instead.') scifem.xdmf.create_pointcloud( tests/test_xdmf.py: 12 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/tests/test_xdmf.py:335: DeprecationWarning: ('Call to deprecated function create_pointcloud.', 'Please use the class scifem.xdmf.XDMFFile instead.') scifem.xdmf.create_pointcloud(folder / "data.xdmf", [u, v]) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_mesh.py::test_submesh_meshtags[0] - TypeError: transfer_mes... FAILED tests/test_mesh.py::test_submesh_meshtags[1] - TypeError: transfer_mes... FAILED tests/test_mesh.py::test_submesh_meshtags[2] - TypeError: transfer_mes... FAILED tests/test_mesh.py::test_submesh_meshtags[3] - TypeError: transfer_mes... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-1-0] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-1-1] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-2-0] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-2-1] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-2-2] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-3-0] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-3-1] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-3-2] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-1-0] FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-1-1] FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-2-0] FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-2-1] FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-2-2] FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-3-0] FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-3-1] FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-3-2] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.none-float64] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.none-float32] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.shared_facet-float64] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.shared_facet-float32] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.none-float64] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.none-float32] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.shared_facet-float64] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.shared_facet-float32] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-1.3-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-1.3-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-1.3-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-0.8-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-0.8-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-0.8-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-0.2-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-0.2-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-0.2-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-1.3-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-1.3-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-1.3-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-0.8-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-0.8-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-0.8-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-0.2-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-0.2-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-0.2-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-1.3-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-1.3-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-1.3-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-0.8-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-0.8-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-0.8-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-0.2-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-0.2-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-0.2-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-1.3-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-1.3-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-1.3-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-0.8-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-0.8-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-0.8-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-0.2-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-0.2-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-0.2-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_vector[CellType.tetrahedron-float64] FAILED tests/test_real_functionspace.py::test_real_function_space_vector[CellType.tetrahedron-float32] FAILED tests/test_real_functionspace.py::test_real_function_space_vector[CellType.hexahedron-float64] FAILED tests/test_real_functionspace.py::test_real_function_space_vector[CellType.hexahedron-float32] FAILED tests/test_real_functionspace.py::test_singular_poisson[1-0-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[1-1-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[1-2-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[2-0-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[2-1-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[2-2-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[3-0-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[3-1-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[3-2-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[4-0-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[4-1-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[4-2-dtype0] - ... FAILED tests/test_real_functionspace.py::test_complex_real_space[float32-complex64] FAILED tests/test_real_functionspace.py::test_complex_real_space[float64-complex128] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size0-1] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size0-2] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size0-3] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size1-1] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size1-2] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size1-3] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size2-1] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size2-2] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size2-3] ===== 91 failed, 1370 passed, 6 skipped, 6 xfailed, 242 warnings in 49.96s ===== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build; python3.13 -m pytest tests dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13 make: *** [debian/rules:10: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 I: copying local configuration E: Failed autobuilding of package I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/410781 and its subdirectories Starting cleanup. All cleanup done. Tue Oct 20 20:15:59 UTC 2026 - reproducible_build.sh stopped running as /tmp/jenkins-script-degmL5hJ, removing. /srv/reproducible-results/rbuild-debian/r-b-build.W9kh2TPg: total 16 drwxrwxr-x 2 jenkins jenkins 4096 Sep 17 13:53 b1 drwxrwxr-x 2 jenkins jenkins 4096 Sep 17 13:49 b2 -rw------- 1 jenkins jenkins 3515 Sep 17 13:49 rbuildlog.aVBJy8L -rw-rw-r-- 1 jenkins jenkins 2418 May 30 11:19 scifem_0.6.0-2.dsc /srv/reproducible-results/rbuild-debian/r-b-build.W9kh2TPg/b1: total 708 -rw-r--r-- 1 jenkins jenkins 722737 Sep 17 13:53 build.log /srv/reproducible-results/rbuild-debian/r-b-build.W9kh2TPg/b2: total 0 Wed Sep 17 13:53:00 UTC 2025 I: Deleting $TMPDIR on codethink03-arm64.debian.net. I: pbuilder: network access will be disabled during build I: Current time: Tue Oct 20 08:12:41 -12 2026 I: pbuilder-time-stamp: 1792527161 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/forky-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [scifem_0.6.0-2.dsc] I: copying [./scifem_0.6.0.orig.tar.gz] I: copying [./scifem_0.6.0-2.debian.tar.xz] I: Extracting source dpkg-source: warning: cannot verify inline signature for ./scifem_0.6.0-2.dsc: no acceptable signature found dpkg-source: info: extracting scifem in scifem-0.6.0 dpkg-source: info: unpacking scifem_0.6.0.orig.tar.gz dpkg-source: info: unpacking scifem_0.6.0-2.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying no_rpath.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/410781/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='arm64' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' DISTRIBUTION='forky' HOME='/root' HOST_ARCH='arm64' IFS=' ' INVOCATION_ID='f445a74377bb46198cd24244e55f893b' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='410781' PS1='# ' PS2='> ' PS4='+ ' PWD='/' SHELL='/bin/bash' SHLVL='2' SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.W9kh2TPg/pbuilderrc_YTmi --distribution forky --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.W9kh2TPg/b1 --logfile b1/build.log scifem_0.6.0-2.dsc' SUDO_GID='109' SUDO_HOME='/var/lib/jenkins' SUDO_UID='104' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://192.168.101.4:3128' I: uname -a Linux codethink03-arm64 6.12.43+deb13-cloud-arm64 #1 SMP Debian 6.12.43-1 (2025-08-27) aarch64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Aug 10 2025 /bin -> usr/bin I: user script /srv/workspace/pbuilder/410781/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: arm64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), dh-sequence-python3, pybuild-plugin-pyproject, python3-scikit-build-core, python3-setuptools, python3-all-dev, python3-adios2, python3-basix, python3-dolfinx, python3-h5py, python3-mpi4py, python3-nanobind, python3-nibabel, python3-numpy, python3-packaging, python3-petsc4py, python3-pytest, python3-ufl, libspdlog-dev, mpi-default-dev dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 20020 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on dh-sequence-python3; however: Package dh-sequence-python3 is not installed. pbuilder-satisfydepends-dummy depends on pybuild-plugin-pyproject; however: Package pybuild-plugin-pyproject is not installed. pbuilder-satisfydepends-dummy depends on python3-scikit-build-core; however: Package python3-scikit-build-core is not installed. pbuilder-satisfydepends-dummy depends on python3-setuptools; however: Package python3-setuptools is not installed. pbuilder-satisfydepends-dummy depends on python3-all-dev; however: Package python3-all-dev is not installed. pbuilder-satisfydepends-dummy depends on python3-adios2; however: Package python3-adios2 is not installed. pbuilder-satisfydepends-dummy depends on python3-basix; however: Package python3-basix is not installed. pbuilder-satisfydepends-dummy depends on python3-dolfinx; however: Package python3-dolfinx is not installed. pbuilder-satisfydepends-dummy depends on python3-h5py; however: Package python3-h5py is not installed. pbuilder-satisfydepends-dummy depends on python3-mpi4py; however: Package python3-mpi4py is not installed. pbuilder-satisfydepends-dummy depends on python3-nanobind; however: Package python3-nanobind is not installed. pbuilder-satisfydepends-dummy depends on python3-nibabel; however: Package python3-nibabel is not installed. pbuilder-satisfydepends-dummy depends on python3-numpy; however: Package python3-numpy is not installed. pbuilder-satisfydepends-dummy depends on python3-packaging; however: Package python3-packaging is not installed. pbuilder-satisfydepends-dummy depends on python3-petsc4py; however: Package python3-petsc4py is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest; however: Package python3-pytest is not installed. pbuilder-satisfydepends-dummy depends on python3-ufl; however: Package python3-ufl is not installed. pbuilder-satisfydepends-dummy depends on libspdlog-dev; however: Package libspdlog-dev is not installed. pbuilder-satisfydepends-dummy depends on mpi-default-dev; however: Package mpi-default-dev is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} cmake{a} cmake-data{a} comerr-dev{a} cpp-14{a} cpp-14-aarch64-linux-gnu{a} debhelper{a} dh-autoreconf{a} dh-python{a} dh-strip-nondeterminism{a} dwz{a} file{a} fonts-mathjax{a} gcc-14{a} gcc-14-aarch64-linux-gnu{a} gcc-14-base{a} gettext{a} gettext-base{a} gfortran{a} gfortran-14{a} gfortran-14-aarch64-linux-gnu{a} gfortran-15{a} gfortran-15-aarch64-linux-gnu{a} gfortran-aarch64-linux-gnu{a} groff-base{a} ibverbs-providers{a} icu-devtools{a} intltool-debian{a} krb5-multidev{a} libadios2-common-c++11-dev{a} libadios2-common-core-dev{a} libadios2-mpi-auxiliary-2.10{a} libadios2-mpi-auxiliary-dev{a} libadios2-mpi-c++11-2.10{a} libadios2-mpi-c++11-dev{a} libadios2-mpi-c-2.10{a} libadios2-mpi-core-2.10{a} libadios2-mpi-core-dev{a} libadios2-mpi-plugins{a} libadios2-serial-auxiliary-2.10{a} libadios2-serial-c-2.10{a} libadios2-serial-core-2.10{a} libadios2-serial-plugins{a} libaec-dev{a} libaec0{a} libamd-comgr2{a} libamd3{a} libamdhip64-5{a} libarchive-zip-perl{a} libarchive13t64{a} libarpack2-dev{a} libarpack2t64{a} libbasix-dev{a} libbasix0.9{a} libblas-dev{a} libblas3{a} libboost-atomic1.83-dev{a} libboost-atomic1.83.0{a} libboost-chrono-dev{a} libboost-chrono1.83-dev{a} libboost-chrono1.83.0t64{a} libboost-date-time1.83-dev{a} libboost-date-time1.83.0{a} libboost-dev{a} libboost-filesystem-dev{a} libboost-filesystem1.83-dev{a} libboost-filesystem1.83.0{a} libboost-iostreams-dev{a} libboost-iostreams1.83-dev{a} libboost-math-dev{a} libboost-math1.83-dev{a} libboost-math1.83.0{a} libboost-mpi-dev{a} libboost-mpi1.83-dev{a} libboost-mpi1.83.0{a} libboost-program-options-dev{a} libboost-program-options1.83-dev{a} libboost-program-options1.83.0{a} libboost-regex1.83-dev{a} libboost-regex1.83.0{a} libboost-serialization-dev{a} libboost-serialization1.83-dev{a} libboost-serialization1.83.0{a} libboost-system1.83-dev{a} libboost-system1.83.0{a} libboost-thread-dev{a} libboost-thread1.83-dev{a} libboost-thread1.83.0{a} libboost-timer-dev{a} libboost-timer1.83-dev{a} libboost-timer1.83.0{a} libboost1.83-dev{a} libbrotli-dev{a} libbrotli1{a} libbtf2{a} libc6-dbg{a} libcamd3{a} libcbor0.10{a} libccolamd3{a} libcholmod5{a} libcolamd3{a} libcom-err2{a} libcombblas2.0.0t64{a} libcurl4-openssl-dev{a} libcurl4t64{a} libcxsparse4{a} libdebhelper-perl{a} libdolfinx-dev{a} libdolfinx-real-dev{a} libdolfinx-real0.9{a} libdrm-amdgpu1{a} libdrm-common{a} libdrm2{a} libedit2{a} libeigen3-dev{a} libelf1t64{a} libevent-2.1-7t64{a} libevent-core-2.1-7t64{a} libevent-dev{a} libevent-extra-2.1-7t64{a} libevent-openssl-2.1-7t64{a} libevent-pthreads-2.1-7t64{a} libexpat1{a} libexpat1-dev{a} libfabric1{a} libffi8{a} libfftw3-bin{a} libfftw3-dev{a} libfftw3-double3{a} libfftw3-long3{a} libfftw3-mpi-dev{a} libfftw3-mpi3{a} libfftw3-single3{a} libfido2-1{a} libfile-stripnondeterminism-perl{a} libfmt-dev{a} libfmt10{a} libgcc-14-dev{a} libgfortran-14-dev{a} libgfortran-15-dev{a} libgfortran5{a} libgmp-dev{a} libgmpxx4ldbl{a} libgnutls-dane0t64{a} libgnutls-openssl27t64{a} libgnutls28-dev{a} libgnutls30t64{a} libgssapi-krb5-2{a} libgssrpc4t64{a} libhdf5-310{a} libhdf5-hl-310{a} libhdf5-mpi-dev{a} libhdf5-openmpi-310{a} libhdf5-openmpi-cpp-310{a} libhdf5-openmpi-dev{a} libhdf5-openmpi-fortran-310{a} libhdf5-openmpi-hl-310{a} libhdf5-openmpi-hl-cpp-310{a} libhdf5-openmpi-hl-fortran-310{a} libhsa-runtime64-1{a} libhsakmt1{a} libhwloc-dev{a} libhwloc-plugins{a} libhwloc15{a} libhypre-2.32.0{a} libhypre-dev{a} libibmad5{a} libibumad3{a} libibverbs-dev{a} libibverbs1{a} libicu-dev{a} libicu76{a} libidn2-0{a} libidn2-dev{a} libjpeg-dev{a} libjpeg62-turbo{a} libjpeg62-turbo-dev{a} libjs-jquery{a} libjs-jquery-ui{a} libjs-mathjax{a} libjs-sphinxdoc{a} libjson-perl{a} libjsoncpp26{a} libk5crypto3{a} libkadm5clnt-mit12{a} libkadm5srv-mit12{a} libkdb5-10t64{a} libkeyutils1{a} libklu2{a} libkrb5-3{a} libkrb5-dev{a} libkrb5support0{a} liblapack-dev{a} liblapack3{a} libldap-dev{a} libldap2{a} libldl3{a} libllvm17t64{a} libltdl-dev{a} libltdl7{a} liblzf1{a} liblzma-dev{a} libmagic-mgc{a} libmagic1t64{a} libmetis5{a} libmumps-5.7{a} libmumps-dev{a} libmumps-headers-dev{a} libmunge2{a} libnghttp2-14{a} libnghttp2-dev{a} libnghttp3-9{a} libnghttp3-dev{a} libnl-3-200{a} libnl-3-dev{a} libnl-route-3-200{a} libnl-route-3-dev{a} libnorm1t64{a} libnuma-dev{a} libnuma1{a} libopenmpi-dev{a} libopenmpi40{a} libp11-kit-dev{a} libp11-kit0{a} libparpack2-dev{a} libparpack2t64{a} libparu1{a} libpciaccess0{a} libpetsc-real3.22{a} libpetsc-real3.22-dev{a} libpetsc3.22-dev-common{a} libpgm-5.3-0t64{a} libpipeline1{a} libpkgconf3{a} libpmix-dev{a} libpmix2t64{a} libpng16-16t64{a} libproc2-0{a} libpsl-dev{a} libpsl5t64{a} libptscotch-7.0{a} libptscotch-dev{a} libpugixml-dev{a} libpugixml1v5{a} libpython3-all-dev{a} libpython3-dev{a} libpython3-stdlib{a} libpython3.13{a} libpython3.13-dev{a} libpython3.13-minimal{a} libpython3.13-stdlib{a} librbio4{a} librdmacm1t64{a} libreadline8t64{a} librhash1{a} librtmp-dev{a} librtmp1{a} libsasl2-2{a} libsasl2-modules-db{a} libscalapack-mpi-dev{a} libscalapack-openmpi-dev{a} libscalapack-openmpi2.2{a} libscotch-7.0{a} libscotch-dev{a} libslepc-real3.22{a} libslepc-real3.22-dev{a} libsodium23{a} libspdlog-dev{a} libspdlog1.15{a} libspex3{a} libspqr4{a} libssh2-1-dev{a} libssh2-1t64{a} libssl-dev{a} libstdc++-14-dev{a} libsuitesparse-dev{a} libsuitesparse-mongoose3{a} libsuitesparseconfig7{a} libsuperlu-dev{a} libsuperlu-dist-dev{a} libsuperlu-dist8{a} libsuperlu7{a} libsz2{a} libtasn1-6{a} libtasn1-6-dev{a} libtool{a} libuchardet0{a} libucx0{a} libumfpack6{a} libunbound8{a} libunistring5{a} libuv1t64{a} libx11-6{a} libx11-data{a} libx11-dev{a} libxau-dev{a} libxau6{a} libxcb1{a} libxcb1-dev{a} libxdmcp-dev{a} libxdmcp6{a} libxext6{a} libxml2-16{a} libxml2-dev{a} libxnvctrl0{a} libyaml-0-2{a} libyaml-cpp0.8{a} libyaml-dev{a} libz3-4{a} libzmq5{a} libzstd-dev{a} m4{a} man-db{a} media-types{a} mpi-default-bin{a} mpi-default-dev{a} nanobind-dev{a} netbase{a} nettle-dev{a} ocl-icd-libopencl1{a} ocl-icd-opencl-dev{a} opencl-c-headers{a} opencl-clhpp-headers{a} openmpi-bin{a} openmpi-common{a} openssh-client{a} pkg-config{a} pkgconf{a} pkgconf-bin{a} po-debconf{a} procps{a} pybuild-plugin-pyproject{a} python-petsc4py-doc{a} python3{a} python3-adios2{a} python3-adios2-serial{a} python3-all{a} python3-all-dev{a} python3-autocommand{a} python3-basix{a} python3-build{a} python3-cffi{a} python3-cffi-backend{a} python3-decorator{a} python3-dev{a} python3-dolfinx{a} python3-dolfinx-real{a} python3-ffcx{a} python3-h5py{a} python3-h5py-serial{a} python3-inflect{a} python3-iniconfig{a} python3-installer{a} python3-jaraco.context{a} python3-jaraco.functools{a} python3-jaraco.text{a} python3-minimal{a} python3-more-itertools{a} python3-mpi4py{a} python3-nanobind{a} python3-nibabel{a} python3-numpy{a} python3-numpy-dev{a} python3-packaging{a} python3-pathspec{a} python3-petsc4py{a} python3-petsc4py-real{a} python3-petsc4py-real3.22{a} python3-pkg-resources{a} python3-pluggy{a} python3-ply{a} python3-pusimp{a} python3-pycparser{a} python3-pyproject-hooks{a} python3-pyproject-metadata{a} python3-pytest{a} python3-scikit-build-core{a} python3-scipy{a} python3-setuptools{a} python3-slepc4py{a} python3-slepc4py-real{a} python3-slepc4py-real3.22{a} python3-typeguard{a} python3-typing-extensions{a} python3-ufl{a} python3-wheel{a} python3-zipp{a} python3.13{a} python3.13-dev{a} python3.13-minimal{a} readline-common{a} robin-map-dev{a} sensible-utils{a} sphinx-common{a} swig{a} tzdata{a} valgrind{a} valgrind-mpi{a} x11proto-dev{a} xorg-sgml-doctools{a} xtrans-dev{a} zlib1g-dev{a} The following packages are RECOMMENDED but will NOT be installed: ca-certificates curl gdb javascript-common krb5-locales ksh ksh93u+m libarchive-cpio-perl libcoarrays-openmpi-dev libgl-dev libgraphblas-dev libjson-xs-perl libldap-common libmail-sendmail-perl libpetsc-complex-dev libpetsc-real-dev libpetsc3.22-dev-examples libsasl2-modules libtasn1-doc linux-sysctl-defaults lynx mksh psmisc publicsuffix python3-fuse python3-gmsh python3-pil python3-pooch python3-pydicom python3-pygments python3-sphinx python3-yaml wget xauth zsh 0 packages upgraded, 406 newly installed, 0 to remove and 0 not upgraded. Need to get 401 MB of archives. After unpacking 1914 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian forky/main arm64 libexpat1 arm64 2.7.1-2 [93.3 kB] Get: 2 http://deb.debian.org/debian forky/main arm64 libpython3.13-minimal arm64 3.13.7-1 [857 kB] Get: 3 http://deb.debian.org/debian forky/main arm64 python3.13-minimal arm64 3.13.7-1 [2001 kB] Get: 4 http://deb.debian.org/debian forky/main arm64 python3-minimal arm64 3.13.7-1 [27.2 kB] Get: 5 http://deb.debian.org/debian forky/main arm64 media-types all 13.0.0 [29.3 kB] Get: 6 http://deb.debian.org/debian forky/main arm64 netbase all 6.5 [12.4 kB] Get: 7 http://deb.debian.org/debian forky/main arm64 tzdata all 2025b-5 [260 kB] Get: 8 http://deb.debian.org/debian forky/main arm64 libffi8 arm64 3.5.2-2 [21.5 kB] Get: 9 http://deb.debian.org/debian forky/main arm64 readline-common all 8.3-3 [74.8 kB] Get: 10 http://deb.debian.org/debian forky/main arm64 libreadline8t64 arm64 8.3-3 [169 kB] Get: 11 http://deb.debian.org/debian forky/main arm64 libpython3.13-stdlib arm64 3.13.7-1 [1895 kB] Get: 12 http://deb.debian.org/debian forky/main arm64 python3.13 arm64 3.13.7-1 [761 kB] Get: 13 http://deb.debian.org/debian forky/main arm64 libpython3-stdlib arm64 3.13.7-1 [10.2 kB] Get: 14 http://deb.debian.org/debian forky/main arm64 python3 arm64 3.13.7-1 [28.3 kB] Get: 15 http://deb.debian.org/debian forky/main arm64 python3-numpy-dev arm64 1:2.2.4+ds-1.2 [138 kB] Get: 16 http://deb.debian.org/debian forky/main arm64 libblas3 arm64 3.12.1-7 [135 kB] Get: 17 http://deb.debian.org/debian forky/main arm64 libgfortran5 arm64 15.2.0-3 [390 kB] Get: 18 http://deb.debian.org/debian forky/main arm64 liblapack3 arm64 3.12.1-7 [1846 kB] Get: 19 http://deb.debian.org/debian forky/main arm64 python3-numpy arm64 1:2.2.4+ds-1.2 [3620 kB] Get: 20 http://deb.debian.org/debian forky/main arm64 libproc2-0 arm64 2:4.0.4-9 [62.8 kB] Get: 21 http://deb.debian.org/debian forky/main arm64 procps arm64 2:4.0.4-9 [871 kB] Get: 22 http://deb.debian.org/debian forky/main arm64 sensible-utils all 0.0.26 [27.0 kB] Get: 23 http://deb.debian.org/debian forky/main arm64 libmagic-mgc arm64 1:5.46-5 [338 kB] Get: 24 http://deb.debian.org/debian forky/main arm64 libmagic1t64 arm64 1:5.46-5 [103 kB] Get: 25 http://deb.debian.org/debian forky/main arm64 file arm64 1:5.46-5 [43.7 kB] Get: 26 http://deb.debian.org/debian forky/main arm64 gettext-base arm64 0.23.1-2+b1 [241 kB] Get: 27 http://deb.debian.org/debian forky/main arm64 libuchardet0 arm64 0.0.8-2 [69.0 kB] Get: 28 http://deb.debian.org/debian forky/main arm64 groff-base arm64 1.23.0-9 [1130 kB] Get: 29 http://deb.debian.org/debian forky/main arm64 bsdextrautils arm64 2.41.1-3 [98.1 kB] Get: 30 http://deb.debian.org/debian forky/main arm64 libpipeline1 arm64 1.5.8-1 [40.2 kB] Get: 31 http://deb.debian.org/debian forky/main arm64 man-db arm64 2.13.1-1 [1453 kB] Get: 32 http://deb.debian.org/debian forky/main arm64 libedit2 arm64 3.1-20250104-1 [89.3 kB] Get: 33 http://deb.debian.org/debian forky/main arm64 libcbor0.10 arm64 0.10.2-2 [27.4 kB] Get: 34 http://deb.debian.org/debian forky/main arm64 libfido2-1 arm64 1.16.0-2 [74.4 kB] Get: 35 http://deb.debian.org/debian forky/main arm64 libkrb5support0 arm64 1.21.3-5 [32.4 kB] Get: 36 http://deb.debian.org/debian forky/main arm64 libcom-err2 arm64 1.47.2-3+b3 [24.9 kB] Get: 37 http://deb.debian.org/debian forky/main arm64 libk5crypto3 arm64 1.21.3-5 [81.2 kB] Get: 38 http://deb.debian.org/debian forky/main arm64 libkeyutils1 arm64 1.6.3-6 [9716 B] Get: 39 http://deb.debian.org/debian forky/main arm64 libkrb5-3 arm64 1.21.3-5 [308 kB] Get: 40 http://deb.debian.org/debian forky/main arm64 libgssapi-krb5-2 arm64 1.21.3-5 [127 kB] Get: 41 http://deb.debian.org/debian forky/main arm64 openssh-client arm64 1:10.0p1-8 [925 kB] Get: 42 http://deb.debian.org/debian forky/main arm64 m4 arm64 1.4.20-1 [316 kB] Get: 43 http://deb.debian.org/debian forky/main arm64 autoconf all 2.72-3.1 [494 kB] Get: 44 http://deb.debian.org/debian forky/main arm64 autotools-dev all 20240727.1 [60.2 kB] Get: 45 http://deb.debian.org/debian forky/main arm64 automake all 1:1.17-4 [862 kB] Get: 46 http://deb.debian.org/debian forky/main arm64 autopoint all 0.23.1-2 [770 kB] Get: 47 http://deb.debian.org/debian forky/main arm64 cmake-data all 4.1.1+really3.31.6-1 [2268 kB] Get: 48 http://deb.debian.org/debian forky/main arm64 libxml2-16 arm64 2.14.5+dfsg-0.2 [582 kB] Get: 49 http://deb.debian.org/debian forky/main arm64 libarchive13t64 arm64 3.7.4-4+b1 [323 kB] Get: 50 http://deb.debian.org/debian forky/main arm64 libbrotli1 arm64 1.1.0-2+b7 [308 kB] Get: 51 http://deb.debian.org/debian forky/main arm64 libunistring5 arm64 1.3-2 [453 kB] Get: 52 http://deb.debian.org/debian forky/main arm64 libidn2-0 arm64 2.3.8-4 [108 kB] Get: 53 http://deb.debian.org/debian forky/main arm64 libsasl2-modules-db arm64 2.1.28+dfsg1-9 [20.1 kB] Get: 54 http://deb.debian.org/debian forky/main arm64 libsasl2-2 arm64 2.1.28+dfsg1-9 [55.6 kB] Get: 55 http://deb.debian.org/debian forky/main arm64 libldap2 arm64 2.6.10+dfsg-1 [179 kB] Get: 56 http://deb.debian.org/debian forky/main arm64 libnghttp2-14 arm64 1.64.0-1.1+b1 [71.7 kB] Get: 57 http://deb.debian.org/debian forky/main arm64 libnghttp3-9 arm64 1.11.0-1 [66.7 kB] Get: 58 http://deb.debian.org/debian forky/main arm64 libpsl5t64 arm64 0.21.2-1.1+b1 [57.1 kB] Get: 59 http://deb.debian.org/debian forky/main arm64 libp11-kit0 arm64 0.25.5-3 [409 kB] Get: 60 http://deb.debian.org/debian forky/main arm64 libtasn1-6 arm64 4.20.0-2 [47.3 kB] Get: 61 http://deb.debian.org/debian forky/main arm64 libgnutls30t64 arm64 3.8.9-3 [1375 kB] Get: 62 http://deb.debian.org/debian forky/main arm64 librtmp1 arm64 2.4+20151223.gitfa8646d.1-3 [56.3 kB] Get: 63 http://deb.debian.org/debian forky/main arm64 libssh2-1t64 arm64 1.11.1-1 [235 kB] Get: 64 http://deb.debian.org/debian forky/main arm64 libcurl4t64 arm64 8.15.0-1 [360 kB] Get: 65 http://deb.debian.org/debian forky/main arm64 libjsoncpp26 arm64 1.9.6-4 [73.2 kB] Get: 66 http://deb.debian.org/debian forky/main arm64 librhash1 arm64 1.4.6-1 [131 kB] Get: 67 http://deb.debian.org/debian forky/main arm64 libuv1t64 arm64 1.51.0-2 [150 kB] Get: 68 http://deb.debian.org/debian forky/main arm64 cmake arm64 4.1.1+really3.31.6-1 [9905 kB] Get: 69 http://deb.debian.org/debian forky/main arm64 comerr-dev arm64 2.1-1.47.2-3+b3 [56.9 kB] Get: 70 http://deb.debian.org/debian forky/main arm64 gcc-14-base arm64 14.3.0-8 [52.1 kB] Get: 71 http://deb.debian.org/debian forky/main arm64 cpp-14-aarch64-linux-gnu arm64 14.3.0-8 [9173 kB] Get: 72 http://deb.debian.org/debian forky/main arm64 cpp-14 arm64 14.3.0-8 [1276 B] Get: 73 http://deb.debian.org/debian forky/main arm64 libdebhelper-perl all 13.26 [91.8 kB] Get: 74 http://deb.debian.org/debian forky/main arm64 libgcc-14-dev arm64 14.3.0-8 [2364 kB] Get: 75 http://deb.debian.org/debian forky/main arm64 gcc-14-aarch64-linux-gnu arm64 14.3.0-8 [17.7 MB] Get: 76 http://deb.debian.org/debian forky/main arm64 gcc-14 arm64 14.3.0-8 [544 kB] Get: 77 http://deb.debian.org/debian forky/main arm64 libtool all 2.5.4-5 [540 kB] Get: 78 http://deb.debian.org/debian forky/main arm64 dh-autoreconf all 20 [17.1 kB] Get: 79 http://deb.debian.org/debian forky/main arm64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 80 http://deb.debian.org/debian forky/main arm64 libfile-stripnondeterminism-perl all 1.15.0-1 [19.9 kB] Get: 81 http://deb.debian.org/debian forky/main arm64 dh-strip-nondeterminism all 1.15.0-1 [8812 B] Get: 82 http://deb.debian.org/debian forky/main arm64 libelf1t64 arm64 0.193-3 [189 kB] Get: 83 http://deb.debian.org/debian forky/main arm64 dwz arm64 0.16-2 [100 kB] Get: 84 http://deb.debian.org/debian forky/main arm64 gettext arm64 0.23.1-2+b1 [1612 kB] Get: 85 http://deb.debian.org/debian forky/main arm64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 86 http://deb.debian.org/debian forky/main arm64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 87 http://deb.debian.org/debian forky/main arm64 debhelper all 13.26 [939 kB] Get: 88 http://deb.debian.org/debian forky/main arm64 dh-python all 6.20250414 [116 kB] Get: 89 http://deb.debian.org/debian forky/main arm64 fonts-mathjax all 2.7.9+dfsg-1 [2210 kB] Get: 90 http://deb.debian.org/debian forky/main arm64 libgfortran-15-dev arm64 15.2.0-3 [431 kB] Get: 91 http://deb.debian.org/debian forky/main arm64 gfortran-15-aarch64-linux-gnu arm64 15.2.0-3 [77.2 MB] Get: 92 http://deb.debian.org/debian forky/main arm64 gfortran-15 arm64 15.2.0-3 [17.8 kB] Get: 93 http://deb.debian.org/debian forky/main arm64 gfortran-aarch64-linux-gnu arm64 4:15.2.0-1 [1280 B] Get: 94 http://deb.debian.org/debian forky/main arm64 gfortran arm64 4:15.2.0-1 [1428 B] Get: 95 http://deb.debian.org/debian forky/main arm64 libgfortran-14-dev arm64 14.3.0-8 [417 kB] Get: 96 http://deb.debian.org/debian forky/main arm64 gfortran-14-aarch64-linux-gnu arm64 14.3.0-8 [9799 kB] Get: 97 http://deb.debian.org/debian forky/main arm64 gfortran-14 arm64 14.3.0-8 [15.3 kB] Get: 98 http://deb.debian.org/debian forky/main arm64 libnl-3-200 arm64 3.11.0-2 [57.9 kB] Get: 99 http://deb.debian.org/debian forky/main arm64 libnl-route-3-200 arm64 3.11.0-2 [176 kB] Get: 100 http://deb.debian.org/debian forky/main arm64 libibverbs1 arm64 56.1-1 [58.9 kB] Get: 101 http://deb.debian.org/debian forky/main arm64 ibverbs-providers arm64 56.1-1 [333 kB] Get: 102 http://deb.debian.org/debian forky/main arm64 libicu76 arm64 76.1-4 [9524 kB] Get: 103 http://deb.debian.org/debian forky/main arm64 icu-devtools arm64 76.1-4 [200 kB] Get: 104 http://deb.debian.org/debian forky/main arm64 libgssrpc4t64 arm64 1.21.3-5 [57.2 kB] Get: 105 http://deb.debian.org/debian forky/main arm64 libkadm5clnt-mit12 arm64 1.21.3-5 [41.1 kB] Get: 106 http://deb.debian.org/debian forky/main arm64 libkdb5-10t64 arm64 1.21.3-5 [41.3 kB] Get: 107 http://deb.debian.org/debian forky/main arm64 libkadm5srv-mit12 arm64 1.21.3-5 [53.0 kB] Get: 108 http://deb.debian.org/debian forky/main arm64 krb5-multidev arm64 1.21.3-5 [126 kB] Get: 109 http://deb.debian.org/debian forky/main arm64 libadios2-common-c++11-dev all 2.10.2+dfsg1-3 [25.9 kB] Get: 110 http://deb.debian.org/debian forky/main arm64 libadios2-common-core-dev arm64 2.10.2+dfsg1-3 [123 kB] Get: 111 http://deb.debian.org/debian forky/main arm64 librdmacm1t64 arm64 56.1-1 [67.2 kB] Get: 112 http://deb.debian.org/debian forky/main arm64 libfabric1 arm64 2.1.0-1.1 [548 kB] Get: 113 http://deb.debian.org/debian forky/main arm64 libevent-core-2.1-7t64 arm64 2.1.12-stable-10+b1 [126 kB] Get: 114 http://deb.debian.org/debian forky/main arm64 libevent-pthreads-2.1-7t64 arm64 2.1.12-stable-10+b1 [54.4 kB] Get: 115 http://deb.debian.org/debian forky/main arm64 libhwloc15 arm64 2.12.2-1 [142 kB] Get: 116 http://deb.debian.org/debian forky/main arm64 libmunge2 arm64 0.5.16-1 [19.2 kB] Get: 117 http://deb.debian.org/debian forky/main arm64 libpciaccess0 arm64 0.17-3+b3 [51.2 kB] Get: 118 http://deb.debian.org/debian forky/main arm64 libxau6 arm64 1:1.0.11-1 [20.6 kB] Get: 119 http://deb.debian.org/debian forky/main arm64 libxdmcp6 arm64 1:1.1.5-1 [27.8 kB] Get: 120 http://deb.debian.org/debian forky/main arm64 libxcb1 arm64 1.17.0-2+b1 [143 kB] Get: 121 http://deb.debian.org/debian forky/main arm64 libx11-data all 2:1.8.12-1 [343 kB] Get: 122 http://deb.debian.org/debian forky/main arm64 libx11-6 arm64 2:1.8.12-1 [795 kB] Get: 123 http://deb.debian.org/debian forky/main arm64 libxext6 arm64 2:1.3.4-1+b3 [49.2 kB] Get: 124 http://deb.debian.org/debian forky/main arm64 libxnvctrl0 arm64 535.171.04-1+b2 [14.0 kB] Get: 125 http://deb.debian.org/debian forky/main arm64 ocl-icd-libopencl1 arm64 2.3.3-1 [42.7 kB] Get: 126 http://deb.debian.org/debian forky/main arm64 libhwloc-plugins arm64 2.12.2-1 [18.1 kB] Get: 127 http://deb.debian.org/debian forky/main arm64 libpmix2t64 arm64 5.0.7-1 [585 kB] Get: 128 http://deb.debian.org/debian forky/main arm64 libz3-4 arm64 4.13.3-1 [7507 kB] Get: 129 http://deb.debian.org/debian forky/main arm64 libllvm17t64 arm64 1:17.0.6-22+b3 [21.3 MB] Get: 130 http://deb.debian.org/debian forky/main arm64 libamd-comgr2 arm64 6.0+git20231212.4510c28+dfsg-3+b2 [12.1 MB] Get: 131 http://deb.debian.org/debian forky/main arm64 libdrm-common all 2.4.125-2 [8576 B] Get: 132 http://deb.debian.org/debian forky/main arm64 libdrm2 arm64 2.4.125-2 [38.4 kB] Get: 133 http://deb.debian.org/debian forky/main arm64 libdrm-amdgpu1 arm64 2.4.125-2 [22.3 kB] Get: 134 http://deb.debian.org/debian forky/main arm64 libnuma1 arm64 2.0.19-1 [21.6 kB] Get: 135 http://deb.debian.org/debian forky/main arm64 libhsakmt1 arm64 6.2.4+ds-1 [58.3 kB] Get: 136 http://deb.debian.org/debian forky/main arm64 libhsa-runtime64-1 arm64 6.1.2-3 [302 kB] Get: 137 http://deb.debian.org/debian forky/main arm64 libamdhip64-5 arm64 5.7.1-6 [8824 kB] Get: 138 http://deb.debian.org/debian forky/main arm64 libibumad3 arm64 56.1-1 [28.6 kB] Get: 139 http://deb.debian.org/debian forky/main arm64 libibmad5 arm64 56.1-1 [42.4 kB] Get: 140 http://deb.debian.org/debian forky/main arm64 libucx0 arm64 1.18.1+ds-2+b1 [1016 kB] Get: 141 http://deb.debian.org/debian forky/main arm64 libopenmpi40 arm64 5.0.7-1 [2087 kB] Get: 142 http://deb.debian.org/debian forky/main arm64 libaec0 arm64 1.1.4-2 [22.6 kB] Get: 143 http://deb.debian.org/debian forky/main arm64 libsz2 arm64 1.1.4-2 [8072 B] Get: 144 http://deb.debian.org/debian forky/main arm64 libhdf5-openmpi-310 arm64 1.14.5+repack-3 [1207 kB] Get: 145 http://deb.debian.org/debian forky/main arm64 libpng16-16t64 arm64 1.6.50-1 [275 kB] Get: 146 http://deb.debian.org/debian forky/main arm64 libpugixml1v5 arm64 1.14-2 [80.1 kB] Get: 147 http://deb.debian.org/debian forky/main arm64 libyaml-cpp0.8 arm64 0.8.0+dfsg-7 [119 kB] Get: 148 http://deb.debian.org/debian forky/main arm64 libnorm1t64 arm64 1.5.9+dfsg-3.1+b2 [205 kB] Get: 149 http://deb.debian.org/debian forky/main arm64 libpgm-5.3-0t64 arm64 5.3.128~dfsg-2.1+b1 [152 kB] Get: 150 http://deb.debian.org/debian forky/main arm64 libsodium23 arm64 1.0.18-1+b2 [121 kB] Get: 151 http://deb.debian.org/debian forky/main arm64 libzmq5 arm64 4.3.5-1+b3 [253 kB] Get: 152 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-plugins arm64 2.10.2+dfsg1-3 [15.2 kB] Get: 153 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-core-2.10 arm64 2.10.2+dfsg1-3 [1521 kB] Get: 154 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-c-2.10 arm64 2.10.2+dfsg1-3 [59.6 kB] Get: 155 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-auxiliary-2.10 arm64 2.10.2+dfsg1-3 [373 kB] Get: 156 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-auxiliary-dev arm64 2.10.2+dfsg1-3 [23.4 kB] Get: 157 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-c++11-2.10 arm64 2.10.2+dfsg1-3 [185 kB] Get: 158 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-core-dev arm64 2.10.2+dfsg1-3 [80.0 kB] Get: 159 http://deb.debian.org/debian forky/main arm64 libadios2-mpi-c++11-dev arm64 2.10.2+dfsg1-3 [11.4 kB] Get: 160 http://deb.debian.org/debian forky/main arm64 libhdf5-310 arm64 1.14.5+repack-3 [1155 kB] Get: 161 http://deb.debian.org/debian forky/main arm64 libadios2-serial-plugins arm64 2.10.2+dfsg1-3 [15.2 kB] Get: 162 http://deb.debian.org/debian forky/main arm64 libadios2-serial-core-2.10 arm64 2.10.2+dfsg1-3 [1440 kB] Get: 163 http://deb.debian.org/debian forky/main arm64 libadios2-serial-c-2.10 arm64 2.10.2+dfsg1-3 [57.4 kB] Get: 164 http://deb.debian.org/debian forky/main arm64 libadios2-serial-auxiliary-2.10 arm64 2.10.2+dfsg1-3 [373 kB] Get: 165 http://deb.debian.org/debian forky/main arm64 libaec-dev arm64 1.1.4-2 [20.3 kB] Get: 166 http://deb.debian.org/debian forky/main arm64 libsuitesparseconfig7 arm64 1:7.11.0+dfsg-2 [33.3 kB] Get: 167 http://deb.debian.org/debian forky/main arm64 libamd3 arm64 1:7.11.0+dfsg-2 [48.1 kB] Get: 168 http://deb.debian.org/debian forky/main arm64 libarpack2t64 arm64 3.9.1-6 [84.2 kB] Get: 169 http://deb.debian.org/debian forky/main arm64 libblas-dev arm64 3.12.1-7 [145 kB] Get: 170 http://deb.debian.org/debian forky/main arm64 liblapack-dev arm64 3.12.1-7 [3829 kB] Get: 171 http://deb.debian.org/debian forky/main arm64 libarpack2-dev arm64 3.9.1-6 [102 kB] Get: 172 http://deb.debian.org/debian forky/main arm64 libbasix0.9 arm64 0.9.0-2+b2 [356 kB] Get: 173 http://deb.debian.org/debian forky/main arm64 libpkgconf3 arm64 1.8.1-4 [35.3 kB] Get: 174 http://deb.debian.org/debian forky/main arm64 pkgconf-bin arm64 1.8.1-4 [29.6 kB] Get: 175 http://deb.debian.org/debian forky/main arm64 pkgconf arm64 1.8.1-4 [26.1 kB] Get: 176 http://deb.debian.org/debian forky/main arm64 pkg-config arm64 1.8.1-4 [14.0 kB] Get: 177 http://deb.debian.org/debian forky/main arm64 libeigen3-dev all 3.4.0-5 [1034 kB] Get: 178 http://deb.debian.org/debian forky/main arm64 libbasix-dev arm64 0.9.0-2+b2 [67.1 kB] Get: 179 http://deb.debian.org/debian forky/main arm64 libstdc++-14-dev arm64 14.3.0-8 [2567 kB] Get: 180 http://deb.debian.org/debian forky/main arm64 libboost1.83-dev arm64 1.83.0-4.2 [10.6 MB] Get: 181 http://deb.debian.org/debian forky/main arm64 libboost-atomic1.83.0 arm64 1.83.0-4.2 [234 kB] Get: 182 http://deb.debian.org/debian forky/main arm64 libboost-atomic1.83-dev arm64 1.83.0-4.2 [235 kB] Get: 183 http://deb.debian.org/debian forky/main arm64 libboost-chrono1.83.0t64 arm64 1.83.0-4.2 [239 kB] Get: 184 http://deb.debian.org/debian forky/main arm64 libboost-chrono1.83-dev arm64 1.83.0-4.2 [245 kB] Get: 185 http://deb.debian.org/debian forky/main arm64 libboost-chrono-dev arm64 1.83.0.2+b2 [4212 B] Get: 186 http://deb.debian.org/debian forky/main arm64 libboost-date-time1.83.0 arm64 1.83.0-4.2 [231 kB] Get: 187 http://deb.debian.org/debian forky/main arm64 libboost-serialization1.83.0 arm64 1.83.0-4.2 [325 kB] Get: 188 http://deb.debian.org/debian forky/main arm64 libboost-serialization1.83-dev arm64 1.83.0-4.2 [373 kB] Get: 189 http://deb.debian.org/debian forky/main arm64 libboost-date-time1.83-dev arm64 1.83.0-4.2 [239 kB] Get: 190 http://deb.debian.org/debian forky/main arm64 libboost-dev arm64 1.83.0.2+b2 [3828 B] Get: 191 http://deb.debian.org/debian forky/main arm64 libboost-filesystem1.83.0 arm64 1.83.0-4.2 [273 kB] Get: 192 http://deb.debian.org/debian forky/main arm64 libboost-system1.83.0 arm64 1.83.0-4.2 [231 kB] Get: 193 http://deb.debian.org/debian forky/main arm64 libboost-system1.83-dev arm64 1.83.0-4.2 [232 kB] Get: 194 http://deb.debian.org/debian forky/main arm64 libboost-filesystem1.83-dev arm64 1.83.0-4.2 [292 kB] Get: 195 http://deb.debian.org/debian forky/main arm64 libboost-filesystem-dev arm64 1.83.0.2+b2 [3616 B] Get: 196 http://deb.debian.org/debian forky/main arm64 libboost-regex1.83.0 arm64 1.83.0-4.2 [314 kB] Get: 197 http://deb.debian.org/debian forky/main arm64 libicu-dev arm64 76.1-4 [10.6 MB] Get: 198 http://deb.debian.org/debian forky/main arm64 libboost-regex1.83-dev arm64 1.83.0-4.2 [335 kB] Get: 199 http://deb.debian.org/debian forky/main arm64 libboost-iostreams1.83-dev arm64 1.83.0-4.2 [261 kB] Get: 200 http://deb.debian.org/debian forky/main arm64 libboost-iostreams-dev arm64 1.83.0.2+b2 [3568 B] Get: 201 http://deb.debian.org/debian forky/main arm64 libboost-math1.83.0 arm64 1.83.0-4.2 [471 kB] Get: 202 http://deb.debian.org/debian forky/main arm64 libboost-math1.83-dev arm64 1.83.0-4.2 [536 kB] Get: 203 http://deb.debian.org/debian forky/main arm64 libboost-math-dev arm64 1.83.0.2+b2 [3784 B] Get: 204 http://deb.debian.org/debian forky/main arm64 libboost-mpi1.83.0 arm64 1.83.0-4.2 [268 kB] Get: 205 http://deb.debian.org/debian forky/main arm64 openmpi-common all 5.0.7-1 [97.2 kB] Get: 206 http://deb.debian.org/debian forky/main arm64 libnl-3-dev arm64 3.11.0-2 [104 kB] Get: 207 http://deb.debian.org/debian forky/main arm64 libnl-route-3-dev arm64 3.11.0-2 [210 kB] Get: 208 http://deb.debian.org/debian forky/main arm64 libibverbs-dev arm64 56.1-1 [642 kB] Get: 209 http://deb.debian.org/debian forky/main arm64 libnuma-dev arm64 2.0.19-1 [37.6 kB] Get: 210 http://deb.debian.org/debian forky/main arm64 libltdl7 arm64 2.5.4-5 [415 kB] Get: 211 http://deb.debian.org/debian forky/main arm64 libltdl-dev arm64 2.5.4-5 [168 kB] Get: 212 http://deb.debian.org/debian forky/main arm64 libhwloc-dev arm64 2.12.2-1 [239 kB] Get: 213 http://deb.debian.org/debian forky/main arm64 libevent-2.1-7t64 arm64 2.1.12-stable-10+b1 [170 kB] Get: 214 http://deb.debian.org/debian forky/main arm64 libevent-extra-2.1-7t64 arm64 2.1.12-stable-10+b1 [102 kB] Get: 215 http://deb.debian.org/debian forky/main arm64 libevent-openssl-2.1-7t64 arm64 2.1.12-stable-10+b1 [60.4 kB] Get: 216 http://deb.debian.org/debian forky/main arm64 libevent-dev arm64 2.1.12-stable-10+b1 [304 kB] Get: 217 http://deb.debian.org/debian forky/main arm64 zlib1g-dev arm64 1:1.3.dfsg+really1.3.1-1+b1 [917 kB] Get: 218 http://deb.debian.org/debian forky/main arm64 libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [326 kB] Get: 219 http://deb.debian.org/debian forky/main arm64 libpmix-dev arm64 5.0.7-1 [3947 kB] Get: 220 http://deb.debian.org/debian forky/main arm64 libjs-jquery-ui all 1.13.2+dfsg-1 [250 kB] Get: 221 http://deb.debian.org/debian forky/main arm64 openmpi-bin arm64 5.0.7-1 [180 kB] Get: 222 http://deb.debian.org/debian forky/main arm64 libopenmpi-dev arm64 5.0.7-1 [1089 kB] Get: 223 http://deb.debian.org/debian forky/main arm64 mpi-default-dev arm64 1.18 [3372 B] Get: 224 http://deb.debian.org/debian forky/main arm64 libboost-mpi1.83-dev arm64 1.83.0-4.2 [291 kB] Get: 225 http://deb.debian.org/debian forky/main arm64 libboost-mpi-dev arm64 1.83.0.2+b2 [3668 B] Get: 226 http://deb.debian.org/debian forky/main arm64 libboost-program-options1.83.0 arm64 1.83.0-4.2 [331 kB] Get: 227 http://deb.debian.org/debian forky/main arm64 libboost-program-options1.83-dev arm64 1.83.0-4.2 [368 kB] Get: 228 http://deb.debian.org/debian forky/main arm64 libboost-program-options-dev arm64 1.83.0.2+b2 [3600 B] Get: 229 http://deb.debian.org/debian forky/main arm64 libboost-serialization-dev arm64 1.83.0.2+b2 [3816 B] Get: 230 http://deb.debian.org/debian forky/main arm64 libboost-thread1.83.0 arm64 1.83.0-4.2 [266 kB] Get: 231 http://deb.debian.org/debian forky/main arm64 libboost-thread1.83-dev arm64 1.83.0-4.2 [276 kB] Get: 232 http://deb.debian.org/debian forky/main arm64 libboost-thread-dev arm64 1.83.0.2+b2 [3616 B] Get: 233 http://deb.debian.org/debian forky/main arm64 libboost-timer1.83.0 arm64 1.83.0-4.2 [235 kB] Get: 234 http://deb.debian.org/debian forky/main arm64 libboost-timer1.83-dev arm64 1.83.0-4.2 [237 kB] Get: 235 http://deb.debian.org/debian forky/main arm64 libboost-timer-dev arm64 1.83.0.2+b2 [3712 B] Get: 236 http://deb.debian.org/debian forky/main arm64 libbrotli-dev arm64 1.1.0-2+b7 [308 kB] Get: 237 http://deb.debian.org/debian forky/main arm64 libbtf2 arm64 1:7.11.0+dfsg-2 [33.9 kB] Get: 238 http://deb.debian.org/debian forky/main arm64 libc6-dbg arm64 2.41-12 [6679 kB] Get: 239 http://deb.debian.org/debian forky/main arm64 libcamd3 arm64 1:7.11.0+dfsg-2 [44.7 kB] Get: 240 http://deb.debian.org/debian forky/main arm64 libccolamd3 arm64 1:7.11.0+dfsg-2 [47.3 kB] Get: 241 http://deb.debian.org/debian forky/main arm64 libcolamd3 arm64 1:7.11.0+dfsg-2 [41.5 kB] Get: 242 http://deb.debian.org/debian forky/main arm64 libcholmod5 arm64 1:7.11.0+dfsg-2 [563 kB] Get: 243 http://deb.debian.org/debian forky/main arm64 libcombblas2.0.0t64 arm64 2.0.0-6+b2 [258 kB] Get: 244 http://deb.debian.org/debian forky/main arm64 libidn2-dev arm64 2.3.8-4 [102 kB] Get: 245 http://deb.debian.org/debian forky/main arm64 libkrb5-dev arm64 1.21.3-5 [16.1 kB] Get: 246 http://deb.debian.org/debian forky/main arm64 libldap-dev arm64 2.6.10+dfsg-1 [305 kB] Get: 247 http://deb.debian.org/debian forky/main arm64 libnghttp2-dev arm64 1.64.0-1.1+b1 [112 kB] Get: 248 http://deb.debian.org/debian forky/main arm64 libnghttp3-dev arm64 1.11.0-1 [94.6 kB] Get: 249 http://deb.debian.org/debian forky/main arm64 libpsl-dev arm64 0.21.2-1.1+b1 [77.9 kB] Get: 250 http://deb.debian.org/debian forky/main arm64 libgmpxx4ldbl arm64 2:6.3.0+dfsg-5 [329 kB] Get: 251 http://deb.debian.org/debian forky/main arm64 libgmp-dev arm64 2:6.3.0+dfsg-5 [621 kB] Get: 252 http://deb.debian.org/debian forky/main arm64 libunbound8 arm64 1.23.1-1 [561 kB] Get: 253 http://deb.debian.org/debian forky/main arm64 libgnutls-dane0t64 arm64 3.8.9-3 [453 kB] Get: 254 http://deb.debian.org/debian forky/main arm64 libgnutls-openssl27t64 arm64 3.8.9-3 [453 kB] Get: 255 http://deb.debian.org/debian forky/main arm64 libp11-kit-dev arm64 0.25.5-3 [208 kB] Get: 256 http://deb.debian.org/debian forky/main arm64 libtasn1-6-dev arm64 4.20.0-2 [96.7 kB] Get: 257 http://deb.debian.org/debian forky/main arm64 nettle-dev arm64 3.10.1-1 [1325 kB] Get: 258 http://deb.debian.org/debian forky/main arm64 libgnutls28-dev arm64 3.8.9-3 [1416 kB] Get: 259 http://deb.debian.org/debian forky/main arm64 librtmp-dev arm64 2.4+20151223.gitfa8646d.1-3 [173 kB] Get: 260 http://deb.debian.org/debian forky/main arm64 libssl-dev arm64 3.5.2-1 [3386 kB] Get: 261 http://deb.debian.org/debian forky/main arm64 libssh2-1-dev arm64 1.11.1-1 [388 kB] Get: 262 http://deb.debian.org/debian forky/main arm64 libzstd-dev arm64 1.5.7+dfsg-1.1 [335 kB] Get: 263 http://deb.debian.org/debian forky/main arm64 libcurl4-openssl-dev arm64 8.15.0-1 [497 kB] Get: 264 http://deb.debian.org/debian forky/main arm64 libcxsparse4 arm64 1:7.11.0+dfsg-2 [89.4 kB] Get: 265 http://deb.debian.org/debian forky/main arm64 libfmt10 arm64 10.1.1+ds1-4 [121 kB] Get: 266 http://deb.debian.org/debian forky/main arm64 libfftw3-double3 arm64 3.3.10-2+b1 [337 kB] Get: 267 http://deb.debian.org/debian forky/main arm64 libfftw3-long3 arm64 3.3.10-2+b1 [546 kB] Get: 268 http://deb.debian.org/debian forky/main arm64 libfftw3-single3 arm64 3.3.10-2+b1 [517 kB] Get: 269 http://deb.debian.org/debian forky/main arm64 libfftw3-mpi3 arm64 3.3.10-2+b1 [54.3 kB] Get: 270 http://deb.debian.org/debian forky/main arm64 libmetis5 arm64 5.1.0.dfsg-7+b2 [161 kB] Get: 271 http://deb.debian.org/debian forky/main arm64 libptscotch-7.0 arm64 7.0.7-1 [571 kB] Get: 272 http://deb.debian.org/debian forky/main arm64 libsuperlu-dist8 arm64 8.2.1+dfsg1-5+b1 [526 kB] Get: 273 http://deb.debian.org/debian forky/main arm64 libhypre-2.32.0 arm64 2.32.0-4 [1507 kB] Get: 274 http://deb.debian.org/debian forky/main arm64 libklu2 arm64 1:7.11.0+dfsg-2 [92.5 kB] Get: 275 http://deb.debian.org/debian forky/main arm64 mpi-default-bin arm64 1.18 [2576 B] Get: 276 http://deb.debian.org/debian forky/main arm64 libscalapack-openmpi2.2 arm64 2.2.2-1 [1246 kB] Get: 277 http://deb.debian.org/debian forky/main arm64 libmumps-5.7 arm64 5.7.3-3+b1 [1716 kB] Get: 278 http://deb.debian.org/debian forky/main arm64 libspqr4 arm64 1:7.11.0+dfsg-2 [139 kB] Get: 279 http://deb.debian.org/debian forky/main arm64 libsuperlu7 arm64 7.0.1+dfsg1-2 [145 kB] Get: 280 http://deb.debian.org/debian forky/main arm64 libumfpack6 arm64 1:7.11.0+dfsg-2 [240 kB] Get: 281 http://deb.debian.org/debian forky/main arm64 libyaml-0-2 arm64 0.2.5-2 [49.2 kB] Get: 282 http://deb.debian.org/debian forky/main arm64 libpetsc-real3.22 arm64 3.22.5+dfsg1-2+b1 [5541 kB] Get: 283 http://deb.debian.org/debian forky/main arm64 libparpack2t64 arm64 3.9.1-6 [78.2 kB] Get: 284 http://deb.debian.org/debian forky/main arm64 libslepc-real3.22 arm64 3.22.2+dfsg1-1 [955 kB] Get: 285 http://deb.debian.org/debian forky/main arm64 libspdlog1.15 arm64 1:1.15.3+ds-1 [99.9 kB] Get: 286 http://deb.debian.org/debian forky/main arm64 libdolfinx-real0.9 arm64 1:0.9.0-7 [476 kB] Get: 287 http://deb.debian.org/debian forky/main arm64 libjs-mathjax all 2.7.9+dfsg-1 [5667 kB] Get: 288 http://deb.debian.org/debian forky/main arm64 libldl3 arm64 1:7.11.0+dfsg-2 [33.9 kB] Get: 289 http://deb.debian.org/debian forky/main arm64 libsuitesparse-mongoose3 arm64 1:7.11.0+dfsg-2 [54.9 kB] Get: 290 http://deb.debian.org/debian forky/main arm64 librbio4 arm64 1:7.11.0+dfsg-2 [47.4 kB] Get: 291 http://deb.debian.org/debian forky/main arm64 libspex3 arm64 1:7.11.0+dfsg-2 [66.2 kB] Get: 292 http://deb.debian.org/debian forky/main arm64 libparu1 arm64 1:7.11.0+dfsg-2 [71.5 kB] Get: 293 http://deb.debian.org/debian forky/main arm64 libsuitesparse-dev arm64 1:7.11.0+dfsg-2 [1355 kB] Get: 294 http://deb.debian.org/debian forky/main arm64 libscotch-7.0 arm64 7.0.7-1 [367 kB] Get: 295 http://deb.debian.org/debian forky/main arm64 libscotch-dev arm64 7.0.7-1 [1543 kB] Get: 296 http://deb.debian.org/debian forky/main arm64 libptscotch-dev arm64 7.0.7-1 [1315 kB] Get: 297 http://deb.debian.org/debian forky/main arm64 libscalapack-openmpi-dev arm64 2.2.2-1 [11.1 kB] Get: 298 http://deb.debian.org/debian forky/main arm64 libscalapack-mpi-dev arm64 2.2.2-1 [6264 B] Get: 299 http://deb.debian.org/debian forky/main arm64 libfftw3-bin arm64 3.3.10-2+b1 [44.3 kB] Get: 300 http://deb.debian.org/debian forky/main arm64 libfftw3-dev arm64 3.3.10-2+b1 [1280 kB] Get: 301 http://deb.debian.org/debian forky/main arm64 libfftw3-mpi-dev arm64 3.3.10-2+b1 [59.5 kB] Get: 302 http://deb.debian.org/debian forky/main arm64 opencl-c-headers all 3.0~2025.07.22-1 [47.5 kB] Get: 303 http://deb.debian.org/debian forky/main arm64 opencl-clhpp-headers all 3.0~2025.07.22-1 [51.0 kB] Get: 304 http://deb.debian.org/debian forky/main arm64 ocl-icd-opencl-dev arm64 2.3.3-1 [8808 B] Get: 305 http://deb.debian.org/debian forky/main arm64 libhdf5-openmpi-fortran-310 arm64 1.14.5+repack-3 [110 kB] Get: 306 http://deb.debian.org/debian forky/main arm64 libhdf5-openmpi-hl-310 arm64 1.14.5+repack-3 [66.2 kB] Get: 307 http://deb.debian.org/debian forky/main arm64 libhdf5-openmpi-hl-fortran-310 arm64 1.14.5+repack-3 [42.3 kB] Get: 308 http://deb.debian.org/debian forky/main arm64 libhdf5-openmpi-cpp-310 arm64 1.14.5+repack-3 [121 kB] Get: 309 http://deb.debian.org/debian forky/main arm64 libhdf5-openmpi-hl-cpp-310 arm64 1.14.5+repack-3 [24.5 kB] Get: 310 http://deb.debian.org/debian forky/main arm64 libjpeg62-turbo arm64 1:2.1.5-4 [173 kB] Get: 311 http://deb.debian.org/debian forky/main arm64 libjpeg62-turbo-dev arm64 1:2.1.5-4 [293 kB] Get: 312 http://deb.debian.org/debian forky/main arm64 libjpeg-dev arm64 1:2.1.5-4 [72.2 kB] Get: 313 http://deb.debian.org/debian forky/main arm64 libhdf5-openmpi-dev arm64 1.14.5+repack-3 [3335 kB] Get: 314 http://deb.debian.org/debian forky/main arm64 libhdf5-mpi-dev arm64 1.14.5+repack-3 [18.7 kB] Get: 315 http://deb.debian.org/debian forky/main arm64 libsuperlu-dev arm64 7.0.1+dfsg1-2 [22.0 kB] Get: 316 http://deb.debian.org/debian forky/main arm64 libsuperlu-dist-dev arm64 8.2.1+dfsg1-5+b1 [849 kB] Get: 317 http://deb.debian.org/debian forky/main arm64 xorg-sgml-doctools all 1:1.11-1.1 [22.1 kB] Get: 318 http://deb.debian.org/debian forky/main arm64 x11proto-dev all 2024.1-1 [603 kB] Get: 319 http://deb.debian.org/debian forky/main arm64 libxau-dev arm64 1:1.0.11-1 [23.9 kB] Get: 320 http://deb.debian.org/debian forky/main arm64 libxdmcp-dev arm64 1:1.1.5-1 [44.2 kB] Get: 321 http://deb.debian.org/debian forky/main arm64 xtrans-dev all 1.4.0-1 [98.7 kB] Get: 322 http://deb.debian.org/debian forky/main arm64 libxcb1-dev arm64 1.17.0-2+b1 [182 kB] Get: 323 http://deb.debian.org/debian forky/main arm64 libx11-dev arm64 2:1.8.12-1 [883 kB] Get: 324 http://deb.debian.org/debian forky/main arm64 libyaml-dev arm64 0.2.5-2 [61.1 kB] Get: 325 http://deb.debian.org/debian forky/main arm64 libpetsc3.22-dev-common all 3.22.5+dfsg1-2 [310 kB] Get: 326 http://deb.debian.org/debian forky/main arm64 libhypre-dev arm64 2.32.0-4 [1845 kB] Get: 327 http://deb.debian.org/debian forky/main arm64 libmumps-headers-dev all 5.7.3-3 [36.3 kB] Get: 328 http://deb.debian.org/debian forky/main arm64 libmumps-dev arm64 5.7.3-3+b1 [1741 kB] Get: 329 http://deb.debian.org/debian forky/main arm64 valgrind arm64 1:3.24.0-3 [8820 kB] Get: 330 http://deb.debian.org/debian forky/main arm64 valgrind-mpi arm64 1:3.24.0-3 [53.9 kB] Get: 331 http://deb.debian.org/debian forky/main arm64 libpetsc-real3.22-dev arm64 3.22.5+dfsg1-2+b1 [7951 kB] Get: 332 http://deb.debian.org/debian forky/main arm64 libparpack2-dev arm64 3.9.1-6 [93.2 kB] Get: 333 http://deb.debian.org/debian forky/main arm64 libslepc-real3.22-dev arm64 3.22.2+dfsg1-1 [6370 kB] Get: 334 http://deb.debian.org/debian forky/main arm64 libdolfinx-real-dev arm64 1:0.9.0-7 [48.8 kB] Get: 335 http://deb.debian.org/debian forky/main arm64 libpugixml-dev arm64 1.14-2 [103 kB] Get: 336 http://deb.debian.org/debian forky/main arm64 libfmt-dev arm64 10.1.1+ds1-4 [177 kB] Get: 337 http://deb.debian.org/debian forky/main arm64 libspdlog-dev arm64 1:1.15.3+ds-1 [91.9 kB] Get: 338 http://deb.debian.org/debian forky/main arm64 liblzma-dev arm64 5.8.1-1.1 [344 kB] Get: 339 http://deb.debian.org/debian forky/main arm64 libxml2-dev arm64 2.14.5+dfsg-0.2 [709 kB] Get: 340 http://deb.debian.org/debian forky/main arm64 python3-cffi-backend arm64 2.0.0-1 [97.8 kB] Get: 341 http://deb.debian.org/debian forky/main arm64 python3-ply all 3.11-9 [62.9 kB] Get: 342 http://deb.debian.org/debian forky/main arm64 python3-pycparser all 2.23-1 [78.4 kB] Get: 343 http://deb.debian.org/debian forky/main arm64 python3-cffi all 2.0.0-1 [90.3 kB] Get: 344 http://deb.debian.org/debian forky/main arm64 libpython3.13 arm64 3.13.7-1 [1978 kB] Get: 345 http://deb.debian.org/debian forky/main arm64 libexpat1-dev arm64 2.7.1-2 [145 kB] Get: 346 http://deb.debian.org/debian forky/main arm64 libpython3.13-dev arm64 3.13.7-1 [4924 kB] Get: 347 http://deb.debian.org/debian forky/main arm64 libpython3-dev arm64 3.13.7-1 [10.5 kB] Get: 348 http://deb.debian.org/debian forky/main arm64 python3.13-dev arm64 3.13.7-1 [504 kB] Get: 349 http://deb.debian.org/debian forky/main arm64 libjs-sphinxdoc all 8.2.3-6 [27.5 kB] Get: 350 http://deb.debian.org/debian forky/main arm64 python3-dev arm64 3.13.7-1 [26.1 kB] Get: 351 http://deb.debian.org/debian forky/main arm64 python3-ufl all 2024.2.0-3 [150 kB] Get: 352 http://deb.debian.org/debian forky/main arm64 python3-basix arm64 0.9.0-2+b2 [118 kB] Get: 353 http://deb.debian.org/debian forky/main arm64 python3-autocommand all 2.2.2-3 [13.6 kB] Get: 354 http://deb.debian.org/debian forky/main arm64 python3-more-itertools all 10.8.0-1 [71.7 kB] Get: 355 http://deb.debian.org/debian forky/main arm64 python3-typing-extensions all 4.15.0-1 [92.4 kB] Get: 356 http://deb.debian.org/debian forky/main arm64 python3-typeguard all 4.4.4-1 [37.1 kB] Get: 357 http://deb.debian.org/debian forky/main arm64 python3-inflect all 7.5.0-1 [33.0 kB] Get: 358 http://deb.debian.org/debian forky/main arm64 python3-jaraco.context all 6.0.1-1 [8276 B] Get: 359 http://deb.debian.org/debian forky/main arm64 python3-jaraco.functools all 4.1.0-1 [12.0 kB] Get: 360 http://deb.debian.org/debian forky/main arm64 python3-pkg-resources all 78.1.1-0.1 [224 kB] Get: 361 http://deb.debian.org/debian forky/main arm64 python3-jaraco.text all 4.0.0-1 [11.4 kB] Get: 362 http://deb.debian.org/debian forky/main arm64 python3-zipp all 3.23.0-1 [11.0 kB] Get: 363 http://deb.debian.org/debian forky/main arm64 python3-setuptools all 78.1.1-0.1 [738 kB] Get: 364 http://deb.debian.org/debian forky/main arm64 python3-ffcx all 1:0.9.0-2 [94.9 kB] Get: 365 http://deb.debian.org/debian forky/main arm64 libdolfinx-dev arm64 1:0.9.0-7 [202 kB] Get: 366 http://deb.debian.org/debian forky/main arm64 libhdf5-hl-310 arm64 1.14.5+repack-3 [66.1 kB] Get: 367 http://deb.debian.org/debian forky/main arm64 libjson-perl all 4.10000-1 [87.5 kB] Get: 368 http://deb.debian.org/debian forky/main arm64 liblzf1 arm64 3.6-4+b3 [10.1 kB] Get: 369 http://deb.debian.org/debian forky/main arm64 libpython3-all-dev arm64 3.13.7-1 [1068 B] Get: 370 http://deb.debian.org/debian forky/main arm64 robin-map-dev all 1.3.0-1 [29.8 kB] Get: 371 http://deb.debian.org/debian forky/main arm64 nanobind-dev all 2.5.0-1 [165 kB] Get: 372 http://deb.debian.org/debian forky/main arm64 python3-packaging all 25.0-1 [56.6 kB] Get: 373 http://deb.debian.org/debian forky/main arm64 python3-pyproject-hooks all 1.2.0-1 [11.7 kB] Get: 374 http://deb.debian.org/debian forky/main arm64 python3-wheel all 0.46.1-2 [21.7 kB] Get: 375 http://deb.debian.org/debian forky/main arm64 python3-build all 1.2.2-4 [36.2 kB] Get: 376 http://deb.debian.org/debian forky/main arm64 python3-installer all 0.7.0+dfsg1-3 [18.6 kB] Get: 377 http://deb.debian.org/debian forky/main arm64 pybuild-plugin-pyproject all 6.20250414 [11.8 kB] Get: 378 http://deb.debian.org/debian forky/main arm64 sphinx-common all 8.2.3-6 [619 kB] Get: 379 http://deb.debian.org/debian forky/main arm64 python-petsc4py-doc all 3.22.4-1 [779 kB] Get: 380 http://deb.debian.org/debian forky/main arm64 python3-adios2-serial arm64 2.10.2+dfsg1-3 [188 kB] Get: 381 http://deb.debian.org/debian forky/main arm64 python3-adios2 all 2.10.2+dfsg1-3 [19.7 kB] Get: 382 http://deb.debian.org/debian forky/main arm64 python3-all arm64 3.13.7-1 [1044 B] Get: 383 http://deb.debian.org/debian forky/main arm64 python3-all-dev arm64 3.13.7-1 [1068 B] Get: 384 http://deb.debian.org/debian forky/main arm64 python3-decorator all 5.2.1-2 [33.0 kB] Get: 385 http://deb.debian.org/debian forky/main arm64 python3-mpi4py arm64 4.1.0-3 [662 kB] Get: 386 http://deb.debian.org/debian forky/main arm64 python3-nanobind all 2.5.0-1 [41.8 kB] Get: 387 http://deb.debian.org/debian forky/main arm64 python3-pusimp all 0.1.1-1 [10.1 kB] Get: 388 http://deb.debian.org/debian forky/main arm64 python3-scipy arm64 1.15.3-1.1 [15.1 MB] Get: 389 http://deb.debian.org/debian forky/main arm64 swig arm64 4.3.0-1 [1406 kB] Get: 390 http://deb.debian.org/debian forky/main arm64 python3-petsc4py-real3.22 arm64 3.22.4-1 [1072 kB] Get: 391 http://deb.debian.org/debian forky/main arm64 python3-petsc4py-real all 3.22.4-1 [11.0 kB] Get: 392 http://deb.debian.org/debian forky/main arm64 python3-petsc4py all 3.22.4-1 [11.1 kB] Get: 393 http://deb.debian.org/debian forky/main arm64 python3-slepc4py-real3.22 arm64 3.22.2-1+b1 [272 kB] Get: 394 http://deb.debian.org/debian forky/main arm64 python3-slepc4py-real all 3.22.2-1 [6636 B] Get: 395 http://deb.debian.org/debian forky/main arm64 python3-slepc4py all 3.22.2-1 [6828 B] Get: 396 http://deb.debian.org/debian forky/main arm64 python3-dolfinx-real arm64 1:0.9.0-7 [1125 kB] Get: 397 http://deb.debian.org/debian forky/main arm64 python3-dolfinx arm64 1:0.9.0-7 [50.1 kB] Get: 398 http://deb.debian.org/debian forky/main arm64 python3-h5py-serial arm64 3.13.0-1+b1 [953 kB] Get: 399 http://deb.debian.org/debian forky/main arm64 python3-h5py all 3.13.0-1 [15.0 kB] Get: 400 http://deb.debian.org/debian forky/main arm64 python3-iniconfig all 1.1.1-2 [6396 B] Get: 401 http://deb.debian.org/debian forky/main arm64 python3-nibabel all 5.3.2-2 [2667 kB] Get: 402 http://deb.debian.org/debian forky/main arm64 python3-pathspec all 0.12.1-1 [28.1 kB] Get: 403 http://deb.debian.org/debian forky/main arm64 python3-pluggy all 1.6.0-1 [27.1 kB] Get: 404 http://deb.debian.org/debian forky/main arm64 python3-pyproject-metadata all 0.9.1-2 [21.6 kB] Get: 405 http://deb.debian.org/debian forky/main arm64 python3-pytest all 8.3.5-2 [250 kB] Get: 406 http://deb.debian.org/debian forky/main arm64 python3-scikit-build-core all 0.11.1-3 [118 kB] Fetched 401 MB in 1s (285 MB/s) Preconfiguring packages ... Selecting previously unselected package libexpat1:arm64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20020 files and directories currently installed.) Preparing to unpack .../libexpat1_2.7.1-2_arm64.deb ... Unpacking libexpat1:arm64 (2.7.1-2) ... Selecting previously unselected package libpython3.13-minimal:arm64. Preparing to unpack .../libpython3.13-minimal_3.13.7-1_arm64.deb ... Unpacking libpython3.13-minimal:arm64 (3.13.7-1) ... Selecting previously unselected package python3.13-minimal. Preparing to unpack .../python3.13-minimal_3.13.7-1_arm64.deb ... Unpacking python3.13-minimal (3.13.7-1) ... Setting up libpython3.13-minimal:arm64 (3.13.7-1) ... Setting up libexpat1:arm64 (2.7.1-2) ... Setting up python3.13-minimal (3.13.7-1) ... Selecting previously unselected package python3-minimal. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20354 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.13.7-1_arm64.deb ... Unpacking python3-minimal (3.13.7-1) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_13.0.0_all.deb ... Unpacking media-types (13.0.0) ... Selecting previously unselected package netbase. Preparing to unpack .../2-netbase_6.5_all.deb ... Unpacking netbase (6.5) ... Selecting previously unselected package tzdata. Preparing to unpack .../3-tzdata_2025b-5_all.deb ... Unpacking tzdata (2025b-5) ... Selecting previously unselected package libffi8:arm64. Preparing to unpack .../4-libffi8_3.5.2-2_arm64.deb ... Unpacking libffi8:arm64 (3.5.2-2) ... Selecting previously unselected package readline-common. Preparing to unpack .../5-readline-common_8.3-3_all.deb ... Unpacking readline-common (8.3-3) ... Selecting previously unselected package libreadline8t64:arm64. Preparing to unpack .../6-libreadline8t64_8.3-3_arm64.deb ... Adding 'diversion of /lib/aarch64-linux-gnu/libhistory.so.8 to /lib/aarch64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/aarch64-linux-gnu/libhistory.so.8.2 to /lib/aarch64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/aarch64-linux-gnu/libreadline.so.8 to /lib/aarch64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/aarch64-linux-gnu/libreadline.so.8.2 to /lib/aarch64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:arm64 (8.3-3) ... Selecting previously unselected package libpython3.13-stdlib:arm64. Preparing to unpack .../7-libpython3.13-stdlib_3.13.7-1_arm64.deb ... Unpacking libpython3.13-stdlib:arm64 (3.13.7-1) ... Selecting previously unselected package python3.13. Preparing to unpack .../8-python3.13_3.13.7-1_arm64.deb ... Unpacking python3.13 (3.13.7-1) ... Selecting previously unselected package libpython3-stdlib:arm64. Preparing to unpack .../9-libpython3-stdlib_3.13.7-1_arm64.deb ... Unpacking libpython3-stdlib:arm64 (3.13.7-1) ... Setting up python3-minimal (3.13.7-1) ... Selecting previously unselected package python3. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21369 files and directories currently installed.) Preparing to unpack .../000-python3_3.13.7-1_arm64.deb ... Unpacking python3 (3.13.7-1) ... Selecting previously unselected package python3-numpy-dev:arm64. Preparing to unpack .../001-python3-numpy-dev_1%3a2.2.4+ds-1.2_arm64.deb ... Unpacking python3-numpy-dev:arm64 (1:2.2.4+ds-1.2) ... Selecting previously unselected package libblas3:arm64. Preparing to unpack .../002-libblas3_3.12.1-7_arm64.deb ... Unpacking libblas3:arm64 (3.12.1-7) ... Selecting previously unselected package libgfortran5:arm64. Preparing to unpack .../003-libgfortran5_15.2.0-3_arm64.deb ... Unpacking libgfortran5:arm64 (15.2.0-3) ... Selecting previously unselected package liblapack3:arm64. Preparing to unpack .../004-liblapack3_3.12.1-7_arm64.deb ... Unpacking liblapack3:arm64 (3.12.1-7) ... Selecting previously unselected package python3-numpy. Preparing to unpack .../005-python3-numpy_1%3a2.2.4+ds-1.2_arm64.deb ... Unpacking python3-numpy (1:2.2.4+ds-1.2) ... Selecting previously unselected package libproc2-0:arm64. Preparing to unpack .../006-libproc2-0_2%3a4.0.4-9_arm64.deb ... Unpacking libproc2-0:arm64 (2:4.0.4-9) ... Selecting previously unselected package procps. Preparing to unpack .../007-procps_2%3a4.0.4-9_arm64.deb ... Unpacking procps (2:4.0.4-9) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../008-sensible-utils_0.0.26_all.deb ... Unpacking sensible-utils (0.0.26) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../009-libmagic-mgc_1%3a5.46-5_arm64.deb ... Unpacking libmagic-mgc (1:5.46-5) ... Selecting previously unselected package libmagic1t64:arm64. Preparing to unpack .../010-libmagic1t64_1%3a5.46-5_arm64.deb ... Unpacking libmagic1t64:arm64 (1:5.46-5) ... Selecting previously unselected package file. Preparing to unpack .../011-file_1%3a5.46-5_arm64.deb ... Unpacking file (1:5.46-5) ... Selecting previously unselected package gettext-base. Preparing to unpack .../012-gettext-base_0.23.1-2+b1_arm64.deb ... Unpacking gettext-base (0.23.1-2+b1) ... Selecting previously unselected package libuchardet0:arm64. Preparing to unpack .../013-libuchardet0_0.0.8-2_arm64.deb ... Unpacking libuchardet0:arm64 (0.0.8-2) ... Selecting previously unselected package groff-base. Preparing to unpack .../014-groff-base_1.23.0-9_arm64.deb ... Unpacking groff-base (1.23.0-9) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../015-bsdextrautils_2.41.1-3_arm64.deb ... Unpacking bsdextrautils (2.41.1-3) ... Selecting previously unselected package libpipeline1:arm64. Preparing to unpack .../016-libpipeline1_1.5.8-1_arm64.deb ... Unpacking libpipeline1:arm64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../017-man-db_2.13.1-1_arm64.deb ... Unpacking man-db (2.13.1-1) ... Selecting previously unselected package libedit2:arm64. Preparing to unpack .../018-libedit2_3.1-20250104-1_arm64.deb ... Unpacking libedit2:arm64 (3.1-20250104-1) ... Selecting previously unselected package libcbor0.10:arm64. Preparing to unpack .../019-libcbor0.10_0.10.2-2_arm64.deb ... Unpacking libcbor0.10:arm64 (0.10.2-2) ... Selecting previously unselected package libfido2-1:arm64. Preparing to unpack .../020-libfido2-1_1.16.0-2_arm64.deb ... Unpacking libfido2-1:arm64 (1.16.0-2) ... Selecting previously unselected package libkrb5support0:arm64. Preparing to unpack .../021-libkrb5support0_1.21.3-5_arm64.deb ... Unpacking libkrb5support0:arm64 (1.21.3-5) ... Selecting previously unselected package libcom-err2:arm64. Preparing to unpack .../022-libcom-err2_1.47.2-3+b3_arm64.deb ... Unpacking libcom-err2:arm64 (1.47.2-3+b3) ... Selecting previously unselected package libk5crypto3:arm64. Preparing to unpack .../023-libk5crypto3_1.21.3-5_arm64.deb ... Unpacking libk5crypto3:arm64 (1.21.3-5) ... Selecting previously unselected package libkeyutils1:arm64. Preparing to unpack .../024-libkeyutils1_1.6.3-6_arm64.deb ... Unpacking libkeyutils1:arm64 (1.6.3-6) ... Selecting previously unselected package libkrb5-3:arm64. Preparing to unpack .../025-libkrb5-3_1.21.3-5_arm64.deb ... Unpacking libkrb5-3:arm64 (1.21.3-5) ... Selecting previously unselected package libgssapi-krb5-2:arm64. Preparing to unpack .../026-libgssapi-krb5-2_1.21.3-5_arm64.deb ... Unpacking libgssapi-krb5-2:arm64 (1.21.3-5) ... Selecting previously unselected package openssh-client. Preparing to unpack .../027-openssh-client_1%3a10.0p1-8_arm64.deb ... Unpacking openssh-client (1:10.0p1-8) ... Selecting previously unselected package m4. Preparing to unpack .../028-m4_1.4.20-1_arm64.deb ... Unpacking m4 (1.4.20-1) ... Selecting previously unselected package autoconf. Preparing to unpack .../029-autoconf_2.72-3.1_all.deb ... Unpacking autoconf (2.72-3.1) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../030-autotools-dev_20240727.1_all.deb ... Unpacking autotools-dev (20240727.1) ... Selecting previously unselected package automake. Preparing to unpack .../031-automake_1%3a1.17-4_all.deb ... Unpacking automake (1:1.17-4) ... Selecting previously unselected package autopoint. Preparing to unpack .../032-autopoint_0.23.1-2_all.deb ... Unpacking autopoint (0.23.1-2) ... Selecting previously unselected package cmake-data. Preparing to unpack .../033-cmake-data_4.1.1+really3.31.6-1_all.deb ... Unpacking cmake-data (4.1.1+really3.31.6-1) ... Selecting previously unselected package libxml2-16:arm64. Preparing to unpack .../034-libxml2-16_2.14.5+dfsg-0.2_arm64.deb ... Unpacking libxml2-16:arm64 (2.14.5+dfsg-0.2) ... Selecting previously unselected package libarchive13t64:arm64. Preparing to unpack .../035-libarchive13t64_3.7.4-4+b1_arm64.deb ... Unpacking libarchive13t64:arm64 (3.7.4-4+b1) ... Selecting previously unselected package libbrotli1:arm64. Preparing to unpack .../036-libbrotli1_1.1.0-2+b7_arm64.deb ... Unpacking libbrotli1:arm64 (1.1.0-2+b7) ... Selecting previously unselected package libunistring5:arm64. Preparing to unpack .../037-libunistring5_1.3-2_arm64.deb ... Unpacking libunistring5:arm64 (1.3-2) ... Selecting previously unselected package libidn2-0:arm64. Preparing to unpack .../038-libidn2-0_2.3.8-4_arm64.deb ... Unpacking libidn2-0:arm64 (2.3.8-4) ... Selecting previously unselected package libsasl2-modules-db:arm64. Preparing to unpack .../039-libsasl2-modules-db_2.1.28+dfsg1-9_arm64.deb ... Unpacking libsasl2-modules-db:arm64 (2.1.28+dfsg1-9) ... Selecting previously unselected package libsasl2-2:arm64. Preparing to unpack .../040-libsasl2-2_2.1.28+dfsg1-9_arm64.deb ... Unpacking libsasl2-2:arm64 (2.1.28+dfsg1-9) ... Selecting previously unselected package libldap2:arm64. Preparing to unpack .../041-libldap2_2.6.10+dfsg-1_arm64.deb ... Unpacking libldap2:arm64 (2.6.10+dfsg-1) ... Selecting previously unselected package libnghttp2-14:arm64. Preparing to unpack .../042-libnghttp2-14_1.64.0-1.1+b1_arm64.deb ... Unpacking libnghttp2-14:arm64 (1.64.0-1.1+b1) ... Selecting previously unselected package libnghttp3-9:arm64. Preparing to unpack .../043-libnghttp3-9_1.11.0-1_arm64.deb ... Unpacking libnghttp3-9:arm64 (1.11.0-1) ... Selecting previously unselected package libpsl5t64:arm64. Preparing to unpack .../044-libpsl5t64_0.21.2-1.1+b1_arm64.deb ... Unpacking libpsl5t64:arm64 (0.21.2-1.1+b1) ... Selecting previously unselected package libp11-kit0:arm64. Preparing to unpack .../045-libp11-kit0_0.25.5-3_arm64.deb ... Unpacking libp11-kit0:arm64 (0.25.5-3) ... Selecting previously unselected package libtasn1-6:arm64. Preparing to unpack .../046-libtasn1-6_4.20.0-2_arm64.deb ... Unpacking libtasn1-6:arm64 (4.20.0-2) ... Selecting previously unselected package libgnutls30t64:arm64. Preparing to unpack .../047-libgnutls30t64_3.8.9-3_arm64.deb ... Unpacking libgnutls30t64:arm64 (3.8.9-3) ... Selecting previously unselected package librtmp1:arm64. Preparing to unpack .../048-librtmp1_2.4+20151223.gitfa8646d.1-3_arm64.deb ... Unpacking librtmp1:arm64 (2.4+20151223.gitfa8646d.1-3) ... Selecting previously unselected package libssh2-1t64:arm64. Preparing to unpack .../049-libssh2-1t64_1.11.1-1_arm64.deb ... Unpacking libssh2-1t64:arm64 (1.11.1-1) ... Selecting previously unselected package libcurl4t64:arm64. Preparing to unpack .../050-libcurl4t64_8.15.0-1_arm64.deb ... Unpacking libcurl4t64:arm64 (8.15.0-1) ... Selecting previously unselected package libjsoncpp26:arm64. Preparing to unpack .../051-libjsoncpp26_1.9.6-4_arm64.deb ... Unpacking libjsoncpp26:arm64 (1.9.6-4) ... Selecting previously unselected package librhash1:arm64. Preparing to unpack .../052-librhash1_1.4.6-1_arm64.deb ... Unpacking librhash1:arm64 (1.4.6-1) ... Selecting previously unselected package libuv1t64:arm64. Preparing to unpack .../053-libuv1t64_1.51.0-2_arm64.deb ... Unpacking libuv1t64:arm64 (1.51.0-2) ... Selecting previously unselected package cmake. Preparing to unpack .../054-cmake_4.1.1+really3.31.6-1_arm64.deb ... Unpacking cmake (4.1.1+really3.31.6-1) ... Selecting previously unselected package comerr-dev:arm64. Preparing to unpack .../055-comerr-dev_2.1-1.47.2-3+b3_arm64.deb ... Unpacking comerr-dev:arm64 (2.1-1.47.2-3+b3) ... Selecting previously unselected package gcc-14-base:arm64. Preparing to unpack .../056-gcc-14-base_14.3.0-8_arm64.deb ... Unpacking gcc-14-base:arm64 (14.3.0-8) ... Selecting previously unselected package cpp-14-aarch64-linux-gnu. Preparing to unpack .../057-cpp-14-aarch64-linux-gnu_14.3.0-8_arm64.deb ... Unpacking cpp-14-aarch64-linux-gnu (14.3.0-8) ... Selecting previously unselected package cpp-14. Preparing to unpack .../058-cpp-14_14.3.0-8_arm64.deb ... Unpacking cpp-14 (14.3.0-8) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../059-libdebhelper-perl_13.26_all.deb ... Unpacking libdebhelper-perl (13.26) ... Selecting previously unselected package libgcc-14-dev:arm64. Preparing to unpack .../060-libgcc-14-dev_14.3.0-8_arm64.deb ... Unpacking libgcc-14-dev:arm64 (14.3.0-8) ... Selecting previously unselected package gcc-14-aarch64-linux-gnu. Preparing to unpack .../061-gcc-14-aarch64-linux-gnu_14.3.0-8_arm64.deb ... Unpacking gcc-14-aarch64-linux-gnu (14.3.0-8) ... Selecting previously unselected package gcc-14. Preparing to unpack .../062-gcc-14_14.3.0-8_arm64.deb ... Unpacking gcc-14 (14.3.0-8) ... Selecting previously unselected package libtool. Preparing to unpack .../063-libtool_2.5.4-5_all.deb ... Unpacking libtool (2.5.4-5) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../064-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../065-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../066-libfile-stripnondeterminism-perl_1.15.0-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.15.0-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../067-dh-strip-nondeterminism_1.15.0-1_all.deb ... Unpacking dh-strip-nondeterminism (1.15.0-1) ... Selecting previously unselected package libelf1t64:arm64. Preparing to unpack .../068-libelf1t64_0.193-3_arm64.deb ... Unpacking libelf1t64:arm64 (0.193-3) ... Selecting previously unselected package dwz. Preparing to unpack .../069-dwz_0.16-2_arm64.deb ... Unpacking dwz (0.16-2) ... Selecting previously unselected package gettext. Preparing to unpack .../070-gettext_0.23.1-2+b1_arm64.deb ... Unpacking gettext (0.23.1-2+b1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../071-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../072-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../073-debhelper_13.26_all.deb ... Unpacking debhelper (13.26) ... Selecting previously unselected package dh-python. Preparing to unpack .../074-dh-python_6.20250414_all.deb ... Unpacking dh-python (6.20250414) ... Selecting previously unselected package fonts-mathjax. Preparing to unpack .../075-fonts-mathjax_2.7.9+dfsg-1_all.deb ... Unpacking fonts-mathjax (2.7.9+dfsg-1) ... Selecting previously unselected package libgfortran-15-dev:arm64. Preparing to unpack .../076-libgfortran-15-dev_15.2.0-3_arm64.deb ... Unpacking libgfortran-15-dev:arm64 (15.2.0-3) ... Selecting previously unselected package gfortran-15-aarch64-linux-gnu. Preparing to unpack .../077-gfortran-15-aarch64-linux-gnu_15.2.0-3_arm64.deb ... Unpacking gfortran-15-aarch64-linux-gnu (15.2.0-3) ... Selecting previously unselected package gfortran-15. Preparing to unpack .../078-gfortran-15_15.2.0-3_arm64.deb ... Unpacking gfortran-15 (15.2.0-3) ... Selecting previously unselected package gfortran-aarch64-linux-gnu. Preparing to unpack .../079-gfortran-aarch64-linux-gnu_4%3a15.2.0-1_arm64.deb ... Unpacking gfortran-aarch64-linux-gnu (4:15.2.0-1) ... Selecting previously unselected package gfortran. Preparing to unpack .../080-gfortran_4%3a15.2.0-1_arm64.deb ... Unpacking gfortran (4:15.2.0-1) ... Selecting previously unselected package libgfortran-14-dev:arm64. Preparing to unpack .../081-libgfortran-14-dev_14.3.0-8_arm64.deb ... Unpacking libgfortran-14-dev:arm64 (14.3.0-8) ... Selecting previously unselected package gfortran-14-aarch64-linux-gnu. Preparing to unpack .../082-gfortran-14-aarch64-linux-gnu_14.3.0-8_arm64.deb ... Unpacking gfortran-14-aarch64-linux-gnu (14.3.0-8) ... Selecting previously unselected package gfortran-14. Preparing to unpack .../083-gfortran-14_14.3.0-8_arm64.deb ... Unpacking gfortran-14 (14.3.0-8) ... Selecting previously unselected package libnl-3-200:arm64. Preparing to unpack .../084-libnl-3-200_3.11.0-2_arm64.deb ... Unpacking libnl-3-200:arm64 (3.11.0-2) ... Selecting previously unselected package libnl-route-3-200:arm64. Preparing to unpack .../085-libnl-route-3-200_3.11.0-2_arm64.deb ... Unpacking libnl-route-3-200:arm64 (3.11.0-2) ... Selecting previously unselected package libibverbs1:arm64. Preparing to unpack .../086-libibverbs1_56.1-1_arm64.deb ... Unpacking libibverbs1:arm64 (56.1-1) ... Selecting previously unselected package ibverbs-providers:arm64. Preparing to unpack .../087-ibverbs-providers_56.1-1_arm64.deb ... Unpacking ibverbs-providers:arm64 (56.1-1) ... Selecting previously unselected package libicu76:arm64. Preparing to unpack .../088-libicu76_76.1-4_arm64.deb ... Unpacking libicu76:arm64 (76.1-4) ... Selecting previously unselected package icu-devtools. Preparing to unpack .../089-icu-devtools_76.1-4_arm64.deb ... Unpacking icu-devtools (76.1-4) ... Selecting previously unselected package libgssrpc4t64:arm64. Preparing to unpack .../090-libgssrpc4t64_1.21.3-5_arm64.deb ... Unpacking libgssrpc4t64:arm64 (1.21.3-5) ... Selecting previously unselected package libkadm5clnt-mit12:arm64. Preparing to unpack .../091-libkadm5clnt-mit12_1.21.3-5_arm64.deb ... Unpacking libkadm5clnt-mit12:arm64 (1.21.3-5) ... Selecting previously unselected package libkdb5-10t64:arm64. Preparing to unpack .../092-libkdb5-10t64_1.21.3-5_arm64.deb ... Unpacking libkdb5-10t64:arm64 (1.21.3-5) ... Selecting previously unselected package libkadm5srv-mit12:arm64. Preparing to unpack .../093-libkadm5srv-mit12_1.21.3-5_arm64.deb ... Unpacking libkadm5srv-mit12:arm64 (1.21.3-5) ... Selecting previously unselected package krb5-multidev:arm64. Preparing to unpack .../094-krb5-multidev_1.21.3-5_arm64.deb ... Unpacking krb5-multidev:arm64 (1.21.3-5) ... Selecting previously unselected package libadios2-common-c++11-dev. Preparing to unpack .../095-libadios2-common-c++11-dev_2.10.2+dfsg1-3_all.deb ... Unpacking libadios2-common-c++11-dev (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-common-core-dev:arm64. Preparing to unpack .../096-libadios2-common-core-dev_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-common-core-dev:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package librdmacm1t64:arm64. Preparing to unpack .../097-librdmacm1t64_56.1-1_arm64.deb ... Unpacking librdmacm1t64:arm64 (56.1-1) ... Selecting previously unselected package libfabric1:arm64. Preparing to unpack .../098-libfabric1_2.1.0-1.1_arm64.deb ... Unpacking libfabric1:arm64 (2.1.0-1.1) ... Selecting previously unselected package libevent-core-2.1-7t64:arm64. Preparing to unpack .../099-libevent-core-2.1-7t64_2.1.12-stable-10+b1_arm64.deb ... Unpacking libevent-core-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-pthreads-2.1-7t64:arm64. Preparing to unpack .../100-libevent-pthreads-2.1-7t64_2.1.12-stable-10+b1_arm64.deb ... Unpacking libevent-pthreads-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libhwloc15:arm64. Preparing to unpack .../101-libhwloc15_2.12.2-1_arm64.deb ... Unpacking libhwloc15:arm64 (2.12.2-1) ... Selecting previously unselected package libmunge2:arm64. Preparing to unpack .../102-libmunge2_0.5.16-1_arm64.deb ... Unpacking libmunge2:arm64 (0.5.16-1) ... Selecting previously unselected package libpciaccess0:arm64. Preparing to unpack .../103-libpciaccess0_0.17-3+b3_arm64.deb ... Unpacking libpciaccess0:arm64 (0.17-3+b3) ... Selecting previously unselected package libxau6:arm64. Preparing to unpack .../104-libxau6_1%3a1.0.11-1_arm64.deb ... Unpacking libxau6:arm64 (1:1.0.11-1) ... Selecting previously unselected package libxdmcp6:arm64. Preparing to unpack .../105-libxdmcp6_1%3a1.1.5-1_arm64.deb ... Unpacking libxdmcp6:arm64 (1:1.1.5-1) ... Selecting previously unselected package libxcb1:arm64. Preparing to unpack .../106-libxcb1_1.17.0-2+b1_arm64.deb ... Unpacking libxcb1:arm64 (1.17.0-2+b1) ... Selecting previously unselected package libx11-data. Preparing to unpack .../107-libx11-data_2%3a1.8.12-1_all.deb ... Unpacking libx11-data (2:1.8.12-1) ... Selecting previously unselected package libx11-6:arm64. Preparing to unpack .../108-libx11-6_2%3a1.8.12-1_arm64.deb ... Unpacking libx11-6:arm64 (2:1.8.12-1) ... Selecting previously unselected package libxext6:arm64. Preparing to unpack .../109-libxext6_2%3a1.3.4-1+b3_arm64.deb ... Unpacking libxext6:arm64 (2:1.3.4-1+b3) ... Selecting previously unselected package libxnvctrl0:arm64. Preparing to unpack .../110-libxnvctrl0_535.171.04-1+b2_arm64.deb ... Unpacking libxnvctrl0:arm64 (535.171.04-1+b2) ... Selecting previously unselected package ocl-icd-libopencl1:arm64. Preparing to unpack .../111-ocl-icd-libopencl1_2.3.3-1_arm64.deb ... Unpacking ocl-icd-libopencl1:arm64 (2.3.3-1) ... Selecting previously unselected package libhwloc-plugins:arm64. Preparing to unpack .../112-libhwloc-plugins_2.12.2-1_arm64.deb ... Unpacking libhwloc-plugins:arm64 (2.12.2-1) ... Selecting previously unselected package libpmix2t64:arm64. Preparing to unpack .../113-libpmix2t64_5.0.7-1_arm64.deb ... Unpacking libpmix2t64:arm64 (5.0.7-1) ... Selecting previously unselected package libz3-4:arm64. Preparing to unpack .../114-libz3-4_4.13.3-1_arm64.deb ... Unpacking libz3-4:arm64 (4.13.3-1) ... Selecting previously unselected package libllvm17t64:arm64. Preparing to unpack .../115-libllvm17t64_1%3a17.0.6-22+b3_arm64.deb ... Unpacking libllvm17t64:arm64 (1:17.0.6-22+b3) ... Selecting previously unselected package libamd-comgr2:arm64. Preparing to unpack .../116-libamd-comgr2_6.0+git20231212.4510c28+dfsg-3+b2_arm64.deb ... Unpacking libamd-comgr2:arm64 (6.0+git20231212.4510c28+dfsg-3+b2) ... Selecting previously unselected package libdrm-common. Preparing to unpack .../117-libdrm-common_2.4.125-2_all.deb ... Unpacking libdrm-common (2.4.125-2) ... Selecting previously unselected package libdrm2:arm64. Preparing to unpack .../118-libdrm2_2.4.125-2_arm64.deb ... Unpacking libdrm2:arm64 (2.4.125-2) ... Selecting previously unselected package libdrm-amdgpu1:arm64. Preparing to unpack .../119-libdrm-amdgpu1_2.4.125-2_arm64.deb ... Unpacking libdrm-amdgpu1:arm64 (2.4.125-2) ... Selecting previously unselected package libnuma1:arm64. Preparing to unpack .../120-libnuma1_2.0.19-1_arm64.deb ... Unpacking libnuma1:arm64 (2.0.19-1) ... Selecting previously unselected package libhsakmt1:arm64. Preparing to unpack .../121-libhsakmt1_6.2.4+ds-1_arm64.deb ... Unpacking libhsakmt1:arm64 (6.2.4+ds-1) ... Selecting previously unselected package libhsa-runtime64-1:arm64. Preparing to unpack .../122-libhsa-runtime64-1_6.1.2-3_arm64.deb ... Unpacking libhsa-runtime64-1:arm64 (6.1.2-3) ... Selecting previously unselected package libamdhip64-5:arm64. Preparing to unpack .../123-libamdhip64-5_5.7.1-6_arm64.deb ... Unpacking libamdhip64-5:arm64 (5.7.1-6) ... Selecting previously unselected package libibumad3:arm64. Preparing to unpack .../124-libibumad3_56.1-1_arm64.deb ... Unpacking libibumad3:arm64 (56.1-1) ... Selecting previously unselected package libibmad5:arm64. Preparing to unpack .../125-libibmad5_56.1-1_arm64.deb ... Unpacking libibmad5:arm64 (56.1-1) ... Selecting previously unselected package libucx0:arm64. Preparing to unpack .../126-libucx0_1.18.1+ds-2+b1_arm64.deb ... Unpacking libucx0:arm64 (1.18.1+ds-2+b1) ... Selecting previously unselected package libopenmpi40:arm64. Preparing to unpack .../127-libopenmpi40_5.0.7-1_arm64.deb ... Unpacking libopenmpi40:arm64 (5.0.7-1) ... Selecting previously unselected package libaec0:arm64. Preparing to unpack .../128-libaec0_1.1.4-2_arm64.deb ... Unpacking libaec0:arm64 (1.1.4-2) ... Selecting previously unselected package libsz2:arm64. Preparing to unpack .../129-libsz2_1.1.4-2_arm64.deb ... Unpacking libsz2:arm64 (1.1.4-2) ... Selecting previously unselected package libhdf5-openmpi-310:arm64. Preparing to unpack .../130-libhdf5-openmpi-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-openmpi-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libpng16-16t64:arm64. Preparing to unpack .../131-libpng16-16t64_1.6.50-1_arm64.deb ... Unpacking libpng16-16t64:arm64 (1.6.50-1) ... Selecting previously unselected package libpugixml1v5:arm64. Preparing to unpack .../132-libpugixml1v5_1.14-2_arm64.deb ... Unpacking libpugixml1v5:arm64 (1.14-2) ... Selecting previously unselected package libyaml-cpp0.8:arm64. Preparing to unpack .../133-libyaml-cpp0.8_0.8.0+dfsg-7_arm64.deb ... Unpacking libyaml-cpp0.8:arm64 (0.8.0+dfsg-7) ... Selecting previously unselected package libnorm1t64:arm64. Preparing to unpack .../134-libnorm1t64_1.5.9+dfsg-3.1+b2_arm64.deb ... Unpacking libnorm1t64:arm64 (1.5.9+dfsg-3.1+b2) ... Selecting previously unselected package libpgm-5.3-0t64:arm64. Preparing to unpack .../135-libpgm-5.3-0t64_5.3.128~dfsg-2.1+b1_arm64.deb ... Unpacking libpgm-5.3-0t64:arm64 (5.3.128~dfsg-2.1+b1) ... Selecting previously unselected package libsodium23:arm64. Preparing to unpack .../136-libsodium23_1.0.18-1+b2_arm64.deb ... Unpacking libsodium23:arm64 (1.0.18-1+b2) ... Selecting previously unselected package libzmq5:arm64. Preparing to unpack .../137-libzmq5_4.3.5-1+b3_arm64.deb ... Unpacking libzmq5:arm64 (4.3.5-1+b3) ... Selecting previously unselected package libadios2-mpi-plugins:arm64. Preparing to unpack .../138-libadios2-mpi-plugins_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-plugins:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-mpi-core-2.10:arm64. Preparing to unpack .../139-libadios2-mpi-core-2.10_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-core-2.10:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-mpi-c-2.10:arm64. Preparing to unpack .../140-libadios2-mpi-c-2.10_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-c-2.10:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-mpi-auxiliary-2.10:arm64. Preparing to unpack .../141-libadios2-mpi-auxiliary-2.10_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-auxiliary-2.10:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-mpi-auxiliary-dev:arm64. Preparing to unpack .../142-libadios2-mpi-auxiliary-dev_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-auxiliary-dev:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-mpi-c++11-2.10:arm64. Preparing to unpack .../143-libadios2-mpi-c++11-2.10_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-c++11-2.10:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-mpi-core-dev:arm64. Preparing to unpack .../144-libadios2-mpi-core-dev_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-core-dev:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-mpi-c++11-dev:arm64. Preparing to unpack .../145-libadios2-mpi-c++11-dev_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-mpi-c++11-dev:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libhdf5-310:arm64. Preparing to unpack .../146-libhdf5-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libadios2-serial-plugins:arm64. Preparing to unpack .../147-libadios2-serial-plugins_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-serial-plugins:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-serial-core-2.10:arm64. Preparing to unpack .../148-libadios2-serial-core-2.10_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-serial-core-2.10:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-serial-c-2.10:arm64. Preparing to unpack .../149-libadios2-serial-c-2.10_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-serial-c-2.10:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libadios2-serial-auxiliary-2.10:arm64. Preparing to unpack .../150-libadios2-serial-auxiliary-2.10_2.10.2+dfsg1-3_arm64.deb ... Unpacking libadios2-serial-auxiliary-2.10:arm64 (2.10.2+dfsg1-3) ... Selecting previously unselected package libaec-dev:arm64. Preparing to unpack .../151-libaec-dev_1.1.4-2_arm64.deb ... Unpacking libaec-dev:arm64 (1.1.4-2) ... Selecting previously unselected package libsuitesparseconfig7:arm64. Preparing to unpack .../152-libsuitesparseconfig7_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libsuitesparseconfig7:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libamd3:arm64. Preparing to unpack .../153-libamd3_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libamd3:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libarpack2t64:arm64. Preparing to unpack .../154-libarpack2t64_3.9.1-6_arm64.deb ... Unpacking libarpack2t64:arm64 (3.9.1-6) ... Selecting previously unselected package libblas-dev:arm64. Preparing to unpack .../155-libblas-dev_3.12.1-7_arm64.deb ... Unpacking libblas-dev:arm64 (3.12.1-7) ... Selecting previously unselected package liblapack-dev:arm64. Preparing to unpack .../156-liblapack-dev_3.12.1-7_arm64.deb ... Unpacking liblapack-dev:arm64 (3.12.1-7) ... Selecting previously unselected package libarpack2-dev:arm64. Preparing to unpack .../157-libarpack2-dev_3.9.1-6_arm64.deb ... Unpacking libarpack2-dev:arm64 (3.9.1-6) ... Selecting previously unselected package libbasix0.9:arm64. Preparing to unpack .../158-libbasix0.9_0.9.0-2+b2_arm64.deb ... Unpacking libbasix0.9:arm64 (0.9.0-2+b2) ... Selecting previously unselected package libpkgconf3:arm64. Preparing to unpack .../159-libpkgconf3_1.8.1-4_arm64.deb ... Unpacking libpkgconf3:arm64 (1.8.1-4) ... Selecting previously unselected package pkgconf-bin. Preparing to unpack .../160-pkgconf-bin_1.8.1-4_arm64.deb ... Unpacking pkgconf-bin (1.8.1-4) ... Selecting previously unselected package pkgconf:arm64. Preparing to unpack .../161-pkgconf_1.8.1-4_arm64.deb ... Unpacking pkgconf:arm64 (1.8.1-4) ... Selecting previously unselected package pkg-config:arm64. Preparing to unpack .../162-pkg-config_1.8.1-4_arm64.deb ... Unpacking pkg-config:arm64 (1.8.1-4) ... Selecting previously unselected package libeigen3-dev. Preparing to unpack .../163-libeigen3-dev_3.4.0-5_all.deb ... Unpacking libeigen3-dev (3.4.0-5) ... Selecting previously unselected package libbasix-dev:arm64. Preparing to unpack .../164-libbasix-dev_0.9.0-2+b2_arm64.deb ... Unpacking libbasix-dev:arm64 (0.9.0-2+b2) ... Selecting previously unselected package libstdc++-14-dev:arm64. Preparing to unpack .../165-libstdc++-14-dev_14.3.0-8_arm64.deb ... Unpacking libstdc++-14-dev:arm64 (14.3.0-8) ... Selecting previously unselected package libboost1.83-dev:arm64. Preparing to unpack .../166-libboost1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-atomic1.83.0:arm64. Preparing to unpack .../167-libboost-atomic1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-atomic1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-atomic1.83-dev:arm64. Preparing to unpack .../168-libboost-atomic1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-atomic1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-chrono1.83.0t64:arm64. Preparing to unpack .../169-libboost-chrono1.83.0t64_1.83.0-4.2_arm64.deb ... Unpacking libboost-chrono1.83.0t64:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-chrono1.83-dev:arm64. Preparing to unpack .../170-libboost-chrono1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-chrono1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-chrono-dev:arm64. Preparing to unpack .../171-libboost-chrono-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-chrono-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-date-time1.83.0:arm64. Preparing to unpack .../172-libboost-date-time1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-date-time1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-serialization1.83.0:arm64. Preparing to unpack .../173-libboost-serialization1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-serialization1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-serialization1.83-dev:arm64. Preparing to unpack .../174-libboost-serialization1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-serialization1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-date-time1.83-dev:arm64. Preparing to unpack .../175-libboost-date-time1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-date-time1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-dev:arm64. Preparing to unpack .../176-libboost-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-filesystem1.83.0:arm64. Preparing to unpack .../177-libboost-filesystem1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-filesystem1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-system1.83.0:arm64. Preparing to unpack .../178-libboost-system1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-system1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-system1.83-dev:arm64. Preparing to unpack .../179-libboost-system1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-system1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-filesystem1.83-dev:arm64. Preparing to unpack .../180-libboost-filesystem1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-filesystem1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-filesystem-dev:arm64. Preparing to unpack .../181-libboost-filesystem-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-filesystem-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-regex1.83.0:arm64. Preparing to unpack .../182-libboost-regex1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-regex1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libicu-dev:arm64. Preparing to unpack .../183-libicu-dev_76.1-4_arm64.deb ... Unpacking libicu-dev:arm64 (76.1-4) ... Selecting previously unselected package libboost-regex1.83-dev:arm64. Preparing to unpack .../184-libboost-regex1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-regex1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-iostreams1.83-dev:arm64. Preparing to unpack .../185-libboost-iostreams1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-iostreams1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-iostreams-dev:arm64. Preparing to unpack .../186-libboost-iostreams-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-iostreams-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-math1.83.0:arm64. Preparing to unpack .../187-libboost-math1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-math1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-math1.83-dev:arm64. Preparing to unpack .../188-libboost-math1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-math1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-math-dev:arm64. Preparing to unpack .../189-libboost-math-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-math-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-mpi1.83.0. Preparing to unpack .../190-libboost-mpi1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-mpi1.83.0 (1.83.0-4.2) ... Selecting previously unselected package openmpi-common. Preparing to unpack .../191-openmpi-common_5.0.7-1_all.deb ... Unpacking openmpi-common (5.0.7-1) ... Selecting previously unselected package libnl-3-dev:arm64. Preparing to unpack .../192-libnl-3-dev_3.11.0-2_arm64.deb ... Unpacking libnl-3-dev:arm64 (3.11.0-2) ... Selecting previously unselected package libnl-route-3-dev:arm64. Preparing to unpack .../193-libnl-route-3-dev_3.11.0-2_arm64.deb ... Unpacking libnl-route-3-dev:arm64 (3.11.0-2) ... Selecting previously unselected package libibverbs-dev:arm64. Preparing to unpack .../194-libibverbs-dev_56.1-1_arm64.deb ... Unpacking libibverbs-dev:arm64 (56.1-1) ... Selecting previously unselected package libnuma-dev:arm64. Preparing to unpack .../195-libnuma-dev_2.0.19-1_arm64.deb ... Unpacking libnuma-dev:arm64 (2.0.19-1) ... Selecting previously unselected package libltdl7:arm64. Preparing to unpack .../196-libltdl7_2.5.4-5_arm64.deb ... Unpacking libltdl7:arm64 (2.5.4-5) ... Selecting previously unselected package libltdl-dev:arm64. Preparing to unpack .../197-libltdl-dev_2.5.4-5_arm64.deb ... Unpacking libltdl-dev:arm64 (2.5.4-5) ... Selecting previously unselected package libhwloc-dev:arm64. Preparing to unpack .../198-libhwloc-dev_2.12.2-1_arm64.deb ... Unpacking libhwloc-dev:arm64 (2.12.2-1) ... Selecting previously unselected package libevent-2.1-7t64:arm64. Preparing to unpack .../199-libevent-2.1-7t64_2.1.12-stable-10+b1_arm64.deb ... Unpacking libevent-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-extra-2.1-7t64:arm64. Preparing to unpack .../200-libevent-extra-2.1-7t64_2.1.12-stable-10+b1_arm64.deb ... Unpacking libevent-extra-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-openssl-2.1-7t64:arm64. Preparing to unpack .../201-libevent-openssl-2.1-7t64_2.1.12-stable-10+b1_arm64.deb ... Unpacking libevent-openssl-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-dev. Preparing to unpack .../202-libevent-dev_2.1.12-stable-10+b1_arm64.deb ... Unpacking libevent-dev (2.1.12-stable-10+b1) ... Selecting previously unselected package zlib1g-dev:arm64. Preparing to unpack .../203-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1+b1_arm64.deb ... Unpacking zlib1g-dev:arm64 (1:1.3.dfsg+really1.3.1-1+b1) ... Selecting previously unselected package libjs-jquery. Preparing to unpack .../204-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Selecting previously unselected package libpmix-dev:arm64. Preparing to unpack .../205-libpmix-dev_5.0.7-1_arm64.deb ... Unpacking libpmix-dev:arm64 (5.0.7-1) ... Selecting previously unselected package libjs-jquery-ui. Preparing to unpack .../206-libjs-jquery-ui_1.13.2+dfsg-1_all.deb ... Unpacking libjs-jquery-ui (1.13.2+dfsg-1) ... Selecting previously unselected package openmpi-bin. Preparing to unpack .../207-openmpi-bin_5.0.7-1_arm64.deb ... Unpacking openmpi-bin (5.0.7-1) ... Selecting previously unselected package libopenmpi-dev:arm64. Preparing to unpack .../208-libopenmpi-dev_5.0.7-1_arm64.deb ... Unpacking libopenmpi-dev:arm64 (5.0.7-1) ... Selecting previously unselected package mpi-default-dev. Preparing to unpack .../209-mpi-default-dev_1.18_arm64.deb ... Unpacking mpi-default-dev (1.18) ... Selecting previously unselected package libboost-mpi1.83-dev. Preparing to unpack .../210-libboost-mpi1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-mpi1.83-dev (1.83.0-4.2) ... Selecting previously unselected package libboost-mpi-dev. Preparing to unpack .../211-libboost-mpi-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-mpi-dev (1.83.0.2+b2) ... Selecting previously unselected package libboost-program-options1.83.0:arm64. Preparing to unpack .../212-libboost-program-options1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-program-options1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-program-options1.83-dev:arm64. Preparing to unpack .../213-libboost-program-options1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-program-options1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-program-options-dev:arm64. Preparing to unpack .../214-libboost-program-options-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-program-options-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-serialization-dev:arm64. Preparing to unpack .../215-libboost-serialization-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-serialization-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-thread1.83.0:arm64. Preparing to unpack .../216-libboost-thread1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-thread1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-thread1.83-dev:arm64. Preparing to unpack .../217-libboost-thread1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-thread1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-thread-dev:arm64. Preparing to unpack .../218-libboost-thread-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-thread-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libboost-timer1.83.0:arm64. Preparing to unpack .../219-libboost-timer1.83.0_1.83.0-4.2_arm64.deb ... Unpacking libboost-timer1.83.0:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-timer1.83-dev:arm64. Preparing to unpack .../220-libboost-timer1.83-dev_1.83.0-4.2_arm64.deb ... Unpacking libboost-timer1.83-dev:arm64 (1.83.0-4.2) ... Selecting previously unselected package libboost-timer-dev:arm64. Preparing to unpack .../221-libboost-timer-dev_1.83.0.2+b2_arm64.deb ... Unpacking libboost-timer-dev:arm64 (1.83.0.2+b2) ... Selecting previously unselected package libbrotli-dev:arm64. Preparing to unpack .../222-libbrotli-dev_1.1.0-2+b7_arm64.deb ... Unpacking libbrotli-dev:arm64 (1.1.0-2+b7) ... Selecting previously unselected package libbtf2:arm64. Preparing to unpack .../223-libbtf2_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libbtf2:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libc6-dbg:arm64. Preparing to unpack .../224-libc6-dbg_2.41-12_arm64.deb ... Unpacking libc6-dbg:arm64 (2.41-12) ... Selecting previously unselected package libcamd3:arm64. Preparing to unpack .../225-libcamd3_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libcamd3:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libccolamd3:arm64. Preparing to unpack .../226-libccolamd3_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libccolamd3:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libcolamd3:arm64. Preparing to unpack .../227-libcolamd3_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libcolamd3:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libcholmod5:arm64. Preparing to unpack .../228-libcholmod5_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libcholmod5:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libcombblas2.0.0t64:arm64. Preparing to unpack .../229-libcombblas2.0.0t64_2.0.0-6+b2_arm64.deb ... Unpacking libcombblas2.0.0t64:arm64 (2.0.0-6+b2) ... Selecting previously unselected package libidn2-dev:arm64. Preparing to unpack .../230-libidn2-dev_2.3.8-4_arm64.deb ... Unpacking libidn2-dev:arm64 (2.3.8-4) ... Selecting previously unselected package libkrb5-dev:arm64. Preparing to unpack .../231-libkrb5-dev_1.21.3-5_arm64.deb ... Unpacking libkrb5-dev:arm64 (1.21.3-5) ... Selecting previously unselected package libldap-dev:arm64. Preparing to unpack .../232-libldap-dev_2.6.10+dfsg-1_arm64.deb ... Unpacking libldap-dev:arm64 (2.6.10+dfsg-1) ... Selecting previously unselected package libnghttp2-dev:arm64. Preparing to unpack .../233-libnghttp2-dev_1.64.0-1.1+b1_arm64.deb ... Unpacking libnghttp2-dev:arm64 (1.64.0-1.1+b1) ... Selecting previously unselected package libnghttp3-dev:arm64. Preparing to unpack .../234-libnghttp3-dev_1.11.0-1_arm64.deb ... Unpacking libnghttp3-dev:arm64 (1.11.0-1) ... Selecting previously unselected package libpsl-dev:arm64. Preparing to unpack .../235-libpsl-dev_0.21.2-1.1+b1_arm64.deb ... Unpacking libpsl-dev:arm64 (0.21.2-1.1+b1) ... Selecting previously unselected package libgmpxx4ldbl:arm64. Preparing to unpack .../236-libgmpxx4ldbl_2%3a6.3.0+dfsg-5_arm64.deb ... Unpacking libgmpxx4ldbl:arm64 (2:6.3.0+dfsg-5) ... Selecting previously unselected package libgmp-dev:arm64. Preparing to unpack .../237-libgmp-dev_2%3a6.3.0+dfsg-5_arm64.deb ... Unpacking libgmp-dev:arm64 (2:6.3.0+dfsg-5) ... Selecting previously unselected package libunbound8:arm64. Preparing to unpack .../238-libunbound8_1.23.1-1_arm64.deb ... Unpacking libunbound8:arm64 (1.23.1-1) ... Selecting previously unselected package libgnutls-dane0t64:arm64. Preparing to unpack .../239-libgnutls-dane0t64_3.8.9-3_arm64.deb ... Unpacking libgnutls-dane0t64:arm64 (3.8.9-3) ... Selecting previously unselected package libgnutls-openssl27t64:arm64. Preparing to unpack .../240-libgnutls-openssl27t64_3.8.9-3_arm64.deb ... Unpacking libgnutls-openssl27t64:arm64 (3.8.9-3) ... Selecting previously unselected package libp11-kit-dev:arm64. Preparing to unpack .../241-libp11-kit-dev_0.25.5-3_arm64.deb ... Unpacking libp11-kit-dev:arm64 (0.25.5-3) ... Selecting previously unselected package libtasn1-6-dev:arm64. Preparing to unpack .../242-libtasn1-6-dev_4.20.0-2_arm64.deb ... Unpacking libtasn1-6-dev:arm64 (4.20.0-2) ... Selecting previously unselected package nettle-dev:arm64. Preparing to unpack .../243-nettle-dev_3.10.1-1_arm64.deb ... Unpacking nettle-dev:arm64 (3.10.1-1) ... Selecting previously unselected package libgnutls28-dev:arm64. Preparing to unpack .../244-libgnutls28-dev_3.8.9-3_arm64.deb ... Unpacking libgnutls28-dev:arm64 (3.8.9-3) ... Selecting previously unselected package librtmp-dev:arm64. Preparing to unpack .../245-librtmp-dev_2.4+20151223.gitfa8646d.1-3_arm64.deb ... Unpacking librtmp-dev:arm64 (2.4+20151223.gitfa8646d.1-3) ... Selecting previously unselected package libssl-dev:arm64. Preparing to unpack .../246-libssl-dev_3.5.2-1_arm64.deb ... Unpacking libssl-dev:arm64 (3.5.2-1) ... Selecting previously unselected package libssh2-1-dev:arm64. Preparing to unpack .../247-libssh2-1-dev_1.11.1-1_arm64.deb ... Unpacking libssh2-1-dev:arm64 (1.11.1-1) ... Selecting previously unselected package libzstd-dev:arm64. Preparing to unpack .../248-libzstd-dev_1.5.7+dfsg-1.1_arm64.deb ... Unpacking libzstd-dev:arm64 (1.5.7+dfsg-1.1) ... Selecting previously unselected package libcurl4-openssl-dev:arm64. Preparing to unpack .../249-libcurl4-openssl-dev_8.15.0-1_arm64.deb ... Unpacking libcurl4-openssl-dev:arm64 (8.15.0-1) ... Selecting previously unselected package libcxsparse4:arm64. Preparing to unpack .../250-libcxsparse4_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libcxsparse4:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libfmt10:arm64. Preparing to unpack .../251-libfmt10_10.1.1+ds1-4_arm64.deb ... Unpacking libfmt10:arm64 (10.1.1+ds1-4) ... Selecting previously unselected package libfftw3-double3:arm64. Preparing to unpack .../252-libfftw3-double3_3.3.10-2+b1_arm64.deb ... Unpacking libfftw3-double3:arm64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-long3:arm64. Preparing to unpack .../253-libfftw3-long3_3.3.10-2+b1_arm64.deb ... Unpacking libfftw3-long3:arm64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-single3:arm64. Preparing to unpack .../254-libfftw3-single3_3.3.10-2+b1_arm64.deb ... Unpacking libfftw3-single3:arm64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-mpi3:arm64. Preparing to unpack .../255-libfftw3-mpi3_3.3.10-2+b1_arm64.deb ... Unpacking libfftw3-mpi3:arm64 (3.3.10-2+b1) ... Selecting previously unselected package libmetis5:arm64. Preparing to unpack .../256-libmetis5_5.1.0.dfsg-7+b2_arm64.deb ... Unpacking libmetis5:arm64 (5.1.0.dfsg-7+b2) ... Selecting previously unselected package libptscotch-7.0:arm64. Preparing to unpack .../257-libptscotch-7.0_7.0.7-1_arm64.deb ... Unpacking libptscotch-7.0:arm64 (7.0.7-1) ... Selecting previously unselected package libsuperlu-dist8:arm64. Preparing to unpack .../258-libsuperlu-dist8_8.2.1+dfsg1-5+b1_arm64.deb ... Unpacking libsuperlu-dist8:arm64 (8.2.1+dfsg1-5+b1) ... Selecting previously unselected package libhypre-2.32.0:arm64. Preparing to unpack .../259-libhypre-2.32.0_2.32.0-4_arm64.deb ... Unpacking libhypre-2.32.0:arm64 (2.32.0-4) ... Selecting previously unselected package libklu2:arm64. Preparing to unpack .../260-libklu2_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libklu2:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package mpi-default-bin. Preparing to unpack .../261-mpi-default-bin_1.18_arm64.deb ... Unpacking mpi-default-bin (1.18) ... Selecting previously unselected package libscalapack-openmpi2.2:arm64. Preparing to unpack .../262-libscalapack-openmpi2.2_2.2.2-1_arm64.deb ... Unpacking libscalapack-openmpi2.2:arm64 (2.2.2-1) ... Selecting previously unselected package libmumps-5.7:arm64. Preparing to unpack .../263-libmumps-5.7_5.7.3-3+b1_arm64.deb ... Unpacking libmumps-5.7:arm64 (5.7.3-3+b1) ... Selecting previously unselected package libspqr4:arm64. Preparing to unpack .../264-libspqr4_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libspqr4:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libsuperlu7:arm64. Preparing to unpack .../265-libsuperlu7_7.0.1+dfsg1-2_arm64.deb ... Unpacking libsuperlu7:arm64 (7.0.1+dfsg1-2) ... Selecting previously unselected package libumfpack6:arm64. Preparing to unpack .../266-libumfpack6_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libumfpack6:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libyaml-0-2:arm64. Preparing to unpack .../267-libyaml-0-2_0.2.5-2_arm64.deb ... Unpacking libyaml-0-2:arm64 (0.2.5-2) ... Selecting previously unselected package libpetsc-real3.22:arm64. Preparing to unpack .../268-libpetsc-real3.22_3.22.5+dfsg1-2+b1_arm64.deb ... Unpacking libpetsc-real3.22:arm64 (3.22.5+dfsg1-2+b1) ... Selecting previously unselected package libparpack2t64:arm64. Preparing to unpack .../269-libparpack2t64_3.9.1-6_arm64.deb ... Unpacking libparpack2t64:arm64 (3.9.1-6) ... Selecting previously unselected package libslepc-real3.22. Preparing to unpack .../270-libslepc-real3.22_3.22.2+dfsg1-1_arm64.deb ... Unpacking libslepc-real3.22 (3.22.2+dfsg1-1) ... Selecting previously unselected package libspdlog1.15:arm64. Preparing to unpack .../271-libspdlog1.15_1%3a1.15.3+ds-1_arm64.deb ... Unpacking libspdlog1.15:arm64 (1:1.15.3+ds-1) ... Selecting previously unselected package libdolfinx-real0.9:arm64. Preparing to unpack .../272-libdolfinx-real0.9_1%3a0.9.0-7_arm64.deb ... Unpacking libdolfinx-real0.9:arm64 (1:0.9.0-7) ... Selecting previously unselected package libjs-mathjax. Preparing to unpack .../273-libjs-mathjax_2.7.9+dfsg-1_all.deb ... Unpacking libjs-mathjax (2.7.9+dfsg-1) ... Selecting previously unselected package libldl3:arm64. Preparing to unpack .../274-libldl3_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libldl3:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libsuitesparse-mongoose3:arm64. Preparing to unpack .../275-libsuitesparse-mongoose3_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libsuitesparse-mongoose3:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package librbio4:arm64. Preparing to unpack .../276-librbio4_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking librbio4:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libspex3:arm64. Preparing to unpack .../277-libspex3_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libspex3:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libparu1:arm64. Preparing to unpack .../278-libparu1_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libparu1:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libsuitesparse-dev:arm64. Preparing to unpack .../279-libsuitesparse-dev_1%3a7.11.0+dfsg-2_arm64.deb ... Unpacking libsuitesparse-dev:arm64 (1:7.11.0+dfsg-2) ... Selecting previously unselected package libscotch-7.0:arm64. Preparing to unpack .../280-libscotch-7.0_7.0.7-1_arm64.deb ... Unpacking libscotch-7.0:arm64 (7.0.7-1) ... Selecting previously unselected package libscotch-dev. Preparing to unpack .../281-libscotch-dev_7.0.7-1_arm64.deb ... Unpacking libscotch-dev (7.0.7-1) ... Selecting previously unselected package libptscotch-dev. Preparing to unpack .../282-libptscotch-dev_7.0.7-1_arm64.deb ... Unpacking libptscotch-dev (7.0.7-1) ... Selecting previously unselected package libscalapack-openmpi-dev:arm64. Preparing to unpack .../283-libscalapack-openmpi-dev_2.2.2-1_arm64.deb ... Unpacking libscalapack-openmpi-dev:arm64 (2.2.2-1) ... Selecting previously unselected package libscalapack-mpi-dev:arm64. Preparing to unpack .../284-libscalapack-mpi-dev_2.2.2-1_arm64.deb ... Unpacking libscalapack-mpi-dev:arm64 (2.2.2-1) ... Selecting previously unselected package libfftw3-bin. Preparing to unpack .../285-libfftw3-bin_3.3.10-2+b1_arm64.deb ... Unpacking libfftw3-bin (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-dev:arm64. Preparing to unpack .../286-libfftw3-dev_3.3.10-2+b1_arm64.deb ... Unpacking libfftw3-dev:arm64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-mpi-dev:arm64. Preparing to unpack .../287-libfftw3-mpi-dev_3.3.10-2+b1_arm64.deb ... Unpacking libfftw3-mpi-dev:arm64 (3.3.10-2+b1) ... Selecting previously unselected package opencl-c-headers. Preparing to unpack .../288-opencl-c-headers_3.0~2025.07.22-1_all.deb ... Unpacking opencl-c-headers (3.0~2025.07.22-1) ... Selecting previously unselected package opencl-clhpp-headers. Preparing to unpack .../289-opencl-clhpp-headers_3.0~2025.07.22-1_all.deb ... Unpacking opencl-clhpp-headers (3.0~2025.07.22-1) ... Selecting previously unselected package ocl-icd-opencl-dev:arm64. Preparing to unpack .../290-ocl-icd-opencl-dev_2.3.3-1_arm64.deb ... Unpacking ocl-icd-opencl-dev:arm64 (2.3.3-1) ... Selecting previously unselected package libhdf5-openmpi-fortran-310:arm64. Preparing to unpack .../291-libhdf5-openmpi-fortran-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-openmpi-fortran-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-openmpi-hl-310:arm64. Preparing to unpack .../292-libhdf5-openmpi-hl-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-openmpi-hl-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-openmpi-hl-fortran-310:arm64. Preparing to unpack .../293-libhdf5-openmpi-hl-fortran-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-openmpi-hl-fortran-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-openmpi-cpp-310:arm64. Preparing to unpack .../294-libhdf5-openmpi-cpp-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-openmpi-cpp-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-openmpi-hl-cpp-310:arm64. Preparing to unpack .../295-libhdf5-openmpi-hl-cpp-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-openmpi-hl-cpp-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libjpeg62-turbo:arm64. Preparing to unpack .../296-libjpeg62-turbo_1%3a2.1.5-4_arm64.deb ... Unpacking libjpeg62-turbo:arm64 (1:2.1.5-4) ... Selecting previously unselected package libjpeg62-turbo-dev:arm64. Preparing to unpack .../297-libjpeg62-turbo-dev_1%3a2.1.5-4_arm64.deb ... Unpacking libjpeg62-turbo-dev:arm64 (1:2.1.5-4) ... Selecting previously unselected package libjpeg-dev:arm64. Preparing to unpack .../298-libjpeg-dev_1%3a2.1.5-4_arm64.deb ... Unpacking libjpeg-dev:arm64 (1:2.1.5-4) ... Selecting previously unselected package libhdf5-openmpi-dev. Preparing to unpack .../299-libhdf5-openmpi-dev_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-openmpi-dev (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-mpi-dev:arm64. Preparing to unpack .../300-libhdf5-mpi-dev_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-mpi-dev:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libsuperlu-dev:arm64. Preparing to unpack .../301-libsuperlu-dev_7.0.1+dfsg1-2_arm64.deb ... Unpacking libsuperlu-dev:arm64 (7.0.1+dfsg1-2) ... Selecting previously unselected package libsuperlu-dist-dev:arm64. Preparing to unpack .../302-libsuperlu-dist-dev_8.2.1+dfsg1-5+b1_arm64.deb ... Unpacking libsuperlu-dist-dev:arm64 (8.2.1+dfsg1-5+b1) ... Selecting previously unselected package xorg-sgml-doctools. Preparing to unpack .../303-xorg-sgml-doctools_1%3a1.11-1.1_all.deb ... Unpacking xorg-sgml-doctools (1:1.11-1.1) ... Selecting previously unselected package x11proto-dev. Preparing to unpack .../304-x11proto-dev_2024.1-1_all.deb ... Unpacking x11proto-dev (2024.1-1) ... Selecting previously unselected package libxau-dev:arm64. Preparing to unpack .../305-libxau-dev_1%3a1.0.11-1_arm64.deb ... Unpacking libxau-dev:arm64 (1:1.0.11-1) ... Selecting previously unselected package libxdmcp-dev:arm64. Preparing to unpack .../306-libxdmcp-dev_1%3a1.1.5-1_arm64.deb ... Unpacking libxdmcp-dev:arm64 (1:1.1.5-1) ... Selecting previously unselected package xtrans-dev. Preparing to unpack .../307-xtrans-dev_1.4.0-1_all.deb ... Unpacking xtrans-dev (1.4.0-1) ... Selecting previously unselected package libxcb1-dev:arm64. Preparing to unpack .../308-libxcb1-dev_1.17.0-2+b1_arm64.deb ... Unpacking libxcb1-dev:arm64 (1.17.0-2+b1) ... Selecting previously unselected package libx11-dev:arm64. Preparing to unpack .../309-libx11-dev_2%3a1.8.12-1_arm64.deb ... Unpacking libx11-dev:arm64 (2:1.8.12-1) ... Selecting previously unselected package libyaml-dev:arm64. Preparing to unpack .../310-libyaml-dev_0.2.5-2_arm64.deb ... Unpacking libyaml-dev:arm64 (0.2.5-2) ... Selecting previously unselected package libpetsc3.22-dev-common. Preparing to unpack .../311-libpetsc3.22-dev-common_3.22.5+dfsg1-2_all.deb ... Unpacking libpetsc3.22-dev-common (3.22.5+dfsg1-2) ... Selecting previously unselected package libhypre-dev:arm64. Preparing to unpack .../312-libhypre-dev_2.32.0-4_arm64.deb ... Unpacking libhypre-dev:arm64 (2.32.0-4) ... Selecting previously unselected package libmumps-headers-dev. Preparing to unpack .../313-libmumps-headers-dev_5.7.3-3_all.deb ... Unpacking libmumps-headers-dev (5.7.3-3) ... Selecting previously unselected package libmumps-dev:arm64. Preparing to unpack .../314-libmumps-dev_5.7.3-3+b1_arm64.deb ... Unpacking libmumps-dev:arm64 (5.7.3-3+b1) ... Selecting previously unselected package valgrind. Preparing to unpack .../315-valgrind_1%3a3.24.0-3_arm64.deb ... Unpacking valgrind (1:3.24.0-3) ... Selecting previously unselected package valgrind-mpi. Preparing to unpack .../316-valgrind-mpi_1%3a3.24.0-3_arm64.deb ... Unpacking valgrind-mpi (1:3.24.0-3) ... Selecting previously unselected package libpetsc-real3.22-dev:arm64. Preparing to unpack .../317-libpetsc-real3.22-dev_3.22.5+dfsg1-2+b1_arm64.deb ... Unpacking libpetsc-real3.22-dev:arm64 (3.22.5+dfsg1-2+b1) ... Selecting previously unselected package libparpack2-dev:arm64. Preparing to unpack .../318-libparpack2-dev_3.9.1-6_arm64.deb ... Unpacking libparpack2-dev:arm64 (3.9.1-6) ... Selecting previously unselected package libslepc-real3.22-dev. Preparing to unpack .../319-libslepc-real3.22-dev_3.22.2+dfsg1-1_arm64.deb ... Unpacking libslepc-real3.22-dev (3.22.2+dfsg1-1) ... Selecting previously unselected package libdolfinx-real-dev:arm64. Preparing to unpack .../320-libdolfinx-real-dev_1%3a0.9.0-7_arm64.deb ... Unpacking libdolfinx-real-dev:arm64 (1:0.9.0-7) ... Selecting previously unselected package libpugixml-dev:arm64. Preparing to unpack .../321-libpugixml-dev_1.14-2_arm64.deb ... Unpacking libpugixml-dev:arm64 (1.14-2) ... Selecting previously unselected package libfmt-dev:arm64. Preparing to unpack .../322-libfmt-dev_10.1.1+ds1-4_arm64.deb ... Unpacking libfmt-dev:arm64 (10.1.1+ds1-4) ... Selecting previously unselected package libspdlog-dev:arm64. Preparing to unpack .../323-libspdlog-dev_1%3a1.15.3+ds-1_arm64.deb ... Unpacking libspdlog-dev:arm64 (1:1.15.3+ds-1) ... Selecting previously unselected package liblzma-dev:arm64. Preparing to unpack .../324-liblzma-dev_5.8.1-1.1_arm64.deb ... Unpacking liblzma-dev:arm64 (5.8.1-1.1) ... Selecting previously unselected package libxml2-dev:arm64. Preparing to unpack .../325-libxml2-dev_2.14.5+dfsg-0.2_arm64.deb ... Unpacking libxml2-dev:arm64 (2.14.5+dfsg-0.2) ... Selecting previously unselected package python3-cffi-backend:arm64. Preparing to unpack .../326-python3-cffi-backend_2.0.0-1_arm64.deb ... Unpacking python3-cffi-backend:arm64 (2.0.0-1) ... Selecting previously unselected package python3-ply. Preparing to unpack .../327-python3-ply_3.11-9_all.deb ... Unpacking python3-ply (3.11-9) ... Selecting previously unselected package python3-pycparser. Preparing to unpack .../328-python3-pycparser_2.23-1_all.deb ... Unpacking python3-pycparser (2.23-1) ... Selecting previously unselected package python3-cffi. Preparing to unpack .../329-python3-cffi_2.0.0-1_all.deb ... Unpacking python3-cffi (2.0.0-1) ... Selecting previously unselected package libpython3.13:arm64. Preparing to unpack .../330-libpython3.13_3.13.7-1_arm64.deb ... Unpacking libpython3.13:arm64 (3.13.7-1) ... Selecting previously unselected package libexpat1-dev:arm64. Preparing to unpack .../331-libexpat1-dev_2.7.1-2_arm64.deb ... Unpacking libexpat1-dev:arm64 (2.7.1-2) ... Selecting previously unselected package libpython3.13-dev:arm64. Preparing to unpack .../332-libpython3.13-dev_3.13.7-1_arm64.deb ... Unpacking libpython3.13-dev:arm64 (3.13.7-1) ... Selecting previously unselected package libpython3-dev:arm64. Preparing to unpack .../333-libpython3-dev_3.13.7-1_arm64.deb ... Unpacking libpython3-dev:arm64 (3.13.7-1) ... Selecting previously unselected package python3.13-dev. Preparing to unpack .../334-python3.13-dev_3.13.7-1_arm64.deb ... Unpacking python3.13-dev (3.13.7-1) ... Selecting previously unselected package libjs-sphinxdoc. Preparing to unpack .../335-libjs-sphinxdoc_8.2.3-6_all.deb ... Unpacking libjs-sphinxdoc (8.2.3-6) ... Selecting previously unselected package python3-dev. Preparing to unpack .../336-python3-dev_3.13.7-1_arm64.deb ... Unpacking python3-dev (3.13.7-1) ... Selecting previously unselected package python3-ufl. Preparing to unpack .../337-python3-ufl_2024.2.0-3_all.deb ... Unpacking python3-ufl (2024.2.0-3) ... Selecting previously unselected package python3-basix. Preparing to unpack .../338-python3-basix_0.9.0-2+b2_arm64.deb ... Unpacking python3-basix (0.9.0-2+b2) ... Selecting previously unselected package python3-autocommand. Preparing to unpack .../339-python3-autocommand_2.2.2-3_all.deb ... Unpacking python3-autocommand (2.2.2-3) ... Selecting previously unselected package python3-more-itertools. Preparing to unpack .../340-python3-more-itertools_10.8.0-1_all.deb ... Unpacking python3-more-itertools (10.8.0-1) ... Selecting previously unselected package python3-typing-extensions. Preparing to unpack .../341-python3-typing-extensions_4.15.0-1_all.deb ... Unpacking python3-typing-extensions (4.15.0-1) ... Selecting previously unselected package python3-typeguard. Preparing to unpack .../342-python3-typeguard_4.4.4-1_all.deb ... Unpacking python3-typeguard (4.4.4-1) ... Selecting previously unselected package python3-inflect. Preparing to unpack .../343-python3-inflect_7.5.0-1_all.deb ... Unpacking python3-inflect (7.5.0-1) ... Selecting previously unselected package python3-jaraco.context. Preparing to unpack .../344-python3-jaraco.context_6.0.1-1_all.deb ... Unpacking python3-jaraco.context (6.0.1-1) ... Selecting previously unselected package python3-jaraco.functools. Preparing to unpack .../345-python3-jaraco.functools_4.1.0-1_all.deb ... Unpacking python3-jaraco.functools (4.1.0-1) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../346-python3-pkg-resources_78.1.1-0.1_all.deb ... Unpacking python3-pkg-resources (78.1.1-0.1) ... Selecting previously unselected package python3-jaraco.text. Preparing to unpack .../347-python3-jaraco.text_4.0.0-1_all.deb ... Unpacking python3-jaraco.text (4.0.0-1) ... Selecting previously unselected package python3-zipp. Preparing to unpack .../348-python3-zipp_3.23.0-1_all.deb ... Unpacking python3-zipp (3.23.0-1) ... Selecting previously unselected package python3-setuptools. Preparing to unpack .../349-python3-setuptools_78.1.1-0.1_all.deb ... Unpacking python3-setuptools (78.1.1-0.1) ... Selecting previously unselected package python3-ffcx. Preparing to unpack .../350-python3-ffcx_1%3a0.9.0-2_all.deb ... Unpacking python3-ffcx (1:0.9.0-2) ... Selecting previously unselected package libdolfinx-dev:arm64. Preparing to unpack .../351-libdolfinx-dev_1%3a0.9.0-7_arm64.deb ... Unpacking libdolfinx-dev:arm64 (1:0.9.0-7) ... Selecting previously unselected package libhdf5-hl-310:arm64. Preparing to unpack .../352-libhdf5-hl-310_1.14.5+repack-3_arm64.deb ... Unpacking libhdf5-hl-310:arm64 (1.14.5+repack-3) ... Selecting previously unselected package libjson-perl. Preparing to unpack .../353-libjson-perl_4.10000-1_all.deb ... Unpacking libjson-perl (4.10000-1) ... Selecting previously unselected package liblzf1:arm64. Preparing to unpack .../354-liblzf1_3.6-4+b3_arm64.deb ... Unpacking liblzf1:arm64 (3.6-4+b3) ... Selecting previously unselected package libpython3-all-dev:arm64. Preparing to unpack .../355-libpython3-all-dev_3.13.7-1_arm64.deb ... Unpacking libpython3-all-dev:arm64 (3.13.7-1) ... Selecting previously unselected package robin-map-dev. Preparing to unpack .../356-robin-map-dev_1.3.0-1_all.deb ... Unpacking robin-map-dev (1.3.0-1) ... Selecting previously unselected package nanobind-dev. Preparing to unpack .../357-nanobind-dev_2.5.0-1_all.deb ... Unpacking nanobind-dev (2.5.0-1) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../358-python3-packaging_25.0-1_all.deb ... Unpacking python3-packaging (25.0-1) ... Selecting previously unselected package python3-pyproject-hooks. Preparing to unpack .../359-python3-pyproject-hooks_1.2.0-1_all.deb ... Unpacking python3-pyproject-hooks (1.2.0-1) ... Selecting previously unselected package python3-wheel. Preparing to unpack .../360-python3-wheel_0.46.1-2_all.deb ... Unpacking python3-wheel (0.46.1-2) ... Selecting previously unselected package python3-build. Preparing to unpack .../361-python3-build_1.2.2-4_all.deb ... Unpacking python3-build (1.2.2-4) ... Selecting previously unselected package python3-installer. Preparing to unpack .../362-python3-installer_0.7.0+dfsg1-3_all.deb ... Unpacking python3-installer (0.7.0+dfsg1-3) ... Selecting previously unselected package pybuild-plugin-pyproject. Preparing to unpack .../363-pybuild-plugin-pyproject_6.20250414_all.deb ... Unpacking pybuild-plugin-pyproject (6.20250414) ... Selecting previously unselected package sphinx-common. Preparing to unpack .../364-sphinx-common_8.2.3-6_all.deb ... Unpacking sphinx-common (8.2.3-6) ... Selecting previously unselected package python-petsc4py-doc. Preparing to unpack .../365-python-petsc4py-doc_3.22.4-1_all.deb ... Unpacking python-petsc4py-doc (3.22.4-1) ... Selecting previously unselected package python3-adios2-serial. Preparing to unpack .../366-python3-adios2-serial_2.10.2+dfsg1-3_arm64.deb ... Unpacking python3-adios2-serial (2.10.2+dfsg1-3) ... Selecting previously unselected package python3-adios2. Preparing to unpack .../367-python3-adios2_2.10.2+dfsg1-3_all.deb ... Unpacking python3-adios2 (2.10.2+dfsg1-3) ... Selecting previously unselected package python3-all. Preparing to unpack .../368-python3-all_3.13.7-1_arm64.deb ... Unpacking python3-all (3.13.7-1) ... Selecting previously unselected package python3-all-dev. Preparing to unpack .../369-python3-all-dev_3.13.7-1_arm64.deb ... Unpacking python3-all-dev (3.13.7-1) ... Selecting previously unselected package python3-decorator. Preparing to unpack .../370-python3-decorator_5.2.1-2_all.deb ... Unpacking python3-decorator (5.2.1-2) ... Selecting previously unselected package python3-mpi4py. Preparing to unpack .../371-python3-mpi4py_4.1.0-3_arm64.deb ... Unpacking python3-mpi4py (4.1.0-3) ... Selecting previously unselected package python3-nanobind. Preparing to unpack .../372-python3-nanobind_2.5.0-1_all.deb ... Unpacking python3-nanobind (2.5.0-1) ... Selecting previously unselected package python3-pusimp. Preparing to unpack .../373-python3-pusimp_0.1.1-1_all.deb ... Unpacking python3-pusimp (0.1.1-1) ... Selecting previously unselected package python3-scipy. Preparing to unpack .../374-python3-scipy_1.15.3-1.1_arm64.deb ... Unpacking python3-scipy (1.15.3-1.1) ... Selecting previously unselected package swig. Preparing to unpack .../375-swig_4.3.0-1_arm64.deb ... Unpacking swig (4.3.0-1) ... Selecting previously unselected package python3-petsc4py-real3.22. Preparing to unpack .../376-python3-petsc4py-real3.22_3.22.4-1_arm64.deb ... Unpacking python3-petsc4py-real3.22 (3.22.4-1) ... Selecting previously unselected package python3-petsc4py-real. Preparing to unpack .../377-python3-petsc4py-real_3.22.4-1_all.deb ... Unpacking python3-petsc4py-real (3.22.4-1) ... Selecting previously unselected package python3-petsc4py. Preparing to unpack .../378-python3-petsc4py_3.22.4-1_all.deb ... Unpacking python3-petsc4py (3.22.4-1) ... Selecting previously unselected package python3-slepc4py-real3.22. Preparing to unpack .../379-python3-slepc4py-real3.22_3.22.2-1+b1_arm64.deb ... Unpacking python3-slepc4py-real3.22 (3.22.2-1+b1) ... Selecting previously unselected package python3-slepc4py-real. Preparing to unpack .../380-python3-slepc4py-real_3.22.2-1_all.deb ... Unpacking python3-slepc4py-real (3.22.2-1) ... Selecting previously unselected package python3-slepc4py. Preparing to unpack .../381-python3-slepc4py_3.22.2-1_all.deb ... Unpacking python3-slepc4py (3.22.2-1) ... Selecting previously unselected package python3-dolfinx-real. Preparing to unpack .../382-python3-dolfinx-real_1%3a0.9.0-7_arm64.deb ... Unpacking python3-dolfinx-real (1:0.9.0-7) ... Selecting previously unselected package python3-dolfinx:arm64. Preparing to unpack .../383-python3-dolfinx_1%3a0.9.0-7_arm64.deb ... Unpacking python3-dolfinx:arm64 (1:0.9.0-7) ... Selecting previously unselected package python3-h5py-serial. Preparing to unpack .../384-python3-h5py-serial_3.13.0-1+b1_arm64.deb ... Unpacking python3-h5py-serial (3.13.0-1+b1) ... Selecting previously unselected package python3-h5py. Preparing to unpack .../385-python3-h5py_3.13.0-1_all.deb ... Unpacking python3-h5py (3.13.0-1) ... Selecting previously unselected package python3-iniconfig. Preparing to unpack .../386-python3-iniconfig_1.1.1-2_all.deb ... Unpacking python3-iniconfig (1.1.1-2) ... Selecting previously unselected package python3-nibabel. Preparing to unpack .../387-python3-nibabel_5.3.2-2_all.deb ... Unpacking python3-nibabel (5.3.2-2) ... Selecting previously unselected package python3-pathspec. Preparing to unpack .../388-python3-pathspec_0.12.1-1_all.deb ... Unpacking python3-pathspec (0.12.1-1) ... Selecting previously unselected package python3-pluggy. Preparing to unpack .../389-python3-pluggy_1.6.0-1_all.deb ... Unpacking python3-pluggy (1.6.0-1) ... Selecting previously unselected package python3-pyproject-metadata. Preparing to unpack .../390-python3-pyproject-metadata_0.9.1-2_all.deb ... Unpacking python3-pyproject-metadata (0.9.1-2) ... Selecting previously unselected package python3-pytest. Preparing to unpack .../391-python3-pytest_8.3.5-2_all.deb ... Unpacking python3-pytest (8.3.5-2) ... Selecting previously unselected package python3-scikit-build-core. Preparing to unpack .../392-python3-scikit-build-core_0.11.1-3_all.deb ... Unpacking python3-scikit-build-core (0.11.1-3) ... Setting up media-types (13.0.0) ... Setting up libpipeline1:arm64 (1.5.8-1) ... Setting up libboost-program-options1.83.0:arm64 (1.83.0-4.2) ... Setting up libnorm1t64:arm64 (1.5.9+dfsg-3.1+b2) ... Setting up libpciaccess0:arm64 (0.17-3+b3) ... Setting up libxau6:arm64 (1:1.0.11-1) ... Setting up libxdmcp6:arm64 (1:1.1.5-1) ... Setting up libkeyutils1:arm64 (1.6.3-6) ... Setting up libadios2-common-c++11-dev (2.10.2+dfsg1-3) ... Setting up libxcb1:arm64 (1.17.0-2+b1) ... Setting up fonts-mathjax (2.7.9+dfsg-1) ... Setting up libfftw3-single3:arm64 (3.3.10-2+b1) ... Setting up libsodium23:arm64 (1.0.18-1+b2) ... Setting up swig (4.3.0-1) ... Setting up libzstd-dev:arm64 (1.5.7+dfsg-1.1) ... Setting up bsdextrautils (2.41.1-3) ... Setting up libjs-mathjax (2.7.9+dfsg-1) ... Setting up libboost-date-time1.83.0:arm64 (1.83.0-4.2) ... Setting up libmagic-mgc (1:5.46-5) ... Setting up libboost-timer1.83.0:arm64 (1.83.0-4.2) ... Setting up gcc-14-base:arm64 (14.3.0-8) ... Setting up libcbor0.10:arm64 (0.10.2-2) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:arm64 (0.2.5-2) ... Setting up libxml2-16:arm64 (2.14.5+dfsg-0.2) ... Setting up libscotch-7.0:arm64 (7.0.7-1) ... Setting up libyaml-cpp0.8:arm64 (0.8.0+dfsg-7) ... Setting up libboost-regex1.83.0:arm64 (1.83.0-4.2) ... Setting up libdebhelper-perl (13.26) ... Setting up libbrotli1:arm64 (1.1.0-2+b7) ... Setting up libedit2:arm64 (3.1-20250104-1) ... Setting up libboost-system1.83.0:arm64 (1.83.0-4.2) ... Setting up libuv1t64:arm64 (1.51.0-2) ... Setting up libmagic1t64:arm64 (1:5.46-5) ... Setting up libadios2-common-core-dev:arm64 (2.10.2+dfsg1-3) ... Setting up libnghttp2-14:arm64 (1.64.0-1.1+b1) ... Setting up libibumad3:arm64 (56.1-1) ... Setting up libboost-thread1.83.0:arm64 (1.83.0-4.2) ... Setting up libfftw3-long3:arm64 (3.3.10-2+b1) ... Setting up gettext-base (0.23.1-2+b1) ... Setting up m4 (1.4.20-1) ... Setting up libevent-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Setting up libmetis5:arm64 (5.1.0.dfsg-7+b2) ... Setting up libibmad5:arm64 (56.1-1) ... Setting up libcom-err2:arm64 (1.47.2-3+b3) ... Setting up libldl3:arm64 (1:7.11.0+dfsg-2) ... Setting up file (1:5.46-5) ... Setting up libboost-filesystem1.83.0:arm64 (1.83.0-4.2) ... Setting up libaec0:arm64 (1.1.4-2) ... Setting up libpugixml1v5:arm64 (1.14-2) ... Setting up libelf1t64:arm64 (0.193-3) ... Setting up libc6-dbg:arm64 (2.41-12) ... Setting up libkrb5support0:arm64 (1.21.3-5) ... Setting up libsasl2-modules-db:arm64 (2.1.28+dfsg1-9) ... Setting up tzdata (2025b-5) ... Current default time zone: 'Etc/UTC' Local time is now: Tue Oct 20 20:13:39 UTC 2026. Universal Time is now: Tue Oct 20 20:13:39 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up libboost-atomic1.83.0:arm64 (1.83.0-4.2) ... Setting up libboost-serialization1.83.0:arm64 (1.83.0-4.2) ... Setting up libbtf2:arm64 (1:7.11.0+dfsg-2) ... Setting up libpgm-5.3-0t64:arm64 (5.3.128~dfsg-2.1+b1) ... Setting up xtrans-dev (1.4.0-1) ... Setting up autotools-dev (20240727.1) ... Setting up libz3-4:arm64 (4.13.3-1) ... Setting up libblas3:arm64 (3.12.1-7) ... update-alternatives: using /usr/lib/aarch64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/aarch64-linux-gnu/libblas.so.3 (libblas.so.3-aarch64-linux-gnu) in auto mode Setting up libunbound8:arm64 (1.23.1-1) ... Setting up libpkgconf3:arm64 (1.8.1-4) ... Setting up libgmpxx4ldbl:arm64 (2:6.3.0+dfsg-5) ... Setting up libmunge2:arm64 (0.5.16-1) ... Setting up libexpat1-dev:arm64 (2.7.1-2) ... Setting up libjpeg62-turbo:arm64 (1:2.1.5-4) ... Setting up libx11-data (2:1.8.12-1) ... Setting up libjpeg62-turbo-dev:arm64 (1:2.1.5-4) ... Setting up libboost-chrono1.83.0t64:arm64 (1.83.0-4.2) ... Setting up libjsoncpp26:arm64 (1.9.6-4) ... Setting up liblzf1:arm64 (3.6-4+b3) ... Setting up libproc2-0:arm64 (2:4.0.4-9) ... Setting up comerr-dev:arm64 (2.1-1.47.2-3+b3) ... Setting up libunistring5:arm64 (1.3-2) ... Setting up libssl-dev:arm64 (3.5.2-1) ... Setting up libpng16-16t64:arm64 (1.6.50-1) ... Setting up libhwloc15:arm64 (2.12.2-1) ... Setting up python3-numpy-dev:arm64 (1:2.2.4+ds-1.2) ... Setting up autopoint (0.23.1-2) ... Setting up pkgconf-bin (1.8.1-4) ... Setting up libk5crypto3:arm64 (1.21.3-5) ... Setting up libltdl7:arm64 (2.5.4-5) ... Setting up opencl-c-headers (3.0~2025.07.22-1) ... Setting up libfftw3-double3:arm64 (3.3.10-2+b1) ... Setting up libjs-sphinxdoc (8.2.3-6) ... Setting up libsasl2-2:arm64 (2.1.28+dfsg1-9) ... Setting up libgfortran5:arm64 (15.2.0-3) ... Setting up autoconf (2.72-3.1) ... Setting up libnghttp3-9:arm64 (1.11.0-1) ... Setting up libnghttp3-dev:arm64 (1.11.0-1) ... Setting up libmumps-headers-dev (5.7.3-3) ... Setting up liblzma-dev:arm64 (5.8.1-1.1) ... Setting up zlib1g-dev:arm64 (1:1.3.dfsg+really1.3.1-1+b1) ... Setting up robin-map-dev (1.3.0-1) ... Setting up libffi8:arm64 (3.5.2-2) ... Setting up libnuma1:arm64 (2.0.19-1) ... Setting up dwz (0.16-2) ... Setting up sensible-utils (0.0.26) ... Setting up cpp-14-aarch64-linux-gnu (14.3.0-8) ... Setting up ocl-icd-libopencl1:arm64 (2.3.3-1) ... Setting up libuchardet0:arm64 (0.0.8-2) ... Setting up procps (2:4.0.4-9) ... Setting up libjson-perl (4.10000-1) ... Setting up libnl-3-200:arm64 (3.11.0-2) ... Setting up openmpi-common (5.0.7-1) ... Setting up libtasn1-6:arm64 (4.20.0-2) ... Setting up libsuitesparseconfig7:arm64 (1:7.11.0+dfsg-2) ... Setting up libx11-6:arm64 (2:1.8.12-1) ... Setting up xorg-sgml-doctools (1:1.11-1.1) ... Setting up netbase (6.5) ... Setting up cmake-data (4.1.1+really3.31.6-1) ... Setting up librhash1:arm64 (1.4.6-1) ... Setting up libkrb5-3:arm64 (1.21.3-5) ... Setting up libevent-core-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Setting up libicu76:arm64 (76.1-4) ... Setting up libssh2-1t64:arm64 (1.11.1-1) ... Setting up libboost-math1.83.0:arm64 (1.83.0-4.2) ... Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Setting up libgcc-14-dev:arm64 (14.3.0-8) ... Setting up libfido2-1:arm64 (1.16.0-2) ... Setting up valgrind (1:3.24.0-3) ... Setting up libtasn1-6-dev:arm64 (4.20.0-2) ... Setting up libstdc++-14-dev:arm64 (14.3.0-8) ... Setting up libdrm-common (2.4.125-2) ... Setting up valgrind-mpi (1:3.24.0-3) ... Setting up libarchive13t64:arm64 (3.7.4-4+b1) ... Setting up readline-common (8.3-3) ... Setting up libldap2:arm64 (2.6.10+dfsg-1) ... Setting up libbrotli-dev:arm64 (1.1.0-2+b7) ... Setting up libfmt10:arm64 (10.1.1+ds1-4) ... Setting up libblas-dev:arm64 (3.12.1-7) ... update-alternatives: using /usr/lib/aarch64-linux-gnu/blas/libblas.so to provide /usr/lib/aarch64-linux-gnu/libblas.so (libblas.so-aarch64-linux-gnu) in auto mode Setting up libsz2:arm64 (1.1.4-2) ... Setting up automake (1:1.17-4) ... update-alternatives: using /usr/bin/automake-1.17 to provide /usr/bin/automake (automake) in auto mode Setting up libgfortran-14-dev:arm64 (14.3.0-8) ... Setting up x11proto-dev (2024.1-1) ... Setting up libfile-stripnondeterminism-perl (1.15.0-1) ... Setting up liblapack3:arm64 (3.12.1-7) ... update-alternatives: using /usr/lib/aarch64-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/aarch64-linux-gnu/liblapack.so.3 (liblapack.so.3-aarch64-linux-gnu) in auto mode Setting up libboost1.83-dev:arm64 (1.83.0-4.2) ... Setting up gettext (0.23.1-2+b1) ... Setting up libarpack2t64:arm64 (3.9.1-6) ... Setting up libgmp-dev:arm64 (2:6.3.0+dfsg-5) ... Setting up libamd3:arm64 (1:7.11.0+dfsg-2) ... Setting up libxau-dev:arm64 (1:1.0.11-1) ... Setting up libboost-chrono1.83-dev:arm64 (1.83.0-4.2) ... Setting up nettle-dev:arm64 (3.10.1-1) ... Setting up libyaml-dev:arm64 (0.2.5-2) ... Setting up libboost-math1.83-dev:arm64 (1.83.0-4.2) ... Setting up libtool (2.5.4-5) ... Setting up libcolamd3:arm64 (1:7.11.0+dfsg-2) ... Setting up libspex3:arm64 (1:7.11.0+dfsg-2) ... Setting up libboost-chrono-dev:arm64 (1.83.0.2+b2) ... Setting up libfftw3-bin (3.3.10-2+b1) ... Setting up libsuitesparse-mongoose3:arm64 (1:7.11.0+dfsg-2) ... Setting up libevent-pthreads-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Setting up libboost-math-dev:arm64 (1.83.0.2+b2) ... Setting up libevent-openssl-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Setting up libpugixml-dev:arm64 (1.14-2) ... Setting up libboost-program-options1.83-dev:arm64 (1.83.0-4.2) ... Setting up libaec-dev:arm64 (1.1.4-2) ... Setting up libcxsparse4:arm64 (1:7.11.0+dfsg-2) ... Setting up libboost-serialization1.83-dev:arm64 (1.83.0-4.2) ... Setting up libjpeg-dev:arm64 (1:2.1.5-4) ... Setting up libxext6:arm64 (2:1.3.4-1+b3) ... Setting up libidn2-0:arm64 (2.3.8-4) ... Setting up libgfortran-15-dev:arm64 (15.2.0-3) ... Setting up libcamd3:arm64 (1:7.11.0+dfsg-2) ... Setting up libsuperlu7:arm64 (7.0.1+dfsg1-2) ... Setting up pkgconf:arm64 (1.8.1-4) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up libnuma-dev:arm64 (2.0.19-1) ... Setting up libnl-route-3-200:arm64 (3.11.0-2) ... Setting up libxnvctrl0:arm64 (535.171.04-1+b2) ... Setting up dh-autoreconf (20) ... Setting up libltdl-dev:arm64 (2.5.4-5) ... Setting up libxdmcp-dev:arm64 (1:1.1.5-1) ... Setting up libxml2-dev:arm64 (2.14.5+dfsg-0.2) ... Setting up libjs-jquery-ui (1.13.2+dfsg-1) ... Setting up libboost-timer1.83-dev:arm64 (1.83.0-4.2) ... Setting up libllvm17t64:arm64 (1:17.0.6-22+b3) ... Setting up libboost-program-options-dev:arm64 (1.83.0.2+b2) ... Setting up gfortran-15-aarch64-linux-gnu (15.2.0-3) ... Setting up librbio4:arm64 (1:7.11.0+dfsg-2) ... Setting up libboost-date-time1.83-dev:arm64 (1.83.0-4.2) ... Setting up libldap-dev:arm64 (2.6.10+dfsg-1) ... Setting up sphinx-common (8.2.3-6) ... Setting up libp11-kit0:arm64 (0.25.5-3) ... Setting up opencl-clhpp-headers (3.0~2025.07.22-1) ... Setting up liblapack-dev:arm64 (3.12.1-7) ... update-alternatives: using /usr/lib/aarch64-linux-gnu/lapack/liblapack.so to provide /usr/lib/aarch64-linux-gnu/liblapack.so (liblapack.so-aarch64-linux-gnu) in auto mode Setting up libeigen3-dev (3.4.0-5) ... Setting up libgssapi-krb5-2:arm64 (1.21.3-5) ... Setting up libfmt-dev:arm64 (10.1.1+ds1-4) ... Setting up icu-devtools (76.1-4) ... Setting up pkg-config:arm64 (1.8.1-4) ... Setting up libboost-serialization-dev:arm64 (1.83.0.2+b2) ... Setting up libspdlog1.15:arm64 (1:1.15.3+ds-1) ... Setting up libssh2-1-dev:arm64 (1.11.1-1) ... Setting up libidn2-dev:arm64 (2.3.8-4) ... Setting up ocl-icd-opencl-dev:arm64 (2.3.3-1) ... Setting up libboost-atomic1.83-dev:arm64 (1.83.0-4.2) ... Setting up cpp-14 (14.3.0-8) ... Setting up libevent-extra-2.1-7t64:arm64 (2.1.12-stable-10+b1) ... Setting up libccolamd3:arm64 (1:7.11.0+dfsg-2) ... Setting up libreadline8t64:arm64 (8.3-3) ... Setting up dh-strip-nondeterminism (1.15.0-1) ... Setting up libdrm2:arm64 (2.4.125-2) ... Setting up libnl-3-dev:arm64 (3.11.0-2) ... Setting up libbasix0.9:arm64 (0.9.0-2+b2) ... Setting up groff-base (1.23.0-9) ... Setting up gfortran-aarch64-linux-gnu (4:15.2.0-1) ... Setting up libhwloc-dev:arm64 (2.12.2-1) ... Setting up libboost-dev:arm64 (1.83.0.2+b2) ... Setting up gcc-14-aarch64-linux-gnu (14.3.0-8) ... Setting up libamd-comgr2:arm64 (6.0+git20231212.4510c28+dfsg-3+b2) ... Setting up libboost-system1.83-dev:arm64 (1.83.0-4.2) ... Setting up libsuperlu-dev:arm64 (7.0.1+dfsg1-2) ... Setting up libbasix-dev:arm64 (0.9.0-2+b2) ... Setting up libpython3.13-stdlib:arm64 (3.13.7-1) ... Setting up libfftw3-dev:arm64 (3.3.10-2+b1) ... Setting up libicu-dev:arm64 (76.1-4) ... Setting up libboost-timer-dev:arm64 (1.83.0.2+b2) ... Setting up libp11-kit-dev:arm64 (0.25.5-3) ... Setting up gfortran-15 (15.2.0-3) ... Setting up libpython3-stdlib:arm64 (3.13.7-1) ... Setting up libdrm-amdgpu1:arm64 (2.4.125-2) ... Setting up libpython3.13:arm64 (3.13.7-1) ... Setting up libgnutls30t64:arm64 (3.8.9-3) ... Setting up libboost-thread1.83-dev:arm64 (1.83.0-4.2) ... Setting up libgnutls-openssl27t64:arm64 (3.8.9-3) ... Setting up libnghttp2-dev:arm64 (1.64.0-1.1+b1) ... Setting up libibverbs1:arm64 (56.1-1) ... Setting up libcholmod5:arm64 (1:7.11.0+dfsg-2) ... Setting up libarpack2-dev:arm64 (3.9.1-6) ... Setting up libxcb1-dev:arm64 (1.17.0-2+b1) ... Setting up libzmq5:arm64 (4.3.5-1+b3) ... Setting up ibverbs-providers:arm64 (56.1-1) ... Setting up libspqr4:arm64 (1:7.11.0+dfsg-2) ... Setting up python3.13 (3.13.7-1) ... Setting up openssh-client (1:10.0p1-8) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up nanobind-dev (2.5.0-1) ... Setting up libpsl5t64:arm64 (0.21.2-1.1+b1) ... Setting up libx11-dev:arm64 (2:1.8.12-1) ... Setting up python3 (3.13.7-1) ... /usr/share/petsc/3.22/lib/petsc/bin/petsc_tas_analysis.py:779: SyntaxWarning: invalid escape sequence '\l' axMeshConv.set(xlabel='Problem Size $\log N$', ylabel='Error $\log |x - x^*|$', title='Mesh Convergence') /usr/share/petsc/3.22/lib/petsc/bin/petsc_tas_analysis.py:779: SyntaxWarning: invalid escape sequence '\l' axMeshConv.set(xlabel='Problem Size $\log N$', ylabel='Error $\log |x - x^*|$', title='Mesh Convergence') /usr/share/petsc/3.22/lib/petsc/bin/petsclogformat.py:253: SyntaxWarning: invalid escape sequence '\d' print("\documentclass{article}") /usr/share/petsc/3.22/lib/petsc/bin/petsclogformat.py:256: SyntaxWarning: invalid escape sequence '\c' print("\centering") /usr/share/petsc/3.22/lib/petsc/bin/petsclogformat.py:259: SyntaxWarning: invalid escape sequence '\m' print(" & & \multicolumn{4}{c}{--------------- Percent of -------------} & \\\\") /usr/share/petsc/3.22/lib/petsc/bin/petsclogformat.py:261: SyntaxWarning: invalid escape sequence '\h' print("\hline") /usr/share/petsc/3.22/lib/petsc/bin/petsclogformat.py:321: SyntaxWarning: invalid escape sequence '\e' print("\end{tabular}") /usr/share/petsc/3.22/lib/petsc/bin/petsclogformat.py:322: SyntaxWarning: invalid escape sequence '\e' print("\end{table}") /usr/share/petsc/3.22/lib/petsc/bin/petsclogformat.py:323: SyntaxWarning: invalid escape sequence '\e' print("\end{document}") Setting up libboost-filesystem1.83-dev:arm64 (1.83.0-4.2) ... Setting up python3-zipp (3.23.0-1) ... Setting up python-petsc4py-doc (3.22.4-1) ... Setting up python3-autocommand (2.2.2-3) ... Setting up libhwloc-plugins:arm64 (2.12.2-1) ... Setting up libspdlog-dev:arm64 (1:1.15.3+ds-1) ... Setting up man-db (2.13.1-1) ... Not building database; man-db/auto-update is not 'true'. Setting up gfortran (4:15.2.0-1) ... update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f95 (f95) in auto mode update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f77 (f77) in auto mode Setting up gcc-14 (14.3.0-8) ... Setting up libpsl-dev:arm64 (0.21.2-1.1+b1) ... Setting up libnl-route-3-dev:arm64 (3.11.0-2) ... Setting up python3-decorator (5.2.1-2) ... Setting up python3-packaging (25.0-1) ... Setting up python3-pyproject-hooks (1.2.0-1) ... Setting up libgnutls-dane0t64:arm64 (3.8.9-3) ... Setting up librtmp1:arm64 (2.4+20151223.gitfa8646d.1-3) ... Setting up libklu2:arm64 (1:7.11.0+dfsg-2) ... Setting up libgssrpc4t64:arm64 (1.21.3-5) ... Setting up libpython3.13-dev:arm64 (3.13.7-1) ... Setting up libevent-dev (2.1.12-stable-10+b1) ... Setting up libboost-regex1.83-dev:arm64 (1.83.0-4.2) ... Setting up python3-typing-extensions (4.15.0-1) ... Setting up libpmix2t64:arm64 (5.0.7-1) ... Setting up python3-numpy (1:2.2.4+ds-1.2) ... Setting up python3-installer (0.7.0+dfsg1-3) ... Setting up python3-pluggy (1.6.0-1) ... Setting up libumfpack6:arm64 (1:7.11.0+dfsg-2) ... Setting up gfortran-14-aarch64-linux-gnu (14.3.0-8) ... Setting up librdmacm1t64:arm64 (56.1-1) ... Setting up gfortran-14 (14.3.0-8) ... Setting up python3-pathspec (0.12.1-1) ... Setting up python3-pusimp (0.1.1-1) ... Setting up libboost-filesystem-dev:arm64 (1.83.0.2+b2) ... Setting up libpmix-dev:arm64 (5.0.7-1) ... Setting up libhsakmt1:arm64 (6.2.4+ds-1) ... Setting up python3-cffi-backend:arm64 (2.0.0-1) ... Setting up libboost-thread-dev:arm64 (1.83.0.2+b2) ... Setting up libkadm5clnt-mit12:arm64 (1.21.3-5) ... Setting up dh-python (6.20250414) ... Setting up libgnutls28-dev:arm64 (3.8.9-3) ... Setting up python3-more-itertools (10.8.0-1) ... Setting up libfabric1:arm64 (2.1.0-1.1) ... Setting up python3-iniconfig (1.1.1-2) ... Setting up python3-nanobind (2.5.0-1) ... Setting up python3-scipy (1.15.3-1.1) ... Setting up libpython3-dev:arm64 (3.13.7-1) ... Setting up python3-jaraco.functools (4.1.0-1) ... Setting up python3-ufl (2024.2.0-3) ... Setting up python3-jaraco.context (6.0.1-1) ... Setting up libcurl4t64:arm64 (8.15.0-1) ... Setting up libkdb5-10t64:arm64 (1.21.3-5) ... Setting up python3-pyproject-metadata (0.9.1-2) ... Setting up python3.13-dev (3.13.7-1) ... Setting up libboost-iostreams1.83-dev:arm64 (1.83.0-4.2) ... Setting up python3-pytest (8.3.5-2) ... Setting up python3-ply (3.11-9) ... Setting up python3-typeguard (4.4.4-1) ... Setting up python3-all (3.13.7-1) ... Setting up debhelper (13.26) ... Setting up libboost-iostreams-dev:arm64 (1.83.0.2+b2) ... Setting up libibverbs-dev:arm64 (56.1-1) ... Setting up libparu1:arm64 (1:7.11.0+dfsg-2) ... Setting up python3-wheel (0.46.1-2) ... Setting up python3-pycparser (2.23-1) ... Setting up python3-inflect (7.5.0-1) ... Setting up libpython3-all-dev:arm64 (3.13.7-1) ... Setting up python3-jaraco.text (4.0.0-1) ... Setting up python3-nibabel (5.3.2-2) ... Setting up python3-dev (3.13.7-1) ... Setting up librtmp-dev:arm64 (2.4+20151223.gitfa8646d.1-3) ... Setting up libhdf5-310:arm64 (1.14.5+repack-3) ... Setting up libhsa-runtime64-1:arm64 (6.1.2-3) ... Setting up libkadm5srv-mit12:arm64 (1.21.3-5) ... Setting up cmake (4.1.1+really3.31.6-1) ... Setting up python3-build (1.2.2-4) ... Setting up python3-basix (0.9.0-2+b2) ... Setting up krb5-multidev:arm64 (1.21.3-5) ... Setting up python3-pkg-resources (78.1.1-0.1) ... Setting up python3-all-dev (3.13.7-1) ... Setting up libhdf5-hl-310:arm64 (1.14.5+repack-3) ... Setting up python3-setuptools (78.1.1-0.1) ... Setting up libsuitesparse-dev:arm64 (1:7.11.0+dfsg-2) ... Setting up python3-scikit-build-core (0.11.1-3) ... Setting up pybuild-plugin-pyproject (6.20250414) ... Setting up python3-cffi (2.0.0-1) ... Setting up python3-h5py-serial (3.13.0-1+b1) ... Setting up python3-ffcx (1:0.9.0-2) ... Setting up libkrb5-dev:arm64 (1.21.3-5) ... Setting up libamdhip64-5:arm64 (5.7.1-6) ... Setting up libcurl4-openssl-dev:arm64 (8.15.0-1) ... Setting up python3-h5py (3.13.0-1) ... Setting up libucx0:arm64 (1.18.1+ds-2+b1) ... Setting up libopenmpi40:arm64 (5.0.7-1) ... Setting up libptscotch-7.0:arm64 (7.0.7-1) ... Setting up libcombblas2.0.0t64:arm64 (2.0.0-6+b2) ... Setting up libfftw3-mpi3:arm64 (3.3.10-2+b1) ... Setting up libhdf5-openmpi-310:arm64 (1.14.5+repack-3) ... Setting up libhdf5-openmpi-fortran-310:arm64 (1.14.5+repack-3) ... Setting up libparpack2t64:arm64 (3.9.1-6) ... Setting up libboost-mpi1.83.0 (1.83.0-4.2) ... Setting up openmpi-bin (5.0.7-1) ... update-alternatives: using /usr/bin/mpirun.openmpi to provide /usr/bin/mpirun (mpirun) in auto mode update-alternatives: warning: skip creation of /usr/share/man/man1/mpiexec.1.gz because associated file /usr/share/man/man1/mpiexec.openmpi.1.gz (of link group mpirun) doesn't exist update-alternatives: using /usr/bin/mpicc.openmpi to provide /usr/bin/mpicc (mpi) in auto mode Setting up libhdf5-openmpi-hl-310:arm64 (1.14.5+repack-3) ... Setting up libhdf5-openmpi-hl-fortran-310:arm64 (1.14.5+repack-3) ... Setting up libhdf5-openmpi-hl-cpp-310:arm64 (1.14.5+repack-3) ... Setting up libsuperlu-dist8:arm64 (8.2.1+dfsg1-5+b1) ... Setting up libhdf5-openmpi-cpp-310:arm64 (1.14.5+repack-3) ... Setting up libfftw3-mpi-dev:arm64 (3.3.10-2+b1) ... Setting up mpi-default-bin (1.18) ... Setting up libhypre-2.32.0:arm64 (2.32.0-4) ... Setting up python3-mpi4py (4.1.0-3) ... Setting up libsuperlu-dist-dev:arm64 (8.2.1+dfsg1-5+b1) ... Setting up libopenmpi-dev:arm64 (5.0.7-1) ... update-alternatives: using /usr/lib/aarch64-linux-gnu/openmpi/include to provide /usr/include/aarch64-linux-gnu/mpi (mpi-aarch64-linux-gnu) in auto mode Setting up libhdf5-openmpi-dev (1.14.5+repack-3) ... update-alternatives: using /usr/bin/h5pcc.openmpi to provide /usr/bin/h5pcc (h5pcc) in auto mode update-alternatives: using /usr/lib/aarch64-linux-gnu/pkgconfig/hdf5-openmpi.pc to provide /usr/lib/aarch64-linux-gnu/pkgconfig/hdf5.pc (hdf5.pc) in auto mode update-alternatives: updating alternative /usr/bin/mpicc.openmpi because link group mpi has changed slave links update-alternatives: using /usr/lib/aarch64-linux-gnu/pkgconfig/hdf5-mpi.pc to provide /usr/lib/aarch64-linux-gnu/pkgconfig/hdf5.pc (hdf5.pc) in auto mode Setting up libscalapack-openmpi2.2:arm64 (2.2.2-1) ... Setting up libmumps-5.7:arm64 (5.7.3-3+b1) ... Setting up libscalapack-openmpi-dev:arm64 (2.2.2-1) ... Setting up mpi-default-dev (1.18) ... Setting up libscalapack-mpi-dev:arm64 (2.2.2-1) ... Setting up libmumps-dev:arm64 (5.7.3-3+b1) ... Setting up libscotch-dev (7.0.7-1) ... Setting up libparpack2-dev:arm64 (3.9.1-6) ... Setting up libpetsc-real3.22:arm64 (3.22.5+dfsg1-2+b1) ... update-alternatives: using /usr/lib/aarch64-linux-gnu/libpetsc_real.so.3.22.5 to provide /usr/lib/aarch64-linux-gnu/libpetsc.so.3.22 (libpetsc.so.3.22) in auto mode Setting up libhypre-dev:arm64 (2.32.0-4) ... Setting up libptscotch-dev (7.0.7-1) ... Setting up python3-petsc4py-real3.22 (3.22.4-1) ... Setting up libboost-mpi1.83-dev (1.83.0-4.2) ... Setting up libboost-mpi-dev (1.83.0.2+b2) ... Setting up libhdf5-mpi-dev:arm64 (1.14.5+repack-3) ... Setting up libpetsc3.22-dev-common (3.22.5+dfsg1-2) ... Setting up python3-petsc4py (3.22.4-1) ... Setting up libslepc-real3.22 (3.22.2+dfsg1-1) ... update-alternatives: using /usr/lib/aarch64-linux-gnu/libslepc_real.so.3.22.2 to provide /usr/lib/aarch64-linux-gnu/libslepc.so.3.22 (libslepc.so.3.22) in auto mode Setting up python3-petsc4py-real (3.22.4-1) ... Setting up libpetsc-real3.22-dev:arm64 (3.22.5+dfsg1-2+b1) ... update-alternatives: error: no alternatives for petsc update-alternatives: using /usr/lib/petscdir/petsc3.22/aarch64-linux-gnu-real to provide /usr/lib/petsc (petsc) in auto mode update-alternatives: using /usr/lib/aarch64-linux-gnu/libpetsc_real.so.3.22.5 to provide /usr/lib/aarch64-linux-gnu/libpetsc_real.so (libpetsc_real.so) in auto mode update-alternatives: using /usr/lib/petscdir/petsc3.22/aarch64-linux-gnu-real to provide /usr/lib/petscdir/3.22 (petsc3.22) in auto mode Setting up python3-slepc4py-real3.22 (3.22.2-1+b1) ... Setting up python3-slepc4py (3.22.2-1) ... Setting up libslepc-real3.22-dev (3.22.2+dfsg1-1) ... update-alternatives: error: no alternatives for slepc update-alternatives: using /usr/lib/slepcdir/slepc3.22/aarch64-linux-gnu-real to provide /usr/lib/slepc (slepc) in auto mode update-alternatives: using /usr/lib/aarch64-linux-gnu/libslepc_real.so.3.22.2 to provide /usr/lib/aarch64-linux-gnu/libslepc_real.so (libslepc_real.so) in auto mode update-alternatives: using /usr/lib/slepcdir/slepc3.22/aarch64-linux-gnu-real to provide /usr/lib/slepcdir/3.22 (slepc3.22) in auto mode Setting up python3-slepc4py-real (3.22.2-1) ... Setting up libadios2-serial-c-2.10:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-mpi-plugins:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-serial-auxiliary-2.10:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-serial-plugins:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-mpi-core-2.10:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-mpi-c++11-2.10:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-serial-core-2.10:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-mpi-c-2.10:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-mpi-auxiliary-2.10:arm64 (2.10.2+dfsg1-3) ... Setting up libdolfinx-real0.9:arm64 (1:0.9.0-7) ... Setting up python3-adios2-serial (2.10.2+dfsg1-3) ... Setting up libdolfinx-real-dev:arm64 (1:0.9.0-7) ... Setting up libadios2-mpi-auxiliary-dev:arm64 (2.10.2+dfsg1-3) ... Setting up python3-adios2 (2.10.2+dfsg1-3) ... Setting up libadios2-mpi-core-dev:arm64 (2.10.2+dfsg1-3) ... Setting up libadios2-mpi-c++11-dev:arm64 (2.10.2+dfsg1-3) ... Setting up libdolfinx-dev:arm64 (1:0.9.0-7) ... Setting up python3-dolfinx-real (1:0.9.0-7) ... Setting up python3-dolfinx:arm64 (1:0.9.0-7) ... Processing triggers for libc-bin (2.41-12) ... Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: Running cd /build/reproducible-path/scifem-0.6.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../scifem_0.6.0-2_source.changes dpkg-buildpackage: info: source package scifem dpkg-buildpackage: info: source version 0.6.0-2 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Drew Parsons dpkg-source --before-build . dpkg-buildpackage: info: host architecture arm64 dpkg-source: info: using options from scifem-0.6.0/debian/source/options: --extend-diff-ignore=^[^/]*[.]egg-info/ debian/rules clean dh clean --buildsystem=pybuild dh_auto_clean -O--buildsystem=pybuild dh_autoreconf_clean -O--buildsystem=pybuild dh_clean -O--buildsystem=pybuild debian/rules binary dh binary --buildsystem=pybuild dh_update_autotools_config -O--buildsystem=pybuild dh_autoreconf -O--buildsystem=pybuild dh_auto_configure -O--buildsystem=pybuild dh_auto_build -O--buildsystem=pybuild I: pybuild plugin_pyproject:129: Building wheel for python3.13 with "build" module I: pybuild base:311: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem * Building wheel... *** scikit-build-core 0.11.1 using CMake 3.31.6 (wheel) *** Configuring CMake... loading initial cache file /tmp/tmplvp81ojy/build/CMakeInit.txt -- The C compiler identification is GNU 15.2.0 -- The CXX compiler identification is GNU 15.2.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/aarch64-linux-gnu-gcc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/aarch64-linux-gnu-g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found Basix at /usr/lib/aarch64-linux-gnu/cmake/basix -- Found MPI_C: /usr/lib/aarch64-linux-gnu/openmpi/lib/libmpi.so (found version "3.1") -- Found MPI_CXX: /usr/lib/aarch64-linux-gnu/openmpi/lib/libmpi.so (found version "3.1") -- Found MPI: TRUE (found version "3.1") -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success -- Found Threads: TRUE -- Found Boost 1.83.0 at /usr/lib/aarch64-linux-gnu/cmake/Boost-1.83.0 -- Requested configuration: REQUIRED COMPONENTS timer -- Found boost_headers 1.83.0 at /usr/lib/aarch64-linux-gnu/cmake/boost_headers-1.83.0 -- Found boost_timer 1.83.0 at /usr/lib/aarch64-linux-gnu/cmake/boost_timer-1.83.0 -- [x] libboost_timer.so.1.83.0 -- [ ] libboost_timer.a -- Adding boost_timer dependencies: headers -- Checking for Basix hints with /usr/bin/python3.13 -- Adding /usr/lib/python3/dist-packages/basix to Basix search hints -- HDF5: Using hdf5 compiler wrapper to determine C configuration -- Found HDF5: /usr/lib/aarch64-linux-gnu/hdf5/openmpi/libhdf5.so;/usr/lib/aarch64-linux-gnu/libcrypto.so;/usr/lib/aarch64-linux-gnu/libcurl.so;/usr/lib/aarch64-linux-gnu/libsz.so;/usr/lib/aarch64-linux-gnu/libz.so;/usr/lib/aarch64-linux-gnu/libdl.a;/usr/lib/aarch64-linux-gnu/libm.so (found version "1.14.5") found components: C -- HDF5_DIR: HDF5_DIR-NOTFOUND -- HDF5_DEFINITIONS: -- HDF5_INCLUDE_DIRS: /usr/include/hdf5/openmpi -- HDF5_LIBRARIES: /usr/lib/aarch64-linux-gnu/hdf5/openmpi/libhdf5.so;/usr/lib/aarch64-linux-gnu/libcrypto.so;/usr/lib/aarch64-linux-gnu/libcurl.so;/usr/lib/aarch64-linux-gnu/libsz.so;/usr/lib/aarch64-linux-gnu/libz.so;/usr/lib/aarch64-linux-gnu/libdl.a;/usr/lib/aarch64-linux-gnu/libm.so -- HDF5_HL_LIBRARIES: -- HDF5_C_DEFINITIONS: -- HDF5_C_INCLUDE_DIR: -- HDF5_C_INCLUDE_DIRS: /usr/include/hdf5/openmpi -- HDF5_C_LIBRARY: -- HDF5_C_LIBRARIES: /usr/lib/aarch64-linux-gnu/hdf5/openmpi/libhdf5.so;/usr/lib/aarch64-linux-gnu/libcrypto.so;/usr/lib/aarch64-linux-gnu/libcurl.so;/usr/lib/aarch64-linux-gnu/libsz.so;/usr/lib/aarch64-linux-gnu/libz.so;/usr/lib/aarch64-linux-gnu/libdl.a;/usr/lib/aarch64-linux-gnu/libm.so -- HDF5_C_HL_LIBRARY: -- HDF5_C_HL_LIBRARIES: -- Defined targets (if any): -- ... hdf5::hdf5 -- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.1") -- Checking for one of the modules 'PETSc;petsc' -- Looking for PETSC_USE_COMPLEX -- Looking for PETSC_USE_COMPLEX - not found -- Checking for one of the modules 'SLEPc;slepc' -- Found ADIOS2: /usr/lib/aarch64-linux-gnu/cmake/adios2/mpi/adios2-config.cmake (found suitable version "2.10.2", minimum required is "2.8.1") found components: CXX -- Found DOLFINx at /usr/lib/aarch64-linux-gnu/cmake/dolfinx -- Found Python: /usr/bin/python3.13 (found version "3.13.7") found components: Interpreter Development.Module -- Configuring done (6.5s) -- Generating done (0.0s) -- Build files have been written to: /tmp/tmplvp81ojy/build *** Building project with Unix Makefiles... gmake[1]: Entering directory '/tmp/tmplvp81ojy/build' [ 7%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/nb_internals.cpp.o [ 14%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/nb_func.cpp.o [ 21%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/nb_type.cpp.o [ 28%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/nb_enum.cpp.o [ 35%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/nb_ndarray.cpp.o [ 42%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/nb_static_property.cpp.o [ 50%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/nb_ft.cpp.o [ 57%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/common.cpp.o [ 64%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/error.cpp.o [ 71%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/trampoline.cpp.o [ 78%] Building CXX object CMakeFiles/nanobind-static.dir/usr/share/nanobind/src/implicit.cpp.o [ 85%] Linking CXX static library libnanobind-static.a [ 85%] Built target nanobind-static [ 92%] Building CXX object CMakeFiles/_scifem.dir/src/scifem.cpp.o [100%] Linking CXX shared module _scifem.cpython-313-aarch64-linux-gnu.so /usr/lib/aarch64-linux-gnu/libdolfinx_real.so.0.9.0: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/libpugixml.so.1.14: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/libbasix.so.0.9.0: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/libboost_timer.so.1.83.0: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/libspdlog.so.1.15.3: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/libfmt.so.10.1.0: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/hdf5/openmpi/libhdf5.so: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/libadios2_mpi_cxx11_mpi.so.2.10.2: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/libadios2_mpi_cxx11.so.2.10.2: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/aarch64-linux-gnu/openmpi/lib/libmpi.so: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/slepcdir/slepc3.22/aarch64-linux-gnu-real/lib/libslepc_real.so: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/petscdir/petsc3.22/aarch64-linux-gnu-real/lib/libpetsc_real.so: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /usr/lib/gcc/aarch64-linux-gnu/15/libstdc++.so: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /lib/aarch64-linux-gnu/libm.so.6: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /lib/aarch64-linux-gnu/libmvec.so.1: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /lib/aarch64-linux-gnu/libc.so.6: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. /lib/ld-linux-aarch64.so.1: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking. [100%] Built target _scifem gmake[1]: Leaving directory '/tmp/tmplvp81ojy/build' *** Installing project into wheel... -- Install configuration: "Release" -- Installing: /tmp/tmplvp81ojy/wheel/platlib/scifem/_scifem.cpython-313-aarch64-linux-gnu.so -- Set non-toolchain portion of runtime path of "/tmp/tmplvp81ojy/wheel/platlib/scifem/_scifem.cpython-313-aarch64-linux-gnu.so" to "" *** Making wheel... *** Created scifem-0.6.0-cp313-cp313-linux_aarch64.whl Successfully built scifem-0.6.0-cp313-cp313-linux_aarch64.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module dh_auto_test -O--buildsystem=pybuild I: pybuild base:311: cd /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build; python3.13 -m pytest tests ============================= test session starts ============================== platform linux -- Python 3.13.7, pytest-8.3.5, pluggy-1.6.0 rootdir: /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build configfile: pyproject.toml plugins: typeguard-4.4.4 collected 1473 items tests/test_assembly.py .......................xxxxssssss [ 2%] tests/test_blocked_newton_solver.py .... [ 2%] tests/test_eval.py ........ [ 3%] tests/test_mesh.py ............FFFFFFxFFFFFFFFxFFFFFF............FFFFFFF [ 6%] F [ 6%] tests/test_point_source.py .. [ 6%] tests/test_read_mri_data.py ............................................ [ 9%] ........................................................................ [ 14%] ........................................................................ [ 19%] ........................................................................ [ 24%] ........................................................................ [ 29%] ........................................................................ [ 34%] ........................................................................ [ 39%] ........................................................................ [ 44%] ........................................................................ [ 48%] ........................................................................ [ 53%] ........................................................................ [ 58%] ........................................................................ [ 63%] ........................................................................ [ 68%] ........................................................................ [ 73%] ........................................................................ [ 78%] ........................................................................ [ 83%] ............................ [ 85%] tests/test_real_functionspace.py FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 87%] FFFFFFFFFFFFFFF [ 88%] tests/test_vertex_to_dofmap.py FFFFFFFFF [ 89%] tests/test_xdmf.py ..................................................... [ 92%] ........................................................................ [ 97%] ................................ [100%] =================================== FAILURES =================================== ___________________________ test_submesh_meshtags[0] ___________________________ edim = 0 @pytest.mark.parametrize("edim", [0, 1, 2, 3]) def test_submesh_meshtags(edim): mesh = dolfinx.mesh.create_unit_cube( MPI.COMM_WORLD, 3, 4, 7, cell_type=dolfinx.cpp.mesh.CellType.tetrahedron, ghost_mode=dolfinx.cpp.mesh.GhostMode.shared_facet, ) mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Put every second owned cell in submesh num_entities_local = emap.size_local subset_entities = np.arange(0, num_entities_local, 2, dtype=np.int32) # Include ghosts entities subset_cells = scifem.mesh.reverse_mark_entities(emap, subset_entities) submesh, entity_to_parent, vertex_to_parent, _ = dolfinx.mesh.create_submesh( mesh, edim, subset_cells ) # Create meshtags on the parent mesh for i in range(edim + 1): mesh.topology.create_entities(i) parent_e_map = mesh.topology.index_map(i) num_parent_entities = parent_e_map.size_local + parent_e_map.num_ghosts values = parent_e_map.local_range[0] + np.arange(num_parent_entities, dtype=np.int32) entity_communicator = dolfinx.la.vector(parent_e_map, 1) entity_communicator.array[:] = values entity_communicator.scatter_forward() parent_tag = dolfinx.mesh.meshtags( mesh, i, np.arange(num_parent_entities, dtype=np.int32), entity_communicator.array.astype(np.int32), ) > sub_tag, sub_entity_to_parent = scifem.mesh.transfer_meshtags_to_submesh( parent_tag, submesh, vertex_to_parent, entity_to_parent ) tests/test_mesh.py:151: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40,..., 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158], dtype=int32) cell_to_parent = array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40,..., 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.766] [info] Extract basic topology: 2016->2016 [2026-10-20 08:15:19.766] [info] Build local dual graph [2026-10-20 08:15:19.766] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.766] [info] GPS pseudo-diameter:(31) 490-12 [2026-10-20 08:15:19.766] [info] Create topology (single cell type) [2026-10-20 08:15:19.766] [info] Create topology (generalised) [2026-10-20 08:15:19.766] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.766] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.766] [info] Compute ghost indices [2026-10-20 08:15:19.766] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.766] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.766] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.766] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.766] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.766] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.766] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.766] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.766] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.766] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.766] [info] Checking required entities per dimension [2026-10-20 08:15:19.766] [info] Cell type: 0 dofmap: 504x4 [2026-10-20 08:15:19.766] [info] Global index computation [2026-10-20 08:15:19.766] [info] Got 1 index_maps [2026-10-20 08:15:19.767] [info] Get global indices [2026-10-20 08:15:19.768] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.769] [info] Requesting connectivity (0, 0) - (3, 0) [2026-10-20 08:15:19.769] [info] Computing mesh connectivity 0-3 from transpose. [2026-10-20 08:15:19.770] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.770] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.770] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.770] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.770] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:19.770] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.770] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.770] [info] Compute face permutations [2026-10-20 08:15:19.770] [info] Computing permutations for face type 0 [2026-10-20 08:15:19.771] [info] Compute edge permutations [2026-10-20 08:15:19.771] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.771] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.771] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.771] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.771] [info] Requesting connectivity (0, 0) - (0, 0) ___________________________ test_submesh_meshtags[1] ___________________________ edim = 1 @pytest.mark.parametrize("edim", [0, 1, 2, 3]) def test_submesh_meshtags(edim): mesh = dolfinx.mesh.create_unit_cube( MPI.COMM_WORLD, 3, 4, 7, cell_type=dolfinx.cpp.mesh.CellType.tetrahedron, ghost_mode=dolfinx.cpp.mesh.GhostMode.shared_facet, ) mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Put every second owned cell in submesh num_entities_local = emap.size_local subset_entities = np.arange(0, num_entities_local, 2, dtype=np.int32) # Include ghosts entities subset_cells = scifem.mesh.reverse_mark_entities(emap, subset_entities) submesh, entity_to_parent, vertex_to_parent, _ = dolfinx.mesh.create_submesh( mesh, edim, subset_cells ) # Create meshtags on the parent mesh for i in range(edim + 1): mesh.topology.create_entities(i) parent_e_map = mesh.topology.index_map(i) num_parent_entities = parent_e_map.size_local + parent_e_map.num_ghosts values = parent_e_map.local_range[0] + np.arange(num_parent_entities, dtype=np.int32) entity_communicator = dolfinx.la.vector(parent_e_map, 1) entity_communicator.array[:] = values entity_communicator.scatter_forward() parent_tag = dolfinx.mesh.meshtags( mesh, i, np.arange(num_parent_entities, dtype=np.int32), entity_communicator.array.astype(np.int32), ) > sub_tag, sub_entity_to_parent = scifem.mesh.transfer_meshtags_to_submesh( parent_tag, submesh, vertex_to_parent, entity_to_parent ) tests/test_mesh.py:151: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,..., 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159], dtype=int32) cell_to_parent = array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40,..., 750, 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.786] [info] Extract basic topology: 2016->2016 [2026-10-20 08:15:19.786] [info] Build local dual graph [2026-10-20 08:15:19.786] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.786] [info] GPS pseudo-diameter:(31) 490-12 [2026-10-20 08:15:19.786] [info] Create topology (single cell type) [2026-10-20 08:15:19.786] [info] Create topology (generalised) [2026-10-20 08:15:19.786] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.786] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.787] [info] Compute ghost indices [2026-10-20 08:15:19.787] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.787] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.787] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.787] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.787] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.787] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.787] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.787] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.787] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.787] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.787] [info] Checking required entities per dimension [2026-10-20 08:15:19.787] [info] Cell type: 0 dofmap: 504x4 [2026-10-20 08:15:19.787] [info] Global index computation [2026-10-20 08:15:19.787] [info] Got 1 index_maps [2026-10-20 08:15:19.787] [info] Get global indices [2026-10-20 08:15:19.787] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.787] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.787] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.788] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.788] [info] Requesting connectivity (1, 0) - (3, 0) [2026-10-20 08:15:19.788] [info] Computing mesh connectivity 1-3 from transpose. [2026-10-20 08:15:19.788] [info] Requesting connectivity (3, 0) - (1, 0) [2026-10-20 08:15:19.788] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:19.788] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.788] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.788] [info] Compute face permutations [2026-10-20 08:15:19.788] [info] Computing permutations for face type 0 [2026-10-20 08:15:19.788] [info] Compute edge permutations [2026-10-20 08:15:19.789] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.789] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.789] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.789] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.789] [info] Requesting connectivity (0, 0) - (1, 0) [2026-10-20 08:15:19.789] [info] Computing mesh connectivity 0-1 from transpose. ___________________________ test_submesh_meshtags[2] ___________________________ edim = 2 @pytest.mark.parametrize("edim", [0, 1, 2, 3]) def test_submesh_meshtags(edim): mesh = dolfinx.mesh.create_unit_cube( MPI.COMM_WORLD, 3, 4, 7, cell_type=dolfinx.cpp.mesh.CellType.tetrahedron, ghost_mode=dolfinx.cpp.mesh.GhostMode.shared_facet, ) mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Put every second owned cell in submesh num_entities_local = emap.size_local subset_entities = np.arange(0, num_entities_local, 2, dtype=np.int32) # Include ghosts entities subset_cells = scifem.mesh.reverse_mark_entities(emap, subset_entities) submesh, entity_to_parent, vertex_to_parent, _ = dolfinx.mesh.create_submesh( mesh, edim, subset_cells ) # Create meshtags on the parent mesh for i in range(edim + 1): mesh.topology.create_entities(i) parent_e_map = mesh.topology.index_map(i) num_parent_entities = parent_e_map.size_local + parent_e_map.num_ghosts values = parent_e_map.local_range[0] + np.arange(num_parent_entities, dtype=np.int32) entity_communicator = dolfinx.la.vector(parent_e_map, 1) entity_communicator.array[:] = values entity_communicator.scatter_forward() parent_tag = dolfinx.mesh.meshtags( mesh, i, np.arange(num_parent_entities, dtype=np.int32), entity_communicator.array.astype(np.int32), ) > sub_tag, sub_entity_to_parent = scifem.mesh.transfer_meshtags_to_submesh( parent_tag, submesh, vertex_to_parent, entity_to_parent ) tests/test_mesh.py:151: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,..., 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159], dtype=int32) cell_to_parent = array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, ..., 1100, 1102, 1104, 1106, 1108, 1110, 1112, 1114, 1116, 1118, 1120, 1122, 1124, 1126, 1128], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.803] [info] Extract basic topology: 2016->2016 [2026-10-20 08:15:19.803] [info] Build local dual graph [2026-10-20 08:15:19.803] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.804] [info] GPS pseudo-diameter:(31) 490-12 [2026-10-20 08:15:19.804] [info] Create topology (single cell type) [2026-10-20 08:15:19.804] [info] Create topology (generalised) [2026-10-20 08:15:19.804] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.804] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.804] [info] Compute ghost indices [2026-10-20 08:15:19.804] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.804] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.804] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.804] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.804] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.804] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.804] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.804] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.804] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.804] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.804] [info] Checking required entities per dimension [2026-10-20 08:15:19.804] [info] Cell type: 0 dofmap: 504x4 [2026-10-20 08:15:19.804] [info] Global index computation [2026-10-20 08:15:19.804] [info] Got 1 index_maps [2026-10-20 08:15:19.804] [info] Get global indices [2026-10-20 08:15:19.805] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:19.805] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.805] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.805] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.805] [info] Requesting connectivity (2, 0) - (3, 0) [2026-10-20 08:15:19.805] [info] Computing mesh connectivity 2-3 from transpose. [2026-10-20 08:15:19.805] [info] Requesting connectivity (3, 0) - (2, 0) [2026-10-20 08:15:19.805] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.806] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.806] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.806] [info] Compute face permutations [2026-10-20 08:15:19.806] [info] Computing permutations for face type 0 [2026-10-20 08:15:19.806] [info] Compute edge permutations [2026-10-20 08:15:19.807] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.807] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.807] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.807] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.807] [info] Requesting connectivity (0, 0) - (2, 0) [2026-10-20 08:15:19.807] [info] Computing mesh connectivity 0-2 from transpose. ___________________________ test_submesh_meshtags[3] ___________________________ edim = 3 @pytest.mark.parametrize("edim", [0, 1, 2, 3]) def test_submesh_meshtags(edim): mesh = dolfinx.mesh.create_unit_cube( MPI.COMM_WORLD, 3, 4, 7, cell_type=dolfinx.cpp.mesh.CellType.tetrahedron, ghost_mode=dolfinx.cpp.mesh.GhostMode.shared_facet, ) mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Put every second owned cell in submesh num_entities_local = emap.size_local subset_entities = np.arange(0, num_entities_local, 2, dtype=np.int32) # Include ghosts entities subset_cells = scifem.mesh.reverse_mark_entities(emap, subset_entities) submesh, entity_to_parent, vertex_to_parent, _ = dolfinx.mesh.create_submesh( mesh, edim, subset_cells ) # Create meshtags on the parent mesh for i in range(edim + 1): mesh.topology.create_entities(i) parent_e_map = mesh.topology.index_map(i) num_parent_entities = parent_e_map.size_local + parent_e_map.num_ghosts values = parent_e_map.local_range[0] + np.arange(num_parent_entities, dtype=np.int32) entity_communicator = dolfinx.la.vector(parent_e_map, 1) entity_communicator.array[:] = values entity_communicator.scatter_forward() parent_tag = dolfinx.mesh.meshtags( mesh, i, np.arange(num_parent_entities, dtype=np.int32), entity_communicator.array.astype(np.int32), ) > sub_tag, sub_entity_to_parent = scifem.mesh.transfer_meshtags_to_submesh( parent_tag, submesh, vertex_to_parent, entity_to_parent ) tests/test_mesh.py:151: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...1, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159], dtype=int32) cell_to_parent = array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40,..., 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.821] [info] Extract basic topology: 2016->2016 [2026-10-20 08:15:19.821] [info] Build local dual graph [2026-10-20 08:15:19.821] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.821] [info] GPS pseudo-diameter:(31) 490-12 [2026-10-20 08:15:19.821] [info] Create topology (single cell type) [2026-10-20 08:15:19.821] [info] Create topology (generalised) [2026-10-20 08:15:19.821] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.821] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.822] [info] Compute ghost indices [2026-10-20 08:15:19.822] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.822] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.822] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.822] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.822] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.822] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.822] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.822] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.822] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.822] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.822] [info] Checking required entities per dimension [2026-10-20 08:15:19.822] [info] Cell type: 0 dofmap: 504x4 [2026-10-20 08:15:19.822] [info] Global index computation [2026-10-20 08:15:19.822] [info] Got 1 index_maps [2026-10-20 08:15:19.822] [info] Get global indices [2026-10-20 08:15:19.822] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.822] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.822] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.822] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.823] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.823] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.823] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:19.823] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.823] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.823] [info] Compute face permutations [2026-10-20 08:15:19.823] [info] Computing permutations for face type 0 [2026-10-20 08:15:19.823] [info] Compute edge permutations [2026-10-20 08:15:19.824] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.824] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.824] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.824] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.824] [info] Requesting connectivity (0, 0) - (3, 0) [2026-10-20 08:15:19.824] [info] Computing mesh connectivity 0-3 from transpose. ___________________ test_submesh_creator[GhostMode.none-1-0] ___________________ codim = 0, tdim = 1, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.838] [info] Extract basic topology: 54->54 [2026-10-20 08:15:19.838] [info] Build local dual graph [2026-10-20 08:15:19.838] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.838] [info] GPS pseudo-diameter:(27) 26-0 [2026-10-20 08:15:19.838] [info] Create topology (single cell type) [2026-10-20 08:15:19.838] [info] Create topology (generalised) [2026-10-20 08:15:19.838] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.838] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.838] [info] Compute ghost indices [2026-10-20 08:15:19.838] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.838] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.838] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.838] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.838] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.838] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.838] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.838] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.838] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.838] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.838] [info] Checking required entities per dimension [2026-10-20 08:15:19.838] [info] Cell type: 0 dofmap: 27x2 [2026-10-20 08:15:19.838] [info] Global index computation [2026-10-20 08:15:19.838] [info] Got 1 index_maps [2026-10-20 08:15:19.838] [info] Get global indices [2026-10-20 08:15:19.839] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.839] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.839] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.839] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.839] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.840] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.840] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.840] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.841] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.841] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.841] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.841] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.841] [info] Requesting connectivity (1, 0) - (1, 0) ___________________ test_submesh_creator[GhostMode.none-1-1] ___________________ codim = 1, tdim = 1, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.855] [info] Extract basic topology: 54->54 [2026-10-20 08:15:19.855] [info] Build local dual graph [2026-10-20 08:15:19.855] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.855] [info] GPS pseudo-diameter:(27) 26-0 [2026-10-20 08:15:19.855] [info] Create topology (single cell type) [2026-10-20 08:15:19.855] [info] Create topology (generalised) [2026-10-20 08:15:19.855] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.855] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.855] [info] Compute ghost indices [2026-10-20 08:15:19.855] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.855] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.855] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.855] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.855] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.855] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.855] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.855] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.855] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.855] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.855] [info] Checking required entities per dimension [2026-10-20 08:15:19.855] [info] Cell type: 0 dofmap: 27x2 [2026-10-20 08:15:19.855] [info] Global index computation [2026-10-20 08:15:19.855] [info] Got 1 index_maps [2026-10-20 08:15:19.855] [info] Get global indices [2026-10-20 08:15:19.856] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (0, 0) - (1, 0) [2026-10-20 08:15:19.856] [info] Computing mesh connectivity 0-1 from transpose. [2026-10-20 08:15:19.856] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (0, 0) - (1, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.856] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.857] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.857] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.857] [info] Requesting connectivity (0, 0) - (0, 0) ___________________ test_submesh_creator[GhostMode.none-2-0] ___________________ codim = 0, tdim = 2, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) cell_to_parent = array([ 30, 36, 42, 43, 49, 50, 56, 57, 58, 64, 65, 66, 72, 73, 74, 75, 81, 82, 83, 84, 90,..., 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.882] [info] Extract basic topology: 1080->1080 [2026-10-20 08:15:19.882] [info] Build local dual graph [2026-10-20 08:15:19.882] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.882] [info] GPS pseudo-diameter:(54) 341-18 [2026-10-20 08:15:19.882] [info] Create topology (single cell type) [2026-10-20 08:15:19.882] [info] Create topology (generalised) [2026-10-20 08:15:19.882] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.882] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.882] [info] Compute ghost indices [2026-10-20 08:15:19.882] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.882] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.882] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.882] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.882] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.882] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.882] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.882] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.882] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.882] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.882] [info] Checking required entities per dimension [2026-10-20 08:15:19.882] [info] Cell type: 0 dofmap: 360x3 [2026-10-20 08:15:19.882] [info] Global index computation [2026-10-20 08:15:19.882] [info] Got 1 index_maps [2026-10-20 08:15:19.882] [info] Get global indices [2026-10-20 08:15:19.882] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.883] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.883] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.883] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.883] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.883] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.883] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.883] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.883] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.883] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.883] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.883] [info] Compute edge permutations [2026-10-20 08:15:19.884] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.884] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.884] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.884] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.884] [info] Requesting connectivity (2, 0) - (2, 0) ___________________ test_submesh_creator[GhostMode.none-2-1] ___________________ codim = 1, tdim = 2, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) cell_to_parent = array([ 53, 54, 58, 59, 60, 73, 74, 77, 78, 79, 80, 82, 83, 96, 97, 100, 101, 102, 103, 104, 105,...9, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.899] [info] Extract basic topology: 1080->1080 [2026-10-20 08:15:19.899] [info] Build local dual graph [2026-10-20 08:15:19.899] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.899] [info] GPS pseudo-diameter:(54) 341-18 [2026-10-20 08:15:19.899] [info] Create topology (single cell type) [2026-10-20 08:15:19.899] [info] Create topology (generalised) [2026-10-20 08:15:19.899] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.900] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.900] [info] Compute ghost indices [2026-10-20 08:15:19.900] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.900] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.900] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.900] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.900] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.900] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.900] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.900] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.900] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.900] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.900] [info] Checking required entities per dimension [2026-10-20 08:15:19.900] [info] Cell type: 0 dofmap: 360x3 [2026-10-20 08:15:19.900] [info] Global index computation [2026-10-20 08:15:19.900] [info] Got 1 index_maps [2026-10-20 08:15:19.900] [info] Get global indices [2026-10-20 08:15:19.900] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.900] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.900] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.900] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.900] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.900] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.901] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.901] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.901] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.901] [info] Requesting connectivity (1, 0) - (2, 0) [2026-10-20 08:15:19.901] [info] Computing mesh connectivity 1-2 from transpose. [2026-10-20 08:15:19.901] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.901] [info] Requesting connectivity (1, 0) - (2, 0) [2026-10-20 08:15:19.901] [info] Requesting connectivity (2, 0) - (1, 0) [2026-10-20 08:15:19.901] [info] Compute edge permutations [2026-10-20 08:15:19.901] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.902] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.902] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.902] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.902] [info] Requesting connectivity (1, 0) - (1, 0) ___________________ test_submesh_creator[GhostMode.none-2-2] ___________________ codim = 2, tdim = 2, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) cell_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.917] [info] Extract basic topology: 1080->1080 [2026-10-20 08:15:19.917] [info] Build local dual graph [2026-10-20 08:15:19.917] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.917] [info] GPS pseudo-diameter:(54) 341-18 [2026-10-20 08:15:19.917] [info] Create topology (single cell type) [2026-10-20 08:15:19.917] [info] Create topology (generalised) [2026-10-20 08:15:19.918] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.918] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.918] [info] Compute ghost indices [2026-10-20 08:15:19.918] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.918] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.918] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.918] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.918] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.918] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.918] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.918] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.918] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.918] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.918] [info] Checking required entities per dimension [2026-10-20 08:15:19.918] [info] Cell type: 0 dofmap: 360x3 [2026-10-20 08:15:19.918] [info] Global index computation [2026-10-20 08:15:19.918] [info] Got 1 index_maps [2026-10-20 08:15:19.918] [info] Get global indices [2026-10-20 08:15:19.918] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.918] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.918] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.918] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.918] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.918] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.918] [info] Requesting connectivity (0, 0) - (2, 0) [2026-10-20 08:15:19.918] [info] Computing mesh connectivity 0-2 from transpose. [2026-10-20 08:15:19.919] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.919] [info] Requesting connectivity (0, 0) - (2, 0) [2026-10-20 08:15:19.919] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.919] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.919] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.919] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.919] [info] Compute edge permutations [2026-10-20 08:15:19.919] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.919] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.919] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.919] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:19.919] [info] Requesting connectivity (0, 0) - (0, 0) ___________________ test_submesh_creator[GhostMode.none-3-0] ___________________ codim = 0, tdim = 3, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 62, 71, 83, 84, 86, 90, 95, 96, 98, 101, 102, 105, 108, 109, 110, 111, 115, 117, 118, 119, 121,...3, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431], dtype=int32) cell_to_parent = array([ 226, 260, 267, ..., 1677, 1678, 1679], shape=(1080,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.935] [info] Extract basic topology: 6720->6720 [2026-10-20 08:15:19.935] [info] Build local dual graph [2026-10-20 08:15:19.935] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.936] [info] GPS pseudo-diameter:(47) 1642-36 [2026-10-20 08:15:19.936] [info] Create topology (single cell type) [2026-10-20 08:15:19.936] [info] Create topology (generalised) [2026-10-20 08:15:19.936] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.936] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.936] [info] Compute ghost indices [2026-10-20 08:15:19.937] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.937] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.937] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.937] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.937] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.937] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.937] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.937] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.937] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.937] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.937] [info] Checking required entities per dimension [2026-10-20 08:15:19.937] [info] Cell type: 0 dofmap: 1680x4 [2026-10-20 08:15:19.937] [info] Global index computation [2026-10-20 08:15:19.937] [info] Got 1 index_maps [2026-10-20 08:15:19.937] [info] Get global indices [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.938] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.938] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.940] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.940] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.940] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:19.941] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.941] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.941] [info] Compute face permutations [2026-10-20 08:15:19.941] [info] Computing permutations for face type 0 [2026-10-20 08:15:19.941] [info] Compute edge permutations [2026-10-20 08:15:19.943] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.943] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.943] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:19.943] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.943] [info] Requesting connectivity (3, 0) - (3, 0) ___________________ test_submesh_creator[GhostMode.none-3-1] ___________________ codim = 1, tdim = 3, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 62, 71, 83, 84, 86, 90, 95, 96, 98, 101, 102, 105, 108, 109, 110, 111, 115, 117, 118, 119, 121,...3, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431], dtype=int32) cell_to_parent = array([ 585, 586, 587, ..., 3619, 3620, 3621], shape=(2382,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.958] [info] Extract basic topology: 6720->6720 [2026-10-20 08:15:19.958] [info] Build local dual graph [2026-10-20 08:15:19.958] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.959] [info] GPS pseudo-diameter:(47) 1642-36 [2026-10-20 08:15:19.959] [info] Create topology (single cell type) [2026-10-20 08:15:19.959] [info] Create topology (generalised) [2026-10-20 08:15:19.959] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.959] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.960] [info] Compute ghost indices [2026-10-20 08:15:19.960] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.960] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.960] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.960] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.960] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.960] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.960] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.960] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.960] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.960] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.960] [info] Checking required entities per dimension [2026-10-20 08:15:19.960] [info] Cell type: 0 dofmap: 1680x4 [2026-10-20 08:15:19.960] [info] Global index computation [2026-10-20 08:15:19.960] [info] Got 1 index_maps [2026-10-20 08:15:19.960] [info] Get global indices [2026-10-20 08:15:19.961] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:19.962] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.962] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.962] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.962] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.962] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.962] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.962] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.962] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.962] [info] Requesting connectivity (2, 0) - (3, 0) [2026-10-20 08:15:19.962] [info] Computing mesh connectivity 2-3 from transpose. [2026-10-20 08:15:19.962] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.963] [info] Requesting connectivity (2, 0) - (3, 0) [2026-10-20 08:15:19.963] [info] Requesting connectivity (3, 0) - (2, 0) [2026-10-20 08:15:19.963] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.964] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.964] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.964] [info] Compute face permutations [2026-10-20 08:15:19.964] [info] Computing permutations for face type 0 [2026-10-20 08:15:19.965] [info] Compute edge permutations [2026-10-20 08:15:19.966] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.966] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.966] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:19.966] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:19.966] [info] Requesting connectivity (2, 0) - (2, 0) ___________________ test_submesh_creator[GhostMode.none-3-2] ___________________ codim = 2, tdim = 3, ghost_mode = GhostMode.none @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 62, 71, 83, 84, 86, 90, 95, 96, 98, 101, 102, 105, 108, 109, 110, 111, 115, 117, 118, 119, 121,...3, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431], dtype=int32) cell_to_parent = array([ 368, 369, 370, ..., 2370, 2371, 2372], shape=(1613,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:19.981] [info] Extract basic topology: 6720->6720 [2026-10-20 08:15:19.981] [info] Build local dual graph [2026-10-20 08:15:19.981] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:19.982] [info] GPS pseudo-diameter:(47) 1642-36 [2026-10-20 08:15:19.983] [info] Create topology (single cell type) [2026-10-20 08:15:19.983] [info] Create topology (generalised) [2026-10-20 08:15:19.983] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:19.983] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:19.983] [info] Compute ghost indices [2026-10-20 08:15:19.983] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.983] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.983] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.983] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.983] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.983] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.983] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:19.984] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.984] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.984] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:19.984] [info] Checking required entities per dimension [2026-10-20 08:15:19.984] [info] Cell type: 0 dofmap: 1680x4 [2026-10-20 08:15:19.984] [info] Global index computation [2026-10-20 08:15:19.984] [info] Got 1 index_maps [2026-10-20 08:15:19.984] [info] Get global indices [2026-10-20 08:15:19.984] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:19.985] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.985] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.986] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (1, 0) - (3, 0) [2026-10-20 08:15:19.986] [info] Computing mesh connectivity 1-3 from transpose. [2026-10-20 08:15:19.986] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (1, 0) - (3, 0) [2026-10-20 08:15:19.986] [info] Requesting connectivity (3, 0) - (1, 0) [2026-10-20 08:15:19.986] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:19.987] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:19.987] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:19.988] [info] Compute face permutations [2026-10-20 08:15:19.988] [info] Computing permutations for face type 0 [2026-10-20 08:15:19.988] [info] Compute edge permutations [2026-10-20 08:15:19.989] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.989] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.989] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:19.989] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:19.989] [info] Requesting connectivity (1, 0) - (1, 0) _______________ test_submesh_creator[GhostMode.shared_facet-1-0] _______________ codim = 0, tdim = 1, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.006] [info] Extract basic topology: 54->54 [2026-10-20 08:15:20.006] [info] Build local dual graph [2026-10-20 08:15:20.006] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.006] [info] GPS pseudo-diameter:(27) 26-0 [2026-10-20 08:15:20.006] [info] Create topology (single cell type) [2026-10-20 08:15:20.006] [info] Create topology (generalised) [2026-10-20 08:15:20.006] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.006] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.006] [info] Compute ghost indices [2026-10-20 08:15:20.006] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.006] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.006] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.006] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.006] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.006] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.006] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.006] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.006] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.006] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.006] [info] Checking required entities per dimension [2026-10-20 08:15:20.006] [info] Cell type: 0 dofmap: 27x2 [2026-10-20 08:15:20.006] [info] Global index computation [2026-10-20 08:15:20.006] [info] Got 1 index_maps [2026-10-20 08:15:20.006] [info] Get global indices [2026-10-20 08:15:20.006] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.007] [info] Requesting connectivity (1, 0) - (1, 0) _______________ test_submesh_creator[GhostMode.shared_facet-1-1] _______________ codim = 1, tdim = 1, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.022] [info] Extract basic topology: 54->54 [2026-10-20 08:15:20.022] [info] Build local dual graph [2026-10-20 08:15:20.022] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.022] [info] GPS pseudo-diameter:(27) 26-0 [2026-10-20 08:15:20.022] [info] Create topology (single cell type) [2026-10-20 08:15:20.022] [info] Create topology (generalised) [2026-10-20 08:15:20.022] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.022] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.023] [info] Compute ghost indices [2026-10-20 08:15:20.023] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.023] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.023] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.023] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.023] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.023] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.023] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.023] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.023] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.023] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.023] [info] Checking required entities per dimension [2026-10-20 08:15:20.023] [info] Cell type: 0 dofmap: 27x2 [2026-10-20 08:15:20.023] [info] Global index computation [2026-10-20 08:15:20.023] [info] Got 1 index_maps [2026-10-20 08:15:20.023] [info] Get global indices [2026-10-20 08:15:20.023] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (0, 0) - (1, 0) [2026-10-20 08:15:20.023] [info] Computing mesh connectivity 0-1 from transpose. [2026-10-20 08:15:20.023] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (0, 0) - (1, 0) [2026-10-20 08:15:20.023] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.024] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.024] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.024] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.024] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.024] [info] Requesting connectivity (0, 0) - (0, 0) _______________ test_submesh_creator[GhostMode.shared_facet-2-0] _______________ codim = 0, tdim = 2, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) cell_to_parent = array([ 30, 36, 42, 43, 49, 50, 56, 57, 58, 64, 65, 66, 72, 73, 74, 75, 81, 82, 83, 84, 90,..., 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.047] [info] Extract basic topology: 1080->1080 [2026-10-20 08:15:20.047] [info] Build local dual graph [2026-10-20 08:15:20.047] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.047] [info] GPS pseudo-diameter:(54) 341-18 [2026-10-20 08:15:20.047] [info] Create topology (single cell type) [2026-10-20 08:15:20.047] [info] Create topology (generalised) [2026-10-20 08:15:20.047] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.047] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.047] [info] Compute ghost indices [2026-10-20 08:15:20.047] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.047] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.047] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.047] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.047] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.047] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.047] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.047] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.047] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.047] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.047] [info] Checking required entities per dimension [2026-10-20 08:15:20.047] [info] Cell type: 0 dofmap: 360x3 [2026-10-20 08:15:20.047] [info] Global index computation [2026-10-20 08:15:20.047] [info] Got 1 index_maps [2026-10-20 08:15:20.047] [info] Get global indices [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:20.048] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:20.048] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.048] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.048] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.048] [info] Compute edge permutations [2026-10-20 08:15:20.049] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:20.049] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.049] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:20.049] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.049] [info] Requesting connectivity (2, 0) - (2, 0) _______________ test_submesh_creator[GhostMode.shared_facet-2-1] _______________ codim = 1, tdim = 2, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) cell_to_parent = array([ 53, 54, 58, 59, 60, 73, 74, 77, 78, 79, 80, 82, 83, 96, 97, 100, 101, 102, 103, 104, 105,...9, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.064] [info] Extract basic topology: 1080->1080 [2026-10-20 08:15:20.064] [info] Build local dual graph [2026-10-20 08:15:20.064] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.064] [info] GPS pseudo-diameter:(54) 341-18 [2026-10-20 08:15:20.064] [info] Create topology (single cell type) [2026-10-20 08:15:20.064] [info] Create topology (generalised) [2026-10-20 08:15:20.064] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.064] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.064] [info] Compute ghost indices [2026-10-20 08:15:20.064] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.064] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.065] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.065] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.065] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.065] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.065] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.065] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.065] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.065] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.065] [info] Checking required entities per dimension [2026-10-20 08:15:20.065] [info] Cell type: 0 dofmap: 360x3 [2026-10-20 08:15:20.065] [info] Global index computation [2026-10-20 08:15:20.065] [info] Got 1 index_maps [2026-10-20 08:15:20.065] [info] Get global indices [2026-10-20 08:15:20.065] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.065] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.065] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.065] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.065] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.065] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.065] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.065] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.065] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.065] [info] Requesting connectivity (1, 0) - (2, 0) [2026-10-20 08:15:20.065] [info] Computing mesh connectivity 1-2 from transpose. [2026-10-20 08:15:20.066] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.066] [info] Requesting connectivity (1, 0) - (2, 0) [2026-10-20 08:15:20.066] [info] Requesting connectivity (2, 0) - (1, 0) [2026-10-20 08:15:20.066] [info] Compute edge permutations [2026-10-20 08:15:20.066] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.066] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.066] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.066] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.066] [info] Requesting connectivity (1, 0) - (1, 0) _______________ test_submesh_creator[GhostMode.shared_facet-2-2] _______________ codim = 2, tdim = 2, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) cell_to_parent = array([ 19, 21, 26, 28, 29, 34, 36, 37, 38, 43, 45, 46, 47, 48, 53, 55, 56, 57, 58, 59, 64,...89, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.082] [info] Extract basic topology: 1080->1080 [2026-10-20 08:15:20.082] [info] Build local dual graph [2026-10-20 08:15:20.082] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.082] [info] GPS pseudo-diameter:(54) 341-18 [2026-10-20 08:15:20.082] [info] Create topology (single cell type) [2026-10-20 08:15:20.082] [info] Create topology (generalised) [2026-10-20 08:15:20.082] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.082] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.082] [info] Compute ghost indices [2026-10-20 08:15:20.082] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.082] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.082] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.082] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.082] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.082] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.082] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.082] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.082] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.082] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.082] [info] Checking required entities per dimension [2026-10-20 08:15:20.082] [info] Cell type: 0 dofmap: 360x3 [2026-10-20 08:15:20.082] [info] Global index computation [2026-10-20 08:15:20.082] [info] Got 1 index_maps [2026-10-20 08:15:20.083] [info] Get global indices [2026-10-20 08:15:20.083] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (0, 0) - (2, 0) [2026-10-20 08:15:20.083] [info] Computing mesh connectivity 0-2 from transpose. [2026-10-20 08:15:20.083] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (0, 0) - (2, 0) [2026-10-20 08:15:20.083] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.083] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.083] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.083] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.083] [info] Compute edge permutations [2026-10-20 08:15:20.084] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.084] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.084] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.084] [info] Requesting connectivity (0, 0) - (0, 0) [2026-10-20 08:15:20.084] [info] Requesting connectivity (0, 0) - (0, 0) _______________ test_submesh_creator[GhostMode.shared_facet-3-0] _______________ codim = 0, tdim = 3, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 62, 71, 83, 84, 86, 90, 95, 96, 98, 101, 102, 105, 108, 109, 110, 111, 115, 117, 118, 119, 121,...3, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431], dtype=int32) cell_to_parent = array([ 226, 260, 267, ..., 1677, 1678, 1679], shape=(1080,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.102] [info] Extract basic topology: 6720->6720 [2026-10-20 08:15:20.102] [info] Build local dual graph [2026-10-20 08:15:20.102] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.103] [info] GPS pseudo-diameter:(47) 1642-36 [2026-10-20 08:15:20.103] [info] Create topology (single cell type) [2026-10-20 08:15:20.103] [info] Create topology (generalised) [2026-10-20 08:15:20.103] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.103] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.103] [info] Compute ghost indices [2026-10-20 08:15:20.103] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.103] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.104] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.104] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.104] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.104] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.104] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.104] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.104] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.104] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.104] [info] Checking required entities per dimension [2026-10-20 08:15:20.104] [info] Cell type: 0 dofmap: 1680x4 [2026-10-20 08:15:20.104] [info] Global index computation [2026-10-20 08:15:20.104] [info] Got 1 index_maps [2026-10-20 08:15:20.104] [info] Get global indices [2026-10-20 08:15:20.104] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.104] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.104] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.104] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.105] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.105] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.105] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.105] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.105] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.106] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.106] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.107] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.108] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.108] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.108] [info] Compute face permutations [2026-10-20 08:15:20.108] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.108] [info] Compute edge permutations [2026-10-20 08:15:20.109] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.109] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.109] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.109] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.109] [info] Requesting connectivity (3, 0) - (3, 0) _______________ test_submesh_creator[GhostMode.shared_facet-3-1] _______________ codim = 1, tdim = 3, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 62, 71, 83, 84, 86, 90, 95, 96, 98, 101, 102, 105, 108, 109, 110, 111, 115, 117, 118, 119, 121,...3, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431], dtype=int32) cell_to_parent = array([ 585, 586, 587, ..., 3619, 3620, 3621], shape=(2382,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.125] [info] Extract basic topology: 6720->6720 [2026-10-20 08:15:20.125] [info] Build local dual graph [2026-10-20 08:15:20.125] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.126] [info] GPS pseudo-diameter:(47) 1642-36 [2026-10-20 08:15:20.127] [info] Create topology (single cell type) [2026-10-20 08:15:20.127] [info] Create topology (generalised) [2026-10-20 08:15:20.127] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.127] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.127] [info] Compute ghost indices [2026-10-20 08:15:20.127] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.127] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.128] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.128] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.128] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.128] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.128] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.128] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.128] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.128] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.128] [info] Checking required entities per dimension [2026-10-20 08:15:20.128] [info] Cell type: 0 dofmap: 1680x4 [2026-10-20 08:15:20.128] [info] Global index computation [2026-10-20 08:15:20.128] [info] Got 1 index_maps [2026-10-20 08:15:20.128] [info] Get global indices [2026-10-20 08:15:20.128] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.129] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.129] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.130] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.130] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.130] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.130] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.130] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.130] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.130] [info] Requesting connectivity (2, 0) - (3, 0) [2026-10-20 08:15:20.130] [info] Computing mesh connectivity 2-3 from transpose. [2026-10-20 08:15:20.130] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.131] [info] Requesting connectivity (2, 0) - (3, 0) [2026-10-20 08:15:20.131] [info] Requesting connectivity (3, 0) - (2, 0) [2026-10-20 08:15:20.131] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.132] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.132] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.132] [info] Compute face permutations [2026-10-20 08:15:20.132] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.132] [info] Compute edge permutations [2026-10-20 08:15:20.133] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:20.134] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.134] [info] Requesting connectivity (2, 0) - (2, 0) [2026-10-20 08:15:20.134] [info] Requesting connectivity (2, 0) - (0, 0) [2026-10-20 08:15:20.134] [info] Requesting connectivity (2, 0) - (2, 0) _______________ test_submesh_creator[GhostMode.shared_facet-3-2] _______________ codim = 2, tdim = 3, ghost_mode = GhostMode.shared_facet @pytest.mark.parametrize("codim", [0, 1, 2]) @pytest.mark.parametrize("tdim", [1, 2, 3]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) def test_submesh_creator(codim, tdim, ghost_mode): edim = tdim - codim if edim < 0: pytest.xfail("Codim larger than tdim") if tdim == 1: mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 27, ghost_mode=ghost_mode) elif tdim == 2: mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 18, ghost_mode=ghost_mode) elif tdim == 3: mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 7, 5, 8, ghost_mode=ghost_mode) else: raise ValueError("Invalid tdim") tol = 50 * np.finfo(mesh.geometry.x.dtype).eps def first_marker(x): return x[0] <= 0.5 + tol def second_marker(x): return x[tdim - 1] >= 0.6 - tol first_val = 2 second_val = 3 mesh.topology.create_entities(edim) emap = mesh.topology.index_map(edim) # Only include entities on this process to check if `extract_mesh` correctly accumulates them. entities = np.arange(emap.size_local + emap.num_ghosts, dtype=np.int32) values = np.full_like(entities, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, edim, first_marker)] = first_val values[dolfinx.mesh.locate_entities(mesh, edim, second_marker)] = second_val # Constructor we are testing etag = dolfinx.mesh.meshtags(mesh, edim, entities[: emap.size_local], values[: emap.size_local]) > submesh, cell_map, vertex_map, node_map, sub_etag = scifem.mesh.extract_submesh( mesh, etag, (first_val, second_val) ) tests/test_mesh.py:202: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 62, 71, 83, 84, 86, 90, 95, 96, 98, 101, 102, 105, 108, 109, 110, 111, 115, 117, 118, 119, 121,...3, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431], dtype=int32) cell_to_parent = array([ 368, 369, 370, ..., 2370, 2371, 2372], shape=(1613,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.149] [info] Extract basic topology: 6720->6720 [2026-10-20 08:15:20.149] [info] Build local dual graph [2026-10-20 08:15:20.149] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.150] [info] GPS pseudo-diameter:(47) 1642-36 [2026-10-20 08:15:20.150] [info] Create topology (single cell type) [2026-10-20 08:15:20.150] [info] Create topology (generalised) [2026-10-20 08:15:20.150] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.151] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.151] [info] Compute ghost indices [2026-10-20 08:15:20.151] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.151] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.151] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.151] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.151] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.151] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.151] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.151] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.151] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.151] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.151] [info] Checking required entities per dimension [2026-10-20 08:15:20.151] [info] Cell type: 0 dofmap: 1680x4 [2026-10-20 08:15:20.152] [info] Global index computation [2026-10-20 08:15:20.152] [info] Got 1 index_maps [2026-10-20 08:15:20.152] [info] Get global indices [2026-10-20 08:15:20.152] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.153] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.153] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.153] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (1, 0) - (3, 0) [2026-10-20 08:15:20.154] [info] Computing mesh connectivity 1-3 from transpose. [2026-10-20 08:15:20.154] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (1, 0) - (3, 0) [2026-10-20 08:15:20.154] [info] Requesting connectivity (3, 0) - (1, 0) [2026-10-20 08:15:20.154] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.155] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.155] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.156] [info] Compute face permutations [2026-10-20 08:15:20.156] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.156] [info] Compute edge permutations [2026-10-20 08:15:20.157] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.157] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.157] [info] Requesting connectivity (1, 0) - (1, 0) [2026-10-20 08:15:20.157] [info] Requesting connectivity (1, 0) - (0, 0) [2026-10-20 08:15:20.157] [info] Requesting connectivity (1, 0) - (1, 0) _ test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.none-float64] _ dtype = , ghost_mode = GhostMode.none cell_type = CellType.tetrahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, ..., 2097, 2098, 2099], shape=(2088,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.231] [info] Extract basic topology: 8400->8400 [2026-10-20 08:15:20.231] [info] Build local dual graph [2026-10-20 08:15:20.231] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.232] [info] GPS pseudo-diameter:(53) 2044-54 [2026-10-20 08:15:20.232] [info] Create topology (single cell type) [2026-10-20 08:15:20.232] [info] Create topology (generalised) [2026-10-20 08:15:20.232] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.232] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.233] [info] Compute ghost indices [2026-10-20 08:15:20.233] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.233] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.233] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.233] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.233] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.233] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.233] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.233] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.233] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.233] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.233] [info] Checking required entities per dimension [2026-10-20 08:15:20.233] [info] Cell type: 0 dofmap: 2100x4 [2026-10-20 08:15:20.234] [info] Global index computation [2026-10-20 08:15:20.234] [info] Got 1 index_maps [2026-10-20 08:15:20.234] [info] Get global indices [2026-10-20 08:15:20.234] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.234] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.234] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.234] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.235] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.235] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.235] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.236] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.236] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.237] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.238] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.238] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.238] [info] Compute face permutations [2026-10-20 08:15:20.238] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.238] [info] Compute edge permutations [2026-10-20 08:15:20.240] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.240] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.240] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.240] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.240] [info] Requesting connectivity (3, 0) - (3, 0) _ test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.none-float32] _ dtype = , ghost_mode = GhostMode.none cell_type = CellType.tetrahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, ..., 2097, 2098, 2099], shape=(2088,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.258] [info] Extract basic topology: 8400->8400 [2026-10-20 08:15:20.258] [info] Build local dual graph [2026-10-20 08:15:20.258] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.259] [info] GPS pseudo-diameter:(53) 2044-54 [2026-10-20 08:15:20.259] [info] Create topology (single cell type) [2026-10-20 08:15:20.259] [info] Create topology (generalised) [2026-10-20 08:15:20.259] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.259] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.260] [info] Compute ghost indices [2026-10-20 08:15:20.260] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.260] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.260] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.260] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.260] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.260] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.260] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.260] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.260] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.260] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.260] [info] Checking required entities per dimension [2026-10-20 08:15:20.260] [info] Cell type: 0 dofmap: 2100x4 [2026-10-20 08:15:20.260] [info] Global index computation [2026-10-20 08:15:20.260] [info] Got 1 index_maps [2026-10-20 08:15:20.260] [info] Get global indices [2026-10-20 08:15:20.261] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.261] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.261] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.261] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.262] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.262] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.262] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.263] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.263] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.263] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.265] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.265] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.265] [info] Compute face permutations [2026-10-20 08:15:20.265] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.265] [info] Compute edge permutations [2026-10-20 08:15:20.267] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.267] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.267] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.267] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.267] [info] Requesting connectivity (3, 0) - (3, 0) _ test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.shared_facet-float64] _ dtype = , ghost_mode = GhostMode.shared_facet cell_type = CellType.tetrahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, ..., 2097, 2098, 2099], shape=(2088,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.284] [info] Extract basic topology: 8400->8400 [2026-10-20 08:15:20.284] [info] Build local dual graph [2026-10-20 08:15:20.284] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.285] [info] GPS pseudo-diameter:(53) 2044-54 [2026-10-20 08:15:20.286] [info] Create topology (single cell type) [2026-10-20 08:15:20.286] [info] Create topology (generalised) [2026-10-20 08:15:20.286] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.286] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.286] [info] Compute ghost indices [2026-10-20 08:15:20.286] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.286] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.287] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.287] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.287] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.287] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.287] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.287] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.287] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.287] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.287] [info] Checking required entities per dimension [2026-10-20 08:15:20.287] [info] Cell type: 0 dofmap: 2100x4 [2026-10-20 08:15:20.287] [info] Global index computation [2026-10-20 08:15:20.287] [info] Got 1 index_maps [2026-10-20 08:15:20.287] [info] Get global indices [2026-10-20 08:15:20.287] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.288] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.288] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.288] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.288] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.288] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.288] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.290] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.290] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.290] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.292] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.292] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.292] [info] Compute face permutations [2026-10-20 08:15:20.292] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.292] [info] Compute edge permutations [2026-10-20 08:15:20.294] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.294] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.294] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.294] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.294] [info] Requesting connectivity (3, 0) - (3, 0) _ test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.shared_facet-float32] _ dtype = , ghost_mode = GhostMode.shared_facet cell_type = CellType.tetrahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, ..., 2097, 2098, 2099], shape=(2088,), dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.314] [info] Extract basic topology: 8400->8400 [2026-10-20 08:15:20.314] [info] Build local dual graph [2026-10-20 08:15:20.314] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.316] [info] GPS pseudo-diameter:(53) 2044-54 [2026-10-20 08:15:20.316] [info] Create topology (single cell type) [2026-10-20 08:15:20.316] [info] Create topology (generalised) [2026-10-20 08:15:20.316] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.316] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.316] [info] Compute ghost indices [2026-10-20 08:15:20.316] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.316] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.317] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.317] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.317] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.317] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.317] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.317] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.317] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.317] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.317] [info] Checking required entities per dimension [2026-10-20 08:15:20.317] [info] Cell type: 0 dofmap: 2100x4 [2026-10-20 08:15:20.317] [info] Global index computation [2026-10-20 08:15:20.317] [info] Got 1 index_maps [2026-10-20 08:15:20.317] [info] Get global indices [2026-10-20 08:15:20.318] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.318] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.318] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.318] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.319] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.319] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.319] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.320] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.320] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.320] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.322] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.322] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.322] [info] Compute face permutations [2026-10-20 08:15:20.322] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.322] [info] Compute edge permutations [2026-10-20 08:15:20.324] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.324] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.324] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.324] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.324] [info] Requesting connectivity (3, 0) - (3, 0) _ test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.none-float64] _ dtype = , ghost_mode = GhostMode.none cell_type = CellType.hexahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...30, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.342] [info] Extract basic topology: 2800->2800 [2026-10-20 08:15:20.342] [info] Build local dual graph [2026-10-20 08:15:20.342] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.342] [info] GPS pseudo-diameter:(20) 349-0 [2026-10-20 08:15:20.342] [info] Create topology (single cell type) [2026-10-20 08:15:20.342] [info] Create topology (generalised) [2026-10-20 08:15:20.342] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.342] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.343] [info] Compute ghost indices [2026-10-20 08:15:20.343] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.343] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.343] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.343] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.343] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.343] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.343] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.343] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.343] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.343] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.343] [info] Checking required entities per dimension [2026-10-20 08:15:20.343] [info] Cell type: 0 dofmap: 350x8 [2026-10-20 08:15:20.343] [info] Global index computation [2026-10-20 08:15:20.343] [info] Got 1 index_maps [2026-10-20 08:15:20.343] [info] Get global indices [2026-10-20 08:15:20.343] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.343] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.343] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.344] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.344] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.344] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.344] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.345] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.345] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.345] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.345] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.345] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.345] [info] Compute face permutations [2026-10-20 08:15:20.345] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.345] [info] Compute edge permutations [2026-10-20 08:15:20.347] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.347] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.347] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.347] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.347] [info] Requesting connectivity (3, 0) - (3, 0) _ test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.none-float32] _ dtype = , ghost_mode = GhostMode.none cell_type = CellType.hexahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...30, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.365] [info] Extract basic topology: 2800->2800 [2026-10-20 08:15:20.365] [info] Build local dual graph [2026-10-20 08:15:20.365] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.365] [info] GPS pseudo-diameter:(20) 349-0 [2026-10-20 08:15:20.365] [info] Create topology (single cell type) [2026-10-20 08:15:20.365] [info] Create topology (generalised) [2026-10-20 08:15:20.365] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.365] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.366] [info] Compute ghost indices [2026-10-20 08:15:20.366] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.366] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.366] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.366] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.366] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.366] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.366] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.366] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.366] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.366] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.366] [info] Checking required entities per dimension [2026-10-20 08:15:20.366] [info] Cell type: 0 dofmap: 350x8 [2026-10-20 08:15:20.366] [info] Global index computation [2026-10-20 08:15:20.366] [info] Got 1 index_maps [2026-10-20 08:15:20.366] [info] Get global indices [2026-10-20 08:15:20.366] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.367] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.367] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.367] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.367] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.367] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.367] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.368] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.368] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.368] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.368] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.368] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.368] [info] Compute face permutations [2026-10-20 08:15:20.368] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.368] [info] Compute edge permutations [2026-10-20 08:15:20.370] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.370] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.370] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.370] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.370] [info] Requesting connectivity (3, 0) - (3, 0) _ test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.shared_facet-float64] _ dtype = , ghost_mode = GhostMode.shared_facet cell_type = CellType.hexahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...30, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.388] [info] Extract basic topology: 2800->2800 [2026-10-20 08:15:20.388] [info] Build local dual graph [2026-10-20 08:15:20.388] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.388] [info] GPS pseudo-diameter:(20) 349-0 [2026-10-20 08:15:20.388] [info] Create topology (single cell type) [2026-10-20 08:15:20.388] [info] Create topology (generalised) [2026-10-20 08:15:20.389] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.389] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.389] [info] Compute ghost indices [2026-10-20 08:15:20.389] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.389] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.389] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.389] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.389] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.389] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.389] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.389] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.389] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.389] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.389] [info] Checking required entities per dimension [2026-10-20 08:15:20.389] [info] Cell type: 0 dofmap: 350x8 [2026-10-20 08:15:20.389] [info] Global index computation [2026-10-20 08:15:20.389] [info] Got 1 index_maps [2026-10-20 08:15:20.389] [info] Get global indices [2026-10-20 08:15:20.389] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.390] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.390] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.390] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.390] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.390] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.390] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.391] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.391] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.391] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.391] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.391] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.391] [info] Compute face permutations [2026-10-20 08:15:20.391] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.391] [info] Compute edge permutations [2026-10-20 08:15:20.393] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.393] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.393] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.393] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.393] [info] Requesting connectivity (3, 0) - (3, 0) _ test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.shared_facet-float32] _ dtype = , ghost_mode = GhostMode.shared_facet cell_type = CellType.hexahedron @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "ghost_mode", [dolfinx.mesh.GhostMode.none, dolfinx.mesh.GhostMode.shared_facet] ) @pytest.mark.parametrize( "cell_type", [dolfinx.cpp.mesh.CellType.tetrahedron, dolfinx.cpp.mesh.CellType.hexahedron] ) def test_exterior_boundary_subdomain(dtype, ghost_mode, cell_type): comm = MPI.COMM_WORLD mesh = dolfinx.mesh.create_unit_cube( comm, 10, 5, 7, cell_type=cell_type, ghost_mode=ghost_mode, dtype=dtype ) def center(x): return (x[0] - 0.5) ** 2 + (x[1] - 0.5) ** 2 + (x[2] - 0.5) ** 2 <= 0.2**2 tdim = mesh.topology.dim cell_map = mesh.topology.index_map(tdim) all_cells = np.arange(cell_map.size_local + cell_map.num_ghosts, dtype=np.int32) values = np.full_like(all_cells, 1, dtype=np.int32) values[dolfinx.mesh.locate_entities(mesh, tdim, center)] = 2 cell_tags = dolfinx.mesh.meshtags(mesh, tdim, all_cells, values) > ext_facets_1 = scifem.mesh.compute_subdomain_exterior_facets(mesh, cell_tags, (1,)) tests/test_mesh.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scifem/mesh.py:249: in compute_subdomain_exterior_facets sub_mesh, cell_map, _, _, _ = extract_submesh( scifem/mesh.py:172: in extract_submesh new_et, _ = transfer_meshtags_to_submesh(entity_tag, submesh, vertex_map, cell_map) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ entity_tag = submesh = vertex_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...08, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527], dtype=int32) cell_to_parent = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...30, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349], dtype=int32) def transfer_meshtags_to_submesh( entity_tag: dolfinx.mesh.MeshTags, submesh: dolfinx.mesh.Mesh, vertex_to_parent: npt.NDArray[np.int32], cell_to_parent: npt.NDArray[np.int32], ) -> tuple[dolfinx.mesh.MeshTags, npt.NDArray[np.int32]]: """ Transfer a ``entity_tag`` from a parent mesh to a ``submesh``. Args: entity_tag: Tag to transfer submesh: Submesh to transfer tag to vertex_to_parent: Mapping from submesh vertices to parent mesh vertices cell_to_parent: Mapping from submesh cells to parent entities Returns: A tuple (submesh_tag, sub_to_parent_entity_map) where: ``submesh_tag`` is the tag on the submesh and ``sub_to_parent_entity_map`` is a mapping from submesh entities in the tag to the corresponding entities in the parent. """ dim = entity_tag.dim sub_tdim = submesh.topology.dim if dim > sub_tdim: raise RuntimeError( f"Cannot transfer meshtags of dimension {dim} to submesh with topological dimension" ) submesh.topology.create_connectivity(sub_tdim, sub_tdim) submesh.topology.create_connectivity(entity_tag.dim, 0) submesh.topology.create_connectivity(sub_tdim, entity_tag.dim) entity_tag.topology.create_connectivity(dim, 0) entity_tag.topology.create_connectivity(dim, sub_tdim) > cpp_tag, sub_to_parent_entity_map = _scifem.transfer_meshtags_to_submesh_int32( entity_tag._cpp_object, submesh.topology._cpp_object, vertex_to_parent, cell_to_parent ) E TypeError: transfer_meshtags_to_submesh_int32(): incompatible function arguments. The following argument types are supported: E 1. transfer_meshtags_to_submesh_int32(tags: dolfinx::mesh::MeshTags, submesh_topology: dolfinx::mesh::Topology, vertex_map: ndarray[dtype=int32, shape=(*), order='C', writable=False], cell_map: ndarray[dtype=int32, shape=(*), order='C', writable=False]) -> tuple[dolfinx::mesh::MeshTags, numpy.ndarray[dtype=int32]] E E Invoked with types: dolfinx.cpp.mesh.MeshTags_int32, dolfinx.cpp.mesh.Topology, ndarray, ndarray scifem/mesh.py:111: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:20.411] [info] Extract basic topology: 2800->2800 [2026-10-20 08:15:20.411] [info] Build local dual graph [2026-10-20 08:15:20.411] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:20.411] [info] GPS pseudo-diameter:(20) 349-0 [2026-10-20 08:15:20.411] [info] Create topology (single cell type) [2026-10-20 08:15:20.411] [info] Create topology (generalised) [2026-10-20 08:15:20.411] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:20.411] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:20.412] [info] Compute ghost indices [2026-10-20 08:15:20.412] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.412] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.412] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.412] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.412] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.412] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.412] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:20.412] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.412] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.412] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:20.412] [info] Checking required entities per dimension [2026-10-20 08:15:20.412] [info] Cell type: 0 dofmap: 350x8 [2026-10-20 08:15:20.412] [info] Global index computation [2026-10-20 08:15:20.412] [info] Got 1 index_maps [2026-10-20 08:15:20.412] [info] Get global indices [2026-10-20 08:15:20.412] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.412] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.413] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.413] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.413] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.413] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.413] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:20.414] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.414] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.414] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:20.414] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:20.414] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:20.414] [info] Compute face permutations [2026-10-20 08:15:20.414] [info] Computing permutations for face type 0 [2026-10-20 08:15:20.414] [info] Compute edge permutations [2026-10-20 08:15:20.416] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.416] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.416] [info] Requesting connectivity (3, 0) - (3, 0) [2026-10-20 08:15:20.416] [info] Requesting connectivity (3, 0) - (0, 0) [2026-10-20 08:15:20.416] [info] Requesting connectivity (3, 0) - (3, 0) _______ test_real_function_space_mass[float64-CellType.triangle-1.3-0.1] _______ L = 0.1, H = 1.3, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.651] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.651] [info] Build local dual graph [2026-10-20 08:15:44.651] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.651] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.651] [info] Create topology (single cell type) [2026-10-20 08:15:44.651] [info] Create topology (generalised) [2026-10-20 08:15:44.651] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.651] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.651] [info] Compute ghost indices [2026-10-20 08:15:44.651] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.651] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.651] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.651] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.651] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.651] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.651] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.651] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.651] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.651] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.651] [info] Checking required entities per dimension [2026-10-20 08:15:44.651] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.651] [info] Global index computation [2026-10-20 08:15:44.651] [info] Got 1 index_maps [2026-10-20 08:15:44.651] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-1.3-0.2] _______ L = 0.2, H = 1.3, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.660] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.660] [info] Build local dual graph [2026-10-20 08:15:44.660] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.660] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.660] [info] Create topology (single cell type) [2026-10-20 08:15:44.660] [info] Create topology (generalised) [2026-10-20 08:15:44.660] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.660] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.661] [info] Compute ghost indices [2026-10-20 08:15:44.661] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.661] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.661] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.661] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.661] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.661] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.661] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.661] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.661] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.661] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.661] [info] Checking required entities per dimension [2026-10-20 08:15:44.661] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.661] [info] Global index computation [2026-10-20 08:15:44.661] [info] Got 1 index_maps [2026-10-20 08:15:44.661] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-1.3-0.3] _______ L = 0.3, H = 1.3, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.669] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.669] [info] Build local dual graph [2026-10-20 08:15:44.669] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.669] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.669] [info] Create topology (single cell type) [2026-10-20 08:15:44.669] [info] Create topology (generalised) [2026-10-20 08:15:44.669] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.669] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.670] [info] Compute ghost indices [2026-10-20 08:15:44.670] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.670] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.670] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.670] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.670] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.670] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.670] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.670] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.670] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.670] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.670] [info] Checking required entities per dimension [2026-10-20 08:15:44.670] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.670] [info] Global index computation [2026-10-20 08:15:44.670] [info] Got 1 index_maps [2026-10-20 08:15:44.670] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-0.8-0.1] _______ L = 0.1, H = 0.8, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.678] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.678] [info] Build local dual graph [2026-10-20 08:15:44.678] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.678] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.678] [info] Create topology (single cell type) [2026-10-20 08:15:44.678] [info] Create topology (generalised) [2026-10-20 08:15:44.678] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.678] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.678] [info] Compute ghost indices [2026-10-20 08:15:44.678] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.679] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.679] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.679] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.679] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.679] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.679] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.679] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.679] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.679] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.679] [info] Checking required entities per dimension [2026-10-20 08:15:44.679] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.679] [info] Global index computation [2026-10-20 08:15:44.679] [info] Got 1 index_maps [2026-10-20 08:15:44.679] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-0.8-0.2] _______ L = 0.2, H = 0.8, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.687] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.687] [info] Build local dual graph [2026-10-20 08:15:44.687] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.687] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.687] [info] Create topology (single cell type) [2026-10-20 08:15:44.687] [info] Create topology (generalised) [2026-10-20 08:15:44.687] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.687] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.687] [info] Compute ghost indices [2026-10-20 08:15:44.687] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.687] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.687] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.687] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.688] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.688] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.688] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.688] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.688] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.688] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.688] [info] Checking required entities per dimension [2026-10-20 08:15:44.688] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.688] [info] Global index computation [2026-10-20 08:15:44.688] [info] Got 1 index_maps [2026-10-20 08:15:44.688] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-0.8-0.3] _______ L = 0.3, H = 0.8, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.696] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.696] [info] Build local dual graph [2026-10-20 08:15:44.696] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.696] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.696] [info] Create topology (single cell type) [2026-10-20 08:15:44.696] [info] Create topology (generalised) [2026-10-20 08:15:44.696] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.696] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.696] [info] Compute ghost indices [2026-10-20 08:15:44.696] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.696] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.696] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.696] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.696] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.696] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.696] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.696] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.696] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.696] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.696] [info] Checking required entities per dimension [2026-10-20 08:15:44.696] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.696] [info] Global index computation [2026-10-20 08:15:44.696] [info] Got 1 index_maps [2026-10-20 08:15:44.696] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-0.2-0.1] _______ L = 0.1, H = 0.2, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.705] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.705] [info] Build local dual graph [2026-10-20 08:15:44.705] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.705] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.705] [info] Create topology (single cell type) [2026-10-20 08:15:44.705] [info] Create topology (generalised) [2026-10-20 08:15:44.705] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.705] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.705] [info] Compute ghost indices [2026-10-20 08:15:44.705] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.705] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.705] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.705] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.705] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.705] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.705] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.705] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.705] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.705] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.705] [info] Checking required entities per dimension [2026-10-20 08:15:44.705] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.705] [info] Global index computation [2026-10-20 08:15:44.705] [info] Got 1 index_maps [2026-10-20 08:15:44.705] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-0.2-0.2] _______ L = 0.2, H = 0.2, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.714] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.714] [info] Build local dual graph [2026-10-20 08:15:44.714] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.714] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.714] [info] Create topology (single cell type) [2026-10-20 08:15:44.714] [info] Create topology (generalised) [2026-10-20 08:15:44.714] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.714] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.714] [info] Compute ghost indices [2026-10-20 08:15:44.714] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.714] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.714] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.714] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.714] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.714] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.714] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.714] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.714] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.714] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.714] [info] Checking required entities per dimension [2026-10-20 08:15:44.714] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.714] [info] Global index computation [2026-10-20 08:15:44.714] [info] Got 1 index_maps [2026-10-20 08:15:44.714] [info] Get global indices _______ test_real_function_space_mass[float64-CellType.triangle-0.2-0.3] _______ L = 0.3, H = 0.2, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.724] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.724] [info] Build local dual graph [2026-10-20 08:15:44.724] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.724] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.724] [info] Create topology (single cell type) [2026-10-20 08:15:44.724] [info] Create topology (generalised) [2026-10-20 08:15:44.724] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.724] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.725] [info] Compute ghost indices [2026-10-20 08:15:44.725] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.725] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.725] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.725] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.725] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.725] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.725] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.725] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.725] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.725] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.725] [info] Checking required entities per dimension [2026-10-20 08:15:44.725] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.725] [info] Global index computation [2026-10-20 08:15:44.725] [info] Got 1 index_maps [2026-10-20 08:15:44.725] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-1.3-0.1] _____ L = 0.1, H = 1.3, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.734] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.734] [info] Build local dual graph [2026-10-20 08:15:44.734] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.734] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.734] [info] Create topology (single cell type) [2026-10-20 08:15:44.734] [info] Create topology (generalised) [2026-10-20 08:15:44.734] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.734] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.734] [info] Compute ghost indices [2026-10-20 08:15:44.734] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.734] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.734] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.734] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.734] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.734] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.734] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.734] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.734] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.734] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.734] [info] Checking required entities per dimension [2026-10-20 08:15:44.734] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.734] [info] Global index computation [2026-10-20 08:15:44.734] [info] Got 1 index_maps [2026-10-20 08:15:44.734] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-1.3-0.2] _____ L = 0.2, H = 1.3, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.743] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.743] [info] Build local dual graph [2026-10-20 08:15:44.743] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.743] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.743] [info] Create topology (single cell type) [2026-10-20 08:15:44.743] [info] Create topology (generalised) [2026-10-20 08:15:44.743] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.743] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.743] [info] Compute ghost indices [2026-10-20 08:15:44.743] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.743] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.743] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.743] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.743] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.743] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.743] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.743] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.743] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.743] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.743] [info] Checking required entities per dimension [2026-10-20 08:15:44.743] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.743] [info] Global index computation [2026-10-20 08:15:44.743] [info] Got 1 index_maps [2026-10-20 08:15:44.743] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-1.3-0.3] _____ L = 0.3, H = 1.3, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.752] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.752] [info] Build local dual graph [2026-10-20 08:15:44.752] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.752] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.752] [info] Create topology (single cell type) [2026-10-20 08:15:44.752] [info] Create topology (generalised) [2026-10-20 08:15:44.752] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.752] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.752] [info] Compute ghost indices [2026-10-20 08:15:44.752] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.752] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.753] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.753] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.753] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.753] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.753] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.753] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.753] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.753] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.753] [info] Checking required entities per dimension [2026-10-20 08:15:44.753] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.753] [info] Global index computation [2026-10-20 08:15:44.753] [info] Got 1 index_maps [2026-10-20 08:15:44.753] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-0.8-0.1] _____ L = 0.1, H = 0.8, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.761] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.761] [info] Build local dual graph [2026-10-20 08:15:44.761] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.761] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.762] [info] Create topology (single cell type) [2026-10-20 08:15:44.762] [info] Create topology (generalised) [2026-10-20 08:15:44.762] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.762] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.762] [info] Compute ghost indices [2026-10-20 08:15:44.762] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.762] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.762] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.762] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.762] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.762] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.762] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.762] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.762] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.762] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.762] [info] Checking required entities per dimension [2026-10-20 08:15:44.762] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.762] [info] Global index computation [2026-10-20 08:15:44.762] [info] Got 1 index_maps [2026-10-20 08:15:44.762] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-0.8-0.2] _____ L = 0.2, H = 0.8, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.771] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.771] [info] Build local dual graph [2026-10-20 08:15:44.771] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.771] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.771] [info] Create topology (single cell type) [2026-10-20 08:15:44.771] [info] Create topology (generalised) [2026-10-20 08:15:44.771] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.771] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.771] [info] Compute ghost indices [2026-10-20 08:15:44.771] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.771] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.771] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.771] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.771] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.771] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.771] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.771] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.771] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.771] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.771] [info] Checking required entities per dimension [2026-10-20 08:15:44.771] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.771] [info] Global index computation [2026-10-20 08:15:44.771] [info] Got 1 index_maps [2026-10-20 08:15:44.771] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-0.8-0.3] _____ L = 0.3, H = 0.8, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.780] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.780] [info] Build local dual graph [2026-10-20 08:15:44.780] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.780] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.780] [info] Create topology (single cell type) [2026-10-20 08:15:44.780] [info] Create topology (generalised) [2026-10-20 08:15:44.780] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.780] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.780] [info] Compute ghost indices [2026-10-20 08:15:44.780] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.780] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.780] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.780] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.780] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.780] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.780] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.780] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.780] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.780] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.780] [info] Checking required entities per dimension [2026-10-20 08:15:44.780] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.780] [info] Global index computation [2026-10-20 08:15:44.780] [info] Got 1 index_maps [2026-10-20 08:15:44.780] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-0.2-0.1] _____ L = 0.1, H = 0.2, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.789] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.789] [info] Build local dual graph [2026-10-20 08:15:44.789] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.789] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.789] [info] Create topology (single cell type) [2026-10-20 08:15:44.789] [info] Create topology (generalised) [2026-10-20 08:15:44.789] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.789] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.789] [info] Compute ghost indices [2026-10-20 08:15:44.789] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.789] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.789] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.789] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.789] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.789] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.789] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.789] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.789] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.789] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.789] [info] Checking required entities per dimension [2026-10-20 08:15:44.789] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.789] [info] Global index computation [2026-10-20 08:15:44.789] [info] Got 1 index_maps [2026-10-20 08:15:44.789] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-0.2-0.2] _____ L = 0.2, H = 0.2, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.798] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.798] [info] Build local dual graph [2026-10-20 08:15:44.798] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.798] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.798] [info] Create topology (single cell type) [2026-10-20 08:15:44.798] [info] Create topology (generalised) [2026-10-20 08:15:44.798] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.798] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.798] [info] Compute ghost indices [2026-10-20 08:15:44.798] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.798] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.798] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.798] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.798] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.798] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.798] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.798] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.798] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.798] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.798] [info] Checking required entities per dimension [2026-10-20 08:15:44.798] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.798] [info] Global index computation [2026-10-20 08:15:44.798] [info] Got 1 index_maps [2026-10-20 08:15:44.798] [info] Get global indices ____ test_real_function_space_mass[float64-CellType.quadrilateral-0.2-0.3] _____ L = 0.3, H = 0.2, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.807] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.807] [info] Build local dual graph [2026-10-20 08:15:44.807] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.807] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.807] [info] Create topology (single cell type) [2026-10-20 08:15:44.807] [info] Create topology (generalised) [2026-10-20 08:15:44.807] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.807] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.807] [info] Compute ghost indices [2026-10-20 08:15:44.807] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.807] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.807] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.807] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.807] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.807] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.807] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.807] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.808] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.808] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.808] [info] Checking required entities per dimension [2026-10-20 08:15:44.808] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.808] [info] Global index computation [2026-10-20 08:15:44.808] [info] Got 1 index_maps [2026-10-20 08:15:44.808] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-1.3-0.1] _______ L = 0.1, H = 1.3, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.816] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.816] [info] Build local dual graph [2026-10-20 08:15:44.816] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.816] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.816] [info] Create topology (single cell type) [2026-10-20 08:15:44.816] [info] Create topology (generalised) [2026-10-20 08:15:44.816] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.816] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.816] [info] Compute ghost indices [2026-10-20 08:15:44.816] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.816] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.817] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.817] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.817] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.817] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.817] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.817] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.817] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.817] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.817] [info] Checking required entities per dimension [2026-10-20 08:15:44.817] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.817] [info] Global index computation [2026-10-20 08:15:44.817] [info] Got 1 index_maps [2026-10-20 08:15:44.817] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-1.3-0.2] _______ L = 0.2, H = 1.3, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.826] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.826] [info] Build local dual graph [2026-10-20 08:15:44.826] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.826] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.826] [info] Create topology (single cell type) [2026-10-20 08:15:44.826] [info] Create topology (generalised) [2026-10-20 08:15:44.826] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.826] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.826] [info] Compute ghost indices [2026-10-20 08:15:44.826] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.826] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.826] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.826] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.826] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.826] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.826] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.826] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.826] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.826] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.826] [info] Checking required entities per dimension [2026-10-20 08:15:44.826] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.826] [info] Global index computation [2026-10-20 08:15:44.826] [info] Got 1 index_maps [2026-10-20 08:15:44.826] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-1.3-0.3] _______ L = 0.3, H = 1.3, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.837] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.837] [info] Build local dual graph [2026-10-20 08:15:44.837] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.837] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.837] [info] Create topology (single cell type) [2026-10-20 08:15:44.837] [info] Create topology (generalised) [2026-10-20 08:15:44.837] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.837] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.837] [info] Compute ghost indices [2026-10-20 08:15:44.837] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.837] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.837] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.837] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.837] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.837] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.837] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.837] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.837] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.837] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.837] [info] Checking required entities per dimension [2026-10-20 08:15:44.837] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.837] [info] Global index computation [2026-10-20 08:15:44.837] [info] Got 1 index_maps [2026-10-20 08:15:44.837] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-0.8-0.1] _______ L = 0.1, H = 0.8, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.846] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.846] [info] Build local dual graph [2026-10-20 08:15:44.846] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.846] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.846] [info] Create topology (single cell type) [2026-10-20 08:15:44.846] [info] Create topology (generalised) [2026-10-20 08:15:44.846] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.846] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.846] [info] Compute ghost indices [2026-10-20 08:15:44.846] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.846] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.846] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.846] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.846] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.846] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.846] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.847] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.847] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.847] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.847] [info] Checking required entities per dimension [2026-10-20 08:15:44.847] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.847] [info] Global index computation [2026-10-20 08:15:44.847] [info] Got 1 index_maps [2026-10-20 08:15:44.847] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-0.8-0.2] _______ L = 0.2, H = 0.8, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.855] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.855] [info] Build local dual graph [2026-10-20 08:15:44.855] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.856] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.856] [info] Create topology (single cell type) [2026-10-20 08:15:44.856] [info] Create topology (generalised) [2026-10-20 08:15:44.856] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.856] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.856] [info] Compute ghost indices [2026-10-20 08:15:44.856] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.856] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.856] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.856] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.856] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.856] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.856] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.856] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.856] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.856] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.856] [info] Checking required entities per dimension [2026-10-20 08:15:44.856] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.856] [info] Global index computation [2026-10-20 08:15:44.856] [info] Got 1 index_maps [2026-10-20 08:15:44.856] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-0.8-0.3] _______ L = 0.3, H = 0.8, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.865] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.865] [info] Build local dual graph [2026-10-20 08:15:44.865] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.865] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.865] [info] Create topology (single cell type) [2026-10-20 08:15:44.865] [info] Create topology (generalised) [2026-10-20 08:15:44.865] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.865] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.865] [info] Compute ghost indices [2026-10-20 08:15:44.865] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.865] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.865] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.865] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.865] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.865] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.865] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.865] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.865] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.865] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.865] [info] Checking required entities per dimension [2026-10-20 08:15:44.865] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.865] [info] Global index computation [2026-10-20 08:15:44.865] [info] Got 1 index_maps [2026-10-20 08:15:44.865] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-0.2-0.1] _______ L = 0.1, H = 0.2, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.874] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.874] [info] Build local dual graph [2026-10-20 08:15:44.874] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.874] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.874] [info] Create topology (single cell type) [2026-10-20 08:15:44.874] [info] Create topology (generalised) [2026-10-20 08:15:44.875] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.875] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.875] [info] Compute ghost indices [2026-10-20 08:15:44.875] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.875] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.875] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.875] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.875] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.875] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.875] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.875] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.875] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.875] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.875] [info] Checking required entities per dimension [2026-10-20 08:15:44.875] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.875] [info] Global index computation [2026-10-20 08:15:44.875] [info] Got 1 index_maps [2026-10-20 08:15:44.875] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-0.2-0.2] _______ L = 0.2, H = 0.2, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.884] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.884] [info] Build local dual graph [2026-10-20 08:15:44.884] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.884] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.884] [info] Create topology (single cell type) [2026-10-20 08:15:44.884] [info] Create topology (generalised) [2026-10-20 08:15:44.884] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.884] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.884] [info] Compute ghost indices [2026-10-20 08:15:44.884] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.884] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.884] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.884] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.884] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.884] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.884] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.884] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.884] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.884] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.884] [info] Checking required entities per dimension [2026-10-20 08:15:44.884] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.884] [info] Global index computation [2026-10-20 08:15:44.884] [info] Got 1 index_maps [2026-10-20 08:15:44.884] [info] Get global indices _______ test_real_function_space_mass[float32-CellType.triangle-0.2-0.3] _______ L = 0.3, H = 0.2, cell_type = CellType.triangle, dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.893] [info] Extract basic topology: 378->378 [2026-10-20 08:15:44.893] [info] Build local dual graph [2026-10-20 08:15:44.893] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.893] [info] GPS pseudo-diameter:(30) 113-12 [2026-10-20 08:15:44.893] [info] Create topology (single cell type) [2026-10-20 08:15:44.893] [info] Create topology (generalised) [2026-10-20 08:15:44.893] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.893] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.893] [info] Compute ghost indices [2026-10-20 08:15:44.893] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.893] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.893] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.893] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.893] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.893] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.893] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.893] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.893] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.893] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.893] [info] Checking required entities per dimension [2026-10-20 08:15:44.893] [info] Cell type: 0 dofmap: 126x3 [2026-10-20 08:15:44.893] [info] Global index computation [2026-10-20 08:15:44.893] [info] Got 1 index_maps [2026-10-20 08:15:44.893] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-1.3-0.1] _____ L = 0.1, H = 1.3, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.902] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.902] [info] Build local dual graph [2026-10-20 08:15:44.902] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.902] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.902] [info] Create topology (single cell type) [2026-10-20 08:15:44.902] [info] Create topology (generalised) [2026-10-20 08:15:44.902] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.902] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.903] [info] Compute ghost indices [2026-10-20 08:15:44.903] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.903] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.903] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.903] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.903] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.903] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.903] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.903] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.903] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.903] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.903] [info] Checking required entities per dimension [2026-10-20 08:15:44.903] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.903] [info] Global index computation [2026-10-20 08:15:44.903] [info] Got 1 index_maps [2026-10-20 08:15:44.903] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-1.3-0.2] _____ L = 0.2, H = 1.3, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.911] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.911] [info] Build local dual graph [2026-10-20 08:15:44.911] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.911] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.911] [info] Create topology (single cell type) [2026-10-20 08:15:44.911] [info] Create topology (generalised) [2026-10-20 08:15:44.911] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.911] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.911] [info] Compute ghost indices [2026-10-20 08:15:44.911] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.912] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.912] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.912] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.912] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.912] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.912] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.912] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.912] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.912] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.912] [info] Checking required entities per dimension [2026-10-20 08:15:44.912] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.912] [info] Global index computation [2026-10-20 08:15:44.912] [info] Got 1 index_maps [2026-10-20 08:15:44.912] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-1.3-0.3] _____ L = 0.3, H = 1.3, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.920] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.920] [info] Build local dual graph [2026-10-20 08:15:44.920] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.920] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.920] [info] Create topology (single cell type) [2026-10-20 08:15:44.920] [info] Create topology (generalised) [2026-10-20 08:15:44.920] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.920] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.920] [info] Compute ghost indices [2026-10-20 08:15:44.920] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.920] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.920] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.920] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.920] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.920] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.920] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.921] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.921] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.921] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.921] [info] Checking required entities per dimension [2026-10-20 08:15:44.921] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.921] [info] Global index computation [2026-10-20 08:15:44.921] [info] Got 1 index_maps [2026-10-20 08:15:44.921] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-0.8-0.1] _____ L = 0.1, H = 0.8, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.929] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.929] [info] Build local dual graph [2026-10-20 08:15:44.929] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.929] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.929] [info] Create topology (single cell type) [2026-10-20 08:15:44.929] [info] Create topology (generalised) [2026-10-20 08:15:44.929] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.929] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.929] [info] Compute ghost indices [2026-10-20 08:15:44.929] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.929] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.929] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.929] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.929] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.929] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.929] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.929] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.929] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.929] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.929] [info] Checking required entities per dimension [2026-10-20 08:15:44.930] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.930] [info] Global index computation [2026-10-20 08:15:44.930] [info] Got 1 index_maps [2026-10-20 08:15:44.930] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-0.8-0.2] _____ L = 0.2, H = 0.8, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.938] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.938] [info] Build local dual graph [2026-10-20 08:15:44.938] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.938] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.938] [info] Create topology (single cell type) [2026-10-20 08:15:44.938] [info] Create topology (generalised) [2026-10-20 08:15:44.938] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.938] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.938] [info] Compute ghost indices [2026-10-20 08:15:44.938] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.938] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.938] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.938] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.938] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.938] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.938] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.938] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.938] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.938] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.938] [info] Checking required entities per dimension [2026-10-20 08:15:44.938] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.938] [info] Global index computation [2026-10-20 08:15:44.938] [info] Got 1 index_maps [2026-10-20 08:15:44.938] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-0.8-0.3] _____ L = 0.3, H = 0.8, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.949] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.949] [info] Build local dual graph [2026-10-20 08:15:44.949] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.949] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.949] [info] Create topology (single cell type) [2026-10-20 08:15:44.949] [info] Create topology (generalised) [2026-10-20 08:15:44.949] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.949] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.949] [info] Compute ghost indices [2026-10-20 08:15:44.949] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.949] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.949] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.949] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.950] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.950] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.950] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.950] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.950] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.950] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.950] [info] Checking required entities per dimension [2026-10-20 08:15:44.950] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.950] [info] Global index computation [2026-10-20 08:15:44.950] [info] Got 1 index_maps [2026-10-20 08:15:44.950] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-0.2-0.1] _____ L = 0.1, H = 0.2, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.959] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.959] [info] Build local dual graph [2026-10-20 08:15:44.959] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.959] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.959] [info] Create topology (single cell type) [2026-10-20 08:15:44.959] [info] Create topology (generalised) [2026-10-20 08:15:44.959] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.959] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.959] [info] Compute ghost indices [2026-10-20 08:15:44.959] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.959] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.959] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.959] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.959] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.959] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.959] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.959] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.959] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.959] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.959] [info] Checking required entities per dimension [2026-10-20 08:15:44.959] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.959] [info] Global index computation [2026-10-20 08:15:44.959] [info] Got 1 index_maps [2026-10-20 08:15:44.959] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-0.2-0.2] _____ L = 0.2, H = 0.2, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.968] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.968] [info] Build local dual graph [2026-10-20 08:15:44.968] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.968] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.968] [info] Create topology (single cell type) [2026-10-20 08:15:44.968] [info] Create topology (generalised) [2026-10-20 08:15:44.968] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.968] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.968] [info] Compute ghost indices [2026-10-20 08:15:44.968] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.968] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.968] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.968] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.968] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.968] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.968] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.968] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.968] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.968] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.969] [info] Checking required entities per dimension [2026-10-20 08:15:44.969] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.969] [info] Global index computation [2026-10-20 08:15:44.969] [info] Got 1 index_maps [2026-10-20 08:15:44.969] [info] Get global indices ____ test_real_function_space_mass[float32-CellType.quadrilateral-0.2-0.3] _____ L = 0.3, H = 0.2, cell_type = CellType.quadrilateral dtype = @pytest.mark.parametrize("L", [0.1, 0.2, 0.3]) @pytest.mark.parametrize("H", [1.3, 0.8, 0.2]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.triangle, dolfinx.mesh.CellType.quadrilateral] ) @pytest.mark.parametrize("dtype", [np.float64, np.float32]) def test_real_function_space_mass(L, H, cell_type, dtype): """ Check that real space mass matrix is the same as assembling the volume of the mesh """ mesh = dolfinx.mesh.create_rectangle( MPI.COMM_WORLD, [[0.0, 0.0], [L, H]], [7, 9], cell_type, dtype=dtype ) > V = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.977] [info] Extract basic topology: 252->252 [2026-10-20 08:15:44.977] [info] Build local dual graph [2026-10-20 08:15:44.977] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.977] [info] GPS pseudo-diameter:(15) 62-0 [2026-10-20 08:15:44.977] [info] Create topology (single cell type) [2026-10-20 08:15:44.977] [info] Create topology (generalised) [2026-10-20 08:15:44.977] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.977] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.977] [info] Compute ghost indices [2026-10-20 08:15:44.977] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.977] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.978] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.978] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.978] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.978] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.978] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.978] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.978] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.978] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.978] [info] Checking required entities per dimension [2026-10-20 08:15:44.978] [info] Cell type: 0 dofmap: 63x4 [2026-10-20 08:15:44.978] [info] Global index computation [2026-10-20 08:15:44.978] [info] Got 1 index_maps [2026-10-20 08:15:44.978] [info] Get global indices ________ test_real_function_space_vector[CellType.tetrahedron-float64] _________ cell_type = CellType.tetrahedron, dtype = @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.tetrahedron, dolfinx.mesh.CellType.hexahedron] ) def test_real_function_space_vector(cell_type, dtype): """ Test that assembling against a real space test function is equivalent to assembling a vector """ mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 2, 3, 5, cell_type, dtype=dtype) V = dolfinx.fem.functionspace(mesh, ("Lagrange", 3)) v = ufl.TrialFunction(V) > R = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:54: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.987] [info] Extract basic topology: 720->720 [2026-10-20 08:15:44.987] [info] Build local dual graph [2026-10-20 08:15:44.987] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.987] [info] GPS pseudo-diameter:(21) 172-6 [2026-10-20 08:15:44.987] [info] Create topology (single cell type) [2026-10-20 08:15:44.987] [info] Create topology (generalised) [2026-10-20 08:15:44.987] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.987] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:44.987] [info] Compute ghost indices [2026-10-20 08:15:44.987] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.987] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.987] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.987] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.987] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.987] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.987] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:44.987] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.987] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.987] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:44.987] [info] Checking required entities per dimension [2026-10-20 08:15:44.987] [info] Cell type: 0 dofmap: 180x4 [2026-10-20 08:15:44.987] [info] Global index computation [2026-10-20 08:15:44.987] [info] Got 1 index_maps [2026-10-20 08:15:44.987] [info] Get global indices [2026-10-20 08:15:44.989] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:44.989] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.989] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.989] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:44.989] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:44.989] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:44.989] [info] Checking required entities per dimension [2026-10-20 08:15:44.989] [info] Cell type: 0 dofmap: 180x20 [2026-10-20 08:15:44.989] [info] Global index computation [2026-10-20 08:15:44.989] [info] Got 3 index_maps [2026-10-20 08:15:44.989] [info] Get global indices [2026-10-20 08:15:44.990] [info] Compute face permutations [2026-10-20 08:15:44.990] [info] Computing permutations for face type 0 [2026-10-20 08:15:44.990] [info] Compute edge permutations ________ test_real_function_space_vector[CellType.tetrahedron-float32] _________ cell_type = CellType.tetrahedron, dtype = @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.tetrahedron, dolfinx.mesh.CellType.hexahedron] ) def test_real_function_space_vector(cell_type, dtype): """ Test that assembling against a real space test function is equivalent to assembling a vector """ mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 2, 3, 5, cell_type, dtype=dtype) V = dolfinx.fem.functionspace(mesh, ("Lagrange", 3)) v = ufl.TrialFunction(V) > R = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:54: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:44.999] [info] Extract basic topology: 720->720 [2026-10-20 08:15:44.999] [info] Build local dual graph [2026-10-20 08:15:44.999] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:44.999] [info] GPS pseudo-diameter:(21) 172-6 [2026-10-20 08:15:44.999] [info] Create topology (single cell type) [2026-10-20 08:15:44.999] [info] Create topology (generalised) [2026-10-20 08:15:44.999] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:44.999] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.000] [info] Compute ghost indices [2026-10-20 08:15:45.000] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.000] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.000] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.000] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.000] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.000] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.000] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.000] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.000] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.000] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.000] [info] Checking required entities per dimension [2026-10-20 08:15:45.000] [info] Cell type: 0 dofmap: 180x4 [2026-10-20 08:15:45.000] [info] Global index computation [2026-10-20 08:15:45.000] [info] Got 1 index_maps [2026-10-20 08:15:45.000] [info] Get global indices [2026-10-20 08:15:45.001] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.001] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.001] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.001] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:45.002] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.002] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.002] [info] Checking required entities per dimension [2026-10-20 08:15:45.002] [info] Cell type: 0 dofmap: 180x20 [2026-10-20 08:15:45.002] [info] Global index computation [2026-10-20 08:15:45.002] [info] Got 3 index_maps [2026-10-20 08:15:45.002] [info] Get global indices [2026-10-20 08:15:45.002] [info] Compute face permutations [2026-10-20 08:15:45.002] [info] Computing permutations for face type 0 [2026-10-20 08:15:45.002] [info] Compute edge permutations _________ test_real_function_space_vector[CellType.hexahedron-float64] _________ cell_type = CellType.hexahedron, dtype = @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.tetrahedron, dolfinx.mesh.CellType.hexahedron] ) def test_real_function_space_vector(cell_type, dtype): """ Test that assembling against a real space test function is equivalent to assembling a vector """ mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 2, 3, 5, cell_type, dtype=dtype) V = dolfinx.fem.functionspace(mesh, ("Lagrange", 3)) v = ufl.TrialFunction(V) > R = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:54: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.012] [info] Extract basic topology: 240->240 [2026-10-20 08:15:45.012] [info] Build local dual graph [2026-10-20 08:15:45.012] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.012] [info] GPS pseudo-diameter:(8) 29-0 [2026-10-20 08:15:45.012] [info] Create topology (single cell type) [2026-10-20 08:15:45.012] [info] Create topology (generalised) [2026-10-20 08:15:45.012] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.012] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.012] [info] Compute ghost indices [2026-10-20 08:15:45.012] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.012] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.012] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.012] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.012] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.012] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.012] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.012] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.012] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.012] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.012] [info] Checking required entities per dimension [2026-10-20 08:15:45.012] [info] Cell type: 0 dofmap: 30x8 [2026-10-20 08:15:45.012] [info] Global index computation [2026-10-20 08:15:45.012] [info] Got 1 index_maps [2026-10-20 08:15:45.012] [info] Get global indices [2026-10-20 08:15:45.015] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.015] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.015] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.015] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:45.015] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.015] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.015] [info] Checking required entities per dimension [2026-10-20 08:15:45.015] [info] Cell type: 0 dofmap: 30x64 [2026-10-20 08:15:45.015] [info] Global index computation [2026-10-20 08:15:45.015] [info] Got 4 index_maps [2026-10-20 08:15:45.015] [info] Get global indices [2026-10-20 08:15:45.016] [info] Compute face permutations [2026-10-20 08:15:45.016] [info] Computing permutations for face type 0 [2026-10-20 08:15:45.016] [info] Compute edge permutations _________ test_real_function_space_vector[CellType.hexahedron-float32] _________ cell_type = CellType.hexahedron, dtype = @pytest.mark.parametrize("dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "cell_type", [dolfinx.mesh.CellType.tetrahedron, dolfinx.mesh.CellType.hexahedron] ) def test_real_function_space_vector(cell_type, dtype): """ Test that assembling against a real space test function is equivalent to assembling a vector """ mesh = dolfinx.mesh.create_unit_cube(MPI.COMM_WORLD, 2, 3, 5, cell_type, dtype=dtype) V = dolfinx.fem.functionspace(mesh, ("Lagrange", 3)) v = ufl.TrialFunction(V) > R = scifem.create_real_functionspace(mesh) tests/test_real_functionspace.py:54: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.026] [info] Extract basic topology: 240->240 [2026-10-20 08:15:45.026] [info] Build local dual graph [2026-10-20 08:15:45.026] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.026] [info] GPS pseudo-diameter:(8) 29-0 [2026-10-20 08:15:45.026] [info] Create topology (single cell type) [2026-10-20 08:15:45.026] [info] Create topology (generalised) [2026-10-20 08:15:45.026] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.026] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.026] [info] Compute ghost indices [2026-10-20 08:15:45.026] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.026] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.026] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.026] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.026] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.026] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.026] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.026] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.026] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.026] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.026] [info] Checking required entities per dimension [2026-10-20 08:15:45.026] [info] Cell type: 0 dofmap: 30x8 [2026-10-20 08:15:45.026] [info] Global index computation [2026-10-20 08:15:45.026] [info] Got 1 index_maps [2026-10-20 08:15:45.026] [info] Get global indices [2026-10-20 08:15:45.029] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.029] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.029] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.029] [info] Computing mesh entities of dimension 2 [2026-10-20 08:15:45.029] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.029] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.030] [info] Checking required entities per dimension [2026-10-20 08:15:45.030] [info] Cell type: 0 dofmap: 30x64 [2026-10-20 08:15:45.030] [info] Global index computation [2026-10-20 08:15:45.030] [info] Got 4 index_maps [2026-10-20 08:15:45.030] [info] Get global indices [2026-10-20 08:15:45.030] [info] Compute face permutations [2026-10-20 08:15:45.030] [info] Computing permutations for face type 0 [2026-10-20 08:15:45.030] [info] Compute edge permutations ______________________ test_singular_poisson[1-0-dtype0] _______________________ tensor = 0, degree = 1 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.039] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.039] [info] Build local dual graph [2026-10-20 08:15:45.039] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.040] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.040] [info] Create topology (single cell type) [2026-10-20 08:15:45.040] [info] Create topology (generalised) [2026-10-20 08:15:45.040] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.040] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.040] [info] Compute ghost indices [2026-10-20 08:15:45.040] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.040] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.041] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.041] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.041] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.041] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.041] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.041] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.041] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.041] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.041] [info] Checking required entities per dimension [2026-10-20 08:15:45.041] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.041] [info] Global index computation [2026-10-20 08:15:45.041] [info] Got 1 index_maps [2026-10-20 08:15:45.041] [info] Get global indices [2026-10-20 08:15:45.041] [info] Checking required entities per dimension [2026-10-20 08:15:45.042] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.042] [info] Global index computation [2026-10-20 08:15:45.042] [info] Got 1 index_maps [2026-10-20 08:15:45.042] [info] Get global indices ______________________ test_singular_poisson[1-1-dtype0] _______________________ tensor = 1, degree = 1 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (2,) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.050] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.050] [info] Build local dual graph [2026-10-20 08:15:45.050] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.051] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.051] [info] Create topology (single cell type) [2026-10-20 08:15:45.051] [info] Create topology (generalised) [2026-10-20 08:15:45.051] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.051] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.051] [info] Compute ghost indices [2026-10-20 08:15:45.051] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.051] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.052] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.052] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.052] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.052] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.052] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.052] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.052] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.052] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.052] [info] Checking required entities per dimension [2026-10-20 08:15:45.052] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.052] [info] Global index computation [2026-10-20 08:15:45.052] [info] Got 1 index_maps [2026-10-20 08:15:45.052] [info] Get global indices [2026-10-20 08:15:45.053] [info] Checking required entities per dimension [2026-10-20 08:15:45.053] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.053] [info] Global index computation [2026-10-20 08:15:45.053] [info] Got 1 index_maps [2026-10-20 08:15:45.053] [info] Get global indices ______________________ test_singular_poisson[1-2-dtype0] _______________________ tensor = 2, degree = 1 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (3, 2) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.061] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.061] [info] Build local dual graph [2026-10-20 08:15:45.061] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.062] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.062] [info] Create topology (single cell type) [2026-10-20 08:15:45.062] [info] Create topology (generalised) [2026-10-20 08:15:45.062] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.062] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.062] [info] Compute ghost indices [2026-10-20 08:15:45.062] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.062] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.062] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.062] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.063] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.063] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.063] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.063] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.063] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.063] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.063] [info] Checking required entities per dimension [2026-10-20 08:15:45.063] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.063] [info] Global index computation [2026-10-20 08:15:45.063] [info] Got 1 index_maps [2026-10-20 08:15:45.063] [info] Get global indices [2026-10-20 08:15:45.063] [info] Checking required entities per dimension [2026-10-20 08:15:45.063] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.063] [info] Global index computation [2026-10-20 08:15:45.063] [info] Got 1 index_maps [2026-10-20 08:15:45.064] [info] Get global indices ______________________ test_singular_poisson[2-0-dtype0] _______________________ tensor = 0, degree = 2 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.072] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.072] [info] Build local dual graph [2026-10-20 08:15:45.072] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.073] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.073] [info] Create topology (single cell type) [2026-10-20 08:15:45.073] [info] Create topology (generalised) [2026-10-20 08:15:45.073] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.073] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.073] [info] Compute ghost indices [2026-10-20 08:15:45.073] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.073] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.073] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.073] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.073] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.073] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.073] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.073] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.073] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.073] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.073] [info] Checking required entities per dimension [2026-10-20 08:15:45.073] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.074] [info] Global index computation [2026-10-20 08:15:45.074] [info] Got 1 index_maps [2026-10-20 08:15:45.074] [info] Get global indices [2026-10-20 08:15:45.074] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.075] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.075] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.075] [info] Checking required entities per dimension [2026-10-20 08:15:45.075] [info] Cell type: 0 dofmap: 1250x6 [2026-10-20 08:15:45.075] [info] Global index computation [2026-10-20 08:15:45.075] [info] Got 2 index_maps [2026-10-20 08:15:45.075] [info] Get global indices ______________________ test_singular_poisson[2-1-dtype0] _______________________ tensor = 1, degree = 2 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (2,) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.086] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.086] [info] Build local dual graph [2026-10-20 08:15:45.086] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.087] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.087] [info] Create topology (single cell type) [2026-10-20 08:15:45.087] [info] Create topology (generalised) [2026-10-20 08:15:45.087] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.087] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.087] [info] Compute ghost indices [2026-10-20 08:15:45.087] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.087] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.087] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.087] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.088] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.088] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.088] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.088] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.088] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.088] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.088] [info] Checking required entities per dimension [2026-10-20 08:15:45.088] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.088] [info] Global index computation [2026-10-20 08:15:45.088] [info] Got 1 index_maps [2026-10-20 08:15:45.088] [info] Get global indices [2026-10-20 08:15:45.089] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.089] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.089] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.089] [info] Checking required entities per dimension [2026-10-20 08:15:45.089] [info] Cell type: 0 dofmap: 1250x6 [2026-10-20 08:15:45.090] [info] Global index computation [2026-10-20 08:15:45.090] [info] Got 2 index_maps [2026-10-20 08:15:45.090] [info] Get global indices ______________________ test_singular_poisson[2-2-dtype0] _______________________ tensor = 2, degree = 2 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (3, 2) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.099] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.099] [info] Build local dual graph [2026-10-20 08:15:45.099] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.099] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.099] [info] Create topology (single cell type) [2026-10-20 08:15:45.099] [info] Create topology (generalised) [2026-10-20 08:15:45.099] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.099] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.100] [info] Compute ghost indices [2026-10-20 08:15:45.100] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.100] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.100] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.100] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.100] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.100] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.100] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.100] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.100] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.100] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.100] [info] Checking required entities per dimension [2026-10-20 08:15:45.100] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.100] [info] Global index computation [2026-10-20 08:15:45.100] [info] Got 1 index_maps [2026-10-20 08:15:45.100] [info] Get global indices [2026-10-20 08:15:45.101] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.101] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.101] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.102] [info] Checking required entities per dimension [2026-10-20 08:15:45.102] [info] Cell type: 0 dofmap: 1250x6 [2026-10-20 08:15:45.102] [info] Global index computation [2026-10-20 08:15:45.102] [info] Got 2 index_maps [2026-10-20 08:15:45.102] [info] Get global indices ______________________ test_singular_poisson[3-0-dtype0] _______________________ tensor = 0, degree = 3 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.111] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.111] [info] Build local dual graph [2026-10-20 08:15:45.111] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.111] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.112] [info] Create topology (single cell type) [2026-10-20 08:15:45.112] [info] Create topology (generalised) [2026-10-20 08:15:45.112] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.112] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.112] [info] Compute ghost indices [2026-10-20 08:15:45.112] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.112] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.112] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.112] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.112] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.112] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.112] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.112] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.112] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.112] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.112] [info] Checking required entities per dimension [2026-10-20 08:15:45.112] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.113] [info] Global index computation [2026-10-20 08:15:45.113] [info] Got 1 index_maps [2026-10-20 08:15:45.113] [info] Get global indices [2026-10-20 08:15:45.113] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.114] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.114] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.114] [info] Checking required entities per dimension [2026-10-20 08:15:45.114] [info] Cell type: 0 dofmap: 1250x10 [2026-10-20 08:15:45.114] [info] Global index computation [2026-10-20 08:15:45.114] [info] Got 3 index_maps [2026-10-20 08:15:45.114] [info] Get global indices [2026-10-20 08:15:45.114] [info] Compute edge permutations ______________________ test_singular_poisson[3-1-dtype0] _______________________ tensor = 1, degree = 3 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (2,) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.123] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.123] [info] Build local dual graph [2026-10-20 08:15:45.123] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.124] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.124] [info] Create topology (single cell type) [2026-10-20 08:15:45.124] [info] Create topology (generalised) [2026-10-20 08:15:45.124] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.124] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.124] [info] Compute ghost indices [2026-10-20 08:15:45.124] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.124] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.125] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.125] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.125] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.125] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.125] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.125] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.125] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.125] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.125] [info] Checking required entities per dimension [2026-10-20 08:15:45.125] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.125] [info] Global index computation [2026-10-20 08:15:45.125] [info] Got 1 index_maps [2026-10-20 08:15:45.125] [info] Get global indices [2026-10-20 08:15:45.125] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.126] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.126] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.126] [info] Checking required entities per dimension [2026-10-20 08:15:45.126] [info] Cell type: 0 dofmap: 1250x10 [2026-10-20 08:15:45.126] [info] Global index computation [2026-10-20 08:15:45.126] [info] Got 3 index_maps [2026-10-20 08:15:45.126] [info] Get global indices [2026-10-20 08:15:45.127] [info] Compute edge permutations ______________________ test_singular_poisson[3-2-dtype0] _______________________ tensor = 2, degree = 3 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (3, 2) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.135] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.135] [info] Build local dual graph [2026-10-20 08:15:45.135] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.136] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.136] [info] Create topology (single cell type) [2026-10-20 08:15:45.136] [info] Create topology (generalised) [2026-10-20 08:15:45.136] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.136] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.136] [info] Compute ghost indices [2026-10-20 08:15:45.136] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.136] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.137] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.137] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.137] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.137] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.137] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.137] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.137] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.137] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.137] [info] Checking required entities per dimension [2026-10-20 08:15:45.137] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.137] [info] Global index computation [2026-10-20 08:15:45.137] [info] Got 1 index_maps [2026-10-20 08:15:45.137] [info] Get global indices [2026-10-20 08:15:45.138] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.138] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.138] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.138] [info] Checking required entities per dimension [2026-10-20 08:15:45.138] [info] Cell type: 0 dofmap: 1250x10 [2026-10-20 08:15:45.138] [info] Global index computation [2026-10-20 08:15:45.139] [info] Got 3 index_maps [2026-10-20 08:15:45.139] [info] Get global indices [2026-10-20 08:15:45.139] [info] Compute edge permutations ______________________ test_singular_poisson[4-0-dtype0] _______________________ tensor = 0, degree = 4 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = () def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.147] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.147] [info] Build local dual graph [2026-10-20 08:15:45.147] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.148] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.148] [info] Create topology (single cell type) [2026-10-20 08:15:45.148] [info] Create topology (generalised) [2026-10-20 08:15:45.148] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.148] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.148] [info] Compute ghost indices [2026-10-20 08:15:45.148] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.148] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.149] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.149] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.149] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.149] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.149] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.149] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.149] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.149] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.149] [info] Checking required entities per dimension [2026-10-20 08:15:45.149] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.149] [info] Global index computation [2026-10-20 08:15:45.149] [info] Got 1 index_maps [2026-10-20 08:15:45.149] [info] Get global indices [2026-10-20 08:15:45.150] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.150] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.150] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.150] [info] Checking required entities per dimension [2026-10-20 08:15:45.150] [info] Cell type: 0 dofmap: 1250x15 [2026-10-20 08:15:45.150] [info] Global index computation [2026-10-20 08:15:45.150] [info] Got 3 index_maps [2026-10-20 08:15:45.151] [info] Get global indices [2026-10-20 08:15:45.151] [info] Compute edge permutations ______________________ test_singular_poisson[4-1-dtype0] _______________________ tensor = 1, degree = 4 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (2,) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.159] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.159] [info] Build local dual graph [2026-10-20 08:15:45.159] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.160] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.160] [info] Create topology (single cell type) [2026-10-20 08:15:45.160] [info] Create topology (generalised) [2026-10-20 08:15:45.160] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.160] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.160] [info] Compute ghost indices [2026-10-20 08:15:45.160] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.160] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.161] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.161] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.161] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.161] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.161] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.161] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.161] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.161] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.161] [info] Checking required entities per dimension [2026-10-20 08:15:45.161] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.161] [info] Global index computation [2026-10-20 08:15:45.161] [info] Got 1 index_maps [2026-10-20 08:15:45.161] [info] Get global indices [2026-10-20 08:15:45.162] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.162] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.162] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.162] [info] Checking required entities per dimension [2026-10-20 08:15:45.162] [info] Cell type: 0 dofmap: 1250x15 [2026-10-20 08:15:45.163] [info] Global index computation [2026-10-20 08:15:45.163] [info] Got 3 index_maps [2026-10-20 08:15:45.163] [info] Get global indices [2026-10-20 08:15:45.163] [info] Compute edge permutations ______________________ test_singular_poisson[4-2-dtype0] _______________________ tensor = 2, degree = 4 dtype = (, ) @pytest.mark.parametrize("dtype", [(PETSc.RealType, PETSc.ScalarType)]) @pytest.mark.parametrize("tensor", [0, 1, 2]) @pytest.mark.parametrize("degree", range(1, 5)) def test_singular_poisson(tensor, degree, dtype): M = 25 rtype, stype = dtype mesh = dolfinx.mesh.create_unit_square( MPI.COMM_WORLD, M, M, dolfinx.mesh.CellType.triangle, dtype=rtype ) if tensor == 0: value_shape = () elif tensor == 1: value_shape = (2,) else: value_shape = (3, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_shape)) > R = scifem.create_real_functionspace(mesh, value_shape) tests/test_real_functionspace.py:101: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (3, 2) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.172] [info] Extract basic topology: 3750->3750 [2026-10-20 08:15:45.172] [info] Build local dual graph [2026-10-20 08:15:45.172] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.172] [info] GPS pseudo-diameter:(98) 1201-48 [2026-10-20 08:15:45.172] [info] Create topology (single cell type) [2026-10-20 08:15:45.172] [info] Create topology (generalised) [2026-10-20 08:15:45.172] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.172] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.172] [info] Compute ghost indices [2026-10-20 08:15:45.172] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.172] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.173] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.173] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.173] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.173] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.173] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.173] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.173] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.173] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.173] [info] Checking required entities per dimension [2026-10-20 08:15:45.173] [info] Cell type: 0 dofmap: 1250x3 [2026-10-20 08:15:45.173] [info] Global index computation [2026-10-20 08:15:45.173] [info] Got 1 index_maps [2026-10-20 08:15:45.173] [info] Get global indices [2026-10-20 08:15:45.174] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.174] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.174] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.174] [info] Checking required entities per dimension [2026-10-20 08:15:45.174] [info] Cell type: 0 dofmap: 1250x15 [2026-10-20 08:15:45.175] [info] Global index computation [2026-10-20 08:15:45.175] [info] Got 3 index_maps [2026-10-20 08:15:45.175] [info] Get global indices [2026-10-20 08:15:45.175] [info] Compute edge permutations __________________ test_complex_real_space[float32-complex64] __________________ ftype = , stype = @pytest.mark.parametrize("ftype, stype", [(np.float32, np.complex64), (np.float64, np.complex128)]) def test_complex_real_space(ftype, stype): mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 13, dtype=ftype) val = (2 + 3j, -4 + 5j) value_shape = (2,) > R = scifem.create_real_functionspace(mesh, value_shape=value_shape) tests/test_real_functionspace.py:216: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (2,) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) elif dtype == np.float32: > cppV = _scifem.create_real_functionspace_float32(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float32(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float32(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float32, tuple scifem/__init__.py:58: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.184] [info] Extract basic topology: 26->26 [2026-10-20 08:15:45.184] [info] Build local dual graph [2026-10-20 08:15:45.184] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.184] [info] GPS pseudo-diameter:(13) 12-0 [2026-10-20 08:15:45.184] [info] Create topology (single cell type) [2026-10-20 08:15:45.184] [info] Create topology (generalised) [2026-10-20 08:15:45.184] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.184] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.184] [info] Compute ghost indices [2026-10-20 08:15:45.184] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.184] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.184] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.184] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.184] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.184] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.184] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.184] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.184] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.184] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.184] [info] Checking required entities per dimension [2026-10-20 08:15:45.184] [info] Cell type: 0 dofmap: 13x2 [2026-10-20 08:15:45.184] [info] Global index computation [2026-10-20 08:15:45.184] [info] Got 1 index_maps [2026-10-20 08:15:45.184] [info] Get global indices _________________ test_complex_real_space[float64-complex128] __________________ ftype = , stype = @pytest.mark.parametrize("ftype, stype", [(np.float32, np.complex64), (np.float64, np.complex128)]) def test_complex_real_space(ftype, stype): mesh = dolfinx.mesh.create_unit_interval(MPI.COMM_WORLD, 13, dtype=ftype) val = (2 + 3j, -4 + 5j) value_shape = (2,) > R = scifem.create_real_functionspace(mesh, value_shape=value_shape) tests/test_real_functionspace.py:216: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ mesh = , value_shape = (2,) def create_real_functionspace( mesh: dolfinx.mesh.Mesh, value_shape: tuple[int, ...] = () ) -> dolfinx.fem.FunctionSpace: """Create a real function space. Args: mesh: The mesh the real space is defined on. value_shape: The shape of the values in the real space. Returns: The real valued function space. Note: For scalar elements value shape is ``()``. """ dtype = mesh.geometry.x.dtype ufl_e = basix.ufl.element( "P", mesh.basix_cell(), 0, dtype=dtype, discontinuous=True, shape=value_shape ) if (dtype := mesh.geometry.x.dtype) == np.float64: > cppV = _scifem.create_real_functionspace_float64(mesh._cpp_object, value_shape) E TypeError: create_real_functionspace_float64(): incompatible function arguments. The following argument types are supported: E 1. create_real_functionspace_float64(arg0: dolfinx::mesh::Mesh, arg1: collections.abc.Sequence[int], /) -> dolfinx::fem::FunctionSpace E E Invoked with types: dolfinx.cpp.mesh.Mesh_float64, tuple scifem/__init__.py:56: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.192] [info] Extract basic topology: 26->26 [2026-10-20 08:15:45.192] [info] Build local dual graph [2026-10-20 08:15:45.192] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.192] [info] GPS pseudo-diameter:(13) 12-0 [2026-10-20 08:15:45.192] [info] Create topology (single cell type) [2026-10-20 08:15:45.192] [info] Create topology (generalised) [2026-10-20 08:15:45.192] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.192] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.193] [info] Compute ghost indices [2026-10-20 08:15:45.193] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.193] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.193] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.193] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.193] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.193] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.193] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.193] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.193] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.193] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.193] [info] Checking required entities per dimension [2026-10-20 08:15:45.193] [info] Cell type: 0 dofmap: 13x2 [2026-10-20 08:15:45.193] [info] Global index computation [2026-10-20 08:15:45.193] [info] Got 1 index_maps [2026-10-20 08:15:45.193] [info] Get global indices ____________________ test_vertex_to_dofmap_P[value_size0-1] ____________________ degree = 1, value_size = () @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1323), Basix element (P, triangle, 1, gll_warped, unset, False, float64, [])) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.201] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.201] [info] Build local dual graph [2026-10-20 08:15:45.201] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.201] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.201] [info] Create topology (single cell type) [2026-10-20 08:15:45.201] [info] Create topology (generalised) [2026-10-20 08:15:45.201] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.201] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.201] [info] Compute ghost indices [2026-10-20 08:15:45.201] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.201] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.201] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.202] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.202] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.202] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.202] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.202] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.202] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.202] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.202] [info] Checking required entities per dimension [2026-10-20 08:15:45.202] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.202] [info] Global index computation [2026-10-20 08:15:45.202] [info] Got 1 index_maps [2026-10-20 08:15:45.202] [info] Get global indices [2026-10-20 08:15:45.202] [info] Checking required entities per dimension [2026-10-20 08:15:45.202] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.202] [info] Global index computation [2026-10-20 08:15:45.202] [info] Got 1 index_maps [2026-10-20 08:15:45.202] [info] Get global indices ____________________ test_vertex_to_dofmap_P[value_size0-2] ____________________ degree = 2, value_size = () @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1324), Basix element (P, triangle, 2, gll_warped, unset, False, float64, [])) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.206] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.206] [info] Build local dual graph [2026-10-20 08:15:45.206] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.206] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.206] [info] Create topology (single cell type) [2026-10-20 08:15:45.206] [info] Create topology (generalised) [2026-10-20 08:15:45.207] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.207] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.207] [info] Compute ghost indices [2026-10-20 08:15:45.207] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.207] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.207] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.207] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.207] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.207] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.207] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.207] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.207] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.207] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.207] [info] Checking required entities per dimension [2026-10-20 08:15:45.207] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.207] [info] Global index computation [2026-10-20 08:15:45.207] [info] Got 1 index_maps [2026-10-20 08:15:45.207] [info] Get global indices [2026-10-20 08:15:45.207] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.207] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.207] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.207] [info] Checking required entities per dimension [2026-10-20 08:15:45.207] [info] Cell type: 0 dofmap: 40x6 [2026-10-20 08:15:45.207] [info] Global index computation [2026-10-20 08:15:45.207] [info] Got 2 index_maps [2026-10-20 08:15:45.207] [info] Get global indices ____________________ test_vertex_to_dofmap_P[value_size0-3] ____________________ degree = 3, value_size = () @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1325), Basix element (P, triangle, 3, gll_warped, unset, False, float64, [])) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.212] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.212] [info] Build local dual graph [2026-10-20 08:15:45.212] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.212] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.212] [info] Create topology (single cell type) [2026-10-20 08:15:45.212] [info] Create topology (generalised) [2026-10-20 08:15:45.212] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.212] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.212] [info] Compute ghost indices [2026-10-20 08:15:45.212] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.212] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.212] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.212] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.212] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.212] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.212] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.212] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.212] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.212] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.212] [info] Checking required entities per dimension [2026-10-20 08:15:45.212] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.212] [info] Global index computation [2026-10-20 08:15:45.212] [info] Got 1 index_maps [2026-10-20 08:15:45.212] [info] Get global indices [2026-10-20 08:15:45.212] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.212] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.212] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.213] [info] Checking required entities per dimension [2026-10-20 08:15:45.213] [info] Cell type: 0 dofmap: 40x10 [2026-10-20 08:15:45.213] [info] Global index computation [2026-10-20 08:15:45.213] [info] Got 3 index_maps [2026-10-20 08:15:45.213] [info] Get global indices [2026-10-20 08:15:45.213] [info] Compute edge permutations ____________________ test_vertex_to_dofmap_P[value_size1-1] ____________________ degree = 1, value_size = (2,) @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1326), blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,))) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.217] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.217] [info] Build local dual graph [2026-10-20 08:15:45.217] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.217] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.217] [info] Create topology (single cell type) [2026-10-20 08:15:45.217] [info] Create topology (generalised) [2026-10-20 08:15:45.217] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.217] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.217] [info] Compute ghost indices [2026-10-20 08:15:45.217] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.217] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.217] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.217] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.217] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.217] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.217] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.217] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.217] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.217] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.217] [info] Checking required entities per dimension [2026-10-20 08:15:45.217] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.217] [info] Global index computation [2026-10-20 08:15:45.217] [info] Got 1 index_maps [2026-10-20 08:15:45.217] [info] Get global indices [2026-10-20 08:15:45.218] [info] Checking required entities per dimension [2026-10-20 08:15:45.218] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.218] [info] Global index computation [2026-10-20 08:15:45.218] [info] Got 1 index_maps [2026-10-20 08:15:45.218] [info] Get global indices ____________________ test_vertex_to_dofmap_P[value_size1-2] ____________________ degree = 2, value_size = (2,) @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1327), blocked element (Basix element (P, triangle, 2, gll_warped, unset, False, float64, []), (2,))) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.222] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.222] [info] Build local dual graph [2026-10-20 08:15:45.222] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.222] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.222] [info] Create topology (single cell type) [2026-10-20 08:15:45.222] [info] Create topology (generalised) [2026-10-20 08:15:45.222] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.222] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.222] [info] Compute ghost indices [2026-10-20 08:15:45.222] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.222] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.222] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.222] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.222] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.222] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.222] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.222] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.222] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.222] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.222] [info] Checking required entities per dimension [2026-10-20 08:15:45.222] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.222] [info] Global index computation [2026-10-20 08:15:45.222] [info] Got 1 index_maps [2026-10-20 08:15:45.222] [info] Get global indices [2026-10-20 08:15:45.223] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.223] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.223] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.223] [info] Checking required entities per dimension [2026-10-20 08:15:45.223] [info] Cell type: 0 dofmap: 40x6 [2026-10-20 08:15:45.223] [info] Global index computation [2026-10-20 08:15:45.223] [info] Got 2 index_maps [2026-10-20 08:15:45.223] [info] Get global indices ____________________ test_vertex_to_dofmap_P[value_size1-3] ____________________ degree = 3, value_size = (2,) @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1328), blocked element (Basix element (P, triangle, 3, gll_warped, unset, False, float64, []), (2,))) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.227] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.227] [info] Build local dual graph [2026-10-20 08:15:45.227] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.227] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.227] [info] Create topology (single cell type) [2026-10-20 08:15:45.227] [info] Create topology (generalised) [2026-10-20 08:15:45.227] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.227] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.227] [info] Compute ghost indices [2026-10-20 08:15:45.227] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.227] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.227] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.227] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.227] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.227] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.227] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.227] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.227] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.227] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.227] [info] Checking required entities per dimension [2026-10-20 08:15:45.227] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.227] [info] Global index computation [2026-10-20 08:15:45.227] [info] Got 1 index_maps [2026-10-20 08:15:45.227] [info] Get global indices [2026-10-20 08:15:45.228] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.228] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.228] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.228] [info] Checking required entities per dimension [2026-10-20 08:15:45.228] [info] Cell type: 0 dofmap: 40x10 [2026-10-20 08:15:45.228] [info] Global index computation [2026-10-20 08:15:45.228] [info] Got 3 index_maps [2026-10-20 08:15:45.228] [info] Get global indices [2026-10-20 08:15:45.228] [info] Compute edge permutations ____________________ test_vertex_to_dofmap_P[value_size2-1] ____________________ degree = 1, value_size = (2, 3) @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1329), blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2, 3))) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.233] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.233] [info] Build local dual graph [2026-10-20 08:15:45.233] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.233] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.233] [info] Create topology (single cell type) [2026-10-20 08:15:45.233] [info] Create topology (generalised) [2026-10-20 08:15:45.233] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.233] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.234] [info] Compute ghost indices [2026-10-20 08:15:45.234] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.234] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.234] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.234] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.234] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.234] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.234] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.234] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.234] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.234] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.234] [info] Checking required entities per dimension [2026-10-20 08:15:45.234] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.234] [info] Global index computation [2026-10-20 08:15:45.234] [info] Got 1 index_maps [2026-10-20 08:15:45.234] [info] Get global indices [2026-10-20 08:15:45.234] [info] Checking required entities per dimension [2026-10-20 08:15:45.234] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.234] [info] Global index computation [2026-10-20 08:15:45.234] [info] Got 1 index_maps [2026-10-20 08:15:45.234] [info] Get global indices ____________________ test_vertex_to_dofmap_P[value_size2-2] ____________________ degree = 2, value_size = (2, 3) @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1330), blocked element (Basix element (P, triangle, 2, gll_warped, unset, False, float64, []), (2, 3))) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.239] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.239] [info] Build local dual graph [2026-10-20 08:15:45.239] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.239] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.239] [info] Create topology (single cell type) [2026-10-20 08:15:45.239] [info] Create topology (generalised) [2026-10-20 08:15:45.239] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.239] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.239] [info] Compute ghost indices [2026-10-20 08:15:45.239] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.239] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.239] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.239] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.239] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.239] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.239] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.239] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.239] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.239] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.239] [info] Checking required entities per dimension [2026-10-20 08:15:45.239] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.239] [info] Global index computation [2026-10-20 08:15:45.239] [info] Got 1 index_maps [2026-10-20 08:15:45.239] [info] Get global indices [2026-10-20 08:15:45.239] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.239] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.239] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.240] [info] Checking required entities per dimension [2026-10-20 08:15:45.240] [info] Cell type: 0 dofmap: 40x6 [2026-10-20 08:15:45.240] [info] Global index computation [2026-10-20 08:15:45.240] [info] Got 2 index_maps [2026-10-20 08:15:45.240] [info] Get global indices ____________________ test_vertex_to_dofmap_P[value_size2-3] ____________________ degree = 3, value_size = (2, 3) @pytest.mark.parametrize("degree", range(1, 4)) @pytest.mark.parametrize("value_size", [(), (2,), (2, 3)]) def test_vertex_to_dofmap_P(degree, value_size): mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 2) V = dolfinx.fem.functionspace(mesh, ("Lagrange", degree, value_size)) > v_to_d = vertex_to_dofmap(V) tests/test_vertex_to_dofmap.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ V = FunctionSpace(Mesh(blocked element (Basix element (P, triangle, 1, gll_warped, unset, False, float64, []), (2,)), 1331), blocked element (Basix element (P, triangle, 3, gll_warped, unset, False, float64, []), (2, 3))) def vertex_to_dofmap(V: dolfinx.fem.FunctionSpace) -> npt.NDArray[np.int32]: """ Create a map from the vertices (local to the process) to the correspondning degrees of freedom. Args: V: The function space Returns: An array mapping local vertex i to local degree of freedom Note: If using a blocked space this map is not unrolled for the DofMap block size. """ > return _scifem.vertex_to_dofmap(V.mesh._cpp_object.topology, V.dofmap._cpp_object) E TypeError: vertex_to_dofmap(): incompatible function arguments. The following argument types are supported: E 1. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E 2. vertex_to_dofmap(arg0: dolfinx::mesh::Topology, arg1: dolfinx::fem::DofMap, /) -> numpy.ndarray[dtype=int32] E E Invoked with types: dolfinx.cpp.mesh.Topology, dolfinx.cpp.fem.DofMap scifem/__init__.py:78: TypeError ----------------------------- Captured stdout call ----------------------------- [2026-10-20 08:15:45.244] [info] Extract basic topology: 120->120 [2026-10-20 08:15:45.244] [info] Build local dual graph [2026-10-20 08:15:45.244] [info] Build local part of mesh dual graph (mixed) [2026-10-20 08:15:45.244] [info] GPS pseudo-diameter:(22) 21-18 [2026-10-20 08:15:45.244] [info] Create topology (single cell type) [2026-10-20 08:15:45.244] [info] Create topology (generalised) [2026-10-20 08:15:45.244] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 1 [2026-10-20 08:15:45.244] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 1 [2026-10-20 08:15:45.244] [info] Compute ghost indices [2026-10-20 08:15:45.244] [info] Computing communication graph edges (using PCX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.244] [info] Finished graph edge discovery using PCX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.244] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.244] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.244] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.244] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.244] [info] Number of neighbourhood source ranks in distribute_to_postoffice: 0 [2026-10-20 08:15:45.244] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.244] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.244] [info] Neighbourhood destination ranks from post office in distribute_data (rank, num dests, num dests/mpi_size): 0, 0, 0 [2026-10-20 08:15:45.244] [info] Checking required entities per dimension [2026-10-20 08:15:45.244] [info] Cell type: 0 dofmap: 40x3 [2026-10-20 08:15:45.244] [info] Global index computation [2026-10-20 08:15:45.244] [info] Got 1 index_maps [2026-10-20 08:15:45.244] [info] Get global indices [2026-10-20 08:15:45.245] [info] Computing mesh entities of dimension 1 [2026-10-20 08:15:45.245] [info] Computing communication graph edges (using NBX algorithm). Number of input edges: 0 [2026-10-20 08:15:45.245] [info] Finished graph edge discovery using NBX algorithm. Number of discovered edges 0 [2026-10-20 08:15:45.245] [info] Checking required entities per dimension [2026-10-20 08:15:45.245] [info] Cell type: 0 dofmap: 40x10 [2026-10-20 08:15:45.245] [info] Global index computation [2026-10-20 08:15:45.245] [info] Got 3 index_maps [2026-10-20 08:15:45.245] [info] Get global indices [2026-10-20 08:15:45.245] [info] Compute edge permutations =============================== warnings summary =============================== tests/test_point_source.py::test_midpoint /usr/lib/python3/dist-packages/ufl/utils/sorting.py:88: UserWarning: Applying str() to a metadata value of type ndarray, don't know if this is safe. warnings.warn( tests/test_xdmf.py: 60 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/scifem/xdmf.py:420: UserWarning: ADIOS2 not available, using h5py warnings.warn(msg) tests/test_xdmf.py: 12 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/tests/test_xdmf.py:256: DeprecationWarning: ('Call to deprecated function create_pointcloud.', 'Please use the class scifem.xdmf.XDMFFile instead.') scifem.xdmf.create_pointcloud(folder / "data.xdmf", [u, v]) tests/test_xdmf.py: 36 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/scifem/xdmf.py:368: DeprecationWarning: ('Call to deprecated function write_xdmf.', 'Please use the class scifem.xdmf.XDMFFile instead.') write_xdmf(functions, filename, h5name, data) tests/test_xdmf.py: 36 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/scifem/xdmf.py:371: DeprecationWarning: ('Call to deprecated function write_hdf5_adios.', 'Please use the class scifem.xdmf.XDMFFile instead.') write_hdf5_adios(functions=functions, h5name=h5name, data=data) tests/test_xdmf.py: 36 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/scifem/xdmf.py:40: UserWarning: ADIOS2 not available, using h5py return func(*args, **kwargs) tests/test_xdmf.py: 36 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/scifem/xdmf.py:374: DeprecationWarning: ('Call to deprecated function write_hdf5_h5py.', 'Please use the class scifem.xdmf.XDMFFile instead.') write_hdf5_h5py(functions=functions, h5name=h5name, data=data) tests/test_xdmf.py: 12 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/tests/test_xdmf.py:287: DeprecationWarning: ('Call to deprecated function create_pointcloud.', 'Please use the class scifem.xdmf.XDMFFile instead.') scifem.xdmf.create_pointcloud(folder / "data.xdmf", [u, v]) tests/test_xdmf.py::test_different_function_spaces_raises_ValueError /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/tests/test_xdmf.py:301: DeprecationWarning: ('Call to deprecated function create_pointcloud.', 'Please use the class scifem.xdmf.XDMFFile instead.') scifem.xdmf.create_pointcloud( tests/test_xdmf.py: 12 warnings /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build/tests/test_xdmf.py:335: DeprecationWarning: ('Call to deprecated function create_pointcloud.', 'Please use the class scifem.xdmf.XDMFFile instead.') scifem.xdmf.create_pointcloud(folder / "data.xdmf", [u, v]) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_mesh.py::test_submesh_meshtags[0] - TypeError: transfer_mes... FAILED tests/test_mesh.py::test_submesh_meshtags[1] - TypeError: transfer_mes... FAILED tests/test_mesh.py::test_submesh_meshtags[2] - TypeError: transfer_mes... FAILED tests/test_mesh.py::test_submesh_meshtags[3] - TypeError: transfer_mes... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-1-0] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-1-1] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-2-0] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-2-1] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-2-2] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-3-0] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-3-1] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.none-3-2] - TypeErr... FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-1-0] FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-1-1] FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-2-0] FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-2-1] FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-2-2] FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-3-0] FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-3-1] FAILED tests/test_mesh.py::test_submesh_creator[GhostMode.shared_facet-3-2] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.none-float64] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.none-float32] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.shared_facet-float64] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.tetrahedron-GhostMode.shared_facet-float32] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.none-float64] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.none-float32] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.shared_facet-float64] FAILED tests/test_mesh.py::test_exterior_boundary_subdomain[CellType.hexahedron-GhostMode.shared_facet-float32] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-1.3-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-1.3-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-1.3-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-0.8-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-0.8-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-0.8-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-0.2-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-0.2-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.triangle-0.2-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-1.3-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-1.3-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-1.3-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-0.8-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-0.8-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-0.8-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-0.2-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-0.2-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float64-CellType.quadrilateral-0.2-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-1.3-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-1.3-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-1.3-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-0.8-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-0.8-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-0.8-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-0.2-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-0.2-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.triangle-0.2-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-1.3-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-1.3-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-1.3-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-0.8-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-0.8-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-0.8-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-0.2-0.1] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-0.2-0.2] FAILED tests/test_real_functionspace.py::test_real_function_space_mass[float32-CellType.quadrilateral-0.2-0.3] FAILED tests/test_real_functionspace.py::test_real_function_space_vector[CellType.tetrahedron-float64] FAILED tests/test_real_functionspace.py::test_real_function_space_vector[CellType.tetrahedron-float32] FAILED tests/test_real_functionspace.py::test_real_function_space_vector[CellType.hexahedron-float64] FAILED tests/test_real_functionspace.py::test_real_function_space_vector[CellType.hexahedron-float32] FAILED tests/test_real_functionspace.py::test_singular_poisson[1-0-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[1-1-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[1-2-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[2-0-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[2-1-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[2-2-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[3-0-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[3-1-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[3-2-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[4-0-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[4-1-dtype0] - ... FAILED tests/test_real_functionspace.py::test_singular_poisson[4-2-dtype0] - ... FAILED tests/test_real_functionspace.py::test_complex_real_space[float32-complex64] FAILED tests/test_real_functionspace.py::test_complex_real_space[float64-complex128] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size0-1] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size0-2] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size0-3] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size1-1] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size1-2] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size1-3] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size2-1] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size2-2] FAILED tests/test_vertex_to_dofmap.py::test_vertex_to_dofmap_P[value_size2-3] ===== 91 failed, 1370 passed, 6 skipped, 6 xfailed, 242 warnings in 49.96s ===== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/scifem-0.6.0/.pybuild/cpython3_3.13_scifem/build; python3.13 -m pytest tests dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13 make: *** [debian/rules:10: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 I: copying local configuration E: Failed autobuilding of package I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/410781 and its subdirectories scifem failed to build from source. removed '/var/lib/jenkins/userContent/reproducible/debian/rbuild/forky/arm64/scifem_0.6.0-2.rbuild.log' removed '/var/lib/jenkins/userContent/reproducible/debian/rbuild/forky/arm64/scifem_0.6.0-2.rbuild.log.gz' removed '/var/lib/jenkins/userContent/reproducible/debian/logs/forky/arm64/scifem_0.6.0-2.build1.log.gz' Wed Sep 17 13:53:01 UTC 2025 W: No second build log, what happened? Compressing the 1st log... b1/build.log: 93.1% -- replaced with stdout INSERT 0 1 INSERT 0 1 DELETE 1 [2025-09-17 13:53:01] INFO: Starting at 2025-09-17 13:53:01.845117 [2025-09-17 13:53:01] INFO: Generating the pages of 1 package(s) [2025-09-17 13:53:02] CRITICAL: https://tests.reproducible-builds.org/debian/forky/arm64/scifem didn't produce a buildlog, even though it has been built. [2025-09-17 13:53:02] INFO: Finished at 2025-09-17 13:53:02.021447, took: 0:00:00.176333 Wed Sep 17 13:53:02 UTC 2025 - successfully updated the database and updated https://tests.reproducible-builds.org/debian/rb-pkg/forky/arm64/scifem.html Starting cleanup. /var/lib/jenkins/userContent/reproducible/debian/rbuild/forky/arm64/scifem_0.6.0-2.rbuild.log: 92.9% -- replaced with /var/lib/jenkins/userContent/reproducible/debian/rbuild/forky/arm64/scifem_0.6.0-2.rbuild.log.gz [2025-09-17 13:53:02] INFO: Starting at 2025-09-17 13:53:02.374368 [2025-09-17 13:53:02] INFO: Generating the pages of 1 package(s) [2025-09-17 13:53:02] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/forky/arm64/scifem_0.6.0-2.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/forky/arm64/scifem_0.6.0-2.diff.gz is missing [2025-09-17 13:53:02] INFO: Finished at 2025-09-17 13:53:02.549137, took: 0:00:00.174772 All cleanup done. Wed Sep 17 13:53:02 UTC 2025 - total duration: 0h 3m 39s. Wed Sep 17 13:53:02 UTC 2025 - reproducible_build.sh stopped running as /tmp/jenkins-script-uYeLowfr, removing. Finished with result: success Main processes terminated with: code=exited, status=0/SUCCESS Service runtime: 3min 40.031s CPU time consumed: 2.480s Memory peak: 38.7M (swap: 0B)