- Timestamp:
- 2015-10-21T18:01:58+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/NERC/dev_r5589_is_oce_cpl/NEMOGCM/NEMO/OPA_SRC/DOM/iscplrst.F90
r5802 r5820 97 97 CALL iom_rstput( 0, 0, inum0, 'tem_cor', htsc_iscpl(:,:,:,jp_tem) ) 98 98 CALL iom_rstput( 0, 0, inum0, 'sal_cor', htsc_iscpl(:,:,:,jp_sal) ) 99 CALL iom_rstput( 0, 0, inum0, 'e3t_diff', (e3t_0(:,:,:)*tmask(:,:,:) - ze3t_b(:,:,:)*ztmask_b(:,:,:))*tmask(:,:,:) )100 99 CALL iom_close ( inum0 ) 101 100 END IF … … 191 190 summsk=(zsmask0(jip1,jj)+zsmask0(jim1,jj)+zsmask0(ji,jjp1)+zsmask0(ji,jjm1)) 192 191 IF (zdsmask(ji,jj)==1 .AND. summsk .NE. 0) THEN 193 PRINT *, 'add ssh to 1 cell',ji,jj,narea 194 sshn(ji,jj)=(zssh0(jip1,jj)*zsmask0(jip1,jj) & 195 & +zssh0(jim1,jj)*zsmask0(jim1,jj) & 196 & +zssh0(ji,jjp1)*zsmask0(ji,jjp1) & 197 & +zssh0(ji,jjm1)*zsmask0(ji,jjm1))/summsk 192 sshn(ji,jj)=( zssh0(jip1,jj)*zsmask0(jip1,jj) & 193 & + zssh0(jim1,jj)*zsmask0(jim1,jj) & 194 & + zssh0(ji,jjp1)*zsmask0(ji,jjp1) & 195 & + zssh0(ji,jjm1)*zsmask0(ji,jjm1))/summsk 198 196 zsmask1(ji,jj)=1 199 197 END IF … … 209 207 !============================================================================= 210 208 IF ( lk_vvl ) THEN 211 ! compute fse3t_n 212 DO jk = 1,jpk 213 fse3t_n(:,:,jk) = e3t_0(:,:,jk) * ( 1._wp + sshn(:,:) / ( ht_0(:,:) + 1._wp - ssmask(:,:) ) * tmask(:,:,jk) ) 214 END DO 215 216 ! compute fse3u/v ... (call interpolation vvl) 217 ! Reconstruction of all vertical scale factors at now and before time steps 209 ! Reconstruction of all vertical scale factors at now time steps 218 210 ! ============================================================================= 219 211 ! Horizontal scale factor interpolations 220 212 ! -------------------------------------- 213 DO jk = 1,jpk 214 DO jj=1,jpj 215 DO ji=1,jpi 216 IF (tmask(ji,jj,1) == 0._wp .OR. ptmask_b(ji,jj,1) == 0._wp) THEN 217 fse3t_n(ji,jj,jk) = e3t_0(ji,jj,jk) * ( 1._wp + sshn(ji,jj) / ( ht_0(ji,jj) + 1._wp - ssmask(ji,jj) ) * tmask(ji,jj,jk) ) 218 ENDIF 219 END DO 220 END DO 221 END DO 222 221 223 CALL dom_vvl_interpol( fse3t_n(:,:,:), fse3u_n(:,:,:), 'U' ) 222 224 CALL dom_vvl_interpol( fse3t_n(:,:,:), fse3v_n(:,:,:), 'V' ) … … 295 297 zbvn(:,:) = SUM(ztrp,DIM=3) 296 298 297 ! Already know ???????? 299 ! new water column 298 300 hu1=0.0_wp ; 299 301 hv1=0.0_wp ; … … 302 304 hv1(:,:) = hv1(:,:) + fse3v_n(:,:,jk) * vmask(:,:,jk) 303 305 END DO 306 307 ! compute correction 304 308 zucorr = 0._wp 305 309 zvcorr = 0._wp … … 314 318 END DO 315 319 END DO 320 321 ! update velocity 316 322 DO jk = 1,jpk 317 323 un(:,:,jk)=(un(:,:,jk) - zucorr(:,:))*umask(:,:,jk) … … 333 339 jip1=ji+1; jim1=ji-1; 334 340 jjp1=jj+1; jjm1=jj-1; 335 summsk= (ztmask0(jip1,jj,jk)+ztmask0(jim1,jj,jk)+ztmask0(ji,jjp1,jk)+ztmask0(ji,jjm1,jk))336 !! horizontal extrapolation341 summsk= (ztmask0(jip1,jj ,jk)+ztmask0(jim1,jj ,jk)+ztmask0(ji ,jjp1,jk)+ztmask0(ji ,jjm1,jk)) 342 !! horizontal basic extrapolation 337 343 IF (zdmask(ji,jj)==1 .AND. summsk .NE. 0) THEN 338 tsn(ji,jj,jk,1)=( zts0(jip1,jj ,jk,1)*ztmask0(jip1,jj,jk)&339 & +zts0(jim1,jj ,jk,1)*ztmask0(jim1,jj,jk)&340 & +zts0(ji ,jjp1,jk,1)*ztmask0(ji,jjp1,jk)&341 & +zts0(ji ,jjm1,jk,1)*ztmask0(ji,jjm1,jk))/summsk342 tsn(ji,jj,jk,2)=( zts0(jip1,jj ,jk,2)*ztmask0(jip1,jj,jk)&343 & +zts0(jim1,jj ,jk,2)*ztmask0(jim1,jj,jk)&344 & +zts0(ji ,jjp1,jk,2)*ztmask0(ji,jjp1,jk)&345 & +zts0(ji ,jjm1,jk,2)*ztmask0(ji,jjm1,jk))/summsk344 tsn(ji,jj,jk,1)=( zts0(jip1,jj ,jk,1)*ztmask0(jip1,jj ,jk) & 345 & +zts0(jim1,jj ,jk,1)*ztmask0(jim1,jj ,jk) & 346 & +zts0(ji ,jjp1,jk,1)*ztmask0(ji ,jjp1,jk) & 347 & +zts0(ji ,jjm1,jk,1)*ztmask0(ji ,jjm1,jk) ) / summsk 348 tsn(ji,jj,jk,2)=( zts0(jip1,jj ,jk,2)*ztmask0(jip1,jj ,jk) & 349 & +zts0(jim1,jj ,jk,2)*ztmask0(jim1,jj ,jk) & 350 & +zts0(ji ,jjp1,jk,2)*ztmask0(ji ,jjp1,jk) & 351 & +zts0(ji ,jjm1,jk,2)*ztmask0(ji ,jjm1,jk) ) / summsk 346 352 ztmask1(ji,jj,jk)=1 347 353 END IF … … 358 364 END IF 359 365 END IF 360 !! horizontal corner extrapolation if horizontal and vertical failed361 IF (zdmask(ji,jj)==1 .AND. summsk==0) THEN362 jip1=ji+1; jim1=ji-1;363 jjp1=jj+1; jjm1=jj-1;364 summsk=(ztmask0(jip1,jjp1,jk)+ztmask0(jim1,jjm1,jk)+ztmask0(jim1,jjp1,jk)+ztmask0(jip1,jjm1,jk))365 IF (zdmask(ji,jj)==1 .AND. summsk .NE. 0) THEN366 tsn(ji,jj,jk,1)=( zts0(jip1,jjp1,jk,1)*ztmask0(jip1,jjp1,jk) &367 & +zts0(jim1,jjm1,jk,1)*ztmask0(jim1,jjm1,jk) &368 & +zts0(jim1,jjp1,jk,1)*ztmask0(jim1,jjp1,jk) &369 & +zts0(jip1,jjm1,jk,1)*ztmask0(jip1,jjm1,jk))/summsk370 tsn(ji,jj,jk,2)=( zts0(jip1,jjp1,jk,2)*ztmask0(jip1,jjp1,jk) &371 & +zts0(jim1,jjm1,jk,2)*ztmask0(jim1,jjm1,jk) &372 & +zts0(jim1,jjp1,jk,2)*ztmask0(jim1,jjp1,jk) &373 & +zts0(jip1,jjm1,jk,2)*ztmask0(jip1,jjm1,jk))/summsk374 ztmask1(ji,jj,jk)=1375 END IF376 END IF377 366 END DO 378 367 END DO … … 392 381 DO jj = 1,jpj 393 382 DO ji = 1,jpi 394 IF (zwmaskn(ji,jj,jk) * zwmaskb(ji,jj,jk) == 1.0_wp ) THEN383 IF (zwmaskn(ji,jj,jk) * zwmaskb(ji,jj,jk) == 1.0_wp .AND. (tmask(ji,jj,1)==0 .OR. ptmask_b(ji,jj,1)==0) ) THEN 395 384 !compute weight 396 385 zdzp1 = MAX(0._wp,fsdepw_n(ji,jj,jk+1) - pdepw_b(ji,jj,jk+1)) … … 398 387 zdzm1 = MAX(0._wp,pdepw_b(ji,jj,jk ) - fsdepw_n(ji,jj,jk )) 399 388 IF (zdz .LT. 0.0_wp) THEN 400 PRINT *,'ERROR dz n ', ji,jj,jk,zdz,fsdepw_n(ji,jj,jk+1),fsdepw_n(ji,jj,jk),fsdepw_n(ji,jj,jk-1)401 PRINT *,'ERROR dz n = ',fse3t_n (ji,jj,jk+1),fse3t_n (ji,jj,jk),fse3t_n (ji,jj,jk-1), sshn(ji,jj)402 PRINT *,'ERROR dz b = ',pdepw_b(ji,jj,jk+1),pdepw_b(ji,jj,jk),pdepw_b(ji,jj,jk-1)403 PRINT *,'ERROR dz b = ',fse3t_b (ji,jj,jk+1),fse3t_b (ji,jj,jk),fse3t_b (ji,jj,jk-1), sshb(ji,jj)404 PRINT *,'ERROR dz 0 = ', e3t_0 (ji,jj,jk+1), e3t_0 (ji,jj,jk), e3t_0 (ji,jj,jk-1)405 PRINT *,'ERROR dz n = ', tmask (ji,jj,jk+1), tmask (ji,jj,jk), tmask (ji,jj,jk-1)406 PRINT *,'ERROR dz n = ', zwmaskn(ji,jj,jk+1), zwmaskn(ji,jj,jk), zwmaskn(ji,jj,jk-1)407 PRINT *,'ERROR dz b = ', ptmask_b(ji,jj,jk+1), ptmask_b(ji,jj,jk), ptmask_b(ji,jj,jk-1)408 PRINT *,'ERROR dz b = ', zwmaskb(ji,jj,jk+1), zwmaskb(ji,jj,jk), zwmaskb(ji,jj,jk-1)409 PRINT *,'ERROR dz b = ', gdepw_0(ji,jj,jk+1), gdepw_0(ji,jj,jk), gdepw_0(ji,jj,jk-1)410 STOP389 WRITE(numout,*) 'ERROR dz n ', ji,jj,jk,zdz,fsdepw_n(ji,jj,jk+1),fsdepw_n(ji,jj,jk),fsdepw_n(ji,jj,jk-1) 390 WRITE(numout,*) 'ERROR dz n = ',fse3t_n (ji,jj,jk+1),fse3t_n (ji,jj,jk),fse3t_n (ji,jj,jk-1), sshn(ji,jj) 391 WRITE(numout,*) 'ERROR dz b = ',pdepw_b(ji,jj,jk+1),pdepw_b(ji,jj,jk),pdepw_b(ji,jj,jk-1) 392 WRITE(numout,*) 'ERROR dz b = ',fse3t_b (ji,jj,jk+1),fse3t_b (ji,jj,jk),fse3t_b (ji,jj,jk-1), sshb(ji,jj) 393 WRITE(numout,*) 'ERROR dz 0 = ', e3t_0 (ji,jj,jk+1), e3t_0 (ji,jj,jk), e3t_0 (ji,jj,jk-1) 394 WRITE(numout,*) 'ERROR dz n = ', tmask (ji,jj,jk+1), tmask (ji,jj,jk), tmask (ji,jj,jk-1) 395 WRITE(numout,*) 'ERROR dz n = ', zwmaskn(ji,jj,jk+1), zwmaskn(ji,jj,jk), zwmaskn(ji,jj,jk-1) 396 WRITE(numout,*) 'ERROR dz b = ', ptmask_b(ji,jj,jk+1), ptmask_b(ji,jj,jk), ptmask_b(ji,jj,jk-1) 397 WRITE(numout,*) 'ERROR dz b = ', zwmaskb(ji,jj,jk+1), zwmaskb(ji,jj,jk), zwmaskb(ji,jj,jk-1) 398 WRITE(numout,*) 'ERROR dz b = ', gdepw_0(ji,jj,jk+1), gdepw_0(ji,jj,jk), gdepw_0(ji,jj,jk-1) 399 CALL ctl_stop( 'STOP', 'rst_iscpl : unable to compute the interpolation' ) 411 400 END IF 412 401 tsn(ji,jj,jk,jp_tem) = ( zdzp1*tsb(ji,jj,jk+1,jp_tem) &
Note: See TracChangeset
for help on using the changeset viewer.