Changeset 7701


Ignore:
Timestamp:
2017-02-20T11:07:50+01:00 (4 years ago)
Author:
frrh
Message:

Improve control of numstr unit.

In addition to only producing output, and doing the
related global sums when we really need them, we
need to restrict it to one instance on the master PE
in all circumstances and to explicitly close it at the
end of the run. (Currently if lwp = true you get a separate
file for every PE containing identical information and none
of the tracer.stat files are explicitly closed.)

Location:
branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90

    r7692 r7701  
    7474#if defined key_top 
    7575   USE trcini          ! passive tracer initialisation 
     76   USE trc, ONLY: numstr  ! tracer stats unit number 
    7677#endif 
    7778   USE lib_mpp         ! distributed memory computing 
     
    596597      IF( numdct_heat     /= -1 )   CLOSE( numdct_heat     )   ! heat transports 
    597598      IF( numdct_salt     /= -1 )   CLOSE( numdct_salt     )   ! salt transports 
     599      IF( numstr          /= -1 )   CLOSE( numstr          )   ! tracer statistics 
    598600 
    599601      ! 
  • branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/TOP_SRC/trc.F90

    r7693 r7701  
    2626   INTEGER, PUBLIC                                                 ::   numnat_cfg = -1   !: logical unit for the reference passive tracer namelist_top_cfg 
    2727   INTEGER, PUBLIC                                                 ::   numont     = -1   !: logical unit for the reference passive tracer namelist output output.namelist.top 
    28    INTEGER, PUBLIC                                                 ::   numstr        !: logical unit for tracer statistics 
     28   INTEGER, PUBLIC                                                 ::   numstr     = -1   !: logical unit for tracer statistics 
    2929   INTEGER, PUBLIC                                                 ::   numrtr        !: logical unit for trc restart (read ) 
    3030   INTEGER, PUBLIC                                                 ::   numrtw        !: logical unit for trc restart ( write ) 
  • branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/TOP_SRC/trcini.F90

    r7693 r7701  
    123123# endif 
    124124 
    125       IF( lwp ) THEN 
     125      IF( ln_ctl ) THEN 
    126126         ! 
    127          CALL ctl_opn( numstr, 'tracer.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp , narea ) 
     127         IF (narea == 1) THEN  
     128            ! The tracer.stat file only contains global tracer sum values, if 
     129            ! it contains anything at all. Hence it only needs to be opened 
     130            ! and written to on the master PE, not on all PEs.  
     131            CALL ctl_opn( numstr, 'tracer.stat', 'REPLACE', 'FORMATTED',  & 
     132                          'SEQUENTIAL', -1, numout, lwp , narea ) 
     133         ENDIF  
    128134         ! 
    129135      ENDIF 
  • branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/TOP_SRC/trcstp.F90

    r7694 r7701  
    5555      !!              Update the passive tracers 
    5656      !!------------------------------------------------------------------- 
     57 
     58      USE dom_oce, ONLY: narea  
     59 
    5760      INTEGER, INTENT( in ) ::  kt      ! ocean time-step index 
    5861      INTEGER               ::  jk, jn  ! dummy loop indices 
     
    136139         ! Hence we restrict its use by protecting it with the ln_ctl RTL 
    137140         ! which should normally only be used under debugging conditions 
    138          ! and not in operational runs.  
    139          ztrai = 0._wp                                                   !  content of all tracers 
     141         ! and not in operational runs. We also need to restrict output  
     142         ! to the master PE since there's no point duplicating the same results 
     143         ! on all processors.     
     144         ztrai = 0._wp                                !  content of all tracers 
    140145         DO jn = 1, jptra 
    141146            ztrai = ztrai + glob_sum( trn(:,:,:,jn) * cvol(:,:,:)   ) 
    142147         END DO 
    143          IF( lwp ) WRITE(numstr,9300) kt,  ztrai / areatot 
     148         IF (narea == 1) WRITE(numstr,9300) kt,  ztrai / areatot 
    1441499300     FORMAT(i10,e18.10) 
    145150      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.