Recent Releases of gemini3d

gemini3d - release before Git submodule

making a working release wrapping up late 2022 and all 2023 changes, before implementing Git Submodules in Gemini3D.

CI passes:

  • Linux: GCC 9,10,11,12,13, Intel oneAPI 2024.0
  • macOS: GCC 13

- Fortran
Published by scivision about 2 years ago

gemini3d - bugfixes

Minor bugfixes. Made a point release before removing raw and netcdf file i/o

- Fortran
Published by scivision over 3 years ago

gemini3d - C++ redesign at function level

Gemini3D Fortran procedures are now generally available via C/C++ interface. Numerous other bugfixes

- Fortran
Published by scivision over 3 years ago

gemini3d - C/C++ re-architecture, packaging improved

Gemini3D functions were rearranged and provided with C/C++ interfaces, that allow allocating arrays in C/C++ and using from Fortran functions.

CMake packaging was improved to allow robust use from external programs, including removal of dummy install packages for hwm14, nc4fortran and h5fortran.

More robust Find* enacted, particularly for HDF5.

In general, better UX during configure.

Internet connectivity checked to avoid tests hanging for 3 minutes for offline systems that cURL doesn't otherwise detect. The connectivity check is bypassed by ctest --preset offline

- Fortran
Published by scivision almost 4 years ago

gemini3d - no autobuild

The "autobuild" feature enabled in Gemini3D since near the beginning of enabling CMake for it ~ 2019 had grown to beyond useful purpose. So many packages were in the hierarchy that rebuilding Gemini3D from scratch was becoming onerous.

We stripped out the autobuild features into https://github.com/gemini3d/external, which can either build all libraries, or just the missing/broken libraries, as how autobuild used to work within Gemini3D. The user can thus provide a combination of system/self-built/autobuild libraries via this separate repo, to avoid having to build all those libraries when a complete Gemini3D rebuild is desired.

- Fortran
Published by scivision about 4 years ago

gemini3d - C++ filesystem, fix periodic

Numerous other fixes to external libraries.

include periodic option that does not force constant in x3 thermosphere

Correct HWM14 implementation and test

- Fortran
Published by scivision about 4 years ago

gemini3d - autobuild Default mumps 5.3.5 to avoid patch issues

- Fortran
Published by scivision over 4 years ago

gemini3d - abstract input data

also numerous bugfixes uncovered by added tests recently.

Debug binaries have .debug filename sufffix

- Fortran
Published by scivision over 4 years ago

gemini3d -

  • new test reference data, after corrections to PyGemini
    • compareinput: also plotdiff
  • msis2: use error code 20 to signal not setup
  • HDF5 1.12.1 autobuild if needed
  • external libs can be static or shared
  • fixed array size error in conductivity gradient term
  • apply yitmp bounds fix from inputdata branch
  • autobuild: allow requested HDF5 version
  • rename 'msis20' => 'msis2' for future versions
  • modernize/flatten install
  • cli: dedupe options meant for interactive from MPI
  • add gemini3d.run -features to print enabled features
  • update pygemini plot_diff api
  • autobuild: ensure lapack/scalapack/mumps stack are consistent
  • don't use option(*_external) for libs as that overrides cache
  • link objects for robustness
  • ubuntu linking with self-build fixed
  • ci: add autobuild case
  • update all external lib versions (packaging improvements, avoid cache overrides)

- Fortran
Published by scivision over 4 years ago

gemini3d - build all Release default, gemini3d.run.debug bounds check exe

  • build any/all external libraries as Release by default
  • announce disabled tests instead of silently skipping
  • add read/write dump test. Correct file dump to be in simulation output directory.
  • update h5fortran,nc4fortran to use auto-length character read
  • add scripts to build OpenMPI and MPICH

- Fortran
Published by scivision over 4 years ago

gemini3d - introduce libgemini with C or Fortran frontend

As the first step of easing and generalizing access to Gemini3D from other libraries and programs, make a C CLI to complement the Fortran CLI. It's possible that the Fortran CLI will go away to be replaced by C CLI. From user's perspective little would change.

More FindHDF5 fixes based on user experiences

More MSIS 2.0 fixes--require /msis_version in HDF5 input instead of CLI argument for MSIS version. The CLI seemed to give intermittent all-zero output from MSIS 2.0. Added more MSIS 2.0 unit tests

Add requirements.json that's human readable. Using cmake -P scripts/requirements.cmake will print how to install the requirements on the user's particular computer.

- Fortran
Published by scivision over 4 years ago

gemini3d - BUGFIX MSIS2.0, enhancements to HDF5, grid and neutral

