Changeset 9089 for branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC
- Timestamp:
- 2017-12-15T18:00:09+01:00 (6 years ago)
- Location:
- branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/ZDF
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfdrg.F90
r9019 r9089 29 29 USE lib_mpp ! distributed memory computing 30 30 USE prtctl ! Print control 31 USE timing ! Timing32 31 33 32 IMPLICIT NONE … … 78 77 CONTAINS 79 78 80 SUBROUTINE zdf_drg( kt, k_mk, pCdmin, pCdmax, pz0, pke0, pCd0, pCdU ) 79 SUBROUTINE zdf_drg( kt, k_mk, pCdmin, pCdmax, pz0, pke0, pCd0, & ! <<== in 80 & pCdU ) ! ==>> out : bottom drag [m/s] 81 81 !!---------------------------------------------------------------------- 82 82 !! *** ROUTINE zdf_drg *** … … 108 108 REAL(wp):: zzz, zut, zvt, zcd ! local scalars 109 109 !!---------------------------------------------------------------------- 110 !111 IF( ln_timing ) CALL timing_start('zdf_drg')112 !113 110 ! 114 111 IF( l_log_not_linssh ) THEN !== "log layer" ==! compute Cd and -Cd*|U| … … 123 120 zcd = ( vkarmn / LOG( zzz / pz0 ) )**2 124 121 zcd = pCd0(ji,jj) * MIN( MAX( pCdmin , zcd ) , pCdmax ) ! here pCd0 = mask*boost 125 pCdU(ji,jj) = - zcd * SQRT( 0.25 * ( zut*z vt + zvt*zvt ) + pke0 )122 pCdU(ji,jj) = - zcd * SQRT( 0.25 * ( zut*zut + zvt*zvt ) + pke0 ) 126 123 END DO 127 124 END DO … … 133 130 zvt = vn(ji,jj,imk) + vn(ji,jj-1,imk) 134 131 ! ! here pCd0 = mask*boost * drag 135 pCdU(ji,jj) = - pCd0(ji,jj) * SQRT( 0.25 * ( zut*z vt + zvt*zvt ) + pke0 )132 pCdU(ji,jj) = - pCd0(ji,jj) * SQRT( 0.25 * ( zut*zut + zvt*zvt ) + pke0 ) 136 133 END DO 137 134 END DO … … 139 136 ! 140 137 IF(ln_ctl) CALL prt_ctl( tab2d_1=pCdU, clinfo1=' Cd*U ') 141 !142 IF( ln_timing ) CALL timing_stop('zdf_drg')143 138 ! 144 139 END SUBROUTINE zdf_drg … … 200 195 ! !== TOP drag setting ==! (applied at the top of ocean cavities) 201 196 ! 202 IF ( ln_isfcav ) THEN! Ocean cavities: top friction setting197 IF( ln_isfcav ) THEN ! Ocean cavities: top friction setting 203 198 ALLOCATE( rCd0_top(jpi,jpj), rCdU_top(jpi,jpj) ) 204 199 CALL drg_init( 'TOP ' , mikt , & ! <== in 205 & r_Cdmin_top, r_Cdmax_top, r_z0_top, r_ke0_top, rCd0_ bot, rCdU_bot) ! ==> out200 & r_Cdmin_top, r_Cdmax_top, r_z0_top, r_ke0_top, rCd0_top, rCdU_top ) ! ==> out 206 201 ENDIF 207 202 ! … … 223 218 REAL(wp) , INTENT( out) :: pke0 ! background KE [m2/s2] 224 219 REAL(wp), DIMENSION(:,:), INTENT( out) :: pCd0 ! masked precomputed part of the non-linear drag coefficient 225 REAL(wp), DIMENSION(:,:), INTENT( out) :: pCdU ! linear drag*|U| at t-points [m/s]220 REAL(wp), DIMENSION(:,:), INTENT( out) :: pCdU ! minus linear drag*|U| at t-points [m/s] 226 221 !! 227 222 CHARACTER(len=40) :: cl_namdrg, cl_file, cl_varname, cl_namref, cl_namcfg ! local names … … 318 313 l_zdfdrg = .FALSE. ! no time variation of the drag: set it one for all 319 314 ! 320 pCdU(:,:) = 0._wp ! pCd0 never used 315 pCdU(:,:) = 0._wp 316 pCd0(:,:) = 0._wp 321 317 ! 322 318 CASE( np_lin ) !== linear friction ==! (pCdU = Cd0 * Uc0) … … 326 322 l_zdfdrg = .FALSE. ! no time variation of the Cd*|U| : set it one for all 327 323 ! 328 pCdU(:,:) = - rn_Cd0 * rn_Uc0 * zmsk_boost(:,:) ! pCd0 never used: remain undefined 324 pCd0(:,:) = rn_Cd0 * zmsk_boost(:,:) !* constant in time drag coefficient (= mask (and boost) Cd0) 325 pCdU(:,:) = - pCd0(:,:) * rn_Uc0 ! using a constant velocity 329 326 ! 330 327 CASE( np_non_lin ) !== non-linear friction ==! (pCd0 = Cd0 ) … … 337 334 ! 338 335 pCd0(:,:) = rn_Cd0 * zmsk_boost(:,:) !* constant in time proportionality coefficient (= mask (and boost) Cd0) 336 pCdU(:,:) = 0._wp ! 339 337 ! 340 338 CASE( np_loglayer ) !== logarithmic layer formulation of friction ==! (CdU = (vkarman log(z/z0))^2 |U| ) … … 349 347 ! 350 348 IF( ln_linssh ) THEN !* pCd0 = (v log(z/z0))^2 as velocity points have a fixed z position 351 IF(lwp) WRITE(numout,*)352 IF(lwp) WRITE(numout,*) ' N.B. linear free surface case, Cd0 computed one for all'349 IF(lwp) WRITE(numout,*) 350 IF(lwp) WRITE(numout,*) ' N.B. linear free surface case, Cd0 computed one for all' 353 351 ! 354 352 l_log_not_linssh = .FALSE. !- don't update Cd at each time step … … 369 367 pCd0(:,:) = zmsk_boost(:,:) 370 368 ENDIF 369 pCdU(:,:) = 0._wp ! initialisation to zero (will be updated at each time step) 371 370 ! 372 371 CASE DEFAULT -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90
r9023 r9089 31 31 USE in_out_manager ! I/O manager 32 32 USE iom ! I/O manager library 33 USE timing ! Timing 34 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 33 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 35 34 36 35 IMPLICIT NONE … … 160 159 !!-------------------------------------------------------------------- 161 160 ! 162 IF( ln_timing ) CALL timing_start('zdf_gls')163 !164 161 ! Preliminary computing 165 162 … … 822 819 CALL prt_ctl( tab3d_1=p_avm, clinfo1=' gls - m: ', ovlap=1, kdim=jpk ) 823 820 ENDIF 824 !825 IF( ln_timing ) CALL timing_stop('zdf_gls')826 821 ! 827 822 END SUBROUTINE zdf_gls … … 852 847 & nn_stab_func, nn_clos 853 848 !!---------------------------------------------------------- 854 !855 IF( ln_timing ) CALL timing_start('zdf_gls_init')856 849 ! 857 850 REWIND( numnam_ref ) ! Namelist namzdf_gls in reference namelist : Vertical eddy diffivity and viscosity using gls turbulent closure scheme … … 1129 1122 ! !* read or initialize all required files 1130 1123 CALL gls_rst( nit000, 'READ' ) ! (en, avt_k, avm_k, hmxl_n) 1131 !1132 IF( ln_timing ) CALL timing_stop('zdf_gls_init')1133 1124 ! 1134 1125 END SUBROUTINE zdf_gls_init -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfosm.F90
r9019 r9089 59 59 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 60 60 USE prtctl ! Print control 61 USE timing ! Timing62 61 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 63 62 … … 253 252 !!-------------------------------------------------------------------- 254 253 ! 255 IF( ln_timing) CALL timing_start('zdf_osm')254 IF( nn_timing == 1 ) CALL timing_start('zdf_osm') 256 255 ! 257 256 ALLOCATE( lconv(jpi,jpj), STAT= i_lconv_alloc ) … … 1352 1351 CALL lbc_lnk( p_avt(:,:,:), 'W', 1. ) 1353 1352 ! 1354 IF( ln_timing ) CALL timing_stop('zdf_osm')1355 !1356 1353 END SUBROUTINE zdf_osm 1357 1354 … … 1376 1373 & ,ln_kpprimix, rn_riinfty, rn_difri, ln_convmix, rn_difconv 1377 1374 !!---------------------------------------------------------------------- 1378 !1379 IF( ln_timing ) CALL timing_start('zdf_osm_init')1380 1375 ! 1381 1376 REWIND( numnam_ref ) ! Namelist namzdf_osm in reference namelist : Osmosis ML model … … 1503 1498 ghamu(:,:,:) = 0. 1504 1499 ghamv(:,:,:) = 0. 1505 1506 !1507 IF( ln_timing ) CALL timing_stop('zdf_osm_init')1508 1500 ! 1509 1501 END SUBROUTINE zdf_osm_init … … 1616 1608 INTEGER :: ji, jj, jk 1617 1609 ! 1618 IF( ln_timing ) CALL timing_start('tra_osm')1619 !1620 1610 IF( kt == nit000 ) THEN 1621 1611 IF(lwp) WRITE(numout,*) … … 1658 1648 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 1659 1649 ENDIF 1660 !1661 IF( ln_timing ) CALL timing_stop('tra_osm')1662 1650 ! 1663 1651 END SUBROUTINE tra_osm … … 1695 1683 !!---------------------------------------------------------------------- 1696 1684 ! 1697 IF( ln_timing ) CALL timing_start('dyn_osm')1698 !1699 1685 IF( kt == nit000 ) THEN 1700 1686 IF(lwp) WRITE(numout,*) … … 1716 1702 END DO 1717 1703 END DO 1718 1704 ! 1719 1705 ! code for saving tracer trends removed 1720 1706 ! 1721 IF( ln_timing ) CALL timing_stop('dyn_osm')1722 !1723 1707 END SUBROUTINE dyn_osm 1724 1708
Note: See TracChangeset
for help on using the changeset viewer.