Ignore:
Timestamp:
2019-08-20T14:14:56+02:00 (14 months ago)
Author:
acc
Message:

Branch: dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps_rewrite_time_filterswap. Minor bugfix in step.F90 to enable AGRIF SETTE tests to run. Also merged prettification changes to NST routines from the dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps branch. Neither AGRIF_DEMO nor VORTEX restart perfectly (drifting after 8 and 121 timesteps, respectively).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps_rewrite_time_filterswap/src/NST/agrif_top_interp.F90

    r11053 r11463  
    151151               ibdy = nlci-nbghostcells 
    152152               DO jn = 1, jptra 
    153                   tr(ibdy+1,jmin:jmax,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn) + z2 * ptab_child(ibdy,jmin:jmax,1:jpkm1,jn) 
     153                  tr(ibdy+1,jmin:jmax,1:jpkm1,jn,Krhs_a) =  z1 * ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn)  & 
     154                    &                                     + z2 * ptab_child(ibdy  ,jmin:jmax,1:jpkm1,jn) 
    154155                  DO jk = 1, jpkm1 
    155156                     DO jj = jmin,jmax 
     
    157158                           tr(ibdy,jj,jk,jn,Krhs_a) = tr(ibdy+1,jj,jk,jn,Krhs_a) * tmask(ibdy,jj,jk) 
    158159                        ELSE 
    159                            tr(ibdy,jj,jk,jn,Krhs_a)=(z4*tr(ibdy+1,jj,jk,jn,Krhs_a)+z3*tr(ibdy-1,jj,jk,jn,Krhs_a))*tmask(ibdy,jj,jk) 
     160                           tr(ibdy,jj,jk,jn,Krhs_a) = (  z4 * tr(ibdy+1,jj,jk,jn,Krhs_a)     & 
     161                             &                         + z3 * tr(ibdy-1,jj,jk,jn,Krhs_a)     & 
     162                             &                        ) *  tmask(ibdy  ,jj,jk) 
    160163                           IF( uu(ibdy-1,jj,jk,Kmm_a) > 0._wp ) THEN 
    161                               tr(ibdy,jj,jk,jn,Krhs_a)=( z6*tr(ibdy-1,jj,jk,jn,Krhs_a)+z5*tr(ibdy+1,jj,jk,jn,Krhs_a) &  
    162                                                  + z7*tr(ibdy-2,jj,jk,jn,Krhs_a) ) * tmask(ibdy,jj,jk) 
    163                            ENDIF 
    164                         ENDIF 
    165                      END DO 
    166                   END DO 
    167                   ! Restore ghost points: 
    168                   tr(ibdy+1,jmin:jmax,1:jpkm1,jn,Krhs_a) = ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn) * tmask(ibdy+1,jmin:jmax,1:jpkm1) 
     164                              tr(ibdy,jj,jk,jn,Krhs_a) = (  z6 * tr(ibdy-1,jj,jk,jn,Krhs_a)  & 
     165                                &                         + z5 * tr(ibdy+1,jj,jk,jn,Krhs_a)  &  
     166                                &                         + z7 * tr(ibdy-2,jj,jk,jn,Krhs_a)  & 
     167                                &                         ) * tmask(ibdy  ,jj,jk) 
     168                           ENDIF 
     169                        ENDIF 
     170                     END DO 
     171                  END DO 
     172                  ! Restore ghost points: 
     173                  tr(ibdy+1,jmin:jmax,1:jpkm1,jn,Krhs_a) = ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn) & 
     174                    &                                     *     tmask(ibdy+1,jmin:jmax,1:jpkm1) 
    169175               END DO 
    170176            ENDIF 
     
    180186               jbdy = nlcj-nbghostcells          
    181187               DO jn = 1, jptra 
    182                   tr(imin:imax,jbdy+1,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(imin:imax,jbdy+1,1:jpkm1,jn) + z2 * ptab_child(imin:imax,jbdy,1:jpkm1,jn) 
     188                  tr(imin:imax,jbdy+1,1:jpkm1,jn,Krhs_a) =  z1 * ptab_child(imin:imax,jbdy+1,1:jpkm1,jn) & 
     189                    &                                     + z2 * ptab_child(imin:imax,jbdy  ,1:jpkm1,jn) 
    183190                  DO jk = 1, jpkm1 
    184191                     DO ji = imin,imax 
     
    186193                           tr(ji,jbdy,jk,jn,Krhs_a) = tr(ji,jbdy+1,jk,jn,Krhs_a) * tmask(ji,jbdy,jk) 
    187194                        ELSE 
    188                            tr(ji,jbdy,jk,jn,Krhs_a)=(z4*tr(ji,jbdy+1,jk,jn,Krhs_a)+z3*tr(ji,jbdy-1,jk,jn,Krhs_a))*tmask(ji,jbdy,jk)         
     195                           tr(ji,jbdy,jk,jn,Krhs_a) = ( z4 * tr(ji,jbdy+1,jk,jn,Krhs_a)  
     196                             &                        + z3 * tr(ji,jbdy-1,jk,jn,Krhs_a) ) * tmask(ji,jbdy,jk)         
    189197                           IF (vv(ji,jbdy-1,jk,Kmm_a) > 0._wp ) THEN 
    190                               tr(ji,jbdy,jk,jn,Krhs_a)=( z6*tr(ji,jbdy-1,jk,jn,Krhs_a)+z5*tr(ji,jbdy+1,jk,jn,Krhs_a)  & 
    191                                                  + z7*tr(ji,jbdy-2,jk,jn,Krhs_a) ) * tmask(ji,jbdy,jk) 
    192                            ENDIF 
    193                         ENDIF 
    194                      END DO 
    195                   END DO 
    196                   ! Restore ghost points: 
    197                   tr(imin:imax,jbdy+1,1:jpkm1,jn,Krhs_a) = ptab_child(imin:imax,jbdy+1,1:jpkm1,jn) * tmask(imin:imax,jbdy+1,1:jpkm1) 
     198                              tr(ji,jbdy,jk,jn,Krhs_a) = (  z6 * tr(ji,jbdy-1,jk,jn,Krhs_a)                       & 
     199                                &                         + z5 * tr(ji,jbdy+1,jk,jn,Krhs_a)                       & 
     200                                &                         + z7 * tr(ji,jbdy-2,jk,jn,Krhs_a) ) * tmask(ji,jbdy,jk) 
     201                           ENDIF 
     202                        ENDIF 
     203                     END DO 
     204                  END DO 
     205                  ! Restore ghost points: 
     206                  tr(imin:imax,jbdy+1,1:jpkm1,jn,Krhs_a) = ptab_child(imin:imax,jbdy+1,1:jpkm1,jn)  & 
     207                    &                                     *     tmask(imin:imax,jbdy+1,1:jpkm1) 
    198208               END DO 
    199209            ENDIF 
     
    209219               ibdy = 1+nbghostcells        
    210220               DO jn = 1, jptra 
    211                   tr(ibdy-1,jmin:jmax,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn) + z2 * ptab_child(ibdy,jmin:jmax,1:jpkm1,jn) 
     221                  tr(ibdy-1,jmin:jmax,1:jpkm1,jn,Krhs_a) =  z1 * ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn)         & 
     222                    &                                     + z2 * ptab_child(ibdy  ,jmin:jmax,1:jpkm1,jn) 
    212223                  DO jk = 1, jpkm1 
    213224                     DO jj = jmin,jmax 
     
    215226                           tr(ibdy,jj,jk,jn,Krhs_a) = tr(ibdy-1,jj,jk,jn,Krhs_a) * tmask(ibdy,jj,jk) 
    216227                        ELSE 
    217                            tr(ibdy,jj,jk,jn,Krhs_a)=(z4*tr(ibdy-1,jj,jk,jn,Krhs_a)+z3*tr(ibdy+1,jj,jk,jn,Krhs_a))*tmask(ibdy,jj,jk)         
     228                           tr(ibdy,jj,jk,jn,Krhs_a) = (  z4 * tr(ibdy-1,jj,jk,jn,Krhs_a)                          & 
     229                             &                         + z3 * tr(ibdy+1,jj,jk,jn,Krhs_a) ) * tmask(ibdy,jj,jk)         
    218230                           IF( uu(ibdy,jj,jk,Kmm_a) < 0._wp ) THEN 
    219                               tr(ibdy,jj,jk,jn,Krhs_a)=( z6*tr(ibdy+1,jj,jk,jn,Krhs_a)+z5*tr(ibdy-1,jj,jk,jn,Krhs_a) & 
    220                                                  + z7*tr(ibdy+2,jj,jk,jn,Krhs_a) ) * tmask(ibdy,jj,jk) 
    221                            ENDIF 
    222                         ENDIF 
    223                      END DO 
    224                   END DO 
    225                   ! Restore ghost points: 
    226                   tr(ibdy-1,jmin:jmax,1:jpkm1,jn,Krhs_a) = ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn) * tmask(ibdy-1,jmin:jmax,1:jpkm1) 
     231                              tr(ibdy,jj,jk,jn,Krhs_a) = (  z6 * tr(ibdy+1,jj,jk,jn,Krhs_a)                       & 
     232                                &                         + z5 * tr(ibdy-1,jj,jk,jn,Krhs_a)                       & 
     233                                &                         + z7 * tr(ibdy+2,jj,jk,jn,Krhs_a) ) * tmask(ibdy,jj,jk) 
     234                           ENDIF 
     235                        ENDIF 
     236                     END DO 
     237                  END DO 
     238                  ! Restore ghost points: 
     239                  tr(ibdy-1,jmin:jmax,1:jpkm1,jn,Krhs_a) = ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn)                & 
     240                    &                                     *     tmask(ibdy-1,jmin:jmax,1:jpkm1) 
    227241               END DO 
    228242            ENDIF 
     
    238252               jbdy=1+nbghostcells         
    239253               DO jn = 1, jptra 
    240                   tr(imin:imax,jbdy-1,1:jpkm1,jn,Krhs_a) = z1 * ptab_child(imin:imax,jbdy-1,1:jpkm1,jn) + z2 * ptab_child(imin:imax,jbdy,1:jpkm1,jn) 
     254                  tr(imin:imax,jbdy-1,1:jpkm1,jn,Krhs_a) =  z1 * ptab_child(imin:imax,jbdy-1,1:jpkm1,jn)          & 
     255                    &                                     + z2 * ptab_child(imin:imax,jbdy  ,1:jpkm1,jn) 
    241256                  DO jk = 1, jpkm1       
    242257                     DO ji = imin,imax 
    243258                        IF( vmask(ji,jbdy,jk) == 0._wp ) THEN 
    244                            tr(ji,jbdy,jk,jn,Krhs_a)=tr(ji,jbdy-1,jk,jn,Krhs_a) * tmask(ji,jbdy,jk) 
    245                         ELSE 
    246                            tr(ji,jbdy,jk,jn,Krhs_a)=(z4*tr(ji,jbdy-1,jk,jn,Krhs_a)+z3*tr(ji,jbdy+1,jk,jn,Krhs_a))*tmask(ji,jbdy,jk) 
     259                           tr(ji,jbdy,jk,jn,Krhs_a) = tr(ji,jbdy-1,jk,jn,Krhs_a) * tmask(ji,jbdy,jk) 
     260                        ELSE 
     261                           tr(ji,jbdy,jk,jn,Krhs_a) = (  z4 * tr(ji,jbdy-1,jk,jn,Krhs_a)                          & 
     262                             &                         + z3 * tr(ji,jbdy+1,jk,jn,Krhs_a) ) * tmask(ji,jbdy,jk) 
    247263                           IF( vv(ji,jbdy,jk,Kmm_a) < 0._wp ) THEN 
    248                               tr(ji,jbdy,jk,jn,Krhs_a)=( z6*tr(ji,jbdy+1,jk,jn,Krhs_a)+z5*tr(ji,jbdy-1,jk,jn,Krhs_a) &  
    249                                                  + z7*tr(ji,jbdy+2,jk,jn,Krhs_a) ) * tmask(ji,jbdy,jk) 
    250                            ENDIF 
    251                         ENDIF 
    252                      END DO 
    253                   END DO 
    254                   ! Restore ghost points: 
    255                   tr(imin:imax,jbdy-1,1:jpkm1,jn,Krhs_a) = ptab_child(imin:imax,jbdy-1,1:jpkm1,jn) * tmask(imin:imax,jbdy-1,1:jpkm1) 
     264                              tr(ji,jbdy,jk,jn,Krhs_a) = (  z6 * tr(ji,jbdy+1,jk,jn,Krhs_a)                       & 
     265                                &                         + z5 * tr(ji,jbdy-1,jk,jn,Krhs_a)                       &  
     266                                &                         + z7 * tr(ji,jbdy+2,jk,jn,Krhs_a) ) * tmask(ji,jbdy,jk) 
     267                           ENDIF 
     268                        ENDIF 
     269                     END DO 
     270                  END DO 
     271                  ! Restore ghost points: 
     272                  tr(imin:imax,jbdy-1,1:jpkm1,jn,Krhs_a) = ptab_child(imin:imax,jbdy-1,1:jpkm1,jn)                & 
     273                    &                                     *     tmask(imin:imax,jbdy-1,1:jpkm1) 
    256274               END DO 
    257275            ENDIF 
Note: See TracChangeset for help on using the changeset viewer.