New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 11590 for NEMO/branches/2019/dev_r11233_AGRIF-05_jchanut_vert_coord_interp/src/NST/agrif_oce_interp.F90 – NEMO

Ignore:
Timestamp:
2019-09-23T18:25:29+02:00 (5 years 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_interp.F90

    r11574 r11590  
    3333   USE agrif_oce_sponge 
    3434   USE lib_mpp 
     35   USE vremap 
    3536  
    3637   IMPLICIT NONE 
     
    661662      REAL(wp), DIMENSION(k1:k2) :: h_in 
    662663      REAL(wp), DIMENSION(1:jpk) :: h_out 
     664      !!---------------------------------------------------------------------- 
    663665 
    664666      IF( before ) THEN          
     
    698700                  IF (tmask(ji,jj,jk) == 0) EXIT  
    699701                  N_out = N_out + 1 
    700                   h_out(jk) = e3t_n(ji,jj,jk) 
     702                  h_out(jk) = e3t_a(ji,jj,jk) 
    701703               ENDDO 
    702704               IF (N_in > 0) THEN 
    703705                  DO jn=1,jpts 
    704                      call reconstructandremap(tabin(1:N_in,jn),h_in,ptab_child(ji,jj,1:N_out,jn),h_out,N_in,N_out) 
     706                     call reconstructandremap(tabin(1:N_in,jn),h_in(1:N_in),ptab_child(ji,jj,1:N_out,jn),h_out(1:N_out),N_in,N_out) 
    705707                  ENDDO 
    706708               ENDIF 
     
    737739   END SUBROUTINE interpsshn 
    738740 
    739    SUBROUTINE interpun( ptab, i1, i2, j1, j2, k1, k2, m1, m2, before, nb, ndir ) 
     741   SUBROUTINE interpun( ptab, i1, i2, j1, j2, k1, k2, m1, m2, before ) 
    740742      !!---------------------------------------------------------------------- 
    741743      !!                  *** ROUTINE interpun *** 
     
    745747      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2,m1:m2), INTENT(inout) :: ptab 
    746748      LOGICAL, INTENT(in) :: before 
    747       INTEGER, INTENT(in) :: nb , ndir 
    748749      !! 
    749750      INTEGER :: ji,jj,jk 
     
    752753      REAL(wp), DIMENSION(k1:k2) :: tabin, h_in 
    753754      REAL(wp), DIMENSION(1:jpk) :: h_out 
    754       INTEGER  :: N_in, N_out, iref 
     755      INTEGER  :: N_in, N_out 
    755756      REAL(wp) :: h_diff 
    756       LOGICAL  :: western_side, eastern_side 
    757757      !!---------------------------------------------     
    758758      ! 
     
    772772# if defined key_vertical 
    773773! VERTICAL REFINEMENT BEGIN 
    774          western_side  = (nb == 1).AND.(ndir == 1) 
    775          eastern_side  = (nb == 1).AND.(ndir == 2) 
    776774 
    777775         DO ji=i1,i2 
    778             iref = ji 
    779             IF (western_side) iref = MAX(2,ji) 
    780             IF (eastern_side) iref = MIN(nlci-2,ji) 
    781776            DO jj=j1,j2 
    782777               N_in = 0 
     
    795790              N_out = 0 
    796791              DO jk=1,jpk 
    797                  if (umask(iref,jj,jk) == 0) EXIT 
     792                 if (umask(ji,jj,jk) == 0) EXIT 
    798793                 N_out = N_out + 1 
    799                  h_out(N_out) = e3u_a(iref,jj,jk) 
     794                 h_out(N_out) = e3u_a(ji,jj,jk) 
    800795              ENDDO 
    801796          
     
    829824   END SUBROUTINE interpun 
    830825 
    831    SUBROUTINE interpvn( ptab, i1, i2, j1, j2, k1, k2, m1, m2, before, nb, ndir ) 
     826   SUBROUTINE interpvn( ptab, i1, i2, j1, j2, k1, k2, m1, m2, before ) 
    832827      !!---------------------------------------------------------------------- 
    833828      !!                  *** ROUTINE interpvn *** 
     
    837832      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2,m1:m2), INTENT(inout) :: ptab 
    838833      LOGICAL, INTENT(in) :: before 
    839       INTEGER, INTENT(in) :: nb , ndir 
    840834      ! 
    841835      INTEGER :: ji,jj,jk 
     
    844838      REAL(wp), DIMENSION(k1:k2) :: tabin, h_in 
    845839      REAL(wp), DIMENSION(1:jpk) :: h_out 
    846       INTEGER  :: N_in, N_out, jref 
     840      INTEGER  :: N_in, N_out 
    847841      REAL(wp) :: h_diff 
    848       LOGICAL  :: northern_side,southern_side 
    849842      !!---------------------------------------------     
    850843      !       
     
    864857# if defined key_vertical 
    865858 
    866          southern_side = (nb == 2).AND.(ndir == 1) 
    867          northern_side = (nb == 2).AND.(ndir == 2) 
    868  
    869859         DO jj=j1,j2 
    870             jref = jj 
    871             IF (southern_side) jref = MAX(2,jj) 
    872             IF (northern_side) jref = MIN(nlcj-2,jj) 
    873860            DO ji=i1,i2 
    874861               N_in = 0 
     
    886873               N_out = 0 
    887874               DO jk=1,jpk 
    888                   if (vmask(ji,jref,jk) == 0) EXIT 
     875                  if (vmask(ji,jj,jk) == 0) EXIT 
    889876                  N_out = N_out + 1 
    890                   h_out(N_out) = e3v_a(ji,jref,jk) 
     877                  h_out(N_out) = e3v_a(ji,jj,jk) 
    891878               END DO 
    892879               IF (N_out == 0) THEN 
Note: See TracChangeset for help on using the changeset viewer.