Opened 6 years ago

Closed 6 years ago

#781 closed upgrade (Done)

Miscelaneous Update

Reported by: arango Owned by:
Priority: major Milestone: Release ROMS/TOMS 3.7
Component: Nonlinear Version: 3.7
Keywords: Cc:

Description

This update includes several improvements to ROMS code:

  • Several ROMS array allocation routines are called from read_phypar after several of the dimension parameters values are known after processed from the standard input script ocean.in. It has come to my attention that some users repeat such important parameters (like Ngrids and NtileJ) without commenting on (!) the previous assignment. The entries in ocean.in can be repeated, but the user needs to be aware the ROMS read each value and retains the last value processed. Anyway, a safeguard is coded in the following routines located in their associated modules:
    • allocate_param (mod_param.F)
    • allocate_parallel (mod_parallel.F)
    • allocate_iounits (mod_iounits.F)
    • allocate_stepping (mod_stepping.F)
    • allocate_fourdvar (mod_fourdvar.F)
    • allocate_scalars (mod_scalars.F)
    • allocate_ncparam (mod_ncparam.F)

to suppress allocation errors because variables were already allocated. Each variable in the above modules are tested for allocation:

      IF (.not.allocated(VAR)) THEN
        allocate ( VAR(...) )
      END IF

Warning: If the entries for Ngrids and NtileJ are repeated, ROMS will use the first processed value to allocate variables in the above modules. Therefore, the user needs to be careful when setting their values in ocean.in.

  • Routine read_phypar.F now use the I0 formatted statement for an nteger in a couple of places:
  70  FORMAT (/,' Resolution, Grid ',i2.2,': ',i0,'x',i0,'x',i0,        &
     &        ',',2x,'Parallel Nodes: ',i0,',',2x,'Tiling: ',i0,        &
     &        'x',i0)

  90  FORMAT (/,' Resolution, Grid ',i2.2,': ',i0,'x',i0,'x',i0,        &
     &        ',',2x,'Parallel Threads: ',i0,',',2x,'Tiling: ',i0,      &
     &        'x',i0)

to avoid overflow error in the integer format. The Iw.m descriptor with w=0 is allowed in the Fortran 2003 Standard, and it is supported by all modern compilers. The I0.m edit descriptor produces a reult with at leas m digits, and as many more digits as are necessary to represent th integer value.

  • Increased the integer format in timers.F to avoid overflow of large integers in the number of CPUs used:
  10       FORMAT (a,i5,a,f12.3)
  • The Proleptic Calendar attribute is renamed in dateclock.F to it is standard CF compliance value so it can be used by third-party software:
            calendar='proleptic_gregorian'
    
    Many thanks to Ivica Janekovic for bringing it to my attention.

Change History (1)

comment:1 by arango, 6 years ago

Resolution: Done
Status: newclosed
Note: See TracTickets for help on using tickets.