diff --git a/CMakeLists_files.cmake b/CMakeLists_files.cmake
index f8a47b0fad5..a9915c68544 100644
--- a/CMakeLists_files.cmake
+++ b/CMakeLists_files.cmake
@@ -167,6 +167,7 @@ list (APPEND MAIN_SOURCE_FILES
opm/simulators/linalg/FlexibleSolver4.cpp
opm/simulators/linalg/FlexibleSolver5.cpp
opm/simulators/linalg/FlexibleSolver6.cpp
+ opm/simulators/linalg/FlexibleSolver7.cpp
opm/simulators/linalg/FlowLinearSolverParameters.cpp
opm/simulators/linalg/ISTLSolver.cpp
opm/simulators/linalg/MILU.cpp
@@ -178,6 +179,7 @@ list (APPEND MAIN_SOURCE_FILES
opm/simulators/linalg/PreconditionerFactory4.cpp
opm/simulators/linalg/PreconditionerFactory5.cpp
opm/simulators/linalg/PreconditionerFactory6.cpp
+ opm/simulators/linalg/PreconditionerFactory7.cpp
opm/simulators/linalg/PropertyTree.cpp
opm/simulators/linalg/setupPropertyTree.cpp
opm/simulators/timestepping/AdaptiveSimulatorTimer.cpp
diff --git a/opm/simulators/linalg/FlexibleSolver7.cpp b/opm/simulators/linalg/FlexibleSolver7.cpp
new file mode 100644
index 00000000000..c6e24600656
--- /dev/null
+++ b/opm/simulators/linalg/FlexibleSolver7.cpp
@@ -0,0 +1,35 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*
+ Copyright 2025 NORCE AS
+
+ This file is part of the Open Porous Media project (OPM).
+
+ OPM is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ OPM is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OPM. If not, see .
+
+ Consult the COPYING file in the top-level source directory of this
+ module for the precise wording of the license and the list of
+ copyright holders.
+*/
+#include "config.h"
+
+#include
+
+
+INSTANTIATE_FLEXIBLESOLVER(double, 7)
+
+#if FLOW_INSTANTIATE_FLOAT
+INSTANTIATE_FLEXIBLESOLVER(float, 7)
+#endif
+
diff --git a/opm/simulators/linalg/ISTLSolver.cpp b/opm/simulators/linalg/ISTLSolver.cpp
index ebb53f0506c..c7d7031a25b 100644
--- a/opm/simulators/linalg/ISTLSolver.cpp
+++ b/opm/simulators/linalg/ISTLSolver.cpp
@@ -184,7 +184,8 @@ using CommunicationType = Dune::Communication;
INSTANTIATE_FLEX(T,3) \
INSTANTIATE_FLEX(T,4) \
INSTANTIATE_FLEX(T,5) \
- INSTANTIATE_FLEX(T,6)
+ INSTANTIATE_FLEX(T,6) \
+ INSTANTIATE_FLEX(T,7)
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/ISTLSolverGpuBridge.cpp b/opm/simulators/linalg/ISTLSolverGpuBridge.cpp
index 0a103d0e3bd..c00b5ce1110 100644
--- a/opm/simulators/linalg/ISTLSolverGpuBridge.cpp
+++ b/opm/simulators/linalg/ISTLSolverGpuBridge.cpp
@@ -274,7 +274,8 @@ using PolyHedralGrid3D = Dune::PolyhedralGrid<3, 3>;
INSTANTIATE(T,3) \
INSTANTIATE(T,4) \
INSTANTIATE(T,5) \
- INSTANTIATE(T,6)
+ INSTANTIATE(T,6) \
+ INSTANTIATE(T,7)
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/MILU.cpp b/opm/simulators/linalg/MILU.cpp
index c1d848a871f..37dcca025b2 100644
--- a/opm/simulators/linalg/MILU.cpp
+++ b/opm/simulators/linalg/MILU.cpp
@@ -283,7 +283,8 @@ void milun_decomposition(const M& A, int n, MILU_VARIANT milu, M& ILU,
INSTANTIATE_DIM(T,3) \
INSTANTIATE_DIM(T,4) \
INSTANTIATE_DIM(T,5) \
- INSTANTIATE_DIM(T,6)
+ INSTANTIATE_DIM(T,6) \
+ INSTANTIATE_DIM(T,7)
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/ParallelOverlappingILU0.cpp b/opm/simulators/linalg/ParallelOverlappingILU0.cpp
index 6b27473ccf7..47679303bf1 100644
--- a/opm/simulators/linalg/ParallelOverlappingILU0.cpp
+++ b/opm/simulators/linalg/ParallelOverlappingILU0.cpp
@@ -52,7 +52,8 @@ namespace Opm
INSTANTIATE(T,3) \
INSTANTIATE(T,4) \
INSTANTIATE(T,5) \
- INSTANTIATE(T,6)
+ INSTANTIATE(T,6) \
+ INSTANTIATE(T,7)
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/PreconditionerFactory7.cpp b/opm/simulators/linalg/PreconditionerFactory7.cpp
new file mode 100644
index 00000000000..97f5f8e5e6c
--- /dev/null
+++ b/opm/simulators/linalg/PreconditionerFactory7.cpp
@@ -0,0 +1,37 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*
+ Copyright 2025 NORCE AS
+
+ This file is part of the Open Porous Media project (OPM).
+
+ OPM is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ OPM is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OPM. If not, see .
+
+ Consult the COPYING file in the top-level source directory of this
+ module for the precise wording of the license and the list of
+ copyright holders.
+*/
+#include "config.h"
+
+#include
+
+namespace Opm {
+
+INSTANTIATE_PF(double, 7)
+
+#if FLOW_INSTANTIATE_FLOAT
+INSTANTIATE_PF(float, 7)
+#endif
+
+}
diff --git a/opm/simulators/linalg/gpubridge/CprCreation.cpp b/opm/simulators/linalg/gpubridge/CprCreation.cpp
index b98c0345e59..7de181754d3 100644
--- a/opm/simulators/linalg/gpubridge/CprCreation.cpp
+++ b/opm/simulators/linalg/gpubridge/CprCreation.cpp
@@ -308,7 +308,8 @@ analyzeAggregateMaps()
template class CprCreation; \
template class CprCreation; \
template class CprCreation; \
- template class CprCreation;
+ template class CprCreation; \
+ template class CprCreation;
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/gpubridge/GpuBridge.cpp b/opm/simulators/linalg/gpubridge/GpuBridge.cpp
index fa7d52397ca..40411cb87af 100644
--- a/opm/simulators/linalg/gpubridge/GpuBridge.cpp
+++ b/opm/simulators/linalg/gpubridge/GpuBridge.cpp
@@ -370,7 +370,8 @@ initWellContributions([[maybe_unused]] WellContributions& wellContribs,
INSTANTIATE_GPU_FUNCTIONS(T,3) \
INSTANTIATE_GPU_FUNCTIONS(T,4) \
INSTANTIATE_GPU_FUNCTIONS(T,5) \
- INSTANTIATE_GPU_FUNCTIONS(T,6)
+ INSTANTIATE_GPU_FUNCTIONS(T,6) \
+ INSTANTIATE_GPU_FUNCTIONS(T,7)
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/gpubridge/amgclSolverBackend.cpp b/opm/simulators/linalg/gpubridge/amgclSolverBackend.cpp
index 5582d8ebfe0..ba930f9e4db 100644
--- a/opm/simulators/linalg/gpubridge/amgclSolverBackend.cpp
+++ b/opm/simulators/linalg/gpubridge/amgclSolverBackend.cpp
@@ -434,7 +434,8 @@ solve_system(std::shared_ptr> matrix,
template class amgclSolverBackend; \
template class amgclSolverBackend; \
template class amgclSolverBackend; \
- template class amgclSolverBackend;
+ template class amgclSolverBackend; \
+ template class amgclSolverBackend;
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/gpubridge/cuda/amgclSolverBackend.cu b/opm/simulators/linalg/gpubridge/cuda/amgclSolverBackend.cu
index 6e5d05e8969..10e96023f9b 100644
--- a/opm/simulators/linalg/gpubridge/cuda/amgclSolverBackend.cu
+++ b/opm/simulators/linalg/gpubridge/cuda/amgclSolverBackend.cu
@@ -78,7 +78,8 @@ void amgclSolverBackend::solve_cuda(Scalar* b)
template void amgclSolverBackend::solve_cuda(T*); \
template void amgclSolverBackend::solve_cuda(T*); \
template void amgclSolverBackend::solve_cuda(T*); \
- template void amgclSolverBackend::solve_cuda(T*);
+ template void amgclSolverBackend::solve_cuda(T*); \
+ template void amgclSolverBackend::solve_cuda(T*);
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/gpubridge/cuda/cusparseSolverBackend.cu b/opm/simulators/linalg/gpubridge/cuda/cusparseSolverBackend.cu
index 1f0c640151b..822617dd86f 100644
--- a/opm/simulators/linalg/gpubridge/cuda/cusparseSolverBackend.cu
+++ b/opm/simulators/linalg/gpubridge/cuda/cusparseSolverBackend.cu
@@ -724,7 +724,8 @@ solve_system(std::shared_ptr> matrix,
template class cusparseSolverBackend; \
template class cusparseSolverBackend; \
template class cusparseSolverBackend; \
- template class cusparseSolverBackend;
+ template class cusparseSolverBackend; \
+ template class cusparseSolverBackend;
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/gpubridge/opencl/ChowPatelIlu.cpp b/opm/simulators/linalg/gpubridge/opencl/ChowPatelIlu.cpp
index ca0fd42d584..a290d975e46 100644
--- a/opm/simulators/linalg/gpubridge/opencl/ChowPatelIlu.cpp
+++ b/opm/simulators/linalg/gpubridge/opencl/ChowPatelIlu.cpp
@@ -998,6 +998,7 @@ INSTANTIATE_GPU_FUNCTIONS(3);
INSTANTIATE_GPU_FUNCTIONS(4);
INSTANTIATE_GPU_FUNCTIONS(5);
INSTANTIATE_GPU_FUNCTIONS(6);
+INSTANTIATE_GPU_FUNCTIONS(7);
#undef INSTANTIATE_GPU_FUNCTIONS
diff --git a/opm/simulators/linalg/gpubridge/opencl/openclBILU0.cpp b/opm/simulators/linalg/gpubridge/opencl/openclBILU0.cpp
index 2ad6a9ec98a..da247723c7f 100644
--- a/opm/simulators/linalg/gpubridge/opencl/openclBILU0.cpp
+++ b/opm/simulators/linalg/gpubridge/opencl/openclBILU0.cpp
@@ -340,7 +340,8 @@ void openclBILU0::apply(const cl::Buffer& y, cl::Buffer& x, [
template class openclBILU0; \
template class openclBILU0; \
template class openclBILU0; \
- template class openclBILU0;
+ template class openclBILU0; \
+ template class openclBILU0;
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/gpubridge/opencl/openclBISAI.cpp b/opm/simulators/linalg/gpubridge/opencl/openclBISAI.cpp
index 2036c4cbe3e..bb094f632b1 100644
--- a/opm/simulators/linalg/gpubridge/opencl/openclBISAI.cpp
+++ b/opm/simulators/linalg/gpubridge/opencl/openclBISAI.cpp
@@ -359,7 +359,8 @@ void openclBISAI::apply(const cl::Buffer& y, cl::Buffer& x, [
template class openclBISAI; \
template class openclBISAI; \
template class openclBISAI; \
- template class openclBISAI;
+ template class openclBISAI; \
+ template class openclBISAI;
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/gpubridge/opencl/openclCPR.cpp b/opm/simulators/linalg/gpubridge/opencl/openclCPR.cpp
index 8a224eb74fd..351556e12dc 100644
--- a/opm/simulators/linalg/gpubridge/opencl/openclCPR.cpp
+++ b/opm/simulators/linalg/gpubridge/opencl/openclCPR.cpp
@@ -320,7 +320,8 @@ void openclCPR::apply(const cl::Buffer& y, cl::Buffer& x, Wel
template class openclCPR; \
template class openclCPR; \
template class openclCPR; \
- template class openclCPR;
+ template class openclCPR; \
+ template class openclCPR;
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/gpubridge/opencl/openclPreconditioner.cpp b/opm/simulators/linalg/gpubridge/opencl/openclPreconditioner.cpp
index adaf2f0b71b..76e8d6b1c27 100644
--- a/opm/simulators/linalg/gpubridge/opencl/openclPreconditioner.cpp
+++ b/opm/simulators/linalg/gpubridge/opencl/openclPreconditioner.cpp
@@ -67,7 +67,8 @@ setOpencl(std::shared_ptr& context_,
template class openclPreconditioner; \
template class openclPreconditioner; \
template class openclPreconditioner; \
- template class openclPreconditioner;
+ template class openclPreconditioner; \
+ template class openclPreconditioner;
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/gpubridge/opencl/openclSolverBackend.cpp b/opm/simulators/linalg/gpubridge/opencl/openclSolverBackend.cpp
index 01f092b2784..13b6ad91d17 100644
--- a/opm/simulators/linalg/gpubridge/opencl/openclSolverBackend.cpp
+++ b/opm/simulators/linalg/gpubridge/opencl/openclSolverBackend.cpp
@@ -713,7 +713,8 @@ solve_system(std::shared_ptr> matrix,
template class openclSolverBackend; \
template class openclSolverBackend; \
template class openclSolverBackend; \
- template class openclSolverBackend;
+ template class openclSolverBackend; \
+ template class openclSolverBackend;
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/gpubridge/rocm/rocalutionSolverBackend.cpp b/opm/simulators/linalg/gpubridge/rocm/rocalutionSolverBackend.cpp
index 460959983be..6921796dadb 100644
--- a/opm/simulators/linalg/gpubridge/rocm/rocalutionSolverBackend.cpp
+++ b/opm/simulators/linalg/gpubridge/rocm/rocalutionSolverBackend.cpp
@@ -243,7 +243,8 @@ solve_system(std::shared_ptr> matrix,
template class rocalutionSolverBackend; \
template class rocalutionSolverBackend; \
template class rocalutionSolverBackend; \
- template class rocalutionSolverBackend;
+ template class rocalutionSolverBackend; \
+ template class rocalutionSolverBackend;
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/gpubridge/rocm/rocsparseBILU0.cpp b/opm/simulators/linalg/gpubridge/rocm/rocsparseBILU0.cpp
index 0ae206a079b..e677b792703 100644
--- a/opm/simulators/linalg/gpubridge/rocm/rocsparseBILU0.cpp
+++ b/opm/simulators/linalg/gpubridge/rocm/rocsparseBILU0.cpp
@@ -472,7 +472,8 @@ apply(const Scalar& y, Scalar& x, [[maybe_unused]] WellContributions& we
template class rocsparseBILU0; \
template class rocsparseBILU0; \
template class rocsparseBILU0; \
- template class rocsparseBILU0;
+ template class rocsparseBILU0; \
+ template class rocsparseBILU0;
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/gpubridge/rocm/rocsparseCPR.cpp b/opm/simulators/linalg/gpubridge/rocm/rocsparseCPR.cpp
index 1582c8ba0b2..e159a4eb3ca 100644
--- a/opm/simulators/linalg/gpubridge/rocm/rocsparseCPR.cpp
+++ b/opm/simulators/linalg/gpubridge/rocm/rocsparseCPR.cpp
@@ -518,7 +518,8 @@ apply(const Scalar& y,
template class rocsparseCPR; \
template class rocsparseCPR; \
template class rocsparseCPR; \
- template class rocsparseCPR;
+ template class rocsparseCPR; \
+ template class rocsparseCPR;
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/gpubridge/rocm/rocsparsePreconditioner.cpp b/opm/simulators/linalg/gpubridge/rocm/rocsparsePreconditioner.cpp
index 3e7e306ac7a..65b6f568cb7 100644
--- a/opm/simulators/linalg/gpubridge/rocm/rocsparsePreconditioner.cpp
+++ b/opm/simulators/linalg/gpubridge/rocm/rocsparsePreconditioner.cpp
@@ -83,7 +83,8 @@ setJacMat(const BlockedMatrix& jMat)
template class rocsparsePreconditioner; \
template class rocsparsePreconditioner; \
template class rocsparsePreconditioner; \
- template class rocsparsePreconditioner;
+ template class rocsparsePreconditioner; \
+ template class rocsparsePreconditioner;
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/gpubridge/rocm/rocsparseSolverBackend.cpp b/opm/simulators/linalg/gpubridge/rocm/rocsparseSolverBackend.cpp
index 37f1d39a626..89401151d75 100644
--- a/opm/simulators/linalg/gpubridge/rocm/rocsparseSolverBackend.cpp
+++ b/opm/simulators/linalg/gpubridge/rocm/rocsparseSolverBackend.cpp
@@ -678,7 +678,8 @@ solve_system(std::shared_ptr> matrix,
template class rocsparseSolverBackend; \
template class rocsparseSolverBackend; \
template class rocsparseSolverBackend; \
- template class rocsparseSolverBackend;
+ template class rocsparseSolverBackend; \
+ template class rocsparseSolverBackend;
INSTANTIATE_TYPE(double)
diff --git a/opm/simulators/linalg/gpuistl/GpuDILU.cpp b/opm/simulators/linalg/gpuistl/GpuDILU.cpp
index 18a2f348e20..9c4916e3f8b 100644
--- a/opm/simulators/linalg/gpuistl/GpuDILU.cpp
+++ b/opm/simulators/linalg/gpuistl/GpuDILU.cpp
@@ -551,6 +551,7 @@ INSTANTIATE_CUDILU_DUNE(double, 3);
INSTANTIATE_CUDILU_DUNE(double, 4);
INSTANTIATE_CUDILU_DUNE(double, 5);
INSTANTIATE_CUDILU_DUNE(double, 6);
+INSTANTIATE_CUDILU_DUNE(double, 7);
INSTANTIATE_CUDILU_DUNE(float, 1);
INSTANTIATE_CUDILU_DUNE(float, 2);
@@ -558,3 +559,4 @@ INSTANTIATE_CUDILU_DUNE(float, 3);
INSTANTIATE_CUDILU_DUNE(float, 4);
INSTANTIATE_CUDILU_DUNE(float, 5);
INSTANTIATE_CUDILU_DUNE(float, 6);
+INSTANTIATE_CUDILU_DUNE(float, 7);
diff --git a/opm/simulators/linalg/gpuistl/GpuSeqILU0.cpp b/opm/simulators/linalg/gpuistl/GpuSeqILU0.cpp
index 381f2fa68b5..8b1db37aa8c 100644
--- a/opm/simulators/linalg/gpuistl/GpuSeqILU0.cpp
+++ b/opm/simulators/linalg/gpuistl/GpuSeqILU0.cpp
@@ -334,6 +334,7 @@ INSTANTIATE_GPUSEQILU0_DUNE(double, 3);
INSTANTIATE_GPUSEQILU0_DUNE(double, 4);
INSTANTIATE_GPUSEQILU0_DUNE(double, 5);
INSTANTIATE_GPUSEQILU0_DUNE(double, 6);
+INSTANTIATE_GPUSEQILU0_DUNE(double, 7);
template class ::Opm::gpuistl::GpuSeqILU0,
::Opm::gpuistl::GpuVector,
::Opm::gpuistl::GpuVector>;
@@ -344,6 +345,7 @@ INSTANTIATE_GPUSEQILU0_DUNE(float, 3);
INSTANTIATE_GPUSEQILU0_DUNE(float, 4);
INSTANTIATE_GPUSEQILU0_DUNE(float, 5);
INSTANTIATE_GPUSEQILU0_DUNE(float, 6);
+INSTANTIATE_GPUSEQILU0_DUNE(float, 7);
template class ::Opm::gpuistl::GpuSeqILU0,
::Opm::gpuistl::GpuVector,
::Opm::gpuistl::GpuVector>;
diff --git a/opm/simulators/linalg/gpuistl/OpmGpuILU0.cpp b/opm/simulators/linalg/gpuistl/OpmGpuILU0.cpp
index 25a678fc9b5..8e831961cce 100644
--- a/opm/simulators/linalg/gpuistl/OpmGpuILU0.cpp
+++ b/opm/simulators/linalg/gpuistl/OpmGpuILU0.cpp
@@ -448,6 +448,7 @@ INSTANTIATE_GPUILU_DUNE(double, 3);
INSTANTIATE_GPUILU_DUNE(double, 4);
INSTANTIATE_GPUILU_DUNE(double, 5);
INSTANTIATE_GPUILU_DUNE(double, 6);
+INSTANTIATE_GPUILU_DUNE(double, 7);
INSTANTIATE_GPUILU_DUNE(float, 1);
INSTANTIATE_GPUILU_DUNE(float, 2);
@@ -455,3 +456,4 @@ INSTANTIATE_GPUILU_DUNE(float, 3);
INSTANTIATE_GPUILU_DUNE(float, 4);
INSTANTIATE_GPUILU_DUNE(float, 5);
INSTANTIATE_GPUILU_DUNE(float, 6);
+INSTANTIATE_GPUILU_DUNE(float, 7);
diff --git a/opm/simulators/linalg/gpuistl/detail/gpusparse_matrix_operations.cu b/opm/simulators/linalg/gpuistl/detail/gpusparse_matrix_operations.cu
index 9413658ff1e..0540930c393 100644
--- a/opm/simulators/linalg/gpuistl/detail/gpusparse_matrix_operations.cu
+++ b/opm/simulators/linalg/gpuistl/detail/gpusparse_matrix_operations.cu
@@ -194,12 +194,14 @@ INSTANTIATE_KERNEL_WRAPPERS_WITH_SCALAR_AND_BLOCKSIZE(float, 3);
INSTANTIATE_KERNEL_WRAPPERS_WITH_SCALAR_AND_BLOCKSIZE(float, 4);
INSTANTIATE_KERNEL_WRAPPERS_WITH_SCALAR_AND_BLOCKSIZE(float, 5);
INSTANTIATE_KERNEL_WRAPPERS_WITH_SCALAR_AND_BLOCKSIZE(float, 6);
+INSTANTIATE_KERNEL_WRAPPERS_WITH_SCALAR_AND_BLOCKSIZE(float, 7);
INSTANTIATE_KERNEL_WRAPPERS_WITH_SCALAR_AND_BLOCKSIZE(double, 1);
INSTANTIATE_KERNEL_WRAPPERS_WITH_SCALAR_AND_BLOCKSIZE(double, 2);
INSTANTIATE_KERNEL_WRAPPERS_WITH_SCALAR_AND_BLOCKSIZE(double, 3);
INSTANTIATE_KERNEL_WRAPPERS_WITH_SCALAR_AND_BLOCKSIZE(double, 4);
INSTANTIATE_KERNEL_WRAPPERS_WITH_SCALAR_AND_BLOCKSIZE(double, 5);
INSTANTIATE_KERNEL_WRAPPERS_WITH_SCALAR_AND_BLOCKSIZE(double, 6);
+INSTANTIATE_KERNEL_WRAPPERS_WITH_SCALAR_AND_BLOCKSIZE(double, 7);
#define INSTANTIATE_KERNEL_WRAPPER_WITH_SCALAR(T) \
template Opm::gpuistl::GpuBuffer Opm::gpuistl::detail::getDiagPtrs( \
diff --git a/opm/simulators/linalg/gpuistl/detail/gpusparse_matrix_utilities.hpp b/opm/simulators/linalg/gpuistl/detail/gpusparse_matrix_utilities.hpp
index c5ee59041e2..df6bd455a51 100644
--- a/opm/simulators/linalg/gpuistl/detail/gpusparse_matrix_utilities.hpp
+++ b/opm/simulators/linalg/gpuistl/detail/gpusparse_matrix_utilities.hpp
@@ -247,7 +247,8 @@ validateVectorMatrixSizes(size_t vectorSize, size_t matrixBlockSize, size_t matr
INSTANTIATE_SPARSE_MATRIX_DUNE_OPERATIONS(CLASS_NAME, T, 3); \
INSTANTIATE_SPARSE_MATRIX_DUNE_OPERATIONS(CLASS_NAME, T, 4); \
INSTANTIATE_SPARSE_MATRIX_DUNE_OPERATIONS(CLASS_NAME, T, 5); \
- INSTANTIATE_SPARSE_MATRIX_DUNE_OPERATIONS(CLASS_NAME, T, 6)
+ INSTANTIATE_SPARSE_MATRIX_DUNE_OPERATIONS(CLASS_NAME, T, 6); \
+ INSTANTIATE_SPARSE_MATRIX_DUNE_OPERATIONS(CLASS_NAME, T, 7);
} // namespace Opm::gpuistl::detail
diff --git a/opm/simulators/linalg/gpuistl/detail/preconditionerKernels/DILUKernels.cu b/opm/simulators/linalg/gpuistl/detail/preconditionerKernels/DILUKernels.cu
index 4a7780a783c..9810ca2afae 100644
--- a/opm/simulators/linalg/gpuistl/detail/preconditionerKernels/DILUKernels.cu
+++ b/opm/simulators/linalg/gpuistl/detail/preconditionerKernels/DILUKernels.cu
@@ -747,12 +747,14 @@ INSTANTIATE_KERNEL_WRAPPERS(float, 3);
INSTANTIATE_KERNEL_WRAPPERS(float, 4);
INSTANTIATE_KERNEL_WRAPPERS(float, 5);
INSTANTIATE_KERNEL_WRAPPERS(float, 6);
+INSTANTIATE_KERNEL_WRAPPERS(float, 7);
INSTANTIATE_KERNEL_WRAPPERS(double, 1);
INSTANTIATE_KERNEL_WRAPPERS(double, 2);
INSTANTIATE_KERNEL_WRAPPERS(double, 3);
INSTANTIATE_KERNEL_WRAPPERS(double, 4);
INSTANTIATE_KERNEL_WRAPPERS(double, 5);
INSTANTIATE_KERNEL_WRAPPERS(double, 6);
+INSTANTIATE_KERNEL_WRAPPERS(double, 7);
#define INSTANTIATE_SOLVE_LEVEL_SET_SPLIT(blocksize, LinearSolverScalar, MatrixScalar, DiagonalScalar) \
template void solveUpperLevelSetSplit( \
@@ -785,5 +787,6 @@ INSTANTIATE_SOLVE_LEVEL_SET_SPLIT_ALL(3);
INSTANTIATE_SOLVE_LEVEL_SET_SPLIT_ALL(4);
INSTANTIATE_SOLVE_LEVEL_SET_SPLIT_ALL(5);
INSTANTIATE_SOLVE_LEVEL_SET_SPLIT_ALL(6);
+INSTANTIATE_SOLVE_LEVEL_SET_SPLIT_ALL(7);
} // namespace Opm::gpuistl::detail::DILU
diff --git a/opm/simulators/linalg/gpuistl/detail/preconditionerKernels/ILU0Kernels.cu b/opm/simulators/linalg/gpuistl/detail/preconditionerKernels/ILU0Kernels.cu
index e66c42f8a56..e134f6c57e9 100644
--- a/opm/simulators/linalg/gpuistl/detail/preconditionerKernels/ILU0Kernels.cu
+++ b/opm/simulators/linalg/gpuistl/detail/preconditionerKernels/ILU0Kernels.cu
@@ -512,7 +512,8 @@ LUFactorizationSplit(InputScalar* srcReorderedLowerMat,
INSTANTIATE_KERNEL_WRAPPERS(T, 3); \
INSTANTIATE_KERNEL_WRAPPERS(T, 4); \
INSTANTIATE_KERNEL_WRAPPERS(T, 5); \
- INSTANTIATE_KERNEL_WRAPPERS(T, 6);
+ INSTANTIATE_KERNEL_WRAPPERS(T, 6); \
+ INSTANTIATE_KERNEL_WRAPPERS(T, 7);
INSTANTIATE_BLOCK_SIZED_KERNEL_WRAPPERS(float)
INSTANTIATE_BLOCK_SIZED_KERNEL_WRAPPERS(double)
@@ -554,4 +555,5 @@ INSTANTIATE_MIXED_PRECISION_KERNEL_WRAPPERS(3);
INSTANTIATE_MIXED_PRECISION_KERNEL_WRAPPERS(4);
INSTANTIATE_MIXED_PRECISION_KERNEL_WRAPPERS(5);
INSTANTIATE_MIXED_PRECISION_KERNEL_WRAPPERS(6);
+INSTANTIATE_MIXED_PRECISION_KERNEL_WRAPPERS(7);
} // namespace Opm::gpuistl::detail::ILU0
diff --git a/opm/simulators/linalg/gpuistl/detail/preconditionerKernels/JacKernels.cu b/opm/simulators/linalg/gpuistl/detail/preconditionerKernels/JacKernels.cu
index 8080e227ee1..3b9ef9d32b7 100644
--- a/opm/simulators/linalg/gpuistl/detail/preconditionerKernels/JacKernels.cu
+++ b/opm/simulators/linalg/gpuistl/detail/preconditionerKernels/JacKernels.cu
@@ -78,11 +78,13 @@ INSTANTIATE_KERNEL_WRAPPERS(float, 3);
INSTANTIATE_KERNEL_WRAPPERS(float, 4);
INSTANTIATE_KERNEL_WRAPPERS(float, 5);
INSTANTIATE_KERNEL_WRAPPERS(float, 6);
+INSTANTIATE_KERNEL_WRAPPERS(float, 7);
INSTANTIATE_KERNEL_WRAPPERS(double, 1);
INSTANTIATE_KERNEL_WRAPPERS(double, 2);
INSTANTIATE_KERNEL_WRAPPERS(double, 3);
INSTANTIATE_KERNEL_WRAPPERS(double, 4);
INSTANTIATE_KERNEL_WRAPPERS(double, 5);
INSTANTIATE_KERNEL_WRAPPERS(double, 6);
+INSTANTIATE_KERNEL_WRAPPERS(double, 7);
} // namespace Opm::gpuistl::detail::JAC