aspect
aspect copied to clipboard
Incompatible ASPECT dev with deal.II dev from before #14167
At the moment, trying to compile the current ASPECT main against deal.ii dev from 24 June fails in two places:
/home/bbpanneg/software/aspect/test_aspect_dev_07102022/aspect/source/postprocess/visualization.cc:620:20: error: ‘class dealii::DataOutFaces<3, 3>’ has no member named ‘write_deal_II_intermediate_in_parallel’; did you mean ‘write_deal_II_intermediate’?
620 | data_out.write_deal_II_intermediate_in_parallel(filename,
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| write_deal_II_intermediate
/home/bbpanneg/software/aspect/test_aspect_dev_07102022/aspect/source/simulator/stokes_matrix_free.cc:2524:36: error: ‘compute_no_normal_flux_constraints_on_level’ is not a member of ‘dealii::VectorTools’; did you mean ‘compute_no_normal_flux_constraints’?
2524 | dealii::VectorTools::compute_no_normal_flux_constraints_on_level(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| compute_no_normal_flux_constraints
This last place is related to https://github.com/dealii/dealii/pull/14167/ and https://github.com/geodynamics/aspect/pull/4962.
I can fix it by setting #if DEAL_II_VERSION_GTE(9,5,0)
to #if DEAL_II_VERSION_GTE(9,5,1)
in compat.h and source/postprocess/visualization.cc. Compiling against 9.3.3 also works.
Version details:
# ASPECT configuration:
# ASPECT_VERSION: 2.5.0-pre
# GIT REVISION: 3eef13142 (main)
# CMAKE_BUILD_TYPE: Release
#
# DEAL_II_DIR: /home/projects/bbp00039/fastscape_build_files/misc/deal.IIdev-master-24th-june-22/deal.IIdev-master/lib/cmake/deal.II
# DEAL_II VERSION: 9.5.0-pre
ASPECT dev is only guaranteed to work with a newer deal.II master. I know this is annoying sometimes but there is no good way to detect exactly when the necessary change inside deal II happened. Of course you can comment out stuff to often make things compile. Does that make sense?
Yes that makes sense.
I'm confused though about this:
- the function compute_no_normal_flux_constraints_on_level in compat.h is now in deal.II
- for an older deal.II that doesn't include that function, the function in compat.h is not found (e.g. for deal.II 9.4.0 or deal.II 9.5.0-pre)
- even though compat.h has
#if DEAL_II_VERSION_GTE(9,5,0)
for the compute_no_normal_flux_constraints_on_level function
This is how it looks like in compat.h: https://github.com/geodynamics/aspect/blob/3eef1314235db317da36e76bff00921a404d93d1/include/aspect/compat.h#L84
This mean the implementation is in there if you are not using 9.5 (so, 9.3 or 9.4). Starting with deal.II master that is newer than the ASPECT development version, the function is inside deal.II, so ASPECT does not define it.
Ah sorry, I see I forgot the !
in my messages above for compat.h.
But from what you're saying, it should work with 9.4 (which according to my colleague it didn't, but I didn't try that myself). I also expected it to work with 9.5.0-pre, as that seems smaller than 9.5.0, but that's probably not the case then. (It doesn't seem to be taken into account https://www.dealii.org/developer/doxygen/deal.II/config_8h_source.html#l00274).
9.5.0-pre counts as 9.5.0 and it has to in this case.
9.4 should work because we compile ASPECT with the 9.4 image on each pull request. Let me know if it doesn't.