Ignore:
Timestamp:
2020-06-16T12:07:28+02:00 (4 months ago)
Author:
rblod
Message:

ticket #2129 : major corrections in domcfg

File:
1 edited

Legend:

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

    r13104 r13109  
    2929      ALLOCATE(e3t_interp(jpi,jpj,jpk)) 
    3030      e3t_interp = -10. 
    31       Agrif_UseSpecialValue = .TRUE. 
     31      Agrif_UseSpecialValue = .FALSE. 
    3232      Agrif_SpecialValue = 0. 
    3333      CALL Agrif_Bc_variable(e3t_connect_id, procname = connect_e3t_connect) 
     
    9090      !!----------------------------------------------------------------------  
    9191      INTEGER :: ji, jj, jk  
    92       REAL(wp), DIMENSION(i1:i2,j1:j2) :: bathy_local    
     92      REAL(wp), DIMENSION(i1:i2,j1:j2) :: bathy_local, bathy_interp 
     93      REAL(wp) :: zdepth, zmax  
    9394      ! 
    9495      IF( before) THEN 
     
    114115            DO ji=i1,i2 
    115116               bathy_local (ji,jj) = SUM ( e3t_0(ji,jj, 1:mbkt(ji,jj) ) ) * ssmask(ji,jj) 
    116             END DO 
    117          END DO 
     117               bathy_interp (ji,jj) = ptab(ji,jj,jpk+1) 
     118 
     119        ! Connected bathymetry 
     120               bathy_local(ji,jj)=(1.-ztabramp(ji,jj))*bathy_local(ji,jj)+ztabramp(ji,jj)*bathy_interp(ji,jj) 
     121            END DO 
     122         END DO 
     123 
     124        ! Update mbkt and ssmask 
     125         zmax = gdepw_1d(jpk) + e3t_1d(jpk) 
     126         bathy_local(:,:) = MAX(MIN(zmax,bathy_local(:,:)),0._wp) 
     127         WHERE( bathy_local(i1:i2,j1:j2) == 0._wp); mbathy(i1:i2,j1:j2) = 0 
     128         ELSE WHERE                       ; mbathy(i1:i2,j1:j2) = jpkm1 
     129         END WHERE 
     130 
     131         DO jk=jpkm1,1,-1 
     132           zdepth = gdepw_1d(jk)+MIN(e3zps_min,e3t_1d(jk)*e3zps_rat) 
     133           WHERE( 0._wp < bathy_local(:,:) .AND. bathy_local(:,:) <= zdepth ) mbathy(i1:i2,j1:j2) = jk-1 
     134         ENDDO 
     135 
     136         WHERE (mbathy(i1:i2,j1:j2) == 0); ssmask(i1:i2,j1:j2) = 0 
     137         ELSE WHERE                      ; ssmask(i1:i2,j1:j2) = 1. 
     138         END WHERE 
     139          
     140         mbkt(i1:i2,j1:j2) = MAX( mbathy(i1:i2,j1:j2), 1 ) 
     141 
    118142         ! 
    119143         DO jk=1,jpk 
     
    125149                     e3t_0(ji,jj,jk) = ( 1. - ztabramp(ji,jj) )*e3t_0(ji,jj,jk) + ztabramp(ji,jj)*e3t_interp(ji,jj,jk) 
    126150                  ENDIF 
     151                  IF( jk > mbkt(ji,jj)) THEN 
     152                    e3t_0(ji,jj,jk) = e3t_1d(jk) 
     153                  ENDIF 
    127154             END DO 
    128155           END DO 
Note: See TracChangeset for help on using the changeset viewer.