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 14644 for NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/NST/agrif_top_interp.F90 – NEMO

Ignore:
Timestamp:
2021-03-26T15:33:49+01:00 (3 years ago)
Author:
sparonuz
Message:

Merge trunk -r14642:HEAD

Location:
NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final

    • Property svn:externals
      •  

        old new  
        99 
        1010# SETTE 
        11 ^/utils/CI/sette_wave@13990         sette 
         11^/utils/CI/sette@14244        sette 
  • NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/NST/agrif_top_interp.F90

    r14200 r14644  
    120120                  ! Build vertical grids: 
    121121                  N_in = mbkt_parent(ji,jj) 
    122                   ! Input grid (account for partial cells if any): 
    123                   DO jk=1,N_in 
    124                      z_in(jk) = ptab(ji,jj,jk,n2) - ptab(ji,jj,k2,n2) 
    125                      tabin(jk,1:jptra) = ptab(ji,jj,jk,1:jptra) 
    126                   END DO 
     122                  N_out = mbkt(ji,jj) 
     123                  IF (N_in*N_out > 0) THEN 
     124                     ! Input grid (account for partial cells if any): 
     125                     DO jk=1,N_in 
     126                        z_in(jk) = ptab(ji,jj,jk,n2) - ptab(ji,jj,k2,n2) 
     127                        tabin(jk,1:jptra) = ptab(ji,jj,jk,1:jptra) 
     128                     END DO 
    127129                   
    128                   ! Intermediate grid: 
    129                   IF ( l_vremap ) THEN 
    130                      DO jk = 1, N_in 
    131                         h_in_i(jk) = e3t0_parent(ji,jj,jk) * &  
    132                           &       (1._wp + ptab(ji,jj,k2,n2)/(ht0_parent(ji,jj)*ssmask(ji,jj) + 1._wp - ssmask(ji,jj))) 
    133                      END DO 
    134                      z_in_i(1) = 0.5_wp * h_in_i(1) 
    135                      DO jk=2,N_in 
    136                         z_in_i(jk) = z_in_i(jk-1) + 0.5_wp * ( h_in_i(jk) + h_in_i(jk-1) ) 
    137                      END DO 
    138                      z_in_i(1:N_in) = z_in_i(1:N_in)  - ptab(ji,jj,k2,n2) 
    139                   ENDIF 
    140  
    141                   ! Output (Child) grid: 
    142                   N_out = mbkt(ji,jj) 
    143                   DO jk=1,N_out 
    144                      h_out(jk) = e3t(ji,jj,jk,Krhs_a) 
    145                   END DO 
    146                   z_out(1) = 0.5_wp * h_out(1) 
    147                   DO jk=2,N_out 
    148                      z_out(jk) = z_out(jk-1) + 0.5_wp * ( h_out(jk)+h_out(jk-1) ) 
    149                   END DO 
    150                   IF (.NOT.ln_linssh) z_out(1:N_out) = z_out(1:N_out)  - ssh(ji,jj,Krhs_a)                
    151  
    152                   IF (N_in*N_out > 0) THEN 
     130                     ! Intermediate grid: 
     131                     IF ( l_vremap ) THEN 
     132                        DO jk = 1, N_in 
     133                           h_in_i(jk) = e3t0_parent(ji,jj,jk) * &  
     134                             &       (1._wp + ptab(ji,jj,k2,n2)/(ht0_parent(ji,jj)*ssmask(ji,jj) + 1._wp - ssmask(ji,jj))) 
     135                        END DO 
     136                        z_in_i(1) = 0.5_wp * h_in_i(1) 
     137                        DO jk=2,N_in 
     138                           z_in_i(jk) = z_in_i(jk-1) + 0.5_wp * ( h_in_i(jk) + h_in_i(jk-1) ) 
     139                        END DO 
     140                        z_in_i(1:N_in) = z_in_i(1:N_in)  - ptab(ji,jj,k2,n2) 
     141                     ENDIF 
     142 
     143                     ! Output (Child) grid: 
     144                     DO jk=1,N_out 
     145                        h_out(jk) = e3t(ji,jj,jk,Krhs_a) 
     146                     END DO 
     147                     z_out(1) = 0.5_wp * h_out(1) 
     148                     DO jk=2,N_out 
     149                        z_out(jk) = z_out(jk-1) + 0.5_wp * ( h_out(jk)+h_out(jk-1) ) 
     150                     END DO 
     151                     IF (.NOT.ln_linssh) z_out(1:N_out) = z_out(1:N_out)  - ssh(ji,jj,Krhs_a)                
     152 
    153153                     IF( l_ini_child ) THEN 
    154154                        CALL remap_linear(tabin(1:N_in,1:jptra),z_in(1:N_in),tr(ji,jj,1:N_out,1:jptra,Krhs_a),          & 
Note: See TracChangeset for help on using the changeset viewer.