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 4153 for branches/2013/dev_LOCEAN_2013/NEMOGCM – NEMO

Ignore:
Timestamp:
2013-11-05T13:25:45+01:00 (10 years ago)
Author:
cetlod
Message:

dev_LOCEAN_2013: merge in trunk changes between r3940 and r4028, see ticket #1169

Location:
branches/2013/dev_LOCEAN_2013/NEMOGCM
Files:
37 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/ARCH/arch-X64_CURIE.fcm

    r4148 r4153  
    2929#  - fcm variables are starting with a % (and not a $) 
    3030# 
    31 %NCDF_HOME           /usr/local/netcdf-4.2_hdf5 
    32 %HDF5_HOME           /usr/local/hdf5-1.8.8 
     31%NCDF_HOME           /usr/local/netcdf-4.2_hdf5_parallel 
     32%HDF5_HOME           /usr/local/hdf5-1.8.9_parallel 
    3333%XIOS_HOME           $WORKDIR/now/models/xios 
    3434%OASIS_HOME          $WORKDIR/now/models/oa3mct 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/CONFIG/AMM12/EXP00/iodef.xml

    r4148 r4153  
    128128      <axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" /> 
    129129      <axis id="nfloat" long_name="Float number"      unit="-"  /> 
     130      <axis id="icbcla" long_name="Iceberg class"     unit="-"  /> 
    130131   </axis_definition>  
    131132     
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/CONFIG/GYRE/EXP00/iodef.xml

    r4148 r4153  
    9191      <axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" /> 
    9292      <axis id="nfloat" long_name="Float number"      unit="-"  /> 
     93      <axis id="icbcla" long_name="Iceberg class"     unit="-"  /> 
    9394   </axis_definition>  
    9495     
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/CONFIG/GYRE_BFM/EXP00/iodef.xml

    r4148 r4153  
    6262      <axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" /> 
    6363      <axis id="nfloat" long_name="Float number"      unit="-"  /> 
     64      <axis id="icbcla" long_name="Iceberg class"     unit="-"  /> 
    6465   </axis_definition>  
    6566     
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/iodef.xml

    r4148 r4153  
    128128      <axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" /> 
    129129      <axis id="nfloat" long_name="Float number"      unit="-"  /> 
     130      <axis id="icbcla" long_name="Iceberg class"     unit="-"  /> 
    130131   </axis_definition>  
    131132     
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/iodef_ar5.xml

    r4148 r4153  
    248248      <axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" /> 
    249249      <axis id="nfloat" long_name="Float number"      unit="-"  /> 
     250      <axis id="icbcla" long_name="Iceberg class"     unit="-"  /> 
    250251   </axis_definition>  
    251252     
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/iodef_default.xml

    • Property svn:mime-type deleted
    • Property svn:keywords set to Id
    r4148 r4153  
    129129      <axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" /> 
    130130      <axis id="nfloat" long_name="Float number"      unit="-"  /> 
     131      <axis id="icbcla" long_name="Iceberg class"     unit="-"  /> 
    131132   </axis_definition>  
    132133     
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/iodef_demo.xml

    • Property svn:mime-type deleted
    • Property svn:keywords set to Id
    r4148 r4153  
    4444   <!-- mooring: automatic definition of the file name suffix based on id="0n180wT"  --> 
    4545   <!-- include a group of variables. see field_def.xml for mooring variables definition  --> 
    46    <file id="0n180wT" > 
    47      <field_group group_ref="mooring"/>   
     46   <file id="0n180wT"> 
     47     <field_group group_ref="mooring" domain_ref="0n180wT" />   
    4848   </file> 
    4949    
     
    5353     <field_group id="EqT" domain_ref="EqT" > 
    5454       <field field_ref="toce" name="votemper" axis_ref="deptht_myzoom"  /> 
     55       <field field_ref="sss" /> 
    5556     </field_group> 
    5657   </file> 
     
    8586      <axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" /> 
    8687      <axis id="nfloat" long_name="Float number"      unit="-"  /> 
     88      <axis id="icbcla" long_name="Iceberg class"     unit="-"  /> 
    8789   </axis_definition>  
    8890     
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/iodef_oldstyle.xml

    • Property svn:mime-type deleted
    • Property svn:keywords set to Id
    r4148 r4153  
    116116      <axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" /> 
    117117      <axis id="nfloat" long_name="Float number"      unit="-"  /> 
     118      <axis id="icbcla" long_name="Iceberg class"     unit="-"  /> 
    118119   </axis_definition>  
    119120     
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/iodef.xml

    r4152 r4153  
    125125      <axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" /> 
    126126      <axis id="nfloat" long_name="Float number"      unit="-"  /> 
     127      <axis id="icbcla" long_name="Iceberg class"     unit="-"  /> 
    127128   </axis_definition>  
    128129     
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/iodef.xml

    r4152 r4153  
    230230      <axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" /> 
    231231      <axis id="nfloat" long_name="Float number"      unit="-"  /> 
     232      <axis id="icbcla" long_name="Iceberg class"     unit="-"  /> 
    232233   </axis_definition>  
    233234     
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/iodef.xml

    r4152 r4153  
    8888   </file> 
    8989 
    90    <file id="file4" name_suffix="_ptrc_T" description="additional pisces diagnostics" > 
     90   <file id="file4" name_suffix="_diad_T" description="additional pisces diagnostics" > 
    9191          <field field_ref="PH"       /> 
    9292          <field field_ref="CO3"      /> 
     
    158158      <axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" /> 
    159159      <axis id="nfloat" long_name="Float number"      unit="-"  /> 
     160      <axis id="icbcla" long_name="Iceberg class"     unit="-"  /> 
    160161   </axis_definition>  
    161162     
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/CONFIG/ORCA2_SAS_LIM/EXP00/iodef.xml

    r4147 r4153  
    2121    --> 
    2222     
    23     <file_definition type="multiple_file" sync_freq="1d" min_digits="4"> 
     23    <file_definition type="multiple_file" name="@expname@_@freq@_@startdate@_@enddate@" sync_freq="1d" min_digits="4"> 
    2424     
    2525      <file_group id="1h" output_freq="1h"  output_level="10" enabled=".TRUE."/> <!-- 1h files --> 
     
    114114      <axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" /> 
    115115      <axis id="nfloat" long_name="Float number"      unit="-"  /> 
     116      <axis id="icbcla" long_name="Iceberg class"     unit="-"  /> 
    116117   </axis_definition>  
    117118     
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/CONFIG/SHARED/1_namelist_ref

    r4147 r4153  
    124124   rn_rdtmax   = 28800.          !  maximum time step on tracers (used if nn_acc=1) 
    125125   rn_rdth     =  800.           !  depth variation of tracer time step  (used if nn_acc=1) 
     126   ln_crs      = .false.      !  Logical switch for coarsening module 
    126127   jphgr_msh   =       0               !  type of horizontal mesh 
    127128                                       !  = 0 curvilinear coordinate on the sphere read in coordinate.nc 
     
    147148   ppkth2      =       48.029893720000 ! 
    148149   ppacr2      =       13.000000000000 ! 
     150/ 
     151!----------------------------------------------------------------------- 
     152&namcrs        !   Grid coarsening for dynamics output and/or 
     153               !   passive tracer coarsened online simulations 
     154!----------------------------------------------------------------------- 
     155   nn_factx    = 3         !  Reduction factor of x-direction 
     156   nn_facty    = 3         !  Reduction factor of y-direction 
     157   nn_binref   = 0         !  Bin centering preference: NORTH or EQUAT 
     158                           !  0, coarse grid is binned with preferential treatment of the north fold 
     159                           !  1, coarse grid is binned with centering at the equator 
     160                           !    Symmetry with nn_facty being odd-numbered. Asymmetry with even-numbered nn_facty. 
     161   nn_msh_crs  = 1         !  create (=1) a mesh file or not (=0) 
     162   nn_crs_kz   = 0         ! 0, MEAN of volume boxes 
     163                           ! 1, MAX of boxes 
     164                           ! 2, MIN of boxes 
     165   ln_crs_wn   = .true.    ! wn coarsened (T) or computed using horizontal divergence ( F ) 
    149166/ 
    150167!----------------------------------------------------------------------- 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/CONFIG/SHARED/field_def.xml

    r4152 r4153  
    227227      </field_group> 
    228228 
     229      <!-- variables available with iceberg trajectories --> 
     230      <field_group id="icbvar" domain_ref="grid_T"  >  
     231        <field id="berg_melt"          long_name="icb melt rate of icebergs"                     unit="kg/m2/s"   /> 
     232        <field id="berg_buoy_melt"     long_name="icb buoyancy component of iceberg melt rate"   unit="kg/m2/s"   /> 
     233        <field id="berg_eros_melt"     long_name="icb erosion component of iceberg melt rate"    unit="kg/m2/s"   /> 
     234        <field id="berg_conv_melt"     long_name="icb convective component of iceberg melt rate" unit="kg/m2/s"   /> 
     235        <field id="berg_virtual_area"  long_name="icb virtual coverage by icebergs"              unit="m2"        /> 
     236        <field id="bits_src"           long_name="icb mass source of bergy bits"                 unit="kg/m2/s"   /> 
     237        <field id="bits_melt"          long_name="icb melt rate of bergy bits"                   unit="kg/m2/s"   /> 
     238        <field id="bits_mass"          long_name="icb bergy bit density field"                   unit="kg/m2"     /> 
     239        <field id="berg_mass"          long_name="icb iceberg density field"                     unit="kg/m2"     /> 
     240        <field id="calving"            long_name="icb calving mass input"                        unit="kg/s"      /> 
     241        <field id="berg_floating_melt" long_name="icb melt rate of icebergs + bits"              unit="kg/m2/s"   /> 
     242        <field id="berg_real_calving"  long_name="icb calving into iceberg class"                unit="kg/s"     axis_ref="icbcla" /> 
     243        <field id="berg_stored_ice"    long_name="icb accumulated ice mass by class"             unit="kg"       axis_ref="icbcla" /> 
     244      </field_group> 
     245 
    229246      <!-- ptrc on T grid --> 
    230247 
     
    255272       <field id="NH4"      long_name="Ammonium Concentration"                   unit="mmol/m3" /> 
    256273 
     274       <!-- PISCES with Kriest parametisation : variables available with key_kriest --> 
     275       <field id="Num"      long_name="Number of organic particles"              unit="nbr" /> 
     276 
     277       <!-- PISCES light : variables available with key_pisces_reduced --> 
    257278       <field id="DET"      long_name="Detritus"                                 unit="mmol-N/m3" /> 
    258279       <field id="DOM"      long_name="Dissolved Organic Matter"                 unit="mmol-N/m3" /> 
    259280 
     281       <!-- CFC11 : variables available with key_cfc --> 
    260282       <field id="CFC11"    long_name="CFC-11 Concentration"                     unit="umol/L" /> 
     283       <!-- Bomb C14 : variables available with key_c14b --> 
    261284       <field id="C14B"     long_name="Bomb C14 Concentration"                   unit="ration" /> 
    262285     </field_group> 
    263286 
    264       <!-- diad on T grid : variables available with key_diatrc --> 
    265  
     287      <!-- PISCES additional diagnostics on T grid  --> 
    266288     <field_group id="diad_T" grid_ref="grid_T_2D"> 
    267289       <field id="PH"          long_name="PH"                                      unit="-"          grid_ref="grid_T_3D" /> 
     
    317339       <field id="Heup"        long_name="Euphotic layer depth"                    unit="m"                            /> 
    318340       <field id="Irondep"     long_name="Iron deposition from dust"               unit="mol/m2/s"                     /> 
    319        <field id="Ironsed"     long_name="Iron deposition from sediment"           unit="mol/m2/s"  grid_ref="grid_T_3D"  /> 
    320  
    321        <field id="FNO3PHY"  long_name="FNO3PHY"                             unit="-"  grid_ref="grid_T_3D" />  
    322        <field id="FNH4PHY"  long_name="FNH4PHY"                             unit="-"  grid_ref="grid_T_3D" />  
    323        <field id="FNH4NO3"  long_name="FNH4NO3"                             unit="-"  grid_ref="grid_T_3D" />  
    324        <field id="TNO3PHY"  long_name="TNO3PHY"                             unit="-"  />  
    325        <field id="TNH4PHY"  long_name="TNH4PHY"                             unit="-"  />  
    326        <field id="TPHYDOM"  long_name="TPHYDOM"                             unit="-"  />  
    327        <field id="TPHYNH4"  long_name="TPHYNH4"                             unit="-"  />  
    328        <field id="TPHYZOO"  long_name="TPHYZOO"                             unit="-"  />  
    329        <field id="TPHYDET"  long_name="TPHYDET"                             unit="-"  />  
    330        <field id="TDETZOO"  long_name="TDETZOO"                             unit="-"  />  
    331        <field id="TZOODET"  long_name="TZOODET"                             unit="-"  />  
    332        <field id="TZOOBOD"  long_name="TZOOBOD"                             unit="-"  />  
    333        <field id="TZOONH4"  long_name="TZOONH4"                             unit="-"  />  
    334        <field id="TZOODOM"  long_name="TZOODOM"                             unit="-"  />  
    335        <field id="TNH4NO3"  long_name="TNH4NO3"                             unit="-"  />  
    336        <field id="TDOMNH4"  long_name="TDOMNH4"                             unit="-"  />  
    337        <field id="TDETNH4"  long_name="TDETNH4"                             unit="-"  />  
    338        <field id="TPHYTOT"  long_name="TPHYTOT"                             unit="-"  />  
    339        <field id="TZOOTOT"  long_name="TZOOTOT"                             unit="-"  />  
    340        <field id="SEDPOC"   long_name="SEDPOC"                              unit="-"  />  
    341        <field id="TDETSED"  long_name="TDETSED"                             unit="-"  />  
    342  
    343        <field id="qtrCFC11"     long_name="Air-sea flux of CFC-11"                   unit="mol/m2/s"   /> 
    344        <field id="qintCFC11"    long_name="Cumulative air-sea flux of CFC-11"        unit="mol/m2"     /> 
    345        <field id="qtrC14b"      long_name="Air-sea flux of Bomb C14"                 unit="mol/m2/s"   /> 
    346        <field id="qintC14b"     long_name="Cumulative air-sea flux of Bomb C14"      unit="mol/m2"     /> 
    347        <field id="fdecay"       long_name="Radiactive decay of Bomb C14"             unit="mol/m3"  grid_ref="grid_T_3D"  /> 
     341       <field id="Ironsed"     long_name="Iron deposition from sediment"           unit="mol/m2/s"  grid_ref="grid_T_3D "/> 
     342 
     343       <!-- PISCES with Kriest parametisation : variables available with key_kriest --> 
     344       <field id="POCFlx"      long_name="Particulate organic C flux"              unit="mol/m2/s"   grid_ref="grid_T_3D" /> 
     345       <field id="NumFlx"      long_name="Particle number flux"                    unit="nbr/m2/s"   grid_ref="grid_T_3D" /> 
     346       <field id="SiFlx"       long_name="Biogenic Si flux"                        unit="mol/m2/s"   grid_ref="grid_T_3D" /> 
     347       <field id="CaCO3Flx"    long_name="CaCO3 flux"                              unit="mol/m2/s"   grid_ref="grid_T_3D" /> 
     348       <field id="xnum"        long_name="Number of particles in aggregats"        unit="-"          grid_ref="grid_T_3D" /> 
     349       <field id="W1"          long_name="sinking speed of mass flux"              unit="m2/s"       grid_ref="grid_T_3D" /> 
     350       <field id="W2"          long_name="sinking speed of number flux"            unit="m2/s"       grid_ref="grid_T_3D" /> 
     351 
     352       <!-- PISCES light : variables available with key_pisces_reduced --> 
     353       <field id="FNO3PHY"     long_name="FNO3PHY"                                 unit="-"          grid_ref="grid_T_3D" />  
     354       <field id="FNH4PHY"     long_name="FNH4PHY"                                 unit="-"          grid_ref="grid_T_3D" />  
     355       <field id="FNH4NO3"     long_name="FNH4NO3"                                 unit="-"          grid_ref="grid_T_3D" />  
     356       <field id="TNO3PHY"     long_name="TNO3PHY"                                 unit="-"  />  
     357       <field id="TNH4PHY"     long_name="TNH4PHY"                                 unit="-"  />  
     358       <field id="TPHYDOM"     long_name="TPHYDOM"                                 unit="-"  />  
     359       <field id="TPHYNH4"     long_name="TPHYNH4"                                 unit="-"  />  
     360       <field id="TPHYZOO"     long_name="TPHYZOO"                                 unit="-"  />  
     361       <field id="TPHYDET"     long_name="TPHYDET"                                 unit="-"  />  
     362       <field id="TDETZOO"     long_name="TDETZOO"                                 unit="-"  />  
     363       <field id="TZOODET"     long_name="TZOODET"                                 unit="-"  />  
     364       <field id="TZOOBOD"     long_name="TZOOBOD"                                 unit="-"  />  
     365       <field id="TZOONH4"     long_name="TZOONH4"                                 unit="-"  />  
     366       <field id="TZOODOM"     long_name="TZOODOM"                                 unit="-"  />  
     367       <field id="TNH4NO3"     long_name="TNH4NO3"                                 unit="-"  />  
     368       <field id="TDOMNH4"     long_name="TDOMNH4"                                 unit="-"  />  
     369       <field id="TDETNH4"     long_name="TDETNH4"                                 unit="-"  />  
     370       <field id="TPHYTOT"     long_name="TPHYTOT"                                 unit="-"  />  
     371       <field id="TZOOTOT"     long_name="TZOOTOT"                                 unit="-"  />  
     372       <field id="SEDPOC"      long_name="SEDPOC"                                  unit="-"  />  
     373       <field id="TDETSED"     long_name="TDETSED"                                 unit="-"  />  
     374 
     375       <!-- CFC11 : variables available with key_cfc --> 
     376       <field id="qtrCFC11"    long_name="Air-sea flux of CFC-11"                   unit="mol/m2/s"   /> 
     377       <field id="qintCFC11"   long_name="Cumulative air-sea flux of CFC-11"        unit="mol/m2"     /> 
     378       <!-- Bomb C14 : variables available with key_c14b --> 
     379       <field id="qtrC14b"     long_name="Air-sea flux of Bomb C14"                 unit="mol/m2/s"   /> 
     380       <field id="qintC14b"    long_name="Cumulative air-sea flux of Bomb C14"      unit="mol/m2"     /> 
     381       <field id="fdecay"      long_name="Radiactive decay of Bomb C14"             unit="mol/m3"  grid_ref="grid_T_3D"  /> 
    348382     </field_group> 
    349383 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/NST_SRC/agrif_opa_sponge.F90

    r3698 r4153  
    185185      INTEGER  :: ji,jj,jk 
    186186      INTEGER  :: ispongearea, ilci, ilcj 
    187       REAL(wp) :: z1spongearea 
    188       REAL(wp), POINTER, DIMENSION(:,:) :: zlocalviscsponge 
     187      LOGICAL  :: ll_spdone 
     188      REAL(wp) :: z1spongearea, zramp 
     189      REAL(wp), POINTER, DIMENSION(:,:) :: ztabramp 
    189190 
    190191#if defined SPONGE || defined SPONGE_TOP 
    191  
    192       CALL wrk_alloc( jpi, jpj, zlocalviscsponge ) 
    193  
    194       ispongearea  = 2 + 2 * Agrif_irhox() 
    195       ilci = nlci - ispongearea 
    196       ilcj = nlcj - ispongearea  
    197       z1spongearea = 1._wp / REAL( ispongearea - 2 ) 
    198       spbtr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:) ) 
     192      ll_spdone=.TRUE. 
     193      IF (( .NOT. spongedoneT ).OR.( .NOT. spongedoneU )) THEN 
     194         ! Define ramp from boundaries towards domain interior 
     195         ! at T-points 
     196         ! Store it in ztabramp 
     197         ll_spdone=.FALSE. 
     198 
     199         CALL wrk_alloc( jpi, jpj, ztabramp ) 
     200 
     201         ispongearea  = 2 + 2 * Agrif_irhox() 
     202         ilci = nlci - ispongearea 
     203         ilcj = nlcj - ispongearea  
     204         z1spongearea = 1._wp / REAL( ispongearea - 2 ) 
     205         spbtr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:) ) 
     206 
     207         ztabramp(:,:) = 0. 
     208 
     209         IF( (nbondi == -1) .OR. (nbondi == 2) ) THEN 
     210            DO jj = 1, jpj 
     211               IF ( umask(2,jj,1) == 1._wp ) THEN 
     212                 DO ji = 2, ispongearea                   
     213                    ztabramp(ji,jj) = ( ispongearea-ji ) * z1spongearea 
     214                 END DO 
     215               ENDIF 
     216            ENDDO 
     217         ENDIF 
     218 
     219         IF( (nbondi == 1) .OR. (nbondi == 2) ) THEN 
     220            DO jj = 1, jpj 
     221               IF ( umask(nlci-2,jj,1) == 1._wp ) THEN 
     222                  DO ji = ilci+1,nlci-1 
     223                     zramp = (ji - (ilci+1) ) * z1spongearea 
     224                     ztabramp(ji,jj) = MAX( ztabramp(ji,jj), zramp ) 
     225                  ENDDO 
     226               ENDIF 
     227            ENDDO 
     228         ENDIF 
     229 
     230         IF( (nbondj == -1) .OR. (nbondj == 2) ) THEN 
     231            DO ji = 1, jpi 
     232               IF ( vmask(ji,2,1) == 1._wp ) THEN 
     233                  DO jj = 2, ispongearea 
     234                     zramp = ( ispongearea-jj ) * z1spongearea 
     235                     ztabramp(ji,jj) = MAX( ztabramp(ji,jj), zramp ) 
     236                  END DO 
     237               ENDIF 
     238            ENDDO 
     239         ENDIF 
     240 
     241         IF( (nbondj == 1) .OR. (nbondj == 2) ) THEN 
     242            DO ji = 1, jpi 
     243               IF ( vmask(ji,nlcj-2,1) == 1._wp ) THEN 
     244                  DO jj = ilcj+1,nlcj-1 
     245                     zramp = (jj - (ilcj+1) ) * z1spongearea 
     246                     ztabramp(ji,jj) = MAX( ztabramp(ji,jj), zramp ) 
     247                  END DO 
     248               ENDIF 
     249            ENDDO 
     250         ENDIF 
     251 
     252      ENDIF 
    199253 
    200254      ! Tracers 
    201255      IF( .NOT. spongedoneT ) THEN 
    202          zlocalviscsponge(:,:) = 0. 
    203256         spe1ur(:,:) = 0. 
    204257         spe2vr(:,:) = 0. 
    205258 
    206259         IF( (nbondi == -1) .OR. (nbondi == 2) ) THEN 
    207             DO ji = 2, ispongearea 
    208                zlocalviscsponge(ji,:) = visc_tra * ( ispongearea-ji ) * z1spongearea 
    209             ENDDO 
    210             spe1ur(2:ispongearea-1,:      ) = 0.5 * ( zlocalviscsponge(2:ispongearea-1,:      )   & 
    211                &                         +            zlocalviscsponge(3:ispongearea  ,:      ) ) & 
    212                &                         * e2u(2:ispongearea-1,:      ) / e1u(2:ispongearea-1,:      ) 
    213             spe2vr(2:ispongearea  ,1:jpjm1) = 0.5 * ( zlocalviscsponge(2:ispongearea  ,1:jpjm1)   & 
    214                &                         +            zlocalviscsponge(2:ispongearea,2  :jpj  ) ) & 
    215                &                         * e1v(2:ispongearea  ,1:jpjm1) / e2v(2:ispongearea  ,1:jpjm1) 
     260            spe1ur(2:ispongearea-1,:       ) = visc_tra                                        & 
     261               &                             *    0.5 * (  ztabramp(2:ispongearea-1,:      )   & 
     262               &                                         + ztabramp(3:ispongearea  ,:      ) ) & 
     263               &                             * e2u(2:ispongearea-1,:) / e1u(2:ispongearea-1,:) 
     264 
     265            spe2vr(2:ispongearea  ,1:jpjm1 ) = visc_tra                                        & 
     266               &                             *    0.5 * (  ztabramp(2:ispongearea  ,1:jpjm1)   & 
     267               &                                         + ztabramp(2:ispongearea,2  :jpj  ) ) & 
     268               &                             * e1v(2:ispongearea,1:jpjm1) / e2v(2:ispongearea,1:jpjm1) 
    216269         ENDIF 
    217270 
    218271         IF( (nbondi == 1) .OR. (nbondi == 2) ) THEN 
    219             DO ji = ilci+1,nlci-1 
    220                zlocalviscsponge(ji,:) = visc_tra * (ji - (ilci+1) ) * z1spongearea 
    221             ENDDO 
    222    
    223             spe1ur(ilci+1:nlci-2,:      ) = 0.5 * (  zlocalviscsponge(ilci+1:nlci-2,:)    &  
    224                &                          +          zlocalviscsponge(ilci+2:nlci-1,:) )  & 
    225                &                          * e2u(ilci+1:nlci-2,:) / e1u(ilci+1:nlci-2,:) 
    226  
    227             spe2vr(ilci+1:nlci-1,1:jpjm1) = 0.5 * (  zlocalviscsponge(ilci+1:nlci-1,1:jpjm1)    &  
    228                &                            +        zlocalviscsponge(ilci+1:nlci-1,2:jpj  )  ) &  
    229                &                                   * e1v(ilci+1:nlci-1,1:jpjm1) / e2v(ilci+1:nlci-1,1:jpjm1) 
     272            spe1ur(ilci+1:nlci-2,:        ) = visc_tra                                   & 
     273               &                            * 0.5 * (  ztabramp(ilci+1:nlci-2,:      )   &  
     274               &                                     + ztabramp(ilci+2:nlci-1,:      ) ) & 
     275               &                            * e2u(ilci+1:nlci-2,:) / e1u(ilci+1:nlci-2,:) 
     276 
     277            spe2vr(ilci+1:nlci-1,1:jpjm1  )  = visc_tra                                  & 
     278               &                            * 0.5 * (  ztabramp(ilci+1:nlci-1,1:jpjm1)   &  
     279               &                                     + ztabramp(ilci+1:nlci-1,2:jpj  ) ) &  
     280               &                            * e1v(ilci+1:nlci-1,1:jpjm1) / e2v(ilci+1:nlci-1,1:jpjm1) 
    230281         ENDIF 
    231282 
    232283         IF( (nbondj == -1) .OR. (nbondj == 2) ) THEN 
    233             DO jj = 2, ispongearea 
    234                zlocalviscsponge(:,jj) = visc_tra * ( ispongearea-jj ) * z1spongearea 
    235             ENDDO 
    236             spe1ur(1:jpim1,2:ispongearea  ) = 0.5 * ( zlocalviscsponge(1:jpim1,2:ispongearea  ) &  
    237                &                            +         zlocalviscsponge(2:jpi  ,2:ispongearea) ) & 
     284            spe1ur(1:jpim1,2:ispongearea  ) = visc_tra                                     & 
     285               &                            * 0.5 * (  ztabramp(1:jpim1,2:ispongearea  )   &  
     286               &                                     + ztabramp(2:jpi  ,2:ispongearea  ) ) & 
    238287               &                            * e2u(1:jpim1,2:ispongearea) / e1u(1:jpim1,2:ispongearea) 
    239288    
    240             spe2vr(:      ,2:ispongearea-1) = 0.5 * ( zlocalviscsponge(:,2:ispongearea-1)       & 
    241                &                            +         zlocalviscsponge(:,3:ispongearea  )     ) & 
     289            spe2vr(:      ,2:ispongearea-1) = visc_tra                                     & 
     290               &                            * 0.5 * (  ztabramp(:      ,2:ispongearea-1)   & 
     291               &                                     + ztabramp(:      ,3:ispongearea  ) ) & 
    242292               &                            * e1v(:,2:ispongearea-1) / e2v(:,2:ispongearea-1) 
    243293         ENDIF 
    244294 
    245295         IF( (nbondj == 1) .OR. (nbondj == 2) ) THEN 
    246             DO jj = ilcj+1,nlcj-1 
    247                zlocalviscsponge(:,jj) = visc_tra * (jj - (ilcj+1) ) * z1spongearea 
    248             ENDDO 
    249             spe1ur(1:jpim1,ilcj+1:nlcj-1) = 0.5 * ( zlocalviscsponge(1:jpim1,ilcj+1:nlcj-1)   & 
    250                &                          +         zlocalviscsponge(2:jpi  ,ilcj+1:nlcj-1) ) & 
     296            spe1ur(1:jpim1,ilcj+1:nlcj-1) = visc_tra                                   & 
     297               &                          * 0.5 * (  ztabramp(1:jpim1,ilcj+1:nlcj-1)   & 
     298               &                                   + ztabramp(2:jpi  ,ilcj+1:nlcj-1) ) & 
    251299               &                                * e2u(1:jpim1,ilcj+1:nlcj-1) / e1u(1:jpim1,ilcj+1:nlcj-1) 
    252             spe2vr(:      ,ilcj+1:nlcj-2) = 0.5 * ( zlocalviscsponge(:,ilcj+1:nlcj-2      )   & 
    253                &                          +         zlocalviscsponge(:,ilcj+2:nlcj-1)     )   & 
     300 
     301            spe2vr(:      ,ilcj+1:nlcj-2) = visc_tra                                   & 
     302               &                          * 0.5 * (  ztabramp(:      ,ilcj+1:nlcj-2)   & 
     303               &                                   + ztabramp(:      ,ilcj+2:nlcj-1) ) & 
    254304               &                                * e1v(:,ilcj+1:nlcj-2) / e2v(:,ilcj+1:nlcj-2) 
    255305         ENDIF 
     
    259309      ! Dynamics 
    260310      IF( .NOT. spongedoneU ) THEN 
    261          zlocalviscsponge(:,:) = 0. 
    262311         spe1ur2(:,:) = 0. 
    263312         spe2vr2(:,:) = 0. 
    264313 
    265314         IF( (nbondi == -1) .OR. (nbondi == 2) ) THEN 
    266             DO ji = 2, ispongearea 
    267                zlocalviscsponge(ji,:) = visc_dyn * ( ispongearea-ji ) * z1spongearea 
    268             ENDDO 
    269             spe1ur2(2:ispongearea-1,:      ) = 0.5 * ( zlocalviscsponge(2:ispongearea-1,:      ) & 
    270                                              &     +   zlocalviscsponge(3:ispongearea,:    ) ) 
    271             spe2vr2(2:ispongearea  ,1:jpjm1) = 0.5 * ( zlocalviscsponge(2:ispongearea  ,1:jpjm1) & 
    272                                              &     +   zlocalviscsponge(2:ispongearea,2:jpj) )  
     315            spe1ur2(2:ispongearea-1,:      ) = visc_dyn                                   & 
     316               &                             * 0.5 * (  ztabramp(2:ispongearea-1,:      ) & 
     317               &                                      + ztabramp(3:ispongearea  ,:      ) ) 
     318            spe2vr2(2:ispongearea  ,1:jpjm1) = visc_dyn                                   & 
     319               &                             * 0.5 * (  ztabramp(2:ispongearea  ,1:jpjm1) & 
     320               &                                      + ztabramp(2:ispongearea  ,2:jpj  ) )  
    273321         ENDIF 
    274322 
    275323         IF( (nbondi == 1) .OR. (nbondi == 2) ) THEN 
    276             DO ji = ilci+1,nlci-1 
    277                zlocalviscsponge(ji,:) = visc_dyn * (ji - (ilci+1) ) * z1spongearea 
    278             ENDDO 
    279             spe1ur2(ilci+1:nlci-2,:      ) = 0.5 * (  zlocalviscsponge(ilci+1:nlci-2,:) & 
    280                                            &        + zlocalviscsponge(ilci+2:nlci-1,:) )   
    281             spe2vr2(ilci+1:nlci-1,1:jpjm1) = 0.5 * (  zlocalviscsponge(ilci+1:nlci-1,1:jpjm1) & 
    282                                            &        + zlocalviscsponge(ilci+1:nlci-1,2:jpj  )  )  
     324            spe1ur2(ilci+1:nlci-2  ,:      ) = visc_dyn                                   & 
     325               &                             * 0.5 * (  ztabramp(ilci+1:nlci-2, :       ) & 
     326               &                                      + ztabramp(ilci+2:nlci-1, :       ) )                       
     327            spe2vr2(ilci+1:nlci-1  ,1:jpjm1) = visc_dyn                                   & 
     328               &                             * 0.5 * (  ztabramp(ilci+1:nlci-1,1:jpjm1  ) & 
     329               &                                      + ztabramp(ilci+1:nlci-1,2:jpj    ) )  
    283330         ENDIF 
    284331 
    285332         IF( (nbondj == -1) .OR. (nbondj == 2) ) THEN 
    286             DO jj = 2, ispongearea 
    287                zlocalviscsponge(:,jj) = visc_dyn * ( ispongearea-jj ) * z1spongearea 
    288             ENDDO 
    289             spe1ur2(1:jpim1,2:ispongearea  ) = 0.5 * ( zlocalviscsponge(1:jpim1,2:ispongearea) & 
    290                                              &      + zlocalviscsponge(2:jpi,2:ispongearea) )  
    291             spe2vr2(:      ,2:ispongearea-1) = 0.5 * ( zlocalviscsponge(:,2:ispongearea-1)     & 
    292                                              &      + zlocalviscsponge(:,3:ispongearea)     ) 
     333            spe1ur2(1:jpim1,2:ispongearea  ) = visc_dyn                                   &   
     334               &                             * 0.5 * (  ztabramp(1:jpim1,2:ispongearea  ) & 
     335               &                                      + ztabramp(2:jpi  ,2:ispongearea  ) )  
     336            spe2vr2(:      ,2:ispongearea-1) = visc_dyn                                   & 
     337               &                             * 0.5 * (  ztabramp(:      ,2:ispongearea-1) & 
     338               &                                      + ztabramp(:      ,3:ispongearea  ) ) 
    293339         ENDIF 
    294340 
    295341         IF( (nbondj == 1) .OR. (nbondj == 2) ) THEN 
    296             DO jj = ilcj+1,nlcj-1 
    297                zlocalviscsponge(:,jj) = visc_dyn * (jj - (ilcj+1) ) * z1spongearea 
    298             ENDDO 
    299             spe1ur2(1:jpim1,ilcj+1:nlcj-1) = 0.5 * ( zlocalviscsponge(1:jpim1,ilcj+1:nlcj-1) & 
    300                                            &         + zlocalviscsponge(2:jpi,ilcj+1:nlcj-1) )  
    301             spe2vr2(:      ,ilcj+1:nlcj-2) = 0.5 * ( zlocalviscsponge(:,ilcj+1:nlcj-2      ) & 
    302                                            &         + zlocalviscsponge(:,ilcj+2:nlcj-1)     ) 
     342            spe1ur2(1:jpim1,ilcj+1:nlcj-1  ) = visc_dyn                                   & 
     343               &                             * 0.5 * (  ztabramp(1:jpim1,ilcj+1:nlcj-1  ) & 
     344               &                                      + ztabramp(2:jpi  ,ilcj+1:nlcj-1  ) )  
     345            spe2vr2(:      ,ilcj+1:nlcj-2  ) = visc_dyn                                   & 
     346               &                             * 0.5 * (  ztabramp(:      ,ilcj+1:nlcj-2  ) & 
     347               &                                      + ztabramp(:      ,ilcj+2:nlcj-1  ) ) 
    303348         ENDIF 
    304349         spongedoneU = .TRUE. 
     
    306351      ENDIF 
    307352      ! 
    308       CALL wrk_dealloc( jpi, jpj, zlocalviscsponge ) 
     353      IF (.NOT.ll_spdone) CALL wrk_dealloc( jpi, jpj, ztabramp ) 
    309354      ! 
    310355#endif 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90

    r3294 r4153  
    3030   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    3131   USE in_out_manager  ! 
     32   USE domvvl          ! variable volume 
    3233 
    3334   IMPLICIT NONE 
     
    8485      pu2d(:,:) = 0.e0 
    8586      pv2d(:,:) = 0.e0 
    86       DO jk = 1, jpkm1   !! Vertically integrated momentum trends 
    87           pu2d(:,:) = pu2d(:,:) + fse3u(:,:,jk) * umask(:,:,jk) * ua(:,:,jk) 
    88           pv2d(:,:) = pv2d(:,:) + fse3v(:,:,jk) * vmask(:,:,jk) * va(:,:,jk) 
    89       END DO 
    90       pu2d(:,:) = pu2d(:,:) * phur(:,:) 
    91       pv2d(:,:) = pv2d(:,:) * phvr(:,:) 
     87      IF (lk_vvl) THEN 
     88         DO jk = 1, jpkm1   !! Vertically integrated momentum trends 
     89            pu2d(:,:) = pu2d(:,:) + fse3u_a(:,:,jk) * umask(:,:,jk) * ua(:,:,jk) 
     90            pv2d(:,:) = pv2d(:,:) + fse3v_a(:,:,jk) * vmask(:,:,jk) * va(:,:,jk) 
     91         END DO 
     92         pu2d(:,:) = pu2d(:,:) / ( hu_0(:,:) + sshu_a(:,:) + 1._wp - umask(:,:,1) ) 
     93         pv2d(:,:) = pv2d(:,:) / ( hv_0(:,:) + sshv_a(:,:) + 1._wp - vmask(:,:,1) ) 
     94      ELSE 
     95         DO jk = 1, jpkm1   !! Vertically integrated momentum trends 
     96            pu2d(:,:) = pu2d(:,:) + fse3u(:,:,jk) * umask(:,:,jk) * ua(:,:,jk) 
     97            pv2d(:,:) = pv2d(:,:) + fse3v(:,:,jk) * vmask(:,:,jk) * va(:,:,jk) 
     98         END DO 
     99         pu2d(:,:) = pu2d(:,:) * phur(:,:) 
     100         pv2d(:,:) = pv2d(:,:) * phvr(:,:) 
     101      ENDIF 
    92102      DO jk = 1 , jpkm1 
    93          ua(:,:,jk) = ua(:,:,jk) - pu2d(:,:) 
    94          va(:,:,jk) = va(:,:,jk) - pv2d(:,:) 
     103         ua(:,:,jk) = ua(:,:,jk) - pu2d(:,:) * umask(:,:,jk) 
     104         va(:,:,jk) = va(:,:,jk) - pv2d(:,:) * vmask(:,:,jk) 
    95105      END DO 
    96106 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/C1D/step_c1d.F90

    r3680 r4153  
    5959 
    6060                             indic = 0                ! reset to no error condition 
     61      IF( kstp == nit000 )   CALL iom_init            ! iom_put initialization (must be done after nemo_init for AGRIF+XIOS+OASIS) 
    6162      IF( kstp /= nit000 )   CALL day( kstp )         ! Calendar (day was already called at nit000 in day_init) 
    62                              CALL iom_setkt( kstp )   ! say to iom that we are at time step kstp 
     63                             CALL iom_setkt( kstp - nit000 + 1 )   ! say to iom that we are at time step kstp 
    6364 
    6465      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    106107      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    107108                         CALL dia_wri( kstp )       ! ocean model: outputs 
     109      IF( lk_diahth  )   CALL dia_hth( kstp )       ! Thermocline depth (20°C) 
     110 
    108111 
    109112#if defined key_top 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90

    r4147 r4153  
    4242#endif 
    4343#if defined key_lim3 
    44   USE ice_3 
     44  USE par_ice 
     45  USE ice 
    4546#endif 
    4647  USE domvvl 
     
    490491                 ijglo = secs(jsec)%listPoint(jpt)%J + jpjzoom - 1 + njmpp - 1 
    491492                 WRITE(numout,*)'         # I J : ',iiglo,ijglo 
     493                 CALL FLUSH(numout) 
    492494              ENDDO 
    493495           ENDIF 
     
    612614     
    613615     !! * Local variables 
    614      INTEGER             :: jk, jseg, jclass,                    &!loop on level/segment/classes   
     616     INTEGER             :: jk, jseg, jclass,jl,                 &!loop on level/segment/classes/ice categories 
    615617                            isgnu, isgnv                          !  
    616618     REAL(wp)            :: zumid, zvmid,                        &!U/V velocity on a cell segment  
     
    777779    
    778780              zTnorm=zumid_ice*e2u(k%I,k%J)+zvmid_ice*e1v(k%I,k%J) 
    779     
     781 
     782#if defined key_lim2    
    780783              transports_2d(1,jsec,jseg) = transports_2d(1,jsec,jseg) + (zTnorm)*   &  
    781784                                   (1.0 - frld(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J))  &  
     
    784787              transports_2d(2,jsec,jseg) = transports_2d(2,jsec,jseg) + (zTnorm)*   &  
    785788                                    (1.0 -  frld(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J)) 
     789#endif 
     790#if defined key_lim3 
     791              DO jl=1,jpl 
     792                 transports_2d(1,jsec,jseg) = transports_2d(1,jsec,jseg) + (zTnorm)*     & 
     793                                   a_i(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J,jl) * & 
     794                                  ( ht_i(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J,jl) +  & 
     795                                    ht_s(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J,jl) ) 
     796                                    
     797                 transports_2d(2,jsec,jseg) = transports_2d(2,jsec,jseg) + (zTnorm)*   & 
     798                                   a_i(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J,jl) 
     799              ENDDO 
     800#endif 
    786801    
    787802           ENDIF !end of ice case 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r3294 r4153  
    192192      INTEGER  ::   iku, ikv     ! local integers     
    193193      INTEGER  ::   ii0, ii1, ij0, ij1   ! temporary integers 
    194       REAL(wp) ::   zvt          ! local scalars 
     194      REAL(wp) ::   zvt, zvtip1, zvtjp1  ! local scalars 
    195195      !!---------------------------------------------------------------------- 
    196196      ! 
     
    202202         WRITE(numout,*) '~~~~~~~~~ ' 
    203203         pe3u_b(:,:,jpk) = fse3u_0(:,:,jpk) 
    204          pe3v_b(:,:,jpk) = fse3u_0(:,:,jpk) 
     204         pe3v_b(:,:,jpk) = fse3v_0(:,:,jpk) 
    205205      ENDIF 
    206206       
     
    208208         DO jj = 2, jpjm1 
    209209            DO ji = fs_2, fs_jpim1 
    210                zvt = fse3t_b(ji,jj,jk) * e1e2t(ji,jj) 
    211                pe3u_b(ji,jj,jk) = 0.5_wp * ( zvt + fse3t_b(ji+1,jj,jk) * e1e2t(ji+1,jj) ) / ( e1u(ji,jj) * e2u(ji,jj) ) 
    212                pe3v_b(ji,jj,jk) = 0.5_wp * ( zvt + fse3t_b(ji,jj+1,jk) * e1e2t(ji,jj+1) ) / ( e1v(ji,jj) * e2v(ji,jj) ) 
     210               zvt    = ( fse3t_b(ji  ,jj  ,jk) - fse3t_0(ji  ,jj  ,jk) ) * e1e2t(ji  ,jj  ) 
     211               zvtip1 = ( fse3t_b(ji+1,jj  ,jk) - fse3t_0(ji+1,jj  ,jk) ) * e1e2t(ji+1,jj  ) 
     212               zvtjp1 = ( fse3t_b(ji  ,jj+1,jk) - fse3t_0(ji  ,jj+1,jk) ) * e1e2t(ji  ,jj+1) 
     213               pe3u_b(ji,jj,jk) = fse3u_0(ji,jj,jk) + 0.5_wp * ( zvt + zvtip1 ) / ( e1u(ji,jj) * e2u(ji,jj) ) 
     214               pe3v_b(ji,jj,jk) = fse3v_0(ji,jj,jk) + 0.5_wp * ( zvt + zvtjp1 ) / ( e1v(ji,jj) * e2v(ji,jj) ) 
    213215            END DO 
    214216         END DO 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r4148 r4153  
    11061106      INTEGER  ::   ios                      ! Local integer output status for namelist read 
    11071107      REAL(wp) ::   zrmax, ztaper   ! temporary scalars 
    1108       REAL(wp) ::   zrfact   ! temporary scalars 
    1109       REAL(wp), POINTER, DIMENSION(:,:  ) :: ztmpi1, ztmpi2, ztmpj1, ztmpj2 
    1110  
    1111       ! 
    1112       REAL(wp), POINTER, DIMENSION(:,:  ) :: zenv, zri, zrj, zhbat 
     1108      ! 
     1109      REAL(wp), POINTER, DIMENSION(:,:  ) :: zenv, ztmp, zmsk, zri, zrj, zhbat 
    11131110 
    11141111      NAMELIST/namzgr_sco/ln_s_sh94, ln_s_sf12, ln_sigcrit, rn_sbot_min, rn_sbot_max, rn_hc, rn_rmax,rn_theta, & 
     
    11181115      IF( nn_timing == 1 )  CALL timing_start('zgr_sco') 
    11191116      ! 
    1120       CALL wrk_alloc( jpi, jpj,      ztmpi1, ztmpi2, ztmpj1, ztmpj2         ) 
    1121       CALL wrk_alloc( jpi, jpj,      zenv, zri, zrj, zhbat     ) 
    1122      ! 
     1117      CALL wrk_alloc( jpi, jpj,      zenv, ztmp, zmsk, zri, zrj, zhbat                           ) 
     1118      ! 
    11231119      REWIND( numnam_ref )              ! Namelist namzgr_sco in reference namelist : Sigma-stretching parameters 
    11241120      READ  ( numnam_ref, namzgr_sco, IOSTAT = ios, ERR = 901) 
     
    11731169      !                                        ! ============================= 
    11741170      ! use r-value to create hybrid coordinates 
    1175 !     DO jj = 1, jpj 
    1176 !        DO ji = 1, jpi 
    1177 !           zenv(ji,jj) = MAX( bathy(ji,jj), 0._wp ) 
    1178 !        END DO 
    1179 !     END DO 
    1180 !     CALL lbc_lnk( zenv, 'T', 1._wp ) 
    1181       zenv(:,:) = bathy(:,:) 
     1171      DO jj = 1, jpj 
     1172         DO ji = 1, jpi 
     1173            zenv(ji,jj) = MAX( bathy(ji,jj), rn_sbot_min ) 
     1174         END DO 
     1175      END DO 
    11821176      !  
    11831177      ! Smooth the bathymetry (if required) 
     
    11871181      jl = 0 
    11881182      zrmax = 1._wp 
    1189       !      
    1190       ! set scaling factor used in reducing vertical gradients 
    1191       zrfact = ( 1._wp - rn_rmax ) / ( 1._wp + rn_rmax )  
    1192       ! 
    1193       ! initialise temporary evelope depth arrays 
    1194       ztmpi1(:,:) = zenv(:,:) 
    1195       ztmpi2(:,:) = zenv(:,:) 
    1196       ztmpj1(:,:) = zenv(:,:) 
    1197       ztmpj2(:,:) = zenv(:,:) 
    1198       ! 
    1199       ! initialise temporary r-value arrays 
    1200       zri(:,:) = 1._wp 
    1201       zrj(:,:) = 1._wp 
    1202       !                                                            ! ================ ! 
    1203       DO WHILE( jl <= 10000 .AND. ( zrmax - rn_rmax ) > 1.e-8_wp ) !  Iterative loop  ! 
    1204          !                                                         ! ================ ! 
     1183      !                                                     ! ================ ! 
     1184      DO WHILE( jl <= 10000 .AND. zrmax > rn_rmax )         !  Iterative loop  ! 
     1185         !                                                  ! ================ ! 
    12051186         jl = jl + 1 
    12061187         zrmax = 0._wp 
    1207          ! we set zrmax from previous r-values (zri abd zrj) first 
    1208          ! if set after current r-value calculation (as previously) 
    1209          ! we could exit DO WHILE prematurely before checking r-value 
    1210          ! of current zenv 
    1211          DO jj = 1, nlcj 
    1212             DO ji = 1, nlci 
    1213                zrmax = MAX( zrmax, ABS(zri(ji,jj)), ABS(zrj(ji,jj)) ) 
    1214             END DO 
    1215          END DO 
    1216          zri(:,:) = 0._wp 
    1217          zrj(:,:) = 0._wp 
     1188         zmsk(:,:) = 0._wp 
    12181189         DO jj = 1, nlcj 
    12191190            DO ji = 1, nlci 
    12201191               iip1 = MIN( ji+1, nlci )      ! force zri = 0 on last line (ji=ncli+1 to jpi) 
    12211192               ijp1 = MIN( jj+1, nlcj )      ! force zrj = 0 on last raw  (jj=nclj+1 to jpj) 
    1222                IF( (zenv(ji,jj) > 0._wp) .AND. (zenv(iip1,jj) > 0._wp)) THEN 
    1223                   zri(ji,jj) = ( zenv(iip1,jj  ) - zenv(ji,jj) ) / ( zenv(iip1,jj  ) + zenv(ji,jj) ) 
    1224                END IF 
    1225                IF( (zenv(ji,jj) > 0._wp) .AND. (zenv(ji,ijp1) > 0._wp)) THEN 
    1226                   zrj(ji,jj) = ( zenv(ji  ,ijp1) - zenv(ji,jj) ) / ( zenv(ji  ,ijp1) + zenv(ji,jj) ) 
    1227                END IF 
    1228                IF( zri(ji,jj) >  rn_rmax )   ztmpi1(ji  ,jj  ) = zenv(iip1,jj  ) * zrfact 
    1229                IF( zri(ji,jj) < -rn_rmax )   ztmpi2(iip1,jj  ) = zenv(ji  ,jj  ) * zrfact  
    1230                IF( zrj(ji,jj) >  rn_rmax )   ztmpj1(ji  ,jj  ) = zenv(ji  ,ijp1) * zrfact 
    1231                IF( zrj(ji,jj) < -rn_rmax )   ztmpj2(ji  ,ijp1) = zenv(ji  ,jj  ) * zrfact 
     1193               zri(ji,jj) = ABS( zenv(iip1,jj  ) - zenv(ji,jj) ) / ( zenv(iip1,jj  ) + zenv(ji,jj) ) 
     1194               zrj(ji,jj) = ABS( zenv(ji  ,ijp1) - zenv(ji,jj) ) / ( zenv(ji  ,ijp1) + zenv(ji,jj) ) 
     1195               zrmax = MAX( zrmax, zri(ji,jj), zrj(ji,jj) ) 
     1196               IF( zri(ji,jj) > rn_rmax )   zmsk(ji  ,jj  ) = 1._wp 
     1197               IF( zri(ji,jj) > rn_rmax )   zmsk(iip1,jj  ) = 1._wp 
     1198               IF( zrj(ji,jj) > rn_rmax )   zmsk(ji  ,jj  ) = 1._wp 
     1199               IF( zrj(ji,jj) > rn_rmax )   zmsk(ji  ,ijp1) = 1._wp 
    12321200            END DO 
    12331201         END DO 
    12341202         IF( lk_mpp )   CALL mpp_max( zrmax )   ! max over the global domain 
     1203         ! lateral boundary condition on zmsk: keep 1 along closed boundary (use of MAX) 
     1204         ztmp(:,:) = zmsk(:,:)   ;   CALL lbc_lnk( zmsk, 'T', 1._wp ) 
     1205         DO jj = 1, nlcj 
     1206            DO ji = 1, nlci 
     1207                zmsk(ji,jj) = MAX( zmsk(ji,jj), ztmp(ji,jj) ) 
     1208            END DO 
     1209         END DO 
    12351210         ! 
    1236          IF(lwp)WRITE(numout,*) 'zgr_sco :   iter= ',jl, ' rmax= ', zrmax 
     1211         IF(lwp)WRITE(numout,*) 'zgr_sco :   iter= ',jl, ' rmax= ', zrmax, ' nb of pt= ', INT( SUM(zmsk(:,:) ) ) 
    12371212         ! 
    12381213         DO jj = 1, nlcj 
    12391214            DO ji = 1, nlci 
    1240                zenv(ji,jj) = MAX(zenv(ji,jj), ztmpi1(ji,jj), ztmpi2(ji,jj), ztmpj1(ji,jj), ztmpj2(ji,jj) ) 
     1215               iip1 = MIN( ji+1, nlci )     ! last  line (ji=nlci) 
     1216               ijp1 = MIN( jj+1, nlcj )     ! last  raw  (jj=nlcj) 
     1217               iim1 = MAX( ji-1,  1  )      ! first line (ji=nlci) 
     1218               ijm1 = MAX( jj-1,  1  )      ! first raw  (jj=nlcj) 
     1219               IF( zmsk(ji,jj) == 1._wp ) THEN 
     1220                  ztmp(ji,jj) =   (                                                                                   & 
     1221             &      zenv(iim1,ijp1)*zmsk(iim1,ijp1) + zenv(ji,ijp1)*zmsk(ji,ijp1) + zenv(iip1,ijp1)*zmsk(iip1,ijp1)   & 
     1222             &    + zenv(iim1,jj  )*zmsk(iim1,jj  ) + zenv(ji,jj  )*    2._wp     + zenv(iip1,jj  )*zmsk(iip1,jj  )   & 
     1223             &    + zenv(iim1,ijm1)*zmsk(iim1,ijm1) + zenv(ji,ijm1)*zmsk(ji,ijm1) + zenv(iip1,ijm1)*zmsk(iip1,ijm1)   & 
     1224             &                    ) / (                                                                               & 
     1225             &                      zmsk(iim1,ijp1) +               zmsk(ji,ijp1) +                 zmsk(iip1,ijp1)   & 
     1226             &    +                 zmsk(iim1,jj  ) +                   2._wp     +                 zmsk(iip1,jj  )   & 
     1227             &    +                 zmsk(iim1,ijm1) +               zmsk(ji,ijm1) +                 zmsk(iip1,ijm1)   & 
     1228             &                        ) 
     1229               ENDIF 
    12411230            END DO 
    12421231         END DO 
    12431232         ! 
    1244          CALL lbc_lnk( zenv, 'T', 1._wp ) 
     1233         DO jj = 1, nlcj 
     1234            DO ji = 1, nlci 
     1235               IF( zmsk(ji,jj) == 1._wp )   zenv(ji,jj) = MAX( ztmp(ji,jj), bathy(ji,jj) ) 
     1236            END DO 
     1237         END DO 
     1238         ! 
     1239         ! Apply lateral boundary condition   CAUTION: keep the value when the lbc field is zero 
     1240         ztmp(:,:) = zenv(:,:)   ;   CALL lbc_lnk( zenv, 'T', 1._wp ) 
     1241         DO jj = 1, nlcj 
     1242            DO ji = 1, nlci 
     1243               IF( zenv(ji,jj) == 0._wp )   zenv(ji,jj) = ztmp(ji,jj) 
     1244            END DO 
     1245         END DO 
    12451246         !                                                  ! ================ ! 
    12461247      END DO                                                !     End loop     ! 
    12471248      !                                                     ! ================ ! 
    12481249      ! 
    1249 !     DO jj = 1, jpj 
    1250 !        DO ji = 1, jpi 
    1251 !           zenv(ji,jj) = MAX( zenv(ji,jj), rn_sbot_min ) ! set all points to avoid undefined scale values 
    1252 !        END DO 
    1253 !     END DO 
     1250      ! Fill ghost rows with appropriate values to avoid undefined e3 values with some mpp decompositions 
     1251      DO ji = nlci+1, jpi  
     1252         zenv(ji,1:nlcj) = zenv(nlci,1:nlcj) 
     1253      END DO 
     1254      ! 
     1255      DO jj = nlcj+1, jpj 
     1256         zenv(:,jj) = zenv(:,nlcj) 
     1257      END DO 
    12541258      ! 
    12551259      ! Envelope bathymetry saved in hbatt 
    12561260      hbatt(:,:) = zenv(:,:)  
    1257  
    12581261      IF( MINVAL( gphit(:,:) ) * MAXVAL( gphit(:,:) ) <= 0._wp ) THEN 
    12591262         CALL ctl_warn( ' s-coordinates are tapered in vicinity of the Equator' ) 
    12601263         DO jj = 1, jpj 
    12611264            DO ji = 1, jpi 
    1262                ztaper = EXP( -(gphit(ji,jj)/8._wp)**2 ) 
     1265               ztaper = EXP( -(gphit(ji,jj)/8._wp)**2._wp ) 
    12631266               hbatt(ji,jj) = rn_sbot_max * ztaper + hbatt(ji,jj) * ( 1._wp - ztaper ) 
    12641267            END DO 
     
    13751378      fsde3w(:,:,:) = gdep3w(:,:,:) 
    13761379      ! 
    1377       where (e3t   (:,:,:).eq.0.0)  e3t(:,:,:) = 1.0 
    1378       where (e3u   (:,:,:).eq.0.0)  e3u(:,:,:) = 1.0 
    1379       where (e3v   (:,:,:).eq.0.0)  e3v(:,:,:) = 1.0 
    1380       where (e3f   (:,:,:).eq.0.0)  e3f(:,:,:) = 1.0 
    1381       where (e3w   (:,:,:).eq.0.0)  e3w(:,:,:) = 1.0 
    1382       where (e3uw  (:,:,:).eq.0.0)  e3uw(:,:,:) = 1.0 
    1383       where (e3vw  (:,:,:).eq.0.0)  e3vw(:,:,:) = 1.0 
    1384  
     1380      where (e3t   (:,:,:).eq.0.0)  e3t(:,:,:) = 1._wp 
     1381      where (e3u   (:,:,:).eq.0.0)  e3u(:,:,:) = 1._wp 
     1382      where (e3v   (:,:,:).eq.0.0)  e3v(:,:,:) = 1._wp 
     1383      where (e3f   (:,:,:).eq.0.0)  e3f(:,:,:) = 1._wp 
     1384      where (e3w   (:,:,:).eq.0.0)  e3w(:,:,:) = 1._wp 
     1385      where (e3uw  (:,:,:).eq.0.0)  e3uw(:,:,:) = 1._wp 
     1386      where (e3vw  (:,:,:).eq.0.0)  e3vw(:,:,:) = 1._wp 
     1387 
     1388#if defined key_agrif 
     1389      ! Ensure meaningful vertical scale factors in ghost lines/columns 
     1390      IF( .NOT. Agrif_Root() ) THEN 
     1391         !   
     1392         IF((nbondi == -1).OR.(nbondi == 2)) THEN 
     1393            e3u(1,:,:) = e3u(2,:,:) 
     1394         ENDIF 
     1395         ! 
     1396         IF((nbondi ==  1).OR.(nbondi == 2)) THEN 
     1397            e3u(nlci-1,:,:) = e3u(nlci-2,:,:) 
     1398         ENDIF 
     1399         ! 
     1400         IF((nbondj == -1).OR.(nbondj == 2)) THEN 
     1401            e3v(:,1,:) = e3v(:,2,:) 
     1402         ENDIF 
     1403         ! 
     1404         IF((nbondj ==  1).OR.(nbondj == 2)) THEN 
     1405            e3v(:,nlcj-1,:) = e3v(:,nlcj-2,:) 
     1406         ENDIF 
     1407         ! 
     1408      ENDIF 
     1409#endif 
    13851410 
    13861411      fsdept(:,:,:) = gdept (:,:,:) 
     
    14311456         WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(1,1,jk), fsdepw(1,1,jk),     & 
    14321457            &                                 fse3t (1,1,jk), fse3w (1,1,jk), jk=1,jpk ) 
    1433          DO jj = mj0(20), mj1(20) 
    1434             DO ji = mi0(20), mi1(20) 
     1458         iip1 = MIN(20, jpiglo-1)  ! for config with i smaller than 20 points 
     1459         ijp1 = MIN(20, jpjglo-1)  ! for config with j smaller than 20 points 
     1460         DO jj = mj0(ijp1), mj1(ijp1) 
     1461            DO ji = mi0(iip1), mi1(iip1) 
    14351462               WRITE(numout,*) 
    1436                WRITE(numout,*) ' domzgr: vertical coordinates : point (20,20,k)   bathy = ', bathy(ji,jj), hbatt(ji,jj) 
     1463               WRITE(numout,*) ' domzgr: vertical coordinates : point (',iip1,',',ijp1,',k)   bathy = ',  & 
     1464                  &                                              bathy(ji,jj), hbatt(ji,jj) 
    14371465               WRITE(numout,*) ' ~~~~~~  --------------------' 
    14381466               WRITE(numout,"(9x,' level   gdept    gdepw    gde3w     e3t      e3w  ')") 
     
    14411469            END DO 
    14421470         END DO 
    1443          DO jj = mj0(74), mj1(74) 
    1444             DO ji = mi0(100), mi1(100) 
     1471         iip1 = MIN(  74, jpiglo-1) 
     1472         ijp1 = MIN( 100, jpjglo-1) 
     1473         DO jj = mj0(ijp1), mj1(ijp1) 
     1474            DO ji = mi0(iip1), mi1(iip1) 
    14451475               WRITE(numout,*) 
    1446                WRITE(numout,*) ' domzgr: vertical coordinates : point (100,74,k)   bathy = ', bathy(ji,jj), hbatt(ji,jj) 
     1476               WRITE(numout,*) ' domzgr: vertical coordinates : point (',iip1,',',ijp1,',k)   bathy = ',  & 
     1477                  &                                              bathy(ji,jj), hbatt(ji,jj) 
    14471478               WRITE(numout,*) ' ~~~~~~  --------------------' 
    14481479               WRITE(numout,"(9x,' level   gdept    gdepw    gde3w     e3t      e3w  ')") 
     
    15011532      END DO 
    15021533      ! 
    1503       CALL wrk_dealloc( jpi, jpj,      zenv, ztmpi1, ztmpi2, ztmpj1, ztmpj2, zri, zrj, zhbat                           )      ! 
     1534      CALL wrk_dealloc( jpi, jpj,      zenv, ztmp, zmsk, zri, zrj, zhbat                           ) 
     1535      ! 
    15041536      IF( nn_timing == 1 )  CALL timing_stop('zgr_sco') 
    15051537      ! 
     
    17301762      ENDDO 
    17311763      ! 
    1732       CALL lbc_lnk(e3t ,'T',1.) ; CALL lbc_lnk(e3u ,'T',1.) 
    1733       CALL lbc_lnk(e3v ,'T',1.) ; CALL lbc_lnk(e3f ,'T',1.) 
    1734       CALL lbc_lnk(e3w ,'T',1.) 
    1735       CALL lbc_lnk(e3uw,'T',1.) ; CALL lbc_lnk(e3vw,'T',1.) 
    1736       ! 
    17371764      !                                               ! ============= 
    17381765 
     
    18311858      !!---------------------------------------------------------------------- 
    18321859      ! 
    1833       pf =   (   TANH( rn_theta * ( -(pk-0.5_wp) / REAL(jpkm1) + rn_thetb )  )   & 
     1860      pf =   (   TANH( rn_theta * ( -(pk-0.5_wp) / REAL(jpkm1,wp) + rn_thetb )  )   & 
    18341861         &     - TANH( rn_thetb * rn_theta                                )  )   & 
    18351862         & * (   COSH( rn_theta                           )                      & 
     
    18571884      ! 
    18581885      IF ( rn_theta == 0 ) then      ! uniform sigma 
    1859          pf1 = - ( pk1 - 0.5_wp ) / REAL( jpkm1 ) 
     1886         pf1 = - ( pk1 - 0.5_wp ) / REAL( jpkm1,wp ) 
    18601887      ELSE                        ! stretched sigma 
    1861          pf1 =   ( 1._wp - pbb ) * ( SINH( rn_theta*(-(pk1-0.5_wp)/REAL(jpkm1)) ) ) / SINH( rn_theta )              & 
    1862             &  + pbb * (  (TANH( rn_theta*( (-(pk1-0.5_wp)/REAL(jpkm1)) + 0.5_wp) ) - TANH( 0.5_wp * rn_theta )  )  & 
     1888         pf1 =   ( 1._wp - pbb ) * ( SINH( rn_theta*(-(pk1-0.5_wp)/REAL(jpkm1,wp)) ) ) / SINH( rn_theta )              & 
     1889            &  + pbb * (  (TANH( rn_theta*( (-(pk1-0.5_wp)/REAL(jpkm1,wp)) + 0.5_wp) ) - TANH( 0.5_wp * rn_theta )  )  & 
    18631890            &        / ( 2._wp * TANH( 0.5_wp * rn_theta ) )  ) 
    18641891      ENDIF 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90

    r3294 r4153  
    2929 
    3030   REAL(wp), PARAMETER :: gamma1 = 1._wp/3._wp  ! =1/4 quick      ; =1/3  3rd order UBS 
    31    REAL(wp), PARAMETER :: gamma2 = 1._wp/8._wp  ! =0   2nd order  ; =1/8 4th order centred 
     31   REAL(wp), PARAMETER :: gamma2 = 1._wp/32._wp ! =0   2nd order  ; =1/32 4th order centred 
    3232 
    3333   PUBLIC   dyn_adv_ubs   ! routine called by step.F90 
     
    5757      !!                       = 1/3  3rd order Upstream biased scheme 
    5858      !!                gamma2 = 0    2nd order finite differencing  
    59       !!                       = 1/8 4th order finite differencing 
     59      !!                       = 1/32 4th order finite differencing 
    6060      !!      For stability reasons, the first term of the fluxes which cor- 
    6161      !!      responds to a second order centered scheme is evaluated using   
     
    6464      !!      before velocity (forward in time).  
    6565      !!      Default value (hard coded in the begining of the module) are  
    66       !!      gamma1=1/3 and gamma2=1/8. 
     66      !!      gamma1=1/3 and gamma2=1/32. 
    6767      !! 
    6868      !! ** Action : - (ua,va) updated with the 3D advective momentum trends 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_flt.F90

    r4147 r4153  
    109109      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    110110      REAL(wp) ::   z2dt, z2dtg, zgcb, zbtd, ztdgu, ztdgv   ! local scalars 
    111       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zub, zvb 
    112111      !!---------------------------------------------------------------------- 
    113112      ! 
    114113      IF( nn_timing == 1 )  CALL timing_start('dyn_spg_flt') 
    115114      ! 
    116       CALL wrk_alloc( jpi,jpj,jpk, zub, zvb ) 
    117115      ! 
    118116      IF( kt == nit000 ) THEN 
     
    213211         DO jk = 1, jpkm1 
    214212            DO ji = 1, jpij 
    215                spgu(ji,1) = spgu(ji,1) + fse3u(ji,1,jk) * ua(ji,1,jk) 
    216                spgv(ji,1) = spgv(ji,1) + fse3v(ji,1,jk) * va(ji,1,jk) 
     213               spgu(ji,1) = spgu(ji,1) + fse3u_a(ji,1,jk) * ua(ji,1,jk) 
     214               spgv(ji,1) = spgv(ji,1) + fse3v_a(ji,1,jk) * va(ji,1,jk) 
    217215            END DO 
    218216         END DO 
     
    221219            DO jj = 2, jpjm1 
    222220               DO ji = 2, jpim1 
    223                   spgu(ji,jj) = spgu(ji,jj) + fse3u(ji,jj,jk) * ua(ji,jj,jk) 
    224                   spgv(ji,jj) = spgv(ji,jj) + fse3v(ji,jj,jk) * va(ji,jj,jk) 
     221                  spgu(ji,jj) = spgu(ji,jj) + fse3u_a(ji,jj,jk) * ua(ji,jj,jk) 
     222                  spgv(ji,jj) = spgv(ji,jj) + fse3v_a(ji,jj,jk) * va(ji,jj,jk) 
    225223               END DO 
    226224            END DO 
     
    360358      IF( lrst_oce ) CALL flt_rst( kt, 'WRITE' ) 
    361359      ! 
    362       CALL wrk_dealloc( jpi,jpj,jpk, zub, zvb ) 
    363360      ! 
    364361      IF( nn_timing == 1 )  CALL timing_stop('dyn_spg_flt') 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/ICB/icb_oce.F90

    r4147 r4153  
    3737   USE par_oce   ! ocean parameters 
    3838   USE lib_mpp   ! MPP library 
    39    USE fldread   ! read input fields (FLD type) 
    4039 
    4140   IMPLICIT NONE 
     
    148147   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   :: griddata                           !: work array for icbrst 
    149148 
    150    TYPE(FLD), PUBLIC, ALLOCATABLE     , DIMENSION(:)       ::   sf_icb   !: structure: file information, fields read 
    151  
    152149   !!---------------------------------------------------------------------- 
    153150   !! NEMO/OPA 3.3 , NEMO Consortium (2011) 
     
    165162      ! 
    166163      icb_alloc = 0 
    167 !!      ALLOCATE( berg_grid                      ,                                               & 
    168       ALLOCATE(                                                                                & 
    169          &      berg_grid%calving    (jpi,jpj) , berg_grid%calving_hflx (jpi,jpj)          ,   & 
     164      ALLOCATE( berg_grid%calving    (jpi,jpj) , berg_grid%calving_hflx (jpi,jpj)          ,   & 
    170165         &      berg_grid%stored_heat(jpi,jpj) , berg_grid%floating_melt(jpi,jpj)          ,   & 
    171166         &      berg_grid%maxclass   (jpi,jpj) , berg_grid%stored_ice   (jpi,jpj,nclasses) ,   & 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/ICB/icbini.F90

    r4147 r4153  
    3535   PUBLIC   icb_init  ! routine called in nemogcm.F90 module 
    3636 
    37    CHARACTER(len=100) ::   cn_dir          ! Root directory for location of icb files 
    38    TYPE(FLD_N)        ::   sn_icb          ! information about the calving file to be read 
    39  
     37   CHARACTER(len=100)                                 ::   cn_dir = './'   !: Root directory for location of icb files 
     38   TYPE(FLD_N)                                        ::   sn_icb          !: information about the calving file to be read 
     39   TYPE(FLD), PUBLIC, ALLOCATABLE     , DIMENSION(:)  ::   sf_icb          !: structure: file information, fields read 
     40                                                                           !: used in icbini and icbstp 
    4041   !!---------------------------------------------------------------------- 
    4142   !! NEMO/OPA 3.3 , NEMO Consortium (2011) 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/ICB/icbstp.F90

    r3614 r4153  
    2424   USE lib_mpp 
    2525   USE iom 
     26   USE fldread 
    2627   USE timing         ! timing 
    2728 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90

    r4152 r4153  
    3131   USE sbc_oce, ONLY :   nn_fsbc         ! ocean space and time domain 
    3232   USE trc_oce, ONLY :   nn_dttrc        !  !: frequency of step on passive tracers 
     33   USE icb_oce, ONLY :   class_num       !  !: iceberg classes 
    3334   USE domngb          ! ocean space and time domain 
    3435   USE phycst          ! physical constants 
     
    9697      clname = cdname 
    9798      IF( TRIM(Agrif_CFixed()) /= '0' )   clname = TRIM(Agrif_CFixed())//"_"//TRIM(cdname) 
     99# if defined key_mpp_mpi 
    98100      CALL xios_context_initialize(TRIM(clname), mpi_comm_opa) 
     101# else 
     102      CALL xios_context_initialize(TRIM(clname), 0) 
     103# endif 
    99104      CALL iom_swap( cdname ) 
    100105 
     
    136141      CALL iom_set_axis_attr( "depthw", gdepw_0 ) 
    137142# if defined key_floats 
    138       CALL iom_set_axis_attr( "nfloat", (ji, ji=1,nfloat) ) 
     143      CALL iom_set_axis_attr( "nfloat", (/ (REAL(ji,wp), ji=1,nfloat) /) ) 
    139144# endif 
     145      CALL iom_set_axis_attr( "icbcla", class_num ) 
    140146       
    141147      ! automatic definitions of some of the xml attributs 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/LBC/lbclnk.F90

    r4152 r4153  
    281281   END SUBROUTINE lbc_lnk_3d 
    282282 
    283    SUBROUTINE lbc_bdy_lnk_3d( pt3d, cd_type, psgn, ib_bdy ) 
    284       !!--------------------------------------------------------------------- 
    285       !!                  ***  ROUTINE lbc_bdy_lnk  *** 
    286       !! 
    287       !! ** Purpose :   wrapper rountine to 'lbc_lnk_3d'. This wrapper is used 
    288       !!                to maintain the same interface with regards to the mpp case 
    289       !! 
    290       !!---------------------------------------------------------------------- 
    291       CHARACTER(len=1)                , INTENT(in   )           ::   cd_type   ! nature of pt3d grid-points 
    292       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout)           ::   pt3d      ! 3D array on which the lbc is applied 
    293       REAL(wp)                        , INTENT(in   )           ::   psgn      ! control of the sign  
    294       INTEGER                                                   ::   ib_bdy    ! BDY boundary set 
    295       !! 
    296       CALL lbc_lnk_3d( pt3d, cd_type, psgn) 
    297  
    298    END SUBROUTINE lbc_bdy_lnk_3d 
    299  
    300    SUBROUTINE lbc_bdy_lnk_2d( pt2d, cd_type, psgn, ib_bdy ) 
    301       !!--------------------------------------------------------------------- 
    302       !!                  ***  ROUTINE lbc_bdy_lnk  *** 
    303       !! 
    304       !! ** Purpose :   wrapper rountine to 'lbc_lnk_3d'. This wrapper is used 
    305       !!                to maintain the same interface with regards to the mpp case 
    306       !! 
    307       !!---------------------------------------------------------------------- 
    308       CHARACTER(len=1)                , INTENT(in   )           ::   cd_type   ! nature of pt3d grid-points 
    309       REAL(wp), DIMENSION(jpi,jpj),     INTENT(inout)           ::   pt2d      ! 3D array on which the lbc is applied 
    310       REAL(wp)                        , INTENT(in   )           ::   psgn      ! control of the sign  
    311       INTEGER                                                   ::   ib_bdy    ! BDY boundary set 
    312       !! 
    313       CALL lbc_lnk_2d( pt2d, cd_type, psgn) 
    314  
    315    END SUBROUTINE lbc_bdy_lnk_2d 
    316  
    317283   SUBROUTINE lbc_lnk_2d( pt2d, cd_type, psgn, cd_mpp, pval ) 
    318284      !!--------------------------------------------------------------------- 
     
    401367   END SUBROUTINE lbc_lnk_2d 
    402368 
     369#endif 
     370 
     371 
     372   SUBROUTINE lbc_bdy_lnk_3d( pt3d, cd_type, psgn, ib_bdy ) 
     373      !!--------------------------------------------------------------------- 
     374      !!                  ***  ROUTINE lbc_bdy_lnk  *** 
     375      !! 
     376      !! ** Purpose :   wrapper rountine to 'lbc_lnk_3d'. This wrapper is used 
     377      !!                to maintain the same interface with regards to the mpp 
     378      !case 
     379      !! 
     380      !!---------------------------------------------------------------------- 
     381      CHARACTER(len=1)                , INTENT(in   )           ::   cd_type   ! nature of pt3d grid-points 
     382      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout)           ::   pt3d      ! 3D array on which the lbc is applied 
     383      REAL(wp)                        , INTENT(in   )           ::   psgn      ! control of the sign  
     384      INTEGER                                                   ::   ib_bdy    ! BDY boundary set 
     385      !! 
     386      CALL lbc_lnk_3d( pt3d, cd_type, psgn) 
     387 
     388   END SUBROUTINE lbc_bdy_lnk_3d 
     389 
     390   SUBROUTINE lbc_bdy_lnk_2d( pt2d, cd_type, psgn, ib_bdy ) 
     391      !!--------------------------------------------------------------------- 
     392      !!                  ***  ROUTINE lbc_bdy_lnk  *** 
     393      !! 
     394      !! ** Purpose :   wrapper rountine to 'lbc_lnk_3d'. This wrapper is used 
     395      !!                to maintain the same interface with regards to the mpp 
     396      !case 
     397      !! 
     398      !!---------------------------------------------------------------------- 
     399      CHARACTER(len=1)                , INTENT(in   )           ::   cd_type   ! nature of pt3d grid-points 
     400      REAL(wp), DIMENSION(jpi,jpj),     INTENT(inout)           ::   pt2d      ! 3D array on which the lbc is applied 
     401      REAL(wp)                        , INTENT(in   )           ::   psgn      ! control of the sign  
     402      INTEGER                                                   ::   ib_bdy    ! BDY boundary set 
     403      !! 
     404      CALL lbc_lnk_2d( pt2d, cd_type, psgn) 
     405 
     406   END SUBROUTINE lbc_bdy_lnk_2d 
     407 
     408 
    403409   SUBROUTINE lbc_lnk_2d_e( pt2d, cd_type, psgn, jpri, jprj ) 
    404410      !!--------------------------------------------------------------------- 
     
    425431   END SUBROUTINE lbc_lnk_2d_e 
    426432 
    427 # endif 
    428433#endif 
    429434 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90

    r4152 r4153  
    21842184!!gm Remark : this is very time consumming!!! 
    21852185      !                                         ! ------------------------ ! 
    2186             IF( ijpt0 > ijpt1 .OR. iipt0 > iipt1 ) THEN 
     2186        IF(((nbondi .ne. 0) .AND. (ktype .eq. 2)) .OR. ((nbondj .ne. 0) .AND. (ktype .eq. 1))) THEN 
    21872187            ! there is nothing to be migrated 
    21882188               lmigr = .FALSE. 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/LBC/mppini_2.h90

    r4147 r4153  
    129129      irestj = 1 + MOD( jpjglo - nrecj -1 , jpnj ) 
    130130 
     131#if defined key_nemocice_decomp 
     132      ! Change padding to be consistent with CICE 
     133      ilci(1:jpni-1      ,:) = jpi 
     134      ilci(jpni          ,:) = jpiglo - (jpni - 1) * (jpi - nreci) 
     135 
     136      ilcj(:,      1:jpnj-1) = jpj 
     137      ilcj(:,          jpnj) = jpjglo - (jpnj - 1) * (jpj - nrecj) 
     138#else 
    131139      ilci(1:iresti      ,:) = jpi 
    132140      ilci(iresti+1:jpni ,:) = jpi-1 
     
    134142      ilcj(:,      1:irestj) = jpj 
    135143      ilcj(:, irestj+1:jpnj) = jpj-1 
     144#endif 
    136145 
    137146      IF(lwp) WRITE(numout,*) 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r4152 r4153  
    229229 
    230230      ! 
    231                           CALL sbc_ssm_init 
     231                          CALL sbc_ssm_init               ! Sea-surface mean fields initialisation 
    232232      ! 
    233233      IF( ln_ssr      )   CALL sbc_ssr_init               ! Sea-Surface Restoring initialisation 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/SOL/solmat.F90

    r3609 r4153  
    3030   USE lbclnk          ! lateral boudary conditions 
    3131   USE lib_mpp         ! distributed memory computing 
     32   USE c1d               ! 1D vertical configuration 
    3233   USE in_out_manager  ! I/O manager 
    3334   USE timing          ! timing 
     
    271272       
    272273      ! SOR and PCG solvers 
     274      IF( lk_c1d ) CALL lbc_lnk( gcdmat, 'T', 1._wp ) ! 1D case bmask =/0  but gcdmat not define everywhere  
    273275      DO jj = 1, jpj 
    274276         DO ji = 1, jpi 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/OPA_SRC/step.F90

    r4152 r4153  
    284284      IF( lk_cpl           )   CALL sbc_cpl_snd( kstp )     ! coupled mode : field exchanges 
    285285      ! 
    286       IF( kstp == nitend   )  THEN 
     286#if defined key_iomput 
     287      IF( kstp == nitend .OR. indic < 0 ) THEN  
    287288                      CALL iom_context_finalize( "nemo"     ) ! needed for XIOS+AGRIF 
    288289         IF( ln_crs ) CALL iom_context_finalize( "nemo_crs" ) !  
    289290      ENDIF 
     291#endif 
    290292      ! 
    291293      IF( nn_timing == 1 .AND.  kstp == nit000  )   CALL timing_reset 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90

    r4148 r4153  
    129129                  zoxy   = trn(ji,jj,jk,jpoxy) * ( rhop(ji,jj,jk) / 1.e3 ) 
    130130                  ! Fe2+ oxydation rate from Santana-Casiano et al. (2005) 
    131                   zkox   = 35.407 - 6.7109 * zph + 0.5342 * zph * zph - 5362.6 / ( tsn(ji,jj,1,jp_tem) + 273.15 )  & 
     131                  zkox   = 35.407 - 6.7109 * zph + 0.5342 * zph * zph - 5362.6 / ( tsn(ji,jj,jk,jp_tem) + 273.15 )  & 
    132132                    &    - 0.04406 * SQRT( tsn(ji,jj,jk,jp_sal) ) - 0.002847 * tsn(ji,jj,jk,jp_sal) 
    133133                  zkox   = ( 10.** zkox ) * spd 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90

    r4152 r4153  
    433433#endif 
    434434            &                    + trn(:,:,:,jpsfe)                     & 
    435             &                    + trn(:,:,:,jpzoo)                     & 
     435            &                    + trn(:,:,:,jpzoo) * ferat3            & 
    436436            &                    + trn(:,:,:,jpmes) * ferat3            ) * cvol(:,:,:)  ) 
    437437 
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/SETTE/iodef_sette.xml

    r4147 r4153  
    2121    --> 
    2222     
    23     <file_definition type="multiple_file" sync_freq="1d" min_digits="4"> 
     23    <file_definition type="multiple_file" name="@expname@_@freq@_@startdate@_@enddate@" sync_freq="1d" min_digits="4"> 
    2424     
    2525      <file_group id="1h" output_freq="1h"  output_level="10" enabled=".FALSE."/> <!-- 1h files --> 
     
    5454     
    5555   <axis_definition>   
    56       <axis id="deptht" long_name="Vertical T levels" unit="m"  /><!-- positive=".FALSE." --> 
    57       <axis id="depthu" long_name="Vertical U levels" unit="m"  /><!-- positive=".FALSE." --> 
    58       <axis id="depthv" long_name="Vertical V levels" unit="m"  /><!-- positive=".FALSE." --> 
    59       <axis id="depthw" long_name="Vertical W levels" unit="m"  /><!-- positive=".FALSE." --> 
     56      <axis id="deptht" long_name="Vertical T levels" unit="m" positive="down" /> 
     57      <axis id="depthu" long_name="Vertical U levels" unit="m" positive="down" /> 
     58      <axis id="depthv" long_name="Vertical V levels" unit="m" positive="down" /> 
     59      <axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" /> 
    6060      <axis id="nfloat" long_name="Float number"      unit="-"  /> 
     61      <axis id="icbcla" long_name="Iceberg class"     unit="-"  /> 
    6162   </axis_definition>  
    6263     
  • branches/2013/dev_LOCEAN_2013/NEMOGCM/TOOLS/MISCELLANEOUS/chk_iomput.sh

    r2404 r4153  
    3535       echo ' --insrc              only print all variable definitions found in the source code' 
    3636       echo 'Examples' 
    37        echo '      chk_iomput.sh' 
    38        echo '      chk_iomput.sh --help' 
    39        echo '      chk_iomput.sh ../../CONFIG/ORCA2_LIM/EXP00/iodef.xml "../../NEMO/OPA_SRC/ ../../NEMO/LIM_SRC_2/"' 
     37       echo '      ./chk_iomput.sh' 
     38       echo '      ./chk_iomput.sh --help' 
     39       echo '      ./chk_iomput.sh ../../CONFIG/ORCA2_LIM/EXP00/iodef.xml "../../NEMO/OPA_SRC/ ../../NEMO/LIM_SRC_2/"' 
    4040       echo 
    4141       exit ;; 
     
    5959#------------------------------------------------ 
    6060# 
    61 [ $inxml -eq 1 ] && grep "< *field * id *=" $xmlfile 
     61external=$( grep -c "<field_definition.* src=" $xmlfile ) 
     62if [ $external -eq 1 ] 
     63then 
     64    xmlfield_def=$( grep "<field_definition.* src=" $xmlfile | sed -e 's/.*src="\([^"]*\)".*/\1/' ) 
     65    xmlfield_def=$( dirname $xmlfile )/$xmlfield_def    
     66else 
     67    xmlfield_def=$xmlfile 
     68fi 
     69[ $inxml -eq 1 ] && grep "< *field * id *=" $xmlfield_def 
    6270[ $insrc -eq 1 ] && find $srcdir -name "*.[Ffh]90" -exec grep -iH "^[^\!]*call  *iom_put *(" {} \; 
    6371[ $(( $insrc + $inxml )) -ge 1 ] && exit 
     
    7179# list of variables used in "CALL iom_put" 
    7280# 
    73 varlistsrc=$( find $srcdir -name "*.[Ffh]90" -exec grep -i  "^[^\!]*call  *iom_put *(" {} \; | sed -e "s/.*iom_put *( *[\"\']\([^\"\']*\)[\"\'] *,.*/\1/" | sort -d ) 
     81badvarsrc=$( find $srcdir -name "*.[Ffh]90" -exec grep -i  "^[^\!]*call  *iom_put *(" {} \; | sed -e "s/.*iom_put *( *[\"\']\([^\"\']*\)[\"\'] *,.*/\1/" | grep -ic iom_put ) 
     82if [ $badvarsrc -ne 0 ] 
     83then 
     84    echo "The following call to iom_put cannot be checked" 
     85    echo 
     86    find $srcdir -name "*.[Ffh]90" -exec grep -i  "^[^\!]*call  *iom_put *(" {} \; | sed -e "s/.*iom_put *( *[\"\']\([^\"\']*\)[\"\'] *,.*/\1/" | grep -i iom_put | sort -d  
     87    echo 
     88fi 
     89varlistsrc=$( find $srcdir -name "*.[Ffh]90" -exec grep -i  "^[^\!]*call  *iom_put *(" {} \; | sed -e "s/.*iom_put *( *[\"\']\([^\"\']*\)[\"\'] *,.*/\1/" | grep -vi iom_put | sort -d ) 
    7490# 
    7591# list of variables defined in the xml file 
    7692# 
    77 varlistxml=$( grep "< *field * id *=" $xmlfile  | sed -e "s/^.*< *field * id *= *[\"\']\([^\"\']*\)[\"\'].*/\1/" | sort -d ) 
     93varlistxml=$( grep "< *field.* id *=" $xmlfield_def  | sed -e "s/^.*< *field.* id *= *[\"\']\([^\"\']*\)[\"\'].*/\1/" | sort -d ) 
    7894# 
    7995# list of variables to be outputed in the xml file 
    8096# 
    81 varlistout=$( grep "< *field * ref *=" $xmlfile  | sed -e "s/^.*< *field * ref *= *[\"\']\([^\"\']*\)[\"\'].*/\1/" | sort -d ) 
     97varlistout=$( grep "< *field.* field_ref *=" $xmlfile  | sed -e "s/^.*< *field.* field_ref *= *[\"\']\([^\"\']*\)[\"\'].*/\1/" | sort -d ) 
    8298# 
    8399echo "--------------------------------------------------" 
    84100echo  check if all iom_put found in $srcdir 
    85 echo  have a corresponding variable definition in $xmlfile 
     101echo  have a corresponding variable definition in $xmlfield_def 
    86102echo "--------------------------------------------------" 
    87103for var in $varlistsrc 
     
    90106    if [ $tst -ne 1 ]  
    91107    then 
    92    echo "problem with $var: $tst lines corresponding to its definition in $xmlfile, but defined in the code in" 
     108   echo "problem with $var: $tst lines corresponding to its definition in $xmlfield_def, but defined in the code in" 
    93109   for f in $srclist 
    94110   do 
Note: See TracChangeset for help on using the changeset viewer.