nextsimhub / nextsimdg

neXtSIM_DG : next generation sea-ice model with DG
https://nextsim-dg.readthedocs.io/en/latest/?badge=latest
Apache License 2.0
10 stars 13 forks source link

Get around the "deleted function" error #609

Open einola opened 4 months ago

einola commented 4 months ago

Workaround for "deleted function" compilation error

Fixes #594

Task List


Change Description

When compiling with the Intel compiler, we get an error: the default constructor of "Nextsim::DynamicsKernel<6, 8>" cannot be referenced -- it is a deleted function. The solution proposed here is not to use the = default keyword but to manually define a constructor that sets the key parameters to sensible default values.

It is not clear why the other compilers don't flag this.

The compiler warns that warning #2196: routine is both "inline" and "noinline" for a few of the tests (and only tests), but I don't know how to fix that one.


Test Description

The model compiles and (almost) all tests run.


Documentation Impact

N/A


Other Details

N/A


Pre-Request Checklist

Please complete your pull request description and delete the instructional text before submitting.

Congratulations and thank you for making your contribution to neXtSIM_DG!

einola commented 4 months ago

There are still two problems with this PR:

  1. Not all the tests pass
  2. The Intel compiler generates several warnings.

The TOPAZOn_test failure is:

===============================================================================
/cluster/home/einola/src/nextsimdg/physics/test/TOPAZOcn_test.cpp:28:
TEST SUITE: TOPAZOcean
TEST CASE:  TOPAZOcean test

/cluster/home/einola/src/nextsimdg/physics/test/TOPAZOcn_test.cpp:76: FATAL ERROR: REQUIRE( sst(45, 35) == -(0 + targetFrac) ) is NOT correct!
  values: REQUIRE( -0.035045 == -0.035045 )

The ConfigOutput_test failure is:

===============================================================================
/cluster/home/einola/src/nextsimdg/core/test/ConfigOutput_test.cpp:35:
TEST SUITE: ConfigOutput
TEST CASE:  Test periodic output

/cluster/home/einola/src/nextsimdg/core/test/ConfigOutput_test.cpp:35: FATAL ERROR: test case CRASHED: SIGSEGV - Segmentation violation signal

The ParaGrid_test failure is:

===============================================================================
/cluster/home/einola/src/nextsimdg/core/test/ParaGrid_test.cpp:457:
TEST SUITE: ParaGrid
TEST CASE:  Check if a file with the old dimension names can be read

/cluster/home/einola/src/nextsimdg/core/test/ParaGrid_test.cpp:457: ERROR: test case THREW exception: No such file or directory
file: ncFile.cpp  line:88: old_names.nc

The warning is warning #2196: routine is both "inline" and "noinline", and this is issued for:

einola commented 4 months ago

I suggest we merge this and open a new issue to get the tests running using the Intel compiler.

einola commented 4 months ago

Unfortunately, neither the integration test, nor the dynamics benchmark run. In both cases, the model seg faults and dumps the core.