Changeset 2528 for trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90
- Timestamp:
- 2010-12-27T18:33:53+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90
- Property svn:eol-style deleted
r2470 r2528 7 7 !! NEMO 1.0 ! 2002-06 (G. Madec) F90: Free form and module 8 8 !! 3.2 ! 2009-09 (A.C.Coward) Correction to include barotropic contribution 9 !! 3.3 ! 2010-10 (C. Ethe, G. Madec) reorganisation of initialisation phase 9 10 !!---------------------------------------------------------------------- 10 11 … … 12 13 !! zdf_bfr : update momentum Kz at the ocean bottom due to the type of bottom friction chosen 13 14 !! zdf_bfr_init : read in namelist and control the bottom friction parameters. 14 !! zdf_bfr_2d : read in namelist and control the bottom friction 15 !! parameters. 15 !! zdf_bfr_2d : read in namelist and control the bottom friction parameters. 16 16 !!---------------------------------------------------------------------- 17 17 USE oce ! ocean dynamics and tracers variables … … 26 26 PRIVATE 27 27 28 PUBLIC zdf_bfr ! called by step.F90 28 PUBLIC zdf_bfr ! called by step.F90 29 PUBLIC zdf_bfr_init ! called by opa.F90 29 30 30 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: bfrua , bfrva !: Bottom friction coefficients set in zdfbfr31 32 31 ! !!* Namelist nambfr: bottom friction namelist * 33 32 INTEGER :: nn_bfr = 0 ! = 0/1/2/3 type of bottom friction … … 35 34 REAL(wp) :: rn_bfri2 = 1.0e-3_wp ! bottom drag coefficient (non linear case) 36 35 REAL(wp) :: rn_bfeb2 = 2.5e-3_wp ! background bottom turbulent kinetic energy [m2/s2] 37 REAL(wp) :: rn_bfrien = 30 _wp! local factor to enhance coefficient bfri36 REAL(wp) :: rn_bfrien = 30._wp ! local factor to enhance coefficient bfri 38 37 LOGICAL :: ln_bfr2d = .false. ! logical switch for 2D enhancement 39 38 … … 41 40 42 41 !! * Substitutions 42 # include "vectopt_loop_substitute.h90" 43 43 # include "domzgr_substitute.h90" 44 44 !!---------------------------------------------------------------------- 45 !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009) 46 !! $Id$ 47 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 48 !!---------------------------------------------------------------------- 49 45 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 46 !! $Id$ 47 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 48 !!---------------------------------------------------------------------- 50 49 CONTAINS 51 50 … … 68 67 INTEGER, INTENT( in ) :: kt ! ocean time-step index 69 68 !! 70 INTEGER :: ji, jj ! dummy loop indices 71 INTEGER :: ikbu, ikbum1 ! temporary integers 72 INTEGER :: ikbv, ikbvm1 ! - - 69 INTEGER :: ji, jj ! dummy loop indices 70 INTEGER :: ikbu, ikbv ! local integers 73 71 REAL(wp) :: zvu, zuv, zecu, zecv ! temporary scalars 74 72 !!---------------------------------------------------------------------- 75 76 77 IF( kt == nit000 ) CALL zdf_bfr_init ! initialisation78 73 79 74 IF( nn_bfr == 2 ) THEN ! quadratic botton friction … … 93 88 DO ji = 2, jpim1 94 89 # endif 95 ikbu = MIN( mbathy(ji+1,jj ), mbathy(ji,jj) ) 96 ikbv = MIN( mbathy(ji ,jj+1), mbathy(ji,jj) ) 97 ikbum1 = MAX( ikbu-1, 1 ) 98 ikbvm1 = MAX( ikbv-1, 1 ) 90 ikbu = mbku(ji,jj) ! ocean bottom level at u- and v-points 91 ikbv = mbkv(ji,jj) ! (deepest ocean u- and v-points) 99 92 ! 100 zvu = 0.25 * ( vn(ji,jj ,ikbu m1) + vn(ji+1,jj ,ikbum1) &101 & + vn(ji,jj-1,ikbu m1) + vn(ji+1,jj-1,ikbum1) )102 zuv = 0.25 * ( un(ji,jj ,ikbv m1) + un(ji-1,jj ,ikbvm1) &103 & + un(ji,jj+1,ikbv m1) + un(ji-1,jj+1,ikbvm1) )93 zvu = 0.25 * ( vn(ji,jj ,ikbu) + vn(ji+1,jj ,ikbu) & 94 & + vn(ji,jj-1,ikbu) + vn(ji+1,jj-1,ikbu) ) 95 zuv = 0.25 * ( un(ji,jj ,ikbv) + un(ji-1,jj ,ikbv) & 96 & + un(ji,jj+1,ikbv) + un(ji-1,jj+1,ikbv) ) 104 97 ! 105 zecu = SQRT( un(ji,jj,ikbu m1) * un(ji,jj,ikbum1) + zvu*zvu + rn_bfeb2 )106 zecv = SQRT( vn(ji,jj,ikbv m1) * vn(ji,jj,ikbvm1) + zuv*zuv + rn_bfeb2 )98 zecu = SQRT( un(ji,jj,ikbu) * un(ji,jj,ikbu) + zvu*zvu + rn_bfeb2 ) 99 zecv = SQRT( vn(ji,jj,ikbv) * vn(ji,jj,ikbv) + zuv*zuv + rn_bfeb2 ) 107 100 ! 108 bfrua(ji,jj) = - 0.5 * ( bfrcoef2d(ji,jj) + bfrcoef2d(ji+1,jj ) ) * zecu109 bfrva(ji,jj) = - 0.5 * ( bfrcoef2d(ji,jj) + bfrcoef2d(ji ,jj+1) ) * zecv101 bfrua(ji,jj) = - 0.5_wp * ( bfrcoef2d(ji,jj) + bfrcoef2d(ji+1,jj ) ) * zecu 102 bfrva(ji,jj) = - 0.5_wp * ( bfrcoef2d(ji,jj) + bfrcoef2d(ji ,jj+1) ) * zecv 110 103 END DO 111 104 END DO … … 131 124 USE iom ! I/O module for ehanced bottom friction file 132 125 !! 133 INTEGER :: inum 134 INTEGER :: ji, jj 135 INTEGER :: ikbu, ikbv , ikbum1, ikbvm1! temporary integers136 INTEGER :: ictu, ictv 137 REAL(wp) :: zminbfr, zmaxbfr 138 REAL(wp) :: zfru, zfrv 126 INTEGER :: inum ! logical unit for enhanced bottom friction file 127 INTEGER :: ji, jj ! dummy loop indexes 128 INTEGER :: ikbu, ikbv ! temporary integers 129 INTEGER :: ictu, ictv ! - - 130 REAL(wp) :: zminbfr, zmaxbfr ! temporary scalars 131 REAL(wp) :: zfru, zfrv ! - - 139 132 !! 140 133 NAMELIST/nambfr/ nn_bfr, rn_bfri1, rn_bfri2, rn_bfeb2, ln_bfr2d, rn_bfrien … … 218 211 DO ji = 2, jpim1 219 212 # endif 220 ikbu = MIN( mbathy(ji+1,jj ), mbathy(ji,jj) ) 221 ikbv = MIN( mbathy(ji ,jj+1), mbathy(ji,jj) ) 222 ikbum1 = MAX( ikbu-1, 1 ) 223 ikbvm1 = MAX( ikbv-1, 1 ) 224 zfru = 0.5 * fse3u(ji,jj,ikbum1) / rdt 225 zfrv = 0.5 * fse3v(ji,jj,ikbvm1) / rdt 213 ikbu = mbku(ji,jj) ! deepest ocean level at u- and v-points 214 ikbv = mbkv(ji,jj) 215 zfru = 0.5 * fse3u(ji,jj,ikbu) / rdt 216 zfrv = 0.5 * fse3v(ji,jj,ikbv) / rdt 226 217 IF( ABS( bfrcoef2d(ji,jj) ) > zfru ) THEN 227 218 IF( ln_ctl ) THEN 228 WRITE(numout,*) 'BFR ', narea,nimpp+ji,njmpp+jj,ikbu229 WRITE(numout,*) 'BFR ', ABS( bfrcoef2d(ji,jj) ), zfru219 WRITE(numout,*) 'BFR ', narea, nimpp+ji, njmpp+jj, ikbu 220 WRITE(numout,*) 'BFR ', ABS( bfrcoef2d(ji,jj) ), zfru 230 221 ENDIF 231 222 ictu = ictu + 1 … … 248 239 CALL mpp_max( zmaxbfr ) 249 240 ENDIF 250 IF( lwp .AND. ictu + ictv .GT.0 ) THEN241 IF( lwp .AND. ictu + ictv > 0 ) THEN 251 242 WRITE(numout,*) ' Bottom friction stability check failed at ', ictu, ' U-points ' 252 243 WRITE(numout,*) ' Bottom friction stability check failed at ', ictv, ' V-points '
Note: See TracChangeset
for help on using the changeset viewer.