diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1db3ecadc3600d8818dab252ebfe8a1d0e3daef5..69b4ec8043412daca0b04fa303133da95dc95e4e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -98,7 +98,7 @@ stages:
 
 icc_2022_serial:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/icc-2022:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/icc-2022:32
    variables:
       WALBERLA_BUILD_WITH_CUDA: "ON"
       WALBERLA_BUILD_WITH_MPI: "OFF"
@@ -114,7 +114,7 @@ icc_2022_serial:
 
 icc_2022_mpionly:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/icc-2022:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/icc-2022:32
    variables:
       WALBERLA_BUILD_WITH_CUDA: "ON"
       WALBERLA_BUILD_WITH_OPENMP: "OFF"
@@ -128,7 +128,7 @@ icc_2022_mpionly:
 
 icc_2022_hybrid:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/icc-2022:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/icc-2022:32
    variables:
       WALBERLA_BUILD_WITH_CUDA: "ON"
       WARNING_ERROR: "OFF"
@@ -138,7 +138,7 @@ icc_2022_hybrid:
 
 icc_2022_serial_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/icc-2022:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/icc-2022:32
    variables:
       WALBERLA_BUILD_WITH_CUDA: "ON"
       WALBERLA_BUILD_WITH_MPI: "OFF"
@@ -152,7 +152,7 @@ icc_2022_serial_dbg:
 
 icc_2022_mpionly_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/icc-2022:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/icc-2022:32
    variables:
       WALBERLA_BUILD_WITH_CUDA: "ON"
       CMAKE_BUILD_TYPE: "DebugOptimized"
@@ -164,7 +164,7 @@ icc_2022_mpionly_dbg:
 
 icc_2022_hybrid_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/icc-2022:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/icc-2022:32
    variables:
       WALBERLA_BUILD_WITH_CUDA: "ON"
       CMAKE_BUILD_TYPE: "DebugOptimized"
@@ -175,7 +175,7 @@ icc_2022_hybrid_dbg:
 
 icc_2022_hybrid_dbg_sp:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/icc-2022:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/icc-2022:32
    variables:
       WALBERLA_BUILD_WITH_CUDA: "ON"
       CMAKE_BUILD_TYPE: "DebugOptimized"
@@ -187,9 +187,9 @@ icc_2022_hybrid_dbg_sp:
       - cuda11
       - docker
 
-icx_2023_serial:
+icx_2024_serial:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/icx-2023:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/icx-2024:32
    variables:
       WALBERLA_BUILD_WITH_CUDA: "ON"
       WALBERLA_BUILD_WITH_MPI: "OFF"
@@ -202,9 +202,9 @@ icx_2023_serial:
       - cuda11
       - docker
 
-icx_2023_mpionly:
+icx_2024_mpionly:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/icx-2023:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/icx-2024:32
    variables:
       WALBERLA_BUILD_WITH_CUDA: "ON"
       WALBERLA_BUILD_WITH_OPENMP: "OFF"
@@ -215,18 +215,18 @@ icx_2023_mpionly:
       - cuda11
       - docker
 
-icx_2023_hybrid:
+icx_2024_hybrid:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/icx-2023:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/icx-2024:32
    variables:
       WALBERLA_BUILD_WITH_CUDA: "ON"
    tags:
       - cuda11
       - docker
 
-icx_2023_serial_dbg:
+icx_2024_serial_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/icx-2023:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/icx-2024:32
    variables:
       WALBERLA_BUILD_WITH_CUDA: "ON"
       WALBERLA_BUILD_WITH_MPI: "OFF"
@@ -237,9 +237,9 @@ icx_2023_serial_dbg:
       - cuda11
       - docker
 
-icx_2023_mpionly_dbg:
+icx_2024_mpionly_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/icx-2023:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/icx-2024:32
    variables:
       WALBERLA_BUILD_WITH_CUDA: "ON"
       CMAKE_BUILD_TYPE: "DebugOptimized"
@@ -248,9 +248,9 @@ icx_2023_mpionly_dbg:
       - cuda11
       - docker
 
