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 8586 for branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/BDY – NEMO

Ignore:
Timestamp:
2017-10-04T09:19:23+02:00 (7 years ago)
Author:
gm
Message:

#1911 (ENHANCE-09): PART I.3 - phasing with branch dev_r8183_ICEMODEL revision 8575

Location:
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/BDY
Files:
1 added
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90

    r7753 r8586  
    5555      REAL(wp), POINTER, DIMENSION(:,:) ::  tem 
    5656      REAL(wp), POINTER, DIMENSION(:,:) ::  sal 
    57 #if defined key_lim2 
    58       LOGICAL                           ::   ll_frld 
    59       LOGICAL                           ::   ll_hicif 
    60       LOGICAL                           ::   ll_hsnif 
    61       REAL(wp), POINTER, DIMENSION(:)   ::   frld 
    62       REAL(wp), POINTER, DIMENSION(:)   ::   hicif 
    63       REAL(wp), POINTER, DIMENSION(:)   ::   hsnif 
    64 #elif defined key_lim3 
     57#if defined key_lim3 
    6558      LOGICAL                           ::   ll_a_i 
    66       LOGICAL                           ::   ll_ht_i 
    67       LOGICAL                           ::   ll_ht_s 
     59      LOGICAL                           ::   ll_h_i 
     60      LOGICAL                           ::   ll_h_s 
    6861      REAL(wp), POINTER, DIMENSION(:,:) ::   a_i    !: now ice leads fraction climatology 
    69       REAL(wp), POINTER, DIMENSION(:,:) ::   ht_i   !: Now ice  thickness climatology 
    70       REAL(wp), POINTER, DIMENSION(:,:) ::   ht_s   !: now snow thickness 
     62      REAL(wp), POINTER, DIMENSION(:,:) ::   h_i    !: Now ice  thickness climatology 
     63      REAL(wp), POINTER, DIMENSION(:,:) ::   h_s    !: now snow thickness 
    7164#endif 
    7265#if defined key_top 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90

    r7861 r8586  
    1313   !!            3.6  !  2012-01  (C. Rousset) add ice boundary conditions for lim3 
    1414   !!---------------------------------------------------------------------- 
    15    !!    bdy_dta        : read external data along open boundaries from file 
    16    !!    bdy_dta_init   : initialise arrays etc for reading of external data 
     15 
    1716   !!---------------------------------------------------------------------- 
    18    USE timing          ! Timing 
    19    USE oce             ! ocean dynamics and tracers 
    20    USE dom_oce         ! ocean space and time domain 
    21    USE phycst          ! physical constants 
    22    USE bdy_oce         ! ocean open boundary conditions   
    23    USE bdytides        ! tidal forcing at boundaries 
    24    USE fldread         ! read input fields 
    25    USE iom             ! IOM library 
    26    USE in_out_manager  ! I/O logical units 
    27 #if defined key_lim2 
    28    USE ice_2 
    29 #elif defined key_lim3 
    30    USE ice 
    31    USE limvar          ! redistribute ice input into categories 
    32 #endif 
    33    USE sbcapr 
    34    USE sbctide         ! Tidal forcing or not 
     17   !!    bdy_dta      : read external data along open boundaries from file 
     18   !!    bdy_dta_init : initialise arrays etc for reading of external data 
     19   !!---------------------------------------------------------------------- 
     20   USE oce            ! ocean dynamics and tracers 
     21   USE dom_oce        ! ocean space and time domain 
     22   USE phycst         ! physical constants 
     23   USE sbcapr         ! atmospheric pressure forcing 
     24   USE sbctide        ! Tidal forcing or not 
     25   USE bdy_oce        ! ocean open boundary conditions   
     26   USE bdytides       ! tidal forcing at boundaries 
     27#if defined key_lim3 
     28   USE ice            ! sea-ice variables 
     29   USE icevar         ! redistribute ice input into categories 
     30#endif 
     31   ! 
     32   USE fldread        ! read input fields 
     33   USE iom            ! IOM library 
     34   USE in_out_manager ! I/O logical units 
     35   USE timing         ! Timing 
    3536 
    3637   IMPLICIT NONE 
     
    5051 
    5152#if defined key_lim3 
    52    LOGICAL :: ll_bdylim3                  ! determine whether ice input is lim2 (F) or lim3 (T) type 
     53   LOGICAL :: ll_bdylim3                  ! determine whether ice input is 1cat (F) or Xcat (T) type 
    5354   INTEGER :: jfld_hti, jfld_hts, jfld_ai ! indices of ice thickness, snow thickness and concentration in bf structure 
    5455#endif 
     
    176177            ENDIF 
    177178 
    178 #if defined key_lim2 
    179             IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN  
    180                ilen1(:) = nblen(:) 
    181                IF( dta%ll_frld ) THEN 
    182                   igrd = 1  
    183                   DO ib = 1, ilen1(igrd) 
    184                      ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    185                      ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    186                      dta_bdy(ib_bdy)%frld(ib) = frld(ii,ij) * tmask(ii,ij,1)          
    187                   END DO  
    188                END IF 
    189                IF( dta%ll_hicif ) THEN 
    190                   igrd = 1  
    191                   DO ib = 1, ilen1(igrd) 
    192                      ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    193                      ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    194                      dta_bdy(ib_bdy)%hicif(ib) = hicif(ii,ij) * tmask(ii,ij,1)          
    195                   END DO  
    196                END IF 
    197                IF( dta%ll_hsnif ) THEN 
    198                   igrd = 1  
    199                   DO ib = 1, ilen1(igrd) 
    200                      ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    201                      ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    202                      dta_bdy(ib_bdy)%hsnif(ib) = hsnif(ii,ij) * tmask(ii,ij,1)          
    203                   END DO  
    204                END IF 
    205             ENDIF 
    206 #elif defined key_lim3 
     179#if defined key_lim3 
    207180            IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN  
    208181               ilen1(:) = nblen(:) 
     
    217190                  END DO 
    218191               ENDIF 
    219                IF( dta%ll_ht_i ) THEN 
     192               IF( dta%ll_h_i ) THEN 
    220193                  igrd = 1    
    221194                  DO jl = 1, jpl 
     
    223196                        ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    224197                        ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    225                         dta_bdy(ib_bdy)%ht_i (ib,jl) =  ht_i(ii,ij,jl) * tmask(ii,ij,1)  
     198                        dta_bdy(ib_bdy)%h_i (ib,jl) =  h_i(ii,ij,jl) * tmask(ii,ij,1)  
    226199                     END DO 
    227200                  END DO 
    228201               ENDIF 
    229                IF( dta%ll_ht_s ) THEN 
     202               IF( dta%ll_h_s ) THEN 
    230203                  igrd = 1    
    231204                  DO jl = 1, jpl 
     
    233206                        ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    234207                        ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    235                         dta_bdy(ib_bdy)%ht_s (ib,jl) =  ht_s(ii,ij,jl) * tmask(ii,ij,1)  
     208                        dta_bdy(ib_bdy)%h_s (ib,jl) =  h_s(ii,ij,jl) * tmask(ii,ij,1)  
    236209                     END DO 
    237210                  END DO 
     
    373346               ENDIF 
    374347#if defined key_lim3 
    375                IF( .NOT. ll_bdylim3 .AND. cn_ice_lim(ib_bdy) /= 'none' .AND. nn_ice_lim_dta(ib_bdy) == 1 ) THEN ! bdy ice input (case input is lim2 type) 
    376                 CALL lim_var_itd ( bf(jfld_hti)%fnow(:,1,1), bf(jfld_hts)%fnow(:,1,1), bf(jfld_ai)%fnow(:,1,1), & 
    377                                   & dta_bdy(ib_bdy)%ht_i,     dta_bdy(ib_bdy)%ht_s,     dta_bdy(ib_bdy)%a_i     ) 
     348               IF( .NOT. ll_bdylim3 .AND. cn_ice_lim(ib_bdy) /= 'none' .AND. nn_ice_lim_dta(ib_bdy) == 1 ) THEN ! bdy ice input (case input is 1cat) 
     349                CALL ice_var_itd ( bf(jfld_hti)%fnow(:,1,1), bf(jfld_hts)%fnow(:,1,1), bf(jfld_ai)%fnow(:,1,1), & 
     350                                  & dta_bdy(ib_bdy)%h_i,     dta_bdy(ib_bdy)%h_s,     dta_bdy(ib_bdy)%a_i     ) 
    378351               ENDIF 
    379352#endif 
     
    449422      TYPE(FLD_N) ::   bn_tem, bn_sal, bn_u3d, bn_v3d   !  
    450423      TYPE(FLD_N) ::   bn_ssh, bn_u2d, bn_v2d           ! informations about the fields to be read 
    451 #if defined key_lim2 
    452       TYPE(FLD_N) ::   bn_frld, bn_hicif, bn_hsnif      ! 
    453 #elif defined key_lim3 
    454       TYPE(FLD_N) ::   bn_a_i, bn_ht_i, bn_ht_s       
     424#if defined key_lim3 
     425      TYPE(FLD_N) ::   bn_a_i, bn_h_i, bn_h_s       
    455426#endif 
    456427      NAMELIST/nambdy_dta/ cn_dir, bn_tem, bn_sal, bn_u3d, bn_v3d, bn_ssh, bn_u2d, bn_v2d  
    457 #if defined key_lim2 
    458       NAMELIST/nambdy_dta/ bn_frld, bn_hicif, bn_hsnif 
    459 #elif defined key_lim3 
    460       NAMELIST/nambdy_dta/ bn_a_i, bn_ht_i, bn_ht_s 
     428#if defined key_lim3 
     429      NAMELIST/nambdy_dta/ bn_a_i, bn_h_i, bn_h_s 
    461430#endif 
    462431      NAMELIST/nambdy_dta/ ln_full_vel, nb_jpk_bdy 
     
    475444                               ,nn_dyn3d_dta(ib_bdy)       & 
    476445                               ,nn_tra_dta(ib_bdy)         & 
    477 #if ( defined key_lim2 || defined key_lim3 ) 
     446#if defined key_lim3 
    478447                              ,nn_ice_lim_dta(ib_bdy)    & 
    479448#endif 
     
    496465            nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 2 
    497466         ENDIF 
    498 #if ( defined key_lim2 || defined key_lim3 ) 
     467#if defined key_lim3 
    499468         IF( cn_ice_lim(ib_bdy) /= 'none' .and. nn_ice_lim_dta(ib_bdy) == 1  ) THEN 
    500469            nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 3 
     
    637606            ENDIF 
    638607 
    639 #if defined key_lim2 
     608#if defined key_lim3 
    640609            ! sea ice 
    641610            IF( nn_ice_lim_dta(ib_bdy) == 1 ) THEN 
    642  
    643                IF( dta%ll_frld ) THEN 
    644                   jfld = jfld + 1 
    645                   blf_i(jfld) = bn_frld 
    646                   ibdy(jfld) = ib_bdy 
    647                   igrid(jfld) = 1 
    648                   ilen1(jfld) = nblen(igrid(jfld)) 
    649                   ilen3(jfld) = 1 
    650                ENDIF 
    651  
    652                IF( dta%ll_hicif ) THEN 
    653                   jfld = jfld + 1 
    654                   blf_i(jfld) = bn_hicif 
    655                   ibdy(jfld) = ib_bdy 
    656                   igrid(jfld) = 1 
    657                   ilen1(jfld) = nblen(igrid(jfld)) 
    658                   ilen3(jfld) = 1 
    659                ENDIF 
    660  
    661                IF( dta%ll_hsnif ) THEN 
    662                   jfld = jfld + 1 
    663                   blf_i(jfld) = bn_hsnif 
    664                   ibdy(jfld) = ib_bdy 
    665                   igrid(jfld) = 1 
    666                   ilen1(jfld) = nblen(igrid(jfld)) 
    667                   ilen3(jfld) = 1 
    668                ENDIF 
    669  
    670             ENDIF 
    671 #elif defined key_lim3 
    672             ! sea ice 
    673             IF( nn_ice_lim_dta(ib_bdy) == 1 ) THEN 
    674                ! Test for types of ice input (lim2 or lim3)  
     611               ! Test for types of ice input (1cat or Xcat)  
    675612               ! Build file name to find dimensions  
    676613               clname=TRIM( cn_dir )//TRIM(bn_a_i%clname) 
     
    689626 
    690627                IF ( zndims == 4 ) THEN 
    691                  ll_bdylim3 = .TRUE.   ! lim3 input 
     628                 ll_bdylim3 = .TRUE.   ! Xcat input 
    692629               ELSE 
    693                  ll_bdylim3 = .FALSE.  ! lim2 input       
     630                 ll_bdylim3 = .FALSE.  ! 1cat input       
    694631               ENDIF 
    695632               ! End test 
     
    704641               ENDIF 
    705642 
    706                IF( dta%ll_ht_i ) THEN 
    707                   jfld = jfld + 1 
    708                   blf_i(jfld) = bn_ht_i 
     643               IF( dta%ll_h_i ) THEN 
     644                  jfld = jfld + 1 
     645                  blf_i(jfld) = bn_h_i 
    709646                  ibdy(jfld) = ib_bdy 
    710647                  igrid(jfld) = 1 
     
    713650               ENDIF 
    714651 
    715                IF( dta%ll_ht_s ) THEN 
    716                   jfld = jfld + 1 
    717                    blf_i(jfld) = bn_ht_s 
     652               IF( dta%ll_h_s ) THEN 
     653                  jfld = jfld + 1 
     654                   blf_i(jfld) = bn_h_s 
    718655                  ibdy(jfld) = ib_bdy 
    719656                  igrid(jfld) = 1 
     
    848785         ENDIF 
    849786 
    850 #if defined key_lim2 
     787#if defined key_lim3 
    851788         IF (cn_ice_lim(ib_bdy) /= 'none') THEN 
    852789            IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN 
    853                ALLOCATE( dta_bdy(ib_bdy)%frld(nblen(1)) ) 
    854                ALLOCATE( dta_bdy(ib_bdy)%hicif(nblen(1)) ) 
    855                ALLOCATE( dta_bdy(ib_bdy)%hsnif(nblen(1)) ) 
     790               ALLOCATE( dta_bdy(ib_bdy)%a_i(nblen(1),jpl) ) 
     791               ALLOCATE( dta_bdy(ib_bdy)%h_i(nblen(1),jpl) ) 
     792               ALLOCATE( dta_bdy(ib_bdy)%h_s(nblen(1),jpl) ) 
    856793            ELSE 
    857                jfld = jfld + 1 
    858                dta_bdy(ib_bdy)%frld  => bf(jfld)%fnow(:,1,1) 
    859                jfld = jfld + 1 
    860                dta_bdy(ib_bdy)%hicif => bf(jfld)%fnow(:,1,1) 
    861                jfld = jfld + 1 
    862                dta_bdy(ib_bdy)%hsnif => bf(jfld)%fnow(:,1,1) 
    863             ENDIF 
    864          ENDIF 
    865 #elif defined key_lim3 
    866          IF (cn_ice_lim(ib_bdy) /= 'none') THEN 
    867             IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN 
    868                ALLOCATE( dta_bdy(ib_bdy)%a_i (nblen(1),jpl) ) 
    869                ALLOCATE( dta_bdy(ib_bdy)%ht_i(nblen(1),jpl) ) 
    870                ALLOCATE( dta_bdy(ib_bdy)%ht_s(nblen(1),jpl) ) 
    871             ELSE 
    872                IF ( ll_bdylim3 ) THEN ! case input is lim3 type 
    873                   jfld = jfld + 1 
    874                   dta_bdy(ib_bdy)%a_i  => bf(jfld)%fnow(:,1,:) 
    875                   jfld = jfld + 1 
    876                   dta_bdy(ib_bdy)%ht_i => bf(jfld)%fnow(:,1,:) 
    877                   jfld = jfld + 1 
    878                   dta_bdy(ib_bdy)%ht_s => bf(jfld)%fnow(:,1,:) 
    879                ELSE ! case input is lim2 type 
     794               IF ( ll_bdylim3 ) THEN ! case input is Xcat 
     795                  jfld = jfld + 1 
     796                  dta_bdy(ib_bdy)%a_i => bf(jfld)%fnow(:,1,:) 
     797                  jfld = jfld + 1 
     798                  dta_bdy(ib_bdy)%h_i => bf(jfld)%fnow(:,1,:) 
     799                  jfld = jfld + 1 
     800                  dta_bdy(ib_bdy)%h_s => bf(jfld)%fnow(:,1,:) 
     801               ELSE ! case input is 1cat 
    880802                  jfld_ai  = jfld + 1 
    881803                  jfld_hti = jfld + 2 
    882804                  jfld_hts = jfld + 3 
    883805                  jfld     = jfld + 3 
    884                   ALLOCATE( dta_bdy(ib_bdy)%a_i (nblen(1),jpl) ) 
    885                   ALLOCATE( dta_bdy(ib_bdy)%ht_i(nblen(1),jpl) ) 
    886                   ALLOCATE( dta_bdy(ib_bdy)%ht_s(nblen(1),jpl) ) 
    887                   dta_bdy(ib_bdy)%a_i (:,:) = 0._wp 
    888                   dta_bdy(ib_bdy)%ht_i(:,:) = 0._wp 
    889                   dta_bdy(ib_bdy)%ht_s(:,:) = 0._wp 
     806                  ALLOCATE( dta_bdy(ib_bdy)%a_i(nblen(1),jpl) ) 
     807                  ALLOCATE( dta_bdy(ib_bdy)%h_i(nblen(1),jpl) ) 
     808                  ALLOCATE( dta_bdy(ib_bdy)%h_s(nblen(1),jpl) ) 
     809                  dta_bdy(ib_bdy)%a_i(:,:) = 0._wp 
     810                  dta_bdy(ib_bdy)%h_i(:,:) = 0._wp 
     811                  dta_bdy(ib_bdy)%h_s(:,:) = 0._wp 
    890812               ENDIF 
    891813 
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90

    r7646 r8586  
    2929   USE lib_mpp        ! for mpp_sum   
    3030   USE iom            ! I/O 
    31    USE wrk_nemo       ! Memory Allocation 
    3231   USE timing         ! Timing 
    3332 
     
    117116      ! 
    118117   END SUBROUTINE bdy_init 
    119     
     118 
     119 
    120120   SUBROUTINE bdy_segs 
    121121      !!---------------------------------------------------------------------- 
     
    129129      !! ** Input   :  bdy_init.nc, input file for unstructured open boundaries 
    130130      !!----------------------------------------------------------------------       
    131  
    132       ! local variables 
    133       !------------------- 
    134131      INTEGER  ::   ib_bdy, ii, ij, ik, igrd, ib, ir, iseg ! dummy loop indices 
    135132      INTEGER  ::   icount, icountr, ibr_max, ilen1, ibm1  ! local integers 
     
    151148      INTEGER :: com_east_b, com_west_b, com_south_b, com_north_b  ! Flags for boundaries receiving 
    152149      INTEGER :: iw_b(4), ie_b(4), is_b(4), in_b(4)                ! Arrays for neighbours coordinates 
    153       REAL(wp), POINTER, DIMENSION(:,:)      ::   zfmask  ! temporary fmask array excluding coastal boundary condition (shlat) 
     150      REAL(wp), TARGET, DIMENSION(jpi,jpj) ::   zfmask  ! temporary fmask array excluding coastal boundary condition (shlat) 
    154151      !! 
    155152      CHARACTER(LEN=1)                     ::   ctypebdy   !     -        -  
     
    351348        IF(lwp) WRITE(numout,*) 
    352349 
    353 #if defined key_lim2 
    354         IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice:  ' 
    355         SELECT CASE( cn_ice_lim(ib_bdy) )                   
    356           CASE('none') 
     350#if defined key_lim3 
     351         IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice:  ' 
     352         SELECT CASE( cn_ice_lim(ib_bdy) )                   
     353         CASE('none') 
    357354             IF(lwp) WRITE(numout,*) '      no open boundary condition'         
    358              dta_bdy(ib_bdy)%ll_frld = .false. 
    359              dta_bdy(ib_bdy)%ll_hicif = .false. 
    360              dta_bdy(ib_bdy)%ll_hsnif = .false. 
    361           CASE('frs') 
     355             dta_bdy(ib_bdy)%ll_a_i = .false. 
     356             dta_bdy(ib_bdy)%ll_h_i = .false. 
     357             dta_bdy(ib_bdy)%ll_h_s = .false. 
     358         CASE('frs') 
    362359             IF(lwp) WRITE(numout,*) '      Flow Relaxation Scheme' 
    363              dta_bdy(ib_bdy)%ll_frld  = .true. 
    364              dta_bdy(ib_bdy)%ll_hicif = .true. 
    365              dta_bdy(ib_bdy)%ll_hsnif = .true. 
    366           CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for cn_ice_lim' ) 
    367         END SELECT 
    368         IF( cn_ice_lim(ib_bdy) /= 'none' ) THEN  
    369            SELECT CASE( nn_ice_lim_dta(ib_bdy) )                   !  
    370               CASE( 0 )      ;   IF(lwp) WRITE(numout,*) '      initial state used for bdy data'         
    371               CASE( 1 )      ;   IF(lwp) WRITE(numout,*) '      boundary data taken from file' 
    372               CASE DEFAULT   ;   CALL ctl_stop( 'nn_ice_lim_dta must be 0 or 1' ) 
    373            END SELECT 
    374         ENDIF 
    375         IF(lwp) WRITE(numout,*) 
    376 #elif defined key_lim3 
    377         IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice:  ' 
    378         SELECT CASE( cn_ice_lim(ib_bdy) )                   
    379           CASE('none') 
    380              IF(lwp) WRITE(numout,*) '      no open boundary condition'         
    381              dta_bdy(ib_bdy)%ll_a_i  = .false. 
    382              dta_bdy(ib_bdy)%ll_ht_i = .false. 
    383              dta_bdy(ib_bdy)%ll_ht_s = .false. 
    384           CASE('frs') 
    385              IF(lwp) WRITE(numout,*) '      Flow Relaxation Scheme' 
    386              dta_bdy(ib_bdy)%ll_a_i  = .true. 
    387              dta_bdy(ib_bdy)%ll_ht_i = .true. 
    388              dta_bdy(ib_bdy)%ll_ht_s = .true. 
    389           CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for cn_ice_lim' ) 
    390         END SELECT 
     360             dta_bdy(ib_bdy)%ll_a_i = .true. 
     361             dta_bdy(ib_bdy)%ll_h_i = .true. 
     362             dta_bdy(ib_bdy)%ll_h_s = .true. 
     363         CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for cn_ice_lim' ) 
     364         END SELECT 
    391365        IF( cn_ice_lim(ib_bdy) /= 'none' ) THEN  
    392366           SELECT CASE( nn_ice_lim_dta(ib_bdy) )                   !  
     
    404378        IF(lwp) WRITE(numout,*) '      Width of relaxation zone = ', nn_rimwidth(ib_bdy) 
    405379        IF(lwp) WRITE(numout,*) 
    406  
    407       ENDDO 
    408  
    409      IF (nb_bdy .gt. 0) THEN 
     380         ! 
     381      END DO 
     382 
     383     IF( nb_bdy > 0 ) THEN 
    410384        IF( ln_vol ) THEN                     ! check volume conservation (nn_volctl value) 
    411385          IF(lwp) WRITE(numout,*) 'Volume correction applied at open boundaries' 
     
    919893                  IF( nbrdta(ib,igrd,ib_bdy) == 1 )   icountr = icountr+1 
    920894               ENDIF 
    921             ENDDO 
     895            END DO 
    922896            idx_bdy(ib_bdy)%nblenrim(igrd) = icountr !: length of rim boundary data on each proc 
    923897            idx_bdy(ib_bdy)%nblen   (igrd) = icount  !: length of boundary data on each proc         
    924          ENDDO  ! igrd 
     898         END DO  ! igrd 
    925899 
    926900         ! Allocate index arrays for this boundary set 
    927901         !-------------------------------------------- 
    928902         ilen1 = MAXVAL( idx_bdy(ib_bdy)%nblen(:) ) 
    929          ALLOCATE( idx_bdy(ib_bdy)%nbi   (ilen1,jpbgrd) ) 
    930          ALLOCATE( idx_bdy(ib_bdy)%nbj   (ilen1,jpbgrd) ) 
    931          ALLOCATE( idx_bdy(ib_bdy)%nbr   (ilen1,jpbgrd) ) 
    932          ALLOCATE( idx_bdy(ib_bdy)%nbd   (ilen1,jpbgrd) ) 
    933          ALLOCATE( idx_bdy(ib_bdy)%nbdout(ilen1,jpbgrd) ) 
    934          ALLOCATE( idx_bdy(ib_bdy)%nbmap (ilen1,jpbgrd) ) 
    935          ALLOCATE( idx_bdy(ib_bdy)%nbw   (ilen1,jpbgrd) ) 
    936          ALLOCATE( idx_bdy(ib_bdy)%flagu (ilen1,jpbgrd) ) 
    937          ALLOCATE( idx_bdy(ib_bdy)%flagv (ilen1,jpbgrd) ) 
     903         ALLOCATE( idx_bdy(ib_bdy)%nbi   (ilen1,jpbgrd) ,   & 
     904            &      idx_bdy(ib_bdy)%nbj   (ilen1,jpbgrd) ,   & 
     905            &      idx_bdy(ib_bdy)%nbr   (ilen1,jpbgrd) ,   & 
     906            &      idx_bdy(ib_bdy)%nbd   (ilen1,jpbgrd) ,   & 
     907            &      idx_bdy(ib_bdy)%nbdout(ilen1,jpbgrd) ,   & 
     908            &      idx_bdy(ib_bdy)%nbmap (ilen1,jpbgrd) ,   & 
     909            &      idx_bdy(ib_bdy)%nbw   (ilen1,jpbgrd) ,   & 
     910            &      idx_bdy(ib_bdy)%flagu (ilen1,jpbgrd) ,   & 
     911            &      idx_bdy(ib_bdy)%flagv (ilen1,jpbgrd) ) 
    938912 
    939913         ! Dispatch mapping indices and discrete distances on each processor 
     
    11481122         END DO  
    11491123 
    1150       ENDDO 
     1124      END DO 
    11511125 
    11521126      ! ------------------------------------------------------ 
     
    12121186        DO ib = 1, idx_bdy(ib_bdy)%nblenrim(igrd) 
    12131187          bdyvmask(idx_bdy(ib_bdy)%nbi(ib,igrd), idx_bdy(ib_bdy)%nbj(ib,igrd)) = 0._wp 
    1214         ENDDO 
    1215       ENDDO 
     1188        END DO 
     1189      END DO 
    12161190 
    12171191      ! For the flagu/flagv calculation below we require a version of fmask without 
    12181192      ! the land boundary condition (shlat) included: 
    1219       CALL wrk_alloc(jpi,jpj,  zfmask )  
    12201193      DO ij = 2, jpjm1 
    12211194         DO ii = 2, jpim1 
     
    12411214         ! flagu =  1 : u is normal to the boundary and is direction is inward 
    12421215   
    1243          DO igrd = 1,jpbgrd  
     1216         DO igrd = 1, jpbgrd  
    12441217            SELECT CASE( igrd ) 
    12451218               CASE( 1 )   ;   pmask => umask   (:,:,1)   ;   i_offset = 0 
     
    13461319      IF( nb_bdy>0 )   DEALLOCATE( nbidta, nbjdta, nbrdta ) 
    13471320      ! 
    1348       CALL wrk_dealloc(jpi,jpj,   zfmask )  
    1349       ! 
    13501321      IF( nn_timing == 1 )   CALL timing_stop('bdy_segs') 
    13511322      ! 
    13521323   END SUBROUTINE bdy_segs 
     1324 
    13531325 
    13541326   SUBROUTINE bdy_ctl_seg 
     
    17271699   END SUBROUTINE bdy_ctl_seg 
    17281700 
     1701 
    17291702   SUBROUTINE bdy_ctl_corn( ib1, ib2 ) 
    17301703      !!---------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.