- Timestamp:
- 2020-09-15T12:49:18+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/temporary_r4_trunk/src/OCE/SBC/sbcblk_algo_ncar.F90
r13466 r13469 214 214 !!---------------------------------------------------------------------------------- 215 215 ! 216 DO jj = 1, jpj 217 DO ji = 1, jpi 218 ! 219 zw = pw10(ji,jj) 220 zw6 = zw*zw*zw 221 zw6 = zw6*zw6 222 ! 223 ! When wind speed > 33 m/s => Cyclone conditions => special treatment 224 zgt33 = 0.5_wp + SIGN( 0.5_wp, (zw - 33._wp) ) ! If pw10 < 33. => 0, else => 1 225 ! 226 CD_N10_NCAR(ji,jj) = 1.e-3_wp * ( & 227 & (1._wp - zgt33)*( 2.7_wp/zw + 0.142_wp + zw/13.09_wp - 3.14807E-10_wp*zw6) & ! wind < 33 m/s 228 & + zgt33 * 2.34_wp ) ! wind >= 33 m/s 229 ! 230 CD_N10_NCAR(ji,jj) = MAX( CD_N10_NCAR(ji,jj), 0.1E-3_wp ) 231 ! 232 END DO 233 END DO 216 DO_2D_11_11 217 ! 218 zw = pw10(ji,jj) 219 zw6 = zw*zw*zw 220 zw6 = zw6*zw6 221 ! 222 ! When wind speed > 33 m/s => Cyclone conditions => special treatment 223 zgt33 = 0.5_wp + SIGN( 0.5_wp, (zw - 33._wp) ) ! If pw10 < 33. => 0, else => 1 224 ! 225 CD_N10_NCAR(ji,jj) = 1.e-3_wp * ( & 226 & (1._wp - zgt33)*( 2.7_wp/zw + 0.142_wp + zw/13.09_wp - 3.14807E-10_wp*zw6) & ! wind < 33 m/s 227 & + zgt33 * 2.34_wp ) ! wind >= 33 m/s 228 ! 229 CD_N10_NCAR(ji,jj) = MAX( CD_N10_NCAR(ji,jj), 0.1E-3_wp ) 230 ! 231 END_2D 234 232 ! 235 233 END FUNCTION CD_N10_NCAR … … 281 279 REAL(wp) :: zzeta, zx2, zx, zpsi_unst, zpsi_stab, zstab ! local scalars 282 280 !!---------------------------------------------------------------------------------- 283 DO jj = 1, jpj 284 DO ji = 1, jpi 285 286 zzeta = pzeta(ji,jj) 287 ! 288 zx2 = SQRT( ABS(1._wp - 16._wp*zzeta) ) ! (1 - 16z)^0.5 289 zx2 = MAX( zx2 , 1._wp ) 290 zx = SQRT(zx2) ! (1 - 16z)^0.25 291 zpsi_unst = 2._wp*LOG( (1._wp + zx )*0.5_wp ) & 292 & + LOG( (1._wp + zx2)*0.5_wp ) & 293 & - 2._wp*ATAN(zx) + rpi*0.5_wp 294 ! 295 zpsi_stab = -5._wp*zzeta 296 ! 297 zstab = 0.5_wp + SIGN(0.5_wp, zzeta) ! zzeta > 0 => zstab = 1 298 ! 299 psi_m_ncar(ji,jj) = zstab * zpsi_stab & ! (zzeta > 0) Stable 300 & + (1._wp - zstab) * zpsi_unst ! (zzeta < 0) Unstable 301 ! 302 END DO 303 END DO 281 DO_2D_11_11 282 283 zzeta = pzeta(ji,jj) 284 ! 285 zx2 = SQRT( ABS(1._wp - 16._wp*zzeta) ) ! (1 - 16z)^0.5 286 zx2 = MAX( zx2 , 1._wp ) 287 zx = SQRT(zx2) ! (1 - 16z)^0.25 288 zpsi_unst = 2._wp*LOG( (1._wp + zx )*0.5_wp ) & 289 & + LOG( (1._wp + zx2)*0.5_wp ) & 290 & - 2._wp*ATAN(zx) + rpi*0.5_wp 291 ! 292 zpsi_stab = -5._wp*zzeta 293 ! 294 zstab = 0.5_wp + SIGN(0.5_wp, zzeta) ! zzeta > 0 => zstab = 1 295 ! 296 psi_m_ncar(ji,jj) = zstab * zpsi_stab & ! (zzeta > 0) Stable 297 & + (1._wp - zstab) * zpsi_unst ! (zzeta < 0) Unstable 298 ! 299 END_2D 304 300 END FUNCTION psi_m_ncar 305 301 … … 322 318 !!---------------------------------------------------------------------------------- 323 319 ! 324 DO jj = 1, jpj 325 DO ji = 1, jpi 326 ! 327 zzeta = pzeta(ji,jj) 328 ! 329 zx2 = SQRT( ABS(1._wp - 16._wp*zzeta) ) ! (1 -16z)^0.5 330 zx2 = MAX( zx2 , 1._wp ) 331 zpsi_unst = 2._wp*LOG( 0.5_wp*(1._wp + zx2) ) 332 ! 333 zpsi_stab = -5._wp*zzeta 334 ! 335 zstab = 0.5_wp + SIGN(0.5_wp, zzeta) ! zzeta > 0 => zstab = 1 336 ! 337 psi_h_ncar(ji,jj) = zstab * zpsi_stab & ! (zzeta > 0) Stable 338 & + (1._wp - zstab) * zpsi_unst ! (zzeta < 0) Unstable 339 ! 340 END DO 341 END DO 320 DO_2D_11_11 321 ! 322 zzeta = pzeta(ji,jj) 323 ! 324 zx2 = SQRT( ABS(1._wp - 16._wp*zzeta) ) ! (1 -16z)^0.5 325 zx2 = MAX( zx2 , 1._wp ) 326 zpsi_unst = 2._wp*LOG( 0.5_wp*(1._wp + zx2) ) 327 ! 328 zpsi_stab = -5._wp*zzeta 329 ! 330 zstab = 0.5_wp + SIGN(0.5_wp, zzeta) ! zzeta > 0 => zstab = 1 331 ! 332 psi_h_ncar(ji,jj) = zstab * zpsi_stab & ! (zzeta > 0) Stable 333 & + (1._wp - zstab) * zpsi_unst ! (zzeta < 0) Unstable 334 ! 335 END_2D 342 336 END FUNCTION psi_h_ncar 343 337 … … 382 376 !!------------------------------------------------------------------- 383 377 ! 384 DO jj = 1, jpj 385 DO ji = 1, jpi 386 ! 387 zqa = (1._wp + rctv0*pqa(ji,jj)) 388 ! 389 ! The main concern is to know whether, the vertical turbulent flux of virtual temperature, < u' theta_v' > is estimated with: 390 ! a/ -u* [ theta* (1 + 0.61 q) + 0.61 theta q* ] => this is the one that seems correct! chose this one! 391 ! or 392 ! b/ -u* [ theta* + 0.61 theta q* ] 393 ! 394 One_on_L(ji,jj) = grav*vkarmn*( pts(ji,jj)*zqa + rctv0*ptha(ji,jj)*pqs(ji,jj) ) & 395 & / MAX( pus(ji,jj)*pus(ji,jj)*ptha(ji,jj)*zqa , 1.E-9_wp ) 396 ! 397 END DO 398 END DO 378 DO_2D_11_11 379 ! 380 zqa = (1._wp + rctv0*pqa(ji,jj)) 381 ! 382 ! The main concern is to know whether, the vertical turbulent flux of virtual temperature, < u' theta_v' > is estimated with: 383 ! a/ -u* [ theta* (1 + 0.61 q) + 0.61 theta q* ] => this is the one that seems correct! chose this one! 384 ! or 385 ! b/ -u* [ theta* + 0.61 theta q* ] 386 ! 387 One_on_L(ji,jj) = grav*vkarmn*( pts(ji,jj)*zqa + rctv0*ptha(ji,jj)*pqs(ji,jj) ) & 388 & / MAX( pus(ji,jj)*pus(ji,jj)*ptha(ji,jj)*zqa , 1.E-9_wp ) 389 ! 390 END_2D 399 391 ! 400 392 One_on_L = SIGN( MIN(ABS(One_on_L),200._wp), One_on_L ) ! (prevent FPE from stupid values over masked regions...)
Note: See TracChangeset
for help on using the changeset viewer.