Changeset 2528 for trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynbfr.F90
- Timestamp:
- 2010-12-27T18:33:53+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynbfr.F90
- Property svn:keywords set to Id
r2470 r2528 4 4 !! Ocean dynamics : bottom friction component of the momentum mixing trend 5 5 !!============================================================================== 6 !! History : 9.0 !2008-11 (A. C. Coward) Original code6 !! History : 3.2 ! 2008-11 (A. C. Coward) Original code 7 7 !!---------------------------------------------------------------------- 8 8 … … 13 13 USE dom_oce ! ocean space and time domain variables 14 14 USE zdf_oce ! ocean vertical physics variables 15 USE zdfbfr ! bottom friction16 15 17 16 USE trdmod ! ocean active dynamics and tracers trends … … 30 29 # include "vectopt_loop_substitute.h90" 31 30 !!---------------------------------------------------------------------- 32 !! NEMO/OPA 3. 2 , LOCEAN-IPSL (2009)33 !! $Id : dynzdf.F90 1152 2008-06-26 14:11:13Z rblod$34 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)31 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 32 !! $Id$ 33 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 35 34 !!---------------------------------------------------------------------- 36 37 35 CONTAINS 38 36 … … 45 43 !! ** Action : (ua,va) momentum trend increased by bottom friction trend 46 44 !!--------------------------------------------------------------------- 47 USE oce, ONLY : ztrdu => ta ! use ta as 3D workspace 48 USE oce, ONLY : ztrdv => sa ! use sa as 3D workspace 45 USE oce, ONLY : ztrduv => tsa ! use tsa as 4D workspace 49 46 !! 50 47 INTEGER, INTENT(in) :: kt ! ocean time-step index 51 48 !! 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 49 INTEGER :: ji, jj ! dummy loop indexes 50 INTEGER :: ikbu, ikbv ! local integers 51 REAL(wp) :: zm1_2dt ! local scalar 56 52 !!--------------------------------------------------------------------- 57 53 ! 58 z inv = -1. / ( 2.*rdt )54 zm1_2dt = - 1._wp / ( 2._wp * rdt ) 59 55 60 56 IF( l_trddyn ) THEN ! temporary save of ua and va trends 61 ztrdu (:,:,:) = ua(:,:,:)62 ztrd v(:,:,:) = va(:,:,:)57 ztrduv(:,:,:,1) = ua(:,:,:) 58 ztrduv(:,:,:,2) = va(:,:,:) 63 59 ENDIF 64 60 … … 70 66 DO ji = 2, jpim1 71 67 # endif 72 ikbu = MIN( mbathy(ji+1,jj), mbathy(ji,jj) ) 73 ikbv = MIN( mbathy(ji,jj+1), mbathy(ji,jj) ) 74 ikbum1 = MAX( ikbu-1, 1 ) 75 ikbvm1 = MAX( ikbv-1, 1 ) 68 ikbu = mbku(ji,jj) ! deepest ocean u- & v-levels 69 ikbv = mbkv(ji,jj) 76 70 ! 77 ! Apply stability criteria on absolute value : Min abs(bfr) => Max (bfr) 78 zbfru = MAX( bfrua(ji,jj), fse3u(ji,jj,ikbum1)*zinv ) 79 zbfrv = MAX( bfrva(ji,jj), fse3v(ji,jj,ikbvm1)*zinv ) 80 ! 81 ua(ji,jj,ikbum1) = ua(ji,jj,ikbum1) + zbfru * ub(ji,jj,ikbum1) / fse3u(ji,jj,ikbum1) 82 va(ji,jj,ikbvm1) = va(ji,jj,ikbvm1) + zbfrv * vb(ji,jj,ikbvm1) / fse3v(ji,jj,ikbvm1) 83 ! 71 ! Apply stability criteria on absolute value : abs(bfr/e3) < 1/(2dt) => bfr/e3 > -1/(2dt) 72 ua(ji,jj,ikbu) = ua(ji,jj,ikbu) + MAX( bfrua(ji,jj) / fse3u(ji,jj,ikbu) , zm1_2dt ) * ub(ji,jj,ikbu) 73 va(ji,jj,ikbv) = va(ji,jj,ikbv) + MAX( bfrua(ji,jj) / fse3v(ji,jj,ikbu) , zm1_2dt ) * vb(ji,jj,ikbv) 84 74 END DO 85 75 END DO … … 87 77 ! 88 78 IF( l_trddyn ) THEN ! save the vertical diffusive trends for further diagnostics 89 ztrdu (:,:,:) = ua(:,:,:) - ztrdu(:,:,:)90 ztrd v(:,:,:) = va(:,:,:) - ztrdv(:,:,:)91 CALL trd_mod( ztrdu , ztrdv, jpdyn_trd_bfr, 'DYN', kt )79 ztrduv(:,:,:,1) = ua(:,:,:) - ztrduv(:,:,:,1) 80 ztrduv(:,:,:,2) = va(:,:,:) - ztrduv(:,:,:,2) 81 CALL trd_mod( ztrduv(:,:,:,1), ztrduv(:,:,:,2), jpdyn_trd_bfr, 'DYN', kt ) 92 82 ENDIF 93 83 ! ! print mean trends (used for debugging)
Note: See TracChangeset
for help on using the changeset viewer.