Opened 14 years ago
Closed 14 years ago
#510 closed bug (Fixed)
Unable to create new history NetCDF in restart mode (NRREC ≠ 0)
Reported by: | colucix | Owned by: | arango |
---|---|---|---|
Priority: | major | Milestone: | Release ROMS/TOMS 3.5 |
Component: | Nonlinear | Version: | 3.5 |
Keywords: | Cc: |
Description (last modified by )
If I run the model using a NRREC value different than 0, the subroutine def_his() always expects an existing NetCDF history and it results in:
DEF_HIS - inquiring history file: ''/path/to/history.nc'' NETCDF_OPEN - unable to open existing NetCDF file: ''/path/to/history.nc'' call from: def_his.F
The problem seems due to the missing initialization of the parameter idefHIS in Modules/mod_ncparam.F. Please, note that in releases prior to 553 this parameter was initialized to -1.
Looking at Nonlinear/output.F the following lines of code are never executed due to the limiting condition over idefHIS (which is never assigned, hence it's always 0):
76 IF (idefHIS(ng).lt.0) THEN 77 idefHIS(ng)=((ntstart(ng)-1)/ndefHIS(ng))*ndefHIS(ng) 78 IF (idefHIS(ng).lt.iic(ng)-1) THEN 79 idefHIS(ng)=idefHIS(ng)+ndefHIS(ng) 80 END IF 81 END IF
In the same subroutine the following if/then construct results in the assignment of NewFile which will be always .FALSE. whenever NRREC is not equal to 0:
82 IF ((nrrec(ng).ne.0).and.(iic(ng).eq.ntstart(ng))) THEN 83 IF ((iic(ng)-1).eq.idefHIS(ng)) THEN 84 Ldefine=.FALSE. ! finished file, delay 85 ELSE ! creation of next file 86 Ldefine=.TRUE. 87 NewFile=.FALSE. ! unfinished file, inquire 88 END IF ! content for appending 89 idefHIS(ng)=idefHIS(ng)+nHIS(ng) ! restart offset 90 ELSE IF ((iic(ng)-1).eq.idefHIS(ng)) THEN 91 idefHIS(ng)=idefHIS(ng)+ndefHIS(ng) 92 IF (nHIS(ng).ne.ndefHIS(ng).and.iic(ng).eq.ntstart(ng)) THEN 93 idefHIS(ng)=idefHIS(ng)+nHIS(ng) ! multiple record offset 94 END IF 95 Ldefine=.TRUE. 96 NewFile=.TRUE. 97 ELSE 98 Ldefine=.FALSE. 99 END IF
As a workaround I re-introduced the initialization of at least the following two parameters inside Modules/mod_ncparam.F:
DO ng=1,Ngrids idefAVG(ng)=-1 idefHIS(ng)=-1 END DO
This lets the first aforementioned block of code (output.F: line 77) to correctly set the idefHIS(ng) parameter and in the subsequent if/then construct the NewFile parameter is permitted to be .TRUE.
Thank you, Alex
Change History (2)
comment:1 by , 14 years ago
comment:2 by , 14 years ago
Description: | modified (diff) |
---|---|
Resolution: | → Fixed |
Status: | new → closed |
Yes, great catch. I missed this one. Thank you.
Hmm, this could be related to my suddenly getting the avg_0000.nc file with not much in it, before it writes the first record to avg_0001.nc.