Changeset 6454
- Timestamp:
- 2016-04-08T10:49:50+02:00 (8 years ago)
- Location:
- branches/2015/dev_r5803_UKMO_AGRIF_Vert_interp/NEMOGCM/NEMO/NST_SRC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5803_UKMO_AGRIF_Vert_interp/NEMOGCM/NEMO/NST_SRC/agrif_opa_update.F90
r6404 r6454 263 263 !!--------------------------------------------- 264 264 INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2,n1,n2 265 REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2 ), INTENT(inout) :: ptab265 REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2+1), INTENT(inout) :: ptab 266 266 LOGICAL, INTENT(in) :: before 267 267 !! … … 271 271 REAL(wp) :: h_in(k1:k2) 272 272 REAL(wp) :: h_out(1:jpk) 273 INTEGER :: N_in, N_out273 INTEGER :: N_in, N_out 274 274 REAL(wp) :: h_diff 275 REAL(wp) :: zrho_xy 275 276 REAL(wp) :: tabin(k1:k2,n1:n2) 276 277 ! VERTICAL REFINEMENT END … … 278 279 ! 279 280 IF (before) THEN 281 zrho_xy = Agrif_rhox() * Agrif_rhoy() 280 282 DO jn = n1,n2 281 283 DO jk=k1,k2 282 284 DO jj=j1,j2 283 285 DO ji=i1,i2 284 ptab(ji,jj,jk,jn) = tsn(ji,jj,jk,jn)286 ptab(ji,jj,jk,jn) = zrho_xy * tsn(ji,jj,jk,jn) * e1e2t(ji,jj) * e3t_n(ji,jj,jk) 285 287 END DO 286 288 END DO 287 289 END DO 288 290 END DO 291 DO jk=k1,k2 292 DO jj=j1,j2 293 DO ji=i1,i2 294 ptab(ji,jj,jk,n2+1) = zrho_xy * e1e2t(ji,jj) * e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 295 END DO 296 END DO 297 END DO 298 289 299 ELSE 290 300 ! VERTICAL REFINEMENT BEGIN … … 294 304 DO ji=i1,i2 295 305 N_in = 0 296 DO jk=k1,k2 297 IF ( update_scales_t(ji,jj,jk) == 0) EXIT306 DO jk=k1,k2 !k2 = jpk of child grid 307 IF (ptab(ji,jj,jk,n2+1) == 0) EXIT 298 308 N_in = N_in + 1 299 tabin(jk,:) = ptab(ji,jj,jk, :)300 h_in(N_in) = update_scales_t(ji,jj,jk)309 tabin(jk,:) = ptab(ji,jj,jk,n1:n2)/ptab(ji,jj,jk,n2+1) 310 h_in(N_in) = ptab(ji,jj,jk,n2+1)/e1e2t(ji,jj) 301 311 ENDDO 302 312 N_out = 0 303 DO jk=1,jpk 304 IF (tmask(ji,jj,jk) == 0) EXIT 313 DO jk=1,jpk ! jpk of parent grid 314 IF (tmask(ji,jj,jk) == 0) EXIT ! TODO: Will not work with ISF 305 315 N_out = N_out + 1 306 h_out(N_out) = e3t_n(ji,jj,jk) 316 h_out(N_out) = e3t_n(ji,jj,jk)!Parent grid scale factors. Could multiply by e1e2t here instead of division above 307 317 ENDDO 308 318 IF (N_in > 0) THEN 309 319 h_diff = sum(h_out(1:N_out))-sum(h_in(1:N_in)) 310 IF (h_diff > 0) THEN 311 N_in = N_in + 1 312 h_in(N_in) = h_diff 313 tabin(N_in,:) = tabin(N_in-1,:) 320 ! Should be able to remove the next IF/ELSEIF statement once scale factors are dealt with properly 321 IF abs(h_diff > 1.e-8) THEN 322 ! N_in = N_in + 1 323 ! h_in(N_in) = h_diff 324 ! tabin(N_in,:) = tabin(N_in-1,:) 314 325 ELSEIF (h_diff < 0) THEN 315 326 print *,'CHECK YOUR bathy T points ...',ji,jj,h_diff,sum(h_in(1:N_in)),sum(h_out(1:N_out)) 316 327 print *,'Nval = ',N_out,mbathy(ji,jj) 317 328 print *,'BATHY = ',gdepw_0(ji,jj,mbathy(ji,jj)+1),sum(e3t_0(ji,jj,1:mbathy(ji,jj))) 318 !STOP319 N_out = N_out + 1320 h_out(N_out) = - h_diff329 STOP 330 ! N_out = N_out + 1 331 ! h_out(N_out) = - h_diff 321 332 ENDIF 322 333 DO jn=n1,n2 … … 367 378 !! *** ROUTINE updateu *** 368 379 !!--------------------------------------------- 369 INTEGER , INTENT(in ) :: i1, i2, j1, j2, k1, k2 380 !! 381 INTEGER, INTENT(in) :: i1, i2, j1, j2, k1, k2 370 382 REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: ptab 371 383 LOGICAL , INTENT(in ) :: before … … 388 400 DO jj=j1,j2 389 401 DO ji=i1,i2 390 ptab(ji,jj,jk) = e2u(ji,jj) * un(ji,jj,jk) 391 ptab(ji,jj,jk) = ptab(ji,jj,jk) * e3u_n(ji,jj,jk) 402 ptab(ji,jj,jk) = e2u(ji,jj) * e3u_n(ji,jj,jk) * un(ji,jj,jk) 392 403 END DO 393 404 END DO -
branches/2015/dev_r5803_UKMO_AGRIF_Vert_interp/NEMOGCM/NEMO/NST_SRC/agrif_user.F90
r6404 r6454 375 375 ! 1. Declaration of the type of variable which have to be interpolated 376 376 !--------------------------------------------------------------------- 377 CALL agrif_declare_variable((/2,2,0,0/),(/3,3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/nlci,nlcj,jpk,jpts /),tsn_id)377 CALL agrif_declare_variable((/2,2,0,0/),(/3,3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/nlci,nlcj,jpk,jpts+1/),tsn_id) 378 378 CALL agrif_declare_variable((/2,2,0,0/),(/3,3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/nlci,nlcj,jpk,jpts/),tsn_sponge_id) 379 379
Note: See TracChangeset
for help on using the changeset viewer.