Changeset 9124
- Timestamp:
- 2017-12-19T09:26:25+01:00 (5 years ago)
- Location:
- branches/2017/dev_merge_2017/NEMOGCM
- Files:
-
- 176 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/MY_SRC/usrdef_hgr.F90
r6960 r9124 20 20 USE in_out_manager ! I/O manager 21 21 USE lib_mpp ! MPP library 22 USE timing ! Timing23 22 24 23 IMPLICIT NONE … … 67 66 !!------------------------------------------------------------------------------- 68 67 ! 69 IF( nn_timing == 1 ) CALL timing_start('usr_def_hgr')70 !71 68 IF(lwp) WRITE(numout,*) 72 69 IF(lwp) WRITE(numout,*) 'usr_def_hgr : LOCK_EXCHANGE configuration bassin' … … 107 104 pff_t(:,:) = 0._wp 108 105 ! 109 IF( nn_timing == 1 ) CALL timing_stop('usr_def_hgr')110 !111 106 END SUBROUTINE usr_def_hgr 112 107 -
branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/OVERFLOW/MY_SRC/usrdef_hgr.F90
r6960 r9124 20 20 USE in_out_manager ! I/O manager 21 21 USE lib_mpp ! MPP library 22 USE timing ! Timing23 22 24 23 IMPLICIT NONE … … 67 66 !!------------------------------------------------------------------------------- 68 67 ! 69 IF( nn_timing == 1 ) CALL timing_start('usr_def_hgr')70 !71 68 IF(lwp) WRITE(numout,*) 72 69 IF(lwp) WRITE(numout,*) 'usr_def_hgr : OVERFLOW configuration bassin' … … 107 104 pff_t(:,:) = 0._wp 108 105 ! 109 IF( nn_timing == 1 ) CALL timing_stop('usr_def_hgr')110 !111 106 END SUBROUTINE usr_def_hgr 112 107 -
branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/SAS_BIPER/MY_SRC/usrdef_hgr.F90
r7819 r9124 20 20 USE in_out_manager ! I/O manager 21 21 USE lib_mpp ! MPP library 22 USE timing ! Timing23 22 24 23 IMPLICIT NONE … … 29 28 !!---------------------------------------------------------------------- 30 29 !! NEMO/OPA 4.0 , NEMO Consortium (2016) 31 !! $Id $30 !! $Id:$ 32 31 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 33 32 !!---------------------------------------------------------------------- … … 68 67 REAL(wp) :: ztj, zuj, zvj, zfj ! - - 69 68 !!------------------------------------------------------------------------------- 70 !71 IF( nn_timing == 1 ) CALL timing_start('usr_def_hgr')72 69 ! 73 70 IF(lwp) WRITE(numout,*) … … 152 149 pff_t(:,:) = 0._wp 153 150 ! 154 IF( nn_timing == 1 ) CALL timing_stop('usr_def_hgr') 155 ! 156 END SUBROUTINE usr_def_hgr 151 END SUBROUTINE usr_def_hgr 157 152 158 153 !!====================================================================== -
branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/SAS_BIPER/MY_SRC/usrdef_zgr.F90
r9019 r9124 20 20 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 21 21 USE lib_mpp ! distributed memory computing library 22 USE wrk_nemo ! Memory allocation23 USE timing ! Timing24 22 25 23 IMPLICIT NONE -
branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/VORTEX/MY_SRC/usrdef_hgr.F90
r9113 r9124 20 20 USE in_out_manager ! I/O manager 21 21 USE lib_mpp ! MPP library 22 USE timing ! Timing23 22 24 23 IMPLICIT NONE … … 66 65 REAL(wp) :: zti, zui, ztj, zvj ! local scalars 67 66 !!------------------------------------------------------------------------------- 68 !69 IF( nn_timing == 1 ) CALL timing_start('usr_def_hgr')70 67 ! 71 68 IF(lwp) WRITE(numout,*) … … 129 126 pff_t(:,:) = zf0 + zbeta * pphit(:,:) * 1.e+3 130 127 ! 131 IF( nn_timing == 1 ) CALL timing_stop('usr_def_hgr') 132 ! 133 END SUBROUTINE usr_def_hgr 128 END SUBROUTINE usr_def_hgr 134 129 135 130 !!====================================================================== -
branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/VORTEX/MY_SRC/usrdef_zgr.F90
r8703 r9124 24 24 USE lib_mpp ! distributed memory computing library 25 25 USE wrk_nemo ! Memory allocation 26 USE timing ! Timing27 26 28 27 IMPLICIT NONE … … 131 130 !!---------------------------------------------------------------------- 132 131 ! 133 IF( nn_timing == 1 ) CALL timing_start('zgr_z')134 !135 132 zd = 5000._wp/FLOAT(jpkm1) 136 133 ! … … 168 165 ENDIF 169 166 ! 170 IF( nn_timing == 1 ) CALL timing_stop('zgr_z')171 !172 167 END SUBROUTINE zgr_z 173 168 … … 226 221 INTEGER :: jk 227 222 !!---------------------------------------------------------------------- 228 !229 IF( nn_timing == 1 ) CALL timing_start('zgr_zco')230 223 ! 231 224 DO jk = 1, jpk … … 241 234 END DO 242 235 ! 243 IF( nn_timing == 1 ) CALL timing_stop('zgr_zco')244 !245 236 END SUBROUTINE zgr_zco 246 237 -
branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/WAD/MY_SRC/bdyini.F90
r9019 r9124 30 30 USE iom ! I/O 31 31 USE wrk_nemo ! Memory Allocation 32 USE timing ! Timing33 32 34 33 IMPLICIT NONE … … 46 45 INTEGER, DIMENSION(jp_nseg) :: jpjnob, jpindt, jpinft, npckgn ! 47 46 INTEGER, DIMENSION(jp_nseg) :: jpjsob, jpisdt, jpisft, npckgs ! 47 48 48 !!---------------------------------------------------------------------- 49 49 !! NEMO/OPA 3.7 , NEMO Consortium (2015) … … 75 75 INTEGER :: ios ! Local integer output status for namelist read 76 76 !!---------------------------------------------------------------------- 77 !78 IF( nn_timing == 1 ) CALL timing_start('bdy_init')79 77 80 78 ! ------------------------ … … 114 112 ENDIF 115 113 ! 116 IF( nn_timing == 1 ) CALL timing_stop('bdy_init')117 !118 114 END SUBROUTINE bdy_init 115 119 116 120 117 SUBROUTINE bdy_segs … … 159 156 INTEGER :: ios ! Local integer output status for namelist read 160 157 !!---------------------------------------------------------------------- 161 !162 IF( nn_timing == 1 ) CALL timing_start('bdy_segs')163 158 ! 164 159 cgrid = (/'t','u','v'/) … … 1325 1320 CALL wrk_dealloc(jpi,jpj, zfmask ) 1326 1321 ! 1327 IF( nn_timing == 1 ) CALL timing_stop('bdy_segs')1328 !1329 1322 END SUBROUTINE bdy_segs 1323 1330 1324 1331 1325 SUBROUTINE bdy_ctl_seg -
branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/WAD/MY_SRC/domain.F90
r9024 r9124 46 46 USE lib_mpp ! distributed memory computing library 47 47 USE wrk_nemo ! Memory Allocation 48 USE timing ! Timing49 48 50 49 IMPLICIT NONE … … 82 81 REAL(wp), DIMENSION(jpi,jpj) :: z1_hu_0, z1_hv_0 83 82 !!---------------------------------------------------------------------- 84 !85 IF( nn_timing == 1 ) CALL timing_start('dom_init')86 83 ! 87 84 IF(lwp) THEN ! Ocean domain Parameters (control print) … … 198 195 ! 199 196 IF( ln_write_cfg ) CALL cfg_write ! create the configuration file 200 !201 IF( nn_timing == 1 ) CALL timing_stop('dom_init')202 197 ! 203 198 END SUBROUTINE dom_init -
branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/WAD/MY_SRC/usrdef_hgr.F90
r7467 r9124 20 20 USE in_out_manager ! I/O manager 21 21 USE lib_mpp ! MPP library 22 USE timing ! Timing23 22 24 23 IMPLICIT NONE … … 67 66 !!------------------------------------------------------------------------------- 68 67 ! 69 IF( nn_timing == 1 ) CALL timing_start('usr_def_hgr')70 !71 68 IF(lwp) WRITE(numout,*) 72 69 IF(lwp) WRITE(numout,*) 'usr_def_hgr : WAD_TEST_CASES configuration basin' … … 107 104 pff_t(:,:) = 0._wp 108 105 ! 109 IF( nn_timing == 1 ) CALL timing_stop('usr_def_hgr')110 !111 106 END SUBROUTINE usr_def_hgr 112 107 -
branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/WAD/MY_SRC/usrdef_zgr.F90
r9024 r9124 25 25 USE lib_mpp ! distributed memory computing library 26 26 USE wrk_nemo ! Memory allocation 27 USE timing ! Timing28 27 29 28 IMPLICIT NONE -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icealb.F90
r9019 r9124 112 112 !!--------------------------------------------------------------------- 113 113 ! 114 IF( nn_timing == 1) CALL timing_start('icealb')114 IF( ln_timing ) CALL timing_start('icealb') 115 115 ! 116 116 z1_href_pnd = 0.05 … … 173 173 palb_cs(:,:,:) = palb_os(:,:,:) - ( - 0.1010 * palb_os(:,:,:) * palb_os(:,:,:) + 0.1933 * palb_os(:,:,:) - 0.0148 ) 174 174 ! 175 IF( nn_timing == 1) CALL timing_stop('icealb')175 IF( ln_timing ) CALL timing_stop('icealb') 176 176 ! 177 177 END SUBROUTINE ice_alb -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icecor.F90
r9019 r9124 57 57 !!---------------------------------------------------------------------- 58 58 ! controls 59 IF( nn_timing == 1) CALL timing_start('icecor') ! timing60 IF( ln_icediachk 59 IF( ln_timing ) CALL timing_start('icecor') ! timing 60 IF( ln_icediachk ) CALL ice_cons_hsm(0, 'icecor', rdiag_v, rdiag_s, rdiag_t, rdiag_fv, rdiag_fs, rdiag_ft) ! conservation 61 61 ! 62 62 IF( kt == nit000 .AND. lwp .AND. kn == 2 ) THEN … … 178 178 IF( ln_ctl ) CALL ice_prt3D ('icecor') ! prints 179 179 IF( ln_icectl .AND. kn == 2 ) CALL ice_prt( kt, iiceprt, jiceprt, 2, ' - Final state - ' ) ! prints 180 IF( nn_timing == 1) CALL timing_stop ('icecor') ! timing180 IF( ln_timing ) CALL timing_stop ('icecor') ! timing 181 181 ! 182 182 END SUBROUTINE ice_cor -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icedia.F90
r9019 r9124 72 72 REAL(wp) :: zdiff_vol, zdiff_sal, zdiff_tem 73 73 !!--------------------------------------------------------------------------- 74 IF( nn_timing == 1) CALL timing_start('ice_dia')74 IF( ln_timing ) CALL timing_start('ice_dia') 75 75 76 76 IF( kt == nit000 .AND. lwp ) THEN … … 156 156 IF( lrst_ice ) CALL ice_dia_rst( 'WRITE', kt_ice ) 157 157 ! 158 IF( nn_timing == 1) CALL timing_stop('ice_dia')158 IF( ln_timing ) CALL timing_stop('ice_dia') 159 159 ! 160 160 END SUBROUTINE ice_dia -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icedyn.F90
r9076 r9124 72 72 !!-------------------------------------------------------------------- 73 73 ! 74 IF( nn_timing == 1) CALL timing_start('icedyn')74 IF( ln_timing ) CALL timing_start('icedyn') 75 75 ! 76 76 IF( kt == nit000 .AND. lwp ) THEN … … 123 123 END SELECT 124 124 ! 125 IF( nn_timing == 1) CALL timing_stop('icedyn')125 IF( ln_timing ) CALL timing_stop('icedyn') 126 126 ! 127 127 END SUBROUTINE ice_dyn 128 128 129 129 130 SUBROUTINE Hbig( phmax ) … … 171 172 END SUBROUTINE Hbig 172 173 174 173 175 SUBROUTINE Hpiling 174 176 !!------------------------------------------------------------------- … … 221 223 REWIND( numnam_ice_cfg ) ! Namelist namdyn in configuration namelist : Ice dynamics 222 224 READ ( numnam_ice_cfg, namdyn, IOSTAT = ios, ERR = 902 ) 223 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namdyn in configuration namelist', lwp )225 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdyn in configuration namelist', lwp ) 224 226 IF(lwm) WRITE ( numoni, namdyn ) 225 227 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icedyn_adv.F90
r9019 r9124 70 70 !!--------------------------------------------------------------------- 71 71 ! 72 IF( nn_timing == 1 )CALL timing_start('icedyn_adv')72 IF( ln_timing ) CALL timing_start('icedyn_adv') 73 73 ! 74 74 IF( kt == nit000 .AND. lwp ) THEN … … 112 112 113 113 ! controls 114 IF( ln_icediachk 115 IF( ln_icectl 116 IF( nn_timing == 1) CALL timing_stop ('icedyn_adv') ! timing114 IF( ln_icediachk ) CALL ice_cons_hsm(1, 'icedyn_adv', rdiag_v, rdiag_s, rdiag_t, rdiag_fv, rdiag_fs, rdiag_ft) ! conservation 115 IF( ln_icectl ) CALL ice_prt (kt, iiceprt, jiceprt,-1, ' - ice dyn & trp - ') ! prints 116 IF( ln_timing ) CALL timing_stop ('icedyn_adv') ! timing 117 117 ! 118 118 END SUBROUTINE ice_dyn_adv -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icedyn_rdgrft.F90
r9019 r9124 138 138 !!------------------------------------------------------------------- 139 139 ! controls 140 IF( nn_timing == 1) CALL timing_start('icedyn_rdgrft') ! timing141 IF( ln_icediachk 140 IF( ln_timing ) CALL timing_start('icedyn_rdgrft') ! timing 141 IF( ln_icediachk ) CALL ice_cons_hsm(0, 'icedyn_rdgrft', rdiag_v, rdiag_s, rdiag_t, rdiag_fv, rdiag_fs, rdiag_ft) ! conservation 142 142 143 143 IF( kt == nit000 ) THEN … … 338 338 339 339 ! controls 340 IF( ln_icediachk 341 IF( ln_ctl 342 IF( nn_timing == 1) CALL timing_stop ('icedyn_rdgrft') ! timing340 IF( ln_icediachk ) CALL ice_cons_hsm(1, 'icedyn_rdgrft', rdiag_v, rdiag_s, rdiag_t, rdiag_fv, rdiag_fs, rdiag_ft) ! conservation 341 IF( ln_ctl ) CALL ice_prt3D ('icedyn_rdgrft') ! prints 342 IF( ln_timing ) CALL timing_stop ('icedyn_rdgrft') ! timing 343 343 ! 344 344 END SUBROUTINE ice_dyn_rdgrft -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icedyn_rhg.F90
r9019 r9124 62 62 !!-------------------------------------------------------------------- 63 63 ! controls 64 IF( nn_timing == 1) CALL timing_start('icedyn_rhg') ! timing65 IF( ln_icediachk 64 IF( ln_timing ) CALL timing_start('icedyn_rhg') ! timing 65 IF( ln_icediachk ) CALL ice_cons_hsm(0, 'icedyn_rhg', rdiag_v, rdiag_s, rdiag_t, rdiag_fv, rdiag_fs, rdiag_ft) ! conservation 66 66 ! 67 67 IF( kt == nit000 .AND. lwp ) THEN … … 87 87 ! 88 88 ! controls 89 IF( ln_icediachk 90 IF( ln_ctl 91 IF( nn_timing == 1) CALL timing_stop ('icedyn_rhg') ! timing89 IF( ln_icediachk ) CALL ice_cons_hsm(1, 'icedyn_rhg', rdiag_v, rdiag_s, rdiag_t, rdiag_fv, rdiag_fs, rdiag_ft) ! conservation 90 IF( ln_ctl ) CALL ice_prt3D ('icedyn_rhg') ! prints 91 IF( ln_timing ) CALL timing_stop ('icedyn_rhg') ! timing 92 92 ! 93 93 END SUBROUTINE ice_dyn_rhg 94 94 95 95 96 SUBROUTINE ice_dyn_rhg_init … … 116 117 REWIND( numnam_ice_cfg ) ! Namelist namdyn_rhg in configuration namelist : Ice dynamics 117 118 READ ( numnam_ice_cfg, namdyn_rhg, IOSTAT = ios, ERR = 902 ) 118 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namdyn_rhg in configuration namelist', lwp )119 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdyn_rhg in configuration namelist', lwp ) 119 120 IF(lwm) WRITE ( numoni, namdyn_rhg ) 120 121 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/iceforcing.F90
r9076 r9124 62 62 !!------------------------------------------------------------------- 63 63 64 IF( nn_timing == 1) CALL timing_start('ice_forcing')64 IF( ln_timing ) CALL timing_start('ice_forcing') 65 65 66 66 IF( kt == nit000 .AND. lwp ) THEN … … 87 87 ENDIF 88 88 89 IF( nn_timing == 1) CALL timing_stop('ice_forcing')89 IF( ln_timing ) CALL timing_stop('ice_forcing') 90 90 ! 91 91 END SUBROUTINE ice_forcing_tau … … 120 120 !!-------------------------------------------------------------------- 121 121 ! 122 IF( nn_timing == 1) CALL timing_start('ice_forcing_flx')122 IF( ln_timing ) CALL timing_start('ice_forcing_flx') 123 123 124 124 IF( kt == nit000 .AND. lwp ) THEN … … 165 165 ENDIF 166 166 ! 167 IF( nn_timing == 1) CALL timing_stop('ice_forcing_flx')167 IF( ln_timing ) CALL timing_stop('ice_forcing_flx') 168 168 ! 169 169 END SUBROUTINE ice_forcing_flx -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icestp.F90
r9118 r9124 102 102 !!---------------------------------------------------------------------- 103 103 ! 104 IF( nn_timing == 1) CALL timing_start('ice_stp')104 IF( ln_timing ) CALL timing_start('ice_stp') 105 105 ! 106 106 ! !-----------------------! … … 201 201 !!gm remark, the ocean-ice stress is not saved in ice diag call above ..... find a solution!!! 202 202 ! 203 IF( nn_timing == 1) CALL timing_stop('ice_stp')203 IF( ln_timing ) CALL timing_stop('ice_stp') 204 204 ! 205 205 END SUBROUTINE ice_stp -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icethd.F90
r9076 r9124 98 98 !!------------------------------------------------------------------- 99 99 ! controls 100 IF( nn_timing == 1) CALL timing_start('icethd') ! timing101 IF( ln_icediachk 100 IF( ln_timing ) CALL timing_start('icethd') ! timing 101 IF( ln_icediachk ) CALL ice_cons_hsm(0, 'icethd', rdiag_v, rdiag_s, rdiag_t, rdiag_fv, rdiag_fs, rdiag_ft) ! conservation 102 102 103 103 IF( kt == nit000 .AND. lwp ) THEN … … 271 271 ! ! & make sure at_i=SUM(a_i) & ato_i=1 where at_i=0 272 272 ! 273 IF( jpl > 1 )CALL ice_itd_rem( kt ) ! --- Transport ice between thickness categories --- !274 ! 275 IF( ln_icedO )CALL ice_thd_do ! --- frazil ice growing in leads --- !273 IF( jpl > 1 ) CALL ice_itd_rem( kt ) ! --- Transport ice between thickness categories --- ! 274 ! 275 IF( ln_icedO ) CALL ice_thd_do ! --- frazil ice growing in leads --- ! 276 276 ! 277 277 ! controls 278 IF( ln_icectl 279 IF( ln_ctl 280 IF( nn_timing == 1) CALL timing_stop('icethd') ! timing278 IF( ln_icectl ) CALL ice_prt (kt, iiceprt, jiceprt, 1, ' - ice thermodyn. - ') ! prints 279 IF( ln_ctl ) CALL ice_prt3D ('icethd') ! prints 280 IF( ln_timing ) CALL timing_stop('icethd') ! timing 281 281 ! 282 282 END SUBROUTINE ice_thd … … 568 568 REWIND( numnam_ice_cfg ) ! Namelist namthd in configuration namelist : Ice thermodynamics 569 569 READ ( numnam_ice_cfg, namthd, IOSTAT = ios, ERR = 902 ) 570 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namthd in configuration namelist', lwp )570 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namthd in configuration namelist', lwp ) 571 571 IF(lwm) WRITE ( numoni, namthd ) 572 572 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icethd_zdf.F90
r9119 r9124 56 56 !! of vertical diffusion 57 57 !!------------------------------------------------------------------- 58 58 ! 59 59 SELECT CASE ( nice_zdf ) ! Choose the vertical heat diffusion solver 60 60 ! … … 77 77 ! 78 78 END SELECT 79 79 ! 80 80 END SUBROUTINE ice_thd_zdf 81 81 … … 104 104 REWIND( numnam_ice_cfg ) ! Namelist namthd_zdf in configuration namelist : Ice thermodynamics 105 105 READ ( numnam_ice_cfg, namthd_zdf, IOSTAT = ios, ERR = 902 ) 106 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namthd_zdf in configuration namelist', lwp )106 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namthd_zdf in configuration namelist', lwp ) 107 107 IF(lwm) WRITE ( numoni, namthd_zdf ) 108 108 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/iceupdate.F90
r9071 r9124 105 105 REAL(wp), DIMENSION(jpi,jpj,jpl) :: zalb_cs, zalb_os ! 3D workspace 106 106 !!--------------------------------------------------------------------- 107 IF( nn_timing == 1 )CALL timing_start('ice_update')107 IF( ln_timing ) CALL timing_start('ice_update') 108 108 109 109 IF( kt == nit000 .AND. lwp ) THEN … … 297 297 IF( ln_icectl ) CALL ice_prt (kt, iiceprt, jiceprt, 3, 'Final state ice_update') ! prints 298 298 IF( ln_ctl ) CALL ice_prt3D ('iceupdate') ! prints 299 IF( nn_timing == 1) CALL timing_stop ('ice_update') ! timing299 IF( ln_timing ) CALL timing_stop ('ice_update') ! timing 300 300 ! 301 301 END SUBROUTINE ice_update_flx … … 334 334 REAL(wp) :: zat_v, zvtau_ice, zv_t, zrhoco ! - - 335 335 !!--------------------------------------------------------------------- 336 337 IF( nn_timing == 1 ) CALL timing_start('ice_update_tau') 336 IF( ln_timing ) CALL timing_start('ice_update_tau') 338 337 339 338 IF( kt == nit000 .AND. lwp ) THEN … … 381 380 CALL lbc_lnk_multi( utau, 'U', -1., vtau, 'V', -1. ) ! lateral boundary condition 382 381 ! 383 IF( nn_timing == 1 )CALL timing_stop('ice_update_tau')382 IF( ln_timing ) CALL timing_stop('ice_update_tau') 384 383 ! 385 384 END SUBROUTINE ice_update_tau … … 400 399 IF(lwp) WRITE(numout,*) 'ice_update_init: ???? ' 401 400 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~' 402 401 ! 403 402 ! ! allocate ice_update array 404 403 IF( ice_update_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'ice_update_init : unable to allocate standard arrays' ) … … 407 406 ! 408 407 END SUBROUTINE ice_update_init 408 409 409 410 410 SUBROUTINE update_rst( cdrw, kt ) -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icewri.F90
r9118 r9124 58 58 !!------------------------------------------------------------------- 59 59 60 IF( nn_timing == 1) CALL timing_start('icewri')60 IF( ln_timing ) CALL timing_start('icewri') 61 61 62 62 !---------------------------------------- … … 220 220 !!gm idem for the ocean... Ask Seb how to get read of ioipsl.... 221 221 ! 222 IF( nn_timing == 1) CALL timing_stop('icewri')222 IF( ln_timing ) CALL timing_stop('icewri') 223 223 ! 224 224 END SUBROUTINE ice_wri -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90
r9019 r9124 105 105 !! - interpolates data if needed 106 106 !!---------------------------------------------------------------------- 107 !108 107 USE oce, ONLY: zhdivtr => ua 109 108 INTEGER, INTENT(in) :: kt ! ocean time-step index 110 109 INTEGER :: ji, jj, jk 111 110 REAL(wp), POINTER, DIMENSION(:,:) :: zemp 112 ! 113 !!---------------------------------------------------------------------- 114 115 ! 116 IF( nn_timing == 1 ) CALL timing_start( 'dta_dyn') 111 !!---------------------------------------------------------------------- 112 ! 113 IF( ln_timing ) CALL timing_start( 'dta_dyn') 117 114 ! 118 115 nsecdyn = nsec_year + nsec1jan000 ! number of seconds between Jan. 1st 00h of nit000 year and the middle of time step … … 195 192 ENDIF 196 193 ! 197 IF( nn_timing == 1 )CALL timing_stop( 'dta_dyn')194 IF( ln_timing ) CALL timing_stop( 'dta_dyn') 198 195 ! 199 196 END SUBROUTINE dta_dyn -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OFF_SRC/nemogcm.F90
r9019 r9124 130 130 ENDIF 131 131 ! 132 IF( nn_timing == 1) CALL timing_finalize132 IF( ln_timing ) CALL timing_finalize 133 133 ! 134 134 CALL nemo_closefile … … 380 380 isplt = nn_isplt 381 381 jsplt = nn_jsplt 382 !!gm to be remove at the end of the 2017 merge party383 if( ln_timing ) then ; nn_timing = 1384 else ; nn_timing = 0385 endif386 !!gm end387 388 382 389 383 IF(lwp) THEN ! control print -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90
r9019 r9124 87 87 !!--------------------------------------------------------------------------- 88 88 ! 89 IF( nn_timing == 1) CALL timing_start('bdy_dta')89 IF( ln_timing ) CALL timing_start('bdy_dta') 90 90 ! 91 91 ! Initialise data arrays once for all from initial conditions where required … … 395 395 ENDIF 396 396 ! 397 IF( nn_timing == 1 )CALL timing_stop('bdy_dta')397 IF( ln_timing ) CALL timing_stop('bdy_dta') 398 398 ! 399 399 END SUBROUTINE bdy_dta … … 441 441 !!--------------------------------------------------------------------------- 442 442 ! 443 IF( nn_timing == 1 ) CALL timing_start('bdy_dta_init')444 !445 443 IF(lwp) WRITE(numout,*) 446 444 IF(lwp) WRITE(numout,*) 'bdy_dta_ini : initialization of data at the open boundaries' … … 827 825 END DO ! jbdy 828 826 ! 829 IF( nn_timing == 1 ) CALL timing_stop('bdy_dta_init')830 !831 827 END SUBROUTINE bdy_dta_init 832 828 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90
r7646 r9124 17 17 !!---------------------------------------------------------------------- 18 18 USE wrk_nemo ! Memory Allocation 19 USE timing ! Timing20 19 USE oce ! ocean dynamics and tracers 21 20 USE dom_oce ! ocean space and time domain … … 53 52 REAL(wp), POINTER, DIMENSION(:,:) :: pua2d, pva2d ! after barotropic velocities 54 53 !!---------------------------------------------------------------------- 55 !56 IF( nn_timing == 1 ) CALL timing_start('bdy_dyn')57 54 ! 58 55 ll_dyn2d = .true. … … 129 126 CALL wrk_dealloc( jpi,jpj, pua2d, pva2d ) 130 127 ! 131 IF( nn_timing == 1 ) CALL timing_stop('bdy_dyn')132 !133 128 END SUBROUTINE bdy_dyn 134 129 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn2d.F90
r9023 r9124 14 14 !! bdy_ssh : Duplicate sea level across open boundaries 15 15 !!---------------------------------------------------------------------- 16 USE timing ! Timing17 16 USE oce ! ocean dynamics and tracers 18 17 USE dom_oce ! ocean space and time domain … … 95 94 !!---------------------------------------------------------------------- 96 95 ! 97 IF( nn_timing == 1 ) CALL timing_start('bdy_dyn2d_frs')98 !99 96 igrd = 2 ! Relaxation of zonal velocity 100 97 DO jb = 1, idx%nblen(igrd) … … 115 112 CALL lbc_bdy_lnk( pva2d, 'V', -1., ib_bdy) ! Boundary points should be updated 116 113 ! 117 IF( nn_timing == 1 ) CALL timing_stop('bdy_dyn2d_frs')118 !119 120 114 END SUBROUTINE bdy_dyn2d_frs 121 115 … … 153 147 REAL(wp) :: zflag, z1_2 ! " " 154 148 !!---------------------------------------------------------------------- 155 156 IF( nn_timing == 1 ) CALL timing_start('bdy_dyn2d_fla')157 149 158 150 z1_2 = 0.5_wp … … 218 210 CALL lbc_bdy_lnk( pva2d, 'V', -1., ib_bdy ) ! 219 211 ! 220 IF( nn_timing == 1 ) CALL timing_stop('bdy_dyn2d_fla')221 !222 212 END SUBROUTINE bdy_dyn2d_fla 223 213 … … 244 234 INTEGER :: ii, ij, iibm1, ijbm1 ! indices 245 235 !!---------------------------------------------------------------------- 246 247 IF( nn_timing == 1 ) CALL timing_start('bdy_dyn2d_orlanski')248 236 ! 249 237 igrd = 2 ! Orlanski bc on u-velocity; … … 258 246 CALL lbc_bdy_lnk( pva2d, 'V', -1., ib_bdy ) ! 259 247 ! 260 IF( nn_timing == 1 ) CALL timing_stop('bdy_dyn2d_orlanski')261 !262 248 END SUBROUTINE bdy_dyn2d_orlanski 249 263 250 264 251 SUBROUTINE bdy_ssh( zssh ) -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn3d.F90
r9090 r9124 80 80 !!---------------------------------------------------------------------- 81 81 ! 82 IF( nn_timing == 1 ) CALL timing_start('bdy_dyn3d_spe')83 !84 82 igrd = 2 ! Relaxation of zonal velocity 85 83 DO jb = 1, idx%nblenrim(igrd) … … 104 102 IF( kt == nit000 ) CLOSE( unit = 102 ) 105 103 ! 106 IF( nn_timing == 1 ) CALL timing_stop('bdy_dyn3d_spe')107 !108 104 END SUBROUTINE bdy_dyn3d_spe 105 109 106 110 107 SUBROUTINE bdy_dyn3d_zgrad( idx, dta, kt , ib_bdy ) … … 126 123 !!---------------------------------------------------------------------- 127 124 ! 128 IF( nn_timing == 1 ) CALL timing_start('bdy_dyn3d_zgrad')129 !130 125 igrd = 2 ! Copying tangential velocity into bdy points 131 126 DO jb = 1, idx%nblenrim(igrd) … … 152 147 CALL lbc_bdy_lnk( va, 'V', -1., ib_bdy ) 153 148 ! 154 IF( kt .eq. nit000 ) CLOSE( unit = 102 ) 155 156 IF( nn_timing == 1 ) CALL timing_stop('bdy_dyn3d_zgrad') 157 149 IF( kt == nit000 ) CLOSE( unit = 102 ) 150 ! 158 151 END SUBROUTINE bdy_dyn3d_zgrad 152 159 153 160 154 SUBROUTINE bdy_dyn3d_zro( idx, dta, kt, ib_bdy ) … … 174 168 REAL(wp) :: zwgt ! boundary weight 175 169 !!---------------------------------------------------------------------- 176 !177 IF( nn_timing == 1 ) CALL timing_start('bdy_dyn3d_zro')178 170 ! 179 171 igrd = 2 ! Everything is at T-points here … … 199 191 IF( kt == nit000 ) CLOSE( unit = 102 ) 200 192 ! 201 IF( nn_timing == 1 ) CALL timing_stop('bdy_dyn3d_zro')202 !203 193 END SUBROUTINE bdy_dyn3d_zro 204 194 … … 225 215 !!---------------------------------------------------------------------- 226 216 ! 227 IF( nn_timing == 1 ) CALL timing_start('bdy_dyn3d_frs')228 !229 217 igrd = 2 ! Relaxation of zonal velocity 230 218 DO jb = 1, idx%nblen(igrd) … … 250 238 ! 251 239 IF( kt == nit000 ) CLOSE( unit = 102 ) 252 !253 IF( nn_timing == 1 ) CALL timing_stop('bdy_dyn3d_frs')254 240 ! 255 241 END SUBROUTINE bdy_dyn3d_frs … … 273 259 INTEGER :: jb, igrd ! dummy loop indices 274 260 !!---------------------------------------------------------------------- 275 276 IF( nn_timing == 1 ) CALL timing_start('bdy_dyn3d_orlanski')277 261 ! 278 262 !! Note that at this stage the ub and ua arrays contain the baroclinic velocities. … … 289 273 CALL lbc_bdy_lnk( va, 'V', -1., ib_bdy ) 290 274 ! 291 IF( nn_timing == 1 ) CALL timing_stop('bdy_dyn3d_orlanski')292 !293 275 END SUBROUTINE bdy_dyn3d_orlanski 294 276 … … 309 291 !!---------------------------------------------------------------------- 310 292 ! 311 IF( nn_timing == 1) CALL timing_start('bdy_dyn3d_dmp')293 IF( ln_timing ) CALL timing_start('bdy_dyn3d_dmp') 312 294 ! 313 295 DO ib_bdy=1, nb_bdy … … 339 321 CALL lbc_lnk_multi( ua, 'U', -1., va, 'V', -1. ) ! Boundary points should be updated 340 322 ! 341 IF( nn_timing == 1) CALL timing_stop('bdy_dyn3d_dmp')323 IF( ln_timing ) CALL timing_stop('bdy_dyn3d_dmp') 342 324 ! 343 325 END SUBROUTINE bdy_dyn3d_dmp 326 344 327 345 328 SUBROUTINE bdy_dyn3d_nmn( idx, ib_bdy ) … … 357 340 INTEGER :: jb, igrd ! dummy loop indices 358 341 !!---------------------------------------------------------------------- 359 360 IF( nn_timing == 1 ) CALL timing_start('bdy_dyn3d_nmn')361 342 ! 362 343 !! Note that at this stage the ub and ua arrays contain the baroclinic velocities. … … 373 354 CALL lbc_bdy_lnk( va, 'V', -1., ib_bdy ) 374 355 ! 375 IF( nn_timing == 1 ) CALL timing_stop('bdy_dyn3d_nmn')376 !377 356 END SUBROUTINE bdy_dyn3d_nmn 378 357 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/BDY/bdyice.F90
r9019 r9124 58 58 !!---------------------------------------------------------------------- 59 59 ! 60 IF( ln_timing ) CALL timing_start('bdy_ice') 61 ! 60 62 CALL ice_var_glo2eqv 61 63 ! … … 63 65 ! 64 66 SELECT CASE( cn_ice_lim(ib_bdy) ) 65 CASE('none') 66 CYCLE 67 CASE('frs') 68 CALL bdy_ice_frs( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt, ib_bdy ) 67 CASE('none') ; CYCLE 68 CASE('frs' ) ; CALL bdy_ice_frs( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt, ib_bdy ) 69 69 CASE DEFAULT 70 70 CALL ctl_stop( 'bdy_ice : unrecognised option for open boundaries for ice fields' ) … … 73 73 END DO 74 74 ! 75 CALL ice_var_zapsmall 76 CALL ice_var_agg(1) 75 CALL ice_var_zapsmall 76 CALL ice_var_agg(1) 77 ! 77 78 IF( ln_icectl ) CALL ice_prt( kt, iiceprt, jiceprt, 1, ' - ice thermo bdy - ' ) 79 IF( ln_timing ) CALL timing_stop('bdy_ice') 78 80 ! 79 81 END SUBROUTINE bdy_ice … … 102 104 REAL(wp) :: ztmelts, zdh 103 105 !!------------------------------------------------------------------------------ 104 !105 IF( ln_timing ) CALL timing_start('bdy_ice_frs')106 106 ! 107 107 jgrd = 1 ! Everything is at T-points here … … 255 255 IF( jpl > 1 ) CALL ice_itd_reb( kt ) 256 256 ! 257 IF( ln_timing ) CALL timing_stop('bdy_ice_frs')258 !259 257 END SUBROUTINE bdy_ice_frs 260 258 … … 277 275 REAL(wp) :: zmsk1, zmsk2, zflag 278 276 !!------------------------------------------------------------------------------ 279 !280 IF( ln_timing ) CALL timing_start('bdy_ice_dyn')281 277 ! 282 278 DO ib_bdy=1, nb_bdy … … 355 351 END DO 356 352 ! 357 IF( ln_timing ) CALL timing_stop('bdy_ice_dyn')358 !359 353 END SUBROUTINE bdy_ice_dyn 360 354 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90
r9105 r9124 29 29 USE lib_mpp ! for mpp_sum 30 30 USE iom ! I/O 31 USE timing ! Timing32 31 33 32 IMPLICIT NONE … … 74 73 INTEGER :: ios ! Local integer output status for namelist read 75 74 !!---------------------------------------------------------------------- 76 !77 IF( nn_timing == 1 ) CALL timing_start('bdy_init')78 75 79 76 ! ------------------------ … … 112 109 ! 113 110 ENDIF 114 !115 IF( nn_timing == 1 ) CALL timing_stop('bdy_init')116 111 ! 117 112 END SUBROUTINE bdy_init … … 156 151 INTEGER :: ios ! Local integer output status for namelist read 157 152 !!---------------------------------------------------------------------- 158 !159 IF( nn_timing == 1 ) CALL timing_start('bdy_segs')160 153 ! 161 154 cgrid = (/'t','u','v'/) … … 1314 1307 IF( nb_bdy>0 ) DEALLOCATE( nbidta, nbjdta, nbrdta ) 1315 1308 ! 1316 IF( nn_timing == 1 ) CALL timing_stop('bdy_segs')1317 !1318 1309 END SUBROUTINE bdy_segs 1319 1310 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/BDY/bdylib.F90
r7646 r9124 18 18 USE in_out_manager ! 19 19 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 20 USE timing ! Timing21 20 22 21 IMPLICIT NONE … … 51 50 !!---------------------------------------------------------------------- 52 51 ! 53 IF( nn_timing == 1 ) CALL timing_start('bdy_frs')54 !55 52 igrd = 1 ! Everything is at T-points here 56 53 DO ib = 1, idx%nblen(igrd) … … 63 60 END DO 64 61 ! 65 IF( nn_timing == 1 ) CALL timing_stop('bdy_frs')66 !67 62 END SUBROUTINE bdy_frs 63 68 64 69 65 SUBROUTINE bdy_spe( idx, pta, dta ) … … 82 78 INTEGER :: ii, ij ! 2D addresses 83 79 !!---------------------------------------------------------------------- 84 !85 IF( nn_timing == 1 ) CALL timing_start('bdy_spe')86 80 ! 87 81 igrd = 1 ! Everything is at T-points here … … 94 88 END DO 95 89 ! 96 IF( nn_timing == 1 ) CALL timing_stop('bdy_spe')97 !98 90 END SUBROUTINE bdy_spe 91 99 92 100 93 SUBROUTINE bdy_orl( idx, ptb, pta, dta, ll_npo ) … … 115 108 !!---------------------------------------------------------------------- 116 109 ! 117 IF( nn_timing == 1 ) CALL timing_start('bdy_orl')118 !119 110 igrd = 1 ! Everything is at T-points here 120 111 ! 121 112 CALL bdy_orlanski_3d( idx, igrd, ptb(:,:,:), pta(:,:,:), dta, ll_npo ) 122 113 ! 123 IF( nn_timing == 1 ) CALL timing_stop('bdy_orl')124 !125 114 END SUBROUTINE bdy_orl 115 126 116 127 117 SUBROUTINE bdy_orlanski_2d( idx, igrd, phib, phia, phi_ext, ll_npo ) … … 161 151 REAL(wp), POINTER, DIMENSION(:,:) :: pe_ydif ! scale factors for y-derivatives 162 152 !!---------------------------------------------------------------------- 163 !164 IF( nn_timing == 1 ) CALL timing_start('bdy_orlanski_2d')165 153 ! 166 154 ! ----------------------------------! … … 279 267 END DO 280 268 ! 281 IF( nn_timing == 1 ) CALL timing_stop('bdy_orlanski_2d')282 !283 269 END SUBROUTINE bdy_orlanski_2d 284 270 … … 320 306 REAL(wp), POINTER, DIMENSION(:,:) :: pe_ydif ! scale factors for y-derivatives 321 307 !!---------------------------------------------------------------------- 322 !323 IF( nn_timing == 1 ) CALL timing_start('bdy_orlanski_3d')324 308 ! 325 309 ! ----------------------------------! … … 441 425 END DO 442 426 ! 443 IF( nn_timing == 1 ) CALL timing_stop('bdy_orlanski_3d')444 !445 427 END SUBROUTINE bdy_orlanski_3d 446 428 … … 462 444 INTEGER :: ii, ij, ip, jp ! 2D addresses 463 445 !!---------------------------------------------------------------------- 464 !!465 IF( nn_timing == 1 ) CALL timing_start('bdy_nmn')466 446 ! 467 447 SELECT CASE(igrd) … … 514 494 END DO 515 495 ! 516 IF( nn_timing == 1 ) CALL timing_stop('bdy_nmn')517 !518 496 END SUBROUTINE bdy_nmn 519 497 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90
r7646 r9124 26 26 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 27 27 USE wrk_nemo ! Memory allocation 28 USE timing ! timing29 28 30 29 IMPLICIT NONE … … 83 82 NAMELIST/nambdy_tide/filtide, ln_bdytide_2ddta, ln_bdytide_conj 84 83 !!---------------------------------------------------------------------- 85 !86 IF( nn_timing == 1 ) CALL timing_start('bdytide_init')87 84 ! 88 85 IF (nb_bdy>0) THEN … … 270 267 END DO ! loop on ib_bdy 271 268 ! 272 IF( nn_timing == 1 ) CALL timing_stop('bdytide_init')273 !274 269 END SUBROUTINE bdytide_init 275 270 … … 300 295 REAL(wp), DIMENSION(jpmax_harmo) :: z_sist, z_cost 301 296 !!---------------------------------------------------------------------- 302 !303 IF( nn_timing == 1 ) CALL timing_start('bdytide_update')304 297 ! 305 298 ilen0(1) = SIZE(td%ssh(:,1,1)) … … 363 356 END DO 364 357 ! 365 IF( nn_timing == 1 ) CALL timing_stop('bdytide_update')366 !367 358 END SUBROUTINE bdytide_update 368 359 … … 391 382 REAL(wp) :: z_arg, z_sarg, zramp, zoff, z_cost, z_sist 392 383 !!---------------------------------------------------------------------- 393 !394 IF( nn_timing == 1 ) CALL timing_start('bdy_dta_tides')395 384 ! 396 385 lk_first_btstp=.TRUE. … … 485 474 END IF 486 475 END DO 487 !488 IF( nn_timing == 1 ) CALL timing_stop('bdy_dta_tides')489 476 ! 490 477 END SUBROUTINE bdy_dta_tides -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/BDY/bdytra.F90
r7646 r9124 78 78 END SUBROUTINE bdy_tra 79 79 80 80 81 SUBROUTINE bdy_rnf( idx, pta, jpa ) 81 82 !!---------------------------------------------------------------------- … … 96 97 !!---------------------------------------------------------------------- 97 98 ! 98 IF( nn_timing == 1 ) CALL timing_start('bdy_rnf')99 !100 99 igrd = 1 ! Everything is at T-points here 101 100 DO ib = 1, idx%nblenrim(igrd) … … 110 109 END DO 111 110 ! 112 IF( nn_timing == 1 ) CALL timing_stop('bdy_rnf')113 !114 111 END SUBROUTINE bdy_rnf 112 115 113 116 114 SUBROUTINE bdy_tra_dmp( kt ) … … 130 128 !!---------------------------------------------------------------------- 131 129 ! 132 IF( nn_timing == 1) CALL timing_start('bdy_tra_dmp')130 IF( ln_timing ) CALL timing_start('bdy_tra_dmp') 133 131 ! 134 132 DO ib_bdy = 1, nb_bdy … … 149 147 END DO 150 148 ! 151 IF( nn_timing == 1) CALL timing_stop('bdy_tra_dmp')149 IF( ln_timing ) CALL timing_stop('bdy_tra_dmp') 152 150 ! 153 151 END SUBROUTINE bdy_tra_dmp -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/BDY/bdyvol.F90
r7646 r9124 19 19 USE in_out_manager ! I/O manager 20 20 USE lib_mpp ! for mppsum 21 USE timing ! Timing22 21 USE lib_fortran ! Fortran routines library 23 22 … … 73 72 TYPE(OBC_INDEX), POINTER :: idx 74 73 !!----------------------------------------------------------------------------- 75 !76 IF( nn_timing == 1 ) CALL timing_start('bdy_vol')77 74 ! 78 75 IF( ln_vol ) THEN … … 165 162 END IF 166 163 ! 167 IF( nn_timing == 1 ) CALL timing_stop('bdy_vol')168 !169 164 END IF ! ln_vol 170 165 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/C1D/domc1d.F90
r7646 r9124 18 18 USE in_out_manager ! I/O manager (ctmp1) 19 19 USE wrk_nemo ! Memory allocation 20 USE timing ! Timing21 20 22 21 IMPLICIT NONE … … 68 67 !!---------------------------------------------------------------------- 69 68 70 IF( nn_timing == 1 ) CALL timing_start('dom_c1d')71 72 69 REWIND( numnam_ref ) ! Namelist namdom in reference namelist : space & time domain (bathymetry, mesh, timestep) 73 70 READ ( numnam_ref, namdom, IOSTAT = ios, ERR = 901 ) … … 198 195 ENDIF 199 196 ! 200 IF( nn_timing == 1 ) CALL timing_stop('dom_c1d')201 !202 197 END SUBROUTINE dom_c1d 203 198 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/C1D/dtauvd.F90
r6140 r9124 58 58 NAMELIST/namc1d_uvd/ ln_uvd_init, ln_uvd_dyndmp, cn_dir, sn_ucur, sn_vcur 59 59 !!---------------------------------------------------------------------- 60 !61 IF( nn_timing == 1 ) CALL timing_start('dta_uvd_init')62 60 ! 63 61 ierr0 = 0 ; ierr1 = 0 ; ierr2 = 0 ; ierr3 = 0 … … 117 115 ENDIF 118 116 ! 119 IF( nn_timing == 1 ) CALL timing_stop('dta_uvd_init')120 !121 117 END SUBROUTINE dta_uvd_init 122 118 … … 146 142 !!---------------------------------------------------------------------- 147 143 ! 148 IF( nn_timing == 1) CALL timing_start('dta_uvd')144 IF( ln_timing ) CALL timing_start('dta_uvd') 149 145 ! 150 146 CALL fld_read( kt, 1, sf_uvd ) !== read U & V current data at time step kt ==! … … 223 219 ENDIF 224 220 ! 225 IF( nn_timing == 1 )CALL timing_stop('dta_uvd')221 IF( ln_timing ) CALL timing_stop('dta_uvd') 226 222 ! 227 223 END SUBROUTINE dta_uvd -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/C1D/dyndmp.F90
r6140 r9124 157 157 !!---------------------------------------------------------------------- 158 158 ! 159 IF( nn_timing == 1 )CALL timing_start( 'dyn_dmp' )159 IF( ln_timing ) CALL timing_start( 'dyn_dmp' ) 160 160 ! 161 161 CALL wrk_alloc( jpi,jpj,jpk,2, zuv_dta ) … … 227 227 CALL wrk_dealloc( jpi,jpj,jpk,2, zuv_dta ) 228 228 ! 229 IF( nn_timing == 1 )CALL timing_stop( 'dyn_dmp')229 IF( ln_timing ) CALL timing_stop( 'dyn_dmp') 230 230 ! 231 231 END SUBROUTINE dyn_dmp -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/CRS/crsdomwri.F90
r9019 r9124 3 3 !! Coarse Ocean initialization : write the coarse ocean domain mesh and mask files 4 4 !!====================================================================== 5 !! History : OPA ! 1997-02 (G. Madec) Original code 6 !! 8.1 ! 1999-11 (M. Imbard) NetCDF FORMAT with IOIPSL 7 !! NEMO 1.0 ! 2002-08 (G. Madec) F90 and several file 8 !! 3.0 ! 2008-01 (S. Masson) add dom_uniq_crs 9 !! 4.0 ! 2011-01 (A. R. Porter, STFC Daresbury) dynamical allocation 10 !! ! 2012-06 (J. Simeon, C. Calone, C Ethe ) Reduced and modified for coarse grid 5 !! History : 3.6 ! 2012-06 (J. Simeon, C. Calone, C Ethe ) from domwri, reduced and modified for coarse grid 11 6 !!---------------------------------------------------------------------- 12 7 … … 25 20 USE crslbclnk ! crs mediator to lbclnk 26 21 USE wrk_nemo ! Working array 27 28 29 22 30 23 IMPLICIT NONE … … 74 67 REAL(wp), POINTER, DIMENSION(:,: ) :: ze3tp, ze3wp 75 68 !!---------------------------------------------------------------------- 76 !77 IF( nn_timing == 1 ) CALL timing_start('crs_dom_wri')78 69 ! 79 70 CALL wrk_alloc( jpi_crs, jpj_crs, zprt , zprw ) … … 302 293 CALL wrk_dealloc( jpi_crs, jpj_crs, jpk, zdepu, zdepv ) 303 294 ! 304 IF( nn_timing == 1 ) CALL timing_stop('crs_dom_wri')305 !306 307 295 END SUBROUTINE crs_dom_wri 308 296 … … 327 315 !!---------------------------------------------------------------------- 328 316 ! 329 IF( nn_timing == 1 ) CALL timing_start('crs_dom_uniq_crs')330 !331 317 CALL wrk_alloc( jpi_crs, jpj_crs, ztstref ) 332 318 ! … … 347 333 CALL wrk_dealloc( jpi_crs, jpj_crs, ztstref ) 348 334 ! 349 IF( nn_timing == 1 ) CALL timing_stop('crs_dom_uniq_crs')350 !351 352 335 END SUBROUTINE dom_uniq_crs 353 336 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/CRS/crsfld.F90
r9019 r9124 64 64 !!---------------------------------------------------------------------- 65 65 ! 66 IF( nn_timing == 1) CALL timing_start('crs_fld')66 IF( ln_timing ) CALL timing_start('crs_fld') 67 67 68 68 ! Depth work arrrays … … 243 243 CALL iom_swap( "nemo" ) ! return back on high-resolution grid 244 244 ! 245 IF( nn_timing == 1) CALL timing_stop('crs_fld')245 IF( ln_timing ) CALL timing_stop('crs_fld') 246 246 ! 247 247 END SUBROUTINE crs_fld -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/CRS/crsini.F90
r9019 r9124 23 23 USE lib_mpp 24 24 USE wrk_nemo 25 USE timing ! Timing26 25 27 26 IMPLICIT NONE … … 78 77 !!---------------------------------------------------------------------- 79 78 ! 80 IF( nn_timing == 1 ) CALL timing_start('crs_init')81 !82 79 IF(lwp) THEN 83 80 WRITE(numout,*) … … 250 247 CALL wrk_dealloc( jpi,jpj,jpk, ze3t, ze3u, ze3v, ze3w ) 251 248 ! 252 IF( nn_timing == 1 ) CALL timing_stop('crs_init')253 !254 249 END SUBROUTINE crs_init 255 250 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90
r9019 r9124 13 13 USE dom_oce ! ocean space and time domain 14 14 USE eosbn2 ! equation of state (eos_bn2 routine) 15 USE lib_mpp ! distribued memory computing library16 USE iom ! I/O manager library17 USE timing ! preformance summary18 USE wrk_nemo ! working arrays19 USE fldread ! type FLD_N20 15 USE phycst ! physical constant 21 16 USE in_out_manager ! I/O manager 22 17 USE zdfddm 23 18 USE zdf_oce 19 ! 20 USE lib_mpp ! distribued memory computing library 21 USE iom ! I/O manager library 22 USE fldread ! type FLD_N 23 USE timing ! preformance summary 24 USE wrk_nemo ! working arrays 24 25 25 26 IMPLICIT NONE … … 80 81 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztsn ! 4D workspace 81 82 !!-------------------------------------------------------------------- 82 IF( nn_timing == 1) CALL timing_start('dia_ar5')83 IF( ln_timing ) CALL timing_start('dia_ar5') 83 84 84 85 IF( kt == nit000 ) CALL dia_ar5_init … … 255 256 ENDIF 256 257 ! 257 IF( nn_timing == 1) CALL timing_stop('dia_ar5')258 IF( ln_timing ) CALL timing_stop('dia_ar5') 258 259 ! 259 260 END SUBROUTINE dia_ar5 261 260 262 261 263 SUBROUTINE dia_ar5_hst( ktra, cptr, pua, pva ) … … 332 334 !!---------------------------------------------------------------------- 333 335 ! 334 IF( nn_timing == 1 ) CALL timing_start('dia_ar5_init')335 !336 336 l_ar5 = .FALSE. 337 337 IF( iom_use( 'voltot' ) .OR. iom_use( 'sshtot' ) .OR. iom_use( 'sshdyn' ) .OR. & … … 380 380 ENDIF 381 381 ! 382 IF( nn_timing == 1 ) CALL timing_stop('dia_ar5_init')383 !384 382 END SUBROUTINE dia_ar5_init 385 383 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diacfl.F90
r9019 r9124 60 60 !!---------------------------------------------------------------------- 61 61 ! 62 IF( nn_timing == 1) CALL timing_start('dia_cfl')62 IF( ln_timing ) CALL timing_start('dia_cfl') 63 63 ! 64 64 ! ! setup timestep multiplier to account for initial Eulerian timestep … … 138 138 ENDIF 139 139 ! 140 IF( nn_timing == 1) CALL timing_stop('dia_cfl')140 IF( ln_timing ) CALL timing_stop('dia_cfl') 141 141 ! 142 142 END SUBROUTINE dia_cfl -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90
r9019 r9124 37 37 USE domvvl 38 38 USE timing ! preformance summary 39 USE wrk_nemo ! working arrays40 39 41 40 IMPLICIT NONE … … 121 120 122 121 123 SUBROUTINE dia_dct_init124 !!---------------------------------------------------------------------125 !! *** ROUTINE diadct ***126 !!127 !! ** Purpose: Read the namelist parameters128 !! Open output files129 !!130 !!---------------------------------------------------------------------131 NAMELIST/namdct/nn_dct,nn_dctwri,nn_secdebug132 INTEGER :: ios ! Local integer output status for namelist read133 134 IF( nn_timing == 1 ) CALL timing_start('dia_dct_init')122 SUBROUTINE dia_dct_init 123 !!--------------------------------------------------------------------- 124 !! *** ROUTINE diadct *** 125 !! 126 !! ** Purpose: Read the namelist parameters 127 !! Open output files 128 !! 129 !!--------------------------------------------------------------------- 130 INTEGER :: ios ! Local integer output status for namelist read 131 !! 132 NAMELIST/namdct/nn_dct,nn_dctwri,nn_secdebug 133 !!--------------------------------------------------------------------- 135 134 136 135 REWIND( numnam_ref ) ! Namelist namdct in reference namelist : Diagnostic: transport through sections … … 140 139 REWIND( numnam_cfg ) ! Namelist namdct in configuration namelist : Diagnostic: transport through sections 141 140 READ ( numnam_cfg, namdct, IOSTAT = ios, ERR = 902 ) 142 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namdct in configuration namelist', lwp )141 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdct in configuration namelist', lwp ) 143 142 IF(lwm) WRITE ( numond, namdct ) 144 143 … … 175 174 transports_3d(:,:,:,:)=0.0 176 175 transports_2d(:,:,:) =0.0 177 178 IF( nn_timing == 1 ) CALL timing_stop('dia_dct_init')179 176 ! 180 177 END SUBROUTINE dia_dct_init 181 178 182 179 183 SUBROUTINE dia_dct( kt)180 SUBROUTINE dia_dct( kt ) 184 181 !!--------------------------------------------------------------------- 185 182 !! *** ROUTINE diadct *** … … 198 195 !! Reinitialise all relevant arrays to zero 199 196 !!--------------------------------------------------------------------- 200 INTEGER, INTENT(in) ::kt197 INTEGER, INTENT(in) :: kt 201 198 ! 202 INTEGER :: jsec, &! loop on sections 203 itotal ! nb_sec_max*nb_type_class*nb_class_max 204 LOGICAL :: lldebug =.FALSE. ! debug a section 205 206 INTEGER , DIMENSION(1) :: ish ! tmp array for mpp_sum 207 INTEGER , DIMENSION(3) :: ish2 ! " 208 REAL(wp), POINTER, DIMENSION(:) :: zwork ! " 209 REAL(wp), POINTER, DIMENSION(:,:,:):: zsum ! " 199 INTEGER :: jsec ! loop on sections 200 INTEGER :: itotal ! nb_sec_max*nb_type_class*nb_class_max 201 LOGICAL :: lldebug =.FALSE. ! debug a section 202 INTEGER , DIMENSION(1) :: ish ! work array for mpp_sum 203 INTEGER , DIMENSION(3) :: ish2 ! " 204 REAL(wp), ALLOCATABLE, DIMENSION(:) :: zwork ! " 205 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:):: zsum ! " 210 206 !!--------------------------------------------------------------------- 211 207 ! 212 IF( nn_timing == 1) CALL timing_start('dia_dct')208 IF( ln_timing ) CALL timing_start('dia_dct') 213 209 214 210 IF( lk_mpp )THEN 215 211 itotal = nb_sec_max*nb_type_class*nb_class_max 216 CALL wrk_alloc( itotal , zwork ) 217 CALL wrk_alloc( nb_sec_max,nb_type_class,nb_class_max , zsum ) 212 ALLOCATE( zwork(itotal) , zsum(nb_sec_max,nb_type_class,nb_class_max) ) 218 213 ENDIF 219 214 … … 286 281 IF( lk_mpp )THEN 287 282 itotal = nb_sec_max*nb_type_class*nb_class_max 288 CALL wrk_dealloc( itotal , zwork ) 289 CALL wrk_dealloc( nb_sec_max,nb_type_class,nb_class_max , zsum ) 283 DEALLOCATE( zwork , zsum ) 290 284 ENDIF 291 285 292 IF( nn_timing == 1) CALL timing_stop('dia_dct')286 IF( ln_timing ) CALL timing_stop('dia_dct') 293 287 ! 294 288 END SUBROUTINE dia_dct 289 295 290 296 291 SUBROUTINE readsec … … 304 299 !! 305 300 !!--------------------------------------------------------------------- 306 !! * Local variables307 301 INTEGER :: iptglo , iptloc ! Global and local number of points for a section 308 302 INTEGER :: isec, iiglo, ijglo, iiloc, ijloc,iost,i1 ,i2 ! temporary integer 309 303 INTEGER :: jsec, jpt ! dummy loop indices 310 311 304 INTEGER, DIMENSION(2) :: icoord 312 CHARACTER(len=160) :: clname !filename 305 LOGICAL :: llbon, lldebug ! local logical 306 CHARACTER(len=160) :: clname ! filename 313 307 CHARACTER(len=200) :: cltmp 314 CHARACTER(len=200) :: clformat !automatic format 315 TYPE(POINT_SECTION),DIMENSION(nb_point_max) ::coordtemp !contains listpoints coordinates 316 !read in the file 317 INTEGER, POINTER, DIMENSION(:) :: directemp !contains listpoints directions 318 !read in the files 319 LOGICAL :: llbon ,&!local logical 320 lldebug !debug the section 308 CHARACTER(len=200) :: clformat !automatic format 309 TYPE(POINT_SECTION),DIMENSION(nb_point_max) ::coordtemp !contains listpoints coordinates read in the file 310 INTEGER, DIMENSION(nb_point_max) :: directemp !contains listpoints directions read in the files 321 311 !!------------------------------------------------------------------------------------- 322 CALL wrk_alloc( nb_point_max, directemp )323 312 324 313 !open input file … … 491 480 492 481 nb_sec = jsec-1 !number of section read in the file 493 494 CALL wrk_dealloc( nb_point_max, directemp )495 482 ! 496 483 END SUBROUTINE readsec 484 497 485 498 486 SUBROUTINE removepoints(sec,cdind,cdextr,ld_debug) … … 518 506 istart,iend !first and last points selected in listpoint 519 507 INTEGER :: jpoint !loop on list points 520 INTEGER, POINTER, DIMENSION( :) :: idirec !contains temporary sec%direction521 INTEGER, POINTER, DIMENSION( :,:) :: icoord !contains temporary sec%listpoint508 INTEGER, POINTER, DIMENSION(nb_point_max) :: idirec !contains temporary sec%direction 509 INTEGER, POINTER, DIMENSION(2,nb_point_max) :: icoord !contains temporary sec%listpoint 522 510 !---------------------------------------------------------------------------- 523 CALL wrk_alloc( nb_point_max, idirec ) 524 CALL wrk_alloc( 2, nb_point_max, icoord ) 525 511 ! 526 512 IF( ld_debug )WRITE(numout,*)' -------------------------' 527 513 IF( ld_debug )WRITE(numout,*)' removepoints in listpoint' … … 571 557 WRITE(numout,*)' sec%direction after removepoints :',sec%direction(1:sec%nb_point) 572 558 ENDIF 573 574 CALL wrk_dealloc( nb_point_max, idirec ) 575 CALL wrk_dealloc( 2, nb_point_max, icoord ) 576 END SUBROUTINE removepoints 577 578 SUBROUTINE transport(sec,ld_debug,jsec) 559 ! 560 END SUBROUTINE removepoints 561 562 SUBROUTINE transport(sec,ld_debug,jsec) 579 563 !!------------------------------------------------------------------------------------------- 580 564 !! *** ROUTINE transport *** … … 596 580 !! 597 581 !!------------------------------------------------------------------------------------------- 598 !! * Arguments599 582 TYPE(SECTION),INTENT(INOUT) :: sec 600 583 LOGICAL ,INTENT(IN) :: ld_debug 601 584 INTEGER ,INTENT(IN) :: jsec ! numeric identifier of section 602 603 !! * Local variables 604 INTEGER :: jk, jseg, jclass,jl, &!loop on level/segment/classes/ice categories 605 isgnu, isgnv ! 606 REAL(wp) :: zumid, zvmid, &!U/V velocity on a cell segment 607 zumid_ice, zvmid_ice, &!U/V ice velocity 608 zTnorm !transport of velocity through one cell's sides 609 REAL(wp) :: ztn, zsn, zrhoi, zrhop, zsshn, zdep !temperature/salinity/potential density/ssh/depth at u/v point 610 611 TYPE(POINT_SECTION) :: k 585 ! 586 INTEGER :: jk, jseg, jclass,jl, isgnu, isgnv ! loop on level/segment/classes/ice categories 587 REAL(wp):: zumid, zvmid, zumid_ice, zvmid_ice ! U/V ocean & ice velocity on a cell segment 588 REAL(wp):: zTnorm ! transport of velocity through one cell's sides 589 REAL(wp):: ztn, zsn, zrhoi, zrhop, zsshn, zdep ! temperature/salinity/potential density/ssh/depth at u/v point 590 TYPE(POINT_SECTION) :: k 612 591 !!-------------------------------------------------------- 613 592 ! … … 1008 987 REAL(wp) :: zslope ! section's slope coeff 1009 988 ! 1010 REAL(wp), POINTER, DIMENSION(:):: zsumclasses! 1D workspace989 REAL(wp), DIMENSION(nb_type_class):: zsumclasses ! 1D workspace 1011 990 !!------------------------------------------------------------- 1012 CALL wrk_alloc(nb_type_class , zsumclasses )1013 991 1014 992 zsumclasses(:)=0._wp … … 1121 1099 118 FORMAT(I8,1X,I8,1X,I4,1X,A30,1X,f9.2,1X,I4,3X,A8,1X,2F12.4,5X,3F12.4) 1122 1100 119 FORMAT(I8,1X,I8,1X,I4,1X,A30,1X,f9.2,1X,I4,3X,A8,1X,2F12.4,5X,3E15.6) 1123 1124 CALL wrk_dealloc(nb_type_class , zsumclasses )1125 1101 ! 1126 1102 END SUBROUTINE dia_dct_wri -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diaharm.F90
r7646 r9124 22 22 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 23 23 USE timing ! preformance summary 24 USE wrk_nemo ! working arrays25 24 26 25 IMPLICIT NONE … … 177 176 REAL(wp) :: ztime, ztemp 178 177 !!-------------------------------------------------------------------- 179 IF( nn_timing == 1) CALL timing_start('dia_harm')180 181 IF( kt == nit000 ) CALL dia_harm_init182 178 IF( ln_timing ) CALL timing_start('dia_harm') 179 ! 180 IF( kt == nit000 ) CALL dia_harm_init 181 ! 183 182 IF( kt >= nit000_han .AND. kt <= nitend_han .AND. MOD(kt,nstep_han) == 0 ) THEN 184 183 ! 185 184 ztime = (kt-nit000+1) * rdt 186 185 ! 187 186 nhc = 0 188 187 DO jh = 1, nb_ana … … 191 190 ztemp =( MOD(jc,2) * ft(jh) *COS(ana_freq(jh)*ztime + vt(jh) + ut(jh)) & 192 191 & +(1.-MOD(jc,2))* ft(jh) *SIN(ana_freq(jh)*ztime + vt(jh) + ut(jh))) 193 192 ! 194 193 DO jj = 1,jpj 195 194 DO ji = 1,jpi … … 205 204 ! 206 205 END IF 207 208 IF 209 210 IF( nn_timing == 1) CALL timing_stop('dia_harm')211 206 ! 207 IF( kt == nitend_han ) CALL dia_harm_end 208 ! 209 IF( ln_timing ) CALL timing_stop('dia_harm') 210 ! 212 211 END SUBROUTINE dia_harm 213 212 … … 225 224 INTEGER :: ksp, kun, keq 226 225 REAL(wp) :: ztime, ztime_ini, ztime_end 227 REAL(wp) :: X1,X2 228 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ana_amp 229 !!-------------------------------------------------------------------- 230 CALL wrk_alloc( jpi , jpj , jpmax_harmo , 2 , ana_amp ) 231 226 REAL(wp) :: X1, X2 227 REAL(wp), DIMENSION(jpi,jpj,jpmax_harmo,2) :: ana_amp ! workspace 228 !!-------------------------------------------------------------------- 229 ! 232 230 IF(lwp) WRITE(numout,*) 233 231 IF(lwp) WRITE(numout,*) 'anharmo_end: kt=nitend_han: Perform harmonic analysis' … … 364 362 END DO 365 363 END DO 366 364 ! 367 365 CALL dia_wri_harm ! Write results in files 368 CALL wrk_dealloc( jpi , jpj , jpmax_harmo , 2 , ana_amp )369 366 ! 370 367 END SUBROUTINE dia_harm_end … … 427 424 INTEGER :: ji_sd, jj_sd, ji1_sd, ji2_sd, jk1_sd, jk2_sd 428 425 REAL(wp) :: zval1, zval2, zx1 429 REAL(wp), POINTER, DIMENSION(:) :: ztmpx, zcol1, zcol2430 INTEGER , POINTER, DIMENSION(:) :: ipos2, ipivot426 REAL(wp), DIMENSION(jpincomax) :: ztmpx, zcol1, zcol2 427 INTEGER , DIMENSION(jpincomax) :: ipos2, ipivot 431 428 !--------------------------------------------------------------------------------- 432 CALL wrk_alloc( jpincomax , ztmpx , zcol1 , zcol2 ) 433 CALL wrk_alloc( jpincomax , ipos2 , ipivot ) 434 429 ! 435 430 IF( init == 1 ) THEN 436 431 IF( nsparse > jpdimsparse ) CALL ctl_stop( 'STOP', 'SUR_DETERMINE : nsparse .GT. jpdimsparse') … … 517 512 ztmp7(ipos1(jj_sd))=ztmpx(jj_sd) 518 513 END DO 519 520 CALL wrk_dealloc( jpincomax , ztmpx , zcol1 , zcol2 )521 CALL wrk_dealloc( jpincomax , ipos2 , ipivot )522 514 ! 523 515 END SUBROUTINE SUR_DETERMINE -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90
r7753 r9124 31 31 USE lib_mpp ! distributed memory computing library 32 32 USE timing ! preformance summary 33 USE wrk_nemo ! work arrays34 33 35 34 IMPLICIT NONE … … 82 81 REAL(wp) :: z_wn_trd_t , z_wn_trd_s ! - - 83 82 REAL(wp) :: z_ssh_hc , z_ssh_sc ! - - 84 REAL(wp), DIMENSION(:,:), POINTER :: z2d0, z2d1 85 !!--------------------------------------------------------------------------- 86 IF( nn_timing == 1 ) CALL timing_start('dia_hsb') 87 ! 88 CALL wrk_alloc( jpi,jpj, z2d0, z2d1 ) 83 REAL(wp), DIMENSION(jpi,jpj) :: z2d0, z2d1 ! 2D workspace 84 !!--------------------------------------------------------------------------- 85 IF( ln_timing ) CALL timing_start('dia_hsb') 89 86 ! 90 87 tsn(:,:,:,1) = tsn(:,:,:,1) * tmask(:,:,:) ; tsb(:,:,:,1) = tsb(:,:,:,1) * tmask(:,:,:) ; … … 228 225 IF( lrst_oce ) CALL dia_hsb_rst( kt, 'WRITE' ) 229 226 ! 230 CALL wrk_dealloc( jpi,jpj, z2d0, z2d1 ) 231 ! 232 IF( nn_timing == 1 ) CALL timing_stop('dia_hsb') 227 IF( ln_timing ) CALL timing_stop('dia_hsb') 233 228 ! 234 229 END SUBROUTINE dia_hsb -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diahth.F90
r9019 r9124 104 104 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: zdelr ! delta rho equivalent to deltaT = 0.2 105 105 !!---------------------------------------------------------------------- 106 IF( nn_timing == 1) CALL timing_start('dia_hth')106 IF( ln_timing ) CALL timing_start('dia_hth') 107 107 108 108 IF( kt == nit000 ) THEN … … 332 332 CALL iom_put( "hc300", htc3 ) ! first 300m heat content 333 333 ! 334 IF( nn_timing == 1) CALL timing_stop('dia_hth')334 IF( ln_timing ) CALL timing_stop('dia_hth') 335 335 ! 336 336 END SUBROUTINE dia_hth -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90
r9019 r9124 37 37 PUBLIC ptr_sj ! call by tra_ldf & tra_adv routines 38 38 PUBLIC ptr_sjk ! 39 PUBLIC dia_ptr_init ! call in step module39 PUBLIC dia_ptr_init ! call in memogcm 40 40 PUBLIC dia_ptr ! call in step module 41 41 PUBLIC dia_ptr_hst ! called from tra_ldf/tra_adv routines … … 96 96 !!---------------------------------------------------------------------- 97 97 ! 98 IF( nn_timing == 1) CALL timing_start('dia_ptr')98 IF( ln_timing ) CALL timing_start('dia_ptr') 99 99 100 100 ! … … 373 373 ENDIF 374 374 ! 375 IF( nn_timing == 1) CALL timing_stop('dia_ptr')375 IF( ln_timing ) CALL timing_stop('dia_ptr') 376 376 ! 377 377 END SUBROUTINE dia_ptr … … 457 457 ! 458 458 END SUBROUTINE dia_ptr_init 459 459 460 460 461 SUBROUTINE dia_ptr_hst( ktra, cptr, pva ) -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diatmb.F90
r7646 r9124 12 12 USE in_out_manager ! I/O units 13 13 USE iom ! I/0 library 14 USE wrk_nemo ! working arrays15 16 14 17 15 IMPLICIT NONE … … 42 40 !!---------------------------------------------------------------------- 43 41 ! 44 REWIND 45 READ 42 REWIND( numnam_ref ) ! Read Namelist nam_diatmb in reference namelist : TMB diagnostics 43 READ ( numnam_ref, nam_diatmb, IOSTAT=ios, ERR= 901 ) 46 44 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_diatmb in reference namelist', lwp ) 47 45 48 46 REWIND( numnam_cfg ) ! Namelist nam_diatmb in configuration namelist TMB diagnostics 49 47 READ ( numnam_cfg, nam_diatmb, IOSTAT = ios, ERR = 902 ) 50 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'nam_diatmb in configuration namelist', lwp )48 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nam_diatmb in configuration namelist', lwp ) 51 49 IF(lwm) WRITE ( numond, nam_diatmb ) 52 50 … … 72 70 !! 73 71 !!---------------------------------------------------------------------- 74 REAL(wp), DIMENSION(jpi, jpj, jpk), INTENT(in ) :: pfield ! Input 3dfield and mask75 REAL(wp), DIMENSION(jpi, jpj, 3 ), INTENT( out) :: ptmb ! top, middle, bottom extracted from pfield72 REAL(wp), DIMENSION(jpi, jpj, jpk), INTENT(in ) :: pfield ! Input 3D field and mask 73 REAL(wp), DIMENSION(jpi, jpj, 3 ), INTENT( out) :: ptmb ! top, middle, bottom extracted from pfield 76 74 ! 77 INTEGER :: ji, jj! Dummy loop indices78 INTEGER :: itop, imid, ibot! local integers79 REAL(wp) :: zmdi = 1.e+20_wp! land value75 INTEGER :: ji, jj ! Dummy loop indices 76 INTEGER :: itop, imid, ibot ! local integers 77 REAL(wp):: zmdi = 1.e+20_wp ! land value 80 78 !!--------------------------------------------------------------------- 81 79 ! … … 86 84 imid = itop + ( ibot - itop + 1 ) / 2 ! middle ocean 87 85 ! 88 ptmb(ji,jj,1) = pfield(ji,jj,itop)*tmask(ji,jj,itop) 89 ptmb(ji,jj,2) = pfield(ji,jj,imid)*tmask(ji,jj,imid) 90 ptmb(ji,jj,3) = pfield(ji,jj,ibot)*tmask(ji,jj,ibot) 86 ptmb(ji,jj,1) = pfield(ji,jj,itop)*tmask(ji,jj,itop) + zmdi*( 1._wp-tmask(ji,jj,itop) ) 87 ptmb(ji,jj,2) = pfield(ji,jj,imid)*tmask(ji,jj,imid) + zmdi*( 1._wp-tmask(ji,jj,imid) ) 88 ptmb(ji,jj,3) = pfield(ji,jj,ibot)*tmask(ji,jj,ibot) + zmdi*( 1._wp-tmask(ji,jj,ibot) ) 91 89 END DO 92 90 END DO … … 105 103 !!-------------------------------------------------------------------- 106 104 REAL(wp) :: zmdi =1.e+20 ! land value 107 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwtmb! workspace105 REAL(wp), DIMENSION(jpi,jpj,3) :: zwtmb ! workspace 108 106 !!-------------------------------------------------------------------- 109 107 ! 110 IF (ln_diatmb) THEN 111 CALL wrk_alloc( jpi,jpj,3 , zwtmb ) 112 CALL dia_calctmb( tsn(:,:,:,jp_tem),zwtmb ) 113 !ssh already output but here we output it masked 114 CALL iom_put( "sshnmasked" , sshn(:,:)*tmask(:,:,1) + zmdi*(1.0 - tmask(:,:,1)) ) 115 CALL iom_put( "top_temp" , zwtmb(:,:,1) ) ! tmb Temperature 116 CALL iom_put( "mid_temp" , zwtmb(:,:,2) ) ! tmb Temperature 117 CALL iom_put( "bot_temp" , zwtmb(:,:,3) ) ! tmb Temperature 118 ! CALL iom_put( "sotrefml" , hmld_tref(:,:) ) ! "T criterion Mixed Layer Depth 119 120 CALL dia_calctmb( tsn(:,:,:,jp_sal),zwtmb ) 121 CALL iom_put( "top_sal" , zwtmb(:,:,1) ) ! tmb Salinity 122 CALL iom_put( "mid_sal" , zwtmb(:,:,2) ) ! tmb Salinity 123 CALL iom_put( "bot_sal" , zwtmb(:,:,3) ) ! tmb Salinity 124 125 CALL dia_calctmb( un(:,:,:),zwtmb ) 126 CALL iom_put( "top_u" , zwtmb(:,:,1) ) ! tmb U Velocity 127 CALL iom_put( "mid_u" , zwtmb(:,:,2) ) ! tmb U Velocity 128 CALL iom_put( "bot_u" , zwtmb(:,:,3) ) ! tmb U Velocity 129 !Called in dynspg_ts.F90 CALL iom_put( "baro_u" , un_b ) ! Barotropic U Velocity 130 131 CALL dia_calctmb( vn(:,:,:),zwtmb ) 132 CALL iom_put( "top_v" , zwtmb(:,:,1) ) ! tmb V Velocity 133 CALL iom_put( "mid_v" , zwtmb(:,:,2) ) ! tmb V Velocity 134 CALL iom_put( "bot_v" , zwtmb(:,:,3) ) ! tmb V Velocity 135 !Called in dynspg_ts.F90 CALL iom_put( "baro_v" , vn_b ) ! Barotropic V Velocity 136 CALL wrk_dealloc( jpi,jpj,3 , zwtmb ) 137 ELSE 138 CALL ctl_warn('dia_tmb: tmb diagnostic is set to false you should not have seen this') 139 ENDIF 108 CALL dia_calctmb( tsn(:,:,:,jp_tem), zwtmb ) 109 !ssh already output but here we output it masked 110 CALL iom_put( "sshnmasked", sshn(:,:)*tmask(:,:,1) + zmdi*(1.0 - tmask(:,:,1)) ) 111 CALL iom_put( "top_temp" , zwtmb(:,:,1) ) ! tmb Temperature 112 CALL iom_put( "mid_temp" , zwtmb(:,:,2) ) ! tmb Temperature 113 CALL iom_put( "bot_temp" , zwtmb(:,:,3) ) ! tmb Temperature 114 ! 115 CALL dia_calctmb( tsn(:,:,:,jp_sal), zwtmb ) 116 CALL iom_put( "top_sal" , zwtmb(:,:,1) ) ! tmb Salinity 117 CALL iom_put( "mid_sal" , zwtmb(:,:,2) ) ! tmb Salinity 118 CALL iom_put( "bot_sal" , zwtmb(:,:,3) ) ! tmb Salinity 119 ! 120 CALL dia_calctmb( un(:,:,:), zwtmb ) 121 CALL iom_put( "top_u" , zwtmb(:,:,1) ) ! tmb U Velocity 122 CALL iom_put( "mid_u" , zwtmb(:,:,2) ) ! tmb U Velocity 123 CALL iom_put( "bot_u" , zwtmb(:,:,3) ) ! tmb U Velocity 124 ! 125 CALL dia_calctmb( vn(:,:,:), zwtmb ) 126 CALL iom_put( "top_v" , zwtmb(:,:,1) ) ! tmb V Velocity 127 CALL iom_put( "mid_v" , zwtmb(:,:,2) ) ! tmb V Velocity 128 CALL iom_put( "bot_v" , zwtmb(:,:,3) ) ! tmb V Velocity 140 129 ! 141 130 END SUBROUTINE dia_tmb 131 142 132 !!====================================================================== 143 133 END MODULE diatmb -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r9023 r9124 126 126 !!---------------------------------------------------------------------- 127 127 ! 128 IF( nn_timing == 1) CALL timing_start('dia_wri')128 IF( ln_timing ) CALL timing_start('dia_wri') 129 129 ! 130 130 ! Output the initial state and forcings … … 402 402 IF (ln_dia25h) CALL dia_25h( kt ) ! 25h averaging 403 403 404 IF( nn_timing == 1) CALL timing_stop('dia_wri')404 IF( ln_timing ) CALL timing_stop('dia_wri') 405 405 ! 406 406 END SUBROUTINE dia_wri … … 438 438 !!---------------------------------------------------------------------- 439 439 ! 440 IF( nn_timing == 1) CALL timing_start('dia_wri')440 IF( ln_timing ) CALL timing_start('dia_wri') 441 441 ! 442 442 IF( ninist == 1 ) THEN !== Output the initial state and forcings ==! … … 859 859 ENDIF 860 860 ! 861 IF( nn_timing == 1) CALL timing_stop('dia_wri')861 IF( ln_timing ) CALL timing_stop('dia_wri') 862 862 ! 863 863 END SUBROUTINE dia_wri -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIU/step_diu.F90
r7646 r9124 77 77 & qsr, qns, taum, rhop(:,:,1), rdt) 78 78 79 IF( ln_diurnal_only) THEN79 IF( ln_diurnal_only ) THEN 80 80 IF( ln_diaobs ) CALL dia_obs( kstp ) ! obs-minus-model (assimilation) diagnostics (call after dynamics update) 81 81 … … 86 86 IF( lrst_oce ) CALL rst_write ( kstp ) ! write output ocean restart file 87 87 88 IF( nn_timing == 1.AND. kstp == nit000 ) CALL timing_reset88 IF( ln_timing .AND. kstp == nit000 ) CALL timing_reset 89 89 ENDIF 90 90 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90
r9019 r9124 284 284 SUBROUTINE day_rst( kt, cdrw ) 285 285 !!--------------------------------------------------------------------- 286 !! *** ROUTINE ts_rst ***286 !! *** ROUTINE day_rst *** 287 287 !! 288 288 !! ** Purpose : Read or write calendar in restart file: -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
r9023 r9124 44 44 USE lbclnk ! ocean lateral boundary condition (or mpp link) 45 45 USE lib_mpp ! distributed memory computing library 46 USE timing ! Timing47 46 48 47 IMPLICIT NONE … … 80 79 REAL(wp), DIMENSION(jpi,jpj) :: z1_hu_0, z1_hv_0 81 80 !!---------------------------------------------------------------------- 82 !83 IF( ln_timing ) CALL timing_start('dom_init')84 81 ! 85 82 IF(lwp) THEN ! Ocean domain Parameters (control print) … … 191 188 ! 192 189 IF( ln_write_cfg ) CALL cfg_write ! create the configuration file 193 !194 IF( ln_timing ) CALL timing_stop('dom_init')195 190 ! 196 191 END SUBROUTINE dom_init -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90
r9090 r9124 26 26 USE dom_oce ! ocean space and time domain 27 27 USE usrdef_fmask ! user defined fmask 28 USE bdy_oce 28 USE bdy_oce ! open boundary 29 ! 29 30 USE in_out_manager ! I/O manager 30 31 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 31 32 USE lib_mpp ! Massively Parallel Processing library 32 USE timing ! Timing33 33 34 34 IMPLICIT NONE … … 102 102 & ln_vol, nn_volctl, nn_rimwidth, nb_jpk_bdy 103 103 !!--------------------------------------------------------------------- 104 !105 IF( ln_timing ) CALL timing_start('dom_msk')106 104 ! 107 105 REWIND( numnam_ref ) ! Namelist namlbc in reference namelist : Lateral momentum boundary condition … … 295 293 CALL usr_def_fmask( cn_cfg, nn_cfg, fmask ) 296 294 ! 297 !298 IF( ln_timing ) CALL timing_stop('dom_msk')299 !300 295 END SUBROUTINE dom_msk 301 296 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domngb.F90
r9019 r9124 14 14 USE in_out_manager ! I/O manager 15 15 USE lib_mpp ! for mppsum 16 USE timing ! Timing17 16 18 17 IMPLICIT NONE … … 48 47 !!-------------------------------------------------------------------- 49 48 ! 50 IF( ln_timing ) CALL timing_start('dom_ngb')51 !52 49 zmask(:,:) = 0._wp 53 50 ik = 1 … … 77 74 ENDIF 78 75 ! 79 IF( ln_timing ) CALL timing_stop('dom_ngb')80 !81 76 END SUBROUTINE dom_ngb 82 77 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90
r9090 r9124 119 119 REAL(wp):: zcoef 120 120 !!---------------------------------------------------------------------- 121 !122 IF( ln_timing ) CALL timing_start('dom_vvl_init')123 121 ! 124 122 IF(lwp) WRITE(numout,*) … … 239 237 ENDIF 240 238 ENDIF 241 !242 IF( ln_timing ) CALL timing_stop('dom_vvl_init')243 239 ! 244 240 END SUBROUTINE dom_vvl_init … … 674 670 !!---------------------------------------------------------------------- 675 671 ! 676 IF( ln_timing ) CALL timing_start('dom_vvl_interpol')677 !678 672 IF(ln_wd_il) THEN 679 673 zlnwd = 1.0_wp … … 761 755 END SELECT 762 756 ! 763 IF( ln_timing ) CALL timing_stop('dom_vvl_interpol')764 !765 757 END SUBROUTINE dom_vvl_interpol 766 758 … … 784 776 INTEGER :: id1, id2, id3, id4, id5 ! local integers 785 777 !!---------------------------------------------------------------------- 786 !787 IF( ln_timing ) CALL timing_start('dom_vvl_rst')788 778 ! 789 779 IF( TRIM(cdrw) == 'READ' ) THEN ! Read/initialise … … 957 947 ENDIF 958 948 ! 959 IF( ln_timing ) CALL timing_stop('dom_vvl_rst')960 !961 949 END SUBROUTINE dom_vvl_rst 962 950 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90
r9023 r9124 24 24 USE lbclnk ! lateral boundary conditions - mpp exchanges 25 25 USE lib_mpp ! MPP library 26 USE timing ! Timing27 26 28 27 IMPLICIT NONE … … 77 76 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepu, zdepv ! 3D workspace 78 77 !!---------------------------------------------------------------------- 79 !80 IF( ln_timing ) CALL timing_start('dom_wri')81 78 ! 82 79 IF(lwp) WRITE(numout,*) … … 200 197 ! ! ============================ 201 198 ! 202 IF( ln_timing ) CALL timing_stop('dom_wri')203 !204 199 END SUBROUTINE dom_wri 205 200 … … 222 217 REAL(wp), DIMENSION(jpi,jpj) :: ztstref 223 218 !!---------------------------------------------------------------------- 224 !225 IF( ln_timing ) CALL timing_start('dom_uniq')226 219 ! 227 220 ! build an array with different values for each element … … 238 231 ! fill only the inner part of the cpu with llbl converted into real 239 232 puniq(nldi:nlei,nldj:nlej) = REAL( COUNT( lldbl(nldi:nlei,nldj:nlej,:), dim = 3 ) , wp ) 240 !241 IF( ln_timing ) CALL timing_stop('dom_uniq')242 233 ! 243 234 END SUBROUTINE dom_uniq -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r9023 r9124 36 36 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 37 37 USE lib_mpp ! distributed memory computing library 38 USE timing ! Timing39 38 40 39 IMPLICIT NONE … … 75 74 REAL(wp) :: zrefdep ! depth of the reference level (~10m) 76 75 !!---------------------------------------------------------------------- 77 !78 IF( ln_timing ) CALL timing_start('dom_zgr')79 76 ! 80 77 IF(lwp) THEN ! Control print … … 162 159 & ' w ', MAXVAL( e3w_0(:,:,:) ) 163 160 ENDIF 164 !165 IF( ln_timing ) CALL timing_stop('dom_zgr')166 161 ! 167 162 END SUBROUTINE dom_zgr … … 285 280 REAL(wp), DIMENSION(jpi,jpj) :: zk ! workspace 286 281 !!---------------------------------------------------------------------- 287 !288 IF( ln_timing ) CALL timing_start('zgr_top_bot')289 282 ! 290 283 IF(lwp) WRITE(numout,*) … … 316 309 zk(:,:) = REAL( mbkv(:,:), wp ) ; CALL lbc_lnk( zk, 'V', 1. ) ; mbkv(:,:) = MAX( INT( zk(:,:) ), 1 ) 317 310 ! 318 IF( ln_timing ) CALL timing_stop('zgr_top_bot')319 !320 311 END SUBROUTINE zgr_top_bot 321 312 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90
r9019 r9124 22 22 USE in_out_manager ! I/O manager 23 23 USE lib_mpp ! MPP library 24 USE timing ! Timing25 24 26 25 IMPLICIT NONE … … 61 60 NAMELIST/namtsd/ ln_tsd_init, ln_tsd_tradmp, cn_dir, sn_tem, sn_sal 62 61 !!---------------------------------------------------------------------- 63 !64 IF( ln_timing ) CALL timing_start('dta_tsd_init')65 62 ! 66 63 ! Initialisation … … 120 117 ENDIF 121 118 ! 122 IF( ln_timing ) CALL timing_stop('dta_tsd_init')123 !124 119 END SUBROUTINE dta_tsd_init 125 120 … … 148 143 REAL(wp), DIMENSION(jpk) :: ztp, zsp ! 1D workspace 149 144 !!---------------------------------------------------------------------- 150 !151 IF( ln_timing ) CALL timing_start('dta_tsd')152 145 ! 153 146 CALL fld_read( kt, 1, sf_tsd ) !== read T & S data at kt time step ==! … … 256 249 ENDIF 257 250 ! 258 IF( ln_timing ) CALL timing_stop('dta_tsd')259 !260 251 END SUBROUTINE dta_tsd 261 252 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
r9019 r9124 36 36 USE lib_mpp ! MPP library 37 37 USE restart ! restart 38 USE timing ! Timing39 38 40 39 IMPLICIT NONE … … 63 62 !!gm end 64 63 !!---------------------------------------------------------------------- 65 !66 IF( ln_timing ) CALL timing_start('istate_init')67 64 ! 68 65 IF(lwp) WRITE(numout,*) … … 165 162 vb_b(:,:) = vb_b(:,:) * r1_hv_b(:,:) 166 163 ! 167 IF( ln_timing ) CALL timing_stop('istate_init')168 !169 164 END SUBROUTINE istate_init 170 165 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_cen2.F90
r9111 r9124 20 20 USE lib_mpp ! MPP library 21 21 USE prtctl ! Print control 22 USE timing ! Timing23 22 24 23 IMPLICIT NONE … … 53 52 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zfv_t, zfv_f, zfv_vw, zfv, zfw 54 53 !!---------------------------------------------------------------------- 55 !56 IF( ln_timing ) CALL timing_start('dyn_adv_cen2')57 54 ! 58 55 IF( kt == nit000 .AND. lwp ) THEN … … 145 142 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 146 143 ! 147 IF( ln_timing ) CALL timing_stop('dyn_adv_cen2')148 !149 144 END SUBROUTINE dyn_adv_cen2 150 145 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90
r9090 r9124 23 23 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 24 24 USE lib_mpp ! MPP library 25 USE timing ! Timing26 25 27 26 IMPLICIT NONE … … 79 78 !!---------------------------------------------------------------------- 80 79 ! 81 IF( ln_timing ) CALL timing_start('dyn_adv_ubs')82 !83 80 IF( kt == nit000 ) THEN 84 81 IF(lwp) WRITE(numout,*) … … 238 235 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 239 236 ! 240 IF( ln_timing ) CALL timing_stop('dyn_adv_ubs')241 !242 237 END SUBROUTINE dyn_adv_ubs 243 238 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynbfr.F90
r9019 r9124 21 21 USE in_out_manager ! I/O manager 22 22 USE prtctl ! Print control 23 USE timing ! Timing24 23 25 24 IMPLICIT NONE … … 56 55 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrdu, ztrdv 57 56 !!--------------------------------------------------------------------- 58 !59 IF( ln_timing ) CALL timing_start('dyn_bfr')60 57 ! 61 58 !!gm bug : time step is only rdt (not 2 rdt if euler start !) … … 109 106 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 110 107 ! 111 IF( ln_timing ) CALL timing_stop('dyn_bfr')112 !113 108 END SUBROUTINE dyn_bfr 114 109 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90
r9090 r9124 28 28 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 29 29 USE prtctl ! Print control 30 USE timing ! Timing31 30 32 31 IMPLICIT NONE … … 114 113 !!---------------------------------------------------------------------- 115 114 ! 116 IF( ln_timing ) CALL timing_start('dyn_ldf_iso')117 !118 115 IF( kt == nit000 ) THEN 119 116 IF(lwp) WRITE(numout,*) … … 399 396 END DO ! End of slab 400 397 ! ! =============== 401 !402 IF( ln_timing ) CALL timing_stop('dyn_ldf_iso')403 !404 398 END SUBROUTINE dyn_ldf_iso 405 399 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap_blp.F90
r9090 r9124 19 19 USE in_out_manager ! I/O manager 20 20 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 21 USE timing ! Timing22 21 23 22 IMPLICIT NONE … … 65 64 ENDIF 66 65 ! 67 IF( ln_timing ) CALL timing_start('dyn_ldf_lap')68 !69 66 IF( kpass == 1 ) THEN ; zsign = 1._wp ! bilaplacian operator require a minus sign 70 67 ELSE ; zsign = -1._wp ! (eddy viscosity coef. >0) … … 105 102 ! ! =============== 106 103 ! 107 IF( ln_timing ) CALL timing_stop('dyn_ldf_lap')108 !109 104 END SUBROUTINE dyn_ldf_lap 110 105 … … 130 125 !!---------------------------------------------------------------------- 131 126 ! 132 IF( ln_timing ) CALL timing_start('dyn_ldf_blp')133 !134 127 IF( kt == nit000 ) THEN 135 128 IF(lwp) WRITE(numout,*) … … 147 140 CALL dyn_ldf_lap( kt, zulap, zvlap, pua, pva, 2 ) ! rotated laplacian applied to zlap (output in pta) 148 141 ! 149 IF( ln_timing ) CALL timing_stop('dyn_ldf_blp')150 !151 142 END SUBROUTINE dyn_ldf_blp 152 143 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90
r9023 r9124 194 194 !!---------------------------------------------------------------------- 195 195 ! 196 IF( ln_timing ) CALL timing_start('dyn_spg_init')197 !198 196 REWIND( numnam_ref ) ! Namelist namdyn_spg in reference namelist : Free surface 199 197 READ ( numnam_ref, namdyn_spg, IOSTAT = ios, ERR = 901) … … 231 229 IF( nspg == np_TS ) THEN ! split-explicit scheme initialisation 232 230 CALL dyn_spg_ts_init ! do it first: set nn_baro used to allocate some arrays later on 233 IF( dyn_spg_ts_alloc() /= 0 ) CALL ctl_stop('STOP', 'dyn_spg_init: failed to allocate dynspg_ts arrays' ) 234 IF( neuler/=0 .AND. ln_bt_fw ) CALL ts_rst( nit000, 'READ' ) 235 ENDIF 236 ! 237 IF( ln_timing ) CALL timing_stop('dyn_spg_init') 231 ENDIF 238 232 ! 239 233 END SUBROUTINE dyn_spg_init -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_exp.F90
r9019 r9124 23 23 USE prtctl ! Print control 24 24 USE iom ! I/O library 25 USE timing ! Timing26 25 27 26 IMPLICIT NONE 28 27 PRIVATE 29 28 30 PUBLIC dyn_spg_exp ! routine called bydynspg.F9029 PUBLIC dyn_spg_exp ! called in dynspg.F90 31 30 32 31 !! * Substitutions … … 61 60 !!---------------------------------------------------------------------- 62 61 ! 63 IF( ln_timing ) CALL timing_start('dyn_spg_exp')64 !65 62 IF( kt == nit000 ) THEN 66 63 IF(lwp) WRITE(numout,*) … … 93 90 ENDIF 94 91 ! 95 IF( ln_timing ) CALL timing_stop('dyn_spg_exp')96 !97 92 END SUBROUTINE dyn_spg_exp 98 93 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r9116 r9124 48 48 #if defined key_agrif 49 49 USE agrif_opa_interp ! agrif 50 USE agrif_oce 50 51 #endif 51 52 #if defined key_asminc … … 59 60 USE iom ! IOM library 60 61 USE restart ! only for lrst_oce 61 USE timing ! Timing62 62 USE diatmb ! Top,middle,bottom output 63 #if defined key_agrif64 USE agrif_opa_interp ! agrif65 USE agrif_oce66 #endif67 #if defined key_asminc68 USE asminc ! Assimilation increment69 #endif70 63 71 64 IMPLICIT NONE 72 65 PRIVATE 73 66 74 PUBLIC dyn_spg_ts ! routine called in dynspg.F90 75 PUBLIC dyn_spg_ts_alloc ! " " " " 76 PUBLIC dyn_spg_ts_init ! " " " " 77 PUBLIC ts_rst ! " " " " 67 PUBLIC dyn_spg_ts ! called by dyn_spg 68 PUBLIC dyn_spg_ts_init ! - - dyn_spg_init 78 69 79 70 !! Time filtered arrays at baroclinic time step: 80 71 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: un_adv , vn_adv !: Advection vel. at "now" barocl. step 72 ! 81 73 INTEGER, SAVE :: icycle ! Number of barotropic sub-steps for each internal step nn_baro <= 2.5 nn_baro 82 74 REAL(wp),SAVE :: rdtbt ! Barotropic time step 83 75 ! 84 76 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: wgtbtp1, wgtbtp2 ! 1st & 2nd weights used in time filtering of barotropic fields 85 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: zwz! ff_f/h at F points86 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ftnw, ftne! triad of coriolis parameter87 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ftsw, ftse! (only used with een vorticity scheme)77 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: zwz ! ff_f/h at F points 78 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ftnw, ftne ! triad of coriolis parameter 79 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ftsw, ftse ! (only used with een vorticity scheme) 88 80 89 81 REAL(wp) :: r1_12 = 1._wp / 12._wp ! local ratios … … 179 171 !!---------------------------------------------------------------------- 180 172 ! 181 IF( ln_timing ) CALL timing_start('dyn_spg_ts')182 !183 173 IF( ln_wd_il ) ALLOCATE( zcpx(jpi,jpj), zcpy(jpi,jpj) ) 184 174 ! !* Allocate temporary arrays … … 284 274 zhf(:,:) = 0._wp 285 275 286 !!gm assume 0 in both cases ( xhich is almost surely WRONG ! ) as hvatf has been removed276 !!gm assume 0 in both cases (which is almost surely WRONG ! ) as hvatf has been removed 287 277 !!gm A priori a better value should be something like : 288 278 !!gm zhf(i,j) = masked sum of ht(i,j) , ht(i+1,j) , ht(i,j+1) , (i+1,j+1) … … 1263 1253 CALL iom_put( "baro_v" , vn_b*vmask(:,:,1)+zmdi*(1-vmask(:,:,1 ) ) ) ! Barotropic V Velocity 1264 1254 ENDIF 1265 IF( ln_timing ) CALL timing_stop('dyn_spg_ts')1266 1255 ! 1267 1256 END SUBROUTINE dyn_spg_ts … … 1487 1476 ENDIF 1488 1477 ! 1478 ! ! Allocate time-splitting arrays 1479 IF( dyn_spg_ts_alloc() /= 0 ) CALL ctl_stop('STOP', 'dyn_spg_init: failed to allocate dynspg_ts arrays' ) 1480 ! 1481 ! ! read restart when needed 1482 IF( neuler /= 0 .AND. ln_bt_fw ) CALL ts_rst( nit000, 'READ' ) 1483 ! 1489 1484 END SUBROUTINE dyn_spg_ts_init 1490 1485 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90
r9019 r9124 193 193 REAL(wp), DIMENSION(jpi,jpj) :: zwx, zwy, zwz ! 2D workspace 194 194 !!---------------------------------------------------------------------- 195 !196 IF( ln_timing ) CALL timing_start('vor_ene')197 195 ! 198 196 IF( kt == nit000 ) THEN … … 275 273 END DO ! End of slab 276 274 ! ! =============== 277 !278 IF( ln_timing ) CALL timing_stop('vor_ene')279 !280 275 END SUBROUTINE vor_ene 281 276 … … 310 305 REAL(wp), DIMENSION(jpi,jpj) :: zwx, zwy, zwz, zww ! 2D workspace 311 306 !!---------------------------------------------------------------------- 312 !313 IF( ln_timing ) CALL timing_start('vor_ens')314 307 ! 315 308 IF( kt == nit000 ) THEN … … 391 384 END DO ! End of slab 392 385 ! ! =============== 393 !394 IF( ln_timing ) CALL timing_stop('vor_ens')395 !396 386 END SUBROUTINE vor_ens 397 387 … … 426 416 REAL(wp), DIMENSION(jpi,jpj) :: ztnw, ztne, ztsw, ztse 427 417 !!---------------------------------------------------------------------- 428 !429 IF( ln_timing ) CALL timing_start('vor_een')430 418 ! 431 419 IF( kt == nit000 ) THEN … … 552 540 END DO ! End of slab 553 541 ! ! =============== 554 !555 IF( ln_timing ) CALL timing_stop('vor_een')556 !557 542 END SUBROUTINE vor_een 558 543 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90
r9023 r9124 207 207 #endif 208 208 ! 209 IF( nn_timing == 1 )CALL timing_stop('wzv')209 IF( ln_timing ) CALL timing_stop('wzv') 210 210 ! 211 211 END SUBROUTINE wzv … … 236 236 !!---------------------------------------------------------------------- 237 237 ! 238 IF( ln_timing ) CALL timing_start('ssh_swp')238 IF( ln_timing ) CALL timing_start('ssh_swp') 239 239 ! 240 240 IF( kt == nit000 ) THEN -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/wet_dry.F90
r9092 r9124 26 26 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 27 27 USE lib_mpp ! MPP library 28 USE timing ! Timing28 USE timing ! timing of the main modules 29 29 30 30 IMPLICIT NONE … … 71 71 !! ** input : - namwad namelist 72 72 !!---------------------------------------------------------------------- 73 !! 74 NAMELIST/namwad/ ln_wd_il, ln_wd_dl, rn_wdmin0, rn_wdmin1, rn_wdmin2, rn_wdld, & 75 & nn_wdit, ln_wd_dl_bc, ln_wd_dl_rmp 76 INTEGER :: ios ! Local integer output status for namelist read 77 INTEGER :: ierr ! Local integer status array allocation 73 INTEGER :: ios, ierr ! Local integer 74 !! 75 NAMELIST/namwad/ ln_wd_il, ln_wd_dl , rn_wdmin0, rn_wdmin1, rn_wdmin2, rn_wdld, & 76 & nn_wdit , ln_wd_dl_bc, ln_wd_dl_rmp 78 77 !!---------------------------------------------------------------------- 79 78 ! … … 100 99 WRITE(numout,*) ' T => baroclinic u,v=0 at dry pts: ln_wd_dl_bc = ', ln_wd_dl_bc 101 100 WRITE(numout,*) ' use a ramp for rwd limiter: ln_wd_dl_rwd_rmp = ', ln_wd_dl_rmp 102 103 101 ENDIF 104 102 IF( .NOT. ln_read_cfg ) THEN 105 103 IF(lwp) WRITE(numout,*) ' No configuration file so seting ssh_ref to zero ' 106 ssh_ref=0. 0104 ssh_ref=0._wp 107 105 ENDIF 108 106 109 r_rn_wdmin1 =1/rn_wdmin1107 r_rn_wdmin1 = 1 / rn_wdmin1 110 108 ll_wd = .FALSE. 111 IF( ln_wd_il .OR. ln_wd_dl) THEN109 IF( ln_wd_il .OR. ln_wd_dl ) THEN 112 110 ll_wd = .TRUE. 113 111 ALLOCATE( wdmask(jpi,jpj), STAT=ierr ) … … 144 142 REAL(wp), DIMENSION(jpi,jpj) :: zflxu1 , zflxv1 ! local 2D workspace 145 143 !!---------------------------------------------------------------------- 146 ! 147 IF( nn_timing == 1 ) CALL timing_start('wad_lmt') 148 ! 149 144 IF( ln_timing ) CALL timing_start('wad_lmt') ! 145 ! 150 146 DO jk = 1, jpkm1 151 147 un(:,:,jk) = un(:,:,jk) * zwdlmtu(:,:) … … 153 149 END DO 154 150 jflag = 0 155 zdepwd = 50._wp !maximum depth on which that W/D could possibly happen156 151 zdepwd = 50._wp ! maximum depth on which that W/D could possibly happen 152 ! 157 153 zflxp(:,:) = 0._wp 158 154 zflxn(:,:) = 0._wp 159 155 zflxu(:,:) = 0._wp 160 156 zflxv(:,:) = 0._wp 161 162 zwdlmtu(:,:) = 1._wp 163 zwdlmtv(:,:) = 1._wp 164 165 ! Horizontal Flux in u and v direction 166 DO jk = 1, jpkm1 167 DO jj = 1, jpj 168 DO ji = 1, jpi 169 zflxu(ji,jj) = zflxu(ji,jj) + e3u_n(ji,jj,jk) * un(ji,jj,jk) * umask(ji,jj,jk) 170 zflxv(ji,jj) = zflxv(ji,jj) + e3v_n(ji,jj,jk) * vn(ji,jj,jk) * vmask(ji,jj,jk) 171 END DO 172 END DO 173 END DO 174 157 ! 158 zwdlmtu(:,:) = 1._wp 159 zwdlmtv(:,:) = 1._wp 160 ! 161 DO jk = 1, jpkm1 ! Horizontal Flux in u and v direction 162 zflxu(:,:) = zflxu(:,:) + e3u_n(:,:,jk) * un(:,:,jk) * umask(:,:,jk) 163 zflxv(:,:) = zflxv(:,:) + e3v_n(:,:,jk) * vn(:,:,jk) * vmask(:,:,jk) 164 END DO 175 165 zflxu(:,:) = zflxu(:,:) * e2u(:,:) 176 166 zflxv(:,:) = zflxv(:,:) * e1v(:,:) 177 178 wdmask(:,:) = 1 167 ! 168 wdmask(:,:) = 1._wp 179 169 DO jj = 2, jpj 180 170 DO ji = 2, jpi 181 182 IF( tmask(ji, jj, 1) < 0.5_wp ) CYCLE! we don't care about land cells183 IF( ht_0(ji,jj) - ssh_ref > zdepwd ) CYCLE! and cells which are unlikely to dry184 185 zflxp(ji,jj) = max(zflxu(ji,jj), 0._wp) - min(zflxu(ji-1,jj), 0._wp) +&186 & max(zflxv(ji,jj), 0._wp) - min(zflxv(ji, jj-1), 0._wp)187 zflxn(ji,jj) = min(zflxu(ji,jj), 0._wp) - max(zflxu(ji-1,jj), 0._wp) +&188 & min(zflxv(ji,jj), 0._wp) - max(zflxv(ji, jj-1), 0._wp)189 171 ! 172 IF( tmask(ji,jj,1) < 0.5_wp ) CYCLE ! we don't care about land cells 173 IF( ht_0(ji,jj) - ssh_ref > zdepwd ) CYCLE ! and cells which are unlikely to dry 174 ! 175 zflxp(ji,jj) = MAX( zflxu(ji,jj) , 0._wp ) - MIN( zflxu(ji-1,jj ) , 0._wp ) & 176 & + MAX( zflxv(ji,jj) , 0._wp ) - MIN( zflxv(ji, jj-1) , 0._wp ) 177 zflxn(ji,jj) = MIN( zflxu(ji,jj) , 0._wp ) - MAX( zflxu(ji-1,jj ) , 0._wp ) & 178 & + MIN( zflxv(ji,jj) , 0._wp ) - MAX( zflxv(ji, jj-1) , 0._wp ) 179 ! 190 180 zdep2 = ht_0(ji,jj) + sshb1(ji,jj) - rn_wdmin1 191 IF( zdep2 .le. 0._wp) THEN !add more safty, but not necessary181 IF( zdep2 <= 0._wp ) THEN ! add more safty, but not necessary 192 182 sshb1(ji,jj) = rn_wdmin1 - ht_0(ji,jj) 193 183 IF(zflxu(ji, jj) > 0._wp) zwdlmtu(ji ,jj) = 0._wp … … 197 187 wdmask(ji,jj) = 0._wp 198 188 END IF 199 ENDDO 200 END DO 201 202 203 ! HPG limiter from jholt 189 END DO 190 END DO 191 ! 192 ! ! HPG limiter from jholt 204 193 wdramp(:,:) = min((ht_0(:,:) + sshb1(:,:) - rn_wdmin1)/(rn_wdmin0 - rn_wdmin1),1.0_wp) 205 !jth assume don't need a lbc_lnk here194 !jth assume don't need a lbc_lnk here 206 195 DO jj = 1, jpjm1 207 196 DO ji = 1, jpim1 208 wdrampu(ji,jj) = min(wdramp(ji,jj),wdramp(ji+1,jj))209 wdrampv(ji,jj) = min(wdramp(ji,jj),wdramp(ji,jj+1))197 wdrampu(ji,jj) = MIN( wdramp(ji,jj) , wdramp(ji+1,jj) ) 198 wdrampv(ji,jj) = MIN( wdramp(ji,jj) , wdramp(ji,jj+1) ) 210 199 END DO 211 200 END DO 212 ! end HPG limiter 213 214 215 216 !! start limiter iterations 217 DO jk1 = 1, nn_wdit + 1 218 219 201 ! ! end HPG limiter 202 ! 203 ! 204 DO jk1 = 1, nn_wdit + 1 !== start limiter iterations ==! 205 ! 220 206 zflxu1(:,:) = zflxu(:,:) * zwdlmtu(:,:) 221 207 zflxv1(:,:) = zflxv(:,:) * zwdlmtv(:,:) 222 208 jflag = 0 ! flag indicating if any further iterations are needed 223 209 ! 224 210 DO jj = 2, jpj 225 211 DO ji = 2, jpi 226 227 IF( tmask(ji, jj, 1) < 0.5_wp ) CYCLE 228 IF( ht_0(ji,jj) > zdepwd ) CYCLE 229 212 IF( tmask(ji, jj, 1) < 0.5_wp ) CYCLE 213 IF( ht_0(ji,jj) > zdepwd ) CYCLE 214 ! 230 215 ztmp = e1e2t(ji,jj) 231 232 zzflxp = max(zflxu1(ji,jj), 0._wp) - min(zflxu1(ji-1,jj), 0._wp) +&233 & max(zflxv1(ji,jj), 0._wp) - min(zflxv1(ji, jj-1), 0._wp)234 zzflxn = min(zflxu1(ji,jj), 0._wp) - max(zflxu1(ji-1,jj), 0._wp) +&235 & min(zflxv1(ji,jj), 0._wp) - max(zflxv1(ji, jj-1), 0._wp)236 216 ! 217 zzflxp = MAX( zflxu1(ji,jj) , 0._wp ) - MIN( zflxu1(ji-1,jj ) , 0._wp) & 218 & + MAX( zflxv1(ji,jj) , 0._wp ) - MIN( zflxv1(ji, jj-1) , 0._wp) 219 zzflxn = MIN( zflxu1(ji,jj) , 0._wp ) - MAX( zflxu1(ji-1,jj ) , 0._wp) & 220 & + MIN( zflxv1(ji,jj) , 0._wp ) - MAX( zflxv1(ji, jj-1) , 0._wp) 221 ! 237 222 zdep1 = (zzflxp + zzflxn) * z2dt / ztmp 238 223 zdep2 = ht_0(ji,jj) + sshb1(ji,jj) - rn_wdmin1 - z2dt * sshemp(ji,jj) 239 224 ! 240 225 IF( zdep1 > zdep2 ) THEN 241 wdmask(ji, jj) = 0 226 wdmask(ji, jj) = 0._wp 242 227 zcoef = ( ( zdep2 - rn_wdmin2 ) * ztmp - zzflxn * z2dt ) / ( zflxp(ji,jj) * z2dt ) 243 228 !zcoef = ( ( zdep2 - rn_wdmin2 ) * ztmp - zzflxn * z2dt ) / ( zzflxp * z2dt ) … … 245 230 ! changes have zeroed the coefficient since further iterations will 246 231 ! not change anything 247 IF( zcoef > 0._wp ) THEN 248 jflag = 1 249 ELSE 250 zcoef = 0._wp 232 IF( zcoef > 0._wp ) THEN ; jflag = 1 233 ELSE ; zcoef = 0._wp 251 234 ENDIF 252 IF(jk1 > nn_wdit) zcoef = 0._wp 253 IF(zflxu1(ji, jj) > 0._wp) zwdlmtu(ji ,jj) = zcoef 254 IF(zflxu1(ji-1,jj) < 0._wp) zwdlmtu(ji-1,jj) = zcoef 255 IF(zflxv1(ji, jj) > 0._wp) zwdlmtv(ji ,jj) = zcoef 256 IF(zflxv1(ji,jj-1) < 0._wp) zwdlmtv(ji,jj-1) = zcoef 257 END IF 258 END DO ! ji loop 259 END DO ! jj loop 260 235 IF( jk1 > nn_wdit ) zcoef = 0._wp 236 IF( zflxu1(ji ,jj ) > 0._wp ) zwdlmtu(ji ,jj ) = zcoef 237 IF( zflxu1(ji-1,jj ) < 0._wp ) zwdlmtu(ji-1,jj ) = zcoef 238 IF( zflxv1(ji ,jj ) > 0._wp ) zwdlmtv(ji ,jj ) = zcoef 239 IF( zflxv1(ji ,jj-1) < 0._wp ) zwdlmtv(ji ,jj-1) = zcoef 240 ENDIF 241 END DO 242 END DO 261 243 CALL lbc_lnk_multi( zwdlmtu, 'U', 1., zwdlmtv, 'V', 1. ) 262 263 IF( lk_mpp)CALL mpp_max(jflag) !max over the global domain264 265 IF( jflag == 0)EXIT266 244 ! 245 IF( lk_mpp ) CALL mpp_max(jflag) !max over the global domain 246 ! 247 IF( jflag == 0 ) EXIT 248 ! 267 249 END DO ! jk1 loop 268 250 ! 269 251 DO jk = 1, jpkm1 270 un(:,:,jk) = un(:,:,jk) * zwdlmtu(:, :) 271 vn(:,:,jk) = vn(:,:,jk) * zwdlmtv(:, :) 272 END DO 273 274 CALL lbc_lnk_multi( un, 'U', -1., vn, 'V', -1. ) 275 ! 252 un(:,:,jk) = un(:,:,jk) * zwdlmtu(:,:) 253 vn(:,:,jk) = vn(:,:,jk) * zwdlmtv(:,:) 254 END DO 276 255 un_b(:,:) = un_b(:,:) * zwdlmtu(:, :) 277 256 vn_b(:,:) = vn_b(:,:) * zwdlmtv(:, :) 257 ! 258 !!gm TO BE SUPPRESSED ? these lbc_lnk are useless since zwdlmtu and zwdlmtv are defined everywhere ! 259 CALL lbc_lnk_multi( un , 'U', -1., vn , 'V', -1. ) 278 260 CALL lbc_lnk_multi( un_b, 'U', -1., vn_b, 'V', -1. ) 279 280 IF(jflag == 1 .AND. lwp) WRITE(numout,*) 'Need more iterations in wad_lmt!!!' 281 261 !!gm 262 ! 263 IF(jflag == 1 .AND. lwp) WRITE(numout,*) 'Need more iterations in wad_lmt!!!' 264 ! 282 265 !IF( ln_rnf ) CALL sbc_rnf_div( hdivn ) ! runoffs (update hdivn field) 283 !IF( nn_cla == 1 ) CALL cla_div ( kt ) ! Cross Land Advection (update hdivn field) 284 ! 285 ! 286 ! 287 ! 288 IF( nn_timing == 1 ) CALL timing_stop('wad_lmt') 289 ! 290 IF( ln_timing ) CALL timing_stop('wad_lmt') 266 ! 267 IF( ln_timing ) CALL timing_stop('wad_lmt') ! 291 268 ! 292 269 END SUBROUTINE wad_lmt … … 303 280 !! ** Action : - calculate flux limiter and W/D flag 304 281 !!---------------------------------------------------------------------- 305 REAL(wp) , INTENT(in):: rdtbt ! ocean time-step index282 REAL(wp) , INTENT(in ) :: rdtbt ! ocean time-step index 306 283 REAL(wp), DIMENSION(:,:), INTENT(inout) :: zflxu, zflxv, sshn_e, zssh_frc 307 284 ! 308 285 INTEGER :: ji, jj, jk, jk1 ! dummy loop indices 309 INTEGER :: jflag ! local scalar286 INTEGER :: jflag ! local integer 310 287 REAL(wp) :: z2dt 311 288 REAL(wp) :: zcoef, zdep1, zdep2 ! local scalars … … 317 294 REAL(wp), DIMENSION(jpi,jpj) :: zflxu1, zflxv1 ! local 2D workspace 318 295 !!---------------------------------------------------------------------- 319 ! 320 IF( nn_timing == 1 ) CALL timing_start('wad_lmt_bt') 296 IF( ln_timing ) CALL timing_start('wad_lmt_bt') ! 321 297 ! 322 298 jflag = 0 323 zdepwd = 50._wp ! maximum depth that ocean cells can have W/D processes324 299 zdepwd = 50._wp ! maximum depth that ocean cells can have W/D processes 300 ! 325 301 z2dt = rdtbt 326 302 ! 327 303 zflxp(:,:) = 0._wp 328 304 zflxn(:,:) = 0._wp 329 330 305 zwdlmtu(:,:) = 1._wp 331 306 zwdlmtv(:,:) = 1._wp 332 333 ! Horizontal Flux in u and v direction 334 335 DO jj = 2, jpj 307 ! 308 DO jj = 2, jpj ! Horizontal Flux in u and v direction 336 309 DO ji = 2, jpi 337 338 IF( tmask(ji, jj, 1 ) < 0.5_wp) CYCLE ! we don't care about land cells339 IF( ht_0(ji,jj) > zdepwd ) CYCLE ! and cells which are unlikely to dry340 341 zflxp(ji,jj) = max(zflxu(ji,jj), 0._wp) - min(zflxu(ji-1,jj), 0._wp) +&342 & max(zflxv(ji,jj), 0._wp) - min(zflxv(ji, jj-1), 0._wp)343 zflxn(ji,jj) = min(zflxu(ji,jj), 0._wp) - max(zflxu(ji-1,jj), 0._wp) +&344 & min(zflxv(ji,jj), 0._wp) - max(zflxv(ji, jj-1), 0._wp)345 310 ! 311 IF( tmask(ji, jj, 1 ) < 0.5_wp) CYCLE ! we don't care about land cells 312 IF( ht_0(ji,jj) > zdepwd ) CYCLE ! and cells which are unlikely to dry 313 ! 314 zflxp(ji,jj) = MAX( zflxu(ji,jj) , 0._wp ) - MIN( zflxu(ji-1,jj ) , 0._wp ) & 315 & + MAX( zflxv(ji,jj) , 0._wp ) - MIN( zflxv(ji, jj-1) , 0._wp ) 316 zflxn(ji,jj) = MIN( zflxu(ji,jj) , 0._wp ) - MAX( zflxu(ji-1,jj ) , 0._wp ) & 317 & + MIN( zflxv(ji,jj) , 0._wp ) - MAX( zflxv(ji, jj-1) , 0._wp ) 318 ! 346 319 zdep2 = ht_0(ji,jj) + sshn_e(ji,jj) - rn_wdmin1 347 IF( zdep2 .le. 0._wp) THEN !add more safety, but not necessary320 IF( zdep2 <= 0._wp ) THEN !add more safety, but not necessary 348 321 sshn_e(ji,jj) = rn_wdmin1 - ht_0(ji,jj) 349 IF(zflxu(ji, jj) > 0._wp) zwdlmtu(ji ,jj) = 0._wp 350 IF(zflxu(ji-1,jj) < 0._wp) zwdlmtu(ji-1,jj) = 0._wp 351 IF(zflxv(ji, jj) > 0._wp) zwdlmtv(ji ,jj) = 0._wp 352 IF(zflxv(ji,jj-1) < 0._wp) zwdlmtv(ji,jj-1) = 0._wp 353 END IF 354 ENDDO 355 END DO 356 357 358 !! start limiter iterations 359 DO jk1 = 1, nn_wdit + 1 360 361 322 IF( zflxu(ji ,jj ) > 0._wp) zwdlmtu(ji ,jj ) = 0._wp 323 IF( zflxu(ji-1,jj ) < 0._wp) zwdlmtu(ji-1,jj ) = 0._wp 324 IF( zflxv(ji ,jj ) > 0._wp) zwdlmtv(ji ,jj ) = 0._wp 325 IF( zflxv(ji ,jj-1) < 0._wp) zwdlmtv(ji ,jj-1) = 0._wp 326 ENDIF 327 END DO 328 END DO 329 ! 330 DO jk1 = 1, nn_wdit + 1 !! start limiter iterations 331 ! 362 332 zflxu1(:,:) = zflxu(:,:) * zwdlmtu(:,:) 363 333 zflxv1(:,:) = zflxv(:,:) * zwdlmtv(:,:) 364 334 jflag = 0 ! flag indicating if any further iterations are needed 365 335 ! 366 336 DO jj = 2, jpj 367 337 DO ji = 2, jpi 368 369 IF( tmask(ji, jj, 1 ) < 0.5_wp )CYCLE370 IF( ht_0(ji,jj) > zdepwd )CYCLE371 338 ! 339 IF( tmask(ji, jj, 1 ) < 0.5_wp ) CYCLE 340 IF( ht_0(ji,jj) > zdepwd ) CYCLE 341 ! 372 342 ztmp = e1e2t(ji,jj) 373 374 zzflxp = max(zflxu1(ji,jj), 0._wp) - min(zflxu1(ji-1,jj), 0._wp) +&375 &max(zflxv1(ji,jj), 0._wp) - min(zflxv1(ji, jj-1), 0._wp)376 zzflxn = min(zflxu1(ji,jj), 0._wp) - max(zflxu1(ji-1,jj), 0._wp) +&377 &min(zflxv1(ji,jj), 0._wp) - max(zflxv1(ji, jj-1), 0._wp)343 ! 344 zzflxp = max(zflxu1(ji,jj), 0._wp) - min(zflxu1(ji-1,jj), 0._wp) & 345 & + max(zflxv1(ji,jj), 0._wp) - min(zflxv1(ji, jj-1), 0._wp) 346 zzflxn = min(zflxu1(ji,jj), 0._wp) - max(zflxu1(ji-1,jj), 0._wp) & 347 & + min(zflxv1(ji,jj), 0._wp) - max(zflxv1(ji, jj-1), 0._wp) 378 348 379 349 zdep1 = (zzflxp + zzflxn) * z2dt / ztmp … … 399 369 END DO ! ji loop 400 370 END DO ! jj loop 401 371 ! 402 372 CALL lbc_lnk_multi( zwdlmtu, 'U', 1., zwdlmtv, 'V', 1. ) 403 373 ! 404 374 IF(lk_mpp) CALL mpp_max(jflag) !max over the global domain 405 406 IF(jflag == 0) EXIT407 375 ! 376 IF(jflag == 0) EXIT 377 ! 408 378 END DO ! jk1 loop 409 379 ! 410 380 zflxu(:,:) = zflxu(:,:) * zwdlmtu(:, :) 411 381 zflxv(:,:) = zflxv(:,:) * zwdlmtv(:, :) 412 382 ! 383 !!gm THIS lbc_lnk is useless since it is already done at the end of the jk1-loop 413 384 CALL lbc_lnk_multi( zflxu, 'U', -1., zflxv, 'V', -1. ) 414 415 IF(jflag == 1 .AND. lwp) WRITE(numout,*) 'Need more iterations in wad_lmt_bt!!!' 416 385 !!gm end 386 ! 387 IF( jflag == 1 .AND. lwp ) WRITE(numout,*) 'Need more iterations in wad_lmt_bt!!!' 388 ! 417 389 !IF( ln_rnf ) CALL sbc_rnf_div( hdivn ) ! runoffs (update hdivn field) 418 !IF( nn_cla == 1 ) CALL cla_div ( kt ) ! Cross Land Advection (update hdivn field) 419 ! 420 ! 421 IF( nn_timing == 1 ) CALL timing_stop('wad_lmt') 390 ! 391 IF( ln_timing ) CALL timing_stop('wad_lmt_bt') ! 392 ! 422 393 END SUBROUTINE wad_lmt_bt 423 394 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/FLO/flo_oce.F90
r5836 r9124 7 7 !! NEMO 1.0 ! 2002-11 (G. Madec, A. Bozec) F90: Free form and module 8 8 !!---------------------------------------------------------------------- 9 #if defined key_floats9 #if defined key_floats 10 10 !!---------------------------------------------------------------------- 11 11 !! 'key_floats' drifting floats … … 61 61 !!---------------------------------------------------------------------- 62 62 ALLOCATE( wb(jpi,jpj,jpk) , nfloat(jpnfl) , nisobfl(jpnfl) , ngrpfl(jpnfl) , & 63 64 63 & flxx(jpnfl) , flyy(jpnfl) , flzz(jpnfl) , & 64 & tpifl(jpnfl) , tpjfl(jpnfl) , tpkfl(jpnfl) , STAT=flo_oce_alloc ) 65 65 ! 66 66 IF( lk_mpp ) CALL mpp_sum ( flo_oce_alloc ) -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/FLO/floats.F90
r5836 r9124 7 7 !! NEMO 1.0 ! 2002-06 (A. Bozec) F90, Free form and module 8 8 !!---------------------------------------------------------------------- 9 #if defined key_floats9 #if defined key_floats 10 10 !!---------------------------------------------------------------------- 11 11 !! 'key_floats' float trajectories … … 22 22 USE flo4rk ! Trajectories, Runge Kutta scheme (flo_4rk routine) 23 23 USE floblk ! Trajectories, Blanke scheme (flo_blk routine) 24 ! 24 25 USE in_out_manager ! I/O manager 25 26 USE timing ! preformance summary … … 52 53 !!---------------------------------------------------------------------- 53 54 ! 54 IF( nn_timing == 1) CALL timing_start('flo_stp')55 IF( ln_timing ) CALL timing_start('flo_stp') 55 56 ! 56 57 IF( ln_flork4 ) THEN ; CALL flo_4rk( kt ) ! Trajectories using a 4th order Runge Kutta scheme … … 66 67 wb(:,:,:) = wn(:,:,:) ! Save the old vertical velocity field 67 68 ! 68 IF( nn_timing == 1) CALL timing_stop('flo_stp')69 IF( ln_timing ) CALL timing_stop('flo_stp') 69 70 ! 70 71 END SUBROUTINE flo_stp … … 77 78 !! ** Purpose : Read the namelist of floats 78 79 !!---------------------------------------------------------------------- 79 INTEGER :: jfl80 INTEGER :: ios ! Local integer output status for namelist read80 INTEGER :: jfl 81 INTEGER :: ios ! Local integer output status for namelist read 81 82 ! 82 83 NAMELIST/namflo/ jpnfl, jpnnewflo, ln_rstflo, nn_writefl, nn_stockfl, ln_argo, ln_flork4, ln_ariane, ln_flo_ascii 83 84 !!--------------------------------------------------------------------- 84 !85 IF( nn_timing == 1 ) CALL timing_start('flo_init')86 85 ! 87 86 IF(lwp) WRITE(numout,*) … … 125 124 IF( flo_rst_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'flo_rst : unable to allocate arrays' ) 126 125 ! 127 !memory allocation 128 jpnrstflo = jpnfl-jpnnewflo 129 130 !vertical axe for netcdf IOM ouput 131 DO jfl=1,jpnfl ; nfloat(jfl)=jfl ; ENDDO 132 126 jpnrstflo = jpnfl-jpnnewflo ! memory allocation 127 ! 128 DO jfl = 1, jpnfl ! vertical axe for netcdf IOM ouput 129 nfloat(jfl) = jfl 130 END DO 133 131 ! 134 132 CALL flo_dom ! compute/read initial position of floats 135 133 ! 136 134 wb(:,:,:) = wn(:,:,:) ! set wb for computation of floats trajectories at the first time step 137 !138 IF( nn_timing == 1 ) CALL timing_stop('flo_init')139 135 ! 140 136 END SUBROUTINE flo_init -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/ICB/icbstp.F90
r5215 r9124 1 1 MODULE icbstp 2 3 2 !!====================================================================== 4 3 !! *** MODULE icbstp *** … … 13 12 !! - ! into icb copies with haloes 14 13 !!---------------------------------------------------------------------- 14 15 15 !!---------------------------------------------------------------------- 16 16 !! icb_stp : start iceberg tracking … … 20 20 USE dom_oce ! ocean domain 21 21 USE sbc_oce ! ocean surface forcing 22 USE phycst 22 USE phycst ! physical constants 23 ! 24 USE icb_oce ! iceberg: define arrays 25 USE icbini ! iceberg: initialisation routines 26 USE icbutl ! iceberg: utility routines 27 USE icbrst ! iceberg: restart routines 28 USE icbdyn ! iceberg: dynamics (ie advection) routines 29 USE icbclv ! iceberg: calving routines 30 USE icbthm ! iceberg: thermodynamics routines 31 USE icblbc ! iceberg: lateral boundary routines (including mpp) 32 USE icbtrj ! iceberg: trajectory I/O routines 33 USE icbdia ! iceberg: budget 34 ! 23 35 USE in_out_manager ! nemo IO 24 USE lib_mpp 25 USE iom 26 USE fldread 36 USE lib_mpp ! massively parallel library 37 USE iom ! I/O manager 38 USE fldread ! field read 27 39 USE timing ! timing 28 29 USE icb_oce ! define iceberg arrays30 USE icbini ! iceberg initialisation routines31 USE icbutl ! iceberg utility routines32 USE icbrst ! iceberg restart routines33 USE icbdyn ! iceberg dynamics (ie advection) routines34 USE icbclv ! iceberg calving routines35 USE icbthm ! iceberg thermodynamics routines36 USE icblbc ! iceberg lateral boundary routines (including mpp)37 USE icbtrj ! iceberg trajectory I/O routines38 USE icbdia ! iceberg budget39 40 40 41 IMPLICIT NONE … … 64 65 !!---------------------------------------------------------------------- 65 66 ! 66 IF( nn_timing == 1 )CALL timing_start('icb_stp')67 IF( ln_timing ) CALL timing_start('icb_stp') 67 68 68 ! ! start of timestep housekeeping69 69 ! !== start of timestep housekeeping ==! 70 ! 70 71 nktberg = kt 71 72 IF( nn_test_icebergs < 0 ) THEN !read calving data72 ! 73 IF( nn_test_icebergs < 0 ) THEN !* read calving data 73 74 ! 74 75 CALL fld_read ( kt, 1, sf_icb ) 75 src_calving (:,:)= sf_icb(1)%fnow(:,:,1) ! calving in km^3/year (water equivalent)76 src_calving (:,:) = sf_icb(1)%fnow(:,:,1) ! calving in km^3/year (water equivalent) 76 77 src_calving_hflx(:,:) = 0._wp ! NO heat flux for now 77 78 ! 78 79 ENDIF 79 80 ! 80 81 berg_grid%floating_melt(:,:) = 0._wp 81 82 ! anything that needs to be reset to zero each timestep for budgets is dealt with here 83 CALL icb_dia_step() 84 82 ! 83 ! !* anything that needs to be reset to zero each timestep 84 CALL icb_dia_step() ! for budgets is dealt with here 85 ! 86 ! !* write out time 85 87 ll_verbose = .FALSE. 86 IF( nn_verbose_write > 0 .AND. & 87 MOD(kt-1,nn_verbose_write ) == 0 ) ll_verbose = nn_verbose_level >= 0 88 89 ! write out time 90 IF( ll_verbose ) WRITE(numicb,9100) nktberg, ndastp, nsec_day 88 IF( nn_verbose_write > 0 .AND. MOD( kt-1 , nn_verbose_write ) == 0 ) ll_verbose = ( nn_verbose_level >= 0 ) 89 ! 90 IF( ll_verbose ) WRITE(numicb,9100) nktberg, ndastp, nsec_day 91 91 9100 FORMAT('kt= ',i8, ' day= ',i8,' secs=',i8) 92 93 ! copy nemo forcing arrays into iceberg versions with extra halo 94 ! only necessary for variables not on T points 95 CALL icb_utl_copy() 96 97 !!---------------------------------------------------------------------- 98 !! process icebergs 99 92 ! 93 ! !* copy nemo forcing arrays into iceberg versions with extra halo 94 CALL icb_utl_copy() ! only necessary for variables not on T points 95 ! 96 ! 97 ! !== process icebergs ==! 98 ! ! 100 99 CALL icb_clv_flx( kt ) ! Accumulate ice from calving 101 100 ! ! 102 101 CALL icb_clv() ! Calve excess stored ice into icebergs 103 104 105 !!== For each berg, evolve ==!102 ! ! 103 ! 104 ! !== For each berg, evolve ==! 106 105 ! 107 106 IF( ASSOCIATED(first_berg) ) CALL icb_dyn( kt ) ! ice berg dynamics 108 107 109 IF( lk_mpp ) THEN ;CALL icb_lbc_mpp() ! Send bergs to other PEs110 ELSE ;CALL icb_lbc() ! Deal with any cyclic boundaries in non-mpp case108 IF( lk_mpp ) THEN ; CALL icb_lbc_mpp() ! Send bergs to other PEs 109 ELSE ; CALL icb_lbc() ! Deal with any cyclic boundaries in non-mpp case 111 110 ENDIF 112 111 113 112 IF( ASSOCIATED(first_berg) ) CALL icb_thm( kt ) ! Ice berg thermodynamics (melting) + rolling 114 115 !!---------------------------------------------------------------------- 116 !! end of timestep housekeeping 117 113 ! 114 ! 115 ! !== diagnostics and output ==! 116 ! 117 ! !* For each berg, record trajectory (when needed) 118 118 ll_sample_traj = .FALSE. 119 119 IF( nn_sample_rate > 0 .AND. MOD(kt-1,nn_sample_rate) == 0 ) ll_sample_traj = .TRUE. 120 IF( ll_sample_traj .AND. & 121 ASSOCIATED(first_berg) ) CALL icb_trj_write( kt ) ! For each berg, record trajectory 120 IF( ll_sample_traj .AND. ASSOCIATED(first_berg) ) CALL icb_trj_write( kt ) 122 121 123 ! Gridded diagnostics124 ! To get these iom_put's and those preceding to actually do something125 ! use key_iomput in cpp file and create content for XML file126 122 ! !* Gridded diagnostics 123 ! ! To get these iom_put's and those preceding to actually do something 124 ! ! use key_iomput in cpp file and create content for XML file 125 ! 127 126 CALL iom_put( "calving" , berg_grid%calving (:,:) ) ! 'calving mass input' 128 127 CALL iom_put( "berg_floating_melt", berg_grid%floating_melt(:,:) ) ! 'Melt rate of icebergs + bits' , 'kg/m2/s' 129 128 CALL iom_put( "berg_stored_ice" , berg_grid%stored_ice (:,:,:) ) ! 'Accumulated ice mass by class', 'kg' 130 131 ! store mean budgets 132 CALL icb_dia_put() 133 134 ! Dump icebergs to screen 135 if ( nn_verbose_level >= 2 ) CALL icb_utl_print( 'icb_stp, status', kt ) 136 137 ! Diagnose budgets 129 ! 130 CALL icb_dia_put() !* store mean budgets 131 ! 132 ! !* Dump icebergs to screen 133 IF( nn_verbose_level >= 2 ) CALL icb_utl_print( 'icb_stp, status', kt ) 134 ! 135 ! !* Diagnose budgets 138 136 ll_budget = .FALSE. 139 137 IF( nn_verbose_write > 0 .AND. MOD(kt-1,nn_verbose_write) == 0 ) ll_budget = ln_bergdia 140 138 CALL icb_dia( ll_budget ) 141 142 IF( MOD(kt,nn_stock) == 0 ) THEN 139 ! 140 IF( MOD(kt,nn_stock) == 0 ) THEN !* restart 143 141 CALL icb_rst_write( kt ) 144 142 IF( nn_sample_rate > 0 ) CALL icb_trj_sync() 145 143 ENDIF 146 147 IF( nn_timing == 1 )CALL timing_stop('icb_stp')144 ! 145 IF( ln_timing ) CALL timing_stop('icb_stp') 148 146 ! 149 147 END SUBROUTINE icb_stp … … 157 155 !! 158 156 !!---------------------------------------------------------------------- 159 INTEGER, INTENT( in ) :: kt157 INTEGER, INTENT( in ) :: kt ! model time-step index 160 158 !!---------------------------------------------------------------------- 161 159 ! 162 160 ! only write a restart if not done in icb_stp 163 IF( MOD(kt,nn_stock) .NE. 0 )CALL icb_rst_write( kt )161 IF( MOD(kt,nn_stock) /= 0 ) CALL icb_rst_write( kt ) 164 162 165 163 ! finish with trajectories if they were written 166 IF( nn_sample_rate .GT. 0 )CALL icb_trj_end()164 IF( nn_sample_rate > 0 ) CALL icb_trj_end() 167 165 168 IF(lwp) WRITE(numout,'(a,i6)') 'icebergs: icb_end complete', narea 166 IF(lwp) WRITE(numout,'(a,i6)') 'icebergs: icb_end complete', narea 167 ! 169 168 CALL flush( numicb ) 170 169 CLOSE( numicb ) … … 173 172 174 173 !!------------------------------------------------------------------------- 175 176 174 END MODULE icbstp -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90
r9019 r9124 100 100 LOGICAL :: ln_ctl !: run control for debugging 101 101 LOGICAL :: ln_timing !: run control for timing 102 !!gm to be removed at the end of the 2017 merge party103 INTEGER :: nn_timing !: run control for timing104 !!gm end105 102 LOGICAL :: ln_diacfl !: flag whether to create CFL diagnostics 106 103 INTEGER :: nn_print !: level of print (0 no print) -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90
r9094 r9124 408 408 IF( ln_timing ) CALL timing_start('ldf_slp_triad') 409 409 ! 410 !411 410 !--------------------------------! 412 411 ! Some preliminary calculation ! … … 644 643 REAL(wp) :: zck, zfk, zbw ! - - 645 644 !!---------------------------------------------------------------------- 646 !647 IF( ln_timing ) CALL timing_start('ldf_slp_mxl')648 645 ! 649 646 zeps = 1.e-20_wp !== Local constant initialization ==! … … 727 724 CALL lbc_lnk_multi( uslpml , 'U', -1. , vslpml , 'V', -1. , wslpiml, 'W', -1. , wslpjml, 'W', -1. ) 728 725 ! 729 IF( ln_timing ) CALL timing_stop('ldf_slp_mxl')730 !731 726 END SUBROUTINE ldf_slp_mxl 732 727 … … 743 738 INTEGER :: ierr ! local integer 744 739 !!---------------------------------------------------------------------- 745 !746 IF( ln_timing ) CALL timing_start('ldf_slp_init')747 740 ! 748 741 IF(lwp) THEN … … 801 794 ENDIF 802 795 ! 803 IF( ln_timing ) CALL timing_stop('ldf_slp_init')804 !805 796 END SUBROUTINE ldf_slp_init 806 797 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90
r9094 r9124 30 30 USE lib_mpp ! distribued memory computing library 31 31 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 32 USE timing ! timing33 32 34 33 IMPLICIT NONE … … 492 491 !!---------------------------------------------------------------------- 493 492 ! 494 IF( ln_timing ) CALL timing_start('ldf_eiv')495 !496 493 zn (:,:) = 0._wp ! Local initialization 497 494 zhw (:,:) = 5._wp … … 571 568 END DO 572 569 ! 573 IF( ln_timing ) CALL timing_stop('ldf_eiv')574 !575 570 END SUBROUTINE ldf_eiv 576 571 … … 607 602 !!---------------------------------------------------------------------- 608 603 ! 609 IF( ln_timing ) CALL timing_start( 'ldf_eiv_trp')610 !611 604 IF( kt == kit000 ) THEN 612 605 IF(lwp) WRITE(numout,*) … … 650 643 IF( ln_ldfeiv_dia .AND. cdtype == 'TRA' ) CALL ldf_eiv_dia( zpsi_uw, zpsi_vw ) 651 644 ! 652 IF( ln_timing ) CALL timing_stop( 'ldf_eiv_trp')653 !654 645 END SUBROUTINE ldf_eiv_trp 655 646 … … 675 666 !!gm I don't like this routine.... Crazy way of doing things, not optimal at all... 676 667 !!gm to be redesigned.... 677 IF( ln_timing ) CALL timing_start( 'ldf_eiv_dia')678 !679 668 ! !== eiv stream function: output ==! 680 669 CALL lbc_lnk_multi( psi_uw, 'U', -1. , psi_vw, 'V', -1. ) … … 780 769 ! 781 770 ! 782 IF( ln_timing ) CALL timing_stop( 'ldf_eiv_dia')783 !784 771 END SUBROUTINE ldf_eiv_dia 785 772 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk.F90
r9098 r9124 57 57 USE in_out_manager ! I/O manager 58 58 USE lib_mpp ! distribued memory computing library 59 USE timing ! Timing60 59 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 61 60 USE prtctl ! Print control … … 383 382 !!--------------------------------------------------------------------- 384 383 ! 385 IF( ln_timing ) CALL timing_start('blk_oce')386 !387 384 ! local scalars ( place there for vector optimisation purposes) 388 385 zst(:,:) = pst(:,:) + rt0 ! convert SST from Celcius to Kelvin (and set minimum value far above 0 K) … … 564 561 ENDIF 565 562 ! 566 IF( ln_timing ) CALL timing_stop('blk_oce')567 !568 563 END SUBROUTINE blk_oce 569 564 … … 713 708 REAL(wp), DIMENSION(jpi,jpj) :: zrhoa ! transfer coefficient for momentum (tau) 714 709 !!--------------------------------------------------------------------- 715 !716 IF( ln_timing ) CALL timing_start('blk_ice_tau')717 710 ! 718 711 ! set transfer coefficients to default sea-ice values … … 811 804 ENDIF 812 805 ! 813 IF( ln_timing ) CALL timing_stop('blk_ice_tau')814 !815 806 END SUBROUTINE blk_ice_tau 816 807 … … 845 836 REAL(wp), DIMENSION(jpi,jpj) :: zrhoa 846 837 !!--------------------------------------------------------------------- 847 !848 IF( ln_timing ) CALL timing_start('blk_ice_flx')849 838 ! 850 839 zcoef_dqlw = 4.0 * 0.95 * Stef ! local scalars … … 965 954 ENDIF 966 955 ! 967 IF( ln_timing ) CALL timing_stop('blk_ice_flx')968 !969 956 END SUBROUTINE blk_ice_flx 970 957 … … 1002 989 REAL(wp), DIMENSION(jpi,jpj,jpl) :: zgfac ! enhanced conduction factor 1003 990 !!--------------------------------------------------------------------- 1004 1005 IF( ln_timing ) CALL timing_start('blk_ice_qcn')1006 991 1007 992 ! -------------------------------------! … … 1065 1050 END DO 1066 1051 ! 1067 IF( ln_timing ) CALL timing_stop('blk_ice_qcn')1068 !1069 1052 END SUBROUTINE blk_ice_qcn 1070 1053 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_coare.F90
r9019 r9124 40 40 USE lib_mpp ! distribued memory computing library 41 41 USE wrk_nemo ! work arrays 42 USE timing ! Timing43 42 USE prtctl ! Print control 44 43 USE lib_fortran ! to use key_nosignedzero … … 121 120 !!---------------------------------------------------------------------- 122 121 ! 123 IF( nn_timing == 1 ) CALL timing_start('turb_coare')124 125 122 CALL wrk_alloc( jpi,jpj, u_star, t_star, q_star, zeta_u, dt_zu, dq_zu) 126 123 CALL wrk_alloc( jpi,jpj, znu_a, z0, z0t, ztmp0, ztmp1, ztmp2 ) … … 254 251 CALL wrk_dealloc( jpi,jpj, znu_a, z0, z0t, ztmp0, ztmp1, ztmp2 ) 255 252 IF( .NOT. l_zt_equal_zu ) CALL wrk_dealloc( jpi,jpj, zeta_t ) 256 257 IF( nn_timing == 1 ) CALL timing_stop('turb_coare') 258 253 ! 259 254 END SUBROUTINE turb_coare 260 255 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_coare3p5.F90
r9019 r9124 39 39 USE lib_mpp ! distribued memory computing library 40 40 USE wrk_nemo ! work arrays 41 USE timing ! Timing42 41 USE in_out_manager ! I/O manager 43 42 USE prtctl ! Print control … … 122 121 !!---------------------------------------------------------------------------------- 123 122 ! 124 IF( nn_timing == 1 ) CALL timing_start('turb_coare3p5')125 126 123 CALL wrk_alloc( jpi,jpj, u_star, t_star, q_star, zeta_u, dt_zu, dq_zu) 127 124 CALL wrk_alloc( jpi,jpj, znu_a, z0, z0t, ztmp0, ztmp1, ztmp2 ) … … 262 259 CALL wrk_dealloc( jpi,jpj, znu_a, z0, z0t, ztmp0, ztmp1, ztmp2 ) 263 260 IF( .NOT. l_zt_equal_zu ) CALL wrk_dealloc( jpi,jpj, zeta_t ) 264 265 IF( nn_timing == 1 ) CALL timing_stop('turb_coare3p5') 266 261 ! 267 262 END SUBROUTINE turb_coare3p5 268 263 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_ecmwf.F90
r9019 r9124 33 33 USE lib_mpp ! distribued memory computing library 34 34 USE wrk_nemo ! work arrays 35 USE timing ! Timing36 35 USE in_out_manager ! I/O manager 37 36 USE prtctl ! Print control … … 128 127 !!---------------------------------------------------------------------------------- 129 128 ! 130 IF( nn_timing == 1 ) CALL timing_start('turb_ecmwf')131 !132 129 CALL wrk_alloc( jpi,jpj, u_star, t_star, q_star, func_m, func_h, dt_zu, dq_zu, Linv ) 133 130 CALL wrk_alloc( jpi,jpj, znu_a, z0, z0t, z0q, ztmp0, ztmp1, ztmp2 ) … … 292 289 CALL wrk_dealloc( jpi,jpj, znu_a, z0, z0t, z0q, ztmp0, ztmp1, ztmp2 ) 293 290 ! 294 IF( nn_timing == 1 ) CALL timing_stop('turb_ecmwf')295 !296 291 END SUBROUTINE TURB_ECMWF 297 292 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_algo_ncar.F90
r9019 r9124 35 35 USE lib_mpp ! distribued memory computing library 36 36 USE wrk_nemo ! work arrays 37 USE timing ! Timing38 37 USE in_out_manager ! I/O manager 39 38 USE prtctl ! Print control … … 127 126 !!---------------------------------------------------------------------------------- 128 127 ! 129 IF( nn_timing == 1 ) CALL timing_start('turb_ncar')130 !131 128 CALL wrk_alloc( jpi,jpj, Cx_n10, sqrt_Cd_n10, zeta_u, stab ) 132 129 CALL wrk_alloc( jpi,jpj, zpsi_h_u, ztmp0, ztmp1, ztmp2 ) … … 229 226 CALL wrk_dealloc( jpi,jpj, zpsi_h_u, ztmp0, ztmp1, ztmp2 ) 230 227 ! 231 IF( nn_timing == 1 ) CALL timing_stop('turb_ncar')232 !233 228 END SUBROUTINE turb_ncar 234 229 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r9119 r9124 47 47 USE iom ! NetCDF library 48 48 USE lib_mpp ! distribued memory computing library 49 USE timing ! Timing50 49 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 51 50 … … 258 257 259 258 !!--------------------------------------------------------------------- 260 !261 IF( nn_timing == 1 ) CALL timing_start('sbc_cpl_init')262 259 ! 263 260 ! ================================ ! … … 1046 1043 & CALL ctl_stop( 'sbc_cpl_init: diurnal cycle reconstruction (ln_dm2dc) needs daily couping for solar radiation' ) 1047 1044 IF( ln_dm2dc .AND. ln_cpl ) ncpl_qsr_freq = 86400 / ncpl_qsr_freq 1048 1049 !1050 IF( nn_timing == 1 ) CALL timing_stop('sbc_cpl_init')1051 1045 ! 1052 1046 END SUBROUTINE sbc_cpl_init … … 1114 1108 REAL(wp), DIMENSION(jpi,jpj) :: ztx, zty, zmsk, zemp, zqns, zqsr 1115 1109 !!---------------------------------------------------------------------- 1116 !1117 IF( nn_timing == 1 ) CALL timing_start('sbc_cpl_rcv')1118 1110 ! 1119 1111 IF( ln_mixcpl ) zmsk(:,:) = 1. - xcplmask(:,:,0) … … 1453 1445 ENDIF 1454 1446 ! 1455 IF( nn_timing == 1 ) CALL timing_stop('sbc_cpl_rcv')1456 !1457 1447 END SUBROUTINE sbc_cpl_rcv 1458 1448 … … 1498 1488 REAL(wp), DIMENSION(jpi,jpj) :: ztx, zty 1499 1489 !!---------------------------------------------------------------------- 1500 !1501 IF( nn_timing == 1 ) CALL timing_start('sbc_cpl_ice_tau')1502 1490 ! 1503 1491 IF( srcv(jpr_itx1)%laction ) THEN ; itx = jpr_itx1 … … 1658 1646 1659 1647 ENDIF 1660 !1661 IF( nn_timing == 1 ) CALL timing_stop('sbc_cpl_ice_tau')1662 1648 ! 1663 1649 END SUBROUTINE sbc_cpl_ice_tau … … 1730 1716 !!---------------------------------------------------------------------- 1731 1717 ! 1732 IF( nn_timing == 1 ) CALL timing_start('sbc_cpl_ice_flx')1733 !1734 1718 IF( ln_mixcpl ) zmsk(:,:) = 1. - xcplmask(:,:,0) 1735 1719 ziceld(:,:) = 1._wp - picefr(:,:) … … 2113 2097 ! 2114 2098 #endif 2115 IF( nn_timing == 1 ) CALL timing_stop('sbc_cpl_ice_flx')2116 2099 ! 2117 2100 END SUBROUTINE sbc_cpl_ice_flx … … 2135 2118 REAL(wp), DIMENSION(jpi,jpj,jpl) :: ztmp3, ztmp4 2136 2119 !!---------------------------------------------------------------------- 2137 !2138 IF( nn_timing == 1 ) CALL timing_start('sbc_cpl_snd')2139 2120 ! 2140 2121 isec = ( kt - nit000 ) * NINT( rdt ) ! date of exchanges … … 2713 2694 #endif 2714 2695 ! 2715 IF( nn_timing == 1 ) CALL timing_stop('sbc_cpl_snd')2716 !2717 2696 END SUBROUTINE sbc_cpl_snd 2718 2697 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcdcy.F90
r6140 r9124 16 16 USE dom_oce ! ocean space and time domain 17 17 USE sbc_oce ! Surface boundary condition: ocean fields 18 ! 18 19 USE in_out_manager ! I/O manager 19 20 USE lib_mpp ! MPP library 20 USE timing ! Timing21 21 22 22 IMPLICIT NONE … … 63 63 !! Part 1: a diurnally forced OGCM. Climate Dynamics 29:6, 575-590. 64 64 !!---------------------------------------------------------------------- 65 LOGICAL , OPTIONAL, INTENT(in) :: l_mask! use the routine for night mask computation65 LOGICAL , OPTIONAL , INTENT(in) :: l_mask ! use the routine for night mask computation 66 66 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: pqsrin ! input daily QSR flux 67 REAL(wp), DIMENSION(jpi,jpj) :: zqsrout ! output QSR flux with diurnal cycle 67 68 !! 68 69 INTEGER :: ji, jj ! dummy loop indices … … 73 74 REAL(wp) :: ztmp, ztmp1, ztmp2, ztest 74 75 REAL(wp) :: ztmpm, ztmpm1, ztmpm2 75 REAL(wp), DIMENSION(jpi,jpj) :: zqsrout ! output QSR flux with diurnal cycle76 76 !---------------------------statement functions------------------------ 77 77 REAL(wp) :: fintegral, pt1, pt2, paaa, pbbb, pccc ! dummy statement function arguments … … 80 80 & - paaa * pt1 - zinvtwopi * pbbb * SIN(pccc + ztwopi * pt1) 81 81 !!--------------------------------------------------------------------- 82 !83 IF( nn_timing == 1 ) CALL timing_start('sbc_dcy')84 82 ! 85 83 ! Initialization … … 199 197 DO jj = 1, jpj 200 198 DO ji = 1, jpi 201 ztmpm = 0. 0199 ztmpm = 0._wp 202 200 IF( ABS(rab(ji,jj)) < 1. ) THEN ! day duration is less than 24h 203 201 ! … … 241 239 END DO 242 240 ! 243 IF 241 IF( PRESENT(l_mask) .AND. l_mask ) THEN 244 242 zqsrout(:,:) = float(imask_night(:,:)) 245 243 ENDIF 246 244 ! 247 IF( nn_timing == 1 ) CALL timing_stop('sbc_dcy')248 !249 245 END FUNCTION sbc_dcy 250 246 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcfwb.F90
r9019 r9124 25 25 USE in_out_manager ! I/O manager 26 26 USE lib_mpp ! distribued memory computing library 27 USE wrk_nemo ! work arrays28 USE timing ! Timing29 27 USE lbclnk ! ocean lateral boundary conditions 30 28 USE lib_fortran ! … … 70 68 REAL(wp) :: z_fwf, z_fwf_nsrf, zsum_fwf, zsum_erp ! local scalars 71 69 REAL(wp) :: zsurf_neg, zsurf_pos, zsurf_tospread, zcoef ! - - 72 REAL(wp), POINTER, DIMENSION(:,:) :: ztmsk_neg, ztmsk_pos, z_wgt ! 2D workspaces73 REAL(wp), POINTER, DIMENSION(:,:) :: ztmsk_tospread, zerp_cor ! - -70 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ztmsk_neg, ztmsk_pos, z_wgt ! 2D workspaces 71 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ztmsk_tospread, zerp_cor ! - - 74 72 !!---------------------------------------------------------------------- 75 !76 IF( nn_timing == 1 ) CALL timing_start('sbc_fwb')77 !78 CALL wrk_alloc( jpi,jpj, ztmsk_neg, ztmsk_pos, ztmsk_tospread, z_wgt, zerp_cor )79 73 ! 80 74 IF( kt == nit000 ) THEN … … 154 148 CASE ( 3 ) !== global fwf set to zero and spread out over erp area ==! 155 149 ! 150 ALLOCATE( ztmsk_neg(jpi,jpj) , ztmsk_pos(jpi,jpj) , ztmsk_tospread(jpi,jpj) , z_wgt(jpi,jpj) , zerp_cor(jpi,jpj) ) 151 ! 156 152 IF( MOD( kt-1, kn_fsbc ) == 0 ) THEN 157 153 ztmsk_pos(:,:) = tmask_i(:,:) ! Select <0 and >0 area of erp … … 203 199 ENDIF 204 200 ENDIF 201 DEALLOCATE( ztmsk_neg , ztmsk_pos , ztmsk_tospread , z_wgt , zerp_cor ) 205 202 ! 206 203 CASE DEFAULT !== you should never be there ==! … … 209 206 END SELECT 210 207 ! 211 CALL wrk_dealloc( jpi,jpj, ztmsk_neg, ztmsk_pos, ztmsk_tospread, z_wgt, zerp_cor )212 !213 IF( nn_timing == 1 ) CALL timing_stop('sbc_fwb')214 !215 208 END SUBROUTINE sbc_fwb 216 209 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
r9098 r9124 19 19 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 20 20 USE wrk_nemo ! work arrays 21 USE timing ! Timing22 21 USE daymod ! calendar 23 22 USE fldread ! read input fields … … 127 126 !!---------------------------------------------------------------------- 128 127 ! 129 IF( nn_timing == 1 ) CALL timing_start('sbc_ice_cice')130 !131 128 ! !----------------------! 132 129 IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN ! Ice time-step only ! … … 148 145 ENDIF ! End sea-ice time step only 149 146 ! 150 IF( nn_timing == 1 ) CALL timing_stop('sbc_ice_cice')151 152 147 END SUBROUTINE sbc_ice_cice 153 148 … … 164 159 INTEGER :: ji, jj, jl, jk ! dummy loop indices 165 160 !!--------------------------------------------------------------------- 166 167 IF( nn_timing == 1 ) CALL timing_start('cice_sbc_init')168 161 ! 169 162 CALL wrk_alloc( jpi,jpj, ztmp1, ztmp2 ) … … 281 274 CALL wrk_dealloc( jpi,jpj, ztmp1, ztmp2 ) 282 275 ! 283 IF( nn_timing == 1 ) CALL timing_stop('cice_sbc_init')284 !285 276 END SUBROUTINE cice_sbc_init 286 277 … … 299 290 REAL(wp) :: zintb, zintn ! dummy argument 300 291 !!--------------------------------------------------------------------- 301 302 IF( nn_timing == 1 ) CALL timing_start('cice_sbc_in')303 292 ! 304 293 CALL wrk_alloc( jpi,jpj, ztmp, zpice ) … … 507 496 CALL wrk_dealloc( jpi,jpj,ncat, ztmpn ) 508 497 ! 509 IF( nn_timing == 1 ) CALL timing_stop('cice_sbc_in')510 !511 498 END SUBROUTINE cice_sbc_in 512 499 … … 523 510 REAL(wp), DIMENSION(:,:), POINTER :: ztmp1, ztmp2 524 511 !!--------------------------------------------------------------------- 525 526 IF( nn_timing == 1 ) CALL timing_start('cice_sbc_out')527 512 ! 528 513 CALL wrk_alloc( jpi,jpj, ztmp1, ztmp2 ) … … 680 665 CALL wrk_dealloc( jpi,jpj, ztmp1, ztmp2 ) 681 666 ! 682 IF( nn_timing == 1 ) CALL timing_stop('cice_sbc_out')683 !684 667 END SUBROUTINE cice_sbc_out 685 668 … … 691 674 !! 692 675 !! 676 !!--------------------------------------------------------------------- 693 677 INTEGER, INTENT( in ) :: kt ! ocean time step 694 !!--------------------------------------------------------------------- 695 678 !! 696 679 INTEGER :: jl ! dummy loop index 697 680 INTEGER :: ierror 698 699 IF( nn_timing == 1 ) CALL timing_start('cice_sbc_hadgam') 681 !!--------------------------------------------------------------------- 700 682 ! 701 683 IF( kt == nit000 ) THEN … … 722 704 END DO 723 705 ! 724 IF( nn_timing == 1 ) CALL timing_stop('cice_sbc_hadgam')725 !726 706 END SUBROUTINE cice_sbc_hadgam 727 707 … … 732 712 !! ** Purpose: Finalize CICE 733 713 !!--------------------------------------------------------------------- 734 714 ! 735 715 IF(lwp) WRITE(numout,*)'cice_sbc_final' 736 716 ! 737 717 CALL CICE_Finalize 738 718 ! 739 719 END SUBROUTINE cice_sbc_final 720 740 721 741 722 SUBROUTINE cice_sbc_force (kt) … … 755 736 !! History : 756 737 !!---------------------------------------------------------------------- 757 !! * Modules used758 738 USE iom 759 760 !! * arguments 761 INTEGER, INTENT( in ) :: kt ! ocean time step 762 739 !! 740 INTEGER, INTENT( in ) :: kt ! ocean time step 741 !! 763 742 INTEGER :: ierror ! return error code 764 743 INTEGER :: ifpr ! dummy loop index … … 769 748 TYPE(FLD_N) :: sn_top1, sn_top2, sn_top3, sn_top4, sn_top5 770 749 TYPE(FLD_N) :: sn_bot1, sn_bot2, sn_bot3, sn_bot4, sn_bot5 771 772 750 !! 773 751 NAMELIST/namsbc_cice/ cn_dir, sn_snow, sn_rain, sn_sblm, & -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90
r9098 r9124 24 24 USE fldread ! read input field at current time step 25 25 USE lbclnk ! 26 USE timing ! Timing27 26 USE lib_fortran ! glob_sum 28 27 … … 409 408 REAL(wp) :: zpress ! pressure to compute the freezing point in depth 410 409 !!---------------------------------------------------------------------- 411 412 IF( nn_timing == 1 ) CALL timing_start('sbc_isf_bg03')413 410 ! 414 411 DO ji = 1, jpi … … 441 438 END DO 442 439 ! 443 IF( nn_timing == 1 ) CALL timing_stop('sbc_isf_bg03')444 !445 440 END SUBROUTINE sbc_isf_bg03 446 441 … … 473 468 REAL(wp), DIMENSION(jpi,jpj) :: zfwflx, zhtflx, zhtflx_b 474 469 !!--------------------------------------------------------------------- 470 ! 475 471 ! coeficient for linearisation of potential tfreez 476 472 ! Crude approximation for pressure (but commonly used) … … 478 474 zlamb2 = 0.0832_wp 479 475 zlamb3 =-7.53e-08_wp * grav * rau0 480 IF( nn_timing == 1 ) CALL timing_start('sbc_isf_cav')481 476 ! 482 477 ! initialisation … … 571 566 CALL iom_put('isfgammas', zgammas) 572 567 ! 573 IF( nn_timing == 1 ) CALL timing_stop('sbc_isf_cav')574 !575 568 END SUBROUTINE sbc_isf_cav 576 569 … … 585 578 !! Jenkins et al., 2010, JPO, p2298-2312 586 579 !!--------------------------------------------------------------------- 587 REAL(wp), DIMENSION(:,:), INTENT(out) :: pgt, pgs 588 REAL(wp), DIMENSION(:,:), INTENT(in ) :: pqhisf, pqwisf 589 ! 590 INTEGER :: ikt 580 REAL(wp), DIMENSION(:,:), INTENT( out) :: pgt , pgs ! 581 REAL(wp), DIMENSION(:,:), INTENT(in ) :: pqhisf, pqwisf ! 582 ! 591 583 INTEGER :: ji, jj ! loop index 584 INTEGER :: ikt ! local integer 592 585 REAL(wp) :: zdku, zdkv ! U, V shear 593 586 REAL(wp) :: zPr, zSc, zRc ! Prandtl, Scmidth and Richardson number … … 615 608 !! Jenkins et al., 2010, JPO, p2298-2312 616 609 !! Adopted by Asay-Davis et al. (2015) 617 !!gm I don't understand the u* expression in those papers... (see for example zdfglf module) 618 !! for me ustar= Cd0 * |U| not (Cd0)^1/2 * |U| .... which is what you can find in Jenkins et al. 619 620 !! compute ustar (eq. 24) !! NB: here r_Cdmin_top = rn_Cd0 read in namdrg_top namelist) 610 !! compute ustar (eq. 24) 611 !!gm NB use pCdU here so that it will incorporate local boost of Cd0 and log layer case : 612 !! zustar(:,:) = SQRT( rCdU_top(:,:) * SQRT(utbl(:,:) * utbl(:,:) + vtbl(:,:) * vtbl(:,:) + r_ke0_top) ) 613 !! or better : compute ustar in zdfdrg and use it here as well as in TKE, GLS and Co 614 !! 615 !! ===>>>> GM to be done this chrismas 616 !! 617 !!gm end 621 618 zustar(:,:) = SQRT( r_Cdmin_top * (utbl(:,:) * utbl(:,:) + vtbl(:,:) * vtbl(:,:) + r_ke0_top) ) 622 619 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r9115 r9124 365 365 !!--------------------------------------------------------------------- 366 366 ! 367 IF( nn_timing == 1 )CALL timing_start('sbc')367 IF( ln_timing ) CALL timing_start('sbc') 368 368 ! 369 369 ! ! ---------------------------------------- ! … … 518 518 IF( kt == nitend ) CALL sbc_final ! Close down surface module if necessary 519 519 ! 520 IF( nn_timing == 1 )CALL timing_stop('sbc')520 IF( ln_timing ) CALL timing_stop('sbc') 521 521 ! 522 522 END SUBROUTINE sbc -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90
r7753 r9124 23 23 USE lib_mpp ! distribued memory computing library 24 24 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 25 USE timing ! Timing26 25 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 27 26 … … 80 79 TYPE(FLD_N) :: sn_sst, sn_sss ! informations about the fields to be read 81 80 !!---------------------------------------------------------------------- 82 !83 IF( nn_timing == 1 ) CALL timing_start('sbc_ssr')84 81 ! 85 82 IF( nn_sstr + nn_sssr /= 0 ) THEN … … 136 133 ENDIF 137 134 ! 138 IF( nn_timing == 1 ) CALL timing_stop('sbc_ssr')139 !140 135 END SUBROUTINE sbc_ssr 141 136 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen.F90
r9094 r9124 23 23 USE trc_oce ! share passive tracers/Ocean variables 24 24 USE lib_mpp ! MPP library 25 USE timing ! Timing26 25 27 26 IMPLICIT NONE … … 81 80 !!---------------------------------------------------------------------- 82 81 ! 83 IF( ln_timing ) CALL timing_start('tra_adv_cen')84 !85 82 IF( kt == kit000 ) THEN 86 83 IF(lwp) WRITE(numout,*) … … 205 202 END DO 206 203 ! 207 IF( ln_timing ) CALL timing_stop('tra_adv_cen')208 !209 204 END SUBROUTINE tra_adv_cen 210 205 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_fct.F90
r9094 r9124 27 27 USE lbclnk ! ocean lateral boundary condition (or mpp link) 28 28 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 29 USE timing ! Timing30 29 31 30 IMPLICIT NONE … … 88 87 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrdx, ztrdy, ztrdz, zptry 89 88 !!---------------------------------------------------------------------- 90 !91 IF( ln_timing ) CALL timing_start('tra_adv_fct')92 89 ! 93 90 IF( kt == kit000 ) THEN … … 324 321 END DO ! end of tracer loop 325 322 ! 326 IF( ln_timing ) CALL timing_stop('tra_adv_fct')327 !328 323 END SUBROUTINE tra_adv_fct 329 324 … … 353 348 !!---------------------------------------------------------------------- 354 349 ! 355 IF( ln_timing ) CALL timing_start('nonosc')356 !357 350 zbig = 1.e+40_wp 358 351 zrtrn = 1.e-15_wp … … 428 421 END DO 429 422 CALL lbc_lnk_multi( paa, 'U', -1. , pbb, 'V', -1. ) ! lateral boundary condition (changed sign) 430 !431 IF( ln_timing ) CALL timing_stop('nonosc')432 423 ! 433 424 END SUBROUTINE nonosc -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90
r9094 r9124 16 16 USE zdfmxl ! mixed layer depth 17 17 ! 18 USE lbclnk ! lateral boundary condition / mpp link19 18 USE in_out_manager ! I/O manager 20 19 USE iom ! IOM library 21 20 USE lib_mpp ! MPP library 22 USE timing ! Timing21 USE lbclnk ! lateral boundary condition / mpp link 23 22 24 23 IMPLICIT NONE … … 95 94 !!---------------------------------------------------------------------- 96 95 ! 97 IF( ln_timing ) CALL timing_start('tra_adv_mle')98 !99 96 ! !== MLD used for MLE ==! 100 97 ! ! compute from the 10m density to deal with the diurnal cycle … … 248 245 CALL iom_put( "psiv_mle", zpsi_vw ) ! j-mle streamfunction 249 246 ENDIF 250 !251 IF( ln_timing ) CALL timing_stop('tra_adv_mle')252 247 ! 253 248 END SUBROUTINE tra_adv_mle -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mus.F90
r9094 r9124 27 27 ! 28 28 USE iom ! XIOS library 29 USE timing ! Timing30 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)31 29 USE in_out_manager ! I/O manager 32 30 USE lib_mpp ! distribued memory computing 33 31 USE lbclnk ! ocean lateral boundary condition (or mpp link) 32 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 34 33 35 34 IMPLICIT NONE … … 91 90 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwy, zslpy ! - - 92 91 !!---------------------------------------------------------------------- 93 !94 IF( ln_timing ) CALL timing_start('tra_adv_mus')95 92 ! 96 93 IF( kt == kit000 ) THEN … … 275 272 END DO ! end of tracer loop 276 273 ! 277 IF( ln_timing ) CALL timing_stop('tra_adv_mus')278 !279 274 END SUBROUTINE tra_adv_mus 280 275 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90
r9094 r9124 22 22 USE diaptr ! poleward transport diagnostics 23 23 ! 24 USE in_out_manager ! I/O manager 24 25 USE lib_mpp ! distribued memory computing 25 26 USE lbclnk ! ocean lateral boundary condition (or mpp link) 26 USE in_out_manager ! I/O manager27 USE timing ! Timing28 27 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 29 28 … … 95 94 !!---------------------------------------------------------------------- 96 95 ! 97 IF( ln_timing ) CALL timing_start('tra_adv_qck')98 !99 96 IF( kt == kit000 ) THEN 100 97 IF(lwp) WRITE(numout,*) … … 116 113 ! ! vertical fluxes are computed with the 2nd order centered scheme 117 114 CALL tra_adv_cen2_k( kt, cdtype, pwn, ptn, pta, kjpt ) 118 !119 IF( ln_timing ) CALL timing_stop('tra_adv_qck')120 115 ! 121 116 END SUBROUTINE tra_adv_qck … … 427 422 REAL(wp) :: zc, zcurv, zfho ! - - 428 423 !---------------------------------------------------------------------- 429 !430 IF( ln_timing ) CALL timing_start('quickest')431 424 ! 432 425 DO jk = 1, jpkm1 … … 460 453 END DO 461 454 ! 462 IF( ln_timing ) CALL timing_stop('quickest')463 !464 455 END SUBROUTINE quickest 465 456 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90
r9019 r9124 22 22 ! 23 23 USE iom ! I/O library 24 USE in_out_manager ! I/O manager 24 25 USE lib_mpp ! massively parallel library 25 26 USE lbclnk ! ocean lateral boundary condition (or mpp link) 26 USE in_out_manager ! I/O manager27 USE timing ! Timing28 27 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 29 28 … … 102 101 !!---------------------------------------------------------------------- 103 102 ! 104 IF( ln_timing ) CALL timing_start('tra_adv_ubs')105 !106 103 IF( kt == kit000 ) THEN 107 104 IF(lwp) WRITE(numout,*) … … 281 278 END DO 282 279 ! 283 IF( ln_timing ) CALL timing_stop('tra_adv_ubs')284 !285 280 END SUBROUTINE tra_adv_ubs 286 281 … … 310 305 !!---------------------------------------------------------------------- 311 306 ! 312 IF( ln_timing ) CALL timing_start('nonosc_z')313 !314 307 zbig = 1.e+40_wp 315 308 zrtrn = 1.e-15_wp … … 379 372 END DO 380 373 ! 381 IF( ln_timing ) CALL timing_stop('nonosc_z')382 !383 374 END SUBROUTINE nonosc_z 384 375 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90
r9099 r9124 42 42