-icx_2023_hybrid_dbg:
+icx_2024_hybrid_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/icx-2023:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/icx-2024:32
    variables:
       WALBERLA_BUILD_WITH_CUDA: "ON"
       CMAKE_BUILD_TYPE: "DebugOptimized"
@@ -258,9 +258,9 @@ icx_2023_hybrid_dbg:
       - cuda11
       - docker
 
-icx_2023_hybrid_dbg_sp:
+icx_2024_hybrid_dbg_sp:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/icx-2023:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/icx-2024:32
    variables:
       WALBERLA_BUILD_WITH_CUDA: "ON"
       CMAKE_BUILD_TYPE: "DebugOptimized"
@@ -273,7 +273,7 @@ icx_2023_hybrid_dbg_sp:
 
 gcc_10_serial:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-10:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-10:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -302,7 +302,7 @@ gcc_10_serial:
 
 gcc_10_mpionly:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-10:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-10:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -329,7 +329,7 @@ gcc_10_mpionly:
 
 gcc_10_hybrid:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-10:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-10:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -355,7 +355,7 @@ gcc_10_hybrid:
 
 gcc_10_serial_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-10:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-10:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -385,7 +385,7 @@ gcc_10_serial_dbg:
 
 gcc_10_mpionly_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-10:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-10:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -413,7 +413,7 @@ gcc_10_mpionly_dbg:
 
 gcc_10_hybrid_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-10:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-10:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -437,7 +437,7 @@ gcc_10_hybrid_dbg:
 
 gcc_10_hybrid_dbg_sp:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-10:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-10:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -467,7 +467,7 @@ gcc_10_hybrid_dbg_sp:
 
 gcc_11_serial:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-11:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-11:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -496,7 +496,7 @@ gcc_11_serial:
 
 gcc_11_mpionly:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-11:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-11:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -523,7 +523,7 @@ gcc_11_mpionly:
 
 gcc_11_hybrid:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-11:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-11:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -549,7 +549,7 @@ gcc_11_hybrid:
 
 gcc_11_serial_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-11:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-11:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -579,7 +579,7 @@ gcc_11_serial_dbg:
 
 gcc_11_mpionly_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-11:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-11:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -607,7 +607,7 @@ gcc_11_mpionly_dbg:
 
 gcc_11_hybrid_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-11:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-11:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -634,7 +634,7 @@ gcc_11_hybrid_dbg:
 
 gcc_11_hybrid_dbg_sp:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-11:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-11:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -664,7 +664,7 @@ gcc_11_hybrid_dbg_sp:
 
 gcc_12_serial:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-12:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-12:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -693,7 +693,7 @@ gcc_12_serial:
 
 gcc_12_mpionly:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-12:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-12:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -720,7 +720,7 @@ gcc_12_mpionly:
 
 gcc_12_hybrid:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-12:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-12:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -746,7 +746,7 @@ gcc_12_hybrid:
 
 gcc_12_serial_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-12:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-12:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -776,7 +776,7 @@ gcc_12_serial_dbg:
 
 gcc_12_mpionly_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-12:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-12:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -804,7 +804,7 @@ gcc_12_mpionly_dbg:
 
 gcc_12_hybrid_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-12:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-12:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -831,7 +831,7 @@ gcc_12_hybrid_dbg:
 
 gcc_12_hybrid_dbg_sp:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-12:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-12:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -861,7 +861,7 @@ gcc_12_hybrid_dbg_sp:
 
 gcc_13_serial:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-13:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-13:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -891,7 +891,7 @@ gcc_13_serial:
 
 gcc_13_mpionly:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-13:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-13:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -919,7 +919,7 @@ gcc_13_mpionly:
 
 gcc_13_hybrid:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-13:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-13:32
    stage: pretest
    before_script:
       - python3 -m venv ci-venv
