Changeset 13710 for NEMO/branches/2020/dev_r12702_ASINTER-02_emanuelaclementi_Waves/src/OCE/ZDF/zdfdrg.F90
- Timestamp:
- 2020-11-02T10:56:42+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_r12702_ASINTER-02_emanuelaclementi_Waves
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12702_ASINTER-02_emanuelaclementi_Waves
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 8 9 9 # SETTE 10 ^/utils/CI/sette@ HEADsette10 ^/utils/CI/sette@13559 sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_r12702_ASINTER-02_emanuelaclementi_Waves/src/OCE/ZDF/zdfdrg.F90
r12489 r13710 32 32 USE lib_mpp ! distributed memory computing 33 33 USE prtctl ! Print control 34 USE sbc_oce , ONLY : nn_ice 34 35 35 36 IMPLICIT NONE … … 41 42 42 43 ! !!* Namelist namdrg: nature of drag coefficient namelist * 43 LOGICAL :: ln_OFF! free-slip : Cd = 044 LOGICAL , PUBLIC :: ln_drg_OFF ! free-slip : Cd = 0 44 45 LOGICAL :: ln_lin ! linear drag: Cd = Cd0_lin 45 46 LOGICAL :: ln_non_lin ! non-linear drag: Cd = Cd0_nl |U| 46 47 LOGICAL :: ln_loglayer ! logarithmic drag: Cd = vkarmn/log(z/z0) 47 48 LOGICAL , PUBLIC :: ln_drgimp ! implicit top/bottom friction flag 48 49 LOGICAL , PUBLIC :: ln_drgice_imp ! implicit ice-ocean drag 49 50 ! !!* Namelist namdrg_top & _bot: TOP or BOTTOM coefficient namelist * 50 51 REAL(wp) :: rn_Cd0 !: drag coefficient [ - ] … … 74 75 !! * Substitutions 75 76 # include "do_loop_substitute.h90" 77 # include "domzgr_substitute.h90" 76 78 !!---------------------------------------------------------------------- 77 79 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 115 117 ! 116 118 IF( l_log_not_linssh ) THEN !== "log layer" ==! compute Cd and -Cd*|U| 117 DO_2D _00_00119 DO_2D( 0, 0, 0, 0 ) 118 120 imk = k_mk(ji,jj) ! ocean bottom level at t-points 119 121 zut = uu(ji,jj,imk,Kmm) + uu(ji-1,jj,imk,Kmm) ! 2 x velocity at t-point … … 127 129 END_2D 128 130 ELSE !== standard Cd ==! 129 DO_2D _00_00131 DO_2D( 0, 0, 0, 0 ) 130 132 imk = k_mk(ji,jj) ! ocean bottom level at t-points 131 133 zut = uu(ji,jj,imk,Kmm) + uu(ji-1,jj,imk,Kmm) ! 2 x velocity at t-point … … 174 176 ENDIF 175 177 176 DO_2D _00_00178 DO_2D( 0, 0, 0, 0 ) 177 179 ikbu = mbku(ji,jj) ! deepest wet ocean u- & v-levels 178 180 ikbv = mbkv(ji,jj) … … 187 189 ! 188 190 IF( ln_isfcav ) THEN ! ocean cavities 189 DO_2D _00_00191 DO_2D( 0, 0, 0, 0 ) 190 192 ikbu = miku(ji,jj) ! first wet ocean u- & v-levels 191 193 ikbv = mikv(ji,jj) … … 225 227 INTEGER :: ios, ioptio ! local integers 226 228 !! 227 NAMELIST/namdrg/ ln_ OFF, ln_lin, ln_non_lin, ln_loglayer, ln_drgimp229 NAMELIST/namdrg/ ln_drg_OFF, ln_lin, ln_non_lin, ln_loglayer, ln_drgimp, ln_drgice_imp 228 230 !!---------------------------------------------------------------------- 229 231 ! … … 236 238 IF(lwm) WRITE ( numond, namdrg ) 237 239 ! 240 IF ( ln_drgice_imp .AND. nn_ice /= 2 ) ln_drgice_imp = .FALSE. 241 ! 238 242 IF(lwp) THEN 239 243 WRITE(numout,*) … … 241 245 WRITE(numout,*) '~~~~~~~~~~~~' 242 246 WRITE(numout,*) ' Namelist namdrg : top/bottom friction choices' 243 WRITE(numout,*) ' free-slip : Cd = 0 ln_ OFF = ', ln_OFF247 WRITE(numout,*) ' free-slip : Cd = 0 ln_drg_OFF = ', ln_drg_OFF 244 248 WRITE(numout,*) ' linear drag : Cd = Cd0 ln_lin = ', ln_lin 245 249 WRITE(numout,*) ' non-linear drag: Cd = Cd0_nl |U| ln_non_lin = ', ln_non_lin 246 250 WRITE(numout,*) ' logarithmic drag: Cd = vkarmn/log(z/z0) ln_loglayer = ', ln_loglayer 247 251 WRITE(numout,*) ' implicit friction ln_drgimp = ', ln_drgimp 252 WRITE(numout,*) ' implicit ice-ocean drag ln_drgice_imp =', ln_drgice_imp 248 253 ENDIF 249 254 ! 250 255 ioptio = 0 ! set ndrg and control check 251 IF( ln_ OFF) THEN ; ndrg = np_OFF ; ioptio = ioptio + 1 ; ENDIF256 IF( ln_drg_OFF ) THEN ; ndrg = np_OFF ; ioptio = ioptio + 1 ; ENDIF 252 257 IF( ln_lin ) THEN ; ndrg = np_lin ; ioptio = ioptio + 1 ; ENDIF 253 258 IF( ln_non_lin ) THEN ; ndrg = np_non_lin ; ioptio = ioptio + 1 ; ENDIF … … 256 261 IF( ioptio /= 1 ) CALL ctl_stop( 'zdf_drg_init: Choose ONE type of drag coef in namdrg' ) 257 262 ! 263 IF ( ln_drgice_imp.AND.(.NOT.ln_drgimp) ) & 264 & CALL ctl_stop( 'zdf_drg_init: ln_drgice_imp=T requires ln_drgimp=T' ) 258 265 ! 259 266 ! !== BOTTOM drag setting ==! (applied at seafloor) … … 262 269 CALL drg_init( 'BOTTOM' , mbkt , & ! <== in 263 270 & r_Cdmin_bot, r_Cdmax_bot, r_z0_bot, r_ke0_bot, rCd0_bot, rCdU_bot ) ! ==> out 264 265 271 ! 266 272 ! !== TOP drag setting ==! (applied at the top of ocean cavities) 267 273 ! 268 IF( ln_isfcav ) THEN ! Ocean cavities: top friction setting 269 ALLOCATE( rCd0_top(jpi,jpj), rCdU_top(jpi,jpj) ) 274 IF( ln_isfcav.OR.ln_drgice_imp ) THEN ! Ocean cavities: top friction setting 275 ALLOCATE( rCdU_top(jpi,jpj) ) 276 ENDIF 277 ! 278 IF( ln_isfcav ) THEN 279 ALLOCATE( rCd0_top(jpi,jpj)) 270 280 CALL drg_init( 'TOP ' , mikt , & ! <== in 271 281 & r_Cdmin_top, r_Cdmax_top, r_z0_top, r_ke0_top, rCd0_top, rCdU_top ) ! ==> out … … 362 372 ! cl_varname is a coefficient in [0,1] giving where to apply the regional boost 363 373 CALL iom_open ( TRIM(cl_file), inum ) 364 CALL iom_get ( inum, jpdom_ data, TRIM(cl_varname), zmsk_boost, 1 )374 CALL iom_get ( inum, jpdom_global, TRIM(cl_varname), zmsk_boost, 1 ) 365 375 CALL iom_close( inum) 366 376 zmsk_boost(:,:) = 1._wp + rn_boost * zmsk_boost(:,:) … … 373 383 IF(ll_bot) zmsk_boost(:,:) = zmsk_boost(:,:) * ssmask(:,:) ! x seafloor mask 374 384 ! 385 l_log_not_linssh = .FALSE. ! default definition 375 386 ! 376 387 SELECT CASE( ndrg ) … … 421 432 l_log_not_linssh = .FALSE. !- don't update Cd at each time step 422 433 ! 423 DO_2D _11_11434 DO_2D( 1, 1, 1, 1 ) ! pCd0 = mask (and boosted) logarithmic drag coef. 424 435 zzz = 0.5_wp * e3t_0(ji,jj,k_mk(ji,jj)) 425 436 zcd = ( vkarmn / LOG( zzz / rn_z0 ) )**2
Note: See TracChangeset
for help on using the changeset viewer.