For 64 bit integer builds AMReX has this test in their code CMakeFiles/amrex.dir/F_Interfaces/Base/AMReX_multifab_mod.F90.o /lcrc/project/PhloughToolz/petsc/petsc-3.17.0_oneAPI_2021.4.0.3422/externalpackages/git.amrex/Src/Extern/PETSc/AMReX_PETSc.cpp(44): error: static assertion failed with "HYPRE_Int != PetscInt" static_assert(std::is_same<HYPRE_Int, PetscInt>::value, "HYPRE_Int != PetscInt");
Currently, hypre uses long lont int for 64 bit integers, PETSc depending on what MPI and integer types are available uses int64_t but may fall back to long long int. This means depending on configuration information the PETSc built hypre and PETSc may or may not be compatible by the AMReX tests for C++ code. What is the correct general fix for this three-body problem? Will the C++ code in AMReX, which presumably is template-and-polymorphic-method-city, fail if the long long int and int64_t are mixed and treated as the same (that is one just removes the is_same() check)? Clearly, the easiest fix Do HYPRE and PETSc configure need to have command-line options to allow controlling exactly the type used to ensure matching? Something else? Barry