Releases: gemini3d/gemini3d
bugfix h5fortran
Update h5fortran to v3.4.9, which fixes the problem of detecting a broken HDF5 install, but then ZLIB::ZLIB conflicts with the autobuild HDF5.
BUGFIX autogrid, more robust CPU detect via hwloc
BUGFIX: add auto_mpi check and fix 2d mpi partition
-
enhance UI/UX for gemini3d.compare--print all errors then fail, rather than fail instantly on first mismatch. Also check for more types of errors
-
gemini3d.run: find hwloc more reliably. HWLOC is recommended to make gemini3d.run auto-CPU detect more robust. Otherwise, you might need to manually specify your computer CPU count, which can lead to mistakes eventually.
-
MSISE00: ap(7) for > Fortran 77 compliance on Intel compilers
Installers added: gemini_prereq.cmake, install_hwloc.cmake
ci: autobuild in own workflow to save CI resources
gemini.bin: print MSIS 2.0/00 status at start
full self-test without Python/Matlab, bugfixes
- correct long-standing bug in auto-grid partition that could lead to runtime crashes or extremely erroneous results
- make Gemini3D self-tests completely work without Python or Matlab. This is beneficial to HPC environments where Python setup can take additional setup configuration.
- allow reference data download to work with CMake >= 3.13
- add CI case for CMake 3.13
gemini3d.run
- Detect CPU count of host. This is an open computing problem in general across operating systems; we have made a reasonable effort. CPU count can be manually specified.
gemini3d.compare
Add basic output file comparison for self-test
ctest list
cmake -B build
cmake --build build
ctest -N
Test project gemini3d/build
Test #1: gemini:hdf5:2dns_fang:dryrun
Test #2: gemini:hdf5:2dns_fang
Test #3: gemini:compare:hdf5:2dns_fang
Test #4: gemini:hdf5:2dew_fang:dryrun
Test #5: gemini:hdf5:2dew_fang
Test #6: gemini:compare:hdf5:2dew_fang
Test #7: gemini:hdf5:3d_fang:dryrun
Test #8: gemini:hdf5:3d_fang
Test #9: gemini:compare:hdf5:3d_fang
Test #10: gemini:hdf5:2dns_glow:dryrun
Test #11: gemini:hdf5:2dns_glow
Test #12: gemini:compare:hdf5:2dns_glow
Test #13: gemini:hdf5:2dew_glow:dryrun
Test #14: gemini:hdf5:2dew_glow
Test #15: gemini:compare:hdf5:2dew_glow
Test #16: gemini:hdf5:3d_glow:dryrun
Test #17: gemini:hdf5:3d_glow
Test #18: gemini:compare:hdf5:3d_glow
Test #19: unit:gemini_exe_ok
Test #20: unit:magcalc_exe_ok
Test #21: unit:mpi_basic
Test #22: unit:scalapack
Test #23: unit:mumps_basic
Test #24: unit:fangIonize
Test #25: glow_basic
Test #26: unit:interp1
Test #27: unit:interp2
Test #28: unit:interp3
Test #29: unit:diffusion1
Test #30: unit:potential2
Test #31: unit:mpi:excessCPU
Test #32: unit:pathlib
Test #33: unit:namelist
Test #34: unit:compiler_vendor
Test #35: unit:DateFormats
Test #36: unit:DateRollover
Test #37: unit:SolarZenithAngle
CMake >= 3.13 compatible
- allow CMake >= 3.13. CMake >= 3.17 + Ninja recommended for speed + stability
- add hwm14 stub and test
- add MPI fortran config test
better cmake
cmake -Ddownload=yes -Dpython=no to run some more simulation tests without PyGemini--previously, no simulation tests could be run without PyGemini (Gemini itself however runs without needing Python, Python just makes it easer)
Added Intel Fortran discovery again
Made MatGemini and PyGemini integrations more robust
Made all external libraries more robust and command line switchable sync
add MSIS 2.0 option
By default Gemini3D uses MSISE00. The new MSIS 2.0 is more accurate in many regards, and can be enabled by:
cmake -B build -Dmsis20=yes
cmake --build buildAs part of this upgrade, the MSIS data exchange now uses HDF5 files under the simulation inputs/ directory.
Enhance compiler detection
Better auto-detection of compatible compilers. This is especially useful for MacOS where clang masquerades as GCC.
many bugfixes
bugfixes
- check_finite_output checks on all images, not just root (more robust early failure when a sim doesn't converge)
- correct linking of Mumps-Scalapack-Lapack--remove linking hacks, use modern CMake INTERFACE to eliminate redundant and buggy duplicate link specifications
- improve PyGemini interface robustness to use
python -m gemini.<method> - fix CMake infinite loop when called from MatGemini
Features
- select Fang 2008 (maxwellian) or Fang 2010 (monoenergetic) models
- improve test parallelism
Improve HDF5 finding, make many self-tests optional
While normally new users or new systems should have all self-tests run, to save build time we add the option to disable many self-tests with cmake -DBUILD_TESTING=off. If any problem is experienced, it's best to use self-tests as they tell more specifically where the problem is occurring.
HDF5 finding behavior improved.
Can use without MPI
New users may not have MPI or Scalapack installed, or may have broken versions of those libraries. Although real work with Gemini benefits greatly from parallelism, we don't want to lose new users who get frustrated. Better to have their simulations successfully run, then they can get MPI working to speed up their runs.
This works with either autobuild Mumps or if a user separately installed Mumps with cmake -Dparallel=no option.