Changeset 13250 for NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/tests/CANAL/MY_SRC/stpctl.F90
- Timestamp:
- 2020-07-04T12:40:46+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/tests/CANAL/MY_SRC/stpctl.F90
r13014 r13250 66 66 REAL(wp), DIMENSION(9) :: zmax, zmaxlocal 67 67 LOGICAL :: ll_wrtstp, ll_colruns, ll_wrtruns 68 LOGICAL, DIMENSION(jpi,jpj,jpk) :: llmsk 68 69 CHARACTER(len=20) :: clname 69 70 !!---------------------------------------------------------------------- … … 111 112 ! 112 113 ! !== test of extrema ==! 114 ! 115 ! define zmax default value. needed for land processors 116 IF( ll_colruns ) THEN ! default value: must not be kept when calling mpp_max -> must be as small as possible 117 zmax(:) = -HUGE(1._wp) 118 ELSE ! default value: must not give true for any of the tests bellow (-> avoid manipulating HUGE...) 119 zmax(:) = 0._wp 120 zmax(3) = -1._wp ! avoid salinity minimum at 0. 121 ENDIF 122 ! 113 123 IF( ll_wd ) THEN 114 124 zmax(1) = MAXVAL( ABS( sshn(:,:) + ssh_ref*tmask(:,:,1) ) ) ! ssh max … … 117 127 ENDIF 118 128 zmax(2) = MAXVAL( ABS( un(:,:,:) ) ) ! velocity max (zonal only) 119 zmax(3) = MAXVAL( -tsn(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp ) ! minus salinity max 120 zmax(4) = MAXVAL( tsn(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp ) ! salinity max 121 IF( ll_colruns ) THEN ! following variables are used only in the netcdf file 122 zmax(5) = MAXVAL( -tsn(:,:,:,jp_tem) , mask = tmask(:,:,:) == 1._wp ) ! minus temperature max 123 zmax(6) = MAXVAL( tsn(:,:,:,jp_tem) , mask = tmask(:,:,:) == 1._wp ) ! temperature max 124 IF( ln_zad_Aimp ) THEN 125 zmax(8) = MAXVAL( ABS( wi(:,:,:) ) , mask = wmask(:,:,:) == 1._wp ) ! implicit vertical vel. max 126 zmax(9) = MAXVAL( Cu_adv(:,:,:) , mask = tmask(:,:,:) == 1._wp ) ! partitioning coeff. max 127 ELSE 128 zmax(8:9) = 0._wp 129 ENDIF 130 ELSE 131 zmax(5:9) = 0._wp 129 llmsk(:,:,:) = tmask(:,:,:) == 1._wp 130 IF( COUNT( llmsk(:,:,:) ) > 0 ) THEN ! avoid huge values sent back for land processors... 131 zmax(3) = MAXVAL( -tsn(:,:,:,jp_sal) , mask = llmsk ) ! minus salinity max 132 zmax(4) = MAXVAL( tsn(:,:,:,jp_sal) , mask = llmsk ) ! salinity max 133 IF( ll_colruns .OR. jpnij == 1 ) THEN ! following variables are used only in the netcdf file 134 zmax(5) = MAXVAL( -tsn(:,:,:,jp_tem) , mask = llmsk ) ! minus temperature max 135 zmax(6) = MAXVAL( tsn(:,:,:,jp_tem) , mask = llmsk ) ! temperature max 136 IF( ln_zad_Aimp ) THEN 137 zmax(9) = MAXVAL( Cu_adv(:,:,:) , mask = llmsk ) ! partitioning coeff. max 138 llmsk(:,:,:) = wmask(:,:,:) == 1._wp 139 IF( COUNT( llmsk(:,:,:) ) > 0 ) THEN ! avoid huge values sent back for land processors... 140 zmax(8) = MAXVAL( ABS( wi(:,:,:) ) , mask = wmask(:,:,:) == 1._wp ) ! implicit vertical vel. max 141 ENDIF 142 ENDIF 143 ENDIF 132 144 ENDIF 133 145 zmax(7) = REAL( nstop , wp ) ! stop indicator … … 200 212 ! 201 213 IF( ll_colruns .or. jpnij == 1 ) THEN ! all processes synchronized -> use lwp to print in opened ocean.output files 202 IF(lwp) CALL ctl_stop( ctmp1, ' ', ctmp2, ctmp3, ctmp4, ctmp5, ' ', ctmp6 ) 214 IF(lwp) THEN ; CALL ctl_stop( ctmp1, ' ', ctmp2, ctmp3, ctmp4, ctmp5, ' ', ctmp6 ) 215 ELSE ; nstop = MAX(1, nstop) ! make sure nstop > 0 (automatically done when calling ctl_stop) 216 ENDIF 203 217 ELSE ! only mpi subdomains with errors are here -> STOP now 204 218 CALL ctl_stop( 'STOP', ctmp1, ' ', ctmp2, ctmp3, ctmp4, ctmp5, ' ', ctmp6 ) 205 219 ENDIF 206 220 ! 207 IF( nstop == 0 ) nstop = 1 208 ngrdstop = Agrif_Fixed() 209 ! 221 ENDIF 222 ! 223 IF( nstop > 0 ) THEN ! an error was detected and we did not abort yet... 224 ngrdstop = Agrif_Fixed() ! store which grid got this error 225 IF( .NOT. ll_colruns .AND. jpnij > 1 ) CALL ctl_stop( 'STOP' ) ! we must abort here to avoid MPI deadlock 210 226 ENDIF 211 227 !
Note: See TracChangeset
for help on using the changeset viewer.