MSIS 2.0 has a known bug causing all-zero output acknowledged by the authors along with our patch applied in Gemini3D.

HDF5 is more easily found on MacOS, particularly with MacPorts and Homebrew, despite the presence of Anaconda Python.

Grid and Neutral enhancements by @mattzett

Minor Rearchitect gemini.bin to make amenable for libgemini future work

- Fortran
Published by scivision over 4 years ago

gemini3d - BUGFIX grid HDF5 read

fix segfault on large e.g. 600x600x600 simulations by fixing MatGemini to write proper scalar datasets, and h5fortran to verify scalar is read into scalar as array into scalar segfaults.

Also switched allocatable actual args to have intent(inout) dummy args, as forced reallocation results otherwise, which is unintended but Fortran standard 2003 behavior.

  • Added our own FindMPI as the vendor FindMPI is frequently a source of trouble as like vendor FindHDF5, it covers a large range of rare/old systems, and fails to work on our more up to date systems
  • ci: added JUnit dash demo
  • Find*.cmake: works better with CentOS packages
  • numerous magcalc improvements, and add magcalc.run frontend
  • remove Apple Silicon M1 workaround in anticipation of HWLOC 2.6, which we contributed to handling this and future Apple Silicon properly.

- Fortran
Published by scivision over 4 years ago

gemini3d - auto-close hdf5, netcdf files. works with GCC 7.5.0

As before, Gemini3D works with GCC 8, 9, 10, 11. Gemini3D also now works with GCC 7.5.0. GCC older than 7.5.0 is unlikely to work. For example GCC 7.4.0 is known to be broken.

Updated h5fortran,nc4fortran interfaces to auto-close files on leaving scope--still recommended to use %close() to be clear.

Fixed/updates Matlab self-tests, although Python is recommended as more complete as faster as before.

- Fortran
Published by scivision over 4 years ago

gemini3d - improve cli, remove unused code

- Fortran
Published by scivision over 4 years ago

gemini3d - new gridding system

abstract interface based grid, allowing more general grid types. MPI has been deembedded from the grid, allowing external program to interface with the grid more easily.

Numerous bug fixes and optimizations.

- Fortran
Published by scivision over 4 years ago

gemini3d - add magcalc.run frontend, functionalize

improve quality of .run frontends with functionalization and reuse

  • gemini3d.run
  • magcalc.run

- Fortran
Published by scivision almost 5 years ago

gemini3d - update HDF5 for stability/performance

  • patched Zlib 2.0.3 (will be included in next Zlib-ng release) to work with GCC mpicc
  • make h5fortran internals TKR interface procedure instead of select type for robustness and runtime improvements

- Fortran
Published by scivision almost 5 years ago

gemini3d - correct behaviors

  • Option to disable TLS verification (discourage unless your computer has broken certificates, just for debugging) -DCMAKETLSVERIFY=off. Default is TLS verify on
  • Option to fall back to unmaintained Zlib 1.x. Zlib 2.x works on most systems and is significantly faster for compressed HDF5 operations. -Dzlib_legacy=on. Default is to use Zlib 2.x
  • check that TLS working from CMake before downloading to avoid confusing errors when user's CMake doesn't have SSL or TLS certificates are broken.

gemini3d.run: correct behavior on Windows. Also in general allow running from same directory or other directory.

- Fortran
Published by scivision almost 5 years ago

gemini3d - HDF5 install robustness. CMake >= 3.19 required

HDF5 is crucial to Gemini3D functionality. We overhauled how HDF5 is found and linked via h5fortran. To help make Gemini3D more robust build overall, we now require CMake >= 3.19 to build Gemini3D.

To run the full Gemini3D self-tests required CMake >= 3.20 as before. Intel compilers also require CMake >= 3.20 in general.

A recent CMake release (usually the latest) is available almost instantly by:

sh cmake -P gemini3d/scripts/install_cmake.cmake

- Fortran
Published by scivision almost 5 years ago

gemini3d - Features added, CMake >= 3.20 for full test

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

- Fortran
Published by scivision almost 5 years ago

gemini3d - Cmake external project

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 sh cmake -P scripts/install_cmake.cmake if you have old CMake

- Fortran
Published by scivision almost 5 years ago

gemini3d - performance

  • 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

- Fortran
Published by scivision almost 5 years ago

gemini3d - packaging improvements

  • 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

- Fortran
Published by scivision almost 5 years ago

gemini3d - packaging, gemini3d.run cli options

- Fortran
Published by scivision almost 5 years ago

