Opened 13 years ago
Closed 13 years ago
#555 closed defect (Fixed)
Corrections due to F90/F95 strict compliance
Reported by: | arango | Owned by: | arango |
---|---|---|---|
Priority: | major | Milestone: | Release ROMS/TOMS 3.6 |
Component: | Nonlinear | Version: | 3.6 |
Keywords: | Cc: |
Description
Corrected several routines to impose strict compliance of the F90/F95 standard. These error appear when using the following flags in the ifort compiler:
-g -check bounds -traceback -check uninit -warn interfaces,nouncalled -gen-interfaces
For example, we cannot pass a scalar argument to a routine is an array is expected. In read_phypar.F we need to have:
integer :: Ivalue(1) ... CASE ('Ngrids') Npts=load_i(Nval, Rval, 1, Ivalue) Ngrids=Ivalue(1)
instead of
CASE ('Ngrids') Npts=load_i(Nval, Rval, 1, Ngrids)
The load_* routines expect a vector in the output argument. So for processing scalars we need an array of size one.
Also, several routines including get_data.F, get_idata.F, set_data.F, and their TLM, RPM, and ADM versions were modified to strict compliance with the pointer arguments in the calling routines and dummy arguments in the generic NetCDF processing routines.
Many thanks to Mathieu Dutour-Sikiric and Aron Roland for pointing this to my attention.