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 8898 for branches – NEMO

Changeset 8898 for branches


Ignore:
Timestamp:
2017-12-05T14:06:56+01:00 (6 years ago)
Author:
jchanut
Message:

AGRIF+VVL: Merge with free surface changes - #1965

Location:
branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/CONFIG/SHARED/namelist_ref

    r8599 r8898  
    835835         rn_bt_cmax   =  0.8        ! =T : the Maximum Courant Number allowed 
    836836         nn_baro      = 30          ! =F : the number of sub-step in rn_rdt seconds 
     837      rn_bt_alpha   = 0.1        ! Temporal diffusion parameter (if ln_bt_av=F) 
    837838/ 
    838839!----------------------------------------------------------------------- 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/NST_SRC/agrif_opa_update.F90

    r8803 r8898  
    103103      ! 
    104104      nbcline = nbcline + 1 
     105      ! 
     106# if ! defined DECAL_FEEDBACK 
     107      ! Account for updated thicknesses at boundary edges 
     108      IF (.NOT.ln_linssh) THEN 
     109         CALL Agrif_Update_Variable(un_update_id,locupdate1=(/0,0/),locupdate2=(/0,0/),procname = correct_u_bdy) 
     110         CALL Agrif_Update_Variable(vn_update_id,locupdate1=(/0,0/),locupdate2=(/0,0/),procname = correct_v_bdy) 
     111      ENDIF 
     112# endif 
    105113      !  
    106114      IF ( ln_dynspg_ts.AND.ln_bt_fw ) THEN 
     
    379387                  ! 
    380388                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
    381                      zub  = ub(ji,jj,jk) * e3u_b(ji,jj,jk) 
     389                     zub  = ub(ji,jj,jk) * e3u_b(ji,jj,jk)  ! fse3t_b prior update should be used 
    382390                     zuno = un(ji,jj,jk) * e3u_a(ji,jj,jk) 
    383391                     zunu = tabres(ji,jj,jk) 
     
    399407   END SUBROUTINE updateu 
    400408 
     409   SUBROUTINE correct_u_bdy( tabres, i1, i2, j1, j2, k1, k2, before, nb, ndir ) 
     410      !!--------------------------------------------- 
     411      !!           *** ROUTINE correct_u_bdy *** 
     412      !!--------------------------------------------- 
     413      INTEGER                               , INTENT(in   ) :: i1, i2, j1, j2, k1, k2 
     414      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: tabres 
     415      LOGICAL                               , INTENT(in   ) :: before 
     416      INTEGER                               , INTENT(in)    :: nb, ndir 
     417      !! 
     418      LOGICAL :: western_side, eastern_side  
     419      ! 
     420      INTEGER  :: jj, jk 
     421      REAL(wp) :: zcor 
     422      !!--------------------------------------------- 
     423      !  
     424      IF( .NOT.before ) THEN 
     425         ! 
     426         western_side  = (nb == 1).AND.(ndir == 1) 
     427         eastern_side  = (nb == 1).AND.(ndir == 2) 
     428         ! 
     429         IF (western_side) THEN 
     430            DO jj=j1,j2 
     431               zcor = un_b(i1-1,jj) * hu_a(i1-1,jj) * r1_hu_n(i1-1,jj) - un_b(i1-1,jj) 
     432               un_b(i1-1,jj) = un_b(i1-1,jj) + zcor 
     433               DO jk=1,jpkm1 
     434                  un(i1-1,jj,jk) = un(i1-1,jj,jk) + zcor * umask(i1-1,jj,jk) 
     435               END DO  
     436            END DO 
     437         ENDIF 
     438         ! 
     439         IF (eastern_side) THEN 
     440            DO jj=j1,j2 
     441               zcor = un_b(i2+1,jj) * hu_a(i2+1,jj) * r1_hu_n(i2+1,jj) - un_b(i2+1,jj) 
     442               un_b(i2+1,jj) = un_b(i2+1,jj) + zcor 
     443               DO jk=1,jpkm1 
     444                  un(i2+1,jj,jk) = un(i2+1,jj,jk) + zcor * umask(i2+1,jj,jk) 
     445               END DO  
     446            END DO 
     447         ENDIF 
     448         ! 
     449      ENDIF 
     450      !  
     451   END SUBROUTINE correct_u_bdy 
     452 
    401453 
    402454   SUBROUTINE updatev( tabres, i1, i2, j1, j2, k1, k2, before) 
     
    428480                  ! 
    429481                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
    430                      zvb  = vb(ji,jj,jk) * e3v_b(ji,jj,jk) 
     482                     zvb  = vb(ji,jj,jk) * e3v_b(ji,jj,jk) ! fse3t_b prior update should be used 
    431483                     zvno = vn(ji,jj,jk) * e3v_a(ji,jj,jk) 
    432484                     zvnu = tabres(ji,jj,jk) 
     
    447499      !  
    448500   END SUBROUTINE updatev 
     501 
     502   SUBROUTINE correct_v_bdy( tabres, i1, i2, j1, j2, k1, k2, before, nb, ndir ) 
     503      !!--------------------------------------------- 
     504      !!           *** ROUTINE correct_u_bdy *** 
     505      !!--------------------------------------------- 
     506      INTEGER                               , INTENT(in   ) :: i1, i2, j1, j2, k1, k2 
     507      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: tabres 
     508      LOGICAL                               , INTENT(in   ) :: before 
     509      INTEGER                               , INTENT(in)    :: nb, ndir 
     510      !! 
     511      LOGICAL :: southern_side, northern_side  
     512      ! 
     513      INTEGER  :: ji, jk 
     514      REAL(wp) :: zcor 
     515      !!--------------------------------------------- 
     516      !  
     517      IF( .NOT.before ) THEN 
     518         ! 
     519         southern_side = (nb == 2).AND.(ndir == 1) 
     520         northern_side = (nb == 2).AND.(ndir == 2) 
     521         ! 
     522         IF (southern_side) THEN 
     523            DO ji=i1,i2 
     524               zcor = vn_b(ji,j1-1) * hv_a(ji,j1-1) * r1_hv_n(ji,j1-1) - vn_b(ji,j1-1) 
     525               vn_b(ji,j1-1) = vn_b(ji,j1-1) + zcor 
     526               DO jk=1,jpkm1 
     527                  vn(ji,j1-1,jk) = vn(ji,j1-1,jk) + zcor * vmask(ji,j1-1,jk) 
     528               END DO  
     529            END DO 
     530         ENDIF 
     531         ! 
     532         IF (northern_side) THEN 
     533            DO ji=i1,i2 
     534               zcor = vn_b(ji,j2+1) * hv_a(ji,j2+1) * r1_hv_n(ji,j2+1) - vn_b(ji,j2+1) 
     535               vn_b(ji,j2+1) = vn_b(ji,j2+1) + zcor 
     536               DO jk=1,jpkm1 
     537                  vn(ji,j2+1,jk) = vn(ji,j2+1,jk) + zcor * vmask(ji,j2+1,jk) 
     538               END DO  
     539            END DO 
     540         ENDIF 
     541         ! 
     542      ENDIF 
     543      !  
     544   END SUBROUTINE correct_v_bdy 
    449545 
    450546 
     
    602698         END DO 
    603699      ELSE 
    604          IF (     (.NOT.(lk_agrif_fstep.AND.(neuler==0)).AND.(ln_dynspg_exp)) & 
    605             & .OR.(.NOT.(lk_agrif_fstep.AND.(neuler==0)).AND.(ln_dynspg_ts    & 
    606             & .AND.(.NOT.ln_bt_fw)))) THEN 
    607 ! tsplit_new 
    608 !         IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
     700         IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
    609701            DO jj=j1,j2 
    610702               DO ji=i1,i2 
     
    662754               ub2_i_b(ji,jj) = ub2_i_b(ji,jj) + za1 * zcor  
    663755               ! Update corrective fluxes: 
    664 ! tsplit_new 
    665 !               un_bf(ji,jj)  = un_bf(ji,jj) + zcor 
     756               un_bf(ji,jj)  = un_bf(ji,jj) + zcor 
    666757               ! Update half step back fluxes: 
    667758               ub2_b(ji,jj) = tabres(ji,jj) 
     
    720811   END SUBROUTINE reflux_sshu 
    721812 
    722  
    723813   SUBROUTINE updatevb2b( tabres, i1, i2, j1, j2, before ) 
    724814      !!--------------------------------------------- 
     
    752842               vb2_i_b(ji,jj) = vb2_i_b(ji,jj) + za1 * zcor  
    753843               ! Update corrective fluxes: 
    754 ! tsplit_new 
    755 !               vn_bf(ji,jj)  = vn_bf(ji,jj) + zcor 
     844               vn_bf(ji,jj)  = vn_bf(ji,jj) + zcor 
    756845               ! Update half step back fluxes: 
    757846               vb2_b(ji,jj) = tabres(ji,jj) 
     
    9521041!         hdivn(i1:i2,j1:j2,1:jpkm1)   = e3t_b(i1:i2,j1:j2,1:jpkm1) 
    9531042 
    954          IF (     (.NOT.(lk_agrif_fstep.AND.(neuler==0)).AND.(ln_dynspg_exp)) & 
    955             & .OR.(.NOT.(lk_agrif_fstep.AND.(neuler==0)).AND.(ln_dynspg_ts    & 
    956             & .AND.(.NOT.ln_bt_fw)))) THEN 
    957 ! tsplit_new 
    958 !         IF (.NOT.(lk_agrif_fstep.AND.(neuler==0) )) THEN 
    959  
     1043         IF (.NOT.(lk_agrif_fstep.AND.(neuler==0) )) THEN 
    9601044            DO jk = 1, jpkm1 
    9611045               DO jj=j1,j2 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90

    r7914 r8898  
    5353   INTEGER,  PUBLIC :: nn_baro          !: Number of barotropic iterations during one baroclinic step (rdt) 
    5454   REAL(wp), PUBLIC :: rn_bt_cmax       !: Maximum allowed courant number (used if ln_bt_auto=T) 
     55   REAL(wp), PUBLIC :: rn_bt_alpha      !: Time stepping diffusion parameter 
    5556 
    5657 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90

    r8741 r8898  
    209209            ! (used as a now filtered scale factor until the swap) 
    210210            ! ---------------------------------------------------- 
    211             IF( ln_dynspg_ts .AND. ln_bt_fw ) THEN    ! No asselin filtering on thicknesses if forward time splitting 
    212                e3t_b(:,:,1:jpkm1) = e3t_n(:,:,1:jpkm1) 
    213             ELSE 
    214                DO jk = 1, jpkm1 
    215                   e3t_b(:,:,jk) = e3t_n(:,:,jk) + atfp * ( e3t_b(:,:,jk) - 2._wp * e3t_n(:,:,jk) + e3t_a(:,:,jk) ) 
     211            DO jk = 1, jpkm1 
     212               e3t_b(:,:,jk) = e3t_n(:,:,jk) + atfp * ( e3t_b(:,:,jk) - 2._wp * e3t_n(:,:,jk) + e3t_a(:,:,jk) ) 
     213            END DO 
     214            ! Add volume filter correction: compatibility with tracer advection scheme 
     215            ! => time filter + conservation correction (only at the first level) 
     216            zcoef = atfp * rdt * r1_rau0 
     217            IF ( .NOT. ln_isf ) THEN   ! if no ice shelf melting 
     218               e3t_b(:,:,1) = e3t_b(:,:,1) - zcoef * ( emp_b(:,:) - emp(:,:) & 
     219                              &                      - rnf_b(:,:) + rnf(:,:) ) * tmask(:,:,1) 
     220            ELSE                     ! if ice shelf melting 
     221               DO jj = 1, jpj 
     222                  DO ji = 1, jpi 
     223                     ikt = mikt(ji,jj) 
     224                     e3t_b(ji,jj,ikt) = e3t_b(ji,jj,ikt) - zcoef * (  emp_b   (ji,jj) - emp   (ji,jj)  & 
     225                        &                                           - rnf_b   (ji,jj) + rnf   (ji,jj)  & 
     226                        &                                           + fwfisf_b(ji,jj) - fwfisf(ji,jj)  ) * tmask(ji,jj,ikt) 
     227                  END DO 
    216228               END DO 
    217                ! Add volume filter correction: compatibility with tracer advection scheme 
    218                ! => time filter + conservation correction (only at the first level) 
    219                zcoef = atfp * rdt * r1_rau0 
    220                IF ( .NOT. ln_isf ) THEN   ! if no ice shelf melting 
    221                   e3t_b(:,:,1) = e3t_b(:,:,1) - zcoef * ( emp_b(:,:) - emp(:,:) & 
    222                                  &                      - rnf_b(:,:) + rnf(:,:) ) * tmask(:,:,1) 
    223                ELSE                     ! if ice shelf melting 
    224                   DO jj = 1, jpj 
    225                      DO ji = 1, jpi 
    226                         ikt = mikt(ji,jj) 
    227                         e3t_b(ji,jj,ikt) = e3t_b(ji,jj,ikt) - zcoef * (  emp_b   (ji,jj) - emp   (ji,jj)  & 
    228                            &                                           - rnf_b   (ji,jj) + rnf   (ji,jj)  & 
    229                            &                                           + fwfisf_b(ji,jj) - fwfisf(ji,jj)  ) * tmask(ji,jj,ikt) 
    230                      END DO 
    231                   END DO 
    232                END IF 
    233             ENDIF 
     229            END IF 
    234230            ! 
    235231            IF( ln_dynadv_vec ) THEN      ! Asselin filter applied on velocity 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90

    r7753 r8898  
    183183      NAMELIST/namdyn_spg/ ln_dynspg_exp       , ln_dynspg_ts,   & 
    184184      &                    ln_bt_fw, ln_bt_av  , ln_bt_auto  ,   & 
    185       &                    nn_baro , rn_bt_cmax, nn_bt_flt 
     185      &                    nn_baro , rn_bt_cmax, nn_bt_flt, rn_bt_alpha 
    186186      !!---------------------------------------------------------------------- 
    187187      ! 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r8762 r8898  
    6767   PUBLIC ts_rst            !    "      "     "    " 
    6868 
    69    INTEGER, SAVE :: icycle  ! Number of barotropic sub-steps for each internal step nn_baro <= 2.5 nn_baro 
    70    REAL(wp),SAVE :: rdtbt   ! Barotropic time step 
     69   INTEGER, SAVE :: icycle      ! Number of barotropic sub-steps for each internal step nn_baro <= 2.5 nn_baro 
     70   REAL(wp),SAVE :: rdtbt       ! Barotropic time step 
    7171 
    7272   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) ::   wgtbtp1, wgtbtp2   !: 1st & 2nd weights used in time filtering of barotropic fields 
     
    151151      REAL(wp) ::   zhura, zhvra          !   -      - 
    152152      REAL(wp) ::   za0, za1, za2, za3    !   -      - 
    153       ! 
     153      REAL(wp) ::   zepsilon, zgamma            !   -      - 
    154154      REAL(wp), POINTER, DIMENSION(:,:) :: zsshp2_e 
    155155      REAL(wp), POINTER, DIMENSION(:,:) :: zu_trd, zv_trd, zu_frc, zv_frc, zssh_frc 
     
    759759           za3= 0._wp               
    760760         ELSE                               ! AB3-AM4 Coefficients; bet=0.281105 ; eps=0.013 ; gam=0.0880  
    761            za0=0.614_wp                     ! za0 = 1/2 +   gam + 2*eps     
    762            za1=0.285_wp                     ! za1 = 1/2 - 2*gam - 3*eps  
    763            za2=0.088_wp                     ! za2 = gam 
    764            za3=0.013_wp                     ! za3 = eps 
     761            IF (rn_bt_alpha==0._wp) THEN 
     762               za0=0.614_wp                 ! za0 = 1/2 +   gam + 2*eps 
     763               za1=0.285_wp                 ! za1 = 1/2 - 2*gam - 3*eps 
     764               za2=0.088_wp                 ! za2 = gam 
     765               za3=0.013_wp                 ! za3 = eps 
     766            ELSE 
     767               zepsilon = 0.00976186_wp - 0.13451357_wp * rn_bt_alpha 
     768               zgamma = 0.08344500_wp - 0.51358400_wp * rn_bt_alpha 
     769               za0 = 0.5_wp + zgamma + 2._wp * rn_bt_alpha + 2._wp * zepsilon 
     770               za1 = 1._wp - za0 - zgamma - zepsilon 
     771               za2 = zgamma 
     772               za3 = zepsilon 
     773            ENDIF  
    765774         ENDIF 
    766775         ! 
     
    10241033         zwy(:,:) = vn_adv(:,:) 
    10251034         IF( .NOT.( kt == nit000 .AND. neuler==0 ) ) THEN 
    1026             un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zwx(:,:) )  
    1027             vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zwy(:,:) ) 
    1028          END IF 
     1035            un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zwx(:,:) - atfp * un_bf(:,:) ) 
     1036            vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zwy(:,:) - atfp * vn_bf(:,:) ) 
     1037            ! 
     1038            ! Update corrective fluxes for next time step: 
     1039            un_bf(:,:)  = atfp * un_bf(:,:) + (zwx(:,:) - ub2_b(:,:)) 
     1040            vn_bf(:,:)  = atfp * vn_bf(:,:) + (zwy(:,:) - vb2_b(:,:)) 
     1041         ELSE 
     1042            un_bf(:,:) = 0._wp 
     1043            vn_bf(:,:) = 0._wp  
     1044         END IF          
    10291045         ! Save integrated transport for next computation 
    10301046         ub2_b(:,:) = zwx(:,:) 
     
    11981214         CALL iom_get( numror, jpdom_autoglo, 'ub2_b'  , ub2_b  (:,:) )    
    11991215         CALL iom_get( numror, jpdom_autoglo, 'vb2_b'  , vb2_b  (:,:) )  
     1216         CALL iom_get( numror, jpdom_autoglo, 'un_bf'  , un_bf  (:,:) )    
     1217         CALL iom_get( numror, jpdom_autoglo, 'vn_bf'  , vn_bf  (:,:) )  
    12001218         IF( .NOT.ln_bt_av ) THEN 
    12011219            CALL iom_get( numror, jpdom_autoglo, 'sshbb_e'  , sshbb_e(:,:) )    
     
    12171235         CALL iom_rstput( kt, nitrst, numrow, 'ub2_b'   , ub2_b  (:,:) ) 
    12181236         CALL iom_rstput( kt, nitrst, numrow, 'vb2_b'   , vb2_b  (:,:) ) 
     1237         CALL iom_rstput( kt, nitrst, numrow, 'un_bf'   , un_bf  (:,:) ) 
     1238         CALL iom_rstput( kt, nitrst, numrow, 'vn_bf'   , vn_bf  (:,:) ) 
    12191239         ! 
    12201240         IF (.NOT.ln_bt_av) THEN 
     
    12951315#if defined key_agrif 
    12961316      ! Restrict the use of Agrif to the forward case only 
    1297       IF( .NOT.ln_bt_fw .AND. .NOT.Agrif_Root() )   CALL ctl_stop( 'AGRIF not implemented if ln_bt_fw=.FALSE.' ) 
     1317!!!      IF( .NOT.ln_bt_fw .AND. .NOT.Agrif_Root() )   CALL ctl_stop( 'AGRIF not implemented if ln_bt_fw=.FALSE.' ) 
    12981318#endif 
    12991319      ! 
     
    13111331      IF(lwp) WRITE(numout,*) '     Maximum Courant number is   :', zcmax 
    13121332      ! 
     1333      IF(lwp) WRITE(numout,*)    '     Time diffusion parameter rn_bt_alpha: ', rn_bt_alpha 
     1334      IF ((ln_bt_av.AND.nn_bt_flt/=0).AND.(rn_bt_alpha>0._wp)) THEN 
     1335         CALL ctl_stop( 'dynspg_ts ERROR: if rn_bt_alpha > 0, remove temporal averaging' ) 
     1336      ENDIF 
     1337      ! 
    13131338      IF( .NOT.ln_bt_av .AND. .NOT.ln_bt_fw ) THEN 
    13141339         CALL ctl_stop( 'dynspg_ts ERROR: No time averaging => only forward integration is possible' ) 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90

    r8741 r8898  
    260260      ENDIF 
    261261      !              !==  Euler time-stepping: no filter, just swap  ==! 
    262       IF(  ( neuler == 0 .AND. kt == nit000 ) .OR.    & 
    263          & ( ln_bt_fw    .AND. ln_dynspg_ts )      ) THEN  
     262      IF  ( neuler == 0 .AND. kt == nit000 ) THEN 
    264263         sshb(:,:) = sshn(:,:)                              ! before <-- now 
    265264         sshn(:,:) = ssha(:,:)                              ! now    <-- after  (before already = now) 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90

    r8570 r8898  
    606606         &                                               'Compile with key_nosignedzero enabled' ) 
    607607      ! 
     608#if defined key_agrif 
     609      IF( nn_timing == 1 ) CALL ctl_stop( 'AGRIF not implemented with nn_timing = 1') 
     610#endif 
     611      ! 
    608612   END SUBROUTINE nemo_ctl 
    609613 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/oce.F90

    r7646 r8898  
    4545   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::                              hvr_e  !: inverse of v-depth 
    4646   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ub2_b  , vb2_b           !: Half step fluxes (ln_bt_fw=T) 
     47   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   un_bf  , vn_bf           !: Asselin filtered half step fluxes (ln_bt_fw=T) 
    4748#if defined key_agrif 
    4849   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ub2_i_b, vb2_i_b         !: Half step time integrated fluxes  
     
    119120         &        hu_e(jpi,jpj),   hur_e(jpi,jpj),   hv_e(jpi,jpj),   hvr_e(jpi,jpj), STAT=ierr(5) ) 
    120121         ! 
    121       ALLOCATE( ub2_b(jpi,jpj), vb2_b(jpi,jpj)                                      , STAT=ierr(6) ) 
     122      ALLOCATE( ub2_b(jpi,jpj), vb2_b(jpi,jpj), un_bf(jpi,jpj), vn_bf(jpi,jpj)      , STAT=ierr(6) ) 
    122123#if defined key_agrif 
    123124      ALLOCATE( ub2_i_b(jpi,jpj), vb2_i_b(jpi,jpj)                                  , STAT=ierr(7) ) 
Note: See TracChangeset for help on using the changeset viewer.