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 9031 for branches/2017/dev_merge_2017/NEMOGCM/NEMO/NST_SRC/agrif_top_sponge.F90 – NEMO

Ignore:
Timestamp:
2017-12-14T11:10:02+01:00 (6 years ago)
Author:
timgraham
Message:

Resolved AGRIF conflicts

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/NST_SRC/agrif_top_sponge.F90

    r9019 r9031  
    4444      ! 
    4545#if defined SPONGE_TOP 
    46       zcoef = REAL( Agrif_NbStepint(), wp ) / Agrif_rhot() 
     46!! Assume persistence  
     47      timecoeff = REAL(Agrif_rhot()-1,wp)/REAL(Agrif_rhot()) 
    4748      CALL Agrif_sponge 
    4849      Agrif_SpecialValue    = 0._wp 
     
    6869      REAL(wp), DIMENSION(i1:i2,j1:j2)             ::   ztu, ztv 
    6970      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2) ::   trbdiff 
     71      ! vertical interpolation: 
     72      REAL(wp), DIMENSION(i1:i2,j1:j2,jpk,n1:n2) ::tabres_child 
     73      REAL(wp), DIMENSION(k1:k2,n1:n2-1) :: tabin 
     74      REAL(wp), DIMENSION(k1:k2) :: h_in 
     75      REAL(wp), DIMENSION(1:jpk) :: h_out 
     76      INTEGER :: N_in, N_out 
     77      REAL(wp) :: h_diff 
    7078      !!---------------------------------------------------------------------- 
    7179      ! 
    7280      IF( before ) THEN 
    73          tabres(i1:i2,j1:j2,k1:k2,n1:n2) = trn(i1:i2,j1:j2,k1:k2,n1:n2) 
     81         DO jn = 1, jptra 
     82            DO jk=k1,k2 
     83               DO jj=j1,j2 
     84                  DO ji=i1,i2 
     85                     tabres(ji,jj,jk,jn) = trb(ji,jj,jk,jn) 
     86                  END DO 
     87               END DO 
     88            END DO 
     89         END DO 
     90 
     91# if defined key_vertical 
     92         DO jk=k1,k2 
     93            DO jj=j1,j2 
     94               DO ji=i1,i2 
     95                  tabres(ji,jj,jk,jpts+1) = tmask(ji,jj,jk) * e3t_n(ji,jj,jk)  
     96               END DO 
     97            END DO 
     98         END DO 
     99# endif 
    74100      ELSE       
    75 !!gm line below use of :,:  versus i1:i2,j1:j2  ....   strange, not wrong.    ===>> to be corrected 
    76          trbdiff(:,:,:,:) = trb(i1:i2,j1:j2,:,:) - tabres(:,:,:,:)       
     101# if defined key_vertical 
     102         tabres_child(:,:,:,:) = 0. 
     103         DO jj=j1,j2 
     104            DO ji=i1,i2 
     105               N_in = 0 
     106               DO jk=k1,k2 !k2 = jpk of parent grid 
     107                  IF (tabres(ji,jj,jk,n2) == 0) EXIT 
     108                  N_in = N_in + 1 
     109                  tabin(jk,:) = tabres(ji,jj,jk,n1:n2-1) 
     110                  h_in(N_in) = tabres(ji,jj,jk,n2) 
     111               END DO 
     112               N_out = 0 
     113               DO jk=1,jpk ! jpk of child grid 
     114                  IF (tmask(ji,jj,jk) == 0) EXIT  
     115                  N_out = N_out + 1 
     116                  h_out(jk) = e3t_n(ji,jj,jk) !Child grid scale factors. Could multiply by e1e2t here instead of division above 
     117               ENDDO 
     118               IF (N_in > 0) THEN 
     119                  h_diff = sum(h_out(1:N_out))-sum(h_in(1:N_in)) 
     120                  tabres(ji,jj,k2,:) = tabres(ji,jj,k2-1,:) !what is this line for????? 
     121                  DO jn=1,jptra 
     122                     call reconstructandremap(tabin(1:N_in,jn),h_in,tabres_child(ji,jj,1:N_out,jn),h_out,N_in,N_out) 
     123                  ENDDO 
     124               ENDIF 
     125            ENDDO 
     126         ENDDO 
     127# endif 
     128 
     129         DO jj=j1,j2 
     130            DO ji=i1,i2 
     131               DO jk=1,jpkm1 
     132# if defined key_vertical 
     133                  trbdiff(ji,jj,jk,1:jptra) = trb(ji,jj,jk,1:jptra) - tabres_child(ji,jj,jk,1:jptra) 
     134# else 
     135                  trbdiff(ji,jj,jk,1:jptra) = trb(ji,jj,jk,1:jptra) - tabres(ji,jj,jk,1:jptra) 
     136# endif 
     137               ENDDO 
     138            ENDDO 
     139         ENDDO 
     140 
    77141         DO jn = 1, jptra 
    78142            DO jk = 1, jpkm1 
Note: See TracChangeset for help on using the changeset viewer.