gemini3d - bugfixes

  • 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

- Fortran
Published by scivision about 5 years ago

gemini3d - bugfix: hdf5 2d east-west write permute

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

- Fortran
Published by scivision about 5 years ago

gemini3d - strengthen fortran front-end

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

- Fortran
Published by scivision about 5 years ago

gemini3d - modularize cli help for better human and external script use

- Fortran
Published by scivision about 5 years ago

gemini3d - refactor background modeling, enhance magcalc

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.

- Fortran
Published by scivision about 5 years ago

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.

- Fortran
Published by scivision about 5 years ago

gemini3d - 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: geminiprereq.cmake, installhwloc.cmake

ci: autobuild in own workflow to save CI resources

gemini.bin: print MSIS 2.0/00 status at start

- Fortran
Published by scivision about 5 years ago

gemini3d - 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:2dnsfang:dryrun Test #2: gemini:hdf5:2dnsfang Test #3: gemini:compare:hdf5:2dnsfang Test #4: gemini:hdf5:2dewfang:dryrun Test #5: gemini:hdf5:2dewfang Test #6: gemini:compare:hdf5:2dewfang Test #7: gemini:hdf5:3dfang:dryrun Test #8: gemini:hdf5:3dfang Test #9: gemini:compare:hdf5:3dfang Test #10: gemini:hdf5:2dnsglow:dryrun Test #11: gemini:hdf5:2dnsglow Test #12: gemini:compare:hdf5:2dnsglow Test #13: gemini:hdf5:2dewglow:dryrun Test #14: gemini:hdf5:2dewglow Test #15: gemini:compare:hdf5:2dewglow Test #16: gemini:hdf5:3dglow:dryrun Test #17: gemini:hdf5:3dglow Test #18: gemini:compare:hdf5:3dglow Test #19: unit:geminiexeok Test #20: unit:magcalcexeok Test #21: unit:mpibasic Test #22: unit:scalapack Test #23: unit:mumpsbasic Test #24: unit:fangIonize Test #25: glowbasic 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:compilervendor Test #35: unit:DateFormats Test #36: unit:DateRollover Test #37: unit:SolarZenithAngle ```

- Fortran
Published by scivision about 5 years ago

gemini3d - 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

- Fortran
Published by scivision about 5 years ago

gemini3d - 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

- Fortran
Published by scivision about 5 years ago

gemini3d - 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:

```sh cmake -B build -Dmsis20=yes

cmake --build build ```

As part of this upgrade, the MSIS data exchange now uses HDF5 files under the simulation inputs/ directory.

- Fortran
Published by scivision about 5 years ago

gemini3d - Enhance compiler detection

Better auto-detection of compatible compilers. This is especially useful for MacOS where clang masquerades as GCC.

- Fortran
Published by scivision over 5 years ago

gemini3d - many bugfixes

bugfixes

  • checkfiniteoutput 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

- Fortran
Published by scivision over 5 years ago

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

- Fortran
Published by scivision over 5 years ago

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

- Fortran
Published by scivision over 5 years ago

gemini3d - enhance robustness of build system

  • add self tests
  • give better user feedback when a library is missing or not working

- Fortran
Published by scivision over 5 years ago

gemini3d - Add numerous checks, simplify CLI

  • gemini.bin command line now has only one mandatory argument: the top-level output directory. The inputs/config.nml should already be in there when gemini.bin is run.
  • if the user doesn't specify an output file_format, Gemini.bin will use the same file format as the input/simsize.*.
  • Check for NaNs and impossible values in several more places.
  • correct potential source calculation error
  • eliminate stack overflow in tests by using allocate()
  • allow non-MPI unit tests to build even without MPI
  • auto-download and auto-setup PyGemini if needed
  • eliminate duplicative specification of "flags" in config.nml. Use presence of namelists to determine if an input is desired.
  • allow namelists to be read in a different order than in file
  • move all Python scripts to PyGemini except for bare minimum used for self-tests
  • add optional EIA namelist
  • make several .f90 files generated to cut down on linking for minimal parameters (faster parallel builds)
  • add -dryrun to CI
  • update reference data URL

- Fortran
Published by scivision over 5 years ago

gemini3d - robustness: add dryrun

  • add gemini.bin -dryrun used by job.py to help avoid HPC queuing for simple errors on first time step
  • Make job.py / plasma.py build msis_setup more reliably
  • cleanup python packaging
  • remove needless file copying from Fortran

- Fortran
Published by scivision almost 6 years ago

gemini3d - bugfix: nml flag defaults

