# XDMFFile in DolfinX

**URL:** <https://fenicsproject.discourse.group/t/xdmffile-in-dolfinx/14193>\
**Category:** General\
**Created:** [April 10, 2024, 2:49pm UTC](https://fenicsproject.discourse.group/t/xdmffile-in-dolfinx/14193 "2024-04-10T14:49:56Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Olafur](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/olafur/32/6668_2.png) [@Olafur](https://fenicsproject.discourse.group/u/Olafur)\
**Post date:** [April 10, 2024, 2:49pm UTC](https://fenicsproject.discourse.group/t/xdmffile-in-dolfinx/14193/1 "2024-04-10T14:49:56Z")

</div>

I’m trying to migrate provided code from dolfin to dolfinx.

When exporting group meshes from FreeCAD I save them as .xdmf files  
Using dolfin I can read .xdmf files using

```auto
meshfile = meshpath+"mesh.xdmf"
mesh = Mesh()
with XDMFFile(meshfile) as infile:
    infile.read(mesh)

```

In [this tutorial](https://github.com/jorgensd/dolfinx-tutorial/blob/v0.4.0/chapter3/subdomains.ipynb) there is this snippet

```auto
with XDMFFile(MPI.COMM_WORLD, "mesh.xdmf", "r") as xdmf:
    mesh = xdmf.read_mesh(name="Grid")
    ct = xdmf.read_meshtags(mesh, name="Grid")
mesh.topology.create_connectivity(mesh.topology.dim, mesh.topology.dim-1)
with XDMFFile(MPI.COMM_WORLD, "mt.xdmf", "r") as xdmf:
    ft = xdmf.read_meshtags(mesh, name="Grid")

```

But when I try to run this I get the traceback that there is a missing .h5 file.

```auto
    with XDMFFile(MPI.COMM_WORLD, meshfile, "r") as xdmf:
RuntimeError: Unable to open HDF5 file. File mesh.h5 does not exist.

```

Default encoding is [HDF5](https://fenicsproject.org/olddocs/dolfinx/dev/cpp/d9/d9e/classdolfinx_1_1io_1_1XDMFFile.html#ad40f60940b55f05a8b15d5667035bd85), should I be changing that to ASCII or am I on the wrong track?

Regards  
Ólafur Marteinsson

---

<div class="post-metadata">

**Author:** ![dokken](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/dokken/32/1560_2.png) [@dokken](https://fenicsproject.discourse.group/u/dokken)\
**Post date:** [April 10, 2024, 4:18pm UTC](https://fenicsproject.discourse.group/t/xdmffile-in-dolfinx/14193/2 "2024-04-10T16:18:31Z")

</div>

Could you share the content of your xdmf-file? Does it contain all the arrays in plain-text? If so you should read it with ascii encoding

---

<div class="post-metadata">

**Author:** ![Olafur](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/olafur/32/6668_2.png) [@Olafur](https://fenicsproject.discourse.group/u/Olafur)\
**Post date:** [April 10, 2024, 4:52pm UTC](https://fenicsproject.discourse.group/t/xdmffile-in-dolfinx/14193/3 "2024-04-10T16:52:52Z")

</div>

Thank you for looking into my issue.  
.xdmf file can be found [here](https://uppsalauniversitet-my.sharepoint.com/:u:/g/personal/olafur_marteinsson_3001_student_uu_se/EZizfku4YdJFlOrLPtRwuEsBjs6kgJ1drIqIQAFm_6nvCg?e=5rldAT)

Here are the first few lines of the .xdmf file

```auto
<?xml version="1.0"?>
<!DOCTYPE Xdmf SYSTEM "Xdmf.dtd" []>
<Xdmf Version="3.0"><Domain><Grid Name="base_mesh" GridType="Uniform"><Topology TopologyType="Tetrahedron" NumberOfElements="6071" NodesPerElement="4"><DataItem NumberType="UInt" Dimensions="6071 4" Format="XML">667 1145 1013 1183
161 201 741 1090
995 590 1200 1379
995 1200 590 1425
1017 330 1190 1353
946 1020 1289 1347

```

MWE since I didn’t include it in my original post.

````auto
import numpy as np
from mpi4py import MPI
from petsc4py import PETSc
from dolfinx import geometry
from dolfinx.io import gmshio, XDMFFile
from dolfinx.fem import FunctionSpace, Function, Constant
from dolfinx.fem.petsc import LinearProblem
import ufl
from ufl import dx, grad, inner, ds, Measure

with XDMFFile(MPI.COMM_WORLD, "mesh.xdmf", "r") as xdmf:```
````

---

<div class="post-metadata">

**Author:** ![dokken](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/dokken/32/1560_2.png) [@dokken](https://fenicsproject.discourse.group/u/dokken)\
**Post date:** [April 10, 2024, 5:06pm UTC](https://fenicsproject.discourse.group/t/xdmffile-in-dolfinx/14193/4 "2024-04-10T17:06:32Z")

</div>

I would try to use the ascii encoding mode.

---

<div class="post-metadata">

**Author:** ![Olafur](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/olafur/32/6668_2.png) [@Olafur](https://fenicsproject.discourse.group/u/Olafur)\
**Post date:** [April 10, 2024, 6:41pm UTC](https://fenicsproject.discourse.group/t/xdmffile-in-dolfinx/14193/5 "2024-04-10T18:41:11Z")

</div>

I have to ask since I can not figure it out by myself.  
How do I change the encoding mode?

```auto
dolfinx.cpp.io.XDMFFile(comm: MPICommWrapper, filename: os.PathLike, file_mode: str, encoding: dolfinx.cpp.io.XDMFFile.Encoding = <Encoding.HDF5: 0>)

```

> [@Saving an xdmf file - dolfinx v 0.7.0](https://fenicsproject.discourse.group/t/saving-an-xdmf-file-dolfinx-v-0-7-0/13676/4):
>
> If you want to store just a single file, you can change the encoding to `dolfinx.io.XDMFFile.Encoding.ASCII` (it is a keyword arg to the init function of XDMFFile).

---

<div class="post-metadata">

**Author:** ![dokken](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/dokken/32/1560_2.png) [@dokken](https://fenicsproject.discourse.group/u/dokken)\
**Post date:** [April 10, 2024, 7:32pm UTC](https://fenicsproject.discourse.group/t/xdmffile-in-dolfinx/14193/6 "2024-04-10T19:32:34Z")

</div>

For instance with

```python
with dolfinx.io.XDMFFile(mesh.comm, "mesh.xdmf", "r", encoding=dolfinx.io.XDMFFile.Encoding.ASCII) as infile:
    mesh = infile.read_mesh(name="base_mesh")

```

---

<div class="post-metadata">

**Author:** ![learna](https://avatars.discourse-cdn.com/v4/letter/l/71e660/32.png) [@learna](https://fenicsproject.discourse.group/u/learna)\
**Post date:** [February 26, 2025, 8:08am UTC](https://fenicsproject.discourse.group/t/xdmffile-in-dolfinx/14193/7 "2025-02-26T08:08:40Z")

</div>

I have the same problem. Here is my xdmf file - [Download mesh.xdmf | LimeWire](https://limewire.com/d/c4607e03-ddcb-4264-b5c3-5be997e9f030#CuablpCWpwNEOMmR4MDoyMTauFbvMhIh3xxXHvCdIiA)

My xmdf file code is given below. The above solution does not work

```auto
<Xdmf Version="3.0"><Domain><Grid Name="Grid"><Geometry GeometryType="XY"><DataItem DataType="Float" Dimensions="15540 2" Format="HDF" Precision="8">mesh.h5:/data0</DataItem></Geometry><Topology TopologyType="Triangle" NumberOfElements="30546" NodesPerElement="3"><DataItem DataType="Int" Dimensions="30546 3" Format="HDF" Precision="8">mesh.h5:/data1</DataItem></Topology></Grid></Domain></Xdmf>

```

---

<div class="post-metadata">

**Author:** ![dokken](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/dokken/32/1560_2.png) [@dokken](https://fenicsproject.discourse.group/u/dokken)\
**Post date:** [February 26, 2025, 10:21am UTC](https://fenicsproject.discourse.group/t/xdmffile-in-dolfinx/14193/8 "2025-02-26T10:21:32Z")

</div>

The XDMFFile is not sufficient without the hdf5 file. How did you generate this xdmf file ?

---

<div class="post-metadata">

**Author:** ![learna](https://avatars.discourse-cdn.com/v4/letter/l/71e660/32.png) [@learna](https://fenicsproject.discourse.group/u/learna)\
**Post date:** [February 26, 2025, 11:35am UTC](https://fenicsproject.discourse.group/t/xdmffile-in-dolfinx/14193/9 "2025-02-26T11:35:21Z")

</div>

Oh, thanks. I discovered the h5 file is in the same folder as the generated xdmf.
