geodynamics / aspect

A parallel, extensible finite element code to simulate convection in both 2D and 3D models.
https://aspect.geodynamics.org/
Other
223 stars 235 forks source link

Incompatible ASPECT dev with deal.II dev from before #14167 #4976

Closed anne-glerum closed 1 year ago

anne-glerum commented 1 year ago

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
tjhei commented 1 year ago

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?

anne-glerum commented 1 year ago

Yes that makes sense.

I'm confused though about this:

tjhei commented 1 year ago

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.

anne-glerum commented 1 year ago

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).

tjhei commented 1 year ago

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.