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 15331 – NEMO

Changeset 15331


Ignore:
Timestamp:
2021-10-05T14:51:14+02:00 (2 years ago)
Author:
jchanut
Message:

#2638, add closed seas filling algorithm (inside AGRIF zooms only)

Location:
utils/tools/DOMAINcfg
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • utils/tools/DOMAINcfg/1_namelist_ref

    r15279 r15331  
    171171&namagrif      !  AGRIF zoom                                            ("key_agrif") 
    172172!----------------------------------------------------------------------- 
     173   ln_remove_closedseas = .true. ! Fill lakes inside zoom 
    173174   ln_vert_remap = .false. ! volume conserving update  
    174175   npt_connect   = 2 
  • utils/tools/DOMAINcfg/2_namelist_ref

    r15279 r15331  
    171171&namagrif      !  AGRIF zoom                                            ("key_agrif") 
    172172!----------------------------------------------------------------------- 
     173   ln_remove_closedseas = .true. ! Fill lakes inside zoom 
    173174   ln_vert_remap = .false. ! volume conserving update  
    174175   npt_connect   = 2 
  • utils/tools/DOMAINcfg/3_namelist_ref

    r15279 r15331  
    171171&namagrif      !  AGRIF zoom                                            ("key_agrif") 
    172172!----------------------------------------------------------------------- 
     173   ln_remove_closedseas = .true. ! Fill lakes inside zoom 
    173174   ln_vert_remap = .false. ! volume conserving update  
    174175   npt_connect   = 2 
  • utils/tools/DOMAINcfg/namelist_ref

    r15279 r15331  
    171171&namagrif      !  AGRIF zoom                                            ("key_agrif") 
    172172!----------------------------------------------------------------------- 
     173   ln_remove_closedseas = .true. ! Fill lakes inside zoom 
    173174   ln_vert_remap = .false. ! volume conserving update  
    174175   npt_connect   = 2 
  • utils/tools/DOMAINcfg/src/agrif_parameters.F90

    r15279 r15331  
    66 
    77#if defined key_agrif 
    8  
    9         LOGICAL :: ln_vert_remap ! =T is using volume conserving update 
     8        LOGICAL :: ln_remove_closedseas=.FALSE. 
     9        LOGICAL :: ln_vert_remap=.FALSE. ! =T is using volume conserving update 
    1010   INTEGER :: npt_copy      ! area (in coarse grid points) with piecewise 
    1111                                 ! constant bathymetry inside child zoom: should equal the sponge length 
  • utils/tools/DOMAINcfg/src/agrif_user.F90

    r15279 r15331  
    11071107      INTEGER :: imin, imax, jmin, jmax 
    11081108 
    1109       NAMELIST/namagrif/ ln_vert_remap, npt_connect, npt_copy  
     1109      NAMELIST/namagrif/ ln_vert_remap, ln_remove_closedseas, npt_connect, npt_copy  
    11101110 
    11111111  !    REWIND( numnam_ref )              ! Namelist namagrif in reference namelist : nesting parameters 
     
    11261126            WRITE(numout,*) '   Namelist namagrif : set nesting parameters' 
    11271127            WRITE(numout,*) '      ln_vert_remap        = ', ln_vert_remap  
     1128            WRITE(numout,*) '      ln_remove_closedseas = ', ln_remove_closedseas 
    11281129            WRITE(numout,*) '      npt_copy             = ', npt_copy 
    11291130            WRITE(numout,*) '      npt_connect          = ', npt_connect 
     
    12341235      ENDIF 
    12351236 
     1237      IF ( .NOT.Agrif_Root() ) THEN 
     1238         IF( (.NOT.ln_vert_remap).AND.(jpkglo>Agrif_Parent(jpkglo)) ) &  
     1239         CALL ctl_stop( 'STOP',    & 
     1240               &   'AGRIF children must have less or equal number of & 
     1241               &     vertical levels without ln_vert_remap defined' ) 
     1242      ENDIF 
    12361243      IF(lwp) THEN                     ! Control print 
    12371244         WRITE(numout,*) 
  • utils/tools/DOMAINcfg/src/dombat.F90

    r15162 r15331  
    1212#endif    
    1313   USE bilinear_interp 
     14   USE dom_oce 
    1415 
    1516   IMPLICIT NONE 
     
    2526      INTEGER :: iimin,iimax,jjmin,jjmax 
    2627      INTEGER :: tabdim1, tabdim2, nxhr, nyhr, nxyhr 
     28      INTEGER :: nbadd, istart, iend, jstart, jend 
    2729      INTEGER, DIMENSION(2) :: ddims 
    2830      INTEGER, DIMENSION(3) :: status 
     
    410412      CALL lbc_lnk( 'dom_bat', bathy, 'T', 1.,kfillmode = jpfillcopy) 
    411413 
     414#if defined key_agrif 
     415      IF (ln_remove_closedseas.AND.(.NOT.Agrif_Root())) THEN 
     416         ALLOCATE(bathy_test(jpi,jpj)) 
     417         bathy_test(:,:) = 0._wp  
     418         ! 
     419         ! --- West --- ! 
     420         IF(lk_west) THEN 
     421            istart = nn_hls + 2 
     422            iend   = nn_hls + nbghostcells  
     423            DO ji = mi0(istart), mi1(iend) 
     424               DO jj = 1, jpj 
     425                  IF ( bathy (ji,jj)/=0._wp )   bathy_test(ji,jj) = 1._wp 
     426               END DO 
     427            END DO 
     428         ENDIF 
     429         ! 
     430         ! --- East --- ! 
     431         IF(lk_east) THEN 
     432            istart = jpiglo - ( nn_hls + nbghostcells -1 )  
     433            iend   = jpiglo - ( nn_hls + 1 ) 
     434            DO ji = mi0(istart), mi1(iend) 
     435               DO jj = 1, jpj 
     436                  IF ( bathy (ji,jj)/=0._wp )   bathy_test(ji,jj) = 1._wp 
     437               END DO 
     438            END DO 
     439         ENDIF 
     440         ! 
     441         ! --- South --- ! 
     442         IF(lk_south) THEN 
     443            jstart = nn_hls + 2 
     444            jend   = nn_hls + nbghostcells 
     445            DO jj = mj0(jstart), mj1(jend) 
     446               DO ji = 1, jpi 
     447                  IF ( bathy (ji,jj)/=0._wp )   bathy_test(ji,jj) = 1._wp 
     448               END DO 
     449            END DO 
     450         ENDIF 
     451         ! 
     452         ! --- North --- ! 
     453         IF(lk_north) THEN 
     454            jstart = jpjglo - ( nn_hls + nbghostcells -1 ) 
     455            jend   = jpjglo - ( nn_hls + 1 ) 
     456            DO jj = mj0(jstart), mj1(jend) 
     457               DO ji = 1, jpi 
     458                  IF ( bathy (ji,jj)/=0._wp )  bathy_test(ji,jj) = 1._wp 
     459               END DO 
     460            END DO 
     461         ENDIF 
     462          
     463         nbadd = 1 
     464         DO WHILE ( nbadd/=0 ) 
     465            nbadd = 0 
     466            DO ji = 1+nn_hls, jpi-nn_hls 
     467               DO jj = 1+nn_hls, jpj-nn_hls            
     468                  IF (bathy(ji,jj) > 0._wp) THEN 
     469                     IF (MAX(bathy_test(ji,jj+1),bathy_test(ji,jj-1), &  
     470                     &       bathy_test(ji-1,jj),bathy_test(ji+1,jj))==1._wp)  THEN 
     471                        IF (bathy_test(ji,jj)/=1._wp) nbadd = nbadd + 1 
     472                        bathy_test(ji,jj)=1._wp 
     473                     ENDIF 
     474                  ENDIF 
     475               END DO 
     476            END DO 
     477            IF( lk_mpp )   CALL mpp_sum('dom_bat', nbadd ) 
     478            CALL lbc_lnk( 'dom_bat', bathy_test, 'T', 1.,kfillmode = jpfillcopy) 
     479 
     480         END DO 
     481 
     482         WHERE(bathy_test==0._wp) bathy = 0._wp 
     483         DEALLOCATE(bathy_test) 
     484      ENDIF 
     485#endif 
     486 
     487 
    412488       ! Correct South and North 
    413489! #if defined key_agrif 
Note: See TracChangeset for help on using the changeset viewer.