Ignore:
Timestamp:
2019-09-23T18:25:29+02:00 (13 months ago)
Author:
jchanut
Message:

#2222: 1) create remapping module (vremap) and integration of D. Engwirda piecewise polynomial recontruction package (PPR_LIB cpp key). 2) Various bug corrections with key_vertical activated.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11233_AGRIF-05_jchanut_vert_coord_interp/src/NST/agrif_oce_sponge.F90

    r11574 r11590  
    2323   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    2424   USE iom 
     25   USE vremap 
    2526 
    2627   IMPLICIT NONE 
     
    319320            DO jj=j1,j2 
    320321               DO ji=i1,i2 
    321                   tabres(ji,jj,jk,jpts+1) = tmask(ji,jj,jk) * e3t_n(ji,jj,jk)  
     322                  tabres(ji,jj,jk,jpts+1) = tmask(ji,jj,jk) * e3t_b(ji,jj,jk)  
    322323               END DO 
    323324            END DO 
     
    342343                  IF (tmask(ji,jj,jk) == 0) EXIT  
    343344                  N_out = N_out + 1 
    344                   h_out(jk) = e3t_n(ji,jj,jk) !Child grid scale factors. Could multiply by e1e2t here instead of division above 
     345                  h_out(jk) = e3t_b(ji,jj,jk) !Child grid scale factors. Could multiply by e1e2t here instead of division above 
    345346               ENDDO 
    346347               IF (N_in > 0) THEN 
    347                   h_diff = sum(h_out(1:N_out))-sum(h_in(1:N_in)) 
    348                   tabres(ji,jj,k2,:) = tabres(ji,jj,k2-1,:) !what is this line for????? 
    349348                  DO jn=1,jpts 
    350                      call reconstructandremap(tabin(1:N_in,jn),h_in,tabres_child(ji,jj,1:N_out,jn),h_out,N_in,N_out) 
     349                     call reconstructandremap(tabin(1:N_in,jn),h_in(1:N_in),tabres_child(ji,jj,1:N_out,jn),h_out(1:N_out),N_in,N_out) 
    351350                  ENDDO 
    352351               ENDIF 
     
    446445                  tabres(ji,jj,jk,m1) = ub(ji,jj,jk) 
    447446# if defined key_vertical 
    448                   tabres(ji,jj,jk,m2) = e3u_n(ji,jj,jk)*umask(ji,jj,jk) 
     447                  tabres(ji,jj,jk,m2) = e3u_b(ji,jj,jk)*umask(ji,jj,jk) 
    449448# endif 
    450449               END DO 
     
    475474                 if (umask(ji,jj,jk) == 0) EXIT 
    476475                 N_out = N_out + 1 
    477                  h_out(N_out) = e3u_n(ji,jj,jk) 
     476                 h_out(N_out) = e3u_b(ji,jj,jk) 
    478477              ENDDO 
    479478          
     
    507506            DO jj = j1,j2 
    508507               DO ji = i1+1,i2   ! vector opt. 
    509                   zbtr = r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) * fsahm_spt(ji,jj) 
    510                   hdivdiff(ji,jj,jk) = (  e2u(ji  ,jj)*e3u_n(ji  ,jj,jk) * ubdiff(ji  ,jj,jk) & 
    511                                      &   -e2u(ji-1,jj)*e3u_n(ji-1,jj,jk) * ubdiff(ji-1,jj,jk) ) * zbtr 
     508                  zbtr = r1_e1e2t(ji,jj) / e3t_b(ji,jj,jk) * fsahm_spt(ji,jj) 
     509                  hdivdiff(ji,jj,jk) = (  e2u(ji  ,jj)*e3u_b(ji  ,jj,jk) * ubdiff(ji  ,jj,jk) & 
     510                                     &   -e2u(ji-1,jj)*e3u_b(ji-1,jj,jk) * ubdiff(ji-1,jj,jk) ) * zbtr 
    512511               END DO 
    513512            END DO 
     
    599598                  tabres(ji,jj,jk,m1) = vb(ji,jj,jk) 
    600599# if defined key_vertical 
    601                   tabres(ji,jj,jk,m2) = vmask(ji,jj,jk) * e3v_n(ji,jj,jk) 
     600                  tabres(ji,jj,jk,m2) = vmask(ji,jj,jk) * e3v_b(ji,jj,jk) 
    602601# endif 
    603602               END DO 
     
    627626                 if (vmask(ji,jj,jk) == 0) EXIT 
    628627                 N_out = N_out + 1 
    629                  h_out(N_out) = e3v_n(ji,jj,jk) 
     628                 h_out(N_out) = e3v_b(ji,jj,jk) 
    630629              ENDDO 
    631630          
     
    653652            DO jj = j1+1,j2 
    654653               DO ji = i1,i2   ! vector opt. 
    655                   zbtr = r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) * fsahm_spt(ji,jj) 
    656                   hdivdiff(ji,jj,jk) = ( e1v(ji,jj  ) * e3v_n(ji,jj  ,jk) * vbdiff(ji,jj  ,jk)  & 
    657                                      &  -e1v(ji,jj-1) * e3v_n(ji,jj-1,jk) * vbdiff(ji,jj-1,jk)  ) * zbtr 
     654                  zbtr = r1_e1e2t(ji,jj) / e3t_b(ji,jj,jk) * fsahm_spt(ji,jj) 
     655                  hdivdiff(ji,jj,jk) = ( e1v(ji,jj  ) * e3v_b(ji,jj  ,jk) * vbdiff(ji,jj  ,jk)  & 
     656                                     &  -e1v(ji,jj-1) * e3v_b(ji,jj-1,jk) * vbdiff(ji,jj-1,jk)  ) * zbtr 
    658657               END DO 
    659658            END DO 
Note: See TracChangeset for help on using the changeset viewer.