This PR refactors main.f90 to function as a utility program rather than a core part of the code's calculations. While this may seem minor, it improves the testability of the obs2ioda code base and enhances memory safety by reducing global memory usage. Notably, this refactor exposed a significant out-of-bounds array error in the ncio module.
I still need to rebase this on the latest main branch to incorporate recent CMake changes. This PR does not include the C++ refactoring required for ioda3 format support. However, merging these changes first will simplify that upcoming PR.
This PR refactors
main.f90
to function as a utility program rather than a core part of the code's calculations. While this may seem minor, it improves the testability of theobs2ioda
code base and enhances memory safety by reducing global memory usage. Notably, this refactor exposed a significant out-of-bounds array error in thencio
module.I still need to rebase this on the latest
main
branch to incorporate recent CMake changes. This PR does not include the C++ refactoring required for ioda3 format support. However, merging these changes first will simplify that upcoming PR.