set safe defaults for NML flags. Under certain conditions they could default non-zero otherwise and cause simulation to hang early just after first time step.

remove unneeded code from job.py

job.py: allow manual specify max cpu count, handy for HPC where you be submitting to different node.

- Fortran
Published by scivision almost 6 years ago

gemini3d - bugfix and add check: MPI count

Fixed a bug where MPI image count was incorrect on some systems, and added test to mpi_basic to check for this.

add implicit none (type, external) for robustness

- Fortran
Published by scivision almost 6 years ago

gemini3d - bugfix: hdf5/netcdf detect

  • general code quality via use of Fortran 2018 implicit none (external)
  • fix bug where on some systems h5fortran / nc4fortran / hdf5 / netcdf4 would falsely not be found
  • remove many preprocessed files instead using configure_file generated Fortran source for clarity
  • make msis_setup more robust to use from external Python / Matlab programs
  • do compiler/library checks with clearer failure messages
  • add more feature printouts to final summary to help users understand their configuration

- Fortran
Published by scivision almost 6 years ago

gemini3d - bugfix, quality

  • CMake: enhancements to make CDash and console output prettier
  • Docs: split Readme into several linked files and update to current info
  • grid: enhance grid_check. Still need to make checks stronger for manual MPI count specification #17
  • use gemini_cfg for more parameters
  • general code quality and lint

- Fortran
Published by scivision almost 6 years ago

gemini3d - Bugfix: grid size check, add cli flag parser, output.nml

- Fortran
Published by scivision almost 6 years ago

gemini3d - add netcdf, CDash, better CLI, fix memory leak

  • add CDash
  • add NetCDF4 option, by default off, while HDF5 is default on
  • improve Gemini.bin CLI to be flag-based
  • fix memory leak in vendor/lapack95 that would silently crash larger sims with SIGKILL 9
  • fix GCC 9.3.0 by removing redundant use

- Fortran
Published by scivision almost 6 years ago

gemini3d - multi-type file io: raw, hdf5. cleanup

  • allow raw, hdf5, netcdf file IO without recompile
  • make MSIS-Python interface use stdin/stdout pipes instead of files
  • enable Fortran HDF5 write compression automatic
  • NetCDF is not yet fully working, needs to be debugged, but it's mostly implemented.
  • move Matlab, archive to own repos
  • add h5diff-based test--in case Python numeric libraries are messed up, h5diff is standalone test.

- Fortran
Published by scivision almost 6 years ago

gemini3d - last version with Matlab. Python standalone, refactor

  • make Python initial setup scripts standalone i.e. not requiring PyGemini install first
  • last release containing Matlab scripts

- Fortran
Published by scivision almost 6 years ago

gemini3d - allow MSYS2 windows to work, bugfix, cleanup

  • for CMake >= 3.15, enforce CMP0094 which greatly improves Python finding
  • allow MS-MPI to work, useful for MSYS2 Gfortran.
  • only directly reference MPI module in the mpimod.f90 (and some unit tests)

Now there are four ways to run Gemini on Windows:

  • Cygwin
  • WSL
  • Intel
  • MSYS2

- Fortran
Published by scivision almost 6 years ago

gemini3d - PyGemini refactor/rename/move directories

Also quick workaround for Intel on Windows, it needs DLLs in the gemini.bin directory, having the DLLs in PATH didn't help. This can conflict with Python however for ctest.

To give better visibility to skipped tests, use DISABLED test property so they show up in test list, not just silently ignored.

For the moment, Meson is disabled as CMake >= 3.15 did what we originally needed Meson for.

- Fortran
Published by scivision almost 6 years ago

gemini3d - all Python PyGemini: initial release

Replicate and enhance all necessary functionality from Matlab in Python. Matlab is no longer needed, primary use of Gemini is now from Python.

Simulations are completely defined in config.nml. If additional functions are added to Python, add fields / group to config.nml and Python will read it so your function can access the new parameters. Likewise for Fortran.

Main Python programs:

  • job.py: setup and run a simulation, or generate HPC batch script if HPC detected
  • vis/plotall.py: plot all quantities output from simulation
  • scriptutils/compareall.py: compare simulation outputs with reference output from same files (validate code changes)
  • setup/model_setup.py: setup a simulation without running it

- Fortran
Published by scivision almost 6 years ago

gemini3d - HDF5 groundwork, python functionalize, lapack autobuild

last release before big Matlab API change of v0.3.0

- Fortran
Published by scivision about 6 years ago

gemini3d - KHI JGR version of code

Andres et al 2020.

- Fortran
Published by mattzett about 6 years ago