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 717 for trunk/NEMO/OPA_SRC – NEMO

Changeset 717 for trunk/NEMO/OPA_SRC


Ignore:
Timestamp:
2007-10-16T13:03:55+02:00 (17 years ago)
Author:
smasson
Message:

finalize the first set of modifications related to ticket:3

Location:
trunk/NEMO/OPA_SRC
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DIA/diawri.F90

    r714 r717  
    1616   USE sbc_oce         ! surface boundary condition: ocean 
    1717   USE sbc_ice         ! surface boundary condition: ice 
     18   USE sbcssr          ! restoring term toward SST/SSS climatology 
    1819   USE phycst          ! physical constants 
    1920   USE ocfzpt          ! ocean freezing point 
     
    243244            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    244245#endif 
    245 #if ! defined key_dynspg_rl && defined key_ice_lim 
    246          ! sowaflup = sowaflep + sorunoff + sowafldp + a term associated to 
    247          !    internal damping to Levitus that can be diagnosed from others 
    248          ! sowaflcd = sowaflep + sorunoff + sowafldp + iowaflup 
    249          CALL histdef( nid_T, "iowaflup", "Ice=>ocean net freshwater"          , "kg/m2/s",   &  ! fsalt 
    250             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    251          CALL histdef( nid_T, "sowaflep", "atmos=>ocean net freshwater"        , "kg/m2/s",   &  ! fmass 
    252             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    253 #endif 
     246!!$#if ! defined key_dynspg_rl && defined key_ice_lim 
     247!!$         ! sowaflup = sowaflep + sorunoff + sowafldp + a term associated to 
     248!!$         !    internal damping to Levitus that can be diagnosed from others 
     249!!$         ! sowaflcd = sowaflep + sorunoff + sowafldp + iowaflup 
     250!!$         CALL histdef( nid_T, "iowaflup", "Ice=>ocean net freshwater"          , "kg/m2/s",   &  ! fsalt 
     251!!$            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
     252!!$         CALL histdef( nid_T, "sowaflep", "atmos=>ocean net freshwater"        , "kg/m2/s",   &  ! fmass 
     253!!$            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
     254!!$#endif 
    254255         CALL histdef( nid_T, "sowaflup", "Net Upward Water Flux"              , "Kg/m2/s",   &  ! emp 
    255256            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    256          CALL histdef( nid_T, "sorunoff", "Runoffs"                            , "Kg/m2/s",   &  ! runoffs 
    257             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
     257!!$         CALL histdef( nid_T, "sorunoff", "Runoffs"                            , "Kg/m2/s",   &  ! runoffs 
     258!!$            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    258259         CALL histdef( nid_T, "sowaflcd", "concentration/dilution water flux"  , "kg/m2/s",   &  ! emps 
    259260            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
     
    421422      CALL histwrite( nid_T, "sossheig", it, sshn          , ndim_hT, ndex_hT )   ! sea surface height 
    422423#endif 
    423 #if ! defined key_dynspg_rl && defined key_ice_lim 
    424       CALL histwrite( nid_T, "iowaflup", it, fsalt(:,:)    , ndim_hT, ndex_hT )   ! ice=>ocean water flux 
    425       CALL histwrite( nid_T, "sowaflep", it, fmass(:,:)    , ndim_hT, ndex_hT )   ! atmos=>ocean water flux 
    426 #endif 
     424!!$#if ! defined key_dynspg_rl && defined key_ice_lim 
     425!!$      CALL histwrite( nid_T, "iowaflup", it, fsalt(:,:)    , ndim_hT, ndex_hT )   ! ice=>ocean water flux 
     426!!$      CALL histwrite( nid_T, "sowaflep", it, fmass(:,:)    , ndim_hT, ndex_hT )   ! atmos=>ocean water flux 
     427!!$#endif 
    427428      CALL histwrite( nid_T, "sowaflup", it, emp           , ndim_hT, ndex_hT )   ! upward water flux 
    428       CALL histwrite( nid_T, "sorunoff", it, runoff        , ndim_hT, ndex_hT )   ! runoff 
     429!!$      CALL histwrite( nid_T, "sorunoff", it, runoff        , ndim_hT, ndex_hT )   ! runoff 
    429430      CALL histwrite( nid_T, "sowaflcd", it, emps          , ndim_hT, ndex_hT )   ! c/d water flux 
    430431      zw2d(:,:) = emps(:,:) * sn(:,:,1) * tmask(:,:,1) 
  • trunk/NEMO/OPA_SRC/DIA/diawri_dimg.h90

    r714 r717  
    7676    !! * modules used 
    7777    USE lib_mpp 
    78     USE dtasst, ONLY : sst 
    7978 
    8079    !! * Arguments 
  • trunk/NEMO/OPA_SRC/DOM/domain.F90

    r709 r717  
    143143      NAMELIST/namrun/ no    , cexper   , ln_rstart , nrstdt , nit000,         & 
    144144         &             nitend, ndate0   , nleapy   , ninist , nstock,          & 
    145          &             nwrite, nrunoff  , ln_dimgnnn 
     145         &             nwrite, ln_dimgnnn 
    146146 
    147147      NAMELIST/namdom/ ntopo , e3zps_min, e3zps_rat, ngrid  , nmsh  ,   & 
    148148         &             nacc  , atfp     , rdt      , rdtmin , rdtmax,   & 
    149          &             rdth  , rdtbt    , nfice    , nfbulk , nclosea 
     149         &             rdth  , rdtbt    , nclosea 
    150150      NAMELIST/namcla/ n_cla 
    151151      !!---------------------------------------------------------------------- 
     
    174174         WRITE(numout,*) '           frequency of restart file       nstock    = ', nstock 
    175175         WRITE(numout,*) '           frequency of output file        nwrite    = ', nwrite 
    176          WRITE(numout,*) '           runoff option                   nrunoff   = ', nrunoff 
    177176         WRITE(numout,*) '           multi file dimgout           ln_dimgnnn   = ', ln_dimgnnn 
    178177      ENDIF 
     
    258257      ENDIF 
    259258 
    260       IF( lk_ice_lim ) THEN 
    261          IF(lwp) WRITE(numout,*) '           ice model coupling frequency      nfice  = ', nfice 
    262          nfbulk = nfice 
    263          IF( MOD( rday, nfice*rdt ) /= 0 ) THEN  
    264             IF(lwp) WRITE(numout,*) ' ' 
    265             IF(lwp) WRITE(numout,*) 'W A R N I N G :  nfice is NOT a multiple of the number of time steps in a day' 
    266             IF(lwp) WRITE(numout,*) ' ' 
    267          ENDIF 
    268          IF(lwp) WRITE(numout,*) '           bulk computation frequency       nfbulk  = ', nfbulk, ' = nfice if ice model used' 
    269          IF(lwp) WRITE(numout,*) '           flag closed sea or not           nclosea = ', nclosea 
    270       ENDIF 
    271  
    272259      ! Default values 
    273260      n_cla = 0 
  • trunk/NEMO/OPA_SRC/LDF/ldfeiv.F90

    r708 r717  
    1717   USE dom_oce         ! ocean space and time domain 
    1818   USE sbc_oce         ! surface boundary condition: ocean 
     19   USE sbcrnf          ! river runoffs 
    1920   USE ldftra_oce      ! ocean tracer   lateral physics 
    2021   USE phycst          ! physical constants 
     
    177178            DO ji = 1, jpi 
    178179               zaht      = ( 1. -  MIN( 1., ABS( ff(ji,jj) / zf20 ) ) ) * ( aht0 - zaht_min )  & 
    179                   &      + aht0 * upsrnfh(ji,jj)                          ! enhanced near river mouths 
     180                  &      + aht0 * rnfmsk(ji,jj)                          ! enhanced near river mouths 
    180181               ahtu(ji,jj) = MAX( MAX( zaht_min, aeiu(ji,jj) ) + zaht, aht0 ) 
    181182               ahtv(ji,jj) = MAX( MAX( zaht_min, aeiv(ji,jj) ) + zaht, aht0 ) 
     
    352353            DO ji = 1, jpi 
    353354               zaht      = ( 1. -  MIN( 1., ABS( ff(ji,jj) / zf20 ) ) ) * ( aht0 - zaht_min )  & 
    354                   &      + aht0 * upsrnfh(ji,jj)                          ! enhanced near river mouths 
     355                  &      + aht0 * rnfmsk(ji,jj)                          ! enhanced near river mouths 
    355356               ahtu(ji,jj) = MAX( MAX( zaht_min, aeiu(ji,jj) ) + zaht, aht0 ) 
    356357               ahtv(ji,jj) = MAX( MAX( zaht_min, aeiv(ji,jj) ) + zaht, aht0 ) 
  • trunk/NEMO/OPA_SRC/SBC/sbc_oce.F90

    r713 r717  
    1818   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   qns       !: sea heat flux: non solar                     [W/m2] 
    1919   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   qsr       !: sea heat flux:     solar                     [W/m2] 
    20    REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   qrp       !: heat flux damping                            [w/m2] 
    2120   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   emp       !: freshwater budget: volume flux               [Kg/m2/s] 
    2221   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   emps      !: freshwater budget: concentration/dillution   [Kg/m2/s] 
    23    REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   erp       !: evaporation damping                          [kg/m2/s] 
    2422 
    2523   !!---------------------------------------------------------------------- 
  • trunk/NEMO/OPA_SRC/SBC/sbcice_lim.F90

    r702 r717  
    104104         DO jj = 2, jpj 
    105105            DO ji = fs_2, jpi   ! vector opt. 
    106                u_oce(ji,jj) = 0.5 * ( ssu_m(ji-1,jj  ) + ssu_m(ji-1,jj-1) ) 
    107                v_oce(ji,jj) = 0.5 * ( ssv_m(ji  ,jj-1) + ssv_m(ji-1,jj-1) ) 
     106               ui_oce(ji,jj) = 0.5 * ( ssu_m(ji-1,jj  ) + ssu_m(ji-1,jj-1) ) 
     107               vi_oce(ji,jj) = 0.5 * ( ssv_m(ji  ,jj-1) + ssv_m(ji-1,jj-1) ) 
    108108            END DO 
    109109         END DO 
    110          CALL lbc_lnk( u_oce, 'I', -1. )   ! I-point (i.e. F-point with ice indices) 
    111          CALL lbc_lnk( v_oce, 'I', -1. )   ! I-point (i.e. F-point with ice indices) 
     110         CALL lbc_lnk( ui_oce, 'I', -1. )   ! I-point (i.e. F-point with ice indices) 
     111         CALL lbc_lnk( vi_oce, 'I', -1. )   ! I-point (i.e. F-point with ice indices) 
    112112 
    113113         ! ... masked sea surface freezing temperature [Kelvin] (set to rt0 over land) 
     
    124124            CALL blk_ice_clio() 
    125125         CASE( 4 )           ! CORE bulk formulation 
    126             CALL blk_ice_core( sist     , u_ice    , v_ice    , alb_ice_cs,                      & 
     126            CALL blk_ice_core( sist     , ui_ice   , vi_ice   , alb_ice_cs,                      & 
    127127               &                                     utaui_ice, vtaui_ice , qns_ice , qsr_ice,   & 
    128128               &                                     qla_ice  , dqns_ice  , dqla_ice,            & 
     
    148148         ;                              CALL lim_thd      ( kt )      ! Ice thermodynamics  
    149149         ;                              CALL lim_sbc      ( kt )      ! Ice/Ocean Mass & Heat fluxes  
    150          IF( MOD( kt+nfice-1, ninfo ) == 0 .OR.   & 
     150         IF( MOD( kt+nn_fsbc-1, ninfo ) == 0 .OR.   & 
    151151            &  ntmoy == 1 )             CALL lim_dia      ( kt )      ! Ice Diagnostics  
    152152         ;                              CALL lim_wri      ( kt )      ! Ice outputs  
  • trunk/NEMO/OPA_SRC/SBC/sbcssr.F90

    r713 r717  
    3333   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_sst   ! structure of input SST (file informations, fields read) 
    3434   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_sss   ! structure of input SSS (file informations, fields read) 
     35 
     36   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   erp       !: evaporation damping                          [kg/m2/s] 
     37   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   qrp       !: heat flux damping                            [w/m2] 
    3538 
    3639   !! * Namelist namsbc_ssr 
     
    99102            WRITE(numout,*) '                           (Yes=2, volume flux) ' 
    100103            WRITE(numout,*) '          dQ/dT (restoring magnitude on SST)     dqdt     = ', dqdt, ' W/m2/K' 
    101             WRITE(numout,*) '          dE/dS (restoring magnitude on SST)     deds     = ', deds, ' ???' 
     104            WRITE(numout,*) '          dE/dS (restoring magnitude on SST)     deds     = ', deds, ' ...' 
    102105         ENDIF 
    103106 
  • trunk/NEMO/OPA_SRC/TRA/traadv_cen2.F90

    r708 r717  
    11MODULE traadv_cen2 
    2    !!============================================================================== 
    3    !!                       ***  MODULE  traadv_cen2  *** 
     2   !!====================================================================== 
     3   !!                     ***  MODULE  traadv_cen2  *** 
    44   !! Ocean active tracers:  horizontal & vertical advective trend 
    5    !!============================================================================== 
    6    !! History :  8.2  !  01-08  (G. Madec, E. Durand)  trahad+trazad = traadv  
    7    !!            8.5  !  02-06  (G. Madec)  F90: Free form and module 
    8    !!            9.0  !  05-11  (V. Garnier) Surface pressure gradient organization 
    9    !!            " "  !  06-04  (R. Benshila, G. Madec) Step reorganization 
     5   !!====================================================================== 
     6   !! History :   8.2  !  01-08  (G. Madec, E. Durand)  trahad+trazad=traadv  
     7   !!             8.5  !  02-06  (G. Madec)  F90: Free form and module 
     8   !!             9.0  !  04-08  (C. Talandier) New trends organization 
     9   !!             " "  !  05-11  (V. Garnier) Surface pressure gradient organization 
     10   !!             " "  !  06-04  (R. Benshila, G. Madec) Step reorganization 
     11   !!             " "  !  06-07  (G. madec)  add ups_orca_set routine 
    1012   !!---------------------------------------------------------------------- 
    1113 
     
    1416   !!                  vertical advection trends using a seconder order 
    1517   !!                  centered scheme. (k-j-i loops) 
     18   !!   ups_orca_set : allow mixed upstream/centered scheme in specific 
     19   !!                  area (set for orca 2 and 4 only) 
    1620   !!---------------------------------------------------------------------- 
    1721   USE oce             ! ocean dynamics and active tracers 
     
    2125   USE trdmod_oce      ! ocean variables trends 
    2226   USE trdmod          ! ocean active tracers trends  
     27   USE closea          ! closed sea 
    2328   USE trabbl          ! advective term in the BBL 
    2429   USE ocfzpt          ! 
     30   USE sbcrnf          ! river runoffs 
    2531   USE in_out_manager  ! I/O manager 
    2632   USE lib_mpp 
     
    3238   PRIVATE 
    3339 
    34    PUBLIC   tra_adv_cen2   ! routine called by step.F90 
     40   PUBLIC   tra_adv_cen2    ! routine called by step.F90 
     41   PUBLIC   ups_orca_set    ! routine used by traadv_cen2_jki.F90 
     42 
     43   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   upsmsk    !: mixed upstream/centered scheme near some straits  
     44   !                                                   !  and in closed seas (orca 2 and 4 configurations) 
    3545 
    3646   REAL(wp), DIMENSION(jpi,jpj) ::   btr2   ! inverse of T-point surface [1/(e1t*e2t)] 
     
    4050#  include "vectopt_loop_substitute.h90" 
    4151   !!---------------------------------------------------------------------- 
    42    !!   OPA 9.0 , LOCEAN-IPSL (2005)  
     52   !!   OPA 9.0 , LOCEAN-IPSL (2006)  
    4353   !! $Id$ 
    4454   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    119129      !! 
    120130      INTEGER  ::   ji, jj, jk                           ! dummy loop indices 
    121       REAL(wp) ::                           & 
    122          zbtr, zta, zsa, zfui, zfvj,        &  ! temporary scalars 
    123          zhw, ze3tr, zcofi, zcofj,          &  !    "         " 
    124          zupsut, zupsvt, zupsus, zupsvs,    &  !    "         " 
    125          zfp_ui, zfp_vj, zfm_ui, zfm_vj,    &  !    "         " 
    126          zcofk, zupst, zupss, zcent,        &  !    "         " 
    127          zcens, zfp_w, zfm_w,               &  !    "         " 
    128          zcenut, zcenvt, zcenus, zcenvs,    &  !    "         " 
    129          z_hdivn_x, z_hdivn_y, z_hdivn 
    130       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zwz, ztrdt, zind   ! 3D workspace  
     131      REAL(wp) ::   zta, zsa, zbtr, zhw, ze3tr,       &  ! temporary scalars 
     132         &          zfp_ui, zfp_vj, zfp_w , zfui  ,   &  !    "         " 
     133         &          zfm_ui, zfm_vj, zfm_w , zfvj  ,   &  !    "         " 
     134         &          zcofi , zcofj , zcofk ,           &  !    "         " 
     135         &          zupsut, zupsus, zcenut, zcenus,   &  !    "         " 
     136         &          zupsvt, zupsvs, zcenvt, zcenvs,   &  !    "         " 
     137         &          zupst , zupss , zcent , zcens ,   &  !    "         " 
     138         &          z_hdivn_x, z_hdivn_y, z_hdivn  
     139      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zwz, ztrdt, zind   ! 3D workspace 
    131140      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zww, ztrds         !  "      " 
    132141      !!---------------------------------------------------------------------- 
     
    137146         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~   Vector optimization case' 
    138147         IF(lwp) WRITE(numout,*) 
    139          !  
    140          btr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:) ) 
     148         ! 
     149         upsmsk(:,:) = 0.e0                              ! not upstream by default 
     150         IF( cp_cfg == "orca" )   CALL ups_orca_set      ! set mixed Upstream/centered scheme near some straits 
     151         !                                               ! and in closed seas (orca2 and orca4 only) 
     152         !    
     153         btr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:) )        ! inverse of T-point surface 
    141154      ENDIF 
    142155 
     
    146159         DO jj = 1, jpj 
    147160            DO ji = 1, jpi 
    148                zind(ji,jj,jk) =  MAX ( upsrnfh(ji,jj) * upsrnfz(jk),     &  ! changing advection scheme near runoff 
    149                   &                    upsadv(ji,jj)                     &  ! in the vicinity of some straits 
     161               zind(ji,jj,jk) = MAX (   & 
     162                  rnfmsk(ji,jj) * rnfmsk_z(jk),      &  ! near runoff mouths (& closed sea outflows) 
     163                  upsmsk(ji,jj)                      &  ! some of some straits 
    150164#if defined key_ice_lim 
    151                   &                  , tmask(ji,jj,jk)                   &  ! half upstream tracer fluxes 
    152                   &                  * MAX( 0., SIGN( 1., fzptn(ji,jj)   &  ! if tn < ("freezing"+0.1 ) 
    153                   &                                +0.1-tn(ji,jj,jk) ) ) & 
     165                  !                                     ! below ice covered area (if tn < "freezing"+0.1 ) 
     166                  , MAX(  0., SIGN( 1., fzptn(ji,jj) + 0.1 - tn(ji,jj,jk) )  ) * tmask(ji,jj,jk)   & 
    154167#endif 
    155168                  &                  ) 
     
    158171      END DO 
    159172 
    160  
    161       !  Horizontal advective fluxes 
    162       ! ----------------------------- 
     173      ! I. Horizontal advective fluxes 
     174      ! ------------------------------ 
     175      !  Second order centered tracer flux at u and v-points 
     176      ! ----------------------------------------------------- 
    163177      !                                                ! =============== 
    164178      DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    208222               zbtr = btr2(ji,jj) / fse3t(ji,jj,jk) 
    209223#endif 
    210                ! horizontal advective trends 
    211                zta = - zbtr * (  zwx(ji,jj,jk) - zwx(ji-1,jj  ,jk)   & 
     224               zta = - zbtr * (  zwx(ji,jj,jk) - zwx(ji-1,jj  ,jk)   &    ! horizontal advective trends 
    212225                  &            + zwy(ji,jj,jk) - zwy(ji  ,jj-1,jk)  ) 
    213226               zsa = - zbtr * (  zww(ji,jj,jk) - zww(ji-1,jj  ,jk)   & 
    214227                  &            + zwz(ji,jj,jk) - zwz(ji  ,jj-1,jk)  ) 
    215                ! add it to the general tracer trends 
    216                ta(ji,jj,jk) = ta(ji,jj,jk) + zta 
     228               ta(ji,jj,jk) = ta(ji,jj,jk) + zta                          ! add it to the general tracer trends 
    217229               sa(ji,jj,jk) = sa(ji,jj,jk) + zsa 
    218230            END DO 
     
    279291         &                       tab3d_2=sa, clinfo2=            ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    280292 
    281       ! 4. "zonal" mean advective heat and salt transport  
    282       ! ------------------------------------------------- 
    283  
     293      ! "zonal" mean advective heat and salt transport 
    284294      IF( ln_diaptr .AND. ( MOD( kt, nf_ptr ) == 0 ) ) THEN 
    285295         IF( lk_zco ) THEN 
     
    313323      ENDIF 
    314324 
    315       ! 1. Vertical advective fluxes 
     325      ! 1. Vertical advective fluxes (Second order centered tracer flux at w-point) 
    316326      ! ---------------------------- 
    317       ! Second order centered tracer flux at w-point 
    318327      DO jk = 2, jpk 
    319328         DO jj = 2, jpjm1 
    320329            DO ji = fs_2, fs_jpim1   ! vector opt. 
    321                ! upstream indicator 
    322                zcofk = MAX( zind(ji,jj,jk-1), zind(ji,jj,jk) ) 
    323                ! velocity * 1/2 
    324                zhw = 0.5 * pwn(ji,jj,jk) 
    325                ! upstream scheme 
    326                zfp_w = zhw + ABS( zhw ) 
     330               zcofk = MAX( zind(ji,jj,jk-1), zind(ji,jj,jk) )         ! upstream indicator 
     331               zhw = 0.5 * pwn(ji,jj,jk)                               ! velocity * 1/2 
     332               zfp_w = zhw + ABS( zhw )                                ! upstream scheme 
    327333               zfm_w = zhw - ABS( zhw ) 
    328334               zupst = zfp_w * tb(ji,jj,jk) + zfm_w * tb(ji,jj,jk-1) 
    329335               zupss = zfp_w * sb(ji,jj,jk) + zfm_w * sb(ji,jj,jk-1) 
    330                ! centered scheme 
    331                zcent = zhw * ( tn(ji,jj,jk) + tn(ji,jj,jk-1) ) 
     336               zcent = zhw * ( tn(ji,jj,jk) + tn(ji,jj,jk-1) )         ! centered scheme 
    332337               zcens = zhw * ( sn(ji,jj,jk) + sn(ji,jj,jk-1) ) 
    333                ! mixed centered / upstream scheme 
    334                zwx(ji,jj,jk) = zcofk * zupst + (1.-zcofk) * zcent 
     338               zwx(ji,jj,jk) = zcofk * zupst + (1.-zcofk) * zcent      ! mixed centered / upstream scheme 
    335339               zwy(ji,jj,jk) = zcofk * zupss + (1.-zcofk) * zcens 
    336340            END DO 
     
    344348            DO ji = fs_2, fs_jpim1   ! vector opt. 
    345349               ze3tr = 1. / fse3t(ji,jj,jk) 
    346                ! vertical advective trends 
    347                zta = - ze3tr * ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) ) 
     350               zta = - ze3tr * ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) )     ! vertical advective trends 
    348351               zsa = - ze3tr * ( zwy(ji,jj,jk) - zwy(ji,jj,jk+1) ) 
    349                ! add it to the general tracer trends 
    350                ta(ji,jj,jk) =  ta(ji,jj,jk) + zta 
     352               ta(ji,jj,jk) =  ta(ji,jj,jk) + zta                      ! add it to the general tracer trends 
    351353               sa(ji,jj,jk) =  sa(ji,jj,jk) + zsa 
    352354            END DO 
     
    387389      ! 
    388390   END SUBROUTINE tra_adv_cen2 
     391    
     392    
     393   SUBROUTINE ups_orca_set 
     394      !!---------------------------------------------------------------------- 
     395      !!                  ***  ROUTINE ups_orca_set  *** 
     396      !!        
     397      !! ** Purpose :   add a portion of upstream scheme in area where the 
     398      !!                centered scheme generates too strong overshoot 
     399      !! 
     400      !! ** Method  :   orca (R4 and R2) confiiguration setting. Set upsmsk 
     401      !!                array to nozero value in some straith.  
     402      !! 
     403      !! ** Action : - upsmsk set to 1 at some strait, 0 elsewhere for orca 
     404      !!---------------------------------------------------------------------- 
     405      INTEGER  ::   ii0, ii1, ij0, ij1      ! temporary integers 
     406      !!---------------------------------------------------------------------- 
     407       
     408      ! mixed upstream/centered scheme near river mouths 
     409      ! ------------------------------------------------ 
     410      SELECT CASE ( jp_cfg ) 
     411      !                                        ! ======================= 
     412      CASE ( 4 )                               !  ORCA_R4 configuration  
     413         !                                     ! ======================= 
     414         !                                          ! Gibraltar Strait 
     415         ii0 =  70   ;   ii1 =  71 
     416         ij0 =  52   ;   ij1 =  53   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 
     417         ! 
     418         !                                     ! ======================= 
     419      CASE ( 2 )                               !  ORCA_R2 configuration  
     420         !                                     ! ======================= 
     421         !                                          ! Gibraltar Strait 
     422         ij0 = 102   ;   ij1 = 102 
     423         ii0 = 138   ;   ii1 = 138   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.20 
     424         ii0 = 139   ;   ii1 = 139   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.40 
     425         ii0 = 140   ;   ii1 = 140   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 
     426         ij0 = 101   ;   ij1 = 102 
     427         ii0 = 141   ;   ii1 = 141   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 
     428         !                                          ! Bab el Mandeb Strait 
     429         ij0 =  87   ;   ij1 =  88 
     430         ii0 = 164   ;   ii1 = 164   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.10 
     431         ij0 =  88   ;   ij1 =  88 
     432         ii0 = 163   ;   ii1 = 163   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25 
     433         ii0 = 162   ;   ii1 = 162   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.40 
     434         ii0 = 160   ;   ii1 = 161   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 
     435         ij0 =  89   ;   ij1 =  89 
     436         ii0 = 158   ;   ii1 = 160   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25 
     437         ij0 =  90   ;   ij1 =  90 
     438         ii0 = 160   ;   ii1 = 160   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25 
     439         !                                          ! Sound Strait 
     440         ij0 = 116   ;   ij1 = 116 
     441         ii0 = 144   ;   ii1 = 144   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25 
     442         ii0 = 145   ;   ii1 = 147   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 
     443         ii0 = 148   ;   ii1 = 148   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25 
     444         ! 
     445      END SELECT  
     446       
     447      ! mixed upstream/centered scheme over closed seas 
     448      ! ----------------------------------------------- 
     449      CALL clo_ups( upsmsk(:,:) ) 
     450      ! 
     451   END SUBROUTINE ups_orca_set 
    389452 
    390453   !!====================================================================== 
  • trunk/NEMO/OPA_SRC/TRA/traadv_cen2_jki.F90

    r708 r717  
    44   !! Ocean active tracers:  horizontal & vertical advective trend 
    55   !!============================================================================== 
    6    !! History :  8.2  !  01-08  (G. Madec, E. Durand)  trahad+trazad = traadv 
    7    !!            8.5  !  02-06  (G. Madec)  F90: Free form and module 
    8    !!            9.0  !  05-11  (V. Garnier) Surface pressure gradient organization 
    9    !!            " "  !  06-04  (R. Benshila, G. Madec) Step reorganization 
     6   !! History :   8.2  !  01-08  (G. Madec, E. Durand)  trahad+trazad = traadv 
     7   !!             8.5  !  02-06  (G. Madec)  F90: Free form and module 
     8   !!             9.0  !  04-08  (C. Talandier) New trends organization 
     9   !!             " "  !  05-11  (V. Garnier) Surface pressure gradient organization 
     10   !!             " "  !  06-04  (R. Benshila, G. Madec) Step reorganization 
     11   !!             " "  !  06-07  (G. madec)  add ups_orca_set routine 
    1012   !!---------------------------------------------------------------------- 
    1113 
    1214   !!---------------------------------------------------------------------- 
    1315   !!   tra_adv_cen2_jki : update the tracer trend with the horizontal and 
    14    !!                  vertical advection trends using a seconder order 
    15    !!                  centered scheme. Auto-tasking case, k-slab for 
    16    !!                  hor. adv., j-slab for vert. adv. (j-k-i loops) 
     16   !!                      vertical advection trends using a seconder order 
     17   !!                      centered scheme. Auto-tasking case, k-slab for 
     18   !!                      hor. adv., j-slab for vert. adv. (j-k-i loops) 
    1719   !!---------------------------------------------------------------------- 
    1820   USE oce             ! ocean dynamics and active tracers 
     
    2628   USE lib_mpp 
    2729   USE lbclnk          ! ocean lateral boundary condition (or mpp link) 
     30   USE sbcrnf          ! river runoffs 
    2831   USE in_out_manager  ! I/O manager 
    2932   USE diaptr          ! poleward transport diagnostics 
    3033   USE prtctl          ! Print control 
    31  
     34    
    3235   IMPLICIT NONE 
    3336   PRIVATE 
    3437 
    35    PUBLIC   tra_adv_cen2_jki   ! routine called by step.F90 
    36  
    37    REAL(wp), DIMENSION(jpi,jpj) ::   btr2   ! inverse of T-point surface [1/(e1t*e2t)] 
     38   PUBLIC   tra_adv_cen2_jki    ! routine called by step.F90 
     39 
     40   REAL(wp), DIMENSION(jpi,jpj) ::   btr2    ! inverse of T-point surface [1/(e1t*e2t)] 
    3841 
    3942   !! * Substitutions 
     
    8790      !!         zta+tn*divn=1/(e1t*e2t*e3t) { mi-1( e2u*e3u  un  di[tn] ) 
    8891      !!                                      +mj-1( e1v*e3v  vn  mj[tn] )  } 
     92      !!         C A U T I O N : the trend saved is the centered trend only. 
     93      !!      It does not take into account the upstream part of the scheme. 
    8994      !!         NB:in z-coordinate - full step (ln_zco=T) e3u=e3v=e3t, so  
    9095      !!      they vanish from the expression of the flux and divergence. 
     
    109114      !! 
    110115      !! ** Action :  - update (ta,sa) with the now advective tracer trends 
    111       !!              - save trends in (ztrdt,ztrds) ('key_trdtra') 
    112116      !!---------------------------------------------------------------------- 
    113       USE oce, ONLY :   zwx => ua   ! use ua as workspace 
    114       USE oce, ONLY :   zwy => va   ! use va as workspace 
    115       !! 
    116       INTEGER , INTENT(in)                         ::   kt    ! ocean time-step index 
    117       REAL(wp), INTENT(in), DIMENSION(jpi,jpj,jpk) ::   pun   ! ocean velocity u-component 
    118       REAL(wp), INTENT(in), DIMENSION(jpi,jpj,jpk) ::   pvn   ! ocean velocity v-component 
    119       REAL(wp), INTENT(in), DIMENSION(jpi,jpj,jpk) ::   pwn   ! ocean velocity w-component 
    120       !! 
     117      USE oce               ,   zwx => ua          ! use ua as workspace 
     118      USE oce               ,   zwy => va          ! use va as workspace 
     119      USE traadv_cen2, ONLY :   ups_orca_set,   &  ! upstream indicator near some straits  
     120         &                      upsmsk             ! and over closed sea (orca 2 and 4) 
     121 
     122      INTEGER , INTENT(in)                         ::   kt              ! ocean time-step index 
     123      REAL(wp), INTENT(in), DIMENSION(jpi,jpj,jpk) ::   pun, pvn, pwn   ! now ocean velocity fields 
     124 
    121125      INTEGER  ::   ji, jj, jk                           ! dummy loop indices 
    122       REAL(wp) ::                           & 
    123          zbtr, zta, zsa, zfui, zfvj,        &  ! temporary scalars 
    124          zhw, ze3tr, zcofi, zcofj,          &  !    "         " 
    125          zupsut, zupsvt, zupsus, zupsvs,    &  !    "         " 
    126          zfp_ui, zfp_vj, zfm_ui, zfm_vj,    &  !    "         " 
    127          zcofk, zupst, zupss, zcent,        &  !    "         " 
    128          zcens, zfp_w, zfm_w,               &  !    "         " 
    129          zcenut, zcenvt, zcenus, zcenvs,    &  !    "         " 
    130          z_hdivn_x, z_hdivn_y, z_hdivn 
    131       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zwz, ztrdt, zind   ! 3D workspace  
    132       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zww, ztrds         !  "      " 
     126      REAL(wp) ::   zta, zsa, zbtr, zhw, ze3tr,       &  ! temporary scalars 
     127         &          zfp_ui, zfp_vj, zfp_w , zfui  ,   &  !    "         " 
     128         &          zfm_ui, zfm_vj, zfm_w , zfvj  ,   &  !    "         " 
     129         &          zcofi , zcofj , zcofk ,           &  !    "         " 
     130         &          zupsut, zupsus, zcenut, zcenus,   &  !    "         " 
     131         &          zupsvt, zupsvs, zcenvt, zcenvs,   &  !    "         " 
     132         &          zupst , zupss , zcent , zcens ,   &  !    "         " 
     133         &          z_hdivn_x, z_hdivn_y, z_hdivn  
     134      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zwz, ztrdt, zind,   &  ! temporary workspace arrays 
     135         &                                  zww, ztrds             !    "         " 
    133136      !!---------------------------------------------------------------------- 
    134  
     137      ! 
    135138      IF( kt == nit000 ) THEN 
    136139         IF(lwp) WRITE(numout,*) 
     
    138141         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~   Auto-tasking case' 
    139142         IF(lwp) WRITE(numout,*) 
    140          ! 
    141          btr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:) ) 
     143         !          
     144         upsmsk(:,:) = 0.e0                              ! not upstream by default 
     145         IF( cp_cfg == "orca" )   CALL ups_orca_set      ! set mixed Upstream/centered scheme near some straits 
     146         !                                               ! and in closed seas (orca2 and orca4 only) 
     147 
     148         btr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:) )        ! inverse of T-point surface 
    142149      ENDIF 
    143150 
     
    147154      DO jk = 1, jpkm1                                 ! Horizontal slab 
    148155         !                                             ! =============== 
    149          !  Upstream / centered scheme indicator 
    150          ! -------------------------------------- 
     156 
     157         ! 0. Upstream / centered scheme indicator 
     158         ! --------------------------------------- 
    151159         DO jj = 1, jpj 
    152160            DO ji = 1, jpi 
    153                zind(ji,jj,jk) =  MAX (              & 
    154                   upsrnfh(ji,jj) * upsrnfz(jk),     &  ! changing advection scheme near runoff 
    155                   upsadv(ji,jj)                     &  ! in the vicinity of some straits 
     161               zind(ji,jj,jk) = MAX (   & 
     162                  rnfmsk(ji,jj) * rnfmsk_z(jk),      &  ! near runoff mouths (& closed sea outflows) 
     163                  upsmsk(ji,jj)                      &  ! some of some straits 
    156164#if defined key_ice_lim 
    157                   , tmask(ji,jj,jk)                 &  ! half upstream tracer fluxes if tn < ("freezing"+0.1 ) 
    158                   * MAX( 0., SIGN( 1., fzptn(ji,jj)+0.1-tn(ji,jj,jk) ) )   & 
    159 #endif 
    160                ) 
    161             END DO 
    162          END DO 
    163  
    164          !  Horizontal advective fluxes 
    165          ! ----------------------------- 
     165                  !                                     ! below ice covered area (if tn < "freezing"+0.1 ) 
     166                  , MAX(  0., SIGN( 1., fzptn(ji,jj) + 0.1 - tn(ji,jj,jk) )  ) * tmask(ji,jj,jk)   & 
     167#endif 
     168                  &                  ) 
     169            END DO 
     170         END DO 
     171 
     172 
     173         ! I. Horizontal advective fluxes 
     174         ! ------------------------------ 
    166175         ! Second order centered tracer flux at u and v-points 
    167176         DO jj = 1, jpjm1 
    168177            DO ji = 1, fs_jpim1   ! vector opt. 
    169                ! upstream indicator 
    170                zcofi = MAX( zind(ji+1,jj,jk), zind(ji,jj,jk) ) 
     178               zcofi = MAX( zind(ji+1,jj,jk), zind(ji,jj,jk) )               ! upstream indicator 
    171179               zcofj = MAX( zind(ji,jj+1,jk), zind(ji,jj,jk) ) 
    172                ! volume fluxes * 1/2 
    173 #if defined key_zco 
    174                zfui = 0.5 * e2u(ji,jj) * pun(ji,jj,jk) 
     180#if defined key_zco 
     181               zfui = 0.5 * e2u(ji,jj) * pun(ji,jj,jk)                       ! volume fluxes * 1/2 (zco) 
    175182               zfvj = 0.5 * e1v(ji,jj) * pvn(ji,jj,jk) 
    176183#else 
    177                zfui = 0.5 * e2u(ji,jj) * fse3u(ji,jj,jk) * pun(ji,jj,jk) 
     184               zfui = 0.5 * e2u(ji,jj) * fse3u(ji,jj,jk) * pun(ji,jj,jk)     ! volume fluxes * 1/2 
    178185               zfvj = 0.5 * e1v(ji,jj) * fse3v(ji,jj,jk) * pvn(ji,jj,jk) 
    179186#endif 
    180                ! upstream scheme 
    181                zfp_ui = zfui + ABS( zfui ) 
     187               zfp_ui = zfui + ABS( zfui )                                   ! upstream scheme 
    182188               zfp_vj = zfvj + ABS( zfvj ) 
    183189               zfm_ui = zfui - ABS( zfui ) 
     
    187193               zupsus = zfp_ui * sb(ji,jj,jk) + zfm_ui * sb(ji+1,jj  ,jk) 
    188194               zupsvs = zfp_vj * sb(ji,jj,jk) + zfm_vj * sb(ji  ,jj+1,jk) 
    189                ! centered scheme 
    190                zcenut = zfui * ( tn(ji,jj,jk) + tn(ji+1,jj  ,jk) ) 
     195               zcenut = zfui * ( tn(ji,jj,jk) + tn(ji+1,jj  ,jk) )           ! centered scheme 
    191196               zcenvt = zfvj * ( tn(ji,jj,jk) + tn(ji  ,jj+1,jk) ) 
    192197               zcenus = zfui * ( sn(ji,jj,jk) + sn(ji+1,jj  ,jk) ) 
    193198               zcenvs = zfvj * ( sn(ji,jj,jk) + sn(ji  ,jj+1,jk) ) 
    194                ! mixed centered / upstream scheme 
    195                zwx(ji,jj,jk) = zcofi * zupsut + (1.-zcofi) * zcenut 
     199               zwx(ji,jj,jk) = zcofi * zupsut + (1.-zcofi) * zcenut          ! mixed centered / upstream scheme 
    196200               zwy(ji,jj,jk) = zcofj * zupsvt + (1.-zcofj) * zcenvt 
    197201               zww(ji,jj,jk) = zcofi * zupsus + (1.-zcofi) * zcenus 
     
    200204         END DO 
    201205 
    202          ! Tracer flux divergence at t-point added to the general trend 
     206         ! 2. Tracer flux divergence at t-point added to the general trend 
     207         ! --------------------------------------------------------------- 
     208 
    203209         DO jj = 2, jpjm1 
    204210            DO ji = fs_2, fs_jpim1   ! vector opt. 
    205211#if defined key_zco 
    206                zbtr = btr2(ji,jj)  
    207 #else 
    208                zbtr = btr2(ji,jj) / fse3t(ji,jj,jk) 
    209 #endif 
    210                ! horizontal advective trends 
    211                zta = - zbtr * (  zwx(ji,jj,jk) - zwx(ji-1,jj  ,jk)   & 
     212               zbtr = btr2(ji,jj)                                           ! inverse of the volume (zco) 
     213#else 
     214               zbtr = btr2(ji,jj) / fse3t(ji,jj,jk)                         ! inverse of the volume 
     215#endif 
     216               zta = - zbtr * (  zwx(ji,jj,jk) - zwx(ji-1,jj  ,jk)   &      ! horizontal advective trends 
    212217                  &            + zwy(ji,jj,jk) - zwy(ji  ,jj-1,jk)  ) 
    213218               zsa = - zbtr * (  zww(ji,jj,jk) - zww(ji-1,jj  ,jk)   & 
    214219                  &            + zwz(ji,jj,jk) - zwz(ji  ,jj-1,jk)  ) 
    215                ! add it to the general tracer trends 
    216                ta(ji,jj,jk) = ta(ji,jj,jk) + zta 
     220               ta(ji,jj,jk) = ta(ji,jj,jk) + zta                            ! add it to the general tracer trends 
    217221               sa(ji,jj,jk) = sa(ji,jj,jk) + zsa 
    218222            END DO 
     
    225229         &                       tab3d_2=sa, clinfo2=            ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    226230 
    227       ! Save the horizontal advective trends for diagnostics 
     231      ! 3. Save the horizontal advective trends for diagnostic 
    228232      IF( l_trdtra )   THEN 
    229233         ztrdt(:,:,:) = 0.e0   ;   ztrds(:,:,:) = 0.e0 
     
    298302      ENDIF 
    299303 
    300       ! Vertical advection 
    301       ! -------------------- 
     304      ! II. Vertical advection 
     305      ! ---------------------- 
    302306!CDIR PARALLEL DO 
    303307!$OMP PARALLEL DO 
     
    312316         IF( lk_dynspg_rl ) THEN                          ! rigid lid : flux set to zero 
    313317            zwz(:,jj, 1 ) = 0.e0    ;    zww(:,jj, 1 ) = 0.e0 
    314          ELSE                                             ! free surface-constant volume 
     318         ELSE                                             ! free surface-constant volume : advection across the surface 
    315319            zwz(:,jj, 1 ) = pwn(:,jj,1) * tn(:,jj,1) 
    316320            zww(:,jj, 1 ) = pwn(:,jj,1) * sn(:,jj,1) 
    317321         ENDIF 
    318322          
    319          ! Vertical advective fluxes at w-point 
     323         ! 1. Vertical advective fluxes (Second order centered tracer flux at w-point) 
     324         ! ---------------------------- 
    320325         DO jk = 2, jpk 
    321326            DO ji = 2, jpim1 
    322                ! upstream indicator 
    323                zcofk = MAX( zind(ji,jj,jk-1), zind(ji,jj,jk) ) 
    324                ! velocity * 1/2 
    325                zhw = 0.5 * pwn(ji,jj,jk) 
    326                ! upstream scheme 
    327                zfp_w = zhw + ABS( zhw ) 
     327               zcofk = MAX( zind(ji,jj,jk-1), zind(ji,jj,jk) )          ! upstream indicator 
     328               zhw = 0.5 * pwn(ji,jj,jk)                                ! velocity * 1/2 
     329               zfp_w = zhw + ABS( zhw )                                 ! upstream scheme 
    328330               zfm_w = zhw - ABS( zhw ) 
    329331               zupst = zfp_w * tb(ji,jj,jk) + zfm_w * tb(ji,jj,jk-1) 
    330332               zupss = zfp_w * sb(ji,jj,jk) + zfm_w * sb(ji,jj,jk-1) 
    331                ! centered scheme 
    332                zcent = zhw * ( tn(ji,jj,jk) + tn(ji,jj,jk-1) ) 
     333               zcent = zhw * ( tn(ji,jj,jk) + tn(ji,jj,jk-1) )          ! centered scheme 
    333334               zcens = zhw * ( sn(ji,jj,jk) + sn(ji,jj,jk-1) ) 
    334                ! mixed centered / upstream scheme 
    335                zwz(ji,jj,jk) = zcofk * zupst + (1.-zcofk) * zcent 
     335               zwz(ji,jj,jk) = zcofk * zupst + (1.-zcofk) * zcent       ! mixed centered / upstream scheme 
    336336               zww(ji,jj,jk) = zcofk * zupss + (1.-zcofk) * zcens 
    337337            END DO 
    338338         END DO 
    339339 
    340          ! Tracer flux divergence at t-point added to the general trend 
     340         ! 2. Tracer flux divergence at t-point added to the general trend 
     341         ! ------------------------- 
    341342         DO jk = 1, jpkm1 
    342343            DO ji = 2, jpim1 
    343344               ze3tr = 1. / fse3t(ji,jj,jk) 
    344                ! vertical advective trends 
    345                zta = - ze3tr * ( zwz(ji,jj,jk) - zwz(ji,jj,jk+1) ) 
     345               zta = - ze3tr * ( zwz(ji,jj,jk) - zwz(ji,jj,jk+1) )      ! vertical advective trends 
    346346               zsa = - ze3tr * ( zww(ji,jj,jk) - zww(ji,jj,jk+1) ) 
    347                ! add it to the general tracer trends 
    348                ta(ji,jj,jk) =  ta(ji,jj,jk) + zta 
     347               ta(ji,jj,jk) =  ta(ji,jj,jk) + zta                       ! add it to the general tracer trends 
    349348               sa(ji,jj,jk) =  sa(ji,jj,jk) + zsa 
    350349            END DO 
     
    354353      !                                                ! =============== 
    355354 
    356       ! Save the vertical advective trends for diagnostic 
     355      ! 3. Save the vertical advective trends for diagnostic 
     356      ! ---------------------------------------------------- 
    357357      IF( l_trdtra )   THEN 
    358358         ! Recompute the vertical advection zta & zsa trends computed  
  • trunk/NEMO/OPA_SRC/ice_oce.F90

    r709 r717  
    3939      fcalving            !: Iceberg calving  
    4040# endif 
    41  
    42    REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   &  !: field exchanges with ice model to ocean 
    43       sst_io, sss_io , &  !: sea surface temperature (C) and salinity (PSU) 
    44       u_io  , v_io   , &  !: velocity at ice surface (m/s) 
    45       fsolar, fnsolar, &  !: solar and non-solar heat fluxes (W/m2) 
    46       fsalt , fmass  , &  !: salt and freshwater fluxes 
    47       ftaux , ftauy  , &  !: wind stresses 
    48       gtaux , gtauy       !: wind stresses 
    4941    
    5042   REAL(wp), PUBLIC ::   &  !: 
     
    5951#endif 
    6052 
    61    INTEGER, PUBLIC ::   &  !: namdom : space/time domain (namlist) 
    62       nfice =  5           !: coupling frequency OPA ICELLN  nfice  
    63  
    6453   !!---------------------------------------------------------------------- 
    6554END MODULE ice_oce 
  • trunk/NEMO/OPA_SRC/lbclnk.F90

    r699 r717  
    329329 
    330330 
    331    SUBROUTINE lbc_lnk_3d( pt3d, cd_type, psgn, cd_mpp ) 
     331   SUBROUTINE lbc_lnk_3d( pt3d, cd_type, psgn, cd_mpp, pval ) 
    332332      !!--------------------------------------------------------------------- 
    333333      !!                  ***  ROUTINE lbc_lnk_3d  *** 
     
    355355      CHARACTER(len=3), INTENT( in ), OPTIONAL ::    & 
    356356         cd_mpp        ! fill the overlap area only (here do nothing) 
     357      REAL(wp)        , INTENT(in   ), OPTIONAL           ::   pval      ! background value (used at closed boundaries) 
    357358 
    358359      !! * Local declarations 
    359360      INTEGER  ::   ji, jk 
    360361      INTEGER  ::   ijt, iju 
     362      REAL(wp) ::   zland 
    361363      !!---------------------------------------------------------------------- 
    362364      !!  OPA 9.0 , LOCEAN-IPSL (2005)  
     
    365367      !!---------------------------------------------------------------------- 
    366368 
    367       IF (PRESENT(cd_mpp)) THEN 
     369      IF( PRESENT( pval ) ) THEN      ! set land value (zero by default) 
     370         zland = pval 
     371      ELSE 
     372         zland = 0.e0 
     373      ENDIF 
     374 
     375 
     376      IF( PRESENT( cd_mpp ) ) THEN 
    368377         ! only fill the overlap area and extra allows  
    369378         ! this is in mpp case. In this module, just do nothing 
     
    385394            SELECT CASE ( cd_type ) 
    386395            CASE ( 'T' , 'U' , 'V' , 'W' )             ! T-, U-, V-, W-points 
    387                pt3d( 1 ,:,jk) = 0.e0 
    388                pt3d(jpi,:,jk) = 0.e0 
    389             CASE ( 'F' )                               ! F-point 
    390                pt3d(jpi,:,jk) = 0.e0 
     396               pt3d( 1 ,:,jk) = zland 
     397               pt3d(jpi,:,jk) = zland 
     398            CASE ( 'F' )                               ! F-point 
     399               pt3d(jpi,:,jk) = zland 
    391400            END SELECT 
    392401 
     
    402411            CASE ( 'T' , 'U' , 'W' )                   ! T-, U-, W-points 
    403412               pt3d(:, 1 ,jk) = pt3d(:,3,jk) 
    404                pt3d(:,jpj,jk) = 0.e0 
     413               pt3d(:,jpj,jk) = zland 
    405414            CASE ( 'V' , 'F' )                         ! V-, F-points 
    406415               pt3d(:, 1 ,jk) = psgn * pt3d(:,2,jk) 
    407                pt3d(:,jpj,jk) = 0.e0 
     416               pt3d(:,jpj,jk) = zland 
    408417            END SELECT 
    409418 
    410419         CASE ( 3 , 4 )                        ! *  North fold  T-point pivot 
    411420 
    412             pt3d( 1 ,jpj,jk) = 0.e0 
    413             pt3d(jpi,jpj,jk) = 0.e0 
     421            pt3d( 1 ,jpj,jk) = zland 
     422            pt3d(jpi,jpj,jk) = zland 
    414423 
    415424            SELECT CASE ( cd_type ) 
     
    417426               DO ji = 2, jpi 
    418427                  ijt = jpi-ji+2 
    419                   pt3d(ji, 1 ,jk) = 0.e0 
     428                  pt3d(ji, 1 ,jk) = zland 
    420429                  pt3d(ji,jpj,jk) = psgn * pt3d(ijt,jpj-2,jk) 
    421430               END DO 
     
    427436               DO ji = 1, jpi-1 
    428437                  iju = jpi-ji+1 
    429                   pt3d(ji, 1 ,jk) = 0.e0 
     438                  pt3d(ji, 1 ,jk) = zland 
    430439                  pt3d(ji,jpj,jk) = psgn * pt3d(iju,jpj-2,jk) 
    431440               END DO 
     
    437446                  DO ji = 2, jpi 
    438447                     ijt = jpi-ji+2 
    439                      pt3d(ji,  1  ,jk) = 0.e0 
     448                     pt3d(ji,  1  ,jk) = zland 
    440449                     pt3d(ji,jpj-1,jk) = psgn * pt3d(ijt,jpj-2,jk) 
    441450                     pt3d(ji,jpj  ,jk) = psgn * pt3d(ijt,jpj-3,jk) 
     
    451460         CASE ( 5 , 6 )                        ! *  North fold  F-point pivot 
    452461 
    453             pt3d( 1 ,jpj,jk) = 0.e0 
    454             pt3d(jpi,jpj,jk) = 0.e0 
     462            pt3d( 1 ,jpj,jk) = zland 
     463            pt3d(jpi,jpj,jk) = zland 
    455464 
    456465            SELECT CASE ( cd_type ) 
     
    458467               DO ji = 1, jpi 
    459468                  ijt = jpi-ji+1 
    460                   pt3d(ji, 1 ,jk) = 0.e0 
     469                  pt3d(ji, 1 ,jk) = zland 
    461470                  pt3d(ji,jpj,jk) = psgn * pt3d(ijt,jpj-1,jk) 
    462471               END DO 
     
    464473                  DO ji = 1, jpi-1 
    465474                     iju = jpi-ji 
    466                      pt3d(ji, 1 ,jk) = 0.e0 
     475                     pt3d(ji, 1 ,jk) = zland 
    467476                     pt3d(ji,jpj,jk) = psgn * pt3d(iju,jpj-1,jk) 
    468477                  END DO 
     
    470479                  DO ji = 1, jpi 
    471480                     ijt = jpi-ji+1 
    472                      pt3d(ji, 1 ,jk) = 0.e0 
     481                     pt3d(ji, 1 ,jk) = zland 
    473482                     pt3d(ji,jpj,jk) = psgn * pt3d(ijt,jpj-2,jk) 
    474483                  END DO 
     
    492501            SELECT CASE ( cd_type ) 
    493502            CASE ( 'T' , 'U' , 'V' , 'W' )             ! T-, U-, V-, W-points 
    494                pt3d(:, 1 ,jk) = 0.e0 
    495                pt3d(:,jpj,jk) = 0.e0 
    496             CASE ( 'F' )                               ! F-point 
    497                pt3d(:,jpj,jk) = 0.e0 
     503               pt3d(:, 1 ,jk) = zland 
     504               pt3d(:,jpj,jk) = zland 
     505            CASE ( 'F' )                               ! F-point 
     506               pt3d(:,jpj,jk) = zland 
    498507            END SELECT 
    499508 
     
    506515 
    507516 
    508    SUBROUTINE lbc_lnk_2d( pt2d, cd_type, psgn, cd_mpp ) 
     517   SUBROUTINE lbc_lnk_2d( pt2d, cd_type, psgn, cd_mpp, pval ) 
    509518      !!--------------------------------------------------------------------- 
    510519      !!                 ***  ROUTINE lbc_lnk_2d  *** 
     
    532541      CHARACTER(len=3), INTENT( in ), OPTIONAL ::    & 
    533542         cd_mpp        ! fill the overlap area only (here do nothing) 
     543      REAL(wp)        , INTENT(in   ), OPTIONAL           ::   pval      ! background value (used at closed boundaries) 
    534544 
    535545      !! * Local declarations 
    536546      INTEGER  ::   ji 
    537547      INTEGER  ::   ijt, iju 
     548      REAL(wp) ::   zland 
    538549      !!---------------------------------------------------------------------- 
    539       !!  OPA 8.5, LODYC-IPSL (2002) 
    540       !!---------------------------------------------------------------------- 
     550 
     551      IF( PRESENT( pval ) ) THEN      ! set land value (zero by default) 
     552         zland = pval 
     553      ELSE 
     554         zland = 0.e0 
     555      ENDIF 
    541556 
    542557      IF (PRESENT(cd_mpp)) THEN 
     
    556571         SELECT CASE ( cd_type ) 
    557572         CASE ( 'T' , 'U' , 'V' , 'W' )                ! T-, U-, V-, W-points 
    558             pt2d( 1 ,:) = 0.e0 
    559             pt2d(jpi,:) = 0.e0 
     573            pt2d( 1 ,:) = zland 
     574            pt2d(jpi,:) = zland 
    560575         CASE ( 'F' )                                  ! F-point, ice U-V point 
    561             pt2d(jpi,:) = 0.e0  
     576            pt2d(jpi,:) = zland 
    562577         CASE ( 'I' )                                  ! F-point, ice U-V point 
    563             pt2d( 1 ,:) = 0.e0  
    564             pt2d(jpi,:) = 0.e0  
     578            pt2d( 1 ,:) = zland 
     579            pt2d(jpi,:) = zland 
    565580         END SELECT 
    566581 
     
    576591         CASE ( 'T' , 'U' , 'W' )                      ! T-, U-, W-points 
    577592            pt2d(:, 1 ) = pt2d(:,3) 
    578             pt2d(:,jpj) = 0.e0 
     593            pt2d(:,jpj) = zland 
    579594         CASE ( 'V' , 'F' , 'I' )                      ! V-, F-points, ice U-V point 
    580595            pt2d(:, 1 ) = psgn * pt2d(:,2) 
    581             pt2d(:,jpj) = 0.e0 
     596            pt2d(:,jpj) = zland 
    582597         END SELECT 
    583598 
    584599      CASE ( 3 , 4 )                           ! * North fold  T-point pivot 
    585600 
    586          pt2d( 1 , 1 ) = 0.e0        !!!!!  bug gm ??? !Edmee 
    587          pt2d( 1 ,jpj) = 0.e0 
    588          pt2d(jpi,jpj) = 0.e0 
     601         pt2d( 1 , 1 ) = zland       !!!!!  bug gm ??? !Edmee 
     602         pt2d( 1 ,jpj) = zland 
     603         pt2d(jpi,jpj) = zland 
    589604 
    590605         SELECT CASE ( cd_type ) 
     
    593608            DO ji = 2, jpi 
    594609               ijt = jpi-ji+2 
    595                pt2d(ji, 1 ) = 0.e0 
     610               pt2d(ji, 1 ) = zland 
    596611               pt2d(ji,jpj) = psgn * pt2d(ijt,jpj-2) 
    597612            END DO 
     
    604619            DO ji = 1, jpi-1 
    605620               iju = jpi-ji+1 
    606                pt2d(ji, 1 ) = 0.e0 
     621               pt2d(ji, 1 ) = zland 
    607622               pt2d(ji,jpj) = psgn * pt2d(iju,jpj-2) 
    608623            END DO 
     
    615630            DO ji = 2, jpi 
    616631               ijt = jpi-ji+2 
    617                pt2d(ji, 1   ) = 0.e0 
     632               pt2d(ji, 1   ) = zland 
    618633               pt2d(ji,jpj-1) = psgn * pt2d(ijt,jpj-2) 
    619634               pt2d(ji,jpj  ) = psgn * pt2d(ijt,jpj-3) 
     
    628643 
    629644         CASE ( 'I' )                                  ! ice U-V point 
    630             pt2d(:, 1 ) = 0.e0 
     645            pt2d(:, 1 ) = zland 
    631646            pt2d(2,jpj) = psgn * pt2d(3,jpj-1) 
    632647            DO ji = 3, jpi 
     
    639654      CASE ( 5 , 6 )                           ! * North fold  F-point pivot 
    640655 
    641          pt2d( 1 , 1 ) = 0.e0           !!bug  ??? 
    642          pt2d( 1 ,jpj) = 0.e0 
    643          pt2d(jpi,jpj) = 0.e0 
     656         pt2d( 1 , 1 ) = zland          !!bug  ??? 
     657         pt2d( 1 ,jpj) = zland 
     658         pt2d(jpi,jpj) = zland 
    644659 
    645660         SELECT CASE ( cd_type ) 
     
    648663            DO ji = 1, jpi 
    649664               ijt = jpi-ji+1 
    650                pt2d(ji, 1 ) = 0.e0 
     665               pt2d(ji, 1 ) = zland 
    651666               pt2d(ji,jpj) = psgn * pt2d(ijt,jpj-1) 
    652667            END DO 
     
    655670            DO ji = 1, jpi-1 
    656671               iju = jpi-ji 
    657                pt2d(ji, 1 ) = 0.e0 
     672               pt2d(ji, 1 ) = zland 
    658673               pt2d(ji,jpj) = psgn * pt2d(iju,jpj-1) 
    659674            END DO 
     
    662677            DO ji = 1, jpi 
    663678               ijt = jpi-ji+1 
    664                pt2d(ji, 1 ) = 0.e0 
     679               pt2d(ji, 1 ) = zland 
    665680               pt2d(ji,jpj) = psgn * pt2d(ijt,jpj-2) 
    666681            END DO 
     
    681696 
    682697         CASE ( 'I' )                                  ! ice U-V point 
    683             pt2d( : , 1 ) = 0.e0 
    684             pt2d( 2 ,jpj) = 0.e0 
     698            pt2d( : , 1 ) = zland 
     699            pt2d( 2 ,jpj) = zland 
    685700            DO ji = 2 , jpim1 
    686701               ijt = jpi - ji + 2 
     
    694709         SELECT CASE ( cd_type ) 
    695710         CASE ( 'T' , 'U' , 'V' , 'W' )                ! T-, U-, V-, W-points 
    696             pt2d(:, 1 ) = 0.e0 
    697             pt2d(:,jpj) = 0.e0 
     711            pt2d(:, 1 ) = zland 
     712            pt2d(:,jpj) = zland 
    698713         CASE ( 'F' )                                  ! F-point 
    699             pt2d(:,jpj) = 0.e0 
     714            pt2d(:,jpj) = zland 
    700715         CASE ( 'I' )                                  ! ice U-V point 
    701             pt2d(:, 1 ) = 0.e0 
    702             pt2d(:,jpj) = 0.e0 
     716            pt2d(:, 1 ) = zland 
     717            pt2d(:,jpj) = zland 
    703718         END SELECT 
    704719 
  • trunk/NEMO/OPA_SRC/lib_mpp.F90

    r699 r717  
    597597#endif 
    598598 
    599    SUBROUTINE mpp_lnk_3d( ptab, cd_type, psgn, cd_mpp ) 
     599   SUBROUTINE mpp_lnk_3d( ptab, cd_type, psgn, cd_mpp, pval ) 
    600600      !!---------------------------------------------------------------------- 
    601601      !!                  ***  routine mpp_lnk_3d  *** 
     
    632632      CHARACTER(len=3), INTENT( in ), OPTIONAL ::    & 
    633633         cd_mpp        ! fill the overlap area only  
     634      REAL(wp)        , INTENT(in   ), OPTIONAL           ::   pval      ! background value (used at closed boundaries) 
    634635 
    635636      !! * Local variables 
     
    638639      INTEGER ::   ml_req1, ml_req2, ml_err     ! for key_mpi_isend 
    639640      INTEGER ::   ml_stat(MPI_STATUS_SIZE)     ! for key_mpi_isend 
     641      REAL(wp) ::   zland 
    640642      !!---------------------------------------------------------------------- 
    641643 
    642644      ! 1. standard boundary treatment 
    643645      ! ------------------------------ 
     646 
     647      IF( PRESENT( pval ) ) THEN      ! set land value (zero by default) 
     648         zland = pval 
     649      ELSE 
     650         zland = 0.e0 
     651      ENDIF 
    644652 
    645653      IF( PRESENT( cd_mpp ) ) THEN 
     
    662670            SELECT CASE ( cd_type ) 
    663671            CASE ( 'T', 'U', 'V', 'W' ) 
    664                ptab(     1       :jpreci,:,:) = 0.e0 
    665                ptab(nlci-jpreci+1:jpi   ,:,:) = 0.e0 
     672               ptab(     1       :jpreci,:,:) = zland 
     673               ptab(nlci-jpreci+1:jpi   ,:,:) = zland 
    666674            CASE ( 'F' ) 
    667                ptab(nlci-jpreci+1:jpi   ,:,:) = 0.e0 
     675               ptab(nlci-jpreci+1:jpi   ,:,:) = zland 
    668676            END SELECT  
    669677         ENDIF 
     
    673681         SELECT CASE ( cd_type ) 
    674682         CASE ( 'T', 'U', 'V', 'W' ) 
    675             ptab(:,     1       :jprecj,:) = 0.e0 
    676             ptab(:,nlcj-jprecj+1:jpj   ,:) = 0.e0 
     683            ptab(:,     1       :jprecj,:) = zland 
     684            ptab(:,nlcj-jprecj+1:jpj   ,:) = zland 
    677685         CASE ( 'F' ) 
    678             ptab(:,nlcj-jprecj+1:jpj   ,:) = 0.e0 
     686            ptab(:,nlcj-jprecj+1:jpj   ,:) = zland 
    679687         END SELECT 
    680688      
     
    10501058 
    10511059 
    1052    SUBROUTINE mpp_lnk_2d( pt2d, cd_type, psgn, cd_mpp ) 
     1060   SUBROUTINE mpp_lnk_2d( pt2d, cd_type, psgn, cd_mpp, pval ) 
    10531061      !!---------------------------------------------------------------------- 
    10541062      !!                  ***  routine mpp_lnk_2d  *** 
     
    10841092      CHARACTER(len=3), INTENT( in ), OPTIONAL ::    & 
    10851093         cd_mpp        ! fill the overlap area only  
     1094      REAL(wp)        , INTENT(in   ), OPTIONAL           ::   pval      ! background value (used at closed boundaries) 
    10861095 
    10871096      !! * Local variables 
     
    10921101      INTEGER  ::   ml_req1, ml_req2, ml_err     ! for key_mpi_isend 
    10931102      INTEGER  ::   ml_stat(MPI_STATUS_SIZE)     ! for key_mpi_isend 
     1103      REAL(wp) ::   zland 
    10941104      !!---------------------------------------------------------------------- 
     1105 
     1106      IF( PRESENT( pval ) ) THEN      ! set land value (zero by default) 
     1107         zland = pval 
     1108      ELSE 
     1109         zland = 0.e0 
     1110      ENDIF 
    10951111 
    10961112      ! 1. standard boundary treatment 
     
    11151131            SELECT CASE ( cd_type ) 
    11161132            CASE ( 'T', 'U', 'V', 'W' , 'I' ) 
    1117                pt2d(     1       :jpreci,:) = 0.e0 
    1118                pt2d(nlci-jpreci+1:jpi   ,:) = 0.e0 
     1133               pt2d(     1       :jpreci,:) = zland 
     1134               pt2d(nlci-jpreci+1:jpi   ,:) = zland 
    11191135            CASE ( 'F' ) 
    1120                pt2d(nlci-jpreci+1:jpi   ,:) = 0.e0 
     1136               pt2d(nlci-jpreci+1:jpi   ,:) = zland 
    11211137            END SELECT 
    11221138         ENDIF 
     
    11261142         SELECT CASE ( cd_type ) 
    11271143         CASE ( 'T', 'U', 'V', 'W' , 'I' ) 
    1128             pt2d(:,     1       :jprecj) = 0.e0 
    1129             pt2d(:,nlcj-jprecj+1:jpj   ) = 0.e0 
     1144            pt2d(:,     1       :jprecj) = zland 
     1145            pt2d(:,nlcj-jprecj+1:jpj   ) = zland 
    11301146         CASE ( 'F' ) 
    1131             pt2d(:,nlcj-jprecj+1:jpj   ) = 0.e0 
     1147            pt2d(:,nlcj-jprecj+1:jpj   ) = zland 
    11321148         END SELECT 
    11331149 
     
    13941410   
    13951411            CASE ( 'I' )                                  ! ice U-V point 
    1396                pt2d( 2 ,nlcj) = 0.e0 
     1412               pt2d( 2 ,nlcj) = zland 
    13971413               DO ji = 2 , nlci-1 
    13981414                  ijt = iloc - ji + 2 
  • trunk/NEMO/OPA_SRC/opa.F90

    r709 r717  
    309309#endif 
    310310 
    311       CALL flx_init                         ! Thermohaline forcing initialization 
    312  
    313       CALL flx_fwb_init                     ! FreshWater Budget correction 
    314  
    315311      CALL dia_ptr_init                     ! Poleward TRansports initialization 
    316312 
  • trunk/NEMO/OPA_SRC/restart.F90

    r709 r717  
    1919   USE phycst          ! physical constants 
    2020   USE daymod          ! calendar 
    21    USE ice_oce         ! ice variables 
    2221   USE cpl_oce, ONLY : lk_cpl              ! 
    2322   USE in_out_manager  ! I/O manager 
     
    138137      CALL iom_rstput( kt, nitrst, numrow, 'rotn'   , rotn    ) 
    139138      CALL iom_rstput( kt, nitrst, numrow, 'hdivn'  , hdivn   ) 
    140  
    141 #if defined key_ice_lim         
    142       CALL iom_rstput( kt, nitrst, numrow, 'nfice'  , REAL( nfice, wp) )   !  ice computation frequency 
    143       CALL iom_rstput( kt, nitrst, numrow, 'sst_io' , sst_io  ) 
    144       CALL iom_rstput( kt, nitrst, numrow, 'sss_io' , sss_io  ) 
    145       CALL iom_rstput( kt, nitrst, numrow, 'u_io'   , u_io    ) 
    146       CALL iom_rstput( kt, nitrst, numrow, 'v_io'   , v_io    ) 
    147 # if defined key_coupled 
    148       CALL iom_rstput( kt, nitrst, numrow, 'alb_ice', alb_ice ) 
    149 # endif 
    150 #endif 
    151 #if defined key_flx_bulk_monthly || defined key_flx_bulk_daily || defined key_flx_core  
    152       CALL iom_rstput( kt, nitrst, numrow, 'nfbulk' , REAL( nfbulk, wp) )   !  bulk computation frequency 
    153       CALL iom_rstput( kt, nitrst, numrow, 'gsst'   , gsst    ) 
    154 #endif 
    155139 
    156140      IF( nn_dynhpg_rst == 1 .OR. lk_vvl ) THEN 
     
    204188      !!                    has been stored in the restart file. 
    205189      !!---------------------------------------------------------------------- 
    206       REAL(wp) ::   zcoef, zkt, zrdt, zrdttra1, zndastp, znfice, znfbulk 
     190      REAL(wp) ::   zcoef, zkt, zrdt, zrdttra1, zndastp 
    207191#if defined key_ice_lim 
    208192      INTEGER  ::   ji, jj 
     
    299283      ENDIF 
    300284 
    301       !!sm: TO BE MOVED IN NEW SURFACE MODULE... 
    302  
    303 #if defined key_ice_lim 
    304       ! Louvain La Neuve Sea Ice Model 
    305       IF( iom_varid( numror, 'nfice' ) > 0 ) then  
    306          CALL iom_get( numror             , 'nfice'  , znfice  )   ! ice computation frequency 
    307          CALL iom_get( numror, jpdom_autoglo, 'sst_io' , sst_io  ) 
    308          CALL iom_get( numror, jpdom_autoglo, 'sss_io' , sss_io  ) 
    309          CALL iom_get( numror, jpdom_autoglo, 'u_io'   , u_io    ) 
    310          CALL iom_get( numror, jpdom_autoglo, 'v_io'   , v_io    ) 
    311 # if defined key_coupled 
    312          CALL iom_get( numror, jpdom_autoglo, 'alb_ice', alb_ice ) 
    313 # endif 
    314          IF( znfice /= REAL( nfice, wp ) ) THEN      ! if nfice changed between 2 runs 
    315             zcoef = REAL( nfice-1, wp ) / znfice 
    316             sst_io(:,:) = zcoef * sst_io(:,:) 
    317             sss_io(:,:) = zcoef * sss_io(:,:) 
    318             u_io  (:,:) = zcoef * u_io  (:,:) 
    319             v_io  (:,:) = zcoef * v_io  (:,:) 
    320          ENDIF 
    321       ELSE 
    322          IF(lwp) WRITE(numout,*) 
    323          IF(lwp) WRITE(numout,*) 'rst_read :  LLN sea Ice Model => Ice initialization' 
    324          IF(lwp) WRITE(numout,*) 
    325          zcoef = REAL( nfice-1, wp ) 
    326          sst_io(:,:) = zcoef *( tn(:,:,1) + rt0 )          !!bug a explanation is needed here! 
    327          sss_io(:,:) = zcoef *  sn(:,:,1) 
    328          zcoef = 0.5 * REAL( nfice-1, wp ) 
    329          DO jj = 2, jpj 
    330             DO ji = fs_2, jpi   ! vector opt. 
    331                u_io(ji,jj) = zcoef * ( un(ji-1,jj  ,1) + un(ji-1,jj-1,1) ) 
    332                v_io(ji,jj) = zcoef * ( vn(ji  ,jj-1,1) + vn(ji-1,jj-1,1) ) 
    333             END DO 
    334          END DO 
    335 # if defined key_coupled 
    336          alb_ice(:,:) = 0.8 * tmask(:,:,1) 
    337 # endif 
    338       ENDIF 
    339 #endif 
    340 #if defined key_flx_bulk_monthly || defined key_flx_bulk_daily || defined key_flx_core  
    341       ! Louvain La Neuve Sea Ice Model 
    342       IF( iom_varid( numror, 'nfbulk' ) > 0 ) THEN  
    343          CALL iom_get( numror             , 'nfbulk', znfbulk )   ! bulk computation frequency 
    344          CALL iom_get( numror, jpdom_autoglo, 'gsst'  , gsst    ) 
    345          IF( znfbulk /= REAL(nfbulk, wp) ) THEN      ! if you change nfbulk between 2 runs 
    346             zcoef = REAL( nfbulk-1, wp ) / znfbulk 
    347             gsst(:,:) = zcoef * gsst(:,:) 
    348          ENDIF 
    349       ELSE 
    350          IF(lwp) WRITE(numout,*) 
    351          IF(lwp) WRITE(numout,*) 'rst_read :  LLN sea Ice Model => Ice initialization' 
    352          IF(lwp) WRITE(numout,*) 
    353          gsst(:,:) = REAL( nfbulk - 1, wp )*( tn(:,:,1) + rt0 ) 
    354       ENDIF 
    355 #endif 
    356  
    357       !!sm: end of TO BE MOVED IN NEW SURFACE MODULE... 
    358  
    359285      IF( iom_varid( numror, 'rhd' ) > 0 ) THEN 
    360286         CALL iom_get( numror, jpdom_autoglo, 'rhd' , rhd  ) 
Note: See TracChangeset for help on using the changeset viewer.