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 11802 for NEMO/branches/2019/dev_r11233_AGRIF-05_jchanut_vert_coord_interp/src/NST/agrif_oce_update.F90 – NEMO

Ignore:
Timestamp:
2019-10-25T17:15:20+02:00 (4 years ago)
Author:
jchanut
Message:

#2222, 1) add linear interpolation in vremap module.
2) Switch remapping of viscosity from polynomial to linear.
3) Move to truly volume weighted averages for parent to child update.

File:
1 edited

Legend:

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

    r11791 r11802  
    4949      IF (lwp.AND.lk_agrif_debug) Write(*,*) 'Update tracers  from grid Number',Agrif_Fixed() 
    5050 
    51 ! jc_alt      Agrif_UseSpecialValueInUpdate = .FALSE. 
    52       Agrif_UseSpecialValueInUpdate = .TRUE. 
     51      Agrif_UseSpecialValueInUpdate = .FALSE. 
     52! jc_alt      Agrif_UseSpecialValueInUpdate = .TRUE. 
    5353      Agrif_SpecialValueFineGrid    = 0._wp 
    5454      !  
     
    300300               DO jj=j1,j2 
    301301                  DO ji=i1,i2 
    302                      tabres(ji,jj,jk,jn) = (tsn(ji,jj,jk,jn) * e3t_n(ji,jj,jk) ) & 
    303                                          &  * tmask(ji,jj,jk) + (tmask(ji,jj,jk)-1._wp) * 999._wp 
    304 !jc_alt                     tabres(ji,jj,jk,jn) = tsn(ji,jj,jk,jn) * e3t_n(ji,jj,jk) 
     302!jc_alt 
     303!                     tabres(ji,jj,jk,jn) = (tsn(ji,jj,jk,jn) * e3t_n(ji,jj,jk) ) & 
     304!                                         &  * tmask(ji,jj,jk) + (tmask(ji,jj,jk)-1._wp) * 999._wp 
     305                     tabres(ji,jj,jk,jn) = tsn(ji,jj,jk,jn) * e3t_n(ji,jj,jk) 
    305306                  END DO 
    306307               END DO 
     
    310311            DO jj=j1,j2 
    311312               DO ji=i1,i2 
    312                   tabres(ji,jj,jk,n2) =      tmask(ji,jj,jk) * e3t_n(ji,jj,jk) & 
    313                                       &   + (tmask(ji,jj,jk) - 1._wp) * 999._wp 
    314 ! jc_alt                  tabres(ji,jj,jk,n2) = tmask(ji,jj,jk) * e3t_n(ji,jj,jk) 
     313!jc_alt 
     314!                  tabres(ji,jj,jk,n2) =      tmask(ji,jj,jk) * e3t_n(ji,jj,jk) & 
     315!                                      &   + (tmask(ji,jj,jk) - 1._wp) * 999._wp 
     316                  tabres(ji,jj,jk,n2) = tmask(ji,jj,jk) * e3t_n(ji,jj,jk) 
    315317               END DO 
    316318            END DO 
     
    323325               N_in = 0 
    324326               DO jk=k1,k2 !k2 = jpk of child grid 
    325                   IF (tabres(ji,jj,jk,n2) < -900._wp  ) EXIT 
    326 ! jc_alt                  IF (tabres(ji,jj,jk,n2) == 0._wp  ) EXIT 
     327! jc_alt 
     328!                  IF (tabres(ji,jj,jk,n2) < -900._wp  ) EXIT 
     329                  IF (tabres(ji,jj,jk,n2) == 0._wp  ) EXIT 
    327330                  N_in = N_in + 1 
    328331                  tabin(jk,:) = tabres(ji,jj,jk,n1:n2-1)/tabres(ji,jj,jk,n2) 
     
    476479      IF( before ) THEN 
    477480         zrhoy = Agrif_Rhoy() 
    478          AGRIF_SpecialValue = -999._wp 
     481!jc_alt 
     482!         AGRIF_SpecialValue = -999._wp 
    479483         DO jk=k1,k2 
    480484            DO jj=j1,j2 
    481485               DO ji=i1,i2 
    482                   tabres(ji,jj,jk,1) = zrhoy * e2u(ji,jj) * e3u_n(ji,jj,jk) * umask(ji,jj,jk) * un(ji,jj,jk)  & 
    483                                      &  + (umask(ji,jj,jk)-1._wp)*999._wp 
    484 ! jc_alt                  tabres(ji,jj,jk,1) = zrhoy * e2u(ji,jj) * e3u_n(ji,jj,jk) * umask(ji,jj,jk) * un(ji,jj,jk)   
    485                   tabres(ji,jj,jk,2) = zrhoy * umask(ji,jj,jk) * e2u(ji,jj) * e3u_n(ji,jj,jk)  & 
    486                                      &  + (umask(ji,jj,jk)-1._wp)*999._wp 
    487 ! jc_alt                  tabres(ji,jj,jk,2) = zrhoy * umask(ji,jj,jk) * e2u(ji,jj) * e3u_n(ji,jj,jk) 
     486!jc_alt 
     487!                  tabres(ji,jj,jk,1) = zrhoy * e2u(ji,jj) * e3u_n(ji,jj,jk) * umask(ji,jj,jk) * un(ji,jj,jk)  & 
     488!                                     &  + (umask(ji,jj,jk)-1._wp)*999._wp 
     489                  tabres(ji,jj,jk,1) = zrhoy * e2u(ji,jj) * e3u_n(ji,jj,jk) * umask(ji,jj,jk) * un(ji,jj,jk)   
     490!jc_alt 
     491!                  tabres(ji,jj,jk,2) = zrhoy * umask(ji,jj,jk) * e2u(ji,jj) * e3u_n(ji,jj,jk)  & 
     492!                                     &  + (umask(ji,jj,jk)-1._wp)*999._wp 
     493                  tabres(ji,jj,jk,2) = zrhoy * umask(ji,jj,jk) * e2u(ji,jj) * e3u_n(ji,jj,jk) 
    488494               END DO 
    489495            END DO 
     
    498504               tabin(:) = 0._wp 
    499505               DO jk=k1,k2 !k2=jpk of child grid 
    500                   IF( tabres(ji,jj,jk,2) < -900._wp) EXIT 
    501 ! jc_alt                  IF( tabres(ji,jj,jk,2) == 0.) EXIT 
     506!jc_alt 
     507!                  IF( tabres(ji,jj,jk,2) < -900._wp) EXIT 
     508                  IF( tabres(ji,jj,jk,2) == 0.) EXIT 
    502509                  N_in = N_in + 1 
    503510                  tabin(jk) = tabres(ji,jj,jk,1)/tabres(ji,jj,jk,2) 
     
    512519               IF (N_in * N_out > 0) THEN 
    513520                  h_diff = sum(h_out(1:N_out))-sum(h_in(1:N_in)) 
    514                   excess  = 0._wp 
     521                  excess = 0._wp 
    515522                  IF (h_diff < -1.e-4) THEN 
    516523!Even if bathy at T points match it's possible for the U points to be deeper in the child grid.  
     
    674681      IF( before ) THEN 
    675682         zrhox = Agrif_Rhox() 
    676          AGRIF_SpecialValue = -999._wp 
     683!jc_alt 
     684!         AGRIF_SpecialValue = -999._wp 
    677685         DO jk=k1,k2 
    678686            DO jj=j1,j2 
    679687               DO ji=i1,i2 
    680                   tabres(ji,jj,jk,1) = zrhox * e1v(ji,jj) * e3v_n(ji,jj,jk) * vmask(ji,jj,jk) * vn(ji,jj,jk) & 
    681                                      & + (vmask(ji,jj,jk)-1._wp) * 999._wp 
    682 ! jc_alt                  tabres(ji,jj,jk,1) = zrhox * e1v(ji,jj) * e3v_n(ji,jj,jk) * vmask(ji,jj,jk) * vn(ji,jj,jk)  
    683                   tabres(ji,jj,jk,2) = zrhox * e1v(ji,jj) * e3v_n(ji,jj,jk) * vmask(ji,jj,jk) & 
    684                                      & + (vmask(ji,jj,jk)-1._wp) * 999._wp 
    685 ! jc_alt                  tabres(ji,jj,jk,2) = zrhox * e1v(ji,jj) * e3v_n(ji,jj,jk) * vmask(ji,jj,jk) 
     688!jc_alt 
     689!                  tabres(ji,jj,jk,1) = zrhox * e1v(ji,jj) * e3v_n(ji,jj,jk) * vmask(ji,jj,jk) * vn(ji,jj,jk) & 
     690!                                     & + (vmask(ji,jj,jk)-1._wp) * 999._wp 
     691                  tabres(ji,jj,jk,1) = zrhox * e1v(ji,jj) * e3v_n(ji,jj,jk) * vmask(ji,jj,jk) * vn(ji,jj,jk)  
     692!jc_alt 
     693!                  tabres(ji,jj,jk,2) = zrhox * e1v(ji,jj) * e3v_n(ji,jj,jk) * vmask(ji,jj,jk) & 
     694!                                     & + (vmask(ji,jj,jk)-1._wp) * 999._wp 
     695                  tabres(ji,jj,jk,2) = zrhox * e1v(ji,jj) * e3v_n(ji,jj,jk) * vmask(ji,jj,jk) 
    686696               END DO 
    687697            END DO 
     
    694704               N_in = 0 
    695705               DO jk=k1,k2 
    696                   IF (tabres(ji,jj,jk,2) < -900._wp) EXIT 
    697 ! jc_alt                  IF (tabres(ji,jj,jk,2) == 0) EXIT 
     706!jc_alt 
     707!                  IF (tabres(ji,jj,jk,2) < -900._wp) EXIT 
     708                  IF (tabres(ji,jj,jk,2) == 0) EXIT 
    698709                  N_in = N_in + 1 
    699710                  tabin(jk) = tabres(ji,jj,jk,1)/tabres(ji,jj,jk,2) 
Note: See TracChangeset for help on using the changeset viewer.