Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Remove gfsio library from NCEPLIBS #123

Open
edwardhartnett opened this issue Sep 29, 2020 · 10 comments
Open

Remove gfsio library from NCEPLIBS #123

edwardhartnett opened this issue Sep 29, 2020 · 10 comments
Assignees
Labels
enhancement New feature or request

Comments

@edwardhartnett
Copy link
Contributor

Should the gfsio library be removed from NCEPLIBS?

@Hang-Lei-NOAA
Copy link
Contributor

George V: need board survey; post also use it, we may have more entry points for this lib.

@edwardhartnett
Copy link
Contributor Author

George will take a stab at removing gfsio from post and get back to us.

@GeorgeVandenberghe-NOAA

it's going to take more than commenting out GFSIO stuff in ncep_post with a sed script. gfsio also defines a data API and has modules with the types defined so stripping this stuff with sed is beyond my sed ability.

However it looks like all of the GFSIO stuff is confined to a few high level routines which are not called with current workflows so we can get rid of THEM and then all of the gfsio stuff is no longer needed. Working on that.

gfsio is an I/O option for the NCEP GFS so any codes (Global ensembles and CFS stuff for example) that have a GFS dynamic core will also need this stripping done. It is probably also a high level branch into a large contiguous chunk of gfsio code which can be removed.

@GeorgeVandenberghe-NOAA

Took about an hour to clean it all out of the old ncep_post that I use for testing NCEPLIBS builds. Subroutine initpost_gfs could
be completely removed from the makefile. Then the call to it in gfspost.f needed to be removed and the use of the gfsio module
removed from that source I also needed to remove gfsio references from wrfpost.f Once this was done, the post built without a gfsio library or modules. Overall not difficult and the next step is to check out the current emc post and perform the same steps.

gfsio itself was an early attempt to standardize output formats and grids . Instead of spectral coefficients, state was stored on gaussian grids which were easier for post processors to deal with and it was intended any GFS code would present and use this format to the user community. It fell into disfavor because the files were substantially larger than GFS sigma files and was replaced by a back step to the sigio and sfcio formats and adaptation of post processors to handle these. Then the sfcio and sigio formats were replaced by the nemsio API which persisted until 2020 and replacement of nemsio with netcdf.
Nemsio I/O was parallel and netcdf was not but netcdf was more standard and had extensive compression support to reduce state footprint.

gfsio is dead at NCEP and is only needed because codes that have sections that compile with it but never branch to it.
sigio, sfcio and nemsio remain extensively used. These libraries can be removed when GFS based codes (currently ensembles and CFS) are removed from production. THis is expected to be complete in about four yerars. The libraries will have to be retained for the research community until archives with that format are no longer used. The lifetime of that data is probably 15 years

@GeorgeVandenberghe-NOAA

It should be noted that parallel compression support was (rapidly and successfully) developed for netcdf in response to critical performance requirements of NCEP codes.

@edwardhartnett
Copy link
Contributor Author

@GeorgeVandenberghe-NOAA my conclusion reading your comment is that you were successful in your prototype code of getting post to build and test (if it tests) OK without gfsio? So we can mark gfsio for deprecation?

@GeorgeVandenberghe-NOAA
Copy link

@edwardhartnett
Copy link
Contributor Author

Well the goal is to reduce complexity. If we are adding the code to multiple projects, that sounds like we are increasing complexity. If this code is used in multiple places, and will be needed in the future, let's just keep it in this library and add tests.

@GeorgeVandenberghe-NOAA
Copy link

@edwardhartnett
Copy link
Contributor Author

One person's tedium is another person's daily work. ;-) So we should not be preserving the API at all, we should be removing this completely. I'm happy to jump in and help.

Can you list here every place it is used? Or create an issue in NCEP_POST and GFS to remove this code?

@edwardhartnett edwardhartnett added the enhancement New feature or request label Dec 4, 2020
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants