Skip to content

Releases: gemini3d/gemini3d

Features added, CMake >= 3.20 for full test

30 Apr 15:14
fa7617a

Choose a tag to compare

Since CMake >= 3.20 is required for Intel compilers and to reduce maintenance burden due to numerous features added in CMake 3.20, full features of Gemini3D self-tests now requires CMake >= 3.20. Gemini3d can still build and run some unit tests with CMake >= 3.13. For best robustness of build and test, we recommended CMake >= 3.20.

Features added:

  • add ability to expand environment variables into paths in config.nml. This is a more robust / general method than fixed absolute paths in config.nml. For example, @GEMINI_SIMROOT@ starting a path in config.nml tells Gemini to read environment variable GEMINI_SIMROOT and inject it there
  • improve gemini3d.compare considerably, covering more quantities and adding ability to use Python or Matlab to plot differences detected
  • use newer Glow version that corrects bugs leading to NaN in output data
  • gemini3d.run frontend: more effective at finding low-level gemini.bin
  • added ability to ctest -R download to one-time download test reference data for systems that are normally offline
  • ExternalProject: use better options to avoid constantly rebuilding external libraries
  • Mumps >= 5.4.0 uses an enhanced build technique with better source code traceability

Cmake external project

01 Apr 08:14
a6a9c7b

Choose a tag to compare

Use ExternalProject instead of FetchContent for project scope separation and flexibility. This has recently become performant via enhancements to CMake ExternalProject.

Turn TLS verification for all Git and Download operations

Find MPIexec more robustly

write more metadata for easier simulation reading

Full Gemini3D functionality continues to require CMake >= 3.19. Intel Fortran requires Cmake >= 3.20. Please run

cmake -P scripts/install_cmake.cmake

if you have old CMake

performance

24 Mar 15:04
4efd41d

Choose a tag to compare

  • default build to Release (-O3 typically) for significantly faster runtime, in case you weren't using CMake preset
  • MSIS: don't use HDF5 compact dataset, as larger sims will exceed 64K dataset size
  • gemini3d.run: improve auto-CPU detection and warn if mpiexec not specified, as incompatible MPIexec can cause frozen runs

packaging improvements

16 Mar 07:06
7ddd907

Choose a tag to compare

  • gemini3d.run -plan: print MPI image count on own line for tool parsing
  • scripts/CMakeLists.txt to build and install prereq packages
  • read_dnew2d: adapt to proper and workaround read
  • gemini3d.run: apple M1 workaround CPU count
  • ctest labels
  • improve mumps link robustness
  • h5fortran: fix findhdf5
  • h5fortran 3.6.5 self-find HDF5
  • mat_gemini v4.1.6

packaging, gemini3d.run cli options

01 Mar 07:47
1f66064

Choose a tag to compare

v0.10.2

pygemini 1.3.2

bugfixes

22 Feb 23:41
8d4223f

Choose a tag to compare

  • h5fortran v3.5.2 improves read() operations to check type and size versus the variable (rank and dims were already checked). This helps avoid weird results when compiler optimizations made glitches with edge cases
  • workaround for GCC-10 with MSYS and -O3 causing random date for MSIS
  • several fixes to advanced simulation types discovered while creating more expansive offline CI suite

bugfix: hdf5 2d east-west write permute

12 Feb 06:02
787168f

Choose a tag to compare

  • enhance cmake FetchContent stack to work while simultaneously capable of exporting targets
  • permute HDF5 plasma axes for swapaxis case to allow restart. Update gemini3d.compare for this.
  • correct Magcalc.bin MPI issues

Downlaoder enhanced: will now auto-update data when new md5's given. Previously it would never update if the folder or .zip existed.

strengthen fortran front-end

08 Feb 05:23
36155a4

Choose a tag to compare

Strengthen Fortran front-end gemini3d.run in several ways

  • add optional md5 checksum to downloads
  • make reference data downloads automatic, occurring at ctest time by CMake fixtures
  • integrate hwloc in a more discrete, sensible way under src/utils/hwloc.
  • add msis unit tests
  • organize gemini3d.bin tests in a more hierarchal way, unit testing low level parts first

