Changeset 12377 for NEMO/trunk/src/OCE/stpctl.F90
- Timestamp:
- 2020-02-12T15:39:06+01:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEAD ext/AGRIF5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL
-
- Property svn:externals
-
NEMO/trunk/src/OCE/stpctl.F90
r11407 r12377 42 42 CONTAINS 43 43 44 SUBROUTINE stp_ctl( kt, kindic )44 SUBROUTINE stp_ctl( kt, Kbb, Kmm, kindic ) 45 45 !!---------------------------------------------------------------------- 46 46 !! *** ROUTINE stp_ctl *** … … 60 60 !!---------------------------------------------------------------------- 61 61 INTEGER, INTENT(in ) :: kt ! ocean time-step index 62 INTEGER, INTENT(in ) :: Kbb, Kmm ! ocean time level index 62 63 INTEGER, INTENT(inout) :: kindic ! error indicator 63 64 !! … … 72 73 ! 73 74 ll_wrtstp = ( MOD( kt, sn_cfctl%ptimincr ) == 0 ) .OR. ( kt == nitend ) 74 ll_colruns = ll_wrtstp .AND. ( ln_ctl .OR.sn_cfctl%l_runstat )75 ll_colruns = ll_wrtstp .AND. ( sn_cfctl%l_runstat ) 75 76 ll_wrtruns = ll_colruns .AND. lwm 76 77 IF( kt == nit000 .AND. lwp ) THEN … … 82 83 ! ! open run.stat file(s) at start whatever 83 84 ! ! the value of sn_cfctl%ptimincr 84 IF( lwm .AND. ( ln_ctl .OR.sn_cfctl%l_runstat ) ) THEN85 IF( lwm .AND. ( sn_cfctl%l_runstat ) ) THEN 85 86 CALL ctl_opn( numrun, 'run.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 86 87 clname = 'run.stat.nc' … … 111 112 ! !== test of extrema ==! 112 113 IF( ll_wd ) THEN 113 zmax(1) = MAXVAL( ABS( ssh n(:,:) + ssh_ref*tmask(:,:,1) ) ) ! ssh max114 zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm) + ssh_ref*tmask(:,:,1) ) ) ! ssh max 114 115 ELSE 115 zmax(1) = MAXVAL( ABS( ssh n(:,:) ) ) ! ssh max116 ENDIF 117 zmax(2) = MAXVAL( ABS( u n(:,:,:) ) ) ! velocity max (zonal only)118 zmax(3) = MAXVAL( -ts n(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp ) ! minus salinity max119 zmax(4) = MAXVAL( ts n(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp ) ! salinity max120 zmax(5) = MAXVAL( -ts n(:,:,:,jp_tem) , mask = tmask(:,:,:) == 1._wp ) ! minus temperature max121 zmax(6) = MAXVAL( ts n(:,:,:,jp_tem) , mask = tmask(:,:,:) == 1._wp ) ! temperature max116 zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm) ) ) ! ssh max 117 ENDIF 118 zmax(2) = MAXVAL( ABS( uu(:,:,:,Kmm) ) ) ! velocity max (zonal only) 119 zmax(3) = MAXVAL( -ts(:,:,:,jp_sal,Kmm) , mask = tmask(:,:,:) == 1._wp ) ! minus salinity max 120 zmax(4) = MAXVAL( ts(:,:,:,jp_sal,Kmm) , mask = tmask(:,:,:) == 1._wp ) ! salinity max 121 zmax(5) = MAXVAL( -ts(:,:,:,jp_tem,Kmm) , mask = tmask(:,:,:) == 1._wp ) ! minus temperature max 122 zmax(6) = MAXVAL( ts(:,:,:,jp_tem,Kmm) , mask = tmask(:,:,:) == 1._wp ) ! temperature max 122 123 zmax(7) = REAL( nstop , wp ) ! stop indicator 123 124 IF( ln_zad_Aimp ) THEN … … 147 148 END IF 148 149 ! !== error handling ==! 149 IF( ( ln_ctl .OR. lsomeoce ) .AND. ( & ! have use mpp_max (because ln_ctl=.T.) or contains some ocean points150 IF( ( sn_cfctl%l_glochk .OR. lsomeoce ) .AND. ( & ! domain contains some ocean points, check for sensible ranges 150 151 & zmax(1) > 20._wp .OR. & ! too large sea surface height ( > 20 m ) 151 152 & zmax(2) > 10._wp .OR. & ! too large velocity ( > 10 m/s) … … 154 155 & zmax(4) < 0._wp .OR. & ! too large sea surface salinity (keep this line for sea-ice) 155 156 & ISNAN( zmax(1) + zmax(2) + zmax(3) ) ) ) THEN ! NaN encounter in the tests 156 IF( lk_mpp .AND. ln_ctl ) THEN 157 CALL mpp_maxloc( 'stpctl', ABS(sshn) , ssmask(:,:) , zzz, ih ) 158 CALL mpp_maxloc( 'stpctl', ABS(un) , umask (:,:,:), zzz, iu ) 159 CALL mpp_minloc( 'stpctl', tsn(:,:,:,jp_sal), tmask (:,:,:), zzz, is1 ) 160 CALL mpp_maxloc( 'stpctl', tsn(:,:,:,jp_sal), tmask (:,:,:), zzz, is2 ) 157 IF( lk_mpp .AND. sn_cfctl%l_glochk ) THEN 158 ! have use mpp_max (because sn_cfctl%l_glochk=.T. and distributed) 159 CALL mpp_maxloc( 'stpctl', ABS(ssh(:,:,Kmm)) , ssmask(:,:) , zzz, ih ) 160 CALL mpp_maxloc( 'stpctl', ABS(uu(:,:,:,Kmm)) , umask (:,:,:), zzz, iu ) 161 CALL mpp_minloc( 'stpctl', ts(:,:,:,jp_sal,Kmm), tmask (:,:,:), zzz, is1 ) 162 CALL mpp_maxloc( 'stpctl', ts(:,:,:,jp_sal,Kmm), tmask (:,:,:), zzz, is2 ) 161 163 ELSE 162 ih(:) = MAXLOC( ABS( sshn(:,:) ) ) + (/ nimpp - 1, njmpp - 1 /) 163 iu(:) = MAXLOC( ABS( un (:,:,:) ) ) + (/ nimpp - 1, njmpp - 1, 0 /) 164 is1(:) = MINLOC( tsn(:,:,:,jp_sal), mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /) 165 is2(:) = MAXLOC( tsn(:,:,:,jp_sal), mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /) 164 ! find local min and max locations 165 ih(:) = MAXLOC( ABS( ssh(:,:,Kmm) ) ) + (/ nimpp - 1, njmpp - 1 /) 166 iu(:) = MAXLOC( ABS( uu (:,:,:,Kmm) ) ) + (/ nimpp - 1, njmpp - 1, 0 /) 167 is1(:) = MINLOC( ts(:,:,:,jp_sal,Kmm), mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /) 168 is2(:) = MAXLOC( ts(:,:,:,jp_sal,Kmm), mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /) 166 169 ENDIF 167 170 … … 173 176 WRITE(ctmp6,*) ' ===> output of last computed fields in output.abort.nc file' 174 177 175 CALL dia_wri_state( 'output.abort' ) ! create an output.abort file178 CALL dia_wri_state( Kmm, 'output.abort' ) ! create an output.abort file 176 179 177 IF( .NOT. ln_ctl) THEN180 IF( .NOT. sn_cfctl%l_glochk ) THEN 178 181 WRITE(ctmp8,*) 'E R R O R message from sub-domain: ', narea 179 182 CALL ctl_stop( 'STOP', ctmp1, ' ', ctmp8, ' ', ctmp2, ctmp3, ctmp4, ctmp5, ctmp6 )
Note: See TracChangeset
for help on using the changeset viewer.