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 11604 for NEMO/branches/2019/ENHANCE-03_domcfg/src/domclo.F90 – NEMO

Ignore:
Timestamp:
2019-09-26T18:48:45+02:00 (5 years ago)
Author:
mathiot
Message:

ENHANCE-03_domcfg: remove useless variable in domclo and domutil + cosmetics changes (ticket #2143)

File:
1 edited

Legend:

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

    r11201 r11604  
    5858         CHARACTER(256) :: cloctrg                     ! where water is spread 
    5959         CHARACTER(256) :: cschtrg                     ! how   water is spread 
    60          REAL(wp)       :: radtrg                      ! radius of closed sea river mouth 
     60         REAL(wp)       :: radtrg                      ! radius of closed sea river mouth (used if cschtrg is rnf or emp) 
    6161         INTEGER        :: idtrg                       ! target id in case multiple lakes for the same river mouth 
    6262      END TYPE 
     
    7070      INTEGER :: nn_closea          ! number of closed seas 
    7171 
    72       REAL(wp) :: zdistseed         ! distance to seed 
    73       REAL(wp) :: zarea             ! river mouth area 
    74       REAL(wp) :: rn_lon_opnsea, rn_lat_opnsea ! open sea seed 
    75       REAL(wp), DIMENSION(1)       :: zchk, zradtrg 
    76       REAL(wp), DIMENSION(jpi,jpj) :: zmsksrc, zmsktrg, zmsk_coastline, zdist 
    77  
    78       CHARACTER(256) :: csch, cloc        ! scheme name for water spreading (glo, rnf, emp) 
    79       TYPE(closea)  , DIMENSION(jp_closea)   :: sn_lake   ! lake properties 
     72      REAL(wp) :: zdistseed                         ! distance to seed 
     73      REAL(wp) :: zarea                             ! river mouth area 
     74      REAL(wp) :: rn_lon_opnsea, rn_lat_opnsea      ! open sea seed 
     75      REAL(wp), DIMENSION(1)       :: zchk, zradtrg ! 
     76      REAL(wp), DIMENSION(jpi,jpj) :: zdist         ! distance to seed trg location 
     77      REAL(wp), DIMENSION(jpi,jpj) :: zmsksrc, zmsktrg, zmsk_coastline ! various mask 
     78 
     79      CHARACTER(256) :: csch, cloc                       ! scheme name for water spreading (glo, rnf, emp) 
     80      TYPE(closea)  , DIMENSION(jp_closea)   :: sn_lake  ! lake properties 
    8081 
    8182      LOGICAL :: lskip     ! flag in case lake seed on land or already filled (...) 
     
    9091      NAMELIST/namclo/ rn_lon_opnsea, rn_lat_opnsea, nn_closea, sn_lake 
    9192      !!--------------------------------------------------------------------- 
    92       PRINT *, rn_lon_opnsea, rn_lat_opnsea, nn_closea 
    93       !! 
     93       
    9494      REWIND( numnam_ref )              ! Namelist namlbc in reference namelist : Lateral momentum boundary condition 
    9595      READ  ( numnam_ref, namclo, IOSTAT = ios, ERR = 901 ) 
     
    118118      IF (zchk(1) == 0._wp) CALL ctl_stop( 'STOP', 'open sea seed is on land, please update namelist (rn_lon_opnsea,rn_lat_opnsea)' )  
    119119 
    120       !! 1.3 set to 0 everything >0 and revert mask 
     120      !! print 
    121121      IF (lwp) THEN 
    122122         WRITE(numout,*) 
     
    128128      END IF 
    129129       
    130       WHERE (msk_opnsea(:,:) > 0) msk_opnsea(:,:) = 0 ! mask all closed seas 
    131       WHERE (msk_opnsea(:,:) < 0) msk_opnsea(:,:) = 1 ! restore mask value 
     130      !! 1.3 set to 0 everything >0 and revert mask 
     131      WHERE (msk_opnsea(:,:) > 0._wp) msk_opnsea(:,:) = 0._wp ! mask all closed seas 
     132      WHERE (msk_opnsea(:,:) < 0._wp) msk_opnsea(:,:) = 1._wp ! restore mask value 
    132133 
    133134      !! 1.4 Define closed sea mask (all of them, ie defined in the namelist or not) 
    134135      !! needed to remove the undefined closed seas at the end 
    135       msk_closea = (ssmask - msk_opnsea) * 99 
     136      msk_closea(:,:) = ( ssmask(:,:) - msk_opnsea(:,:) ) * 99._wp 
    136137 
    137138      !!---------------------------------------------------------------------- 
     
    142143      jglo = 1 ; jrnf = 1 ; jemp = 1 
    143144      !! mask used to group lake by net evap/precip distribution technics 
    144       msk_glo = msk_closea 
    145       msk_rnf = msk_closea 
    146       msk_emp = msk_closea 
     145      msk_glo(:,:) = msk_closea(:,:) 
     146      msk_rnf(:,:) = msk_closea(:,:) 
     147      msk_emp(:,:) = msk_closea(:,:) 
    147148 
    148149      !! mask used to group multiple lake with the same river mouth (great lake for example) 
    149       msk_gloid = 0.0_wp 
    150       msk_rnfid = 0.0_wp 
    151       msk_empid = 0.0_wp 
     150      msk_gloid(:,:) = 0.0_wp 
     151      msk_rnfid(:,:) = 0.0_wp 
     152      msk_empid(:,:) = 0.0_wp 
    152153 
    153154      IF (lwp) WRITE(numout,*)'closed seas: ' 
     
    175176         CASE('glo') 
    176177            jsch = jglo 
    177             zmsksrc = msk_glo 
    178             zmsktrg = msk_gloid 
     178            zmsksrc(:,:) = msk_glo(:,:) 
     179            zmsktrg(:,:) = msk_gloid(:,:) 
    179180            IF (lwp) WRITE(numout,*)'        net evap/precip will be spread globally' 
    180181         CASE('rnf')  
    181182            jsch = jrnf 
    182             zmsksrc = msk_rnf 
    183             zmsktrg = msk_rnfid 
     183            zmsksrc(:,:) = msk_rnf(:,:) 
     184            zmsktrg(:,:) = msk_rnfid(:,:) 
    184185            IF (lwp) WRITE(numout,*)'        net precip will be spread locally and net evap globally' 
    185186         CASE('emp') 
    186187            jsch = jemp  
    187             zmsksrc = msk_emp 
    188             zmsktrg = msk_empid 
     188            zmsksrc(:,:) = msk_emp(:,:) 
     189            zmsktrg(:,:) = msk_empid(:,:) 
    189190            IF (lwp) WRITE(numout,*)'        net precip will be spread locally' 
    190191         CASE DEFAULT 
     
    213214            !! fill close sea mask with counter value 
    214215            CALL fill_pool( jiseed, jjseed, zmsksrc, REAL(jsch  ,8)) 
    215             WHERE (zmsksrc == REAL(jsch,8)) 
     216            WHERE (zmsksrc(:,:) == REAL(jsch,8)) 
    216217               msk_closea = 0._wp 
    217218               zmsktrg    = sn_lake(jcs)%idtrg 
     
    220221            !! compute location of river mouth and distance to river mouth 
    221222            IF (cloc /= 'global') THEN 
     223 
    222224               !! set a minimum value for radius of the river influence 
    223225               zradtrg = 0._wp 
     
    229231               !! compute seed location for print  
    230232               CALL dom_ngb(sn_lake(jcs)%rlontrg, sn_lake(jcs)%rlattrg, jiseed, jjseed, zdistseed, 'T') 
     233 
    231234               !! compute distance to river mouth 
    232235               zdist(:,:) = dist(sn_lake(jcs)%rlontrg, sn_lake(jcs)%rlattrg, glamt, gphit) 
     236 
    233237            END IF 
    234238 
     
    237241            SELECT CASE (cloc) 
    238242            CASE ('global') 
    239                WHERE (msk_opnsea(:,:) == 1) zmsktrg = sn_lake(jcs)%idtrg 
     243               WHERE (msk_opnsea(:,:) == 1._wp) zmsktrg = sn_lake(jcs)%idtrg 
    240244 
    241245            CASE ('local') 
    242246               !! compute mask 
    243247               WHERE (zdist(:,:) < zradtrg(1) .AND. msk_opnsea(:,:) == 1 ) zmsktrg = sn_lake(jcs)%idtrg 
     248 
    244249               !! print 
    245250               IF (lwp) WRITE(numout,'(a,f7.0,a,2f7.2,a,2i7,a)')'         river mouth area is defined by         points within ',zradtrg(1)         & 
    246251                             &        ,' m of lat/lon ', sn_lake(jcs)%rlontrg, sn_lake(jcs)%rlattrg                                  & 
    247252                             &        ,' (closest point is i/j ',jiseed, jjseed,')' 
    248    
    249253            CASE ('coast') 
    250254               !! define coastline mask 
     
    259263               !! compute mask 
    260264               WHERE ( zdist(:,:) < zradtrg(1) .AND. zmsk_coastline(:,:) == 1 .AND. msk_opnsea(:,:) == 1 ) zmsktrg = sn_lake(jcs)%idtrg 
     265 
    261266               !! print 
    262267               IF (lwp) WRITE(numout,'(a,f7.0,a,2f7.2,a,2i7,a)')'         river mouth area is defined by coastal points within ',zradtrg(1) & 
     
    277282            CASE ('glo') 
    278283               jglo = jglo + 1 
    279                msk_glo   = zmsksrc 
    280                msk_gloid = zmsktrg 
     284               msk_glo(:,:)   = zmsksrc(:,:) 
     285               msk_gloid(:,:) = zmsktrg(:,:) 
    281286            CASE ('rnf') 
    282287               jrnf = jrnf + 1 
    283                msk_rnf   = zmsksrc 
    284                msk_rnfid = zmsktrg 
     288               msk_rnf(:,:)   = zmsksrc(:,:) 
     289               msk_rnfid(:,:) = zmsktrg(:,:) 
    285290            CASE ('emp') 
    286291               jemp = jemp + 1 
    287                msk_emp   = zmsksrc 
    288                msk_empid = zmsktrg 
     292               msk_emp(:,:)   = zmsksrc(:,:) 
     293               msk_empid(:,:) = zmsktrg(:,:) 
    289294            END SELECT 
    290295 
     
    298303 
    299304      !! mask all the cells not defined as closed sea 
    300       WHERE ( msk_glo == 99 ) msk_glo = 0 
    301       WHERE ( msk_rnf == 99 ) msk_rnf = 0 
    302       WHERE ( msk_emp == 99 ) msk_emp = 0 
     305      WHERE ( msk_glo(:,:) == 99._wp )  msk_glo = 0._wp 
     306      WHERE ( msk_rnf(:,:) == 99._wp )  msk_rnf = 0._wp 
     307      WHERE ( msk_emp(:,:) == 99._wp )  msk_emp = 0._wp 
    303308 
    304309      !!  non defined closed sea 
    305       WHERE (msk_closea > 0) msk_closea = 1 
     310      WHERE ( msk_closea(:,:) > 0._wp ) msk_closea = 1._wp 
    306311 
    307312   END SUBROUTINE dom_clo 
Note: See TracChangeset for help on using the changeset viewer.