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 13024 for utils/tools_dev_r12970_AGRIF_CMEMS/DOMAINcfg/src/agrif_connection.F90 – NEMO

Ignore:
Timestamp:
2020-06-03T16:26:23+02:00 (4 years ago)
Author:
rblod
Message:

First version of new nesting tools merged with domaincfg, see ticket #2129

File:
1 edited

Legend:

Unmodified
Added
Removed
  • utils/tools_dev_r12970_AGRIF_CMEMS/DOMAINcfg/src/agrif_connection.F90

    r12414 r13024  
    77      !!---------------------------------------------------------------------- 
    88      INTEGER  ::   ji, jj, ind1, ind2 
    9       INTEGER  ::   ispongearea 
     9      INTEGER  ::   ispongearea, istart 
    1010      REAL(wp) ::   z1_spongearea 
    1111      !!---------------------------------------------------------------------- 
     
    1515 
    1616         ALLOCATE(ztabramp(jpi,jpj)) 
    17          ispongearea  = 1 + npt_connect * Agrif_irhox() 
     17         ispongearea = 1 + npt_connect * Agrif_irhox() 
     18         istart = npt_copy * Agrif_irhox() 
    1819         z1_spongearea = 1._wp / REAL( ispongearea ) 
    1920          
     
    2122 
    2223         ! --- West --- ! 
    23          IF( (nbondi == -1) .OR. (nbondi == 2) ) THEN 
    24             ind1 = 1+nbghostcells 
    25             ind2 = 1+nbghostcells + ispongearea  
     24         IF( ((nbondi == -1) .OR. (nbondi == 2) ).AND. .NOT. (jperio == 1 .OR. jperio == 4 .OR. jperio == 6)) THEN 
     25            ind1 = 1+nbghostcells + istart 
     26            ind2 = ind1 + ispongearea  
    2627            DO jj = 1, jpj 
    2728               DO ji = ind1, ind2                 
     
    3233 
    3334         ! --- East --- ! 
    34          IF( (nbondi == 1) .OR. (nbondi == 2) ) THEN 
    35             ind1 = nlci - nbghostcells - ispongearea 
    36             ind2 = nlci - nbghostcells 
     35         IF( ((nbondi == 1) .OR. (nbondi == 2) ).AND. .NOT. (jperio == 1 .OR. jperio == 4 .OR. jperio == 6)) THEN 
     36            !ind1 = nlci - nbghostcells - ispongearea 
     37            ind2 = nlci - nbghostcells - istart 
     38            ind1 = ind2 -ispongearea 
     39            
     40             
    3741            DO jj = 1, jpj 
    3842               DO ji = ind1, ind2 
     
    4347 
    4448         ! --- South --- ! 
    45          IF( (nbondj == -1) .OR. (nbondj == 2) ) THEN 
    46             ind1 = 1+nbghostcells 
    47             ind2 = 1+nbghostcells + ispongearea 
     49         IF(( (nbondj == -1) .OR. (nbondj == 2) ).AND.(ln_bry_south)) THEN 
     50            ! ind1 = 1+nbghostcells 
     51            ! ind2 = 1+nbghostcells + ispongearea 
     52            ind1 = 1+nbghostcells + istart 
     53            ind2 = ind1 + ispongearea  
    4854            DO jj = ind1, ind2  
    4955               DO ji = 1, jpi 
     
    5561         ! --- North --- ! 
    5662         IF( (nbondj == 1) .OR. (nbondj == 2) ) THEN 
    57             ind1 = nlcj - nbghostcells - ispongearea 
    58             ind2 = nlcj - nbghostcells 
     63            ! ind1 = nlcj - nbghostcells - ispongearea 
     64            ! ind2 = nlcj - nbghostcells 
     65             
     66            ind2 = nlcj - nbghostcells - istart 
     67            ind1 = ind2 -ispongearea 
     68             
    5969            DO jj = ind1, ind2 
    6070               DO ji = 1, jpi 
     
    6777   END SUBROUTINE Agrif_connection 
    6878    
     79   SUBROUTINE Agrif_make_connection 
     80   use dom_oce 
     81   use agrif_parameters 
     82      !!---------------------------------------------------------------------- 
     83      !!                 *** ROUTINE  Agrif_Sponge *** 
     84      !!---------------------------------------------------------------------- 
     85      INTEGER  ::   ji, jj, ind1, ind2 
     86      INTEGER  ::   ispongearea, istart 
     87      REAL(wp) ::   z1_spongearea 
     88      !!---------------------------------------------------------------------- 
     89      ! 
     90         ! Define ramp from boundaries towards domain interior at T-points 
     91         ! Store it in ztabramp 
     92 
     93         ispongearea = 1 + npt_connect * Agrif_irhox() 
     94         istart = npt_copy * Agrif_irhox() 
     95 
     96         ! --- West --- ! 
     97         IF( (nbondi == -1) .OR. (nbondi == 2) ) THEN 
     98             
     99            ind1 = 1+nbghostcells + istart 
     100            ind2 = ind1 + ispongearea 
     101            DO jk=1,jpk             
     102             DO jj = 1, jpj 
     103               DO ji = ind1, ind2 
     104                 
     105                ! print *,'VAL = ',ztabramp(ji,jj)*e3t_interp(ji,jj,jk)+(1.-ztabramp(ji,jj))*e3t_0(ji,jj,jk), & 
     106                ! e3t_0(ji,jj,jk) 
     107                  e3t_0(ji,jj,jk) = ztabramp(ji,jj)*e3t_interp(ji,jj,jk)+(1.-ztabramp(ji,jj))*e3t_0(ji,jj,jk) 
     108               ENDDO 
     109              ENDDO 
     110            ENDDO 
     111         ENDIF 
     112 
     113         ! --- East --- ! 
     114         IF( (nbondi == 1) .OR. (nbondi == 2) ) THEN 
     115            ind2 = nlci - nbghostcells - istart 
     116            ind1 = ind2 -ispongearea 
     117            DO jk=1,jpk     
     118            DO jj = 1, jpj 
     119               DO ji = ind1, ind2 
     120                  e3t_0(ji,jj,jk) = ztabramp(ji,jj)*e3t_interp(ji,jj,jk)+(1.-ztabramp(ji,jj))*e3t_0(ji,jj,jk) 
     121               ENDDO 
     122            ENDDO 
     123            ENDDO 
     124         ENDIF 
     125 
     126         ! --- South --- ! 
     127         IF( (nbondj == -1) .OR. (nbondj == 2) ) THEN 
     128            ind1 = 1+nbghostcells + istart 
     129            ind2 = ind1 + ispongearea  
     130            DO jk=1,jpk     
     131            DO jj = ind1, ind2  
     132               DO ji = 1, jpi 
     133                  e3t_0(ji,jj,jk) = ztabramp(ji,jj)*e3t_interp(ji,jj,jk)+(1.-ztabramp(ji,jj))*e3t_0(ji,jj,jk) 
     134               END DO 
     135            ENDDO 
     136            ENDDO 
     137         ENDIF 
     138 
     139         ! --- North --- ! 
     140         IF( (nbondj == 1) .OR. (nbondj == 2) ) THEN 
     141             
     142            ind2 = nlcj - nbghostcells - istart 
     143            ind1 = ind2 -ispongearea 
     144            DO jk=1,jpk                
     145            DO jj = ind1, ind2 
     146               DO ji = 1, jpi 
     147                  e3t_0(ji,jj,jk) = ztabramp(ji,jj)*e3t_interp(ji,jj,jk)+(1.-ztabramp(ji,jj))*e3t_0(ji,jj,jk) 
     148               END DO 
     149            ENDDO 
     150            ENDDO 
     151         ENDIF 
     152      ! 
     153      ! 
     154   END SUBROUTINE Agrif_make_connection 
     155    
    69156#else 
    70157subroutine agrif_connection_empty 
Note: See TracChangeset for help on using the changeset viewer.