UX: add recommendations at end of Cmake configuration printout. For example;

  • suggesting Ninja if Make is being used
  • suggesting newer CMake as appropriate
  • suggesting hwloc use

Added CMake scripts to install/build CMake, Ninja or hwloc, starting from CMake >= 3.7

Raspberry Pi 4 results

Using system lapack, self-built Scalapack 2.1.0, MUMPS 5.3.5

$ ctest
Test project /home/pi/code/gemini3d/build
      Start 49: unit:HWLOC
 1/49 Test #49: unit:HWLOC .......................   Passed    0.06 sec
      Start 28: unit:mpi_basic
 2/49 Test #28: unit:mpi_basic ...................   Passed    1.50 sec
      Start 29: unit:scalapack
 3/49 Test #29: unit:scalapack ...................   Passed    0.45 sec
      Start 30: unit:mumps_basic
 4/49 Test #30: unit:mumps_basic .................   Passed    0.46 sec
      Start 27: unit:gemini_exe_ok
 5/49 Test #27: unit:gemini_exe_ok ...............   Passed    0.02 sec
      Start  1: gemini:2dns_fang:setup
 6/49 Test  #1: gemini:2dns_fang:setup ...........   Passed    0.66 sec
      Start  2: gemini:hdf5:2dns_fang:dryrun
 7/49 Test  #2: gemini:hdf5:2dns_fang:dryrun .....   Passed    0.73 sec
      Start  3: gemini:hdf5:2dns_fang
 8/49 Test  #3: gemini:hdf5:2dns_fang ............   Passed   17.72 sec
      Start  4: gemini:compare:hdf5:2dns_fang
 9/49 Test  #4: gemini:compare:hdf5:2dns_fang ....   Passed    0.29 sec
      Start  5: gemini:2dew_fang:setup
10/49 Test  #5: gemini:2dew_fang:setup ...........   Passed    0.97 sec
      Start  6: gemini:hdf5:2dew_fang:dryrun
11/49 Test  #6: gemini:hdf5:2dew_fang:dryrun .....   Passed    0.73 sec
      Start  7: gemini:hdf5:2dew_fang
12/49 Test  #7: gemini:hdf5:2dew_fang ............   Passed   23.69 sec
      Start  8: gemini:compare:hdf5:2dew_fang
13/49 Test  #8: gemini:compare:hdf5:2dew_fang ....   Passed    0.39 sec
      Start  9: gemini:3d_fang:setup
14/49 Test  #9: gemini:3d_fang:setup .............   Passed    2.07 sec
      Start 10: gemini:hdf5:3d_fang:dryrun
15/49 Test #10: gemini:hdf5:3d_fang:dryrun .......   Passed    0.94 sec
      Start 11: gemini:hdf5:3d_fang
16/49 Test #11: gemini:hdf5:3d_fang ..............   Passed  138.21 sec
      Start 12: gemini:compare:hdf5:3d_fang
17/49 Test #12: gemini:compare:hdf5:3d_fang ......   Passed    0.85 sec
      Start 13: gemini:2dns_glow:setup
18/49 Test #13: gemini:2dns_glow:setup ...........   Passed    0.77 sec
      Start 14: gemini:hdf5:2dns_glow:dryrun
19/49 Test #14: gemini:hdf5:2dns_glow:dryrun .....   Passed    1.22 sec
      Start 15: gemini:hdf5:2dns_glow
20/49 Test #15: gemini:hdf5:2dns_glow ............   Passed   46.21 sec
      Start 16: gemini:compare:hdf5:2dns_glow
21/49 Test #16: gemini:compare:hdf5:2dns_glow ....   Passed    0.31 sec
      Start 17: gemini:2dew_glow:setup
22/49 Test #17: gemini:2dew_glow:setup ...........   Passed    0.80 sec
      Start 18: gemini:hdf5:2dew_glow:dryrun
