Changeset 14102 for NEMO/branches/UKMO/NEMO_4.0.3_icb_speed_limit/src
- Timestamp:
- 2020-12-04T16:40:56+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.3_icb_speed_limit/src/OCE/ICB/icbdyn.F90
r13587 r14102 47 47 REAL(wp) :: zuvel4 , zvvel4 , zu4, zv4, zax4, zay4, zxi4 , zyj4 48 48 REAL(wp) :: zuvel_n, zvvel_n, zxi_n , zyj_n 49 REAL(wp) :: zspeed, zspeed_new, zloc_dx 49 50 REAL(wp) :: zdt, zdt_2, zdt_6, ze1, ze2 50 51 TYPE(iceberg), POINTER :: berg … … 150 151 CALL icb_ground( zxi_n, zxi1, zuvel_n, & 151 152 & zyj_n, zyj1, zvvel_n, ll_bounced ) 153 154 IF( rn_speed_limit > 0._wp ) THEN ! Limit speed of bergs based on a CFL criteria (if asked) 155 zspeed = SQRT( zuvel_n*zuvel_n + zvvel_n*zvvel_n ) ! Speed of berg 156 IF( zspeed > 0._wp ) THEN 157 zloc_dx = MIN( ze1, ze2 ) ! minimum grid spacing 158 zspeed_new = zloc_dx / zdt * rn_speed_limit ! Speed limit as a factor of dx / dt 159 IF( zspeed_new < zspeed ) THEN 160 zuvel_n = zuvel_n * ( zspeed_new / zspeed ) ! Scale velocity to reduce speed 161 zvvel_n = zvvel_n * ( zspeed_new / zspeed ) ! without changing the direction 162 CALL icb_dia_speed() 163 ENDIF 164 ENDIF 165 ENDIF 152 166 153 167 pt%uvel = zuvel_n !** save in berg structure … … 265 279 REAL(wp) :: zampl, zwmod, zCr, zLwavelength, zLcutoff, zLtop 266 280 REAL(wp) :: zlambda, zdetA, zA11, zA12, zaxe, zaye, zD_hi 267 REAL(wp) :: zuveln, zvveln, zus, zvs , zspeed, zloc_dx, zspeed_new281 REAL(wp) :: zuveln, zvveln, zus, zvs 268 282 !!---------------------------------------------------------------------- 269 283 … … 357 371 ! 358 372 END DO ! itloop 359 360 IF( rn_speed_limit > 0._wp ) THEN ! Limit speed of bergs based on a CFL criteria (if asked)361 zspeed = SQRT( zuveln*zuveln + zvveln*zvveln ) ! Speed of berg362 IF( zspeed > 0._wp ) THEN363 zloc_dx = MIN( pe1, pe2 ) ! minimum grid spacing364 zspeed_new = zloc_dx / pdt * rn_speed_limit ! Speed limit as a factor of dx / dt365 IF( zspeed_new < zspeed ) THEN366 zuveln = zuveln * ( zspeed_new / zspeed ) ! Scale velocity to reduce speed367 zvveln = zvveln * ( zspeed_new / zspeed ) ! without changing the direction368 CALL icb_dia_speed()369 ENDIF370 ENDIF371 ENDIF372 373 ! ! check the speed and acceleration limits 373 374 IF (nn_verbose_level > 0) THEN 374 375 IF( ABS( zuveln ) > pp_vel_lim .OR. ABS( zvveln ) > pp_vel_lim ) & 375 WRITE(numicb,'("pe=",i3,x,a)') narea,'Dump triggered by excessive velocity'376 WRITE(numicb,'("pe=",i3,x,a)') narea,'Dump triggered by excessive velocity' 376 377 IF( ABS( pax ) > pp_accel_lim .OR. ABS( pay ) > pp_accel_lim ) & 377 WRITE(numicb,'("pe=",i3,x,a)') narea,'Dump triggered by excessive acceleration'378 WRITE(numicb,'("pe=",i3,x,a)') narea,'Dump triggered by excessive acceleration' 378 379 ENDIF 379 380 !
Note: See TracChangeset
for help on using the changeset viewer.