LLNL / serac

Serac is a high order nonlinear thermomechanical simulation code
BSD 3-Clause "New" or "Revised" License
180 stars 33 forks source link

Not compatible with mfem-4.7 #1227

Open yurivict opened 3 weeks ago

yurivict commented 3 weeks ago

Build fails:

/usr/local/libexec/ccache/c++ -DH5_BUILT_AS_DYNAMIC_LIB -Dserac_numerics_EXPORTS -I/usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../.. -I/usr/ports/science/serac/work/.build/include -isystem /usr/local/include -isystem /usr/local/include/json-c -isystem /usr/local/include/gcc13 -isystem /usr/local/include/conduit -isystem /usr/local/include/lua54 -Wall -Wextra  -O2 -pipe -fstack-protector-strong -fno-strict-aliasing     -Werror  -Wshadow -Wdouble-promotion -Wconversion -Wundef -Wnull-dereference -Wold-style-cast  -Wpedantic -Wno-c++2a-extensions -Wunused-private-field  -O2 -pipe -fstack-protector-strong -fno-strict-aliasing   -DNDEBUG -std=c++17 -fPIC -pthread -DCONDUIT_RELAY_IO_MPI_ENABLED -DCONDUIT_BLUEPRINT_MPI_ENABLED -MD -MT src/serac/numerics/CMakeFiles/serac_numerics.dir/odes.cpp.o -MF src/serac/numerics/CMakeFiles/serac_numerics.dir/odes.cpp.o.d -o src/serac/numerics/CMakeFiles/serac_numerics.dir/odes.cpp.o -c /usr/ports/science/serac/work/serac-33946be/src/serac/numerics/odes.cpp
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/numerics/odes.cpp:7:
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/numerics/odes.hpp:19:
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/physics/boundary_conditions/boundary_condition_manager.hpp:18:
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/physics/boundary_conditions/boundary_condition.hpp:23:
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/physics/state/finite_element_state.hpp:23:
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/physics/state/finite_element_vector.hpp:22:
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/numerics/functional/functional.hpp:19:
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/numerics/functional/tensor.hpp:2059:
/usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/numerics/functional/tuple_tensor_dual_functions.hpp:737:31: error: expected ';' after expression
  737 |   mfem::DenseMatrixEigensystem eig_sys(matA);
      |                               ^
      |                               ;
/usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/numerics/functional/tuple_tensor_dual_functions.hpp:737:9: error: no member named 'DenseMatrixEigensystem' in namespace 'mfem'
  737 |   mfem::DenseMatrixEigensystem eig_sys(matA);
      |   ~~~~~~^
/usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/numerics/functional/tuple_tensor_dual_functions.hpp:737:32: error: use of undeclared identifier 'eig_sys'
  737 |   mfem::DenseMatrixEigensystem eig_sys(matA);
      |                                ^
/usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/numerics/functional/tuple_tensor_dual_functions.hpp:738:3: error: use of undeclared identifier 'eig_sys'
  738 |   eig_sys.Eval();
      |   ^
/usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/numerics/functional/tuple_tensor_dual_functions.hpp:744:17: error: use of undeclared identifier 'eig_sys'
  744 |     output[k] = eig_sys.Eigenvalue(k);
      |                 ^
/usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/numerics/functional/tuple_tensor_dual_functions.hpp:748:72: error: use of undeclared identifier 'eig_sys'
  748 |       tensor<double, size> phi = make_tensor<size>([&](int i) { return eig_sys.Eigenvector(k)[i]; });
      |                                                                        ^
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/numerics/odes.cpp:7:
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/numerics/odes.hpp:19:
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/physics/boundary_conditions/boundary_condition_manager.hpp:18:
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/physics/boundary_conditions/boundary_condition.hpp:23:
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/physics/state/finite_element_state.hpp:23:
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/physics/state/finite_element_vector.hpp:22:
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/numerics/functional/functional.hpp:22:
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/numerics/functional/integral.hpp:15:
In file included from /usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/numerics/functional/geometric_factors.hpp:3:
/usr/ports/science/serac/work/serac-33946be/src/serac/infrastructure/../../serac/numerics/functional/element_restriction.hpp:198:42: error: no member named 'Host' in 'axom::MemorySpace'
  198 |   axom::Array<DoF, 2, axom::MemorySpace::Host> dof_info;
      |                       ~~~~~~~~~~~~~~~~~~~^
chapman39 commented 1 week ago

The issue is likely that Serac builds against a version of mfem that's slightly past 4.7, so the API changes are likely what's causing the build failure. This is the mfem version we use: https://github.com/mfem/mfem/commit/057a5a43b067bf1507c0cb6d8165fdd153702b96