23/49 Test #18: gemini:hdf5:2dew_glow:dryrun .....   Passed    1.31 sec
      Start 19: gemini:hdf5:2dew_glow
24/49 Test #19: gemini:hdf5:2dew_glow ............   Passed   69.28 sec
      Start 20: gemini:compare:hdf5:2dew_glow
25/49 Test #20: gemini:compare:hdf5:2dew_glow ....   Passed    0.44 sec
      Start 21: gemini:3d_glow:setup
26/49 Test #21: gemini:3d_glow:setup .............   Passed    1.14 sec
      Start 22: gemini:hdf5:3d_glow:dryrun
27/49 Test #22: gemini:hdf5:3d_glow:dryrun .......   Passed    4.32 sec
      Start 23: gemini:hdf5:3d_glow
28/49 Test #23: gemini:hdf5:3d_glow ..............   Passed  368.89 sec
      Start 24: gemini:compare:hdf5:3d_glow
29/49 Test #24: gemini:compare:hdf5:3d_glow ......   Passed    0.96 sec
      Start 25: scalapack:BLACSbasic
30/49 Test #25: scalapack:BLACSbasic .............   Passed    0.40 sec
      Start 26: scalapack:unit:real64
31/49 Test #26: scalapack:unit:real64 ............   Passed    0.44 sec
      Start 31: unit:msis_setup
32/49 Test #31: unit:msis_setup ..................   Passed    0.03 sec
      Start 32: unit:msis_compare
33/49 Test #32: unit:msis_compare ................   Passed    0.03 sec
      Start 33: unit:fangIonize
34/49 Test #33: unit:fangIonize ..................   Passed    0.06 sec
      Start 34: glow_basic
35/49 Test #34: glow_basic .......................   Passed    0.04 sec
      Start 35: unit:interp1
36/49 Test #35: unit:interp1 .....................   Passed    0.01 sec
      Start 36: unit:interp2
37/49 Test #36: unit:interp2 .....................   Passed    0.20 sec
      Start 37: unit:interp3
38/49 Test #37: unit:interp3 .....................   Passed   14.59 sec
      Start 38: unit:diffusion1
39/49 Test #38: unit:diffusion1 ..................   Passed    0.11 sec
      Start 39: unit:potential2
40/49 Test #39: unit:potential2 ..................   Passed   14.51 sec
      Start 40: unit:mpi:excessCPU
41/49 Test #40: unit:mpi:excessCPU ...............   Passed    0.01 sec
      Start 41: unit:pathlib
42/49 Test #41: unit:pathlib .....................   Passed    0.02 sec
      Start 42: unit:namelist
43/49 Test #42: unit:namelist ....................   Passed    0.01 sec
      Start 43: unit:compiler_vendor
44/49 Test #43: unit:compiler_vendor .............   Passed    0.00 sec
      Start 44: unit:DateFormats
45/49 Test #44: unit:DateFormats .................   Passed    0.00 sec
      Start 45: unit:DateRollover
46/49 Test #45: unit:DateRollover ................   Passed    0.01 sec
      Start 46: unit:SolarZenithAngle
47/49 Test #46: unit:SolarZenithAngle ............   Passed    0.00 sec
      Start 47: unit:magcalc_exe_ok
48/49 Test #47: unit:magcalc_exe_ok ..............   Passed    0.01 sec
      Start 48: unit:gemini3d_run_ok
49/49 Test #48: unit:gemini3d_run_ok .............   Passed    0.02 sec

refactor background modeling, enhance magcalc

05 Feb 20:28
36155a4

Choose a tag to compare

always build gemini3d.compare so that when BUILD_TESTING=off, only the basic gemini.bin tests remain built and runnable by ctest. Because of the complexity of the stack, it's not wise to build absolutely no tests. At least one should ensure the gemini.bin numerics function correctly.

modularize cli help for better human and external script use

05 Feb 21:49
f352c70

Choose a tag to compare

v0.9.1

help module for cli, gemini3d.run enhance cli