@@ -944,7 +944,7 @@ gcc_13_hybrid:
 
 gcc_13_serial_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-13:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-13:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -972,7 +972,7 @@ gcc_13_serial_dbg:
 
 gcc_13_mpionly_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-13:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-13:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -998,7 +998,7 @@ gcc_13_mpionly_dbg:
 
 gcc_13_hybrid_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-13:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-13:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1023,7 +1023,7 @@ gcc_13_hybrid_dbg:
 
 gcc_13_hybrid_dbg_sp:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-13:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc-13:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1051,7 +1051,7 @@ gcc_13_hybrid_dbg_sp:
 
 clang_14_serial:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-14:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-14:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1080,7 +1080,7 @@ clang_14_serial:
 
 clang_14_mpionly:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-14:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-14:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1107,7 +1107,7 @@ clang_14_mpionly:
 
 clang_14_hybrid:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-14:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-14:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1133,7 +1133,7 @@ clang_14_hybrid:
 
 clang_14_serial_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-14:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-14:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1163,7 +1163,7 @@ clang_14_serial_dbg:
 
 clang_14_mpionly_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-14:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-14:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1191,7 +1191,7 @@ clang_14_mpionly_dbg:
 
 clang_14_hybrid_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-14:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-14:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1215,7 +1215,7 @@ clang_14_hybrid_dbg:
 
 clang_14_hybrid_dbg_sp:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-14:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-14:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1245,7 +1245,7 @@ clang_14_hybrid_dbg_sp:
 
 clang_15_serial:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-15:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-15:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1274,7 +1274,7 @@ clang_15_serial:
 
 clang_15_mpionly:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-15:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-15:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1301,7 +1301,7 @@ clang_15_mpionly:
 
 clang_15_hybrid:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-15:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-15:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1327,7 +1327,7 @@ clang_15_hybrid:
 
 clang_15_serial_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-15:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-15:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1357,7 +1357,7 @@ clang_15_serial_dbg:
 
 clang_15_mpionly_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-15:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-15:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1385,7 +1385,7 @@ clang_15_mpionly_dbg:
 
 clang_15_hybrid_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-15:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-15:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1412,7 +1412,7 @@ clang_15_hybrid_dbg:
 
 clang_15_hybrid_dbg_sp:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-15:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-15:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1442,7 +1442,7 @@ clang_15_hybrid_dbg_sp:
 
 clang_16_serial:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-16:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-16:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1471,7 +1471,7 @@ clang_16_serial:
 
 clang_16_mpionly:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-16:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-16:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1498,7 +1498,7 @@ clang_16_mpionly:
 
 clang_16_hybrid:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-16:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-16:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1524,7 +1524,7 @@ clang_16_hybrid:
 
 clang_16_serial_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-16:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-16:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1554,7 +1554,7 @@ clang_16_serial_dbg:
 
 clang_16_mpionly_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-16:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-16:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1582,7 +1582,7 @@ clang_16_mpionly_dbg:
 
 clang_16_hybrid_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-16:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-16:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1609,7 +1609,7 @@ clang_16_hybrid_dbg:
 
 clang_16_hybrid_dbg_sp:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-16:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-16:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1639,7 +1639,7 @@ clang_16_hybrid_dbg_sp:
 
 clang_17_serial:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-17:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-17:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1668,7 +1668,7 @@ clang_17_serial:
 
 clang_17_mpionly:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-17:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-17:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1695,7 +1695,7 @@ clang_17_mpionly:
 
 clang_17_hybrid:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-17:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-17:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1718,7 +1718,7 @@ clang_17_hybrid:
 
 clang_17_serial_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-17:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-17:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1745,7 +1745,7 @@ clang_17_serial_dbg:
 
 clang_17_mpionly_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-17:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-17:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1770,7 +1770,7 @@ clang_17_mpionly_dbg:
 
 clang_17_hybrid_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-17:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-17:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1794,7 +1794,7 @@ clang_17_hybrid_dbg:
 
 clang_17_hybrid_dbg_sp:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-17:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/clang-17:32
    stage: pretest
    before_script:
       - python3 -m venv ci-venv
