Changeset 1708 for trunk/NEMO/OPA_SRC/DYN/dynbfr.F90
- Timestamp:
- 2009-11-04T14:24:34+01:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DYN/dynbfr.F90
r1671 r1708 4 4 !! Ocean dynamics : bottom friction component of the momentum mixing trend 5 5 !!============================================================================== 6 !! History : 9.0 ! 08-11 (A. C. Coward) Original code6 !! History : 9.0 ! 2008-11 (A. C. Coward) Original code 7 7 !!---------------------------------------------------------------------- 8 8 … … 45 45 !! ** Action : (ua,va) momentum trend increased by bottom friction trend 46 46 !!--------------------------------------------------------------------- 47 USE oce, ONLY : ztrdu => ta ! use ta as 3D workspace 48 USE oce, ONLY : ztrdv => sa ! use sa as 3D workspace 49 !! 47 50 INTEGER, INTENT(in) :: kt ! ocean time-step index 48 51 !! 49 INTEGER :: ji, jj ! dummy loop indexes 50 INTEGER :: ikbu, ikbv ! temporary integers 51 INTEGER :: ikbum1, ikbvm1 52 !! + Enforce stability 53 ! REAL(wp):: frdt ! temporary real 54 !! - Enforce stability 55 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztrdu, ztrdv ! 3D workspace 52 INTEGER :: ji, jj ! dummy loop indexes 53 INTEGER :: ikbu , ikbv ! temporary integers 54 INTEGER :: ikbum1, ikbvm1 ! - - 55 REAL(wp) :: zinv, zbfru, zbfrv ! temporary scalar 56 56 !!--------------------------------------------------------------------- 57 57 ! 58 !! + Enforce stability 59 ! frdt = 0.125/rdt 60 !! - Enforce stability 61 IF( l_trddyn ) THEN ! temporary save of ta and sa trends 58 zinv = -1. / ( 2.*rdt ) 59 60 IF( l_trddyn ) THEN ! temporary save of ua and va trends 62 61 ztrdu(:,:,:) = ua(:,:,:) 63 62 ztrdv(:,:,:) = va(:,:,:) 64 63 ENDIF 64 65 65 # if defined key_vectopt_loop 66 66 DO jj = 1, 1 … … 75 75 ikbvm1 = MAX( ikbv-1, 1 ) 76 76 ! 77 !! + Enforce stability78 77 ! Apply stability criteria 79 ! bfrua(ji,jj) = MIN(bfrua(ji,jj), fse3u(ji,jj,ikbu)*frdt)80 ! bfrva(ji,jj) = MIN(bfrva(ji,jj), fse3v(ji,jj,ikbv)*frdt)78 zbfru = MAX( bfrua(ji,jj), fse3u(ji,jj,ikbu)*zinv ) 79 zbfrv = MAX( bfrva(ji,jj), fse3v(ji,jj,ikbv)*zinv ) 81 80 ! 82 !! - Enforce stability 83 ua(ji,jj,ikbum1) = ua(ji,jj,ikbum1) + bfrua(ji,jj) * ub(ji,jj,ikbum1) / fse3u(ji,jj,ikbu)84 va(ji,jj,ikbvm1) = va(ji,jj,ikbvm1) + bfrva(ji,jj) * vb(ji,jj,ikbvm1) / fse3v(ji,jj,ikbu)81 ua(ji,jj,ikbum1) = ua(ji,jj,ikbum1) + zbfru * ub(ji,jj,ikbum1) / fse3u(ji,jj,ikbu) 82 va(ji,jj,ikbvm1) = va(ji,jj,ikbvm1) + zbfrv * vb(ji,jj,ikbvm1) / fse3v(ji,jj,ikbv) 83 ! 85 84 END DO 86 85 END DO 86 87 87 ! 88 88 IF( l_trddyn ) THEN ! save the vertical diffusive trends for further diagnostics
Note: See TracChangeset
for help on using the changeset viewer.