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 6454 – NEMO

Changeset 6454


Ignore:
Timestamp:
2016-04-08T10:49:50+02:00 (8 years ago)
Author:
timgraham
Message:

Added in modifications to updateTS as made in Grenoble

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  
    263263      !!--------------------------------------------- 
    264264      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) :: ptab 
     265      REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2+1), INTENT(inout) :: ptab 
    266266      LOGICAL, INTENT(in) :: before 
    267267      !! 
     
    271271      REAL(wp) :: h_in(k1:k2) 
    272272      REAL(wp) :: h_out(1:jpk) 
    273       INTEGER :: N_in, N_out 
     273      INTEGER  :: N_in, N_out 
    274274      REAL(wp) :: h_diff 
     275      REAL(wp) :: zrho_xy 
    275276      REAL(wp) :: tabin(k1:k2,n1:n2) 
    276277! VERTICAL REFINEMENT END 
     
    278279      ! 
    279280      IF (before) THEN 
     281         zrho_xy = Agrif_rhox() * Agrif_rhoy()  
    280282         DO jn = n1,n2 
    281283            DO jk=k1,k2 
    282284               DO jj=j1,j2 
    283285                  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) 
    285287                  END DO 
    286288               END DO 
    287289            END DO 
    288290         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          
    289299      ELSE 
    290300! VERTICAL REFINEMENT BEGIN 
     
    294304         DO ji=i1,i2 
    295305           N_in = 0 
    296            DO jk=k1,k2 
    297              IF (update_scales_t(ji,jj,jk) == 0) EXIT 
     306           DO jk=k1,k2 !k2 = jpk of child grid 
     307             IF (ptab(ji,jj,jk,n2+1) == 0) EXIT 
    298308             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) 
    301311           ENDDO 
    302312           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 
    305315             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 
    307317           ENDDO 
    308318           IF (N_in > 0) THEN 
    309319             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,:) 
    314325             ELSEIF (h_diff < 0) THEN 
    315326             print *,'CHECK YOUR bathy T points ...',ji,jj,h_diff,sum(h_in(1:N_in)),sum(h_out(1:N_out)) 
    316327             print *,'Nval = ',N_out,mbathy(ji,jj) 
    317328             print *,'BATHY = ',gdepw_0(ji,jj,mbathy(ji,jj)+1),sum(e3t_0(ji,jj,1:mbathy(ji,jj))) 
    318           !   STOP 
    319                N_out = N_out + 1 
    320                h_out(N_out) = - h_diff 
     329             STOP 
     330!               N_out = N_out + 1 
     331!               h_out(N_out) = - h_diff 
    321332             ENDIF 
    322333             DO jn=n1,n2 
     
    367378      !!           *** ROUTINE updateu *** 
    368379      !!--------------------------------------------- 
    369       INTEGER                               , INTENT(in   ) :: i1, i2, j1, j2, k1, k2 
     380      !! 
     381      INTEGER, INTENT(in) :: i1, i2, j1, j2, k1, k2 
    370382      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: ptab 
    371383      LOGICAL                               , INTENT(in   ) :: before 
     
    388400            DO jj=j1,j2 
    389401               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) 
    392403               END DO 
    393404            END DO 
  • branches/2015/dev_r5803_UKMO_AGRIF_Vert_interp/NEMOGCM/NEMO/NST_SRC/agrif_user.F90

    r6404 r6454  
    375375   ! 1. Declaration of the type of variable which have to be interpolated 
    376376   !--------------------------------------------------------------------- 
    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) 
    378378   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) 
    379379 
Note: See TracChangeset for help on using the changeset viewer.