You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Program executes normally using netcdf fortran (4.5.2) and netcdf C (4.7.1)
Current Behavior
Using latest netcdf fortran (4.5.2) and netcdf C (4.7.1) the program crashes with the following error: The job is stopped due to the fatal error. ERROR: Unable to place Fill value attribute into variable zwattablrt!
Possible Solution
Two possible solutions (will try to submit PR later) exist. One is to replace netcdf variable types
for definitions of compressed variables, i.e. replace nf90_int in lines like this with nf90_int64.
There are at least 7 palces in module_NWM_io where this exists, may also be other places in the I/O code affected by netcdf_int types. I have tested this using the described netcdf libraries, and it works.
This may not work with netcdf fortran 4.4.4 (see issue linked below). If it doesn't then the fileMeta%fillComp variable should be a 4 byte instead of 8 byte int that it currently is. I think that netcdf fortran 4.4.4 is doing this conversion, but when full support for 64 bit ints was added, the behavior in the library changed and this became an explicit error.
Also, the nwmcheck function that reports the errors should report the netcdf error number and/or the string message from nf90_strerror which would give information like this: NetCDF: Not a valid data type or _FillValue type mismatch
Steps to Reproduce (for bugs)
Link against netcdf fortran 4.5.2 (I think anything over 4.4.4 will reproduce, but not confirmed)
Turn on i/o compression option in hydro.namelist
Run model
Your Environment
Version of the code used: Discovered on the NWM 2.0 beta relase tag (6fe9fa3). Investigating code on master, issue is still present, but not explicitly verified.
NetCDF 4.7.3 is now the default version on Cheyenne, and users are seeing model crashes with it. That may be related to this issue, and/or additional places in the code where it's crashing due to incompatibilities. Adding this here now to bubble up the priority.
Expected Behavior
Program executes normally using netcdf fortran (4.5.2) and netcdf C (4.7.1)
Current Behavior
Using latest netcdf fortran (4.5.2) and netcdf C (4.7.1) the program crashes with the following error:
The job is stopped due to the fatal error. ERROR: Unable to place Fill value attribute into variable zwattablrt!
Possible Solution
Two possible solutions (will try to submit PR later) exist. One is to replace netcdf variable types
for definitions of compressed variables, i.e. replace nf90_int in lines like this with nf90_int64.
wrf_hydro_nwm_public/trunk/NDHMS/Routing/module_NWM_io.F
Line 835 in fb60447
There are at least 7 palces in module_NWM_io where this exists, may also be other places in the I/O code affected by netcdf_int types. I have tested this using the described netcdf libraries, and it works.
This may not work with netcdf fortran 4.4.4 (see issue linked below). If it doesn't then the fileMeta%fillComp variable should be a 4 byte instead of 8 byte int that it currently is. I think that netcdf fortran 4.4.4 is doing this conversion, but when full support for 64 bit ints was added, the behavior in the library changed and this became an explicit error.
Also, the
nwmcheck
function that reports the errors should report the netcdf error number and/or the string message fromnf90_strerror
which would give information like this:NetCDF: Not a valid data type or _FillValue type mismatch
Steps to Reproduce (for bugs)
Your Environment
Proposed fix may not work with 4.4.4, see this issue.
Unable to add _FillValue to INT64 variable Unidata/netcdf-fortran#62
Upstream netcdf fortran work exposed the bug likely in this PR
Support 64-bit integer memory type Unidata/netcdf-fortran#190
The text was updated successfully, but these errors were encountered: