New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 11872 for NEMO/branches/2019/fix_sn_cfctl_ticket2328/src/OCE/stpctl.F90 – NEMO

Ignore:
Timestamp:
2019-11-07T17:55:13+01:00 (4 years ago)
Author:
acc
Message:

Branch 2019/fix_sn_cfctl_ticket2328. See #2328. Replacement of ln_ctl and activation of full functionality with
sn_cfctl structure. These changes rename structure components l_mppout and l_mpptop as l_prtctl and l_prttrc
and introduce l_glochk to activate former ln_ctl code in stpctl.F90 to perform global location of min and max
checks. Also added is l_allon which can be used to activate all output (much like the former ln_ctl). If l_allon
is .false. then l_config decides whether or not the suboptions are used.

   sn_cfctl%l_glochk = .FALSE.    ! Range sanity checks are local (F) or global (T). Set T for debugging only
   sn_cfctl%l_allon  = .FALSE.    ! IF T activate all options. If F deactivate all unless l_config is T
   sn_cfctl%l_config = .TRUE.     ! IF .true. then control which reports are written with the remaining options

Note, these changes pass SETTE tests but all references to ln_ctl need to be removed from the sette scripts.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/fix_sn_cfctl_ticket2328/src/OCE/stpctl.F90

    r11407 r11872  
    7272      ! 
    7373      ll_wrtstp  = ( MOD( kt, sn_cfctl%ptimincr ) == 0 ) .OR. ( kt == nitend ) 
    74       ll_colruns = ll_wrtstp .AND. ( ln_ctl .OR. sn_cfctl%l_runstat ) 
     74      ll_colruns = ll_wrtstp .AND. ( sn_cfctl%l_runstat ) 
    7575      ll_wrtruns = ll_colruns .AND. lwm 
    7676      IF( kt == nit000 .AND. lwp ) THEN 
     
    8282         !                                ! open run.stat file(s) at start whatever 
    8383         !                                ! the value of sn_cfctl%ptimincr 
    84          IF( lwm .AND. ( ln_ctl .OR. sn_cfctl%l_runstat ) ) THEN 
     84         IF( lwm .AND. ( sn_cfctl%l_runstat ) ) THEN 
    8585            CALL ctl_opn( numrun, 'run.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 
    8686            clname = 'run.stat.nc' 
     
    147147      END IF 
    148148      !                                   !==  error handling  ==! 
    149       IF( ( ln_ctl .OR. lsomeoce ) .AND. (   &             ! have use mpp_max (because ln_ctl=.T.) or contains some ocean points 
     149      IF( ( sn_cfctl%l_glochk .OR. lsomeoce ) .AND. (   &  ! domain contains some ocean points, check for sensible ranges 
    150150         &  zmax(1) >   20._wp .OR.   &                    ! too large sea surface height ( > 20 m ) 
    151151         &  zmax(2) >   10._wp .OR.   &                    ! too large velocity ( > 10 m/s) 
     
    154154         &  zmax(4) <    0._wp .OR.   &                    ! too large sea surface salinity (keep this line for sea-ice) 
    155155         &  ISNAN( zmax(1) + zmax(2) + zmax(3) ) ) ) THEN   ! NaN encounter in the tests 
    156          IF( lk_mpp .AND. ln_ctl ) THEN 
     156         IF( lk_mpp .AND. sn_cfctl%l_glochk ) THEN 
     157            ! have use mpp_max (because sn_cfctl%l_glochk=.T. and distributed) 
    157158            CALL mpp_maxloc( 'stpctl', ABS(sshn)        , ssmask(:,:)  , zzz, ih  ) 
    158159            CALL mpp_maxloc( 'stpctl', ABS(un)          , umask (:,:,:), zzz, iu  ) 
     
    160161            CALL mpp_maxloc( 'stpctl', tsn(:,:,:,jp_sal), tmask (:,:,:), zzz, is2 ) 
    161162         ELSE 
     163            ! find local min and max locations 
    162164            ih(:)  = MAXLOC( ABS( sshn(:,:)   )                              ) + (/ nimpp - 1, njmpp - 1    /) 
    163165            iu(:)  = MAXLOC( ABS( un  (:,:,:) )                              ) + (/ nimpp - 1, njmpp - 1, 0 /) 
     
    175177         CALL dia_wri_state( 'output.abort' )     ! create an output.abort file 
    176178          
    177          IF( .NOT. ln_ctl ) THEN 
     179         IF( .NOT. sn_cfctl%l_glochk ) THEN 
    178180            WRITE(ctmp8,*) 'E R R O R message from sub-domain: ', narea 
    179181            CALL ctl_stop( 'STOP', ctmp1, ' ', ctmp8, ' ', ctmp2, ctmp3, ctmp4, ctmp5, ctmp6 ) 
Note: See TracChangeset for help on using the changeset viewer.