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 11991 for NEMO – NEMO

Changeset 11991 for NEMO


Ignore:
Timestamp:
2019-11-27T18:32:01+01:00 (4 years ago)
Author:
mathiot
Message:

ENHANCE-03_closea: rm useless variable, rename some variable and add comments

Location:
NEMO/branches/2019/ENHANCE-03_domcfg/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/dom_oce.F90

    r11604 r11991  
    239239   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:), TARGET :: wmask                        !: land/ocean mask at W- pts                
    240240 
    241    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: msk_opnsea, msk_closea                 !: open ocean mask, closed sea mask (all of them) 
    242    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: msk_glo  , msk_rnf  , msk_emp                !: closed sea masks 
    243    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: msk_gloid, msk_rnfid, msk_empid              !: closed sea masks 
     241   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: msk_opnsea  , msk_csundef                !: open ocean mask, closed sea mask (all of them) 
     242   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: msk_csglo   , msk_csrnf   , msk_csemp    !: closed sea masks 
     243   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: msk_csgrpglo, msk_csgrprnf, msk_csgrpemp !: closed sea masks 
    244244 
    245245   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   tpol, fpol          !: north fold mask (jperio= 3 or 4) 
     
    344344         &      hift  (jpi,jpj) , hifu  (jpi,jpj) , STAT=ierr(10) ) 
    345345 
    346       ALLOCATE( msk_opnsea(jpi,jpj), msk_closea(jpi,jpj),                   & 
    347          &      msk_glo  (jpi,jpj), msk_rnf  (jpi,jpj), msk_emp  (jpi,jpj), & 
    348          &      msk_gloid(jpi,jpj), msk_rnfid(jpi,jpj), msk_empid(jpi,jpj), STAT=ierr(11) ) 
     346      ALLOCATE( msk_opnsea  (jpi,jpj), msk_csundef (jpi,jpj),                        & 
     347         &      msk_csglo   (jpi,jpj), msk_csrnf   (jpi,jpj), msk_csemp   (jpi,jpj), & 
     348         &      msk_csgrpglo(jpi,jpj), msk_csgrprnf(jpi,jpj), msk_csgrpemp(jpi,jpj), STAT=ierr(11) ) 
    349349      ! 
    350350      dom_oce_alloc = MAXVAL(ierr) 
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/domain.F90

    r11604 r11991  
    416416      IF (ln_domclo) THEN 
    417417         ! mask for the open sea 
    418          CALL iom_rstput( 0, 0, inum, 'mask_opensea' , msk_opnsea, ktype = jp_i4 ) 
     418         CALL iom_rstput( 0, 0, inum, 'mask_opensea' , msk_opnsea  , ktype = jp_i4 ) 
    419419         ! mask for all the under closed sea 
    420          CALL iom_rstput( 0, 0, inum, 'mask_csundef' , msk_closea, ktype = jp_i4 ) 
     420         CALL iom_rstput( 0, 0, inum, 'mask_csundef' , msk_csundef , ktype = jp_i4 ) 
    421421         ! mask for global, local net precip, local net precip and evaporation correction 
    422          CALL iom_rstput( 0, 0, inum, 'mask_csglo'   , msk_glo   , ktype = jp_i4 ) 
    423          CALL iom_rstput( 0, 0, inum, 'mask_csemp'   , msk_emp   , ktype = jp_i4 ) 
    424          CALL iom_rstput( 0, 0, inum, 'mask_csrnf'   , msk_rnf   , ktype = jp_i4 ) 
     422         CALL iom_rstput( 0, 0, inum, 'mask_csglo'   , msk_csglo   , ktype = jp_i4 ) 
     423         CALL iom_rstput( 0, 0, inum, 'mask_csemp'   , msk_csemp   , ktype = jp_i4 ) 
     424         CALL iom_rstput( 0, 0, inum, 'mask_csrnf'   , msk_csrnf   , ktype = jp_i4 ) 
    425425         ! mask for the various river mouth (in case multiple lake in the same outlet) 
    426          CALL iom_rstput( 0, 0, inum, 'mask_csgrpglo', msk_gloid , ktype = jp_i4 ) 
    427          CALL iom_rstput( 0, 0, inum, 'mask_csgrpemp', msk_empid , ktype = jp_i4 ) 
    428          CALL iom_rstput( 0, 0, inum, 'mask_csgrprnf', msk_rnfid , ktype = jp_i4 ) 
     426         CALL iom_rstput( 0, 0, inum, 'mask_csgrpglo', msk_csgrpglo, ktype = jp_i4 ) 
     427         CALL iom_rstput( 0, 0, inum, 'mask_csgrpemp', msk_csgrpemp, ktype = jp_i4 ) 
     428         CALL iom_rstput( 0, 0, inum, 'mask_csgrprnf', msk_csgrprnf, ktype = jp_i4 ) 
    429429      END IF 
    430430      ! 
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/domclo.F90

    r11658 r11991  
    108108      CALL dom_ngb(rn_lon_opnsea, rn_lat_opnsea, jiseed, jjseed, zdistseed, 'T') 
    109109 
    110       !! 1.2 fill select cell to -1 
     110      !! 1.2 fill connected cell to -1 
    111111      CALL fill_pool( jiseed, jjseed, msk_opnsea, -1._wp ) 
    112112 
     
    134134      !! 1.4 Define closed sea mask (all of them, ie defined in the namelist or not) 
    135135      !! needed to remove the undefined closed seas at the end 
    136       msk_closea(:,:) = ( ssmask(:,:) - msk_opnsea(:,:) ) * 99._wp 
     136      msk_csundef(:,:) = ( ssmask(:,:) - msk_opnsea(:,:) ) * 99._wp 
    137137 
    138138      !!---------------------------------------------------------------------- 
     
    143143      jglo = 1 ; jrnf = 1 ; jemp = 1 
    144144      !! mask used to group lake by net evap/precip distribution technics 
    145       msk_glo(:,:) = msk_closea(:,:) 
    146       msk_rnf(:,:) = msk_closea(:,:) 
    147       msk_emp(:,:) = msk_closea(:,:) 
    148  
    149       !! mask used to group multiple lake with the same river mouth (great lake for example) 
    150       msk_gloid(:,:) = 0.0_wp 
    151       msk_rnfid(:,:) = 0.0_wp 
    152       msk_empid(:,:) = 0.0_wp 
     145      msk_csglo(:,:) = msk_csundef(:,:) 
     146      msk_csrnf(:,:) = msk_csundef(:,:) 
     147      msk_csemp(:,:) = msk_csundef(:,:) 
     148 
     149      !! mask used to define group of lake sharing the same river mouth 
     150      msk_csgrpglo(:,:) = 0.0_wp 
     151      msk_csgrprnf(:,:) = 0.0_wp 
     152      msk_csgrpemp(:,:) = 0.0_wp 
    153153 
    154154      IF (lwp) WRITE(numout,*)'closed seas: ' 
     
    164164         CASE('glo') 
    165165            jsch = jglo 
    166             zmsksrc(:,:) = msk_glo(:,:) 
    167             zmsktrg(:,:) = msk_gloid(:,:) 
     166            zmsksrc(:,:) = msk_csglo(:,:) 
     167            zmsktrg(:,:) = msk_csgrpglo(:,:) 
    168168         CASE('rnf')  
    169169            jsch = jrnf 
    170             zmsksrc(:,:) = msk_rnf(:,:) 
    171             zmsktrg(:,:) = msk_rnfid(:,:) 
     170            zmsksrc(:,:) = msk_csrnf(:,:) 
     171            zmsktrg(:,:) = msk_csgrprnf(:,:) 
    172172         CASE('emp') 
    173173            jsch = jemp  
    174             zmsksrc(:,:) = msk_emp(:,:) 
    175             zmsktrg(:,:) = msk_empid(:,:) 
     174            zmsksrc(:,:) = msk_csemp(:,:) 
     175            zmsktrg(:,:) = msk_csgrpemp(:,:) 
    176176         CASE DEFAULT 
    177177            CALL ctl_stop( 'STOP', 'domclo: ',TRIM(csch),' is an unknown target type for lake (should be glo, emp, rnf)' ) 
     
    186186 
    187187         !! sanity check on the msk value (closea mask should be 99 otherwise, lake already processed) 
    188          !! check if some lake are not connected 
     188         !! check if seed on land or lake already processed 
    189189         zchk = 0._wp 
    190          IF (mi0(jiseed) == mi1(jiseed) .AND. mj0(jjseed) == mj1(jjseed)) zchk = msk_closea(mi0(jiseed),mj0(jjseed)) 
     190         IF (mi0(jiseed) == mi1(jiseed) .AND. mj0(jjseed) == mj1(jjseed)) zchk = msk_csundef(mi0(jiseed),mj0(jjseed)) 
    191191         CALL mpp_max('domclo',zchk) 
    192192          
     
    215215 
    216216            !! fill close sea mask with counter value 
     217            !! and update undefined closed sea mask 
    217218            CALL fill_pool( jiseed, jjseed, zmsksrc, REAL(jsch  ,8)) 
    218219            WHERE (zmsksrc(:,:) == REAL(jsch,8)) 
    219                msk_closea = 0._wp 
     220               msk_csundef = 0._wp 
    220221               zmsktrg    = sn_lake(jcs)%idtrg 
    221222            END WHERE 
     
    224225            IF (cloc /= 'global') THEN 
    225226 
    226                !! set a minimum value for radius of the river influence 
     227               !! set value for radius of the river influence 
    227228               zradtrg = 0._wp 
    228229               IF (mi0(jiseed) == mi1(jiseed) .AND. mj0(jjseed) == mj1(jjseed)) THEN 
     
    290291            CASE ('glo') 
    291292               jglo = jglo + 1 
    292                msk_glo(:,:)   = zmsksrc(:,:) 
    293                msk_gloid(:,:) = zmsktrg(:,:) 
     293               msk_csglo(:,:)    = zmsksrc(:,:) 
     294               msk_csgrpglo(:,:) = zmsktrg(:,:) 
    294295               IF (lwp) WRITE(numout,*)'        net evap/precip will be spread globally (glo)' 
    295296            CASE ('rnf') 
    296297               jrnf = jrnf + 1 
    297                msk_rnf(:,:)   = zmsksrc(:,:) 
    298                msk_rnfid(:,:) = zmsktrg(:,:) 
     298               msk_csrnf(:,:)    = zmsksrc(:,:) 
     299               msk_csgrprnf(:,:) = zmsktrg(:,:) 
    299300               IF (lwp) WRITE(numout,*)'        net precip will be spread locally and net evap globally (rnf)' 
    300301            CASE ('emp') 
    301302               jemp = jemp + 1 
    302                msk_emp(:,:)   = zmsksrc(:,:) 
    303                msk_empid(:,:) = zmsktrg(:,:) 
     303               msk_csemp(:,:)    = zmsksrc(:,:) 
     304               msk_csgrpemp(:,:) = zmsktrg(:,:) 
    304305               IF (lwp) WRITE(numout,*)'        net evap/precip will be spread locally (emp)' 
    305306            END SELECT 
     
    314315 
    315316      !! mask all the cells not defined as closed sea 
    316       WHERE ( msk_glo(:,:) == 99._wp )  msk_glo = 0._wp 
    317       WHERE ( msk_rnf(:,:) == 99._wp )  msk_rnf = 0._wp 
    318       WHERE ( msk_emp(:,:) == 99._wp )  msk_emp = 0._wp 
     317      WHERE ( msk_csglo(:,:) == 99._wp )  msk_csglo = 0._wp 
     318      WHERE ( msk_csrnf(:,:) == 99._wp )  msk_csrnf = 0._wp 
     319      WHERE ( msk_csemp(:,:) == 99._wp )  msk_csemp = 0._wp 
    319320 
    320321      !!  non defined closed sea 
    321       WHERE ( msk_closea(:,:) > 0._wp ) msk_closea = 1._wp 
     322      WHERE ( msk_csundef(:,:) > 0._wp ) msk_csundef = 1._wp 
    322323 
    323324   END SUBROUTINE dom_clo 
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/domutl.F90

    r11604 r11991  
    144144      REAL(wp),                     INTENT(in)    :: rfill          ! filling value 
    145145      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: rdta           ! input data 
    146       REAL(wp), DIMENSION(jpi,jpj) :: rseedmap, rseedmap_b          ! location of new seed (used for processor exchange) 
     146      REAL(wp), DIMENSION(jpi,jpj) :: rseedmap                      ! location of new seed (used for processor exchange) 
    147147  
    148148      INTEGER :: ii  , ij  , jj, kii, kjj     ! working integer 
     
    175175         DO WHILE ( nseed .NE. 0 ) 
    176176            DO WHILE ( ASSOCIATED(seed) ) 
    177                ii=seed%i; ij=seed%j ; rseedmap(ii,ij)=1. 
     177               ii=seed%i; ij=seed%j 
    178178               ! update stack size 
    179179               CALL del_head_idx(seed)  
     
    197197            nseed=SUM(rseedmap); IF( lk_mpp )   CALL mpp_sum('domutil', nseed )  ! this is the sum of all the point check this iteration 
    198198            ! 
    199             rseedmap_b(:,:)=rseedmap(:,:) 
    200199            CALL lbc_lnk('domutil', rseedmap, 'T', 1.) 
    201200            ! 
    202201            ! build new list of seed 
     202            ! new seed only if data > 0 (ie not land), data not already filled and rseedmap > 0 
    203203            DO ii=1,jpi 
    204204               DO jj=1,jpj 
    205                   IF (rseedmap(ii,jj) > 0.0 .AND. rseedmap(ii,jj) /= rseedmap_b(ii,jj) .AND. rdta(ii,jj) > 0 .AND. rdta(ii,jj) /= rfill) THEN 
     205                  IF (rseedmap(ii,jj) > 0.0 .AND. rdta(ii,jj) > 0 .AND. rdta(ii,jj) /= rfill) THEN 
    206206                     CALL add_head_idx(seed, ii, jj, 1) 
    207207                  END IF 
Note: See TracChangeset for help on using the changeset viewer.