Changeset 642 for trunk/NEMO/OPA_SRC/DYN
- Timestamp:
- 2007-03-15T12:17:58+01:00 (17 years ago)
- Location:
- trunk/NEMO/OPA_SRC/DYN
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DYN/dynnxt.F90
r592 r642 73 73 INTEGER :: ji, jj, jk ! dummy loop indices 74 74 REAL(wp) :: z2dt ! temporary scalar 75 REAL(wp) :: zsshun1, zsshvn1 ! temporary scalar 75 76 !! Variable volume 76 REAL(wp) :: zsshun, zsshvn ! temporary scalars77 REAL(wp), DIMENSION(jpi,jpj) ::&78 zssh ub, zsshua, zsshvb, zsshva ! 2D workspace77 REAL(wp), DIMENSION(jpi,jpj) :: & ! 2D workspace 78 zsshub, zsshun, zsshua, & 79 zsshvb, zsshvn, zsshva 79 80 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 80 81 zfse3ub, zfse3un, zfse3ua, & ! 3D workspace … … 134 135 ! Scale factors at before and after time step 135 136 ! ------------------------------------------- 136 DO jk = 1, jpkm1 137 zfse3ub(:,:,jk) = fsve3u(:,:,jk) * ( 1 + zsshub(:,:) * muu(:,:,jk) ) 138 zfse3ua(:,:,jk) = fsve3u(:,:,jk) * ( 1 + zsshua(:,:) * muu(:,:,jk) ) 139 zfse3vb(:,:,jk) = fsve3v(:,:,jk) * ( 1 + zsshvb(:,:) * muv(:,:,jk) ) 140 zfse3va(:,:,jk) = fsve3v(:,:,jk) * ( 1 + zsshva(:,:) * muv(:,:,jk) ) 141 END DO 137 zfse3ub(:,:,:) = sfe3( zsshub, 'U' ) ; zfse3ua(:,:,:) = sfe3( zsshua, 'U' ) 138 zfse3vb(:,:,:) = sfe3( zsshvb, 'V' ) ; zfse3va(:,:,:) = sfe3( zsshva, 'V' ) 142 139 143 140 ! Asselin filtered scale factor at now time step 144 141 ! ---------------------------------------------- 145 142 IF( (neuler == 0 .AND. kt == nit000) .OR. lk_dynspg_ts ) THEN 146 zfse3un(:,:,:) = fse3u(:,:,:)147 zfse3vn(:,:,:) = fse3v(:,:,:)143 zfse3un(:,:,:) = sfe3ini( 'U' ) 144 zfse3vn(:,:,:) = sfe3ini( 'V' ) 148 145 ELSE 149 DO jk = 1, jpkm1 150 DO jj = 1, jpj 151 DO ji = 1, jpi 152 zsshun = atfp * ( zsshub(ji,jj) + zsshua(ji,jj) ) + atfp1 * sshu(ji,jj) 153 zsshvn = atfp * ( zsshvb(ji,jj) + zsshva(ji,jj) ) + atfp1 * sshv(ji,jj) 154 zfse3un(ji,jj,jk) = fsve3u(ji,jj,jk) * ( 1 + zsshun * muu(ji,jj,jk) ) 155 zfse3vn(ji,jj,jk) = fsve3v(ji,jj,jk) * ( 1 + zsshvn * muv(ji,jj,jk) ) 156 END DO 157 END DO 158 END DO 146 zsshun(:,:) = atfp * ( zsshub(:,:) + zsshua(:,:) ) + atfp1 * sshu(:,:) 147 zsshvn(:,:) = atfp * ( zsshvb(:,:) + zsshva(:,:) ) + atfp1 * sshv(:,:) 148 zfse3un(:,:,:) = sfe3( zsshun, 'U' ) ; zfse3vn(:,:,:) = sfe3( zsshvn, 'V' ) 159 149 ENDIF 160 150 161 151 ! Thickness weighting 162 152 ! ------------------- 163 ua(:,:,1:jpkm1) = ua(:,:,1:jpkm1) * fse3u (:,:,1:jpkm1) 164 va(:,:,1:jpkm1) = va(:,:,1:jpkm1) * fse3v (:,:,1:jpkm1) 165 166 un(:,:,1:jpkm1) = un(:,:,1:jpkm1) * fse3u (:,:,1:jpkm1) 167 vn(:,:,1:jpkm1) = vn(:,:,1:jpkm1) * fse3v (:,:,1:jpkm1) 168 169 ub(:,:,1:jpkm1) = ub(:,:,1:jpkm1) * zfse3ub(:,:,1:jpkm1) 170 vb(:,:,1:jpkm1) = vb(:,:,1:jpkm1) * zfse3vb(:,:,1:jpkm1) 153 DO jk = 1, jpkm1 154 DO jj = 1, jpj 155 DO ji = 1, jpi 156 ua(ji,jj,jk) = ua(ji,jj,jk) * fse3u(ji,jj,jk) 157 va(ji,jj,jk) = va(ji,jj,jk) * fse3v(ji,jj,jk) 158 159 un(ji,jj,jk) = un(ji,jj,jk) * fse3u(ji,jj,jk) 160 vn(ji,jj,jk) = vn(ji,jj,jk) * fse3v(ji,jj,jk) 161 162 ub(ji,jj,jk) = ub(ji,jj,jk) * zfse3ub(ji,jj,jk) 163 vb(ji,jj,jk) = vb(ji,jj,jk) * zfse3vb(ji,jj,jk) 164 END DO 165 END DO 166 END DO 171 167 172 168 ENDIF … … 241 237 DO jj = 1, jpj 242 238 DO ji = 1, jpi 243 zsshun = umask(ji,jj,jk) / fse3u(ji,jj,jk)244 zsshvn = vmask(ji,jj,jk) / fse3v(ji,jj,jk)245 ub(ji,jj,jk) = un(ji,jj,jk) * zsshun * umask(ji,jj,jk)246 vb(ji,jj,jk) = vn(ji,jj,jk) * zsshvn * vmask(ji,jj,jk)247 zsshun = umask(ji,jj,jk) / zfse3ua(ji,jj,jk)248 zsshvn = vmask(ji,jj,jk) / zfse3va(ji,jj,jk)249 un(ji,jj,jk) = ua(ji,jj,jk) * zsshun * umask(ji,jj,jk)250 vn(ji,jj,jk) = va(ji,jj,jk) * zsshvn * vmask(ji,jj,jk)239 zsshun1 = umask(ji,jj,jk) / fse3u(ji,jj,jk) 240 zsshvn1 = vmask(ji,jj,jk) / fse3v(ji,jj,jk) 241 ub(ji,jj,jk) = un(ji,jj,jk) * zsshun1 * umask(ji,jj,jk) 242 vb(ji,jj,jk) = vn(ji,jj,jk) * zsshvn1 * vmask(ji,jj,jk) 243 zsshun1 = umask(ji,jj,jk) / zfse3ua(ji,jj,jk) 244 zsshvn1 = vmask(ji,jj,jk) / zfse3va(ji,jj,jk) 245 un(ji,jj,jk) = ua(ji,jj,jk) * zsshun1 * umask(ji,jj,jk) 246 vn(ji,jj,jk) = va(ji,jj,jk) * zsshvn1 * vmask(ji,jj,jk) 251 247 END DO 252 248 END DO … … 268 264 DO jj = 1, jpj 269 265 DO ji = 1, jpi 270 zsshun = umask(ji,jj,jk) / zfse3un(ji,jj,jk)271 zsshvn = vmask(ji,jj,jk) / zfse3vn(ji,jj,jk)266 zsshun1 = umask(ji,jj,jk) / zfse3un(ji,jj,jk) 267 zsshvn1 = vmask(ji,jj,jk) / zfse3vn(ji,jj,jk) 272 268 ub(ji,jj,jk) = ( atfp * ( ub(ji,jj,jk) + ua(ji,jj,jk) ) & 273 & + atfp1 * un(ji,jj,jk) ) * zsshun 269 & + atfp1 * un(ji,jj,jk) ) * zsshun1 274 270 vb(ji,jj,jk) = ( atfp * ( vb(ji,jj,jk) + va(ji,jj,jk) ) & 275 & + atfp1 * vn(ji,jj,jk) ) * zsshvn 276 zsshun = umask(ji,jj,jk) / zfse3ua(ji,jj,jk)277 zsshvn = vmask(ji,jj,jk) / zfse3va(ji,jj,jk)278 un(ji,jj,jk) = ua(ji,jj,jk) * zsshun 279 vn(ji,jj,jk) = va(ji,jj,jk) * zsshvn 271 & + atfp1 * vn(ji,jj,jk) ) * zsshvn1 272 zsshun1 = umask(ji,jj,jk) / zfse3ua(ji,jj,jk) 273 zsshvn1 = vmask(ji,jj,jk) / zfse3va(ji,jj,jk) 274 un(ji,jj,jk) = ua(ji,jj,jk) * zsshun1 275 vn(ji,jj,jk) = va(ji,jj,jk) * zsshvn1 280 276 END DO 281 277 END DO -
trunk/NEMO/OPA_SRC/DYN/dynspg_flt.F90
r592 r642 187 187 ! Scale factors at before and after time step 188 188 ! ------------------------------------------- 189 DO jk = 1, jpkm1 190 zfse3ua(:,:,jk) = fsve3u(:,:,jk) * ( 1 + zsshua(:,:) * muu(:,:,jk) ) 191 zfse3va(:,:,jk) = fsve3v(:,:,jk) * ( 1 + zsshva(:,:) * muv(:,:,jk) ) 192 zfse3ub(:,:,jk) = fsve3u(:,:,jk) * ( 1 + zsshub(:,:) * muu(:,:,jk) ) 193 zfse3vb(:,:,jk) = fsve3v(:,:,jk) * ( 1 + zsshvb(:,:) * muv(:,:,jk) ) 194 END DO 189 zfse3ua(:,:,:) = sfe3( zsshua, 'U' ) ; zfse3ub(:,:,:) = sfe3( zsshub, 'U' ) 190 zfse3va(:,:,:) = sfe3( zsshva, 'V' ) ; zfse3vb(:,:,:) = sfe3( zsshvb, 'V' ) 195 191 196 192 ! Thickness weighting 197 193 ! ------------------- 198 ua(:,:,1:jpkm1) = ua(:,:,1:jpkm1) * fse3u(:,:,1:jpkm1) 199 va(:,:,1:jpkm1) = va(:,:,1:jpkm1) * fse3v(:,:,1:jpkm1) 200 201 zub(:,:,1:jpkm1) = ub(:,:,1:jpkm1) * zfse3ub(:,:,1:jpkm1) 202 zvb(:,:,1:jpkm1) = vb(:,:,1:jpkm1) * zfse3vb(:,:,1:jpkm1) 194 DO jk = 1, jpkm1 195 DO jj = 1, jpj 196 DO ji = 1, jpi 197 ua(ji,jj,jk) = ua(ji,jj,jk) * fse3u(ji,jj,jk) 198 va(ji,jj,jk) = va(ji,jj,jk) * fse3v(ji,jj,jk) 199 200 zub(ji,jj,jk) = ub(ji,jj,jk) * zfse3ub(ji,jj,jk) 201 zvb(ji,jj,jk) = vb(ji,jj,jk) * zfse3vb(ji,jj,jk) 202 END DO 203 END DO 204 END DO 203 205 204 206 ! Evaluate the masked next velocity (effect of the additional force not included) -
trunk/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r592 r642 511 511 ! Scale factors at before and after time step 512 512 ! ------------------------------------------- 513 DO jk = 1, jpkm1 514 zfse3un_e(:,:,jk) = fsve3u(:,:,jk) * ( 1 + zsshun_e(:,:) * muu(:,:,jk) ) 515 zfse3vn_e(:,:,jk) = fsve3v(:,:,jk) * ( 1 + zsshvn_e(:,:) * muv(:,:,jk) ) 516 END DO 513 zfse3un_e(:,:,:) = sfe3( zsshun_e, 'U' ) ; zfse3vn_e(:,:,:) = sfe3( zsshvn_e, 'V' ) 517 514 518 515 ! Ocean depth at U- and V-points
Note: See TracChangeset
for help on using the changeset viewer.