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 3839 for branches/2011 – NEMO

Changeset 3839 for branches/2011


Ignore:
Timestamp:
2013-03-14T19:00:38+01:00 (11 years ago)
Author:
gm
Message:

dev_r2739_LOCEAN8_ZTC (z-tilde): #863 correct bugs and rename some variables

Location:
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM
Files:
50 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/GYRE/EXP00/namelist

    r2905 r3839  
    511511&nam_vvl    !   vertical coordinate options 
    512512!----------------------------------------------------------------------- 
    513 &nam_vvl 
    514    ln_vvl_zstar  = .false. !  zstar vertical coordinate                     
     513   ln_vvl_zstar  = .true.  !  zstar vertical coordinate                     
    515514   ln_vvl_ztilde = .false. !  hybrid verticalcoordinate: only high frequency variations 
    516515   ln_vvl_layer  = .false. !  full layer vertical coordinate 
    517    ahe3          = 0.e0    !  thickness diffusion coefficient  
     516   rn_ahe3       = 0.e0    !  thickness diffusion coefficient  
     517   ln_vvl_dbg    = .true.  !  debug prints    (T/F) 
    518518/ 
    519519!----------------------------------------------------------------------- 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/1_namelist

    r2905 r3839  
    511511&nam_vvl    !   vertical coordinate options 
    512512!----------------------------------------------------------------------- 
    513 &nam_vvl 
    514513   ln_vvl_zstar  = .false. !  zstar vertical coordinate                     
    515    ln_vvl_ztilde = .false. !  hybrid verticalcoordinate: only high frequency variations 
     514   ln_vvl_ztilde = .true. !  hybrid verticalcoordinate: only high frequency variations 
    516515   ln_vvl_layer  = .false. !  full layer vertical coordinate 
    517    ahe3          = 0.e0    !  thickness diffusion coefficient  
     516   rn_ahe3       = 0.e0    !  thickness diffusion coefficient  
     517   ln_vvl_dbg    = .true.  !  debug prints    (T/F) 
    518518/ 
    519519!----------------------------------------------------------------------- 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/iodef.xml

    r2905 r3839  
    4949   <field id="cellthc"      description="Cell thickness"                            unit="m"     axis_ref="deptht"  /> 
    5050   <!-- variables available with key_vvl --> 
    51    <field id="e3t_n"        description="vertical scale factor"                     unit="m"                        /> 
    52    <field id="e3tdef"       description="vertical scale factor variance"            unit="%^2"                      /> 
    53    <field id="dept_n"       description="depth"                                     unit="m"                        /> 
     51   <field id="e3t_n"        description="vertical scale factor"                     unit="m"     axis_ref="deptht"  /> 
     52   <field id="e3tdef"       description="vertical scale factor variance"            unit="%^2"   axis_ref="deptht"  /> 
     53   <field id="dept_n"       description="depth"                                     unit="m"     axis_ref="deptht"  /> 
    5454     </group> 
    5555 
     
    296296     <field ref="hc300"        name="sohtc300"  /> 
    297297     <field ref="ist_ipa"      name="soicetem"  /> 
    298      <field ref="icealb_cea"   name="soicealb"  />    
     298     <field ref="icealb_cea"   name="soicealb"  /> 
     299     <field ref="e3t_n"        name="voe3tvvl"  /> 
     300     <field ref="e3tdef"       name="voe3tdef"  /> 
     301     <field ref="dept_n"       name="vodepthn"  /> 
    299302   </file> 
    300303    
     
    613616   <field id="botpres"      description="Pressure at sea floor"                     unit="dbar"                     /> 
    614617   <field id="cellthc"      description="Cell thickness"                            unit="m"     axis_ref="deptht"  /> 
     618   <!-- variables available with key_vvl --> 
     619   <field id="e3t_n"        description="vertical scale factor"                     unit="m"     axis_ref="deptht"  /> 
     620   <field id="e3tdef"    description="vertical scale factor variance"       unit="%^2"   axis_ref="deptht"  /> 
     621   <field id="dept_n"    description="depth"              unit="m"     axis_ref="deptht"  /> 
    615622     </group> 
    616623 
     
    859866     <field ref="hc300"        name="sohtc300"  /> 
    860867     <field ref="ist_ipa"      name="soicetem"  /> 
    861      <field ref="icealb_cea"   name="soicealb"  />    
     868     <field ref="icealb_cea"   name="soicealb"  /> 
     869     <field ref="e3t_n"        name="voe3tvvl"  /> 
     870     <field ref="e3tdef"       name="voe3tdef"  /> 
     871     <field ref="dept_n"       name="vodepthn"  /> 
    862872   </file> 
    863873    
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist

    r2905 r3839  
    5858&namzgr        !   vertical coordinate 
    5959!----------------------------------------------------------------------- 
    60    ln_zco      = .false.   !  z-coordinate - full    steps   (T/F)      ("key_zco" may also be defined) 
    61    ln_zps      = .true.    !  z-coordinate - partial steps   (T/F) 
     60   ln_zco      = .true.    !  z-coordinate - full    steps   (T/F)      ("key_zco" may also be defined) 
     61   ln_zps      = .false.   !  z-coordinate - partial steps   (T/F) 
    6262   ln_sco      = .false.   !  s- or hybrid z-s-coordinate    (T/F) 
    6363/ 
     
    252252   ln_qsr_2bd  = .false.   !  2 bands              light penetration 
    253253   ln_qsr_bio  = .false.   !  bio-model light penetration 
    254    nn_chldta   =      1    !  RGB : Chl data (=1) or cst value (=0) 
     254   nn_chldta   =      0    !  RGB : Chl data (=1) or cst value (=0) 
    255255   rn_abs      =   0.58    !  RGB & 2 bands: fraction of light (rn_si1) 
    256256   rn_si0      =   0.35    !  RGB & 2 bands: shortess depth of extinction 
     
    511511&nam_vvl    !   vertical coordinate options 
    512512!----------------------------------------------------------------------- 
    513 &nam_vvl 
    514    ln_vvl_zstar  = .true.  !  zstar vertical coordinate                     
    515    ln_vvl_ztilde = .false. !  hybrid verticalcoordinate: only high frequency variations 
     513   ln_vvl_zstar  = .false. !  zstar vertical coordinate                     
     514   ln_vvl_ztilde = .true.  !  hybrid verticalcoordinate: only high frequency variations 
    516515   ln_vvl_layer  = .false. !  full layer vertical coordinate 
    517    ahe3          = 0.e0    !  thickness diffusion coefficient  
     516   rn_ahe3       = 0.e0    !  thickness diffusion coefficient  
     517   ln_vvl_dbg    = .true.  !  debug prints    (T/F) 
    518518/ 
    519519!----------------------------------------------------------------------- 
    520520&namdyn_adv    !   formulation of the momentum advection 
    521521!----------------------------------------------------------------------- 
    522    ln_dynadv_vec = .true. !  vector form (T) or flux form (F)   
    523    ln_dynadv_cen2= .false. !  flux form - 2nd order centered scheme 
     522   ln_dynadv_vec = .false. !  vector form (T) or flux form (F)   
     523   ln_dynadv_cen2= .true. !  flux form - 2nd order centered scheme 
    524524   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme  
    525525 
     
    536536!----------------------------------------------------------------------- 
    537537   ln_hpg_zco  = .false.   !  z-coordinate - full steps                    
    538    ln_hpg_zps  = .true.    !  z-coordinate - partial steps (interpolation) 
    539    ln_hpg_sco  = .false.   !  s-coordinate (standard jacobian formulation) 
     538   ln_hpg_zps  = .false.   !  z-coordinate - partial steps (interpolation) 
     539   ln_hpg_sco  = .true.    !  s-coordinate (standard jacobian formulation) 
    540540   ln_hpg_hel  = .false.   !  s-coordinate (helsinki modification) 
    541541   ln_hpg_wdj  = .false.   !  s-coordinate (weighted density jacobian) 
     
    781781&namhsb       !  Heat and salt budgets  
    782782!----------------------------------------------------------------------- 
    783    ln_diahsb  = .false.    !  check the heat and salt budgets (T) or not (F) 
     783   ln_diahsb  = .true.    !  check the heat and salt budgets (T) or not (F) 
    784784/ 
    785785 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/ORCA2_LIM/IGCM00/COMP/opa9.card

    r2572 r3839  
    8484        (mesh_mask.nc     ,               ${R_OUT_OCE_O}/${config_UserChoices_JobName}_mesh_mask.nc, NONE),\ 
    8585        (output.abort.nc  ,               ${R_OUT_OCE_D}/${PREFIX}_output.abort.nc,                  NONE),\ 
    86         (output.init.nc   ,               ${R_OUT_OCE_O_I}/${config_UserChoices_JobName}_${PeriodDateBegin}_output.init.nc, NONE) 
     86        (output.init.nc   ,               ${R_OUT_OCE_O_I}/${config_UserChoices_JobName}_${PeriodDateBegin}_output.init.nc, NONE),\ 
     87        (heat_salt_volume_budgets.txt,    ${R_OUT_OCE_D}/${config_UserChoices_JobName}_${PeriodDateBegin}_heat_salt_volume_budgets, NONE) 
    8788 
    8889 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist

    r2905 r3839  
    512512&nam_vvl    !   vertical coordinate options 
    513513!----------------------------------------------------------------------- 
    514 &nam_vvl 
    515    ln_vvl_zstar  = .false. !  zstar vertical coordinate                     
     514   ln_vvl_zstar  = .true.  !  zstar vertical coordinate                     
    516515   ln_vvl_ztilde = .false. !  hybrid verticalcoordinate: only high frequency variations 
    517516   ln_vvl_layer  = .false. !  full layer vertical coordinate 
    518    ahe3          = 0.e0    !  thickness diffusion coefficient  
     517   rn_ahe3       = 0.e0    !  thickness diffusion coefficient  
     518   ln_vvl_dbg    = .true.  !  debug prints    (T/F) 
    519519/ 
    520520!----------------------------------------------------------------------- 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/POMME/EXP00/namelist

    r2905 r3839  
    512512!----------------------------------------------------------------------- 
    513513&nam_vvl 
    514    ln_vvl_zstar  = .false. !  zstar vertical coordinate                     
     514   ln_vvl_zstar  = .true. !  zstar vertical coordinate                     
    515515   ln_vvl_ztilde = .false. !  hybrid verticalcoordinate: only high frequency variations 
    516516   ln_vvl_layer  = .false. !  full layer vertical coordinate 
    517    ahe3          = 0.e0    !  thickness diffusion coefficient  
     517   rn_ahe3       = 0.e0    !  thickness diffusion coefficient  
     518   ln_vvl_dbg    = .true.  !  debug prints    (T/F) 
    518519/ 
    519520!----------------------------------------------------------------------- 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OFF_SRC/domain.F90

    r2574 r3839  
    247247      !!      vertical scale factors. 
    248248      !! 
    249       !! ** Method  : - reference 1D vertical coordinate (gdep._0, e3._0) 
     249      !! ** Method  : - reference 1D vertical coordinate (gdep._1d, e3._1d) 
    250250      !!              - read/set ocean depth and ocean levels (bathy, mbathy) 
    251251      !!              - vertical coordinate (gdep., e3.) depending on the  
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OFF_SRC/domrea.F90

    r2715 r3839  
    174174            CALL iom_get( inum4, jpdom_data, 'e3w', e3w ) 
    175175 
    176             CALL iom_get( inum4, jpdom_unknown, 'gdept_0', gdept_0 ) ! depth 
    177             CALL iom_get( inum4, jpdom_unknown, 'gdepw_0', gdepw_0 ) 
     176            CALL iom_get( inum4, jpdom_unknown, 'gdept_1d', gdept_1d ) ! depth 
     177            CALL iom_get( inum4, jpdom_unknown, 'gdepw_1d', gdepw_1d ) 
    178178         ENDIF 
    179179 
    180180  
    181181         IF( ln_zps ) THEN                                           ! z-coordinate - partial steps 
    182             CALL iom_get( inum4, jpdom_unknown, 'gdept_0', gdept_0 )    ! reference depth 
    183             CALL iom_get( inum4, jpdom_unknown, 'gdepw_0', gdepw_0 ) 
    184             CALL iom_get( inum4, jpdom_unknown, 'e3t_0'  , e3t_0   )    ! reference scale factors 
    185             CALL iom_get( inum4, jpdom_unknown, 'e3w_0'  , e3w_0   ) 
     182            CALL iom_get( inum4, jpdom_unknown, 'gdept_1d', gdept_1d )    ! reference depth 
     183            CALL iom_get( inum4, jpdom_unknown, 'gdepw_1d', gdepw_1d ) 
     184            CALL iom_get( inum4, jpdom_unknown, 'e3t_1d'  , e3t_1d   )    ! reference scale factors 
     185            CALL iom_get( inum4, jpdom_unknown, 'e3w_1d'  , e3w_1d   ) 
    186186            ! 
    187187            IF( nmsh <= 6 ) THEN                                        ! 3D vertical scale factors 
     
    195195               !                                                        ! deduces the 3D scale factors 
    196196               DO jk = 1, jpk 
    197                   e3t(:,:,jk) = e3t_0(jk)                                     ! set to the ref. factors 
    198                   e3u(:,:,jk) = e3t_0(jk) 
    199                   e3v(:,:,jk) = e3t_0(jk) 
    200                   e3w(:,:,jk) = e3w_0(jk) 
     197                  e3t(:,:,jk) = e3t_1d(jk)                                    ! set to the ref. factors 
     198                  e3u(:,:,jk) = e3t_1d(jk) 
     199                  e3v(:,:,jk) = e3t_1d(jk) 
     200                  e3w(:,:,jk) = e3w_1d(jk) 
    201201               END DO 
    202202               DO jj = 1,jpj                                                  ! adjust the deepest values 
    203203                  DO ji = 1,jpi 
    204204                     ik = mbkt(ji,jj) 
    205                      e3t(ji,jj,ik) = e3tp(ji,jj) * tmask(ji,jj,1) + e3t_0(1) * ( 1._wp - tmask(ji,jj,1) ) 
    206                      e3w(ji,jj,ik) = e3wp(ji,jj) * tmask(ji,jj,1) + e3w_0(1) * ( 1._wp - tmask(ji,jj,1) ) 
     205                     e3t(ji,jj,ik) = e3tp(ji,jj) * tmask(ji,jj,1) + e3t_1d(1) * ( 1._wp - tmask(ji,jj,1) ) 
     206                     e3w(ji,jj,ik) = e3wp(ji,jj) * tmask(ji,jj,1) + e3w_1d(1) * ( 1._wp - tmask(ji,jj,1) ) 
    207207                  END DO 
    208208               END DO 
     
    219219               ! 
    220220               DO jk = 1, jpk                        ! set to z-scale factor if zero (i.e. along closed boundaries) 
    221                   WHERE( e3u(:,:,jk) == 0._wp )   e3u(:,:,jk) = e3t_0(jk) 
    222                   WHERE( e3v(:,:,jk) == 0._wp )   e3v(:,:,jk) = e3t_0(jk) 
     221                  WHERE( e3u(:,:,jk) == 0._wp )   e3u(:,:,jk) = e3t_1d(jk) 
     222                  WHERE( e3v(:,:,jk) == 0._wp )   e3v(:,:,jk) = e3t_1d(jk) 
    223223               END DO 
    224224            END IF 
     
    232232               ! 
    233233               DO jk = 1, jpk                                              ! deduces the 3D depth 
    234                   gdept(:,:,jk) = gdept_0(jk) 
    235                   gdepw(:,:,jk) = gdepw_0(jk) 
     234                  gdept(:,:,jk) = gdept_1d(jk) 
     235                  gdepw(:,:,jk) = gdepw_1d(jk) 
    236236               END DO 
    237237               DO jj = 1, jpj 
     
    250250 
    251251         IF( ln_zco ) THEN           ! Vertical coordinates and scales factors 
    252             CALL iom_get( inum4, jpdom_unknown, 'gdept_0', gdept_0 ) ! depth 
    253             CALL iom_get( inum4, jpdom_unknown, 'gdepw_0', gdepw_0 ) 
    254             CALL iom_get( inum4, jpdom_unknown, 'e3t_0'  , e3t_0   ) 
    255             CALL iom_get( inum4, jpdom_unknown, 'e3w_0'  , e3w_0   ) 
     252            CALL iom_get( inum4, jpdom_unknown, 'gdept_1d', gdept_1d ) ! depth 
     253            CALL iom_get( inum4, jpdom_unknown, 'gdepw_1d', gdepw_1d ) 
     254            CALL iom_get( inum4, jpdom_unknown, 'e3t_1d'  , e3t_1d   ) 
     255            CALL iom_get( inum4, jpdom_unknown, 'e3w_1d'  , e3w_1d   ) 
    256256         ENDIF 
    257257 
    258258!!gm BUG in s-coordinate this does not work! 
    259259      ! deepest/shallowest W level Above/Below ~10m 
    260       zrefdep = 10._wp - ( 0.1_wp * MINVAL(e3w_0) )                  ! ref. depth with tolerance (10% of minimum layer thickness) 
    261       nlb10 = MINLOC( gdepw_0, mask = gdepw_0 > zrefdep, dim = 1 )   ! shallowest W level Below ~10m 
     260      zrefdep = 10._wp - ( 0.1_wp * MINVAL(e3w_1d) )                  ! ref. depth with tolerance (10% of minimum layer thickness) 
     261      nlb10 = MINLOC( gdepw_1d, mask = gdepw_1d > zrefdep, dim = 1 )   ! shallowest W level Below ~10m 
    262262      nla10 = nlb10 - 1                                              ! deepest    W level Above ~10m 
    263263!!gm end bug 
     
    300300         WRITE(numout,*) '              Reference z-coordinate depth and scale factors:' 
    301301         WRITE(numout, "(9x,' level   gdept    gdepw     e3t      e3w  ')" ) 
    302          WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_0(jk), gdepw_0(jk), e3t_0(jk), e3w_0(jk), jk = 1, jpk ) 
     302         WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_1d(jk), gdepw_1d(jk), e3t_1d(jk), e3w_1d(jk), jk = 1, jpk ) 
    303303      ENDIF 
    304304 
    305305      DO jk = 1, jpk 
    306          IF( e3w_0  (jk) <= 0._wp .OR. e3t_0  (jk) <= 0._wp )   CALL ctl_stop( ' e3w_0 or e3t_0 =< 0 ' ) 
    307          IF( gdepw_0(jk) <  0._wp .OR. gdept_0(jk) <  0._wp )   CALL ctl_stop( ' gdepw_0 or gdept_0 < 0 ' ) 
     306         IF( e3w_1d  (jk) <= 0._wp .OR. e3t_1d  (jk) <= 0._wp )   CALL ctl_stop( ' e3w_1d or e3t_1d =< 0 ' ) 
     307         IF( gdepw_1d(jk) <  0._wp .OR. gdept_1d(jk) <  0._wp )   CALL ctl_stop( ' gdepw_1d or gdept_1d < 0 ' ) 
    308308      END DO 
    309309      !                                     ! ============================ 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90

    r2715 r3839  
    198198      thick0(:,:) = 0._wp 
    199199      DO jk = 1, jpkm1 
    200          vol0        = vol0        + SUM( area (:,:) * tmask(:,:,jk) * fse3t_0(:,:,jk) ) 
    201          thick0(:,:) = thick0(:,:) +    tmask_i(:,:) * tmask(:,:,jk) * fse3t_0(:,:,jk) 
     200         vol0        = vol0        + SUM( area (:,:) * tmask(:,:,jk) * e3t_0(:,:,jk) ) 
     201         thick0(:,:) = thick0(:,:) +    tmask_i(:,:) * tmask(:,:,jk) * e3t_0(:,:,jk) 
    202202      END DO 
    203203      IF( lk_mpp )   CALL mpp_sum( vol0 ) 
     
    214214               ik = mbkt(ji,jj) 
    215215               IF( ik > 1 ) THEN 
    216                   zztmp = ( gdept_0(ik) - fsdept_0(ji,jj,ik) ) / ( gdept_0(ik) - gdept_0(ik-1) ) 
     216                  zztmp = ( gdept_1d(ik) - gdept_0(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) ) 
    217217                  sn0(ji,jj,ik) = ( 1._wp - zztmp ) * sn0(ji,jj,ik) + zztmp * sn0(ji,jj,ik-1) 
    218218               ENDIF 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DIA/diadimg.F90

    r2715 r3839  
    103103 
    104104    CASE ( 'T') 
    105        z4dep(:)=gdept_0(:) 
     105       z4dep(:)=gdept_1d(:) 
    106106 
    107107    CASE ( 'W' ) 
    108        z4dep(:)=gdepw_0(:) 
     108       z4dep(:)=gdepw_1d(:) 
    109109 
    110110    CASE ( '2' ) 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90

    r2528 r3839  
    7878      z1_rau0 = 1.e0 / rau0 
    7979      z_frc_trd_v = z1_rau0 * SUM( - ( emp(:,:) - rnf(:,:) ) * surf(:,:) )     ! volume fluxes 
    80       z_frc_trd_t =           SUM( sbc_tsc(:,:,jp_tem) * surf(:,:) )     ! heat fluxes 
    81       z_frc_trd_s =           SUM( sbc_tsc(:,:,jp_sal) * surf(:,:) )     ! salt fluxes 
     80      z_frc_trd_t =           SUM(     sbc_tsc(:,:,jp_tem)  * surf(:,:) )     ! heat fluxes 
     81      z_frc_trd_s =           SUM(     sbc_tsc(:,:,jp_sal)  * surf(:,:) )     ! salt fluxes 
    8282      ! Add penetrative solar radiation 
    8383      IF( ln_traqsr )   z_frc_trd_t = z_frc_trd_t + ro0cpr * SUM( qsr     (:,:) * surf(:,:) ) 
     
    102102      DO jk = 1, jpkm1 
    103103         ! volume variation (calculated with scale factors) 
    104          zdiff_v2 = zdiff_v2 + SUM( surf(:,:) * tmask(:,:,jk)   & 
    105             &                       * ( fse3t_n(:,:,jk)         & 
    106             &                           - e3t_ini(:,:,jk) ) ) 
     104         zdiff_v2 = zdiff_v2 + SUM( surf(:,:) * tmask(:,:,jk) * ( fse3t_n(:,:,jk)              -    e3t_ini(:,:,jk) ) ) 
    107105         ! heat content variation 
    108          zdiff_hc = zdiff_hc + SUM( surf(:,:) * tmask(:,:,jk)          & 
    109             &                       * ( fse3t_n(:,:,jk) * tn(:,:,jk)   & 
    110             &                           - hc_loc_ini(:,:,jk) ) ) 
     106         zdiff_hc = zdiff_hc + SUM( surf(:,:) * tmask(:,:,jk) * ( fse3t_n(:,:,jk) * tn(:,:,jk) - hc_loc_ini(:,:,jk) ) ) 
    111107         ! salt content variation 
    112          zdiff_sc = zdiff_sc + SUM( surf(:,:) * tmask(:,:,jk)          & 
    113             &                       * ( fse3t_n(:,:,jk) * sn(:,:,jk)   & 
    114             &                           - sc_loc_ini(:,:,jk) ) ) 
     108         zdiff_sc = zdiff_sc + SUM( surf(:,:) * tmask(:,:,jk) * ( fse3t_n(:,:,jk) * sn(:,:,jk) - sc_loc_ini(:,:,jk) ) ) 
    115109      ENDDO 
    116110 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DIA/diahth.F90

    r2715 r3839  
    300300      ! ----------------------------- ! 
    301301 
    302       ! find ilevel with (ilevel+1) the deepest W-level above 300m (we assume we can use e3t_0 to do this search...) 
     302      ! find ilevel with (ilevel+1) the deepest W-level above 300m (we assume we can use e3t_1d to do this search...) 
    303303      ilevel   = 0 
    304304      zthick_0 = 0._wp 
    305305      DO jk = 1, jpkm1                       
    306          zthick_0 = zthick_0 + e3t_0(jk) 
     306         zthick_0 = zthick_0 + e3t_1d(jk) 
    307307         IF( zthick_0 < 300. )   ilevel = jk 
    308308      END DO 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90

    r2715 r3839  
    650650            CALL histbeg(clhstnam, 1, zfoo, jpj, zphi,   & 
    651651               1, 1, 1, jpj, niter, zjulian, zdt*nn_fptr, nhoridz, numptr, domain_id=nidom_ptr) 
    652             ! Vertical grids : gdept_0, gdepw_0 
     652            ! Vertical grids : gdept_1d, gdepw_1d 
    653653            CALL histvert( numptr, "deptht", "Vertical T levels",   & 
    654                &                   "m", jpk, gdept_0, ndepidzt, "down" ) 
     654               &                   "m", jpk, gdept_1d, ndepidzt, "down" ) 
    655655            CALL histvert( numptr, "depthw", "Vertical W levels",   & 
    656                &                   "m", jpk, gdepw_0, ndepidzw, "down" ) 
     656               &                   "m", jpk, gdepw_1d, ndepidzw, "down" ) 
    657657            ! 
    658658            CALL wheneq ( jpj*jpk, MIN(sjk(:,:,1), 1._wp), 1, 1., ndex  , ndim  )      ! Lat-Depth 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r2970 r3839  
    329329            &          nit000-1, zjulian, zdt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set ) 
    330330         CALL histvert( nid_T, "deptht", "Vertical T levels",      &  ! Vertical grid: gdept 
    331             &           "m", ipk, gdept_0, nz_T, "down" ) 
     331            &           "m", ipk, gdept_1d, nz_T, "down" ) 
    332332         !                                                            ! Index of ocean points 
    333333         CALL wheneq( jpi*jpj*ipk, tmask, 1, 1., ndex_T , ndim_T  )      ! volume 
     
    342342            &          nit000-1, zjulian, zdt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set ) 
    343343         CALL histvert( nid_U, "depthu", "Vertical U levels",      &  ! Vertical grid: gdept 
    344             &           "m", ipk, gdept_0, nz_U, "down" ) 
     344            &           "m", ipk, gdept_1d, nz_U, "down" ) 
    345345         !                                                            ! Index of ocean points 
    346346         CALL wheneq( jpi*jpj*ipk, umask, 1, 1., ndex_U , ndim_U  )      ! volume 
     
    355355            &          nit000-1, zjulian, zdt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set ) 
    356356         CALL histvert( nid_V, "depthv", "Vertical V levels",      &  ! Vertical grid : gdept 
    357             &          "m", ipk, gdept_0, nz_V, "down" ) 
     357            &          "m", ipk, gdept_1d, nz_V, "down" ) 
    358358         !                                                            ! Index of ocean points 
    359359         CALL wheneq( jpi*jpj*ipk, vmask, 1, 1., ndex_V , ndim_V  )      ! volume 
     
    368368            &          nit000-1, zjulian, zdt, nh_W, nid_W, domain_id=nidom, snc4chunks=snc4set ) 
    369369         CALL histvert( nid_W, "depthw", "Vertical W levels",      &  ! Vertical grid: gdepw 
    370             &          "m", ipk, gdepw_0, nz_W, "down" ) 
     370            &          "m", ipk, gdepw_1d, nz_W, "down" ) 
    371371 
    372372 
     
    554554      ENDIF 
    555555      IF( lk_vvl ) THEN 
    556          z3d(:,:,:) = ( ( fse3t_n(:,:,:) - fse3t_0(:,:,:) ) / fse3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 
     556         z3d(:,:,:) = ( ( fse3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 
    557557         CALL histwrite( nid_T, "vovvle3t", it, fse3t_n (:,:,:) , ndim_T , ndex_T  )   ! level thickness 
    558558         CALL histwrite( nid_T, "vovvldep", it, fsdept_n(:,:,:) , ndim_T , ndex_T  )   ! t-point depth 
     
    715715          1, jpi, 1, jpj, nit000-1, zjulian, zdt, nh_i, id_i, domain_id=nidom, snc4chunks=snc4set ) ! Horizontal grid : glamt and gphit 
    716716      CALL histvert( id_i, "deptht", "Vertical T levels",   &    ! Vertical grid : gdept 
    717           "m", jpk, gdept_0, nz_i, "down") 
     717          "m", jpk, gdept_1d, nz_i, "down") 
    718718 
    719719      ! Declare all the output fields as NetCDF variables 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90

    r2974 r3839  
    128128   !! All coordinates 
    129129   !! --------------- 
    130    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdep3w          !: depth of T-points (sum of e3w) (m) 
    131    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdept , gdepw   !: analytical depth at T-W  points (m) 
    132    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3v   , e3f     !: analytical vertical scale factors at  V--F 
    133    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3t   , e3u     !:                                       T--U  points (m) 
    134    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3vw            !: analytical vertical scale factors at  VW-- 
    135    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3w   , e3uw    !:                                        W--UW  points (m) 
     130   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdep3w_0           !: depth of T-points (sum of e3w) (m) 
     131   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdept_0, gdepw_0   !: analytical depth at T-W  points (m) 
     132   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3v_0  , e3f_0     !: analytical vertical scale factors at  V--F 
     133   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3t_0  , e3u_0     !:                                       T--U  points (m) 
     134   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3vw_0             !: analytical vertical scale factors at  VW-- 
     135   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3w_0  , e3uw_0    !:                                        W--UW  points (m) 
    136136#if defined key_vvl 
    137137   LOGICAL, PUBLIC, PARAMETER ::   lk_vvl = .TRUE.    !: variable grid flag 
     
    168168   !! z-coordinate with full steps (also used in the other cases as reference z-coordinate) 
    169169   !! =-----------------====------ 
    170    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   :: gdept_0, gdepw_0 !: reference depth of t- and w-points (m) 
    171    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   :: e3t_0  , e3w_0   !: reference vertical scale factors at T- and W-pts (m) 
    172    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: e3tp   , e3wp    !: ocean bottom level thickness at T and W points 
     170   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   :: gdept_1d, gdepw_1d !: reference depth of t- and w-points (m) 
     171   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   :: e3t_1d  , e3w_1d   !: reference vertical scale factors at T- and W-pts (m) 
     172   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: e3tp    , e3wp     !: ocean bottom level thickness at T and W points 
    173173 
    174174   !! s-coordinate and hybrid z-s-coordinate 
     
    281281         &      glamf(jpi,jpj) , gphif(jpi,jpj) , e1f(jpi,jpj) , e2f(jpi,jpj) , ff   (jpi,jpj) , STAT=ierr(3) )      
    282282         ! 
    283       ALLOCATE( gdep3w(jpi,jpj,jpk) , e3v(jpi,jpj,jpk) , e3f (jpi,jpj,jpk) ,                         & 
    284          &      gdept (jpi,jpj,jpk) , e3t(jpi,jpj,jpk) , e3u (jpi,jpj,jpk) ,                         & 
    285          &      gdepw (jpi,jpj,jpk) , e3w(jpi,jpj,jpk) , e3vw(jpi,jpj,jpk) , e3uw(jpi,jpj,jpk) , STAT=ierr(4) ) 
     283      ALLOCATE( gdep3w_0(jpi,jpj,jpk) , e3v_0(jpi,jpj,jpk) , e3f_0 (jpi,jpj,jpk) ,                         & 
     284         &      gdept_0 (jpi,jpj,jpk) , e3t_0(jpi,jpj,jpk) , e3u_0 (jpi,jpj,jpk) ,                         & 
     285         &      gdepw_0 (jpi,jpj,jpk) , e3w_0(jpi,jpj,jpk) , e3vw_0(jpi,jpj,jpk) , e3uw_0(jpi,jpj,jpk) , STAT=ierr(4) ) 
    286286         ! 
    287287#if defined key_vvl 
     
    300300         &      e12f (jpi,jpj) , e12f_1(jpi,jpj) ,                                   STAT=ierr(6)  ) 
    301301         ! 
    302       ALLOCATE( gdept_0(jpk) , gdepw_0(jpk) ,                                     & 
    303          &      e3t_0  (jpk) , e3w_0  (jpk) , e3tp (jpi,jpj), e3wp(jpi,jpj) ,     & 
    304          &      gsigt  (jpk) , gsigw  (jpk) , gsi3w(jpk)    ,                     & 
    305          &      esigt  (jpk) , esigw  (jpk)                                 , STAT=ierr(7) ) 
     302      ALLOCATE( gdept_1d(jpk) , gdepw_1d(jpk) ,                                     & 
     303         &      e3t_1d  (jpk) , e3w_1d  (jpk) , e3tp (jpi,jpj), e3wp(jpi,jpj) ,     & 
     304         &      gsigt   (jpk) , gsigw   (jpk) , gsi3w(jpk)    ,                     & 
     305         &      esigt   (jpk) , esigw   (jpk)                                 , STAT=ierr(7) ) 
    306306         ! 
    307307      ALLOCATE( hbatv (jpi,jpj) , hbatf (jpi,jpj) ,     & 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domstp.F90

    r2715 r3839  
    9090 
    9191            DO jk = 1, jpk 
    92                IF( gdept_0(jk) <= rdth ) rdttra(jk) = rdtmin 
    93                IF( gdept_0(jk) >  rdth ) THEN 
     92               IF( gdept_1d(jk) <= rdth ) rdttra(jk) = rdtmin 
     93               IF( gdept_1d(jk) >  rdth ) THEN 
    9494                  rdttra(jk) = rdtmin + ( rdtmax - rdtmin )   & 
    95                                       * ( EXP( ( gdept_0(jk ) - rdth ) / rdth ) - 1. )   & 
    96                                       / ( EXP( ( gdept_0(jpk) - rdth ) / rdth ) - 1. ) 
     95                                      * ( EXP( ( gdept_1d(jk ) - rdth ) / rdth ) - 1. )   & 
     96                                      / ( EXP( ( gdept_1d(jpk) - rdth ) / rdth ) - 1. ) 
    9797               ENDIF 
    9898               IF(lwp) WRITE(numout,"(36x,f5.2,5x,i3)") rdttra(jk)/3600., jk 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r2999 r3839  
    1313   !!---------------------------------------------------------------------- 
    1414   !!   dom_vvl_init     : define initial vertical scale factors, depths and column thickness 
    15    !!   dom_vvl_nxt      : Compute next vertical scale factors 
    16    !!   dom_vvl_swp      : Swap vertical scale factors and update the vertical grid 
     15   !!   dom_vvl_sf_nxt   : Compute next vertical scale factors 
     16   !!   dom_vvl_sf_swp   : Swap vertical scale factors and update the vertical grid 
    1717   !!   dom_vvl_interpol : Interpolate vertical scale factors from one grid point to another 
    1818   !!   dom_vvl_rst      : read/write restart file 
     
    4444   LOGICAL , PUBLIC                                      :: ln_vvl_kepe   = .FALSE.   ! kinetic/potential energy transfer 
    4545   !                                                                                  ! conservation: not used yet 
    46    REAL(wp)                                              :: ahe3          =  0.e0     ! thickness diffusion coefficient 
     46   REAL(wp)                                              :: rn_ahe3       =  0.e0     ! thickness diffusion coefficient 
     47   LOGICAL , PUBLIC                                      :: ln_vvl_dbg    = .FALSE.   ! debug control prints 
    4748 
    4849   !! * Module variables 
     
    6970      !!                ***  FUNCTION dom_vvl_alloc  *** 
    7071      !!---------------------------------------------------------------------- 
     72      IF( ln_vvl_zstar ) dom_vvl_alloc = 0 
    7173      IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN 
    72          ALLOCATE( e3t_t_n(jpi,jpj,jpk) , e3t_t_a(jpi,jpj,jpk) , e3t_t_b(jpi,jpj,jpk) ,   & 
     74         ALLOCATE( e3t_t_b(jpi,jpj,jpk) , e3t_t_n(jpi,jpj,jpk) , e3t_t_a(jpi,jpj,jpk) ,   & 
    7375            &      un_td  (jpi,jpj,jpk) , vn_td  (jpi,jpj,jpk) , STAT = dom_vvl_alloc        ) 
    7476         IF( lk_mpp             )   CALL mpp_sum ( dom_vvl_alloc ) 
     
    114116      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 
    115117 
    116 #if defined key_zco 
    117       CALL ctl_stop( 'dom_vvl_init : options key_zco/key_dynspg_rl are incompatible with variable volume option key_vvl') 
    118 #endif 
    119  
    120118      ! choose vertical coordinate (z_star, z_tilde or layer) 
    121119      ! ========================== 
     
    126124      IF( dom_vvl_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'dom_vvl_init : unable to allocate arrays' ) 
    127125 
    128       ! read or initialize e3t_t_(b/n) and fse3t_(b/n)  
    129       ! ============================================== 
     126      ! Read or initialize fse3t_(b/n), e3t_t_(b/n) and hdiv_lf (and e3t_a(jpk)) 
     127      ! ======================================================================== 
    130128      CALL dom_vvl_rst( nit000, 'READ' ) 
     129      fse3t_a(:,:,jpk) = e3t_0(:,:,jpk) 
    131130 
    132131      ! Reconstruction of all vertical scale factors at now and before time steps 
     
    162161      hv_0(:,:) = 0.e0 
    163162      DO jk = 1, jpk 
    164          ht_0(:,:) = ht_0(:,:) + fse3t_0(:,:,jk) * tmask(:,:,jk) 
    165          hu_0(:,:) = hu_0(:,:) + fse3u_0(:,:,jk) * umask(:,:,jk) 
    166          hv_0(:,:) = hv_0(:,:) + fse3v_0(:,:,jk) * vmask(:,:,jk) 
     163         ht_0(:,:) = ht_0(:,:) + e3t_0(:,:,jk) * tmask(:,:,jk) 
     164         hu_0(:,:) = hu_0(:,:) + e3u_0(:,:,jk) * umask(:,:,jk) 
     165         hv_0(:,:) = hv_0(:,:) + e3v_0(:,:,jk) * vmask(:,:,jk) 
    167166      END DO 
    168167 
     
    188187      !!                 tranxt and dynspg routines 
    189188      !! 
    190       !! ** Method  :  - z_tilde_case: after scale factor increment computed with 
    191       !!                               high frequency part of horizontal divergence + retsoring to 
    192       !!                               towards the background grid + thickness difusion. 
     189      !! ** Method  :  - z_star case:  Repartition of ssh INCREMENT proportionnaly to the level thickness. 
     190      !!               - z_tilde_case: after scale factor increment =  
     191      !!                                    high frequency part of horizontal divergence 
     192      !!                                  + retsoring towards the background grid 
     193      !!                                  + thickness difusion 
    193194      !!                               Then repartition of ssh INCREMENT proportionnaly 
    194195      !!                               to the "baroclinic" level thickness. 
    195       !!               - z_star case:  Repartition of ssh proportionnaly to the level thickness. 
    196196      !! 
    197197      !! ** Action  :  - hdiv_lf: restoring towards full baroclinic divergence in z_tilde case 
     
    200200      !!               - fse3(t/u/v)_a 
    201201      !! 
    202       !! Reference  : Leclair, M., and G. Madec, 2011, Ocean Modelling. 
     202      !! Reference  : Leclair, M., and Madec, G. 2011, Ocean Modelling. 
    203203      !!---------------------------------------------------------------------- 
    204204      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     
    217217      REAL(wp)                               :: z_def_max             ! temporary scalar 
    218218      REAL(wp)                               :: z_tmin, z_tmax        ! temporary scalars 
    219       LOGICAL                                :: ln_debug = .FALSE.    ! local logical for debug prints 
    220219      !!---------------------------------------------------------------------- 
    221220      IF( wrk_in_use(2, 1, 2, 3, 4, 5) ) THEN 
     
    233232      ! ******************************* ! 
    234233 
    235       !                               ! ----------------- ! 
    236       IF( ln_vvl_zstar ) THEN         ! z_star coordinate ! 
    237          !                            ! ----------------- ! 
     234      !                                                ! ----------------- ! 
     235      IF( ln_vvl_zstar ) THEN                          ! z_star coordinate ! 
     236         !                                             ! ----------------- ! 
     237 
    238238         z_scale(:,:) = ( ssha(:,:) - sshb(:,:) ) * tmask(:,:,1) / ( ht_0(:,:) + sshn(:,:) + 1. - tmask(:,:,1) ) 
    239239         DO jk = 1, jpkm1 
    240             fse3t_a(:,:,jk) = fse3t_b(:,:,jk) + fse3t_n(:,:,jk) * z_scale(:,:) 
    241          END DO 
    242  
    243       !                               ! --------------------------- ! 
    244       ELSE                            ! z_tilde or layer coordinate ! 
    245          !                            ! --------------------------- ! 
    246  
    247          ! I - Low frequency horizontal divergence 
    248          ! ======================================= 
     240            fse3t_a(:,:,jk) = fse3t_b(:,:,jk) + fse3t_n(:,:,jk) * z_scale(:,:) * tmask(:,:,jk) 
     241         END DO 
     242 
     243      !                                                ! --------------------------- ! 
     244      ELSEIF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN   ! z_tilde or layer coordinate ! 
     245         !                                             ! --------------------------- ! 
     246 
     247         ! I - initialization 
     248         ! ================== 
    249249 
    250250         ! 1 - barotropic divergence 
     
    253253         zht(:,:)   = 0. 
    254254         DO jk = 1, jpkm1 
    255             zhdiv(:,:) = zhdiv(:,:) + hdivn(:,:,jk) * fse3t_n(:,:,jk) 
     255            zhdiv(:,:) = zhdiv(:,:) + fse3t_n(:,:,jk) * hdivn(:,:,jk) 
    256256            zht  (:,:) = zht  (:,:) + fse3t_n(:,:,jk) * tmask(:,:,jk) 
    257257         END DO 
    258258         zhdiv(:,:) = zhdiv(:,:) / ( zht(:,:) + 1. - tmask(:,:,1) ) 
    259259 
    260          ! 2 - restoring equation  (z-tilde case only) 
    261          ! ---------------------- 
     260         ! 2 - Low frequency baroclinic horizontal divergence  (z-tilde case only) 
     261         ! -------------------------------------------------- 
    262262         IF( ln_vvl_ztilde ) THEN 
    263263            IF( kt .GT. nit000 ) THEN 
     
    278278            DO jk = 1, jpkm1 
    279279               e3t_t_a(:,:,jk) = e3t_t_a(:,:,jk) - ( fse3t_n(:,:,jk) * ( hdivn(:,:,jk) - zhdiv(:,:) ) - hdiv_lf(:,:,jk) ) 
    280             END DO                  ! layer case 
    281          ELSE 
     280            END DO 
     281         ELSE                       ! layer case 
    282282            DO jk = 1, jpkm1 
    283283               e3t_t_a(:,:,jk) = e3t_t_a(:,:,jk) - fse3t_n(:,:,jk) * ( hdivn(:,:,jk) - zhdiv(:,:) ) 
     
    301301            DO jj = 1, jpjm1 
    302302               DO ji = 1, fs_jpim1   ! vector opt. 
    303                   un_td(ji,jj,jk) = ahe3 * umask(ji,jj,jk) * e2_1u(ji,jj) * ( e3t_t_b(ji,jj,jk) - e3t_t_b(ji+1,jj  ,jk) ) 
    304                   vn_td(ji,jj,jk) = ahe3 * vmask(ji,jj,jk) * e1_2v(ji,jj) * ( e3t_t_b(ji,jj,jk) - e3t_t_b(ji  ,jj+1,jk) ) 
     303                  un_td(ji,jj,jk) = rn_ahe3 * umask(ji,jj,jk) * e2_1u(ji,jj) * ( e3t_t_b(ji,jj,jk) - e3t_t_b(ji+1,jj  ,jk) ) 
     304                  vn_td(ji,jj,jk) = rn_ahe3 * vmask(ji,jj,jk) * e1_2v(ji,jj) * ( e3t_t_b(ji,jj,jk) - e3t_t_b(ji  ,jj+1,jk) ) 
    305305                  zwu(ji,jj) = zwu(ji,jj) + un_td(ji,jj,jk) 
    306306                  zwv(ji,jj) = zwv(ji,jj) + vn_td(ji,jj,jk) 
     
    341341         CALL lbc_lnk( e3t_t_a(:,:,:), 'T', 1. ) 
    342342         e3t_t_a(:,:,:) = e3t_t_b(:,:,:) + z2dt * tmask(:,:,:) * e3t_t_a(:,:,:) 
    343          fse3t_a(:,:,:) = fse3t_0(:,:,:) + e3t_t_a(:,:,:) 
    344343 
    345344         ! Maximum deformation control 
     
    349348         ze3t(:,:,jpk) = 0.e0 
    350349         DO jk = 1, jpkm1 
    351             ze3t(:,:,jk) = e3t_t_a(:,:,jk) / fse3t_0(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:) 
     350            ze3t(:,:,jk) = e3t_t_a(:,:,jk) / e3t_0(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:) 
    352351         END DO 
    353352         z_tmax = MAXVAL( ze3t(:,:,:) ) 
     
    357356            ijk_max = MAXLOC( ze3t(:,:,:) ) 
    358357            ijk_min = MINLOC( ze3t(:,:,:) ) 
    359             WRITE(numout, *) 'MAX( e3t_t_a(:,:,:) / fse3t_0(:,:,:) ) =', z_tmax 
     358            WRITE(numout, *) 'MAX( e3t_t_a(:,:,:) / e3t_0(:,:,:) ) =', z_tmax 
    360359            WRITE(numout, *) 'at i, j, k=', ijk_max 
    361             WRITE(numout, *) 'MIN( e3t_t_a(:,:,:) / fse3t_0(:,:,:) ) =', z_tmin 
     360            WRITE(numout, *) 'MIN( e3t_t_a(:,:,:) / e3t_0(:,:,:) ) =', z_tmin 
    362361            WRITE(numout, *) 'at i, j, k=', ijk_min             
    363             CALL ctl_stop('MAX( ABS( e3t_t_a(:,:,:) ) / fse3t_0(:,:,:) ) too high') 
     362            CALL ctl_stop('MAX( ABS( e3t_t_a(:,:,:) ) / e3t_0(:,:,:) ) too high') 
    364363         ENDIF 
    365364         ! - ML - end test 
    366365         ! - ML - This will cause a baroclinicity error if the ctl_stop above is not used 
    367          e3t_t_a(:,:,:) = MIN( e3t_t_a(:,:,:), ( 1.e0 + z_def_max ) * fse3t_0(:,:,:) ) 
    368          e3t_t_a(:,:,:) = MAX( e3t_t_a(:,:,:), ( 1.e0 - z_def_max ) * fse3t_0(:,:,:) ) 
     366         e3t_t_a(:,:,:) = MIN( e3t_t_a(:,:,:), ( 1.e0 + z_def_max ) * e3t_0(:,:,:) ) 
     367         e3t_t_a(:,:,:) = MAX( e3t_t_a(:,:,:), ( 1.e0 - z_def_max ) * e3t_0(:,:,:) ) 
     368 
     369         ! Add "tilda" part to the after scale factor 
     370         ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     371         fse3t_a(:,:,:) = e3t_0(:,:,:) + e3t_t_a(:,:,:) 
    369372 
    370373         ! III - Barotropic repartition of the sea surface height over the baroclinic profile 
     
    372375         ! add e3t(n-1) "star" Asselin-filtered 
    373376         DO jk = 1, jpkm1 
    374             fse3t_a(:,:,jk) = fse3t_a(:,:,jk) + fse3t_b(:,:,jk) - fse3t_0(:,:,jk) - e3t_t_b(:,:,jk) 
     377            fse3t_a(:,:,jk) = fse3t_a(:,:,jk) + fse3t_b(:,:,jk) - e3t_0(:,:,jk) - e3t_t_b(:,:,jk) 
    375378         END DO 
    376379         ! add ( ssh increment + "baroclinicity error" ) proportionnaly to e3t(n) 
     
    389392      ENDIF 
    390393 
    391       IF( ln_debug ) THEN   ! - ML - test: control prints for debuging 
     394      IF( ln_vvl_dbg ) THEN   ! - ML - test: control prints for debuging 
    392395         IF ( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN 
    393396            WRITE(numout, *) 'kt =', kt 
    394             WRITE(numout, *) 'MAXVAL(abs(ht_0-SUM(e3t_t_a))) =',   & 
    395                &              MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) - zht(:,:) ) ) 
     397            WRITE(numout, *) 'MAXVAL(abs(SUM(e3t_t_a))) =',   & 
     398               &              MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( zht(:,:) ) ) 
    396399         END IF 
    397400         zht(:,:) = 0.e0 
     
    405408            zht(:,:) = zht(:,:) + fse3t_a(:,:,jk) * tmask(:,:,jk) 
    406409         END DO 
    407          WRITE(numout, *) 'MAXVAL(abs(ht_0+sshn-SUM(fse3t_a))) =',   & 
     410         WRITE(numout, *) 'MAXVAL(abs(ht_0+ssha-SUM(fse3t_a))) =',   & 
    408411            &              MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + ssha(:,:) - zht(:,:) ) ) 
    409412      END IF 
     
    467470            e3t_t_b(:,:,:) = e3t_t_n(:,:,:) 
    468471         ELSE 
    469             e3t_t_b(:,:,:) = e3t_t_n(:,:,:) + atfp * (e3t_t_b(:,:,:) - 2.e0 * e3t_t_n(:,:,:) + e3t_t_a(:,:,:) ) 
     472            e3t_t_b(:,:,:) = e3t_t_n(:,:,:) + atfp * ( e3t_t_b(:,:,:) - 2.e0 * e3t_t_n(:,:,:) + e3t_t_a(:,:,:) ) 
    470473         ENDIF 
    471474         e3t_t_n(:,:,:) = e3t_t_a(:,:,:) 
     
    508511      ! Inverse of the local depth 
    509512      hur(:,:) = umask(:,:,1) / ( hu(:,:) + 1. - umask(:,:,1) ) 
    510       hvr(:,:) = vmask(:,:,1) / ( hv(:,:) + 1. - umask(:,:,1) ) 
     513      hvr(:,:) = vmask(:,:,1) / ( hv(:,:) + 1. - vmask(:,:,1) ) 
    511514 
    512515      ! Write outputs 
    513516      ! ============= 
    514       ! - ML - add output variables in xml file for all configurations 
    515       z_e3t_def(:,:,:) = ( ( fse3t_n(:,:,:) - fse3t_0(:,:,:) ) / fse3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 
     517      z_e3t_def(:,:,:) = ( ( fse3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 
    516518      CALL iom_put( "e3t_n"  , fse3t_n  (:,:,:) ) 
    517519      CALL iom_put( "dept_n" , fsde3w_n (:,:,:) ) 
     
    548550         !               ! ------------------------------------- ! 
    549551         ! horizontal surface weighted interpolation 
    550          DO jk = 1, jpkm1 
    551             DO jj = 2, jpjm1 
     552         DO jk = 1, jpk 
     553            DO jj = 1, jpjm1 
    552554               DO ji = 1, fs_jpim1   ! vector opt. 
    553555                  pe3_out(ji,jj,jk) = 0.5 * umask(ji,jj,jk) * e12u_1(ji,jj)                                      & 
    554                      &                    * (   e12t(ji  ,jj) * ( pe3_in(ji  ,jj,jk) - fse3t_0(ji  ,jj,jk) )     & 
    555                      &                        + e12t(ji+1,jj) * ( pe3_in(ji+1,jj,jk) - fse3t_0(ji+1,jj,jk) ) ) 
     556                     &                    * (   e12t(ji  ,jj) * ( pe3_in(ji  ,jj,jk) - e3t_0(ji  ,jj,jk) )     & 
     557                     &                        + e12t(ji+1,jj) * ( pe3_in(ji+1,jj,jk) - e3t_0(ji+1,jj,jk) ) ) 
    556558               END DO 
    557559            END DO 
     
    559561         ! boundary conditions 
    560562         CALL lbc_lnk( pe3_out(:,:,:), 'U', 1. ) 
    561          pe3_out(:,:,:) = pe3_out(:,:,:) + fse3u_0(:,:,:) 
     563         pe3_out(:,:,:) = pe3_out(:,:,:) + e3u_0(:,:,:) 
    562564         !               ! ------------------------------------- ! 
    563565      CASE( 'V' )        ! interpolation from T-point to V-point ! 
    564566         !               ! ------------------------------------- ! 
    565567         ! horizontal surface weighted interpolation 
    566          DO jk = 1, jpkm1 
     568         DO jk = 1, jpk 
    567569            DO jj = 1, jpjm1 
    568                DO ji = fs_2, fs_jpim1   ! vector opt. 
     570               DO ji = 1, fs_jpim1   ! vector opt. 
    569571                  pe3_out(ji,jj,jk) = 0.5 * vmask(ji,jj,jk) * e12v_1(ji,jj)                                      & 
    570                      &                    * (   e12t(ji,jj  ) * ( pe3_in(ji,jj  ,jk) - fse3t_0(ji,jj  ,jk) )     & 
    571                      &                        + e12t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - fse3t_0(ji,jj+1,jk) ) ) 
     572                     &                    * (   e12t(ji,jj  ) * ( pe3_in(ji,jj  ,jk) - e3t_0(ji,jj  ,jk) )     & 
     573                     &                        + e12t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3t_0(ji,jj+1,jk) ) ) 
    572574               END DO 
    573575            END DO 
     
    575577         ! boundary conditions 
    576578         CALL lbc_lnk( pe3_out(:,:,:), 'V', 1. ) 
    577          pe3_out(:,:,:) = pe3_out(:,:,:) + fse3v_0(:,:,:) 
     579         pe3_out(:,:,:) = pe3_out(:,:,:) + e3v_0(:,:,:) 
    578580         !               ! ------------------------------------- ! 
    579581      CASE( 'F' )        ! interpolation from U-point to F-point ! 
    580582         !               ! ------------------------------------- ! 
    581583         ! horizontal surface weighted interpolation 
    582          DO jk = 1, jpkm1 
     584         DO jk = 1, jpk 
    583585            DO jj = 1, jpjm1 
    584586               DO ji = 1, fs_jpim1   ! vector opt. 
    585587                  pe3_out(ji,jj,jk) = 0.5 * umask(ji,jj,jk) * umask(ji,jj+1,jk) * e12f_1(ji,jj)                  & 
    586                      &                    * (   e12u(ji,jj  ) * ( pe3_in(ji,jj  ,jk) - fse3u_0(ji,jj  ,jk) )     & 
    587                      &                        + e12u(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - fse3u_0(ji,jj+1,jk) ) ) 
     588                     &                    * (   e12u(ji,jj  ) * ( pe3_in(ji,jj  ,jk) - e3u_0(ji,jj  ,jk) )     & 
     589                     &                        + e12u(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3u_0(ji,jj+1,jk) ) ) 
    588590               END DO 
    589591            END DO 
     
    591593         ! boundary conditions 
    592594         CALL lbc_lnk( pe3_out(:,:,:), 'F', 1. ) 
    593          pe3_out(:,:,:) = pe3_out(:,:,:) + fse3f_0(:,:,:) 
     595         pe3_out(:,:,:) = pe3_out(:,:,:) + e3f_0(:,:,:) 
    594596         !               ! ------------------------------------- ! 
    595597      CASE( 'W' )        ! interpolation from T-point to W-point ! 
    596598         !               ! ------------------------------------- ! 
    597599         ! vertical simple interpolation 
    598          pe3_out(:,:,1) = fse3w_0(:,:,1) + pe3_in(:,:,1) - fse3t_0(:,:,1) 
     600         pe3_out(:,:,1) = e3w_0(:,:,1) + pe3_in(:,:,1) - e3t_0(:,:,1) 
    599601         ! - ML - The use of mask in this formaula enables the special treatment of the last w- point without undirect adressing 
    600602         DO jk = 2, jpk 
    601             pe3_out(:,:,jk) = fse3w_0(:,:,jk) + ( 1. - 0.5 * tmask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - fse3t_0(:,:,jk-1) )   & 
    602                &                              + (      0.5 * tmask(:,:,jk) ) * ( pe3_in(:,:,jk  ) - fse3t_0(:,:,jk  ) ) 
     603            pe3_out(:,:,jk) = e3w_0(:,:,jk) + ( 1. - 0.5 * tmask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - e3t_0(:,:,jk-1) )   & 
     604               &                              +        0.5 * tmask(:,:,jk)   * ( pe3_in(:,:,jk  ) - e3t_0(:,:,jk  ) ) 
    603605         END DO 
    604606         !               ! -------------------------------------- ! 
     
    606608         !               ! -------------------------------------- ! 
    607609         ! vertical simple interpolation 
    608          pe3_out(:,:,1) = fse3uw_0(:,:,1) + pe3_in(:,:,1) - fse3u_0(:,:,1) 
     610         pe3_out(:,:,1) = e3uw_0(:,:,1) + pe3_in(:,:,1) - e3u_0(:,:,1) 
    609611         ! - ML - The use of mask in this formaula enables the special treatment of the last w- point without undirect adressing 
    610612         DO jk = 2, jpk 
    611             pe3_out(:,:,jk) = fse3uw_0(:,:,jk) + ( 1. - 0.5 * umask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - fse3u_0(:,:,jk-1) )   & 
    612                &                               + (      0.5 * umask(:,:,jk) ) * ( pe3_in(:,:,jk  ) - fse3u_0(:,:,jk  ) ) 
     613            pe3_out(:,:,jk) = e3uw_0(:,:,jk) + ( 1. - 0.5 * umask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - e3u_0(:,:,jk-1) )   & 
     614               &                               +        0.5 * umask(:,:,jk)   * ( pe3_in(:,:,jk  ) - e3u_0(:,:,jk  ) ) 
    613615         END DO 
    614616         !               ! -------------------------------------- ! 
     
    616618         !               ! -------------------------------------- ! 
    617619         ! vertical simple interpolation 
    618          pe3_out(:,:,1) = fse3vw_0(:,:,1) + pe3_in(:,:,1) - fse3v_0(:,:,1) 
     620         pe3_out(:,:,1) = e3vw_0(:,:,1) + pe3_in(:,:,1) - e3v_0(:,:,1) 
    619621         ! - ML - The use of mask in this formaula enables the special treatment of the last w- point without undirect adressing 
    620622         DO jk = 2, jpk 
    621             pe3_out(:,:,jk) = fse3vw_0(:,:,jk) + ( 1. - 0.5 * vmask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - fse3v_0(:,:,jk-1) )   & 
    622                &                               + (      0.5 * vmask(:,:,jk) ) * ( pe3_in(:,:,jk  ) - fse3v_0(:,:,jk  ) ) 
     623            pe3_out(:,:,jk) = e3vw_0(:,:,jk) + ( 1. - 0.5 * vmask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - e3v_0(:,:,jk-1) )   & 
     624               &                               +        0.5 * vmask(:,:,jk)   * ( pe3_in(:,:,jk  ) - e3v_0(:,:,jk  ) ) 
    623625         END DO 
    624626      END SELECT 
     
    694696            ! 
    695697         ELSE                                   !* Initialize at "rest" 
    696             fse3t_b(:,:,:) = fse3t_0(:,:,:) 
    697             fse3t_n(:,:,:) = fse3t_0(:,:,:) 
    698             e3t_t_b(:,:,:) = 0.e0 
    699             e3t_t_n(:,:,:) = 0.e0 
    700             hdiv_lf(:,:,:) = 0.e0 
     698            fse3t_b(:,:,:) = e3t_0(:,:,:) 
     699            fse3t_n(:,:,:) = e3t_0(:,:,:) 
     700            IF( ln_vvl_ztilde .OR. ln_vvl_layer) THEN 
     701               e3t_t_b(:,:,:) = 0.e0 
     702               e3t_t_n(:,:,:) = 0.e0 
     703               IF( ln_vvl_ztilde ) hdiv_lf(:,:,:) = 0.e0 
     704            END IF 
    701705         ENDIF 
    702706 
     
    735739      INTEGER ::   ioptio 
    736740 
    737       NAMELIST/nam_vvl/ ln_vvl_zstar, ln_vvl_ztilde, ln_vvl_layer, ahe3! , ln_vvl_kepe 
     741      NAMELIST/nam_vvl/ ln_vvl_zstar, ln_vvl_ztilde, ln_vvl_layer, rn_ahe3, ln_vvl_dbg! , ln_vvl_kepe 
    738742      !!----------------------------------------------------------------------  
    739743 
     
    752756         ! WRITE(numout,*) '                                         ln_vvl_kepe    = ', ln_vvl_kepe 
    753757         WRITE(numout,*) '           Namelist nam_vvl : thickness diffusion coefficient' 
    754          WRITE(numout,*) '                                         ahe3           = ', ahe3 
     758         WRITE(numout,*) '                                         rn_ahe3        = ', rn_ahe3 
     759         WRITE(numout,*) '           Namelist nam_vvl : debug prints' 
     760         WRITE(numout,*) '                                         ln_vvl_dbg     = ', ln_vvl_dbg 
    755761      ENDIF 
    756762 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90

    r2715 r3839  
    180180         CALL iom_rstput( 0, 0, inum4, 'esigw', esigw ) 
    181181         ! 
    182          CALL iom_rstput( 0, 0, inum4, 'e3t', e3t )             !    ! scale factors 
    183          CALL iom_rstput( 0, 0, inum4, 'e3u', e3u ) 
    184          CALL iom_rstput( 0, 0, inum4, 'e3v', e3v ) 
    185          CALL iom_rstput( 0, 0, inum4, 'e3w', e3w ) 
    186          ! 
    187          CALL iom_rstput( 0, 0, inum4, 'gdept_0' , gdept_0 )    !    ! stretched system 
    188          CALL iom_rstput( 0, 0, inum4, 'gdepw_0' , gdepw_0 ) 
     182         CALL iom_rstput( 0, 0, inum4, 'e3t_0', e3t_0 )         !    ! scale factors 
     183         CALL iom_rstput( 0, 0, inum4, 'e3u_0', e3u_0 ) 
     184         CALL iom_rstput( 0, 0, inum4, 'e3v_0', e3v_0 ) 
     185         CALL iom_rstput( 0, 0, inum4, 'e3w_0', e3w_0 ) 
     186         ! 
     187         CALL iom_rstput( 0, 0, inum4, 'gdept_1d' , gdept_1d )  !    ! stretched system 
     188         CALL iom_rstput( 0, 0, inum4, 'gdepw_1d' , gdepw_1d ) 
    189189      ENDIF 
    190190       
     
    192192         ! 
    193193         IF( nmsh <= 6 ) THEN                                   !    ! 3D vertical scale factors 
    194             CALL iom_rstput( 0, 0, inum4, 'e3t', e3t )          
    195             CALL iom_rstput( 0, 0, inum4, 'e3u', e3u ) 
    196             CALL iom_rstput( 0, 0, inum4, 'e3v', e3v ) 
    197             CALL iom_rstput( 0, 0, inum4, 'e3w', e3w ) 
     194            CALL iom_rstput( 0, 0, inum4, 'e3t_0', e3t_0 )          
     195            CALL iom_rstput( 0, 0, inum4, 'e3u_0', e3u_0 ) 
     196            CALL iom_rstput( 0, 0, inum4, 'e3v_0', e3v_0 ) 
     197            CALL iom_rstput( 0, 0, inum4, 'e3w_0', e3w_0 ) 
    198198         ELSE                                                   !    ! 2D masked bottom ocean scale factors 
    199199            DO jj = 1,jpj    
    200200               DO ji = 1,jpi 
    201                   e3tp(ji,jj) = e3t(ji,jj,mbkt(ji,jj)) * tmask(ji,jj,1) 
    202                   e3wp(ji,jj) = e3w(ji,jj,mbkt(ji,jj)) * tmask(ji,jj,1) 
     201                  e3tp(ji,jj) = e3t_0(ji,jj,mbkt(ji,jj)) * tmask(ji,jj,1) 
     202                  e3wp(ji,jj) = e3w_0(ji,jj,mbkt(ji,jj)) * tmask(ji,jj,1) 
    203203               END DO 
    204204            END DO 
     
    208208         ! 
    209209         IF( nmsh <= 3 ) THEN                                   !    ! 3D depth 
    210             CALL iom_rstput( 0, 0, inum4, 'gdept', gdept, ktype = jp_r4 )      
     210            CALL iom_rstput( 0, 0, inum4, 'gdept_0', gdept_0, ktype = jp_r4 )      
    211211            DO jk = 1,jpk    
    212212               DO jj = 1, jpjm1    
    213213                  DO ji = 1, fs_jpim1   ! vector opt. 
    214                      zdepu(ji,jj,jk) = MIN( gdept(ji,jj,jk) , gdept(ji+1,jj  ,jk) ) 
    215                      zdepv(ji,jj,jk) = MIN( gdept(ji,jj,jk) , gdept(ji  ,jj+1,jk) ) 
     214                     zdepu(ji,jj,jk) = MIN( gdept_0(ji,jj,jk) , gdept_0(ji+1,jj  ,jk) ) 
     215                     zdepv(ji,jj,jk) = MIN( gdept_0(ji,jj,jk) , gdept_0(ji  ,jj+1,jk) ) 
    216216                  END DO    
    217217               END DO    
     
    220220            CALL iom_rstput( 0, 0, inum4, 'gdepu', zdepu, ktype = jp_r4 ) 
    221221            CALL iom_rstput( 0, 0, inum4, 'gdepv', zdepv, ktype = jp_r4 ) 
    222             CALL iom_rstput( 0, 0, inum4, 'gdepw', gdepw, ktype = jp_r4 ) 
     222            CALL iom_rstput( 0, 0, inum4, 'gdepw_0', gdepw_0, ktype = jp_r4 ) 
    223223         ELSE                                                   !    ! 2D bottom depth 
    224224            DO jj = 1,jpj    
    225225               DO ji = 1,jpi 
    226                   zprt(ji,jj) = gdept(ji,jj,mbkt(ji,jj)  ) * tmask(ji,jj,1) 
    227                   zprw(ji,jj) = gdepw(ji,jj,mbkt(ji,jj)+1) * tmask(ji,jj,1) 
     226                  zprt(ji,jj) = gdept_0(ji,jj,mbkt(ji,jj)  ) * tmask(ji,jj,1) 
     227                  zprw(ji,jj) = gdepw_0(ji,jj,mbkt(ji,jj)+1) * tmask(ji,jj,1) 
    228228               END DO 
    229229            END DO 
     
    232232         ENDIF 
    233233         ! 
    234          CALL iom_rstput( 0, 0, inum4, 'gdept_0', gdept_0 )     !    ! reference z-coord. 
    235          CALL iom_rstput( 0, 0, inum4, 'gdepw_0', gdepw_0 ) 
    236          CALL iom_rstput( 0, 0, inum4, 'e3t_0'  , e3t_0   ) 
    237          CALL iom_rstput( 0, 0, inum4, 'e3w_0'  , e3w_0   ) 
     234         CALL iom_rstput( 0, 0, inum4, 'gdept_1d', gdept_1d )   !    ! reference z-coord. 
     235         CALL iom_rstput( 0, 0, inum4, 'gdepw_1d', gdepw_1d ) 
     236         CALL iom_rstput( 0, 0, inum4, 'e3t_1d'  , e3t_1d   ) 
     237         CALL iom_rstput( 0, 0, inum4, 'e3w_1d'  , e3w_1d   ) 
    238238      ENDIF 
    239239       
    240240      IF( ln_zco ) THEN 
    241241         !                                                      ! z-coordinate - full steps 
    242          CALL iom_rstput( 0, 0, inum4, 'gdept_0', gdept_0 )     !    ! depth 
    243          CALL iom_rstput( 0, 0, inum4, 'gdepw_0', gdepw_0 ) 
    244          CALL iom_rstput( 0, 0, inum4, 'e3t_0'  , e3t_0   )     !    ! scale factors 
    245          CALL iom_rstput( 0, 0, inum4, 'e3w_0'  , e3w_0   ) 
     242         CALL iom_rstput( 0, 0, inum4, 'gdept_1d', gdept_1d )   !    ! depth 
     243         CALL iom_rstput( 0, 0, inum4, 'gdepw_1d', gdepw_1d ) 
     244         CALL iom_rstput( 0, 0, inum4, 'e3t_1d'  , e3t_1d   )   !    ! scale factors 
     245         CALL iom_rstput( 0, 0, inum4, 'e3w_1d'  , e3w_1d   ) 
    246246      ENDIF 
    247247      !                                     ! ============================ 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r2715 r3839  
    7878      !!                   ln_zco=T   z-coordinate    
    7979      !!                   ln_zps=T   z-coordinate with partial steps 
    80       !!                   ln_zco=T   s-coordinate  
     80      !!                   ln_sco=T   s-coordinate  
    8181      !! 
    8282      !! ** Action  :   define gdep., e3., mbathy and bathy 
     
    124124      IF( nprint == 1 .AND. lwp )   THEN 
    125125         WRITE(numout,*) ' MIN val mbathy ', MINVAL( mbathy(:,:) ), ' MAX ', MAXVAL( mbathy(:,:) ) 
    126          WRITE(numout,*) ' MIN val depth t ', MINVAL( fsdept(:,:,:) ),   & 
    127             &                   ' w ',   MINVAL( fsdepw(:,:,:) ), '3w ', MINVAL( fsde3w(:,:,:) ) 
    128          WRITE(numout,*) ' MIN val e3    t ', MINVAL( fse3t(:,:,:) ), ' f ', MINVAL( fse3f(:,:,:) ),  & 
    129             &                   ' u ',   MINVAL( fse3u(:,:,:) ), ' u ', MINVAL( fse3v(:,:,:) ),  & 
    130             &                   ' uw',   MINVAL( fse3uw(:,:,:)), ' vw', MINVAL( fse3vw(:,:,:)),   & 
    131             &                   ' w ',   MINVAL( fse3w(:,:,:) ) 
    132  
    133          WRITE(numout,*) ' MAX val depth t ', MAXVAL( fsdept(:,:,:) ),   & 
    134             &                   ' w ',   MAXVAL( fsdepw(:,:,:) ), '3w ', MAXVAL( fsde3w(:,:,:) ) 
    135          WRITE(numout,*) ' MAX val e3    t ', MAXVAL( fse3t(:,:,:) ), ' f ', MAXVAL( fse3f(:,:,:) ),  & 
    136             &                   ' u ',   MAXVAL( fse3u(:,:,:) ), ' u ', MAXVAL( fse3v(:,:,:) ),  & 
    137             &                   ' uw',   MAXVAL( fse3uw(:,:,:)), ' vw', MAXVAL( fse3vw(:,:,:)),   & 
    138             &                   ' w ',   MAXVAL( fse3w(:,:,:) ) 
     126         WRITE(numout,*) ' MIN val depth t ', MINVAL( gdept_0(:,:,:) ),   & 
     127            &                   ' w ',   MINVAL( gdepw_0(:,:,:) ), '3w ', MINVAL( gdep3w_0(:,:,:) ) 
     128         WRITE(numout,*) ' MIN val e3    t ', MINVAL( e3t_0(:,:,:) ), ' f ', MINVAL( e3f_0(:,:,:) ),  & 
     129            &                   ' u ',   MINVAL( e3u_0(:,:,:) ), ' u ', MINVAL( e3v_0(:,:,:) ),  & 
     130            &                   ' uw',   MINVAL( e3uw_0(:,:,:)), ' vw', MINVAL( e3vw_0(:,:,:)),   & 
     131            &                   ' w ',   MINVAL( e3w_0(:,:,:) ) 
     132 
     133         WRITE(numout,*) ' MAX val depth t ', MAXVAL( gdept_0(:,:,:) ),   & 
     134            &                   ' w ',   MAXVAL( gdepw_0(:,:,:) ), '3w ', MAXVAL( gdep3w_0(:,:,:) ) 
     135         WRITE(numout,*) ' MAX val e3    t ', MAXVAL( e3t_0(:,:,:) ), ' f ', MAXVAL( e3f_0(:,:,:) ),  & 
     136            &                   ' u ',   MAXVAL( e3u_0(:,:,:) ), ' u ', MAXVAL( e3v_0(:,:,:) ),  & 
     137            &                   ' uw',   MAXVAL( e3uw_0(:,:,:)), ' vw', MAXVAL( e3vw_0(:,:,:)),   & 
     138            &                   ' w ',   MAXVAL( e3w_0(:,:,:) ) 
    139139      ENDIF 
    140140      ! 
     
    153153      !!      function the derivative of which gives the scale factors. 
    154154      !!        both depth and scale factors only depend on k (1d arrays). 
    155       !!              w-level: gdepw_0  = fsdep(k) 
    156       !!                       e3w_0(k) = dk(fsdep)(k)     = fse3(k) 
    157       !!              t-level: gdept_0  = fsdep(k+0.5) 
    158       !!                       e3t_0(k) = dk(fsdep)(k+0.5) = fse3(k+0.5) 
    159       !! 
    160       !! ** Action  : - gdept_0, gdepw_0 : depth of T- and W-point (m) 
    161       !!              - e3t_0  , e3w_0   : scale factors at T- and W-levels (m) 
     155      !!              w-level: gdepw_1d  = gdep(k) 
     156      !!                       e3w_1d(k) = dk(gdep)(k)     = e3(k) 
     157      !!              t-level: gdept_1d  = gdep(k+0.5) 
     158      !!                       e3t_1d(k) = dk(gdep)(k+0.5) = e3(k+0.5) 
     159      !! 
     160      !! ** Action  : - gdept_1d, gdepw_1d : depth of T- and W-point (m) 
     161      !!              - e3t_1d  , e3w_1d  : scale factors at T- and W-levels (m) 
    162162      !! 
    163163      !! Reference : Marti, Madec & Delecluse, 1992, JGR, 97, No8, 12,763-12,766. 
     
    229229            zw = FLOAT( jk ) 
    230230            zt = FLOAT( jk ) + 0.5_wp 
    231             gdepw_0(jk) = ( zw - 1 ) * za1 
    232             gdept_0(jk) = ( zt - 1 ) * za1 
    233             e3w_0  (jk) =  za1 
    234             e3t_0  (jk) =  za1 
     231            gdepw_1d(jk) = ( zw - 1 ) * za1 
     232            gdept_1d(jk) = ( zt - 1 ) * za1 
     233            e3w_1d  (jk) =  za1 
     234            e3t_1d  (jk) =  za1 
    235235         END DO 
    236236      ELSE                                ! Madec & Imbard 1996 function 
     
    239239               zw = REAL( jk , wp ) 
    240240               zt = REAL( jk , wp ) + 0.5_wp 
    241                gdepw_0(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth) / zacr ) )  ) 
    242                gdept_0(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth) / zacr ) )  ) 
    243                e3w_0  (jk) =          za0      + za1        * TANH(       (zw-zkth) / zacr   ) 
    244                e3t_0  (jk) =          za0      + za1        * TANH(       (zt-zkth) / zacr   ) 
     241               gdepw_1d(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth) / zacr ) )  ) 
     242               gdept_1d(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth) / zacr ) )  ) 
     243               e3w_1d  (jk) =          za0      + za1        * TANH(       (zw-zkth) / zacr   ) 
     244               e3t_1d  (jk) =          za0      + za1        * TANH(       (zt-zkth) / zacr   ) 
    245245            END DO 
    246246         ELSE 
     
    249249               zt = FLOAT( jk ) + 0.5_wp 
    250250               ! Double tanh function 
    251                gdepw_0(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth ) / zacr  ) )    & 
    252                   &                            + za2 * zacr2* LOG ( COSH( (zw-zkth2) / zacr2 ) )  ) 
    253                gdept_0(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth ) / zacr  ) )    & 
    254                   &                            + za2 * zacr2* LOG ( COSH( (zt-zkth2) / zacr2 ) )  ) 
    255                e3w_0  (jk) =          za0      + za1        * TANH(       (zw-zkth ) / zacr  )    & 
    256                   &                            + za2        * TANH(       (zw-zkth2) / zacr2 ) 
    257                e3t_0  (jk) =          za0      + za1        * TANH(       (zt-zkth ) / zacr  )    & 
    258                   &                            + za2        * TANH(       (zt-zkth2) / zacr2 ) 
     251               gdepw_1d(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth ) / zacr  ) )    & 
     252                  &                             + za2 * zacr2* LOG ( COSH( (zw-zkth2) / zacr2 ) )  ) 
     253               gdept_1d(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth ) / zacr  ) )    & 
     254                  &                             + za2 * zacr2* LOG ( COSH( (zt-zkth2) / zacr2 ) )  ) 
     255               e3w_1d  (jk) =          za0      + za1        * TANH(       (zw-zkth ) / zacr  )    & 
     256                  &                             + za2        * TANH(       (zw-zkth2) / zacr2 ) 
     257               e3t_1d  (jk) =          za0      + za1        * TANH(       (zt-zkth ) / zacr  )    & 
     258                  &                             + za2        * TANH(       (zt-zkth2) / zacr2 ) 
    259259            END DO 
    260260         ENDIF 
    261          gdepw_0(1) = 0._wp                    ! force first w-level to be exactly at zero 
     261         gdepw_1d(1) = 0._wp                    ! force first w-level to be exactly at zero 
    262262      ENDIF 
    263263 
    264264!!gm BUG in s-coordinate this does not work! 
    265265      ! deepest/shallowest W level Above/Below ~10m 
    266       zrefdep = 10._wp - 0.1_wp * MINVAL( e3w_0 )                    ! ref. depth with tolerance (10% of minimum layer thickness) 
    267       nlb10 = MINLOC( gdepw_0, mask = gdepw_0 > zrefdep, dim = 1 )   ! shallowest W level Below ~10m 
    268       nla10 = nlb10 - 1                                              ! deepest    W level Above ~10m 
     266      zrefdep = 10._wp - 0.1_wp * MINVAL( e3w_1d )                     ! ref. depth with tolerance (10% of minimum layer thickness) 
     267      nlb10 = MINLOC( gdepw_1d, mask = gdepw_1d > zrefdep, dim = 1 )   ! shallowest W level Below ~10m 
     268      nla10 = nlb10 - 1                                                ! deepest    W level Above ~10m 
    269269!!gm end bug 
    270270 
     
    272272         WRITE(numout,*) 
    273273         WRITE(numout,*) '              Reference z-coordinate depth and scale factors:' 
    274          WRITE(numout, "(9x,' level   gdept    gdepw     e3t      e3w  ')" ) 
    275          WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_0(jk), gdepw_0(jk), e3t_0(jk), e3w_0(jk), jk = 1, jpk ) 
     274         WRITE(numout, "(9x,' level  gdept_1d  gdepw_1d  e3t_1d   e3w_1d  ')" ) 
     275         WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_1d(jk), gdepw_1d(jk), e3t_1d(jk), e3w_1d(jk), jk = 1, jpk ) 
    276276      ENDIF 
    277277      DO jk = 1, jpk                      ! control positivity 
    278          IF( e3w_0  (jk) <= 0._wp .OR. e3t_0  (jk) <= 0._wp )   CALL ctl_stop( 'dom:zgr_z: e3w or e3t =< 0 '    ) 
    279          IF( gdepw_0(jk) <  0._wp .OR. gdept_0(jk) <  0._wp )   CALL ctl_stop( 'dom:zgr_z: gdepw or gdept < 0 ' ) 
     278         IF( e3w_1d  (jk) <= 0._wp .OR. e3t_1d  (jk) <= 0._wp )   CALL ctl_stop( 'dom:zgr_z: e3w_1d or e3t_1d =< 0 '    ) 
     279         IF( gdepw_1d(jk) <  0._wp .OR. gdept_1d(jk) <  0._wp )   CALL ctl_stop( 'dom:zgr_z: gdepw_1d or gdept_1d < 0 ' ) 
    280280      END DO 
    281281      ! 
     
    336336            IF(lwp) WRITE(numout,*) '         bathymetry field: flat basin' 
    337337            idta(:,:) = jpkm1                            ! before last level 
    338             zdta(:,:) = gdepw_0(jpk)                     ! last w-point depth 
    339             h_oce     = gdepw_0(jpk) 
     338            zdta(:,:) = gdepw_1d(jpk)                    ! last w-point depth 
     339            h_oce     = gdepw_1d(jpk) 
    340340         ELSE                                         ! bump centered in the basin 
    341341            IF(lwp) WRITE(numout,*) 
     
    345345            r_bump  = 50000._wp                            ! bump radius (meters)        
    346346            h_bump  =  2700._wp                            ! bump height (meters) 
    347             h_oce   = gdepw_0(jpk)                         ! background ocean depth (meters) 
     347            h_oce   = gdepw_1d(jpk)                        ! background ocean depth (meters) 
    348348            IF(lwp) WRITE(numout,*) '            bump characteristics: ' 
    349349            IF(lwp) WRITE(numout,*) '               bump center (i,j)   = ', ii_bump, ii_bump 
     
    365365               idta(:,:) = jpkm1 
    366366               DO jk = 1, jpkm1 
    367                   WHERE( gdept_0(jk) < zdta(:,:) .AND. zdta(:,:) <= gdept_0(jk+1) )   idta(:,:) = jk 
     367                  WHERE( gdept_1d(jk) < zdta(:,:) .AND. zdta(:,:) <= gdept_1d(jk+1) )   idta(:,:) = jk 
    368368               END DO 
    369369            ENDIF 
     
    502502      !                                               ! =========================== ! 
    503503      IF ( .not. ln_sco ) THEN 
    504          IF( rn_hmin < 0._wp ) THEN    ;   ik = - INT( rn_hmin )                                      ! from a nb of level 
    505          ELSE                          ;   ik = MINLOC( gdepw_0, mask = gdepw_0 > rn_hmin, dim = 1 )  ! from a depth 
     504         IF( rn_hmin < 0._wp ) THEN    ;   ik = - INT( rn_hmin )                                        ! from a nb of level 
     505         ELSE                          ;   ik = MINLOC( gdepw_1d, mask = gdepw_1d > rn_hmin, dim = 1 )  ! from a depth 
    506506         ENDIF 
    507          zhmin = gdepw_0(ik+1)                                                         ! minimum depth = ik+1 w-levels  
     507         zhmin = gdepw_1d(ik+1)                                                        ! minimum depth = ik+1 w-levels  
    508508         WHERE( bathy(:,:) <= 0._wp )   ;   bathy(:,:) = 0._wp                         ! min=0     over the lands 
    509509         ELSE WHERE                     ;   bathy(:,:) = MAX(  zhmin , bathy(:,:)  )   ! min=zhmin over the oceans 
     
    762762      ! 
    763763      DO jk = 1, jpk 
    764          fsdept(:,:,jk) = gdept_0(jk) 
    765          fsdepw(:,:,jk) = gdepw_0(jk) 
    766          fsde3w(:,:,jk) = gdepw_0(jk) 
    767          fse3t (:,:,jk) = e3t_0(jk) 
    768          fse3u (:,:,jk) = e3t_0(jk) 
    769          fse3v (:,:,jk) = e3t_0(jk) 
    770          fse3f (:,:,jk) = e3t_0(jk) 
    771          fse3w (:,:,jk) = e3w_0(jk) 
    772          fse3uw(:,:,jk) = e3w_0(jk) 
    773          fse3vw(:,:,jk) = e3w_0(jk) 
     764         gdept_0 (:,:,jk) = gdept_1d(jk) 
     765         gdepw_0 (:,:,jk) = gdepw_1d(jk) 
     766         gdep3w_0(:,:,jk) = gdepw_1d(jk) 
     767         e3t_0   (:,:,jk) = e3t_1d  (jk) 
     768         e3u_0   (:,:,jk) = e3t_1d  (jk) 
     769         e3v_0   (:,:,jk) = e3t_1d  (jk) 
     770         e3f_0   (:,:,jk) = e3t_1d  (jk) 
     771         e3w_0   (:,:,jk) = e3w_1d  (jk) 
     772         e3uw_0  (:,:,jk) = e3w_1d  (jk) 
     773         e3vw_0  (:,:,jk) = e3w_1d  (jk) 
    774774      END DO 
    775775      ! 
     
    794794      !!      with partial steps  on 3d arrays ( i, j, k ). 
    795795      !! 
    796       !!              w-level: gdepw(i,j,k)  = fsdep(k) 
    797       !!                       e3w(i,j,k) = dk(fsdep)(k)     = fse3(i,j,k) 
    798       !!              t-level: gdept(i,j,k)  = fsdep(k+0.5) 
    799       !!                       e3t(i,j,k) = dk(fsdep)(k+0.5) = fse3(i,j,k+0.5) 
     796      !!              w-level: gdepw_0(i,j,k)  = gdep(k) 
     797      !!                       e3w_0(i,j,k) = dk(gdep)(k)     = e3(i,j,k) 
     798      !!              t-level: gdept_0(i,j,k)  = gdep(k+0.5) 
     799      !!                       e3t_0(i,j,k) = dk(gdep)(k+0.5) = e3(i,j,k+0.5) 
    800800      !! 
    801801      !!        With the help of the bathymetric file ( bathymetry_depth_ORCA_R2.nc), 
     
    805805      !!              - bathy = 0 => mbathy = 0 
    806806      !!              - 1 < mbathy < jpkm1     
    807       !!              - bathy > gdepw(jpk) => mbathy = jpkm1   
     807      !!              - bathy > gdepw_0(jpk) => mbathy = jpkm1   
    808808      !! 
    809809      !!        Then, for each case, we find the new depth at t- and w- levels 
     
    817817      !!      schemes. 
    818818      !! 
    819       !!         c a u t i o n : gdept_0, gdepw_0 and e3._0 are positives 
    820       !!         - - - - - - -   gdept, gdepw and e3. are positives 
     819      !!         c a u t i o n : gdept_1d, gdepw_1d and e3._0 are positives 
     820      !!         - - - - - - -   gdept_0, gdepw_0 and e3. are positives 
    821821      !!       
    822822      !!  Reference :   Pacanowsky & Gnanadesikan 1997, Mon. Wea. Rev., 126, 3248-3270. 
     
    855855      ! bathymetry in level (from bathy_meter) 
    856856      ! =================== 
    857       zmax = gdepw_0(jpk) + e3t_0(jpk)          ! maximum depth (i.e. the last ocean level thickness <= 2*e3t_0(jpkm1) ) 
     857      zmax = gdepw_1d(jpk) + e3t_1d(jpk)        ! maximum depth (i.e. the last ocean level thickness <= 2*e3t_1d(jpkm1) ) 
    858858      bathy(:,:) = MIN( zmax ,  bathy(:,:) )    ! bounded value of bathy (min already set at the end of zgr_bat) 
    859859      WHERE( bathy(:,:) == 0._wp )   ;   mbathy(:,:) = 0       ! land  : set mbathy to 0 
     
    863863      ! Compute mbathy for ocean points (i.e. the number of ocean levels) 
    864864      ! find the number of ocean levels such that the last level thickness 
    865       ! is larger than the minimum of e3zps_min and e3zps_rat * e3t_0 (where 
    866       ! e3t_0 is the reference level thickness 
     865      ! is larger than the minimum of e3zps_min and e3zps_rat * e3t_1d (where 
     866      ! e3t_1d is the reference level thickness 
    867867      DO jk = jpkm1, 1, -1 
    868          zdepth = gdepw_0(jk) + MIN( e3zps_min, e3t_0(jk)*e3zps_rat ) 
     868         zdepth = gdepw_1d(jk) + MIN( e3zps_min, e3t_1d(jk)*e3zps_rat ) 
    869869         WHERE( 0._wp < bathy(:,:) .AND. bathy(:,:) <= zdepth )   mbathy(:,:) = jk-1 
    870870      END DO 
     
    872872      ! Scale factors and depth at T- and W-points 
    873873      DO jk = 1, jpk                        ! intitialization to the reference z-coordinate 
    874          gdept(:,:,jk) = gdept_0(jk) 
    875          gdepw(:,:,jk) = gdepw_0(jk) 
    876          e3t  (:,:,jk) = e3t_0  (jk) 
    877          e3w  (:,:,jk) = e3w_0  (jk) 
     874         gdept_0(:,:,jk) = gdept_1d(jk) 
     875         gdepw_0(:,:,jk) = gdepw_1d(jk) 
     876         e3t_0  (:,:,jk) = e3t_1d  (jk) 
     877         e3w_0  (:,:,jk) = e3w_1d  (jk) 
    878878      END DO 
    879879      !  
     
    885885               IF( ik == jpkm1 ) THEN 
    886886                  zdepwp = bathy(ji,jj) 
    887                   ze3tp  = bathy(ji,jj) - gdepw_0(ik) 
    888                   ze3wp = 0.5_wp * e3w_0(ik) * ( 1._wp + ( ze3tp/e3t_0(ik) ) ) 
    889                   e3t(ji,jj,ik  ) = ze3tp 
    890                   e3t(ji,jj,ik+1) = ze3tp 
    891                   e3w(ji,jj,ik  ) = ze3wp 
    892                   e3w(ji,jj,ik+1) = ze3tp 
    893                   gdepw(ji,jj,ik+1) = zdepwp 
    894                   gdept(ji,jj,ik  ) = gdept_0(ik-1) + ze3wp 
    895                   gdept(ji,jj,ik+1) = gdept(ji,jj,ik) + ze3tp 
     887                  ze3tp  = bathy(ji,jj) - gdepw_1d(ik) 
     888                  ze3wp = 0.5_wp * e3w_1d(ik) * ( 1._wp + ( ze3tp/e3t_1d(ik) ) ) 
     889                  e3t_0(ji,jj,ik  ) = ze3tp 
     890                  e3t_0(ji,jj,ik+1) = ze3tp 
     891                  e3w_0(ji,jj,ik  ) = ze3wp 
     892                  e3w_0(ji,jj,ik+1) = ze3tp 
     893                  gdepw_0(ji,jj,ik+1) = zdepwp 
     894                  gdept_0(ji,jj,ik  ) = gdept_1d(ik-1) + ze3wp 
     895                  gdept_0(ji,jj,ik+1) = gdept_0(ji,jj,ik) + ze3tp 
    896896                  ! 
    897897               ELSE                         ! standard case 
    898                   IF( bathy(ji,jj) <= gdepw_0(ik+1) ) THEN   ;   gdepw(ji,jj,ik+1) = bathy(ji,jj) 
    899                   ELSE                                       ;   gdepw(ji,jj,ik+1) = gdepw_0(ik+1) 
     898                  IF( bathy(ji,jj) <= gdepw_1d(ik+1) ) THEN   ;   gdepw_0(ji,jj,ik+1) = bathy(ji,jj) 
     899                  ELSE                                        ;   gdepw_0(ji,jj,ik+1) = gdepw_1d(ik+1) 
    900900                  ENDIF 
    901 !gm Bug?  check the gdepw_0 
     901!gm Bug?  check the gdepw_1d 
    902902                  !       ... on ik 
    903                   gdept(ji,jj,ik) = gdepw_0(ik) + ( gdepw  (ji,jj,ik+1) - gdepw_0(ik) )   & 
    904                      &                          * ((gdept_0(      ik  ) - gdepw_0(ik) )   & 
    905                      &                          / ( gdepw_0(      ik+1) - gdepw_0(ik) )) 
    906                   e3t  (ji,jj,ik) = e3t_0  (ik) * ( gdepw  (ji,jj,ik+1) - gdepw_0(ik) )   &  
    907                      &                          / ( gdepw_0(      ik+1) - gdepw_0(ik) )  
    908                   e3w  (ji,jj,ik) = 0.5_wp * ( gdepw(ji,jj,ik+1) + gdepw_0(ik+1) - 2._wp * gdepw_0(ik) )   & 
    909                      &                     * ( e3w_0(ik) / ( gdepw_0(ik+1) - gdepw_0(ik) ) ) 
     903                  gdept_0(ji,jj,ik) = gdepw_1d(ik) + ( gdepw_0   (ji,jj,ik+1) - gdepw_1d(ik) )   & 
     904                     &                           * ((gdept_1d(      ik  ) - gdepw_1d(ik) )   & 
     905                     &                           / ( gdepw_1d(      ik+1) - gdepw_1d(ik) )) 
     906                  e3t_0(ji,jj,ik) = e3t_1d (ik) * ( gdepw_0 (ji,jj,ik+1) - gdepw_1d(ik) )   &  
     907                     &                          / ( gdepw_1d(      ik+1) - gdepw_1d(ik) )  
     908                  e3w_0(ji,jj,ik) = 0.5_wp * ( gdepw_0(ji,jj,ik+1) + gdepw_1d(ik+1) - 2._wp * gdepw_1d(ik) )   & 
     909                     &                     * ( e3w_1d(ik) / ( gdepw_1d(ik+1) - gdepw_1d(ik) ) ) 
    910910                  !       ... on ik+1 
    911                   e3w  (ji,jj,ik+1) = e3t  (ji,jj,ik) 
    912                   e3t  (ji,jj,ik+1) = e3t  (ji,jj,ik) 
    913                   gdept(ji,jj,ik+1) = gdept(ji,jj,ik) + e3t(ji,jj,ik) 
     911                  e3w_0  (ji,jj,ik+1) = e3t_0  (ji,jj,ik) 
     912                  e3t_0  (ji,jj,ik+1) = e3t_0  (ji,jj,ik) 
     913                  gdept_0(ji,jj,ik+1) = gdept_0(ji,jj,ik) + e3t_0(ji,jj,ik) 
    914914               ENDIF 
    915915            ENDIF 
     
    922922            ik = mbathy(ji,jj) 
    923923            IF( ik > 0 ) THEN               ! ocean point only 
    924                e3tp (ji,jj) = e3t(ji,jj,ik  ) 
    925                e3wp (ji,jj) = e3w(ji,jj,ik  ) 
     924               e3tp (ji,jj) = e3t_0(ji,jj,ik) 
     925               e3wp (ji,jj) = e3w_0(ji,jj,ik) 
    926926               ! test 
    927                zdiff= gdepw(ji,jj,ik+1) - gdept(ji,jj,ik  ) 
     927               zdiff= gdepw_0(ji,jj,ik+1) - gdept_0(ji,jj,ik  ) 
    928928               IF( zdiff <= 0._wp .AND. lwp ) THEN  
    929929                  it = it + 1 
    930930                  WRITE(numout,*) ' it      = ', it, ' ik      = ', ik, ' (i,j) = ', ji, jj 
    931931                  WRITE(numout,*) ' bathy = ', bathy(ji,jj) 
    932                   WRITE(numout,*) ' gdept = ', gdept(ji,jj,ik), ' gdepw = ', gdepw(ji,jj,ik+1), ' zdiff = ', zdiff 
    933                   WRITE(numout,*) ' e3tp  = ', e3t  (ji,jj,ik), ' e3wp  = ', e3w  (ji,jj,ik  ) 
     932                  WRITE(numout,*) ' gdept_0 = ', gdept_0(ji,jj,ik), ' gdepw_0 = ', gdepw_0(ji,jj,ik+1), ' zdiff = ', zdiff 
     933                  WRITE(numout,*) ' e3tp    = ', e3t_0  (ji,jj,ik), ' e3wp    = ', e3w_0  (ji,jj,ik  ) 
    934934               ENDIF 
    935935            ENDIF 
     
    939939      ! Scale factors and depth at U-, V-, UW and VW-points 
    940940      DO jk = 1, jpk                        ! initialisation to z-scale factors 
    941          e3u (:,:,jk) = e3t_0(jk) 
    942          e3v (:,:,jk) = e3t_0(jk) 
    943          e3uw(:,:,jk) = e3w_0(jk) 
    944          e3vw(:,:,jk) = e3w_0(jk) 
     941         e3u_0 (:,:,jk) = e3t_1d(jk) 
     942         e3v_0 (:,:,jk) = e3t_1d(jk) 
     943         e3uw_0(:,:,jk) = e3w_1d(jk) 
     944         e3vw_0(:,:,jk) = e3w_1d(jk) 
    945945      END DO 
    946946      DO jk = 1,jpk                         ! Computed as the minimum of neighbooring scale factors 
    947947         DO jj = 1, jpjm1 
    948948            DO ji = 1, fs_jpim1   ! vector opt. 
    949                e3u (ji,jj,jk) = MIN( e3t(ji,jj,jk), e3t(ji+1,jj,jk) ) 
    950                e3v (ji,jj,jk) = MIN( e3t(ji,jj,jk), e3t(ji,jj+1,jk) ) 
    951                e3uw(ji,jj,jk) = MIN( e3w(ji,jj,jk), e3w(ji+1,jj,jk) ) 
    952                e3vw(ji,jj,jk) = MIN( e3w(ji,jj,jk), e3w(ji,jj+1,jk) ) 
    953             END DO 
    954          END DO 
    955       END DO 
    956       CALL lbc_lnk( e3u , 'U', 1._wp )   ;   CALL lbc_lnk( e3uw, 'U', 1._wp )   ! lateral boundary conditions 
    957       CALL lbc_lnk( e3v , 'V', 1._wp )   ;   CALL lbc_lnk( e3vw, 'V', 1._wp ) 
     949               e3u_0 (ji,jj,jk) = MIN( e3t_0(ji,jj,jk), e3t_0(ji+1,jj,jk) ) 
     950               e3v_0 (ji,jj,jk) = MIN( e3t_0(ji,jj,jk), e3t_0(ji,jj+1,jk) ) 
     951               e3uw_0(ji,jj,jk) = MIN( e3w_0(ji,jj,jk), e3w_0(ji+1,jj,jk) ) 
     952               e3vw_0(ji,jj,jk) = MIN( e3w_0(ji,jj,jk), e3w_0(ji,jj+1,jk) ) 
     953            END DO 
     954         END DO 
     955      END DO 
     956      CALL lbc_lnk( e3u_0 , 'U', 1._wp )   ;   CALL lbc_lnk( e3uw_0, 'U', 1._wp )   ! lateral boundary conditions 
     957      CALL lbc_lnk( e3v_0 , 'V', 1._wp )   ;   CALL lbc_lnk( e3vw_0, 'V', 1._wp ) 
    958958      ! 
    959959      DO jk = 1, jpk                        ! set to z-scale factor if zero (i.e. along closed boundaries) 
    960          WHERE( e3u (:,:,jk) == 0._wp )   e3u (:,:,jk) = e3t_0(jk) 
    961          WHERE( e3v (:,:,jk) == 0._wp )   e3v (:,:,jk) = e3t_0(jk) 
    962          WHERE( e3uw(:,:,jk) == 0._wp )   e3uw(:,:,jk) = e3w_0(jk) 
    963          WHERE( e3vw(:,:,jk) == 0._wp )   e3vw(:,:,jk) = e3w_0(jk) 
     960         WHERE( e3u_0 (:,:,jk) == 0._wp )   e3u_0 (:,:,jk) = e3t_1d(jk) 
     961         WHERE( e3v_0 (:,:,jk) == 0._wp )   e3v_0 (:,:,jk) = e3t_1d(jk) 
     962         WHERE( e3uw_0(:,:,jk) == 0._wp )   e3uw_0(:,:,jk) = e3w_1d(jk) 
     963         WHERE( e3vw_0(:,:,jk) == 0._wp )   e3vw_0(:,:,jk) = e3w_1d(jk) 
    964964      END DO 
    965965       
    966966      ! Scale factor at F-point 
    967967      DO jk = 1, jpk                        ! initialisation to z-scale factors 
    968          e3f(:,:,jk) = e3t_0(jk) 
     968         e3f_0(:,:,jk) = e3t_1d(jk) 
    969969      END DO 
    970970      DO jk = 1, jpk                        ! Computed as the minimum of neighbooring V-scale factors 
    971971         DO jj = 1, jpjm1 
    972972            DO ji = 1, fs_jpim1   ! vector opt. 
    973                e3f(ji,jj,jk) = MIN( e3v(ji,jj,jk), e3v(ji+1,jj,jk) ) 
    974             END DO 
    975          END DO 
    976       END DO 
    977       CALL lbc_lnk( e3f, 'F', 1._wp )       ! Lateral boundary conditions 
     973               e3f_0(ji,jj,jk) = MIN( e3v_0(ji,jj,jk), e3v_0(ji+1,jj,jk) ) 
     974            END DO 
     975         END DO 
     976      END DO 
     977      CALL lbc_lnk( e3f_0, 'F', 1._wp )       ! Lateral boundary conditions 
    978978      ! 
    979979      DO jk = 1, jpk                        ! set to z-scale factor if zero (i.e. along closed boundaries) 
    980          WHERE( e3f(:,:,jk) == 0._wp )   e3f(:,:,jk) = e3t_0(jk) 
     980         WHERE( e3f_0(:,:,jk) == 0._wp )   e3f_0(:,:,jk) = e3t_1d(jk) 
    981981      END DO 
    982982!!gm  bug ? :  must be a do loop with mj0,mj1 
    983983      !  
    984       e3t(:,mj0(1),:) = e3t(:,mj0(2),:)     ! we duplicate factor scales for jj = 1 and jj = 2 
    985       e3w(:,mj0(1),:) = e3w(:,mj0(2),:)  
    986       e3u(:,mj0(1),:) = e3u(:,mj0(2),:)  
    987       e3v(:,mj0(1),:) = e3v(:,mj0(2),:)  
    988       e3f(:,mj0(1),:) = e3f(:,mj0(2),:)  
     984      e3t_0(:,mj0(1),:) = e3t_0(:,mj0(2),:)     ! we duplicate factor scales for jj = 1 and jj = 2 
     985      e3w_0(:,mj0(1),:) = e3w_0(:,mj0(2),:)  
     986      e3u_0(:,mj0(1),:) = e3u_0(:,mj0(2),:)  
     987      e3v_0(:,mj0(1),:) = e3v_0(:,mj0(2),:)  
     988      e3f_0(:,mj0(1),:) = e3f_0(:,mj0(2),:)  
    989989 
    990990      ! Control of the sign 
    991       IF( MINVAL( e3t  (:,:,:) ) <= 0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   e3t  <= 0' ) 
    992       IF( MINVAL( e3w  (:,:,:) ) <= 0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   e3w  <= 0' ) 
    993       IF( MINVAL( gdept(:,:,:) ) <  0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   gdepw <  0' ) 
    994       IF( MINVAL( gdepw(:,:,:) ) <  0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   gdepw <  0' ) 
     991      IF( MINVAL( e3t_0  (:,:,:) ) <= 0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   e3t_0 <= 0' ) 
     992      IF( MINVAL( e3w_0  (:,:,:) ) <= 0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   e3w_0 <= 0' ) 
     993      IF( MINVAL( gdept_0(:,:,:) ) <  0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   gdept_0 <  0' ) 
     994      IF( MINVAL( gdepw_0(:,:,:) ) <  0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   gdepw_0 <  0' ) 
    995995      
    996       ! Compute gdep3w (vertical sum of e3w) 
    997       gdep3w(:,:,1) = 0.5_wp * e3w(:,:,1) 
     996      ! Compute gdep3w_0 (vertical sum of e3w) 
     997      gdep3w_0(:,:,1) = 0.5_wp * e3w_0(:,:,1) 
    998998      DO jk = 2, jpk 
    999          gdep3w(:,:,jk) = gdep3w(:,:,jk-1) + e3w(:,:,jk)  
     999         gdep3w_0(:,:,jk) = gdep3w_0(:,:,jk-1) + e3w_0(:,:,jk)  
    10001000      END DO 
    10011001         
     
    10061006            DO ji = 1, jpi 
    10071007               ik = MAX( mbathy(ji,jj), 1 ) 
    1008                zprt(ji,jj,1) = e3t   (ji,jj,ik) 
    1009                zprt(ji,jj,2) = e3w   (ji,jj,ik) 
    1010                zprt(ji,jj,3) = e3u   (ji,jj,ik) 
    1011                zprt(ji,jj,4) = e3v   (ji,jj,ik) 
    1012                zprt(ji,jj,5) = e3f   (ji,jj,ik) 
    1013                zprt(ji,jj,6) = gdep3w(ji,jj,ik) 
     1008               zprt(ji,jj,1) = e3t_0   (ji,jj,ik) 
     1009               zprt(ji,jj,2) = e3w_0   (ji,jj,ik) 
     1010               zprt(ji,jj,3) = e3u_0   (ji,jj,ik) 
     1011               zprt(ji,jj,4) = e3v_0   (ji,jj,ik) 
     1012               zprt(ji,jj,5) = e3f_0   (ji,jj,ik) 
     1013               zprt(ji,jj,6) = gdep3w_0(ji,jj,ik) 
    10141014            END DO 
    10151015         END DO 
     
    10251025         WRITE(numout,*) 'domzgr e3f(mbathy)'      ;   CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
    10261026         WRITE(numout,*) 
    1027          WRITE(numout,*) 'domzgr gdep3w(mbathy)'  ;   CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
     1027         WRITE(numout,*) 'domzgr gdep3w_0(mbathy)' ;   CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
    10281028      ENDIF   
    10291029      ! 
     
    13921392                  zcoeft = ( REAL(jk,wp) - 0.5_wp ) / REAL(jpkm1,wp) 
    13931393                  zcoefw = ( REAL(jk,wp) - 1.0_wp ) / REAL(jpkm1,wp) 
    1394                   gdept (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigt3(ji,jj,jk)+rn_hc*zcoeft ) 
    1395                   gdepw (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigw3(ji,jj,jk)+rn_hc*zcoefw ) 
    1396                   gdep3w(ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsi3w3(ji,jj,jk)+rn_hc*zcoeft ) 
     1394                  gdept_0 (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigt3(ji,jj,jk)+rn_hc*zcoeft ) 
     1395                  gdepw_0 (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigw3(ji,jj,jk)+rn_hc*zcoefw ) 
     1396                  gdep3w_0(ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsi3w3(ji,jj,jk)+rn_hc*zcoeft ) 
    13971397               END DO 
    13981398               ! 
     
    14151415                     &              / ( hbatt(ji,jj)+hbatt(ji,jj+1) ) 
    14161416                  ! 
    1417                   e3t(ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigt3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
    1418                   e3u(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigtu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
    1419                   e3v(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigtv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
    1420                   e3f(ji,jj,jk) = ( (hbatf(ji,jj)-rn_hc)*esigtf3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
     1417                  e3t_0(ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigt3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
     1418                  e3u_0(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigtu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
     1419                  e3v_0(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigtv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
     1420                  e3f_0(ji,jj,jk) = ( (hbatf(ji,jj)-rn_hc)*esigtf3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
    14211421                  ! 
    1422                   e3w (ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigw3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
    1423                   e3uw(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigwu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
    1424                   e3vw(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigwv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
     1422                  e3w_0 (ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigw3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
     1423                  e3uw_0(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigwu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
     1424                  e3vw_0(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigwv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
    14251425               END DO 
    14261426            END DO 
    14271427         END DO 
    14281428 
    1429          CALL lbc_lnk( e3t , 'T', 1._wp ) 
    1430          CALL lbc_lnk( e3u , 'U', 1._wp ) 
    1431          CALL lbc_lnk( e3v , 'V', 1._wp ) 
    1432          CALL lbc_lnk( e3f , 'F', 1._wp ) 
    1433          CALL lbc_lnk( e3w , 'W', 1._wp ) 
    1434          CALL lbc_lnk( e3uw, 'U', 1._wp ) 
    1435          CALL lbc_lnk( e3vw, 'V', 1._wp ) 
     1429         CALL lbc_lnk( e3t_0 , 'T', 1._wp ) 
     1430         CALL lbc_lnk( e3u_0 , 'U', 1._wp ) 
     1431         CALL lbc_lnk( e3v_0 , 'V', 1._wp ) 
     1432         CALL lbc_lnk( e3f_0 , 'F', 1._wp ) 
     1433         CALL lbc_lnk( e3w_0 , 'W', 1._wp ) 
     1434         CALL lbc_lnk( e3uw_0, 'U', 1._wp ) 
     1435         CALL lbc_lnk( e3vw_0, 'V', 1._wp ) 
    14361436 
    14371437         ! 
     
    14701470            zcoeft = ( REAL(jk,wp) - 0.5_wp ) / REAL(jpkm1,wp) 
    14711471            zcoefw = ( REAL(jk,wp) - 1.0_wp ) / REAL(jpkm1,wp) 
    1472             gdept (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigt(jk) + hift(:,:)*zcoeft ) 
    1473             gdepw (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigw(jk) + hift(:,:)*zcoefw ) 
    1474             gdep3w(:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsi3w(jk) + hift(:,:)*zcoeft ) 
     1472            gdept_0 (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigt(jk) + hift(:,:)*zcoeft ) 
     1473            gdepw_0 (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigw(jk) + hift(:,:)*zcoefw ) 
     1474            gdep3w_0(:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsi3w(jk) + hift(:,:)*zcoeft ) 
    14751475         END DO 
    14761476!!gm: e3uw, e3vw can be suppressed  (modif in dynzdf, dynzdf_iso, zdfbfr) (save 2 3D arrays) 
     
    14781478            DO ji = 1, jpi 
    14791479               DO jk = 1, jpk 
    1480                  e3t(ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigt(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 
    1481                  e3u(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigt(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 
    1482                  e3v(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigt(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 
    1483                  e3f(ji,jj,jk) = ( (hbatf(ji,jj)-hiff(ji,jj))*esigt(jk) + hiff(ji,jj)/REAL(jpkm1,wp) ) 
     1480                 e3t_0(ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigt(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 
     1481                 e3u_0(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigt(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 
     1482                 e3v_0(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigt(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 
     1483                 e3f_0(ji,jj,jk) = ( (hbatf(ji,jj)-hiff(ji,jj))*esigt(jk) + hiff(ji,jj)/REAL(jpkm1,wp) ) 
    14841484                 ! 
    1485                  e3w (ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigw(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 
    1486                  e3uw(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigw(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 
    1487                  e3vw(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigw(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 
     1485                 e3w_0 (ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigw(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 
     1486                 e3uw_0(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigw(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 
     1487                 e3vw_0(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigw(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 
    14881488               END DO 
    14891489            END DO 
     
    14921492      ENDIF ! ln_s_sigma 
    14931493 
    1494  
    1495       ! 
    1496 !!    H. Liu, POL. April 2009. Added for passing the scale check for the new released vvl code. 
    1497  
    1498       fsdept(:,:,:) = gdept (:,:,:) 
    1499       fsdepw(:,:,:) = gdepw (:,:,:) 
    1500       fsde3w(:,:,:) = gdep3w(:,:,:) 
    1501       fse3t (:,:,:) = e3t   (:,:,:) 
    1502       fse3u (:,:,:) = e3u   (:,:,:) 
    1503       fse3v (:,:,:) = e3v   (:,:,:) 
    1504       fse3f (:,:,:) = e3f   (:,:,:) 
    1505       fse3w (:,:,:) = e3w   (:,:,:) 
    1506       fse3uw(:,:,:) = e3uw  (:,:,:) 
    1507       fse3vw(:,:,:) = e3vw  (:,:,:) 
    1508 !! 
    15091494      ! HYBRID :  
    15101495      DO jj = 1, jpj 
    15111496         DO ji = 1, jpi 
    15121497            DO jk = 1, jpkm1 
    1513                IF( scobot(ji,jj) >= fsdept(ji,jj,jk) )   mbathy(ji,jj) = MAX( 2, jk ) 
    1514                IF( scobot(ji,jj) == 0._wp            )   mbathy(ji,jj) = 0 
     1498               IF( scobot(ji,jj) >= gdept_0(ji,jj,jk) )   mbathy(ji,jj) = MAX( 2, jk ) 
     1499               IF( scobot(ji,jj) == 0._wp             )   mbathy(ji,jj) = 0 
    15151500            END DO 
    15161501         END DO 
     
    15281513      ENDIF 
    15291514      IF( nprint == 1  .AND. lwp )   THEN         ! min max values over the local domain 
    1530          WRITE(numout,*) ' MIN val mbathy  ', MINVAL( mbathy(:,:)   ), ' MAX ', MAXVAL( mbathy(:,:) ) 
    1531          WRITE(numout,*) ' MIN val depth t ', MINVAL( fsdept(:,:,:) ),   & 
    1532             &                          ' w ', MINVAL( fsdepw(:,:,:) ), '3w '  , MINVAL( fsde3w(:,:,:) ) 
    1533          WRITE(numout,*) ' MIN val e3    t ', MINVAL( fse3t (:,:,:) ), ' f '  , MINVAL( fse3f (:,:,:) ),   & 
    1534             &                          ' u ', MINVAL( fse3u (:,:,:) ), ' u '  , MINVAL( fse3v (:,:,:) ),   & 
    1535             &                          ' uw', MINVAL( fse3uw(:,:,:) ), ' vw'  , MINVAL( fse3vw(:,:,:) ),   & 
    1536             &                          ' w ', MINVAL( fse3w (:,:,:) ) 
    1537  
    1538          WRITE(numout,*) ' MAX val depth t ', MAXVAL( fsdept(:,:,:) ),   & 
    1539             &                          ' w ', MAXVAL( fsdepw(:,:,:) ), '3w '  , MAXVAL( fsde3w(:,:,:) ) 
    1540          WRITE(numout,*) ' MAX val e3    t ', MAXVAL( fse3t (:,:,:) ), ' f '  , MAXVAL( fse3f (:,:,:) ),   & 
    1541             &                          ' u ', MAXVAL( fse3u (:,:,:) ), ' u '  , MAXVAL( fse3v (:,:,:) ),   & 
    1542             &                          ' uw', MAXVAL( fse3uw(:,:,:) ), ' vw'  , MAXVAL( fse3vw(:,:,:) ),   & 
    1543             &                          ' w ', MAXVAL( fse3w (:,:,:) ) 
     1515         WRITE(numout,*) ' MIN val mbathy  ', MINVAL( mbathy(:,:)    ), ' MAX ', MAXVAL( mbathy(:,:) ) 
     1516         WRITE(numout,*) ' MIN val depth t ', MINVAL( gdept_0(:,:,:) ),   & 
     1517            &                          ' w ', MINVAL( gdepw_0(:,:,:) ), '3w '  , MINVAL( gdep3w_0(:,:,:) ) 
     1518         WRITE(numout,*) ' MIN val e3    t ', MINVAL( e3t_0  (:,:,:) ), ' f '  , MINVAL( e3f_0  (:,:,:) ),   & 
     1519            &                          ' u ', MINVAL( e3u_0  (:,:,:) ), ' u '  , MINVAL( e3v_0  (:,:,:) ),   & 
     1520            &                          ' uw', MINVAL( e3uw_0 (:,:,:) ), ' vw'  , MINVAL( e3vw_0  (:,:,:) ),   & 
     1521            &                          ' w ', MINVAL( e3w_0 (:,:,:) ) 
     1522 
     1523         WRITE(numout,*) ' MAX val depth t ', MAXVAL( gdept_0(:,:,:) ),   & 
     1524            &                          ' w ', MAXVAL( gdepw_0(:,:,:) ), '3w '  , MAXVAL( gdep3w_0(:,:,:) ) 
     1525         WRITE(numout,*) ' MAX val e3    t ', MAXVAL( e3t_0  (:,:,:) ), ' f '  , MAXVAL( e3f_0  (:,:,:) ),   & 
     1526            &                          ' u ', MAXVAL( e3u_0  (:,:,:) ), ' u '  , MAXVAL( e3v_0  (:,:,:) ),   & 
     1527            &                          ' uw', MAXVAL( e3uw_0 (:,:,:) ), ' vw'  , MAXVAL( e3vw_0  (:,:,:) ),   & 
     1528            &                          ' w ', MAXVAL( e3w_0 (:,:,:) ) 
    15441529      ENDIF 
    15451530      ! 
     
    15481533         WRITE(numout,*) ' domzgr: vertical coordinates : point (1,1,k) bathy = ', bathy(1,1), hbatt(1,1) 
    15491534         WRITE(numout,*) ' ~~~~~~  --------------------' 
    1550          WRITE(numout,"(9x,' level   gdept    gdepw    gde3w     e3t      e3w  ')") 
    1551          WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(1,1,jk), fsdepw(1,1,jk),     & 
    1552             &                                 fse3t (1,1,jk), fse3w (1,1,jk), jk=1,jpk ) 
     1535         WRITE(numout,"(9x,' level  gdept_0   gdepw_0   e3t_0    e3w_0')") 
     1536         WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(1,1,jk), gdepw_0(1,1,jk),     & 
     1537            &                                 e3t_0 (1,1,jk) , e3w_0 (1,1,jk) , jk=1,jpk ) 
    15531538         DO jj = mj0(20), mj1(20) 
    15541539            DO ji = mi0(20), mi1(20) 
     
    15561541               WRITE(numout,*) ' domzgr: vertical coordinates : point (20,20,k)   bathy = ', bathy(ji,jj), hbatt(ji,jj) 
    15571542               WRITE(numout,*) ' ~~~~~~  --------------------' 
    1558                WRITE(numout,"(9x,' level   gdept    gdepw    gde3w     e3t      e3w  ')") 
    1559                WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(ji,jj,jk), fsdepw(ji,jj,jk),     & 
    1560                   &                                 fse3t (ji,jj,jk), fse3w (ji,jj,jk), jk=1,jpk ) 
     1543               WRITE(numout,"(9x,' level  gdept_0   gdepw_0   e3t_0    e3w_0')") 
     1544               WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(ji,jj,jk), gdepw_0(ji,jj,jk),     & 
     1545                  &                                 e3t_0 (ji,jj,jk) , e3w_0 (ji,jj,jk) , jk=1,jpk ) 
    15611546            END DO 
    15621547         END DO 
     
    15661551               WRITE(numout,*) ' domzgr: vertical coordinates : point (100,74,k)   bathy = ', bathy(ji,jj), hbatt(ji,jj) 
    15671552               WRITE(numout,*) ' ~~~~~~  --------------------' 
    1568                WRITE(numout,"(9x,' level   gdept    gdepw    gde3w     e3t      e3w  ')") 
    1569                WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(ji,jj,jk), fsdepw(ji,jj,jk),     & 
    1570                   &                                 fse3t (ji,jj,jk), fse3w (ji,jj,jk), jk=1,jpk ) 
     1553               WRITE(numout,"(9x,' level  gdept_0   gdepw_0   e3t_0    e3w_0')") 
     1554               WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(ji,jj,jk), gdepw_0(ji,jj,jk),     & 
     1555                  &                                 e3t_0 (ji,jj,jk) , e3w_0 (ji,jj,jk) , jk=1,jpk ) 
    15711556            END DO 
    15721557         END DO 
     
    15771562         DO jj = 1, jpj 
    15781563            DO ji = 1, jpi 
    1579                IF( fse3w(ji,jj,jk) <= 0._wp .OR. fse3t(ji,jj,jk) <= 0._wp ) THEN 
    1580                   WRITE(ctmp1,*) 'zgr_sco :   e3w   or e3t  =< 0  at point (i,j,k)= ', ji, jj, jk 
     1564               IF( e3w_0(ji,jj,jk) <= 0._wp .OR. e3t_0(ji,jj,jk) <= 0._wp ) THEN 
     1565                  WRITE(ctmp1,*) 'zgr_sco :   e3w_0 or e3t_0 =< 0  at point (i,j,k)= ', ji, jj, jk 
    15811566                  CALL ctl_stop( ctmp1 ) 
    15821567               ENDIF 
    1583                IF( fsdepw(ji,jj,jk) < 0._wp .OR. fsdept(ji,jj,jk) < 0._wp ) THEN 
    1584                   WRITE(ctmp1,*) 'zgr_sco :   gdepw or gdept =< 0  at point (i,j,k)= ', ji, jj, jk 
     1568               IF( gdepw_0(ji,jj,jk) < 0._wp .OR. gdept_0(ji,jj,jk) < 0._wp ) THEN 
     1569                  WRITE(ctmp1,*) 'zgr_sco :   gdepw_0 or gdept_0≈s =< 0  at point (i,j,k)= ', ji, jj, jk 
    15851570                  CALL ctl_stop( ctmp1 ) 
    15861571               ENDIF 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr_substitute.h90

    r2905 r3839  
    88   !!            3.1  !  2009-02  (G. Madec, M. Leclair)  pure z* coordinate 
    99   !!---------------------------------------------------------------------- 
    10 ! reference for s- or zps-coordinate (3D no time dependency) 
    11 #   define  fsdept_0(i,j,k)  gdept(i,j,k) 
    12 #   define  fsdepw_0(i,j,k)  gdepw(i,j,k) 
    13 #   define  fsde3w_0(i,j,k)  gdep3w(i,j,k) 
    14 #   define  fse3t_0(i,j,k)   e3t(i,j,k) 
    15 #   define  fse3u_0(i,j,k)   e3u(i,j,k) 
    16 #   define  fse3v_0(i,j,k)   e3v(i,j,k) 
    17 #   define  fse3f_0(i,j,k)   e3f(i,j,k) 
    18 #   define  fse3w_0(i,j,k)   e3w(i,j,k) 
    19 #   define  fse3uw_0(i,j,k)  e3uw(i,j,k) 
    20 #   define  fse3vw_0(i,j,k)  e3vw(i,j,k) 
    2110 
    2211#if defined key_vvl 
     
    4433#   define  fse3v_a(i,j,k)   e3v_a(i,j,k) 
    4534 
    46 #   define  fse3t_m(i,j)   e3t_m(i,j) 
     35#   define  fse3t_m(i,j)     e3t_m(i,j) 
    4736 
    4837! This part should be removed one day ... 
    49 #   define  fsdept(i,j,k)  fsdept_n(i,j,k) 
    50 #   define  fsdepw(i,j,k)  fsdepw_n(i,j,k) 
    51 #   define  fsde3w(i,j,k)  fsde3w_n(i,j,k) 
    52 #   define  fse3t(i,j,k)   fse3t_n(i,j,k)  
    53 #   define  fse3u(i,j,k)   fse3u_n(i,j,k)  
    54 #   define  fse3v(i,j,k)   fse3v_n(i,j,k)  
    55 #   define  fse3f(i,j,k)   fse3f_n(i,j,k)  
    56 #   define  fse3w(i,j,k)   fse3w_n(i,j,k)  
    57 #   define  fse3uw(i,j,k)  fse3uw_n(i,j,k) 
    58 #   define  fse3vw(i,j,k)  fse3vw_n(i,j,k) 
     38! ... In that case all occurence of the above statement functions 
     39!     have to be replaced in the code by xxx_n 
     40#   define  fsdept(i,j,k)    gdept_n(i,j,k) 
     41#   define  fsdepw(i,j,k)    gdepw_n(i,j,k) 
     42#   define  fsde3w(i,j,k)    gdep3w_n(i,j,k) 
     43#   define  fse3t(i,j,k)     e3t_n(i,j,k)  
     44#   define  fse3u(i,j,k)     e3u_n(i,j,k)  
     45#   define  fse3v(i,j,k)     e3v_n(i,j,k)  
     46#   define  fse3f(i,j,k)     e3f_n(i,j,k)  
     47#   define  fse3w(i,j,k)     e3w_n(i,j,k)  
     48#   define  fse3uw(i,j,k)    e3uw_n(i,j,k) 
     49#   define  fse3vw(i,j,k)    e3vw_n(i,j,k) 
    5950 
    6051#else 
    6152! z- or s-coordinate (1D or 3D + no time dependency) use reference in all cases 
    62 #   define  fsdept(i,j,k)  fsdept_0(i,j,k) 
    63 #   define  fsdepw(i,j,k)  fsdepw_0(i,j,k) 
    64 #   define  fsde3w(i,j,k)  fsde3w_0(i,j,k) 
    65 #   define  fse3t(i,j,k)   fse3t_0(i,j,k) 
    66 #   define  fse3u(i,j,k)   fse3u_0(i,j,k) 
    67 #   define  fse3v(i,j,k)   fse3v_0(i,j,k) 
    68 #   define  fse3f(i,j,k)   fse3f_0(i,j,k) 
    69 #   define  fse3w(i,j,k)   fse3w_0(i,j,k) 
    70 #   define  fse3uw(i,j,k)  fse3uw_0(i,j,k) 
    71 #   define  fse3vw(i,j,k)  fse3vw_0(i,j,k) 
    7253 
    73 #   define  fse3t_b(i,j,k)   fse3t_0(i,j,k) 
    74 #   define  fse3u_b(i,j,k)   fse3u_0(i,j,k) 
    75 #   define  fse3v_b(i,j,k)   fse3v_0(i,j,k) 
    76 #   define  fse3uw_b(i,j,k)  fse3uw_0(i,j,k) 
    77 #   define  fse3vw_b(i,j,k)  fse3vw_0(i,j,k) 
     54#   define  fse3t_b(i,j,k)   e3t_0(i,j,k) 
     55#   define  fse3u_b(i,j,k)   e3u_0(i,j,k) 
     56#   define  fse3v_b(i,j,k)   e3v_0(i,j,k) 
     57#   define  fse3uw_b(i,j,k)  e3uw_0(i,j,k) 
     58#   define  fse3vw_b(i,j,k)  e3vw_0(i,j,k) 
    7859 
    79 #   define  fsdept_n(i,j,k)  fsdept_0(i,j,k) 
    80 #   define  fsdepw_n(i,j,k)  fsdepw_0(i,j,k) 
    81 #   define  fsde3w_n(i,j,k)  fsde3w_0(i,j,k) 
    82 #   define  fse3t_n(i,j,k)   fse3t_0(i,j,k) 
    83 #   define  fse3u_n(i,j,k)   fse3u_0(i,j,k) 
    84 #   define  fse3v_n(i,j,k)   fse3v_0(i,j,k) 
    85 #   define  fse3f_n(i,j,k)   fse3f_0(i,j,k) 
    86 #   define  fse3w_n(i,j,k)   fse3w_0(i,j,k) 
    87 #   define  fse3uw_n(i,j,k)  fse3uw_0(i,j,k) 
    88 #   define  fse3vw_n(i,j,k)  fse3vw_0(i,j,k) 
     60#   define  fsdept_n(i,j,k)  gdept_0(i,j,k) 
     61#   define  fsdepw_n(i,j,k)  gdepw_0(i,j,k) 
     62#   define  fsde3w_n(i,j,k)  gdep3w_0(i,j,k) 
     63#   define  fse3t_n(i,j,k)   e3t_0(i,j,k) 
     64#   define  fse3u_n(i,j,k)   e3u_0(i,j,k) 
     65#   define  fse3v_n(i,j,k)   e3v_0(i,j,k) 
     66#   define  fse3f_n(i,j,k)   e3f_0(i,j,k) 
     67#   define  fse3w_n(i,j,k)   e3w_0(i,j,k) 
     68#   define  fse3uw_n(i,j,k)  e3uw_0(i,j,k) 
     69#   define  fse3vw_n(i,j,k)  e3vw_0(i,j,k) 
    8970 
    90 #   define  fse3t_m(i,j)     fse3t_0(i,j,1) 
     71#   define  fse3t_a(i,j,k)   e3t_0(i,j,k) 
     72#   define  fse3u_a(i,j,k)   e3u_0(i,j,k) 
     73#   define  fse3v_a(i,j,k)   e3v_0(i,j,k) 
    9174 
    92 #   define  fse3t_a(i,j,k)   fse3t_0(i,j,k) 
    93 #   define  fse3u_a(i,j,k)   fse3u_0(i,j,k) 
    94 #   define  fse3v_a(i,j,k)   fse3v_0(i,j,k) 
     75#   define  fse3t_m(i,j)     e3t_0(i,j,1) 
     76 
     77! This part should be removed one day ... 
     78! ... In that case all occurence of the above statement functions 
     79!     have to be replaced in the code by xxx_n 
     80#   define  fsdept(i,j,k)    gdept_0(i,j,k) 
     81#   define  fsdepw(i,j,k)    gdepw_0(i,j,k) 
     82#   define  fsde3w(i,j,k)    gdep3w_0(i,j,k) 
     83#   define  fse3t(i,j,k)     e3t_0(i,j,k) 
     84#   define  fse3u(i,j,k)     e3u_0(i,j,k) 
     85#   define  fse3v(i,j,k)     e3v_0(i,j,k) 
     86#   define  fse3f(i,j,k)     e3f_0(i,j,k) 
     87#   define  fse3w(i,j,k)     e3w_0(i,j,k) 
     88#   define  fse3uw(i,j,k)    e3uw_0(i,j,k) 
     89#   define  fse3vw(i,j,k)    e3vw_0(i,j,k) 
     90 
    9591#endif 
    9692   !!---------------------------------------------------------------------- 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90

    r2715 r3839  
    247247            IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 
    248248            ! 
    249             zh1 = gdept_0(  1  ) 
    250             zh2 = gdept_0(jpkm1) 
     249            zh1 = gdept_1d(  1  ) 
     250            zh2 = gdept_1d(jpkm1) 
    251251            ! 
    252252            zslope = ( zt1 - zt2 ) / ( zh1 - zh2 ) 
     
    428428         WRITE(numout,*) 
    429429         WRITE(numout,*) '              Initial temperature and salinity profiles:' 
    430          WRITE(numout, "(9x,' level   gdept_0   temperature   salinity   ')" ) 
    431          WRITE(numout, "(10x, i4, 3f10.2)" ) ( jk, gdept_0(jk), tn(2,2,jk), sn(2,2,jk), jk = 1, jpk ) 
     430         WRITE(numout, "(9x,' level   gdept_1d   temperature   salinity   ')" ) 
     431         WRITE(numout, "(10x, i4, 3f10.2)" ) ( jk, gdept_1d(jk), tn(2,2,jk), sn(2,2,jk), jk = 1, jpk ) 
    432432      ENDIF 
    433433 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DTA/dtasal.F90

    r2715 r3839  
    164164            DO ji = 1, jpi 
    165165               DO jk = 1, jpk 
    166                   zl=fsdept_0(ji,jj,jk) 
    167                   IF(zl < gdept_0(1)  ) zsaldta(jk) =  s_dta(ji,jj,1    )  
    168                   IF(zl > gdept_0(jpk)) zsaldta(jk) =  s_dta(ji,jj,jpkm1)  
     166                  zl=gdept_0(ji,jj,jk) 
     167                  IF(zl < gdept_1d(1)  ) zsaldta(jk) =  s_dta(ji,jj,1    )  
     168                  IF(zl > gdept_1d(jpk)) zsaldta(jk) =  s_dta(ji,jj,jpkm1)  
    169169                  DO jkk = 1, jpkm1 
    170                      IF((zl-gdept_0(jkk))*(zl-gdept_0(jkk+1)).le.0.0) THEN 
     170                     IF((zl-gdept_1d(jkk))*(zl-gdept_1d(jkk+1)).le.0.0) THEN 
    171171                          zsaldta(jk) = s_dta(ji,jj,jkk)                                 & 
    172                                      &           + (zl-gdept_0(jkk))/(gdept_0(jkk+1)-gdept_0(jkk))      & 
    173                                      &                              *(s_dta(ji,jj,jkk+1) - s_dta(ji,jj,jkk)) 
     172                                     &           + (zl-gdept_1d(jkk))/(gdept_1d(jkk+1)-gdept_1d(jkk))      & 
     173                                     &                               *(s_dta(ji,jj,jkk+1) - s_dta(ji,jj,jkk)) 
    174174                     ENDIF 
    175175                  END DO 
     
    197197                  ik = mbkt(ji,jj) 
    198198                  IF( ik > 1 ) THEN 
    199                      zl = ( gdept_0(ik) - fsdept_0(ji,jj,ik) ) / ( gdept_0(ik) - gdept_0(ik-1) ) 
     199                     zl = ( gdept_1d(ik) - gdept_0(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) ) 
    200200                     s_dta(ji,jj,ik) = (1.-zl) * s_dta(ji,jj,ik) + zl * s_dta(ji,jj,ik-1) 
    201201                  ENDIF 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DTA/dtatem.F90

    r2715 r3839  
    177177            DO ji = 1, jpi 
    178178               DO jk = 1, jpk 
    179                   zl=fsdept_0(ji,jj,jk) 
    180                   IF(zl < gdept_0(1))   ztemdta(jk) =  t_dta(ji,jj,1) 
    181                   IF(zl > gdept_0(jpk)) ztemdta(jk) =  t_dta(ji,jj,jpkm1)  
     179                  zl=gdept_0(ji,jj,jk) 
     180                  IF(zl < gdept_1d(1))   ztemdta(jk) =  t_dta(ji,jj,1) 
     181                  IF(zl > gdept_1d(jpk)) ztemdta(jk) =  t_dta(ji,jj,jpkm1)  
    182182                  DO jkk = 1, jpkm1 
    183                      IF((zl-gdept_0(jkk))*(zl-gdept_0(jkk+1)).le.0.0) THEN 
     183                     IF((zl-gdept_1d(jkk))*(zl-gdept_1d(jkk+1)).le.0.0) THEN 
    184184                        ztemdta(jk) = t_dta(ji,jj,jkk)                                 & 
    185                                   &    + (zl-gdept_0(jkk))/(gdept_0(jkk+1)-gdept_0(jkk))  & 
     185                                  &    + (zl-gdept_1d(jkk))/(gdept_1d(jkk+1)-gdept_1d(jkk))  & 
    186186                                  &    * (t_dta(ji,jj,jkk+1) - t_dta(ji,jj,jkk)) 
    187187                     ENDIF 
     
    210210                  ik = mbkt(ji,jj) 
    211211                  IF( ik > 1 ) THEN 
    212                      zl = ( gdept_0(ik) - fsdept_0(ji,jj,ik) ) / ( gdept_0(ik) - gdept_0(ik-1) ) 
     212                     zl = ( gdept_1d(ik) - gdept_0(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) ) 
    213213                     t_dta(ji,jj,ik) = (1.-zl) * t_dta(ji,jj,ik) + zl * t_dta(ji,jj,ik-1) 
    214214                  ENDIF 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90

    r2905 r3839  
    102102      REAL(wp) ::   zue3a, zue3n, zue3b, zuf    ! local scalars 
    103103      REAL(wp) ::   zve3a, zve3n, zve3b, zvf    !   -      - 
    104       REAL(wp) ::   zec                         !   -      - 
    105104      !!---------------------------------------------------------------------- 
    106105 
     
    235234            ! (used as a now filtered scale factor until the swap) 
    236235            ! ---------------------------------------------------- 
    237             DO jk = 1, jpkm1 
    238                fse3t_b(:,:,jk) = fse3t_n(:,:,jk)                                   & 
    239                   &              + atfp * (  fse3t_b(:,:,jk) + fse3t_a(:,:,jk)     & 
    240                   &                         - 2.e0 * fse3t_n(:,:,jk)            ) 
    241             ENDDO 
     236            fse3t_b(:,:,:) = fse3t_n(:,:,:) + atfp * ( fse3t_b(:,:,:) - 2.e0 * fse3t_n(:,:,:) + fse3t_a(:,:,:) ) 
    242237            ! Add volume filter correction: comatibility with tracer advection scheme 
    243238            ! => time filter + conservation correction (only at the first level) 
    244             zec = atfp * rdt / rau0 
    245             fse3t_b(:,:,1) = fse3t_b(:,:,1) - zec * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 
    246             ! swap of emp fields 
    247             emp_b(:,:) = emp(:,:) 
     239            fse3t_b(:,:,1) = fse3t_b(:,:,1) - atfp * rdt / rau0 * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 
    248240            ! 
    249241            IF( ln_dynadv_vec ) THEN 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90

    r2905 r3839  
    1212 
    1313   !!---------------------------------------------------------------------- 
    14    !!   ssh_wzv        : after ssh & now vertical velocity 
    15    !!   ssh_nxt        : filter ans swap the ssh arrays 
     14   !!   ssh_nxt        : after ssh 
     15   !!   ssh_swp        : filter ans swap the ssh arrays 
     16   !!   wzv            : compute now vertical velocity 
    1617   !!---------------------------------------------------------------------- 
    1718   USE oce             ! ocean dynamics and tracers variables 
     
    103104      zhdiv(:,:) = 0._wp 
    104105      DO jk = 1, jpkm1                                 ! Horizontal divergence of barotropic transports 
    105         zhdiv(:,:) = zhdiv(:,:) + fse3t(:,:,jk) * hdivn(:,:,jk) 
     106        zhdiv(:,:) = zhdiv(:,:) + fse3t_n(:,:,jk) * hdivn(:,:,jk) 
    106107      END DO 
    107108      !                                                ! Sea surface elevation time stepping 
     
    259260      !!---------------------------------------------------------------------- 
    260261      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    261       !! 
    262       REAL(wp)            ::   zec  ! temporary scalar 
    263262      !!---------------------------------------------------------------------- 
    264263 
     
    272271         sshn(:,:) = ssha(:,:)                           ! now <-- after  (before already = now) 
    273272      ELSE                                         !** Leap-Frog time-stepping: Asselin filter + swap 
    274          IF( lk_vvl ) THEN                               ! before <-- now filtered 
    275             zec = atfp * rdt / rau0 
    276             sshb  (:,:) = sshn  (:,:) + atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:) )   & 
    277                &                          - zec  * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 
    278          ELSE 
    279             sshb(:,:) = sshn(:,:) + atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:) ) 
    280          ENDIF 
     273         sshb(:,:) = sshn(:,:) + atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:) )     ! before <-- now filtered 
     274         IF( lk_vvl ) sshb(:,:) = sshb(:,:) - atfp * rdt / rau0 * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 
    281275         sshn(:,:) = ssha(:,:)                           ! now <-- after 
    282276      ENDIF 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90

    r2715 r3839  
    111111 
    112112      ! vertical grid definition 
    113       CALL event__set_vert_axis( "deptht", gdept_0 ) 
    114       CALL event__set_vert_axis( "depthu", gdept_0 ) 
    115       CALL event__set_vert_axis( "depthv", gdept_0 ) 
    116       CALL event__set_vert_axis( "depthw", gdepw_0 ) 
     113      CALL event__set_vert_axis( "deptht", gdept_1d ) 
     114      CALL event__set_vert_axis( "depthu", gdept_1d ) 
     115      CALL event__set_vert_axis( "depthv", gdept_1d ) 
     116      CALL event__set_vert_axis( "depthw", gdepw_1d ) 
    117117       
    118118      ! automatic definitions of some of the xml attributs 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/IOM/iom_ioipsl.F90

    r2715 r3839  
    406406               CALL flioputv( ioipslid, 'nav_lon'     , glamt(ix1:ix2, iy1:iy2) ) 
    407407               CALL flioputv( ioipslid, 'nav_lat'     , gphit(ix1:ix2, iy1:iy2) ) 
    408                CALL flioputv( ioipslid, 'nav_lev'     , gdept_0 ) 
     408               CALL flioputv( ioipslid, 'nav_lev'     , gdept_1d ) 
    409409               ! +++ WRONG VALUE: to be improved but not really useful... 
    410410               CALL flioputv( ioipslid, 'time_counter', kt ) 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/IOM/iom_nf90.F90

    r2715 r3839  
    528528               CALL iom_nf90_check(NF90_PUT_VAR( if90id, idmy, gphit(ix1:ix2, iy1:iy2) ), clinfo) 
    529529               CALL iom_nf90_check(NF90_INQ_VARID( if90id, 'nav_lev'     , idmy ), clinfo) 
    530                CALL iom_nf90_check(NF90_PUT_VAR( if90id, idmy, gdept_0                 ), clinfo) 
     530               CALL iom_nf90_check(NF90_PUT_VAR( if90id, idmy, gdept_1d                ), clinfo) 
    531531               ! +++ WRONG VALUE: to be improved but not really useful... 
    532532               CALL iom_nf90_check(NF90_INQ_VARID( if90id, 'time_counter', idmy ), clinfo) 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn.F90

    r2715 r3839  
    172172      !!---------------------------------------------------------------------- 
    173173 
    174       zm00 = TANH( ( pdam - gdept_0(1    ) ) / pwam ) 
    175       zm01 = TANH( ( pdam - gdept_0(jpkm1) ) / pwam ) 
     174      zm00 = TANH( ( pdam - gdept_1d(1    ) ) / pwam ) 
     175      zm01 = TANH( ( pdam - gdept_1d(jpkm1) ) / pwam ) 
    176176      zmhs = zm00 / zm01 
    177177      zmhb = ( 1.e0 - pbot ) / ( 1.e0 - zmhs ) / zm01 
     
    213213      !!---------------------------------------------------------------------- 
    214214 
    215       zm00 = TANH( ( pdam - gdept_0(1    ) ) / pwam ) 
    216       zm01 = TANH( ( pdam - gdept_0(jpkm1) ) / pwam ) 
     215      zm00 = TANH( ( pdam - gdept_1d(1    ) ) / pwam ) 
     216      zm01 = TANH( ( pdam - gdept_1d(jpkm1) ) / pwam ) 
    217217      zmhs = zm00 / zm01 
    218218      zmhb = ( 1.e0 - pbot ) / ( 1.e0 - zmhs ) / zm01 
     
    255255      !!---------------------------------------------------------------------- 
    256256 
    257       zm00 = TANH( ( pdam - gdept_0(1    ) ) / pwam )    
    258       zm01 = TANH( ( pdam - gdept_0(jpkm1) ) / pwam ) 
     257      zm00 = TANH( ( pdam - gdept_1d(1    ) ) / pwam )    
     258      zm01 = TANH( ( pdam - gdept_1d(jpkm1) ) / pwam ) 
    259259      zmhs = zm00 / zm01 
    260260      zmhb = ( 1.e0 - pbot ) / ( 1.e0 - zmhs ) / zm01 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_c3d.h90

    r2715 r3839  
    390390 
    391391      DO jk=1, jpk 
    392          zcoef(jk) = 1.0_wp + NINT(9.0_wp*(gdept_0(jk)-800.0_wp)/(3000.0_wp-800.0_wp)) 
     392         zcoef(jk) = 1.0_wp + NINT(9.0_wp*(gdept_1d(jk)-800.0_wp)/(3000.0_wp-800.0_wp)) 
    393393         zcoef(jk) = MIN(10.0_wp, MAX(1.0_wp, zcoef(jk))) 
    394394         IF(lwp) WRITE(numout,'(4x,i3,6x,f7.3)') jk,zcoef(jk) 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90

    r2733 r3839  
    10061006      USE dom_oce, ONLY : &             ! Ocean space and time domain variables 
    10071007         & rdt,           &                        
    1008          & gdept_0,       &              
     1008         & gdept_1d,      &              
    10091009         & tmask, umask, vmask                             
    10101010      USE phycst, ONLY : &              ! Physical constants 
     
    10681068               CALL obs_pro_opt( prodatqc(jprofset),                          & 
    10691069                  &              kstp, jpi, jpj, jpk, nit000, idaystp, tn, sn,& 
    1070                   &              gdept_0, tmask, n1dint, n2dint,              & 
     1070                  &              gdept_1d, tmask, n1dint, n2dint,             & 
    10711071                  &              kdailyavtypes = endailyavtypes ) 
    10721072            ELSE 
    10731073               CALL obs_pro_opt( prodatqc(jprofset),                          & 
    10741074                  &              kstp, jpi, jpj, jpk, nit000, idaystp, tn, sn,& 
    1075                   &              gdept_0, tmask, n1dint, n2dint               ) 
     1075                  &              gdept_1d, tmask, n1dint, n2dint              ) 
    10761076            ENDIF 
    10771077         END DO 
     
    11161116           ! zonal component of velocity 
    11171117           CALL obs_vel_opt( veldatqc(jveloset), kstp, jpi, jpj, jpk, & 
    1118               &              nit000, idaystp, un, vn, gdept_0, umask, vmask, & 
     1118              &              nit000, idaystp, un, vn, gdept_1d, umask, vmask, & 
    11191119                             n1dint, n2dint, ld_velav(jveloset) ) 
    11201120         END DO 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/OBS/obs_prep.F90

    r2715 r3839  
    7373      USE par_oce             ! Ocean parameters 
    7474      USE dom_oce, ONLY : &   ! Geographical information 
    75          & glamt,   & 
    76          & gphit,   & 
    77          & gdept_0, & 
    78          & tmask,   & 
     75         & glamt,    & 
     76         & gphit,    & 
     77         & gdept_1d, & 
     78         & tmask,    & 
    7979         & nproc 
    8080      !! * Arguments 
     
    193193         &                 profdata%var(1)%vdep,                        & 
    194194         &                 glamt,                 gphit,                & 
    195          &                 gdept_0,               tmask,                & 
     195         &                 gdept_1d,              tmask,                & 
    196196         &                 profdata%nqc,          profdata%var(1)%nvqc, & 
    197197         &                 iosdtobs,              ilantobs,             & 
     
    213213         &                 profdata%var(2)%vdep,                        & 
    214214         &                 glamt,                 gphit,                & 
    215          &                 gdept_0,               tmask,                & 
     215         &                 gdept_1d,              tmask,                & 
    216216         &                 profdata%nqc,          profdata%var(2)%nvqc, & 
    217217         &                 iosdsobs,              ilansobs,             & 
     
    916916         & glamt, glamu, glamv,    & 
    917917         & gphit, gphiu, gphiv,    & 
    918          & gdept_0, & 
     918         & gdept_1d, & 
    919919         & tmask, umask, vmask,  & 
    920920         & nproc 
     
    10321032         &                 profdata%var(1)%vdep,                        & 
    10331033         &                 glamu,                 gphiu,                & 
    1034          &                 gdept_0,               umask,                & 
     1034         &                 gdept_1d,              umask,                & 
    10351035         &                 profdata%nqc,          profdata%var(1)%nvqc, & 
    10361036         &                 iosduobs,              ilanuobs,             & 
     
    10521052         &                 profdata%var(2)%vdep,                        & 
    10531053         &                 glamv,                 gphiv,                & 
    1054          &                 gdept_0,               vmask,                & 
     1054         &                 gdept_1d,              vmask,                & 
    10551055         &                 profdata%nqc,          profdata%var(2)%nvqc, & 
    10561056         &                 iosdvobs,              ilanvobs,             & 
     
    17091709      !! * Modules used 
    17101710      USE dom_oce, ONLY : &       ! Geographical information 
    1711          & gdepw_0                         
     1711         & gdepw_1d                         
    17121712 
    17131713      !! * Arguments 
     
    18261826               &  .OR. ( pobsphi(jobs) >   90.         )       & 
    18271827               &  .OR. ( pobsdep(jobsp) < 0.0          )       & 
    1828                &  .OR. ( pobsdep(jobsp) > gdepw_0(kpk) ) ) THEN 
     1828               &  .OR. ( pobsdep(jobsp) > gdepw_1d(kpk) ) ) THEN 
    18291829               kobsqc(jobsp) = kobsqc(jobsp) + 11 
    18301830               kosdobs = kosdobs + 1 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_prof.F90

    r2715 r3839  
    793793      !----------------------------------------------------------------------- 
    794794      IF ( ldt3d ) THEN 
    795          CALL obs_level_search( jpk, gdept_0, & 
     795         CALL obs_level_search( jpk, gdept_1d, & 
    796796            & profdata%nvprot(1), profdata%var(1)%vdep, & 
    797797            & profdata%var(1)%mvk ) 
    798798      ENDIF 
    799799      IF ( lds3d ) THEN 
    800          CALL obs_level_search( jpk, gdept_0, & 
     800         CALL obs_level_search( jpk, gdept_1d, & 
    801801            & profdata%nvprot(2), profdata%var(2)%vdep, & 
    802802            & profdata%var(2)%mvk ) 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_vel.F90

    r2715 r3839  
    614614      ! Model level search 
    615615      !----------------------------------------------------------------------- 
    616       CALL obs_level_search( jpk, gdept_0, & 
     616      CALL obs_level_search( jpk, gdept_1d, & 
    617617         & profdata%nvprot(1), profdata%var(1)%vdep, & 
    618618         & profdata%var(1)%mvk ) 
    619       CALL obs_level_search( jpk, gdept_0, & 
     619      CALL obs_level_search( jpk, gdept_1d, & 
    620620         & profdata%nvprot(2), profdata%var(2)%vdep, & 
    621621         & profdata%var(2)%mvk ) 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90

    r2715 r3839  
    393393         IF( rn_hrnf > 0._wp ) THEN 
    394394            nkrnf = 2 
    395             DO WHILE( nkrnf /= jpkm1 .AND. gdepw_0(nkrnf+1) < rn_hrnf )   ;   nkrnf = nkrnf + 1   ;   END DO 
     395            DO WHILE( nkrnf /= jpkm1 .AND. gdepw_1d(nkrnf+1) < rn_hrnf )   ;   nkrnf = nkrnf + 1   ;   END DO 
    396396            IF( ln_sco )   & 
    397397               CALL ctl_warn( 'sbc_rnf: number of levels over which Kz is increased is computed for zco...' ) 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90

    r2715 r3839  
    406406            ztb (ji,jj) = tsb(ji,jj,ik,jp_tem) * tmask(ji,jj,1)      ! bottom before T and S 
    407407            zsb (ji,jj) = tsb(ji,jj,ik,jp_sal) * tmask(ji,jj,1) 
    408             zdep(ji,jj) = fsdept_0(ji,jj,ik)        ! bottom T-level reference depth 
     408            zdep(ji,jj) = gdept_0(ji,jj,ik)         ! bottom T-level reference depth 
    409409            ! 
    410410            zub(ji,jj) = un(ji,jj,mbku(ji,jj))      ! bottom velocity 
     
    594594      DO jj = 1, jpjm1                 
    595595         DO ji = 1, jpim1 
    596             mgrhu(ji,jj) = INT(  SIGN( 1.e0, fsdept_0(ji+1,jj,mbkt(ji+1,jj)) - fsdept_0(ji,jj,mbkt(ji,jj)) )  ) 
    597             mgrhv(ji,jj) = INT(  SIGN( 1.e0, fsdept_0(ji,jj+1,mbkt(ji,jj+1)) - fsdept_0(ji,jj,mbkt(ji,jj)) )  ) 
     596            mgrhu(ji,jj) = INT(  SIGN( 1.e0, gdept_0(ji+1,jj,mbkt(ji+1,jj)) - gdept_0(ji,jj,mbkt(ji,jj)) )  ) 
     597            mgrhv(ji,jj) = INT(  SIGN( 1.e0, gdept_0(ji,jj+1,mbkt(ji,jj+1)) - gdept_0(ji,jj,mbkt(ji,jj)) )  ) 
    598598         END DO 
    599599      END DO 
     
    601601      DO jj = 1, jpjm1              !* bbl thickness at u- (v-) point  
    602602         DO ji = 1, jpim1                 ! minimum of top & bottom e3u_0 (e3v_0) 
    603             e3u_bbl_0(ji,jj) = MIN( fse3u_0(ji,jj,mbkt(ji+1,jj  )), fse3u_0(ji,jj,mbkt(ji,jj)) )   
    604             e3v_bbl_0(ji,jj) = MIN( fse3v_0(ji,jj,mbkt(ji  ,jj+1)), fse3v_0(ji,jj,mbkt(ji,jj)) )   
     603            e3u_bbl_0(ji,jj) = MIN( e3u_0(ji,jj,mbkt(ji+1,jj  )), e3u_0(ji,jj,mbkt(ji,jj)) )   
     604            e3v_bbl_0(ji,jj) = MIN( e3v_0(ji,jj,mbkt(ji  ,jj+1)), e3v_0(ji,jj,mbkt(ji,jj)) )   
    605605         END DO  
    606606      END DO 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90

    r2715 r3839  
    738738      clname = 'dist.coast' 
    739739      itime  = 0 
    740       CALL ymds2ju( 0     , 1      , 1     , 0._wp , zdate0 ) 
    741       CALL restini( 'NONE', jpi    , jpj   , glamt, gphit ,   & 
    742          &          jpk   , gdept_0, clname, itime, zdate0,   & 
    743          &          rdt   , icot                         ) 
     740      CALL ymds2ju( 0     , 1       , 1     , 0._wp , zdate0 ) 
     741      CALL restini( 'NONE', jpi     , jpj   , glamt, gphit ,   & 
     742         &          jpk   , gdept_1d, clname, itime, zdate0,   & 
     743         &          rdt   , icot                          ) 
    744744      CALL restput( icot, 'Tcoast', jpi, jpj, jpk, 0, pdct ) 
    745745      CALL restclo( icot ) 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90

    r2970 r3839  
    319319                     IF( ll_tra ) ztc_f  = ztc_f  - zfact1 * ( sbc_tsc(ji,jj,jn) - sbc_tsc_b(ji,jj,jn) )   ! only T and S 
    320320                  ENDIF 
    321                   IF( ll_traqsr .AND. jn == jp_tem .AND. jk <= nksr )   &     ! solar penetration (temperature only) 
    322                      &     ztc_f  = ztc_f  - zfact1 * ( qsr_hc(ji,jj,jk) - qsr_hc_b(ji,jj,jk) )  
    323  
     321                  IF( ll_traqsr .AND. jn == jp_tem .AND. jk <= nksr ) THEN    ! solar penetration (temperature only) 
     322                     ztc_f = ztc_f - zfact1 * ( qsr_hc(ji,jj,jk) - qsr_hc_b(ji,jj,jk) ) 
     323                  ENDIF 
    324324                   ze3t_f = 1.e0 / ze3t_f 
    325325                   ptb(ji,jj,jk,jn) = ztc_f * ze3t_f       ! ptb <-- ptn filtered 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90

    r2715 r3839  
    403403            ENDIF 
    404404 
    405             IF(lwp) WRITE(numout,*) '        level of light extinction = ', nksr, ' ref depth = ', gdepw_0(nksr+1), ' m' 
     405            IF(lwp) WRITE(numout,*) '        level of light extinction = ', nksr, ' ref depth = ', gdepw_1d(nksr+1), ' m' 
    406406            ! 
    407407            IF( nn_chldta == 1 ) THEN           !* Chl data : set sf_chl structure 
     
    444444!CDIR NOVERRCHK    
    445445                        DO ji = 1, jpi 
    446                            zc0 = ze0(ji,jj,jk-1) * EXP( - fse3t_0(ji,jj,jk-1) * xsi0r     ) 
    447                            zc1 = ze1(ji,jj,jk-1) * EXP( - fse3t_0(ji,jj,jk-1) * zekb(ji,jj) ) 
    448                            zc2 = ze2(ji,jj,jk-1) * EXP( - fse3t_0(ji,jj,jk-1) * zekg(ji,jj) ) 
    449                            zc3 = ze3(ji,jj,jk-1) * EXP( - fse3t_0(ji,jj,jk-1) * zekr(ji,jj) ) 
     446                           zc0 = ze0(ji,jj,jk-1) * EXP( - e3t_0(ji,jj,jk-1) * xsi0r     ) 
     447                           zc1 = ze1(ji,jj,jk-1) * EXP( - e3t_0(ji,jj,jk-1) * zekb(ji,jj) ) 
     448                           zc2 = ze2(ji,jj,jk-1) * EXP( - e3t_0(ji,jj,jk-1) * zekg(ji,jj) ) 
     449                           zc3 = ze3(ji,jj,jk-1) * EXP( - e3t_0(ji,jj,jk-1) * zekr(ji,jj) ) 
    450450                           ze0(ji,jj,jk) = zc0 
    451451                           ze1(ji,jj,jk) = zc1 
     
    473473            IF(lwp) THEN 
    474474               WRITE(numout,*) 
    475             IF(lwp) WRITE(numout,*) '        level of light extinction = ', nksr, ' ref depth = ', gdepw_0(nksr+1), ' m' 
     475            IF(lwp) WRITE(numout,*) '        level of light extinction = ', nksr, ' ref depth = ', gdepw_1d(nksr+1), ' m' 
    476476            ENDIF 
    477477            ! 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfini.F90

    r2715 r3839  
    148148      ELSE                                  ! Background profile of avt (fit a theoretical/observational profile (Krauss 1990) 
    149149         avmb(:) = rn_avm0 
    150          avtb(:) = rn_avt0 + ( 3.e-4_wp - 2._wp * rn_avt0 ) * 1.e-4_wp * gdepw_0(:)   ! m2/s 
     150         avtb(:) = rn_avt0 + ( 3.e-4_wp - 2._wp * rn_avt0 ) * 1.e-4_wp * gdepw_1d(:)   ! m2/s 
    151151         IF(ln_sco .AND. lwp)   CALL ctl_warn( 'avtb profile not valid in sco' ) 
    152152      ENDIF 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90

    r2715 r3839  
    142142                IF( ln_dyninc ) THEN  
    143143                   CALL dyn_asm_inc( nit000 - 1 )    ! Dynamics 
    144                    IF ( ln_asmdin ) CALL ssh_wzv ( nit000 - 1 )      ! update vertical velocity  
     144                   IF ( ln_asmdin ) CALL wzv ( nit000 - 1 )      ! update vertical velocity  
    145145                ENDIF 
    146146                IF( ln_sshinc ) CALL ssh_asm_inc( nit000 - 1 )    ! SSH 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/step.F90

    r2996 r3839  
    146146      ! 
    147147      IF( lk_ldfslp ) THEN                            ! slope of lateral mixing 
    148                          CALL eos( tsb, rhd, fsdept_0(:,:,:) )            ! before in situ density 
     148                         CALL eos( tsb, rhd, gdept_0(:,:,:) )             ! before in situ density 
    149149         IF( ln_zps )    CALL zps_hde( kstp, jpts, tsb, gtsu, gtsv,  &    ! Partial steps: before horizontal gradient 
    150150            &                                      rhd, gru , grv  )      ! of t, s, rd at the last ocean level 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/step_oce.F90

    r2905 r3839  
    5656   USE bdydta           ! unstructured open boundary data  (bdy_dta routine) 
    5757 
    58    USE sshwzv           ! vertical velocity and ssh        (ssh_wzv routine) 
     58   USE sshwzv           ! vertical velocity and ssh        (ssh_nxt routine) 
     59   !                                                       (ssh_swp routine) 
     60   !                                                       (wzv     routine) 
    5961   USE domvvl           ! variable vertical scale factors  (dom_vvl_sf_nxt routine) 
    6062   !                                                       (dom_vvl_sf_swp routine) 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zopt.F90

    r2715 r3839  
    245245      nksrp = trc_oce_ext_lev( r_si2, 0.33e2 )     ! max level of light extinction (Blue Chl=0.01) 
    246246      ! 
    247       IF(lwp) WRITE(numout,*) '        level of light extinction = ', nksrp, ' ref depth = ', gdepw_0(nksrp+1), ' m' 
     247      IF(lwp) WRITE(numout,*) '        level of light extinction = ', nksrp, ' ref depth = ', gdepw_1d(nksrp+1), ' m' 
    248248      ! 
    249249                         etot (:,:,:) = 0._wp 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/TOP_SRC/SED/sed.F90

    r2528 r3839  
    1616      glamt    =>   glamt  ,  & !: longitude of t-point (degre) 
    1717      gphit    =>   gphit  ,  & !: latitude  of t-point (degre) 
    18       e3t_0    =>   e3t_0 ,  & !: reference depth of t-points (m) 
     18      e3t_1d   =>   e3t_1d ,  & !: reference depth of t-points (m) 
    1919      mbkt     =>   mbkt   ,  & !: vertical index of the bottom last T- ocean level 
    2020      tmask    =>   tmask  ,  & !: land/ocean mask at t-points 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/TOP_SRC/SED/sedini.F90

    r2715 r3839  
    135135         DO ji = 1, jpi 
    136136            ikt = mbkt(ji,jj)  
    137             IF( tmask(ji,jj,ikt) == 1 ) epkbot(ji,jj) = e3t_0(ikt) 
     137            IF( tmask(ji,jj,ikt) == 1 ) epkbot(ji,jj) = e3t_1d(ikt) 
    138138         ENDDO 
    139139      ENDDO 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/TOP_SRC/oce_trc.F90

    r2715 r3839  
    104104 
    105105   !* vertical mesh * 
    106    USE dom_oce , ONLY :   gdept_0    =>   gdept_0    !: reference depth of t-points (m) 
    107    USE dom_oce , ONLY :   e3t_0      =>   e3t_0      !: reference depth of t-points (m)   
    108    USE dom_oce , ONLY :   e3w_0      =>   e3w_0      !: reference depth of w-points (m) 
    109    USE dom_oce , ONLY :   gdepw_0    =>   gdepw_0    !: reference depth of w-points (m) 
    110 # if ! defined key_zco 
    111    USE dom_oce , ONLY :   gdep3w     =>  gdep3w      !: ??? 
    112    USE dom_oce , ONLY :   gdept      =>  gdept       !: depth of t-points (m) 
    113    USE dom_oce , ONLY :   gdepw      =>  gdepw       !: depth of t-points (m) 
    114    USE dom_oce , ONLY :   e3t        =>  e3t         !: vertical scale factors at t- 
    115    USE dom_oce , ONLY :   e3u        =>  e3u         !: vertical scale factors at u- 
    116    USE dom_oce , ONLY :   e3v        =>  e3v         !: vertical scale factors v- 
    117    USE dom_oce , ONLY :   e3w        =>  e3w         !: w-points (m) 
    118    USE dom_oce , ONLY :   e3f        =>  e3f         !: f-points (m) 
    119    USE dom_oce , ONLY :   e3uw       =>  e3uw        !: uw-points (m) 
    120    USE dom_oce , ONLY :   e3vw       =>  e3vw        !: vw-points (m) 
    121 # endif 
     106   USE dom_oce , ONLY :   gdept_1d   =>   gdept_1d   !: reference depth of t-points (m) 
     107   USE dom_oce , ONLY :   e3t_1d     =>   e3t_1d     !: reference depth of t-points (m)   
     108   USE dom_oce , ONLY :   e3w_1d     =>   e3w_1d     !: reference depth of w-points (m) 
     109   USE dom_oce , ONLY :   gdepw_1d   =>   gdepw_1d   !: reference depth of w-points (m) 
     110 
    122111   USE dom_oce , ONLY :   ln_zps     =>  ln_zps      !: partial steps flag 
    123112   USE dom_oce , ONLY :   ln_sco     =>  ln_sco      !: s-coordinate flag 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/TOP_SRC/trcdia.F90

    r2715 r3839  
    174174 
    175175         ! Vertical grid for tracer : gdept 
    176          CALL histvert( nit5, 'deptht', 'Vertical T levels', 'm', ipk, gdept_0, ndepit5) 
     176         CALL histvert( nit5, 'deptht', 'Vertical T levels', 'm', ipk, gdept_1d, ndepit5) 
    177177 
    178178         ! Index of ocean points in 3D and 2D (surface) 
     
    301301         ! Vertical grid for 2d and 3d arrays 
    302302 
    303          CALL histvert( nitd, 'deptht', 'Vertical T levels','m', ipk, gdept_0, ndepitd) 
     303         CALL histvert( nitd, 'deptht', 'Vertical T levels','m', ipk, gdept_1d, ndepitd) 
    304304 
    305305         ! Declare all the output fields as NETCDF variables 
     
    444444            &    iiter, zjulian, zdt, nhoritb, nitb , domain_id=nidom, snc4chunks=snc4set ) 
    445445         ! Vertical grid for biological trends 
    446          CALL histvert(nitb, 'deptht', 'Vertical T levels', 'm', ipk, gdept_0, ndepitb) 
     446         CALL histvert(nitb, 'deptht', 'Vertical T levels', 'm', ipk, gdept_1d, ndepitb) 
    447447 
    448448         ! Declare all the output fields as NETCDF variables 
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/TOP_SRC/trcdta.F90

    r2715 r3839  
    141141                           ik = mbkt(ji,jj) 
    142142                           IF( ik > 2 ) THEN 
    143                               zl = ( gdept_0(ik) - fsdept_0(ji,jj,ik) ) / ( gdept_0(ik) - gdept_0(ik-1) ) 
     143                              zl = ( gdept_1d(ik) - gdept_1d(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) ) 
    144144                              tracdta(ji,jj,ik,jn,jl) = (1.-zl) * tracdta(ji,jj,ik  ,jn,jl)    & 
    145145                                 &                    +     zl  * tracdta(ji,jj,ik-1,jn,jl) 
Note: See TracChangeset for help on using the changeset viewer.