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 10368 for NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/stpctl.F90 – NEMO

Ignore:
Timestamp:
2018-12-03T12:45:01+01:00 (5 years ago)
Author:
smasson
Message:

dev_r10164_HPC09_ESIWACE_PREP_MERGE: merge with trunk@10365, see #2133

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/stpctl.F90

    r10358 r10368  
    2424   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    2525   USE lib_mpp         ! distributed memory computing 
     26   USE zdf_oce ,  ONLY : ln_zad_Aimp       ! ocean vertical physics variables 
    2627   USE wet_dry,   ONLY : ll_wd, ssh_ref    ! reference depth for negative bathy 
    2728 
     
    3233   PUBLIC stp_ctl           ! routine called by step.F90 
    3334 
    34    INTEGER  ::   idrun, idtime, idssh, idu, ids1, ids2, istatus 
     35   INTEGER  ::   idrun, idtime, idssh, idu, ids1, ids2, idt1, idt2, idc1, idw1, istatus 
    3536   LOGICAL  ::   lsomeoce 
    3637   !!---------------------------------------------------------------------- 
     
    6566      INTEGER, DIMENSION(3)  ::   iu, is1, is2        ! min/max loc indices 
    6667      REAL(wp)               ::   zzz                 ! local real  
    67       REAL(wp), DIMENSION(5) ::   zmax 
     68      REAL(wp), DIMENSION(9) ::   zmax 
    6869      CHARACTER(len=20) :: clname 
    6970      !!---------------------------------------------------------------------- 
     
    8687            istatus = NF90_DEF_VAR( idrun,       's_min', NF90_DOUBLE, (/ idtime /), ids1  ) 
    8788            istatus = NF90_DEF_VAR( idrun,       's_max', NF90_DOUBLE, (/ idtime /), ids2  ) 
     89            istatus = NF90_DEF_VAR( idrun,       't_min', NF90_DOUBLE, (/ idtime /), idt1  ) 
     90            istatus = NF90_DEF_VAR( idrun,       't_max', NF90_DOUBLE, (/ idtime /), idt2  ) 
     91            IF( ln_zad_Aimp ) THEN 
     92               istatus = NF90_DEF_VAR( idrun,   'abs_wi_max', NF90_DOUBLE, (/ idtime /), idw1  ) 
     93               istatus = NF90_DEF_VAR( idrun,       'Cu_max', NF90_DOUBLE, (/ idtime /), idc1  ) 
     94            ENDIF 
    8895            istatus = NF90_ENDDEF(idrun) 
     96            zmax(8:9) = 0._wp    ! initialise to zero in case ln_zad_Aimp option is not in use 
    8997         ENDIF 
    9098      ENDIF 
     
    105113      zmax(3) = MAXVAL( -tsn(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp )   ! minus salinity max 
    106114      zmax(4) = MAXVAL(  tsn(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp )   !       salinity max 
    107       zmax(5) = REAL( nstop , wp )                                            ! stop indicator 
     115      zmax(5) = MAXVAL( -tsn(:,:,:,jp_tem) , mask = tmask(:,:,:) == 1._wp )   ! minus temperature max 
     116      zmax(6) = MAXVAL(  tsn(:,:,:,jp_tem) , mask = tmask(:,:,:) == 1._wp )   !       temperature max 
     117      zmax(7) = REAL( nstop , wp )                                            ! stop indicator 
     118      IF( ln_zad_Aimp ) THEN 
     119         zmax(8) = MAXVAL(  ABS( wi(:,:,:) ) , mask = wmask(:,:,:) == 1._wp ) ! implicit vertical vel. max 
     120         zmax(9) = MAXVAL(   Cu_adv(:,:,:)   , mask = tmask(:,:,:) == 1._wp ) !       cell Courant no. max 
     121      ENDIF 
    108122      ! 
    109123      IF( lk_mpp .AND. ln_ctl ) THEN 
    110124         CALL mpp_max( "stpctl", zmax )          ! max over the global domain 
    111          nstop = NINT( zmax(5) )                 ! nstop indicator sheared among all local domains 
     125         nstop = NINT( zmax(7) )                 ! nstop indicator sheared among all local domains 
    112126      ENDIF 
    113127      !                                   !==  run statistics  ==!   ("run.stat" files) 
     
    118132         istatus = NF90_PUT_VAR( idrun,  ids1, (/-zmax(3)/), (/kt/), (/1/) ) 
    119133         istatus = NF90_PUT_VAR( idrun,  ids2, (/ zmax(4)/), (/kt/), (/1/) ) 
     134         istatus = NF90_PUT_VAR( idrun,  idt1, (/-zmax(5)/), (/kt/), (/1/) ) 
     135         istatus = NF90_PUT_VAR( idrun,  idt2, (/ zmax(6)/), (/kt/), (/1/) ) 
     136         IF( ln_zad_Aimp ) THEN 
     137            istatus = NF90_PUT_VAR( idrun,  idw1, (/ zmax(8)/), (/kt/), (/1/) ) 
     138            istatus = NF90_PUT_VAR( idrun,  idc1, (/ zmax(9)/), (/kt/), (/1/) ) 
     139         ENDIF 
    120140         IF( MOD( kt , 100 ) == 0 ) istatus = NF90_SYNC(idrun) 
    121141         IF( kt == nitend         ) istatus = NF90_CLOSE(idrun) 
Note: See TracChangeset for help on using the changeset viewer.