Step 55 does not compile

109 views
Skip to first unread message

Victor Eijkhout

unread,
May 29, 2026, 8:18:24 AMMay 29
to deal.II User Group
Deal 9.7.1, intel 2025.3 compiler:

[ 50%] Building CXX object CMakeFiles/step55.dir/step55.cpp.o
/scratch/projects/compilers/intel25.3/compiler/2025.3/bin/icpx -DBOOST_IOSTREAMS_DYN_LINK -DBOOST_IOSTREAMS_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -DBOOST_SYSTEM_DYN_LINK -DBOOST_SYSTEM_NO_LIB -DBOOST_THREAD_DYN_LINK -DBOOST_THREAD_NO_LIB -DNDEBUG -I/scratch/00434/eijkhout/htmr/Binaries/cxxopts-3.3.1/include -I/scratch/projects/compilers/intel25.3/mpi/2021.17/include -I/work2/00434/eijkhout/htmr_sandbox/step55 -isystem /scratch/00434/eijkhout/htmr/Binaries/dealii-9.7.1/include -isystem /scratch/00434/eijkhout/htmr/Binaries/dealii-9.7.1/include/deal.II/bundled -isystem /scratch/00434/eijkhout/installation/installation-boost-1.86.0-stampede3-intel25.3/include -isystem /scratch/00434/eijkhout/htmr/Binaries/petsc-3.24.6/include -isystem /scratch/projects/compilers/intel25.3/tbb/2022.3/include -O2 -g -DNDEBUG -std=gnu++23 -MD -MT CMakeFiles/step55.dir/step55.cpp.o -MF CMakeFiles/step55.dir/step55.cpp.o.d -o CMakeFiles/step55.dir/step55.cpp.o -c /work2/00434/eijkhout/htmr_sandbox/step55/step55.cpp
/work2/00434/eijkhout/htmr_sandbox/step55/step55.cpp:335:7: error: call to deleted constructor of 'parallel::distributed::Triangulation<2>'
  335 |     , triangulation(mpi_communicator,
      |       ^             ~~~~~~~~~~~~~~~~~
  336 |                     typename Triangulation<dim>::MeshSmoothing(
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  337 |                       Triangulation<dim>::smoothing_on_refinement |
      |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  338 |                       Triangulation<dim>::smoothing_on_coarsening))
      |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/work2/00434/eijkhout/htmr_sandbox/step55/step55.cpp:813:24: note: in instantiation of member function 'Step55::StokesProblem<2>::StokesProblem' requested here
  813 |       StokesProblem<2> problem(2);
      |                        ^
