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 12555 for branches/UKMO/dev_r5518_GO6_starthour_obsoper/NEMOGCM/NEMO/OPA_SRC/stpctl.F90 – NEMO

Ignore:
Timestamp:
2020-03-13T17:33:02+01:00 (4 years ago)
Author:
charris
Message:

Changes from GO6 package branch (GMED ticket 450):

svn merge -r 11035:11101 svn+ssh://charris@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/UKMO/dev_r5518_GO6_package

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_starthour_obsoper/NEMOGCM/NEMO/OPA_SRC/stpctl.F90

    r9276 r12555  
    6161                                            ! values and warn if they're out of Range 
    6262      INTEGER, DIMENSION(3) ::   ilocu      !  
    63       INTEGER, DIMENSION(2) ::   ilocs      !  
     63      INTEGER, DIMENSION(2) ::   ilocs      ! 
     64      LOGICAL                ::   ll_wrtstp, ll_colruns, ll_wrtruns 
    6465      !!---------------------------------------------------------------------- 
    65  
     66      ll_wrtstp  = ( MOD( kt, sn_cfctl%ptimincr ) == 0 ) .OR. ( kt == nitend ) 
     67      ll_colruns = ll_wrtstp .AND. ( ln_ctl .OR. sn_cfctl%l_runstat ) 
     68      ll_wrtruns = ll_colruns .AND. lwm 
    6669      IF( kt == nit000 .AND. lwp ) THEN 
    6770         WRITE(numout,*) 
    6871         WRITE(numout,*) 'stp_ctl : time-stepping control' 
    6972         WRITE(numout,*) '~~~~~~~' 
     73         IF(lflush) CALL flush(numout) 
    7074         ! open time.step file with special treatment for SAS 
    7175         IF ( nn_components == jp_iam_sas ) THEN 
     
    7478            clfname = 'time.step' 
    7579         ENDIF 
    76          CALL ctl_opn( numstp, TRIM(clfname), 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 
    77       ENDIF 
    78  
    79       IF(lwp) WRITE ( numstp, '(1x, i8)' )   kt      !* save the current time step in numstp 
    80       IF(lwp) REWIND( numstp )                       !  -------------------------- 
     80         IF( lwm ) & 
     81     &    CALL ctl_opn( numstp, TRIM(clfname), 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 
     82      ENDIF 
     83 
     84      IF(lwm .AND. ll_wrtstp) THEN 
     85         WRITE ( numstp, '(1x, i8)' )   kt      !* save the current time step in numstp 
     86         REWIND( numstp )                       !  -------------------------- 
     87      ENDIF 
    8188 
    8289      !                                              !* Test maximum of velocity (zonal only) 
     
    93100      IF( lk_mpp )   CALL mpp_max( zumax )                 ! max over the global domain 
    94101      ! 
    95       IF( MOD( kt, nwrite ) == 1 .AND. lwp )   WRITE(numout,*) ' ==>> time-step= ',kt,' abs(U) max: ', zumax 
     102      IF( ll_colruns )   THEN 
     103         WRITE(numout,*) ' ==>> time-step= ',kt,' abs(U) max: ', zumax 
     104         IF(lflush) CALL flush(numout) 
     105      ENDIF 
    96106      ! 
    97107      IF( zumax > 20.e0 ) THEN 
     
    111121            WRITE(numout,*) 
    112122            WRITE(numout,*) '          output of last fields in numwso' 
     123            IF(lflush) CALL flush(numout) 
    113124         ENDIF 
    114125         kindic = -3 
     
    127138      IF( lk_mpp )   CALL mpp_min( zsmin )                ! min over the global domain 
    128139      ! 
    129       IF( MOD( kt, nwrite ) == 1 .AND. lwp )   WRITE(numout,*) ' ==>> time-step= ',kt,' SSS min:', zsmin 
     140      IF( MOD( kt, nwrite ) == 1 .AND. lwp )   THEN 
     141         WRITE(numout,*) ' ==>> time-step= ',kt,' SSS min:', zsmin 
     142         IF(lflush) CALL flush(numout) 
     143      ENDIF 
    130144      ! 
    131145      IF( zsmin < 0.) THEN  
     
    182196            WRITE(numout,9600) kt, ztmax, ii, ij 
    183197            WRITE(numout,*) 'stp_ctl:tracer anomaly: ***** END OF WARNING *****' 
     198            IF(lflush) CALL flush(numout) 
    184199         ENDIF 
    185200      ENDIF 
     
    199214            WRITE(numout,9700) kt, ztmin, ii, ij 
    200215            WRITE(numout,*) 'stp_ctl:tracer anomaly: ***** END OF WARNING *****' 
     216            IF(lflush) CALL flush(numout) 
    201217         ENDIF 
    202218      ENDIF 
     
    212228      IF( lk_dynspg_flt ) THEN      ! elliptic solver statistics (if required) 
    213229         ! 
    214          IF(lwp) WRITE(numsol,9200) kt, niter, res, SQRT(epsr)/eps       ! Solver 
     230         IF(ll_wrtruns) THEN 
     231            WRITE(numsol,9200) kt, niter, res, SQRT(epsr)/eps       ! Solver 
     232            IF(lflush) CALL flush(numsol) 
     233         ENDIF 
    215234         ! 
    216235         IF( kindic < 0 .AND. zsmin > 0.e0 .AND. zumax <= 20.e0 ) THEN   ! create a abort file if problem found  
     
    222241               WRITE(numout,*) ' stpctl: output of last fields' 
    223242               WRITE(numout,*) ' ======  ' 
     243               IF(lflush) CALL flush(numout) 
    224244            ENDIF 
    225245         ENDIF 
    226246         ! 
    227247      ELSE                                   !* ssh statistics (and others...) 
    228          IF( kt == nit000 .AND. lwp ) THEN   ! open ssh statistics file (put in solver.stat file) 
     248         IF( kt == nit000 .AND. lwm ) THEN   ! open ssh statistics file (put in solver.stat file) 
    229249            CALL ctl_opn( numsol, 'solver.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 
    230250         ENDIF 
    231251         ! 
    232          zssh2 = SUM( sshn(:,:) * sshn(:,:) * tmask_i(:,:) ) 
    233          IF( lk_mpp )   CALL mpp_sum( zssh2 )      ! sum over the global domain 
    234          ! 
    235          IF(lwp) WRITE(numsol,9300) kt, zssh2, zumax, zsmin      ! ssh statistics 
     252         IF( ll_colruns ) THEN 
     253            zssh2 = SUM( sshn(:,:) * sshn(:,:) * tmask_i(:,:) ) 
     254            IF( lk_mpp )   CALL mpp_sum( zssh2 )      ! sum over the global domain 
     255         ! 
     256            WRITE(numsol,9300) kt, zssh2, zumax, zsmin      ! ssh statistics 
     257            IF(lflush) CALL flush(numsol) 
     258         ENDIF 
    236259         ! 
    237260      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.