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 14546 – NEMO

Changeset 14546


Ignore:
Timestamp:
2021-02-25T12:46:00+01:00 (3 years ago)
Author:
dancopsey
Message:

Add check on V velocities

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.1_FKOSM_m11715/src/OCE/stpctl.F90

    r11715 r14546  
    6767      REAL(wp)               ::   zzz                 ! local real  
    6868      REAL(wp), DIMENSION(9) ::   zmax 
    69       LOGICAL                ::   ll_wrtstp, ll_colruns, ll_wrtruns 
     69      LOGICAL                ::   ll_wrtstp, ll_colruns, ll_wrtruns, ll_chku 
    7070      CHARACTER(len=20) :: clname 
    7171      !!---------------------------------------------------------------------- 
    7272      ! 
     73      ll_chku    = ( MOD( kt-nit000, 2 ) == 0 ) 
    7374      ll_wrtstp  = ( MOD( kt, sn_cfctl%ptimincr ) == 0 ) .OR. ( kt == nitend ) 
    7475      ll_colruns = ll_wrtstp .AND. ( ln_ctl .OR. sn_cfctl%l_runstat ) 
     
    115116         zmax(1) = MAXVAL(  ABS( sshn(:,:) )  )                               ! ssh max 
    116117      ENDIF 
    117       zmax(2) = MAXVAL(  ABS( un(:,:,:) )  )                                  ! velocity max (zonal only) 
     118      IF( ll_chku ) THEN 
     119         zmax(2) = MAXVAL(  ABS( un(:,:,:) )  )                               ! velocity max (zonal on odd timesteps) 
     120      ELSE 
     121         zmax(2) = MAXVAL(  ABS( vn(:,:,:) )  )                               ! velocity max (meridional on even timesteps) 
     122      ENDIF 
    118123      zmax(3) = MAXVAL( -tsn(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp )   ! minus salinity max 
    119124      zmax(4) = MAXVAL(  tsn(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp )   !       salinity max 
     
    132137      !                                   !==  run statistics  ==!   ("run.stat" files) 
    133138      IF( ll_wrtruns ) THEN 
    134          WRITE(numrun,9500) kt, zmax(1), zmax(2), -zmax(3), zmax(4) 
     139         IF(  ll_chku  ) THEN 
     140            WRITE(numrun,9500) kt, zmax(1), zmax(2), -zmax(3), zmax(4) 
     141         ELSE 
     142            WRITE(numrun,9501) kt, zmax(1), zmax(2), -zmax(3), zmax(4) 
     143         ENDIF 
    135144         istatus = NF90_PUT_VAR( idrun, idssh, (/ zmax(1)/), (/kt/), (/1/) ) 
    136145         istatus = NF90_PUT_VAR( idrun,   idu, (/ zmax(2)/), (/kt/), (/1/) ) 
     
    156165         IF( lk_mpp .AND. ln_ctl ) THEN 
    157166            CALL mpp_maxloc( 'stpctl', ABS(sshn)        , ssmask(:,:)  , zzz, ih  ) 
    158             CALL mpp_maxloc( 'stpctl', ABS(un)          , umask (:,:,:), zzz, iu  ) 
     167            IF(  ll_chku  ) THEN 
     168               CALL mpp_maxloc( 'stpctl', ABS(un)       , umask (:,:,:), zzz, iu  ) 
     169            ELSE 
     170               CALL mpp_maxloc( 'stpctl', ABS(vn)       , vmask (:,:,:), zzz, iu  ) 
     171            ENDIF 
    159172            CALL mpp_minloc( 'stpctl', tsn(:,:,:,jp_sal), tmask (:,:,:), zzz, is1 ) 
    160173            CALL mpp_maxloc( 'stpctl', tsn(:,:,:,jp_sal), tmask (:,:,:), zzz, is2 ) 
    161174         ELSE 
    162175            ih(:)  = MAXLOC( ABS( sshn(:,:)   )                              ) + (/ nimpp - 1, njmpp - 1    /) 
    163             iu(:)  = MAXLOC( ABS( un  (:,:,:) )                              ) + (/ nimpp - 1, njmpp - 1, 0 /) 
     176            IF(  ll_chku  ) THEN 
     177               iu(:)  = MAXLOC( ABS( un  (:,:,:) )                           ) + (/ nimpp - 1, njmpp - 1, 0 /) 
     178            ELSE 
     179               iu(:)  = MAXLOC( ABS( vn  (:,:,:) )                           ) + (/ nimpp - 1, njmpp - 1, 0 /) 
     180            ENDIF 
    164181            is1(:) = MINLOC( tsn(:,:,:,jp_sal), mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /) 
    165182            is2(:) = MAXLOC( tsn(:,:,:,jp_sal), mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /) 
    166183         ENDIF 
    167184          
    168          WRITE(ctmp1,*) ' stp_ctl: |ssh| > 20 m  or  |U| > 10 m/s  or  S <= 0  or  S >= 100  or  NaN encounter in the tests' 
     185         WRITE(ctmp1,*) ' stp_ctl: |ssh| > 20 m  or  |[U,V]| > 10 m/s  or  S <= 0  or  S >= 100  or  NaN encounter in the tests' 
    169186         WRITE(ctmp2,9100) kt,   zmax(1), ih(1) , ih(2) 
    170          WRITE(ctmp3,9200) kt,   zmax(2), iu(1) , iu(2) , iu(3) 
     187         IF(  ll_chku  ) THEN 
     188           WRITE(ctmp3,9200) kt,   zmax(2), iu(1) , iu(2) , iu(3) 
     189         ELSE 
     190           WRITE(ctmp3,9201) kt,   zmax(2), iu(1) , iu(2) , iu(3) 
     191         ENDIF 
    171192         WRITE(ctmp4,9300) kt, - zmax(3), is1(1), is1(2), is1(3) 
    172193         WRITE(ctmp5,9400) kt,   zmax(4), is2(1), is2(2), is2(3) 
     
    1882099100  FORMAT (' kt=',i8,'   |ssh| max: ',1pg11.4,', at  i j  : ',2i5) 
    1892109200  FORMAT (' kt=',i8,'   |U|   max: ',1pg11.4,', at  i j k: ',3i5) 
     2119201  FORMAT (' kt=',i8,'   |V|   max: ',1pg11.4,', at  i j k: ',3i5) 
    1902129300  FORMAT (' kt=',i8,'   S     min: ',1pg11.4,', at  i j k: ',3i5) 
    1912139400  FORMAT (' kt=',i8,'   S     max: ',1pg11.4,', at  i j k: ',3i5) 
    1922149500  FORMAT(' it :', i8, '    |ssh|_max: ', D23.16, ' |U|_max: ', D23.16,' S_min: ', D23.16,' S_max: ', D23.16) 
     2159501  FORMAT(' it :', i8, '    |ssh|_max: ', D23.16, ' |V|_max: ', D23.16,' S_min: ', D23.16,' S_max: ', D23.16) 
    193216      ! 
    194217   END SUBROUTINE stp_ctl 
Note: See TracChangeset for help on using the changeset viewer.