/scratch/00434/eijkhout/htmr/Binaries/dealii-9.7.1/include/deal.II/distributed/tria.h:1071:16: note: 'Triangulation' has been explicitly marked deleted here
 1071 |       explicit Triangulation(
      |                ^
1 error generated.

Daniel Arndt

unread,
May 29, 2026, 11:11:55 AMMay 29
to dea...@googlegroups.com
Looks like you are end up in
https://github.com/dealii/dealii/blob/dfff93f072b477d83183acbb4c0958b37930e157/include/deal.II/distributed/tria.h#L1071-L1076
which is a branch used when deal.II was configured without p4est.
https://github.com/dealii/dealii/blob/dfff93f072b477d83183acbb4c0958b37930e157/examples/step-55/CMakeLists.txt#L40-L57
should have prevented you from configuring step-55. Can you confirm
that your deal.II configurations indeed satisfy the requirements for
step-55?

Best,
Daniel
> --
> The deal.II project is located at http://www.dealii.org/
> For mailing list/forum options, see https://groups.google.com/d/forum/dealii?hl=en
> ---
> You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to dealii+un...@googlegroups.com.
> To view this discussion visit https://groups.google.com/d/msgid/dealii/31b61cde-c8de-4f8f-9187-b45ec76efe42n%40googlegroups.com.

Victor Eijkhout

unread,
May 29, 2026, 2:08:14 PMMay 29
to deal.II User Group
Indeed, I did not configure with p4est. 

Shouldn't that example warn about that? #ifndef DEAL_HAS_P4EST #error ?

Wolfgang Bangerth

unread,
May 29, 2026, 8:16:25 PMMay 29
to dea...@googlegroups.com
On 5/29/26 11:08, Victor Eijkhout wrote:
> Indeed, I did not configure with p4est.
>
> Shouldn't that example warn about that? #ifndef DEAL_HAS_P4EST #error ?

The CMakeLists.txt in the step-55 directory does that. Did you use a different
CMake file?

Best
W.

Victor Eijkhout

unread,
Jun 1, 2026, 10:10:57 PMJun 1
to deal.II User Group
I read this as "having petsc & p4est is a sufficient condition. So I add a few lines to step55.cc:

#include "deal.II/base/config.h"

#ifndef DEAL_II_WITH_PETSC
#error Does not have petsc
#endif
#ifndef DEAL_II_WITH_P4EST
#error Does not have p4est
#endif

#include <deal.II/base/quadrature_lib.h>

and I still get the same error on that last line, which has now become line 34:

out/htmr_sandbox/step55/step55.cpp
In file included from /work2/00434/eijkhout/htmr_sandbox/step55/step55.cpp:34:
In file included from /scratch/00434/eijkhout/army/Binaries/dealii-9.7.1/include/deal.II/lac/generic_linear_algebra.h:37:
In file included from /scratch/00434/eijkhout/army/Binaries/dealii-9.7.1/include/deal.II/lac/trilinos_solver.h:40:
In file included from /scratch/00434/eijkhout/army/Binaries/trilinos-16.2.1/include/BelosBlockCGSolMgr.hpp:20:
In file included from /scratch/00434/eijkhout/army/Binaries/trilinos-16.2.1/include/BelosLinearProblem.hpp:17:
In file included from /scratch/00434/eijkhout/army/Binaries/trilinos-16.2.1/include/BelosMultiVecTraits.hpp:25:
In file included from /scratch/00434/eijkhout/army/Binaries/trilinos-16.2.1/include/BelosStubTsqrAdapter.hpp:15:
In file included from /scratch/00434/eijkhout/army/Binaries/trilinos-16.2.1/include/Teuchos_ScalarTraits.hpp:81:
/scratch/00434/eijkhout/army/Binaries/trilinos-16.2.1/include/Teuchos_ScalarTraitsDecl.hpp:120:101: error: conversion function from 'int' to 'std::string' (aka 'basic_string<char>') invokes a deleted function
  120 |   static inline std::string name()           { (void)UndefinedScalarTraits<T>::notDefined(); return 0; }
      |                                                                                                     ^
/opt/apps/gcc/15.1.0/lib/gcc/x86_64-pc-linux-gnu/15.1.0/../../../../include/c++/15.1.0/bits/basic_string.h:835:7: note: 'basic_string' has been explicitly marked deleted here
  835 |       basic_string(nullptr_t) = delete;


Victor Eijkhout

unread,
Jun 2, 2026, 9:56:55 AMJun 2
to deal.II User Group
Or should that be: step 55 work with Petsc & P4est and NOT Trilinos?

Daniel Arndt

unread,
Jun 2, 2026, 2:52:13 PMJun 2
to dea...@googlegroups.com
The code has

if defined(DEAL_II_WITH_PETSC) && !defined(DEAL_II_PETSC_WITH_COMPLEX) && \
!(defined(DEAL_II_WITH_TRILINOS) && defined(FORCE_USE_OF_TRILINOS))
using namespace dealii::LinearAlgebraPETSc;
# define USE_PETSC_LA
#elif defined(DEAL_II_WITH_TRILINOS)
using namespace dealii::LinearAlgebraTrilinos;
#else
# error DEAL_II_WITH_PETSC or DEAL_II_WITH_TRILINOS required
#endif

so it will use Trilinos if deal.II is configured without PETSc support
or if PETSc has been configured with complex support.
> --
> The deal.II project is located at http://www.dealii.org/
> For mailing list/forum options, see https://groups.google.com/d/forum/dealii?hl=en
> ---
> You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to dealii+un...@googlegroups.com.
> To view this discussion visit https://groups.google.com/d/msgid/dealii/f881c151-874f-4467-8145-f97cee0e9d33n%40googlegroups.com.

Victor Eijkhout

unread,
Jun 2, 2026, 3:03:08 PMJun 2
to deal.II User Group
Those are not all the cases. What happens if D2 was configured with Trilinos AND petsc-with-no-complex?
V.

Wolfgang Bangerth

unread,
Jun 2, 2026, 11:14:53 PMJun 2
to dea...@googlegroups.com
On 6/2/26 12:03, Victor Eijkhout wrote:
> Those are not all the cases. What happens if D2 was configured with Trilinos
> AND petsc-with-no-complex?

It takes the first #if branch that matches, which in that case would be the
one that selects Trilinos.

In a separate message, you asked what the precise combination of flags is that
works. This is encoded in CMakeLists.txt:

if(NOT ((DEAL_II_WITH_PETSC AND NOT DEAL_II_PETSC_WITH_COMPLEX) OR
DEAL_II_WITH_TRILINOS) OR NOT DEAL_II_WITH_P4EST)
message(FATAL_ERROR "...")

Best
W.

Wolfgang Bangerth

unread,
Jun 2, 2026, 11:20:32 PMJun 2
to dea...@googlegroups.com
On 6/1/26 19:10, Victor Eijkhout wrote:
> In file included from /scratch/00434/eijkhout/army/Binaries/trilinos-16.2.1/
> include/Teuchos_ScalarTraits.hpp:81:
> /scratch/00434/eijkhout/army/Binaries/trilinos-16.2.1/include/
> Teuchos_ScalarTraitsDecl.hpp:120:101: error: conversion function from 'int' to
> 'std::string' (aka 'basic_string<char>') invokes a deleted function
>   120 |   static inline std::string name()
> { (void)UndefinedScalarTraits<T>::notDefined(); return 0; }
>       |
>                               ^
> /opt/apps/gcc/15.1.0/lib/gcc/x86_64-pc-linux-gnu/15.1.0/../../../../include/c+
> +/15.1.0/bits/basic_string.h:835:7: note: 'basic_string' has been explicitly
> marked deleted here
>   835 |       basic_string(nullptr_t) = delete;

That's a bug in Trilinos when you use too-new a compiler. We cannot do
anything about it in deal.II. But someone from the deal.II project actually
just fixed that last week:
https://github.com/trilinos/Trilinos/pull/15304

Best
W.

Victor Eijkhout

unread,
Jun 4, 2026, 5:09:08 AMJun 4
to deal.II User Group
I could of course take their development branch and compile that, but that's basically trilinos 17, and for some reason I'm thinking that you are only compatible with 16. Correct?

Or is your development branch up with trilinos 17?

V.

PS petsc just fixed a bug in their MKL treatment that I found, but I get the impression you can not deal with their latest.

/scratch/00434/eijkhout/htmri26v2/Sources/dealii/dealii-9.7.1/source/lac/petsc_compatibility.cc:73:11: error: no member named 'domainerror' in '_p_SNES'
73 |     snes->domainerror = PETSC_FALSE;
|     ~~~~  ^
1 error generated.

What's your recommendation for acceptable petsc versions?

Victor Eijkhout

unread,
Jun 4, 2026, 1:35:01 PMJun 4
to dea...@googlegroups.com
Don’t feel like creating a new ticket.

I just spent about a whole day finding a bug in deal 9.7.1 that is fixed in the master branch.

Is it about time to release at least 9.7.2? 

Victor.

Wolfgang Bangerth

unread,
Jun 4, 2026, 11:09:47 PMJun 4
to dea...@googlegroups.com

Victor:

> I could of course take their development branch and compile that, but that's
> basically trilinos 17, and for some reason I'm thinking that you are only
> compatible with 16. Correct?

deal.II 9.7 was released before Trilinos 17. We cannot anticipate what
incompatible changes they make -- all we can make sure is that we are
compatible with their latest release, which at the time was 16.x.

If PETSc and Trilinos had a development model like deal.II where backward
compatibility is an important consideration, everyone's life would be easier.
But that's an issue you need to raise with these projects, not with us.


> Or is your development branch up with trilinos 17?

It is.


> PS petsc just fixed a bug in their MKL treatment that I found, but I get the
> impression you can not deal with their latest.
>
> /scratch/00434/eijkhout/htmri26v2/Sources/dealii/dealii-9.7.1/source/lac/
> petsc_compatibility.cc:73:11: error: no member named 'domainerror' in '_p_SNES'
> 73 |     snes->domainerror = PETSC_FALSE;
> |     ~~~~  ^
> 1 error generated.
>
> What's your recommendation for acceptable petsc versions?

Our development version already has the right workaround for this issue:
https://github.com/dealii/dealii/pull/19344
Again, this is an incompatible change in PETSc 3.25, released after deal.II
9.7. There really isn't anything we can do about these sorts of things short
of having a better crystal ball. If you want to complain to the PETSc folks
about their endless stream of incompatible changes, I would not object.

As for what versions to use: use PETSC/Trilinos/p4est/SUNDIALS/... versions
that were released *before* the deal.II release you want to use.

Best
Wolfgang

Victor Eijkhout

unread,
Jun 5, 2026, 9:07:15 AMJun 5
to deal.II User Group
I understand the problem in staying compatible with other packages.

That said, since your development branch *is* compataible, and you haven't had a release in almost a year, could you maybe have a new release?

V.

Wolfgang Bangerth

unread,
Jun 5, 2026, 11:48:57 AMJun 5
to dea...@googlegroups.com

On 6/5/26 07:07, Victor Eijkhout wrote:
>
> That said, since your development branch *is* compataible, and you
> haven't had a release in almost a year, could you maybe have a new release?

We're working on the 9.8 release.

I understand your pain, but it's also worth pointing out that even just
a dot release is around a week's worth of work for someone. It's not
just pulling a couple of patches onto another branch, but also running
test suites, updating docker images, distro packages, websites, etc.
We're all doing our best with the time and resources we have.

Best
W.
Reply all
Reply to author
Forward
0 new messages