Changeset 9925


Ignore:
Timestamp:
2018-07-11T13:47:37+02:00 (2 years ago)
Author:
acc
Message:

Changes to WAD test case to ensure it works in v4.0

Location:
NEMO/trunk/tests/WAD
Files:
1 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/tests/WAD/EXPREF/namelist_cfg

    r9743 r9925  
    2020&namusr_def    !    Wetting and Drying TEST CASE 
    2121!----------------------------------------------------------------------- 
    22    rn_dx       = 1000.0    ! horizontal resolution 
     22   rn_dx       = 1500.0    ! horizontal resolution 
    2323   rn_dz       = 1.0       ! vertical   resolution 
    2424   nn_wad_test = 1         ! ??? 
     
    3838/ 
    3939!----------------------------------------------------------------------- 
     40&namdom        !   time and space domain 
     41!----------------------------------------------------------------------- 
     42   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
     43   ! 
     44   ln_meshmask = .true.    !  create (>0) a mesh file or not (=0) 
     45   rn_rdt      =    18.    !  time step for the dynamics  
     46/ 
     47!----------------------------------------------------------------------- 
    4048&namcfg        !   parameters of the configuration                      (default: user defined GYRE) 
    4149!----------------------------------------------------------------------- 
     
    4351      !                    !  (=F) user defined configuration  ==>>>  see usrdef(_...) modules 
    4452   ln_write_cfg= .true.    !  (=T) create the domain configuration file 
    45 / 
    46 !----------------------------------------------------------------------- 
    47 &namdom        !   time and space domain 
    48 !----------------------------------------------------------------------- 
    49    ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
    50    ! 
    51    ln_meshmask = .true.    !  create (>0) a mesh file or not (=0) 
    52    rn_rdt      =    18.    !  time step for the dynamics  
    5353/ 
    5454!----------------------------------------------------------------------- 
     
    103103/ 
    104104!----------------------------------------------------------------------- 
    105 &namsbc_rnf    !   runoffs namelist surface boundary condition          (ln_rnf =T) 
    106 !----------------------------------------------------------------------- 
    107    ln_rnf_mouth = .false.   !  specific treatment at rivers mouths 
    108 / 
    109 !----------------------------------------------------------------------- 
    110105&namsbc_ssr    !   surface boundary condition : sea surface restoring   (ln_ssr =T) 
    111106!----------------------------------------------------------------------- 
     
    113108   rn_deds     =   -27.7   !  magnitude of the damping on salinity   [mm/day] 
    114109   ln_sssr_bnd =   .false. !  flag to bound erp term (associated with nn_sssr=2) 
     110/ 
     111!----------------------------------------------------------------------- 
     112&namsbc_rnf    !   runoffs namelist surface boundary condition          (ln_rnf =T) 
     113!----------------------------------------------------------------------- 
     114   ln_rnf_mouth = .false.   !  specific treatment at rivers mouths 
    115115/ 
    116116!!====================================================================== 
     
    206206!----------------------------------------------------------------------- 
    207207   ln_loglayer= .false.    !  logarithmic drag: Cd = vkarmn/log(z/z0) |U| 
     208   ln_lin      = .true.    !      linear  drag: Cd = Cd0 Uc0                   &   namdrg_top) 
     209   ln_non_lin  = .false.   !  non-linear  drag: Cd = Cd0 |U| 
    208210/ 
    209211!----------------------------------------------------------------------- 
  • NEMO/trunk/tests/WAD/MY_SRC/bdyini.F90

    r9659 r9925  
    4444   INTEGER, DIMENSION(jp_nseg) ::   jpjnob, jpindt, jpinft, npckgn   ! 
    4545   INTEGER, DIMENSION(jp_nseg) ::   jpjsob, jpisdt, jpisft, npckgs   ! 
    46  
    4746   !!---------------------------------------------------------------------- 
    48    !! NEMO/OPA 3.7 , NEMO Consortium (2015) 
    49    !! $Id: bdyini.F90 7421 2016-12-01 17:10:41Z flavoni $  
    50    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     47   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     48   !! $Id: bdyini.F90 9807 2018-06-15 22:51:16Z lovato $  
     49   !! Software governed by the CeCILL licence     (./LICENSE) 
    5150   !!---------------------------------------------------------------------- 
    5251CONTAINS 
     
    8685      IF(lwm) WRITE ( numond, nambdy ) 
    8786 
     87      IF( .NOT. Agrif_Root() ) ln_bdy = .FALSE.   ! forced for Agrif children 
     88       
    8889      ! ----------------------------------------- 
    8990      ! unstructured open boundaries use control 
     
    112113   END SUBROUTINE bdy_init 
    113114 
    114     
     115 
    115116   SUBROUTINE bdy_segs 
    116117      !!---------------------------------------------------------------------- 
     
    124125      !! ** Input   :  bdy_init.nc, input file for unstructured open boundaries 
    125126      !!----------------------------------------------------------------------       
    126  
    127       ! local variables 
    128       !------------------- 
    129127      INTEGER  ::   ib_bdy, ii, ij, ik, igrd, ib, ir, iseg ! dummy loop indices 
    130128      INTEGER  ::   icount, icountr, ibr_max, ilen1, ibm1  ! local integers 
     
    146144      INTEGER :: com_east_b, com_west_b, com_south_b, com_north_b  ! Flags for boundaries receiving 
    147145      INTEGER :: iw_b(4), ie_b(4), is_b(4), in_b(4)                ! Arrays for neighbours coordinates 
    148       REAL(wp), DIMENSION(jpi,jpj)      ::   zfmask  ! temporary fmask array excluding coastal boundary condition (shlat) 
     146      REAL(wp), TARGET, DIMENSION(jpi,jpj) ::   zfmask  ! temporary fmask array excluding coastal boundary condition (shlat) 
    149147      !! 
    150148      CHARACTER(LEN=1)                     ::   ctypebdy   !     -        -  
     
    345343 
    346344#if defined key_si3 
    347         IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice:  ' 
    348         SELECT CASE( cn_ice(ib_bdy) )                   
    349           CASE('none') 
     345         IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice:  ' 
     346         SELECT CASE( cn_ice(ib_bdy) )                   
     347         CASE('none') 
    350348             IF(lwp) WRITE(numout,*) '      no open boundary condition'         
    351              dta_bdy(ib_bdy)%ll_a_i  = .false. 
    352              dta_bdy(ib_bdy)%ll_ht_i = .false. 
    353              dta_bdy(ib_bdy)%ll_ht_s = .false. 
    354           CASE('frs') 
     349             dta_bdy(ib_bdy)%ll_a_i = .false. 
     350             dta_bdy(ib_bdy)%ll_h_i = .false. 
     351             dta_bdy(ib_bdy)%ll_h_s = .false. 
     352         CASE('frs') 
    355353             IF(lwp) WRITE(numout,*) '      Flow Relaxation Scheme' 
    356              dta_bdy(ib_bdy)%ll_a_i  = .true. 
    357              dta_bdy(ib_bdy)%ll_ht_i = .true. 
    358              dta_bdy(ib_bdy)%ll_ht_s = .true. 
    359           CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for cn_ice' ) 
    360         END SELECT 
     354             dta_bdy(ib_bdy)%ll_a_i = .true. 
     355             dta_bdy(ib_bdy)%ll_h_i = .true. 
     356             dta_bdy(ib_bdy)%ll_h_s = .true. 
     357         CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for cn_ice' ) 
     358         END SELECT 
    361359        IF( cn_ice(ib_bdy) /= 'none' ) THEN  
    362360           SELECT CASE( nn_ice_dta(ib_bdy) )                   !  
     
    374372        IF(lwp) WRITE(numout,*) '      Width of relaxation zone = ', nn_rimwidth(ib_bdy) 
    375373        IF(lwp) WRITE(numout,*) 
    376  
    377       ENDDO 
    378  
    379      IF (nb_bdy .gt. 0) THEN 
     374         ! 
     375      END DO 
     376 
     377     IF( nb_bdy > 0 ) THEN 
    380378        IF( ln_vol ) THEN                     ! check volume conservation (nn_volctl value) 
    381379          IF(lwp) WRITE(numout,*) 'Volume correction applied at open boundaries' 
     
    417415 
    418416      DO ib_bdy = 1, nb_bdy 
    419          ! 
     417 
    420418         IF( .NOT. ln_coords_file(ib_bdy) ) THEN ! Work out size of global arrays from namelist parameters 
    421             ! 
     419  
    422420            icount = icount + 1 
    423421            ! No REWIND here because may need to read more than one nambdy_index namelist. 
     
    494492            DO igrd = 1, jpbgrd 
    495493               id_dummy = iom_varid( inum, 'nbi'//cgrid(igrd), kdimsz=kdimsz )   
    496                !clem nblendta(igrd,ib_bdy) = kdimsz(1) 
    497                !clem jpbdtau = MAX(jpbdtau, kdimsz(1)) 
    498494               nblendta(igrd,ib_bdy) = MAXVAL(kdimsz) 
    499495               jpbdtau = MAX(jpbdtau, MAXVAL(kdimsz)) 
     
    885881                  IF( nbrdta(ib,igrd,ib_bdy) == 1 )   icountr = icountr+1 
    886882               ENDIF 
    887             ENDDO 
     883            END DO 
    888884            idx_bdy(ib_bdy)%nblenrim(igrd) = icountr !: length of rim boundary data on each proc 
    889885            idx_bdy(ib_bdy)%nblen   (igrd) = icount  !: length of boundary data on each proc         
    890          ENDDO  ! igrd 
     886         END DO  ! igrd 
    891887 
    892888         ! Allocate index arrays for this boundary set 
    893889         !-------------------------------------------- 
    894890         ilen1 = MAXVAL( idx_bdy(ib_bdy)%nblen(:) ) 
    895          ALLOCATE( idx_bdy(ib_bdy)%nbi   (ilen1,jpbgrd) ) 
    896          ALLOCATE( idx_bdy(ib_bdy)%nbj   (ilen1,jpbgrd) ) 
    897          ALLOCATE( idx_bdy(ib_bdy)%nbr   (ilen1,jpbgrd) ) 
    898          ALLOCATE( idx_bdy(ib_bdy)%nbd   (ilen1,jpbgrd) ) 
    899          ALLOCATE( idx_bdy(ib_bdy)%nbdout(ilen1,jpbgrd) ) 
    900          ALLOCATE( idx_bdy(ib_bdy)%nbmap (ilen1,jpbgrd) ) 
    901          ALLOCATE( idx_bdy(ib_bdy)%nbw   (ilen1,jpbgrd) ) 
    902          ALLOCATE( idx_bdy(ib_bdy)%flagu (ilen1,jpbgrd) ) 
    903          ALLOCATE( idx_bdy(ib_bdy)%flagv (ilen1,jpbgrd) ) 
     891         ALLOCATE( idx_bdy(ib_bdy)%nbi   (ilen1,jpbgrd) ,   & 
     892            &      idx_bdy(ib_bdy)%nbj   (ilen1,jpbgrd) ,   & 
     893            &      idx_bdy(ib_bdy)%nbr   (ilen1,jpbgrd) ,   & 
     894            &      idx_bdy(ib_bdy)%nbd   (ilen1,jpbgrd) ,   & 
     895            &      idx_bdy(ib_bdy)%nbdout(ilen1,jpbgrd) ,   & 
     896            &      idx_bdy(ib_bdy)%nbmap (ilen1,jpbgrd) ,   & 
     897            &      idx_bdy(ib_bdy)%nbw   (ilen1,jpbgrd) ,   & 
     898            &      idx_bdy(ib_bdy)%flagu (ilen1,jpbgrd) ,   & 
     899            &      idx_bdy(ib_bdy)%flagv (ilen1,jpbgrd) ) 
    904900 
    905901         ! Dispatch mapping indices and discrete distances on each processor 
     
    11141110         END DO  
    11151111 
    1116       ENDDO 
     1112      END DO 
    11171113 
    11181114      ! ------------------------------------------------------ 
     
    11271123      bdytmask(:,:) = ssmask(:,:) 
    11281124 
    1129       IF( ln_mask_file ) THEN 
    1130          CALL iom_open( cn_mask_file, inum ) 
    1131          CALL iom_get ( inum, jpdom_data, 'bdy_msk', bdytmask(:,:) ) 
    1132          CALL iom_close( inum ) 
    1133  
    1134          ! Derive mask on U and V grid from mask on T grid 
    1135          bdyumask(:,:) = 0._wp 
    1136          bdyvmask(:,:) = 0._wp 
    1137          DO ij=1, jpjm1 
    1138             DO ii=1, jpim1 
    1139                bdyumask(ii,ij) = bdytmask(ii,ij) * bdytmask(ii+1, ij ) 
    1140                bdyvmask(ii,ij) = bdytmask(ii,ij) * bdytmask(ii  ,ij+1)   
    1141             END DO 
     1125      ! Derive mask on U and V grid from mask on T grid 
     1126 
     1127      bdyumask(:,:) = 0._wp 
     1128      bdyvmask(:,:) = 0._wp 
     1129      DO ij = 1, jpjm1 
     1130         DO ii = 1, jpim1 
     1131            bdyumask(ii,ij) = bdytmask(ii,ij) * bdytmask(ii+1, ij ) 
     1132            bdyvmask(ii,ij) = bdytmask(ii,ij) * bdytmask(ii  ,ij+1)   
    11421133         END DO 
    1143          CALL lbc_lnk( bdyumask(:,:), 'U', 1. )   ;   CALL lbc_lnk( bdyvmask(:,:), 'V', 1. )      ! Lateral boundary cond. 
    1144  
    1145       ENDIF ! ln_mask_file=.TRUE. 
    1146        
    1147       IF( .NOT.ln_mask_file ) THEN 
    1148          ! If .not. ln_mask_file then we need to derive mask on U and V grid from mask on T grid here. 
    1149          bdyumask(:,:) = 0._wp 
    1150          bdyvmask(:,:) = 0._wp 
    1151          DO ij = 1, jpjm1 
    1152             DO ii = 1, jpim1 
    1153                bdyumask(ii,ij) = bdytmask(ii,ij) * bdytmask(ii+1, ij ) 
    1154                bdyvmask(ii,ij) = bdytmask(ii,ij) * bdytmask(ii  ,ij+1)   
    1155             END DO 
    1156          END DO 
    1157          CALL lbc_lnk( bdyumask(:,:), 'U', 1. )   ;   CALL lbc_lnk( bdyvmask(:,:), 'V', 1. )      ! Lateral boundary cond. 
    1158       ENDIF 
     1134      END DO 
     1135      CALL lbc_lnk_multi( bdyumask, 'U', 1. , bdyvmask, 'V', 1. )   ! Lateral boundary cond.  
    11591136 
    11601137      ! bdy masks are now set to zero on boundary points: 
     
    11781155        DO ib = 1, idx_bdy(ib_bdy)%nblenrim(igrd) 
    11791156          bdyvmask(idx_bdy(ib_bdy)%nbi(ib,igrd), idx_bdy(ib_bdy)%nbj(ib,igrd)) = 0._wp 
    1180         ENDDO 
    1181       ENDDO 
     1157        END DO 
     1158      END DO 
    11821159 
    11831160      ! For the flagu/flagv calculation below we require a version of fmask without 
    11841161      ! the land boundary condition (shlat) included: 
     1162      zfmask(:,:) = 0 
    11851163      DO ij = 2, jpjm1 
    11861164         DO ii = 2, jpim1 
     
    11911169 
    11921170      ! Lateral boundary conditions 
    1193       CALL lbc_lnk( zfmask       , 'F', 1. ) 
    1194       CALL lbc_lnk( fmask        , 'F', 1. )   ;   CALL lbc_lnk( bdytmask(:,:), 'T', 1. ) 
    1195       CALL lbc_lnk( bdyumask(:,:), 'U', 1. )   ;   CALL lbc_lnk( bdyvmask(:,:), 'V', 1. ) 
    1196  
     1171      CALL lbc_lnk( zfmask, 'F', 1. )  
     1172      CALL lbc_lnk_multi( bdyumask, 'U', 1. , bdyvmask, 'V', 1., bdytmask, 'T', 1. ) 
    11971173      DO ib_bdy = 1, nb_bdy       ! Indices and directions of rim velocity components 
    11981174 
     
    12061182         ! flagu =  1 : u is normal to the boundary and is direction is inward 
    12071183   
    1208          DO igrd = 1,jpbgrd  
     1184         DO igrd = 1, jpbgrd  
    12091185            SELECT CASE( igrd ) 
    12101186               CASE( 1 )   ;   pmask => umask   (:,:,1)   ;   i_offset = 0 
     
    13101286      !-------- 
    13111287      IF( nb_bdy>0 )   DEALLOCATE( nbidta, nbjdta, nbrdta ) 
    1312       ! 
    13131288      ! 
    13141289   END SUBROUTINE bdy_segs 
     
    16901665   END SUBROUTINE bdy_ctl_seg 
    16911666 
     1667 
    16921668   SUBROUTINE bdy_ctl_corn( ib1, ib2 ) 
    16931669      !!---------------------------------------------------------------------- 
  • NEMO/trunk/tests/WAD/MY_SRC/usrdef_hgr.F90

    r9124 r9925  
    77   !! User defined :   mesh and Coriolis parameter of a user configuration 
    88   !!====================================================================== 
    9    !! History :  NEMO  ! 2016-08  (S. Flavoni, G. Madec)  Original code 
     9   !! History :  4.0 ! 2016-03  (S. Flavoni)  
    1010   !!---------------------------------------------------------------------- 
    1111 
     
    2727 
    2828   !!---------------------------------------------------------------------- 
    29    !! NEMO/OPA 4.0 , NEMO Consortium (2016) 
    30    !! $Id$  
    31    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     29   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     30   !! $Id:$  
     31   !! Software governed by the CeCILL licence     (./LICENSE) 
    3232   !!---------------------------------------------------------------------- 
    3333CONTAINS 
  • NEMO/trunk/tests/WAD/MY_SRC/usrdef_istate.F90

    r9024 r9925  
    77   !! User defined : set the initial state of a user configuration 
    88   !!====================================================================== 
    9    !! History :  NEMO ! 2016-03  (S. Flavoni, G. Madec) Original code 
     9   !! History :  4.0 ! 2016-03  (S. Flavoni) Original code 
    1010   !!---------------------------------------------------------------------- 
    1111 
     
    2424   PRIVATE 
    2525 
    26    PUBLIC   usr_def_istate   ! called by istate.F90 
     26   PUBLIC   usr_def_istate   ! called in istate.F90 
    2727 
    2828   !!---------------------------------------------------------------------- 
    29    !! NEMO/OPA 4.0 , NEMO Consortium (2016) 
    30    !! $Id$  
    31    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     29   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     30   !! $Id:$  
     31   !! Software governed by the CeCILL licence     (./LICENSE) 
    3232   !!---------------------------------------------------------------------- 
    3333CONTAINS 
  • NEMO/trunk/tests/WAD/MY_SRC/usrdef_nam.F90

    r7616 r9925  
    77   !! User defined : set the domain characteristics of a user configuration 
    88   !!====================================================================== 
    9    !! History :  NEMO ! 2016-03  (S. Flavoni, G. Madec)  Original code 
     9   !! History :  4.0 ! 2016-03  (S. Flavoni, G. Madec)  Original code 
    1010   !!---------------------------------------------------------------------- 
    1111 
     
    3333 
    3434   !!---------------------------------------------------------------------- 
    35    !! NEMO/OPA 4.0 , NEMO Consortium (2016) 
    36    !! $Id$  
    37    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     35   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     36   !! $Id:$  
     37   !! Software governed by the CeCILL licence     (./LICENSE) 
    3838   !!---------------------------------------------------------------------- 
    3939CONTAINS 
  • NEMO/trunk/tests/WAD/MY_SRC/usrdef_zgr.F90

    r9135 r9925  
    77   !! Ocean domain : user defined vertical coordinate system  
    88   !!====================================================================== 
    9    !! History :  4.0  ! 2016-08  (G. Madec, S. Flavoni)  Original code 
     9   !! History :  4.0  ! 2016-06  (G. Madec)  Original code 
    1010   !!---------------------------------------------------------------------- 
    1111 
    1212   !!---------------------------------------------------------------------- 
    1313   !!   usr_def_zgr   : user defined vertical coordinate system (required) 
    14    !!       zgr_z1d   : reference 1D z-coordinate  
     14   !!       zgr_z     : reference 1D z-coordinate  
    1515   !!--------------------------------------------------------------------- 
    1616   USE oce            ! ocean variables 
     
    2727   PRIVATE 
    2828 
    29    PUBLIC   usr_def_zgr   ! called by domzgr.F90 
    30  
    31   !! * Substitutions 
     29   PUBLIC   usr_def_zgr        ! called by domzgr.F90 
     30 
     31   !! * Substitutions 
    3232#  include "vectopt_loop_substitute.h90" 
    3333   !!---------------------------------------------------------------------- 
    34    !! NEMO/OPA 4.0 , NEMO Consortium (2016) 
    35    !! $Id$ 
    36    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     34   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     35   !! $Id:$ 
     36   !! Software governed by the CeCILL licence     (./LICENSE) 
    3737   !!---------------------------------------------------------------------- 
    3838CONTAINS              
     
    4141      &                    pdept_1d, pdepw_1d, pe3t_1d , pe3w_1d  ,    &   ! 1D reference vertical coordinate 
    4242      &                    pdept , pdepw ,                             &   ! 3D t & w-points depth 
    43       &                    pe3t  , pe3u  , pe3v , pe3f ,               &   ! vertical scale factors 
    44       &                    pe3w  , pe3uw , pe3vw,                      &   !     -      -      - 
     43      &                    pe3t  , pe3u  , pe3v   , pe3f ,             &   ! vertical scale factors 
     44      &                    pe3w  , pe3uw , pe3vw         ,             &   !     -      -      - 
    4545      &                    k_top  , k_bot    )                             ! top & bottom ocean level 
    4646      !!--------------------------------------------------------------------- 
     
    255255      END DO 
    256256      !      
    257       CALL zgr_z1d( pdept_1d, pdepw_1d, pe3t_1d , pe3w_1d )   ! Reference z-coordinate system 
     257      CALL zgr_z( pdept_1d, pdepw_1d, pe3t_1d , pe3w_1d )   ! Reference z-coordinate system 
    258258      ! 
    259259      ! 
     
    334334 
    335335 
    336    SUBROUTINE zgr_z1d( pdept_1d, pdepw_1d, pe3t_1d , pe3w_1d )   ! 1D reference vertical coordinate 
    337       !!---------------------------------------------------------------------- 
    338       !!                   ***  ROUTINE zgr_z1d  *** 
     336   SUBROUTINE zgr_z( pdept_1d, pdepw_1d, pe3t_1d , pe3w_1d )   ! 1D reference vertical coordinate 
     337      !!---------------------------------------------------------------------- 
     338      !!                   ***  ROUTINE zgr_z  *** 
    339339      !! 
    340340      !! ** Purpose :   set the depth of model levels and the resulting  
     
    363363      IF(lwp) THEN                         ! Parameter print 
    364364         WRITE(numout,*) 
    365          WRITE(numout,*) '    zgr_z1d : Reference vertical z-coordinates: uniform dz = ', rn_dz 
     365         WRITE(numout,*) '    zgr_z : Reference vertical z-coordinates: uniform dz = ', rn_dz 
    366366         WRITE(numout,*) '    ~~~~~~~' 
    367367      ENDIF 
     
    385385      ENDIF 
    386386      ! 
    387    END SUBROUTINE zgr_z1d 
     387   END SUBROUTINE zgr_z 
    388388    
    389389   !!====================================================================== 
Note: See TracChangeset for help on using the changeset viewer.