@@ -1822,7 +1822,7 @@ clang_17_hybrid_dbg_sp:
 
 aocc_4_serial:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/aocc-4:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/aocc-4:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1851,7 +1851,7 @@ aocc_4_serial:
 
 aocc_4_mpionly:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/aocc-4:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/aocc-4:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1878,7 +1878,7 @@ aocc_4_mpionly:
 
 aocc_4_hybrid:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/aocc-4:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/aocc-4:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1901,7 +1901,7 @@ aocc_4_hybrid:
 
 aocc_4_serial_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/aocc-4:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/aocc-4:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1928,7 +1928,7 @@ aocc_4_serial_dbg:
 
 aocc_4_mpionly_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/aocc-4:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/aocc-4:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1953,7 +1953,7 @@ aocc_4_mpionly_dbg:
 
 aocc_4_hybrid_dbg:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/aocc-4:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/aocc-4:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
@@ -1977,7 +1977,7 @@ aocc_4_hybrid_dbg:
 
 aocc_4_hybrid_dbg_sp:
    extends: .build_template
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/aocc-4:22
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/aocc-4:32
    before_script:
       - python3 -m venv ci-venv
       - source ci-venv/bin/activate
diff --git a/python/lbmpy_walberla/templates/BoundaryCollection.tmpl.h b/python/lbmpy_walberla/templates/BoundaryCollection.tmpl.h
index 4e19d0692e724cbdea2644b0334823de0299c588..ad64d69cb080aeef59b94407131e447f19f2254a 100644
--- a/python/lbmpy_walberla/templates/BoundaryCollection.tmpl.h
+++ b/python/lbmpy_walberla/templates/BoundaryCollection.tmpl.h
@@ -46,7 +46,7 @@ class {{class_name}}
    {
       {% for object_name, boundary_class, kernel, additional_data_handler in zip(object_names, boundary_classes, kernel_list, additional_data_handlers) -%}
 
-      {{object_name}} = std::make_shared< {{boundary_class}} >({{- ["blocks", "pdfsID", [kernel|generate_function_collection_call(['indexVector', 'indexVectorSize', 'forceVector', 'forceVectorSize', 'pdfs', 'timestep', 'gpuStream'], use_field_ids=True)], additional_data_handler.constructor_argument_name] | type_identifier_list -}});
+      {{object_name}} = std::make_shared< {{boundary_class}} >({{- ["blocks", [kernel|generate_function_collection_call(['indexVector', 'indexVectorSize', 'forceVector', 'forceVectorSize', 'timestep', 'gpuStream'], use_field_ids=True)], additional_data_handler.constructor_argument_name] | type_identifier_list -}});
       {% endfor %}
 
       {% for object_name, flag_uid in zip(object_names, flag_uids) -%}
diff --git a/python/lbmpy_walberla/templates/LatticeModel.tmpl.h b/python/lbmpy_walberla/templates/LatticeModel.tmpl.h
index 5631eec3250d2c1e99d9a59e268e5e1794520757..769ae027ce76a0c334dfe9107487f99aaa5fb488 100644
--- a/python/lbmpy_walberla/templates/LatticeModel.tmpl.h
+++ b/python/lbmpy_walberla/templates/LatticeModel.tmpl.h
@@ -205,6 +205,7 @@ private:
     template<class LM, class Enable> friend struct DensityAndMomentumDensity;
     template<class LM, class Enable> friend struct MomentumDensity;
     template<class LM, class It, class Enable> friend struct DensityAndVelocityRange;
+    template<class LM>               friend struct PressureTensor;
 
     friend mpi::SendBuffer & ::walberla::mpi::operator<< (mpi::SendBuffer & , const {{class_name}} & );
     friend mpi::RecvBuffer & ::walberla::mpi::operator>> (mpi::RecvBuffer & ,       {{class_name}} & );
@@ -507,16 +508,35 @@ template<>
 struct PressureTensor<{{class_name}}>
 {
    template< typename FieldPtrOrIterator >
-   static void get( Matrix3< {{dtype}} > & /* pressureTensor */, const {{class_name}} & /* latticeModel */, const FieldPtrOrIterator & /* it */ )
+   static void get( Matrix3< {{dtype}} > & pressureTensor , const {{class_name}} & lm , const FieldPtrOrIterator & it  )
    {
-       WALBERLA_ABORT("Not implemented");
+      const auto x = it.x();
+      const auto y = it.y();
+      const auto z = it.z();
+
+      {% for i in range(Q) -%}
+      const {{dtype}} f_{{i}} = it[{{i}}];
+      {% endfor -%}
+
+      {{strain_rate_tensor | indent(6) }}
+      {% for i in range(D * D) -%}
+      pressureTensor[{{i}}] = srt_{{i}};
+      {% endfor %}
    }
 
    template< typename PdfField_T >
-   static void get( Matrix3< {{dtype}} > & /* pressureTensor */, const {{class_name}} & /* latticeModel */, const PdfField_T & /* pdf */,
-                    const cell_idx_t /* x */, const cell_idx_t /* y */, const cell_idx_t /* z */ )
+   static void get( Matrix3< {{dtype}} > & pressureTensor , const {{class_name}} & lm, const PdfField_T & pdf,
+                    const cell_idx_t x, const cell_idx_t y, const cell_idx_t z)
    {
-       WALBERLA_ABORT("Not implemented");
+      const {{dtype}} & xyz0 = pdf(x,y,z,0);
+      {% for i in range(Q) -%}
+      const {{dtype}} f_{{i}} = pdf.getF( &xyz0, {{i}});
+      {% endfor -%}
+
+      {{strain_rate_tensor | indent(6) }}
+      {% for i in range(D * D) -%}
+      pressureTensor[{{i}}] = srt_{{i}};
+      {% endfor %}
    }
 };
 
diff --git a/python/lbmpy_walberla/walberla_lbm_generation.py b/python/lbmpy_walberla/walberla_lbm_generation.py
index e264fb8bbbb8c67040de8c309e40e8b57c0f7053..e669e6cd0d964fa48aa45bae80ecba1df6fc15ed 100644
--- a/python/lbmpy_walberla/walberla_lbm_generation.py
+++ b/python/lbmpy_walberla/walberla_lbm_generation.py
@@ -1,18 +1,14 @@
-# import warnings
-from typing import Callable, List
-
-
 import numpy as np
 import sympy as sp
 from jinja2 import Environment, PackageLoader, StrictUndefined, Template
+from pystencils import Assignment
 from sympy.tensor import IndexedBase
 
-import pystencils as ps
 from lbmpy.fieldaccess import CollideOnlyInplaceAccessor, StreamPullTwoFieldsAccessor
 from lbmpy.relaxationrates import relaxation_rate_scaling
+from lbmpy.macroscopic_value_kernels import strain_rate_tensor_getter
 from lbmpy.updatekernels import create_lbm_kernel, create_stream_only_kernel
-from pystencils import AssignmentCollection, create_kernel, Target
-from pystencils.astnodes import SympyAssignment
+from pystencils import AssignmentCollection, create_kernel, Target, CreateKernelConfig
 from pystencils.backends.cbackend import CBackend, CustomSympyPrinter, get_headers
 from pystencils.typing import BasicType, CastFunc, TypedSymbol
 from pystencils.field import Field
@@ -40,6 +36,7 @@ def __type_equilibrium_assignments(assignments, config, subs_dict):
 def __lattice_model(generation_context, class_name, config, lb_method, stream_collide_ast, collide_ast, stream_ast,
                     refinement_scaling):
     stencil_name = lb_method.stencil.name
+    dim = lb_method.stencil.D
     if not stencil_name:
         raise ValueError("lb_method uses a stencil that is not supported in waLBerla")
 
@@ -53,10 +50,11 @@ def __lattice_model(generation_context, class_name, config, lb_method, stream_co
     reference_density = rho_sym if cqc.compressible else cqc.background_density
     pdfs_sym = sp.symbols(f'f_:{lb_method.stencil.Q}')
 
-    vel_arr_symbols = [IndexedBase(TypedSymbol('u', default_dtype), shape=(1,))[i] for i in range(len(vel_symbols))]
+    vel_arr_symbols = [IndexedBase(TypedSymbol('u', default_dtype), shape=(1,))[i] for i in range(dim)]
     subs_dict = {a: b for a, b in zip(vel_symbols, vel_arr_symbols)}
 
-    momentum_density_symbols = sp.symbols(f'md_:{len(vel_symbols)}')
+    momentum_density_symbols = sp.symbols(f'md_:{dim}')
+    strain_rate_tensor = sp.symbols(f"srt_:{dim * dim}")
 
     equilibrium = lb_method.get_equilibrium()
     lhs_list = [a.lhs for a in equilibrium.main_assignments]
@@ -65,11 +63,10 @@ def __lattice_model(generation_context, class_name, config, lb_method, stream_co
     symmetric_equilibrium_matrix = get_symmetric_part(equilibrium_matrix, vel_symbols)
     asymmetric_equilibrium_matrix = sp.expand(equilibrium_matrix - symmetric_equilibrium_matrix)
 
-    equilibrium = AssignmentCollection([ps.Assignment(lhs, rhs)
-                                        for lhs, rhs in zip(lhs_list, equilibrium_matrix)])
-    symmetric_equilibrium = AssignmentCollection([ps.Assignment(lhs, rhs)
+    equilibrium = AssignmentCollection([Assignment(lhs, rhs) for lhs, rhs in zip(lhs_list, equilibrium_matrix)])
+    symmetric_equilibrium = AssignmentCollection([Assignment(lhs, rhs)
                                                   for lhs, rhs in zip(lhs_list, symmetric_equilibrium_matrix)])
-    asymmetric_equilibrium = AssignmentCollection([ps.Assignment(lhs, rhs)
+    asymmetric_equilibrium = AssignmentCollection([Assignment(lhs, rhs)
                                                    for lhs, rhs in zip(lhs_list, asymmetric_equilibrium_matrix)])
 
     equilibrium = __type_equilibrium_assignments(equilibrium, config, subs_dict)
@@ -90,6 +87,10 @@ def __lattice_model(generation_context, class_name, config, lb_method, stream_co
                                                                    variables_without_prefix=['rho_in', 'u'])
     momentum_density_getter = cqc.output_equations_from_pdfs(pdfs_sym, {'density': rho_sym,
                                                                         'momentum_density': momentum_density_symbols})
+    mdg2 = cqc.output_equations_from_pdfs(pdfs_sym, {'density': rho_sym, 'velocity': vel_symbols})
+
+    strain_rate_tensor_assignments = strain_rate_tensor_getter(lb_method, strain_rate_tensor, pdfs_sym)
+    strain_rate_tensor_assignments = mdg2.all_assignments + strain_rate_tensor_assignments
 
     is_float = True if issubclass(default_dtype.numpy_dtype.type, np.float32) else False
     constant_suffix = "f" if is_float else ""
@@ -135,7 +136,8 @@ def __lattice_model(generation_context, class_name, config, lb_method, stream_co
         'momentum_density_getter': equations_to_code(momentum_density_getter, variables_without_prefix=pdfs_sym,
                                                      dtype=default_dtype),
         'density_velocity_setter_macroscopic_values': density_velocity_setter_macroscopic_values,
-
+        'strain_rate_tensor': equations_to_code(strain_rate_tensor_assignments, variables_without_prefix=pdfs_sym,
+                                                dtype=default_dtype),
         'refinement_scaling_info': refinement_scaling_info,
 
         'stream_collide_kernel': KernelInfo(stream_collide_ast, ['pdfs_tmp'], [('pdfs', 'pdfs_tmp')], []),
@@ -181,11 +183,10 @@ def generate_lattice_model(generation_context, class_name, collision_rule, field
     elif field_layout == 'zyxf':
         config.cpu_vectorize_info['assume_inner_stride_one'] = False
 
-    src_field = ps.Field.create_generic('pdfs', dim, config.data_type['pdfs'].numpy_dtype,
-                                        index_dimensions=1, layout=field_layout, index_shape=(q,))
-    dst_field = ps.Field.create_generic('pdfs_tmp', dim, config.data_type['pdfs_tmp'].numpy_dtype,
-                                        index_dimensions=1, layout=field_layout,
-                                        index_shape=(q,))
+    src_field = Field.create_generic('pdfs', dim, config.data_type['pdfs'].numpy_dtype,
+                                     index_dimensions=1, layout=field_layout, index_shape=(q,))
+    dst_field = Field.create_generic('pdfs_tmp', dim, config.data_type['pdfs_tmp'].numpy_dtype,
+                                     index_dimensions=1, layout=field_layout, index_shape=(q,))
 
     stream_collide_update_rule = create_lbm_kernel(collision_rule, src_field, dst_field, StreamPullTwoFieldsAccessor())
     stream_collide_ast = create_kernel(stream_collide_update_rule, config=config)
@@ -326,24 +327,32 @@ def type_expr(eq, dtype):
     return eq.subs({s: TypedSymbol(s.name, dtype) for s in eq.atoms(sp.Symbol)})
 
 
-def equations_to_code(equations, variable_prefix="lm.", variables_without_prefix=None, dtype=None):
+def equations_to_code(assignments, variable_prefix="lm.", variables_without_prefix=None, dtype=None):
     if dtype is None:
         dtype = BasicType("float64")
 
-    if variables_without_prefix is None:
-        variables_without_prefix = []
-    if isinstance(equations, AssignmentCollection):
-        equations = equations.all_assignments
+    config = CreateKernelConfig(data_type=dtype, default_number_float=dtype)
 
-    variables_without_prefix = list(variables_without_prefix)
+    if isinstance(assignments, AssignmentCollection):
+        assignments = assignments.all_assignments
+
+    left_hand_side_names = [e.lhs.name for e in assignments]
+    variables_without_prefix = list(variables_without_prefix) + left_hand_side_names
+
+    new_assignments = list()
+    for assignment in assignments:
+        new_rhs = field_and_symbol_substitute(assignment.rhs, variable_prefix, variables_without_prefix)
+        new_assignments.append(Assignment(assignment.lhs, new_rhs))
+
+    new_assignments = AssignmentCollection(new_assignments)
+    new_assignments = new_assignments.new_without_unused_subexpressions()
+
+    new_assignments = NodeCollection.from_assignment_collection(new_assignments)
+    new_assignments = add_types(new_assignments.all_assignments, config)
     c_backend = CBackend()
+
     result = []
-    left_hand_side_names = [e.lhs.name for e in equations]
-    for eq in equations:
-        assignment = SympyAssignment(type_expr(eq.lhs, dtype=dtype),
-                                     type_expr(field_and_symbol_substitute(eq.rhs, variable_prefix,
-                                                                           variables_without_prefix
-                                                                           + left_hand_side_names),
-                                               dtype=dtype))
+    for assignment in new_assignments:
         result.append(c_backend(assignment))
+
     return "\n".join(result)
diff --git a/python/pystencils_walberla/boundary.py b/python/pystencils_walberla/boundary.py
index 6e4ff76bb0414f58aa0b81da8733bd8dc85435c5..7901d6f2767970ed125ab1ccbcc0785fef9e3e5d 100644
--- a/python/pystencils_walberla/boundary.py
+++ b/python/pystencils_walberla/boundary.py
@@ -132,11 +132,12 @@ def generate_staggered_boundary(generation_context, class_name, boundary_object,
                                 dim, neighbor_stencil, index_shape, target=Target.CPU, **kwargs):
     assert dim == len(neighbor_stencil[0])
     generate_boundary(generation_context, class_name, boundary_object, 'field', neighbor_stencil, index_shape,
-                      FieldType.STAGGERED, target=target, **kwargs)
+                      spatial_shape=None, field_type=FieldType.STAGGERED, field_data_type=None, target=target, **kwargs)
 
 
 def generate_staggered_flux_boundary(generation_context, class_name, boundary_object,
                                      dim, neighbor_stencil, index_shape, target=Target.CPU, **kwargs):
     assert dim == len(neighbor_stencil[0])
     generate_boundary(generation_context, class_name, boundary_object, 'flux', neighbor_stencil, index_shape,
-                      FieldType.STAGGERED_FLUX, target=target, **kwargs)
+                      spatial_shape=None, field_type=FieldType.STAGGERED_FLUX, field_data_type=None, target=target,
+                      **kwargs)