FATODE icon indicating copy to clipboard operation
FATODE copied to clipboard

Create cmake library targets and install

Open K20shores opened this issue 2 years ago • 0 comments

Howdy!

This PR adds support for a few things

  • A Cmake target called FATODE which adds the sources for all three types, FWD, TLM, and ADJ
  • Changes the names of the LS_Solver.F90 files so that they can all be included in one library. There is a possibility here to remove redundant code but I will leave that up to the original authors.
  • Converts all of the examples into tests
  • Adds three dockerfiles to build FATODE with either full algebra support, suitespare UMFPACK, or SuperLU support
  • Github actions that build the docker files and run the tests in these files automatically
  • The ability to install FATODE
  • The ability to use the installed FATODE target with find_package in cmake
  • This is also ready to be packaged with cpack, though I didn't do more than verify that I could package this project with cpack. I would be happy to discuss helping you package this to linux package managers and/or homebrew, if that is of interest.

There are a few caveats:

  • The tests are simply runs of the examples. They fail if the program exits with a nonzero exit code or if the test times out (this happens for a few of them)
  • These tests timeout:
    • swe_erk_adj (Timeout)
    • swe_rk (Timeout)
    • swe_rk_adj (Timeout)
    • swe_ros (Timeout)
    • swe_ros_adj (Timeout)
    • swe_sdirk_adj (Timeout)
  • I changed to the version that SuperLU offers on their github, version 5.3.0. Their API has changed, I attempted to change the fortran code appropriately but was unsuccessful. As of now, all tests when building FATODE with SuperLU fail. I will not invest time, but if you happen to know what changes need to be made and can explain them, I wouldn't mind attempting to correct it.
  • Again, I won't invest time in to figuring out why these tests time out. However, if you can identify why and can describe it, I can make an attempt at fixing it.

Because some tests timeout and all tests fail when building with SuperLU, the github actions currently fail, but correcting these instances will make them pass.

I look forward to any comments that you have about this!

K20shores avatar Apr 04 '23 22:04 K20shores