- Timestamp:
- 2021-06-17T12:11:24+02:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/ticket2680_C1D_PAPA/src/OCE/C1D/dtauvd.F90
r14915 r15008 93 93 94 94 ! 95 IF( ln_uvd_init .OR. ln_uvd_dyndmp) THEN95 IF( ln_uvd_init .OR. ln_uvd_dyndmp ) THEN 96 96 ! !== allocate the data arrays ==! 97 97 ALLOCATE( sf_uvd(2), STAT=ierr0 ) … … 117 117 118 118 119 SUBROUTINE dta_uvd( kt, Kmm, pu vd )119 SUBROUTINE dta_uvd( kt, Kmm, pud, pvd ) 120 120 !!---------------------------------------------------------------------- 121 121 !! *** ROUTINE dta_uvd *** … … 134 134 INTEGER , INTENT(in ) :: kt ! ocean time-step 135 135 INTEGER , INTENT(in ) :: Kmm ! time level index 136 REAL(wp), DIMENSION(jpi,jpj,jpk,2), INTENT( out) :: puvd ! U & V current data 136 REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT( out) :: pud ! U & V current data 137 REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT( out) :: pvd ! U & V current data 137 138 ! 138 139 INTEGER :: ji, jj, jk, jl, jkk ! dummy loop indicies … … 146 147 CALL fld_read( kt, 1, sf_uvd ) !== read U & V current data at time step kt ==! 147 148 ! 148 pu vd(:,:,:,1) = sf_uvd(1)%fnow(:,:,:) ! NO mask149 p uvd(:,:,:,2) = sf_uvd(2)%fnow(:,:,:)149 pud(:,:,:) = sf_uvd(1)%fnow(:,:,:) ! NO mask 150 pvd(:,:,:) = sf_uvd(2)%fnow(:,:,:) 150 151 ! 151 152 IF( ln_sco ) THEN !== s- or mixed s-zps-coordinate ==! … … 162 163 zl = gdept(ji,jj,jk,Kmm) 163 164 IF ( zl < gdept_1d(1 ) ) THEN ! extrapolate above the first level of data 164 zup(jk) = pu vd(ji,jj,1,1)165 zvp(jk) = p uvd(ji,jj,1 ,2)165 zup(jk) = pud(ji,jj,1) 166 zvp(jk) = pvd(ji,jj,1) 166 167 ELSEIF( zl > gdept_1d(jpk) ) THEN ! extrapolate below the last level of data 167 zup(jk) = pu vd(ji,jj,jpkm1,1)168 zvp(jk) = p uvd(ji,jj,jpkm1,2)168 zup(jk) = pud(ji,jj,jpkm1) 169 zvp(jk) = pvd(ji,jj,jpkm1) 169 170 ELSE ! inbetween : vertical interpolation between jkk & jkk+1 170 171 DO jkk = 1, jpkm1 ! when gdept(jkk) < zl < gdept(jkk+1) 171 172 IF( (zl-gdept_1d(jkk)) * (zl-gdept_1d(jkk+1)) <= 0._wp ) THEN 172 173 zi = ( zl - gdept_1d(jkk) ) / (gdept_1d(jkk+1)-gdept_1d(jkk)) 173 zup(jk) = pu vd(ji,jj,jkk,1) + ( puvd(ji,jj,jkk+1,1 ) - puvd(ji,jj,jkk,1) ) * zi174 zvp(jk) = p uvd(ji,jj,jkk,2) + ( puvd(ji,jj,jkk+1,2 ) - puvd(ji,jj,jkk,2) ) * zi174 zup(jk) = pud(ji,jj,jkk) + ( pud(ji,jj,jkk+1) - pud(ji,jj,jkk) ) * zi 175 zvp(jk) = pvd(ji,jj,jkk) + ( pvd(ji,jj,jkk+1) - pvd(ji,jj,jkk) ) * zi 175 176 ENDIF 176 177 END DO … … 178 179 END DO 179 180 DO jk = 1, jpkm1 ! apply mask 180 pu vd(ji,jj,jk,1) = zup(jk) * umask(ji,jj,jk)181 p uvd(ji,jj,jk,2) = zvp(jk) * vmask(ji,jj,jk)181 pud(ji,jj,jk) = zup(jk) * umask(ji,jj,jk) 182 pvd(ji,jj,jk) = zvp(jk) * vmask(ji,jj,jk) 182 183 END DO 183 pu vd(ji,jj,jpk,1) = 0._wp184 p uvd(ji,jj,jpk,2) = 0._wp184 pud(ji,jj,jpk) = 0._wp 185 pvd(ji,jj,jpk) = 0._wp 185 186 END_2D 186 187 ! … … 189 190 ELSE !== z- or zps- coordinate ==! 190 191 ! 191 pu vd(:,:,:,1) = puvd(:,:,:,1) * umask(:,:,:) ! apply mask192 p uvd(:,:,:,2) = puvd(:,:,:,2) * vmask(:,:,:)192 pud(:,:,:) = pud(:,:,:) * umask(:,:,:) ! apply mask 193 pvd(:,:,:) = pvd(:,:,:) * vmask(:,:,:) 193 194 ! 194 195 IF( ln_zps ) THEN ! zps-coordinate (partial steps) interpolation at the last ocean level … … 197 198 IF( ik > 1 ) THEN 198 199 zl = ( gdept_1d(ik) - gdept_0(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) ) 199 pu vd(ji,jj,ik,1) = (1.-zl) * puvd(ji,jj,ik,1) + zl * puvd(ji,jj,ik-1,1)200 p uvd(ji,jj,ik,2) = (1.-zl) * puvd(ji,jj,ik,2) + zl * puvd(ji,jj,ik-1,2)200 pud(ji,jj,ik) = (1.-zl) * pud(ji,jj,ik) + zl * pud(ji,jj,ik-1) 201 pvd(ji,jj,ik) = (1.-zl) * pvd(ji,jj,ik) + zl * pvd(ji,jj,ik-1) 201 202 ENDIF 202 203 END_2D
Note: See TracChangeset
for help on using the changeset viewer.