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.
Diff [8627:8617] for branches/2015/nemo_v3_6_STABLE/NEMOGCM – NEMO

Ignore:
Location:
branches/2015/nemo_v3_6_STABLE/NEMOGCM
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/nemo_v3_6_STABLE/NEMOGCM/CONFIG/SHARED/field_def.xml

    r8627 r8617  
    508508 
    509509        <!-- variables available with key_diaar5 -->    
    510         <field id="w_masstr"     long_name="Upward Ocean Mass Transport"           standard_name="upward_ocean_mass_transport"             unit="kg/s"   /> 
    511         <field id="w_masstr2"    long_name="square of vertical mass transport"     standard_name="square_of_upward_ocean_mass_transport"   unit="kg2/s2" /> 
     510        <field id="w_masstr"     long_name="Upward Ocean Mass Transport"             standard_name="upward_ocean_mass_transport"             unit="kg/s"   /> 
     511        <field id="w_masstr2"    long_name="square of vertical mass transport"   standard_name="square_of_upward_ocean_mass_transport"   unit="kg2/s2" /> 
    512512 
    513513        <!-- aht2d and  aht2d_eiv: available with key_traldf_eiv and key_traldf_c2d --> 
    514         <field id="aht2d"        long_name="lateral eddy diffusivity"              standard_name="ocean_tracer_xy_laplacian_diffusivity"      unit="m2/s"   grid_ref="grid_W_2D" /> 
    515         <field id="aht2d_eiv"    long_name="EIV lateral eddy diffusivity"          standard_name="ocean_tracer_bolus_laplacian_diffusivity"   unit="m2/s"   grid_ref="grid_W_2D" /> 
     514        <field id="aht2d"        long_name="lateral eddy diffusivity"       standard_name="ocean_tracer_xy_laplacian_diffusivity"      unit="m2/s"   grid_ref="grid_W_2D" /> 
     515        <field id="aht2d_eiv"    long_name="EIV lateral eddy diffusivity"   standard_name="ocean_tracer_bolus_laplacian_diffusivity"   unit="m2/s"   grid_ref="grid_W_2D" /> 
    516516 
    517517         <!-- Variable from eosbn2 --> 
     
    541541 
    542542      <field_group id="scalar"  domain_ref="1point" > 
    543          <field id="voltot"     long_name="Sea Water Volume"                                standard_name="sea_water_volume"                               unit="m3"   /> 
    544          <field id="sshtot"     long_name="global mean ssh"                                 standard_name="global_average_sea_level_change"                unit="m"    /> 
    545          <field id="sshsteric"  long_name="global mean ssh steric"                          standard_name="global_average_steric_sea_level_change"         unit="m"    /> 
    546          <field id="sshthster"  long_name="Global Average Thermosteric Sea Level Change"    standard_name="global_average_thermosteric_sea_level_change"   unit="m"    /> 
    547          <field id="masstot"    long_name="global total mass"                               standard_name="sea_water_mass"                                 unit="kg"   /> 
    548          <field id="temptot"    long_name="Global Average Sea Water Potential Temperature"  standard_name="sea_water_potential_temperature"         unit="degree_C" /> 
    549          <field id="saltot"     long_name="Global Average Sea Water Salinity"               standard_name="sea_water_salinity"                      unit="0.001" /> 
    550          <field id="fram_trans" long_name="Sea Ice Mass Transport Through Fram Strait"      standard_name="sea_ice_transport_across_line"                  unit="kg/s" /> 
     543         <field id="voltot"     long_name="Sea Water Volume"                             standard_name="sea_water_volume"                               unit="m3"   /> 
     544         <field id="sshtot"     long_name="global mean ssh"                              standard_name="global_average_sea_level_change"                unit="m"    /> 
     545         <field id="sshsteric"  long_name="global mean ssh steric"                       standard_name="global_average_steric_sea_level_change"         unit="m"    /> 
     546         <field id="sshthster"  long_name="Global Average Thermosteric Sea Level Change" standard_name="global_average_thermosteric_sea_level_change"   unit="m"    /> 
     547         <field id="masstot"    long_name="global total mass"                            standard_name="sea_water_mass"                                 unit="kg"   /> 
     548         <field id="temptot"    long_name="Global Average Sea Water Potential Temperature"      standard_name="sea_water_potential_temperature"         unit="degree_C" /> 
     549         <field id="saltot"     long_name="Global Average Sea Water Salinity"                   standard_name="sea_water_salinity"                      unit="0.001" /> 
     550         <field id="fram_trans" long_name="Sea Ice Mass Transport Through Fram Strait"   standard_name="sea_ice_transport_across_line"                  unit="kg/s" /> 
    551551 
    552552          <!-- available with ln_diahsb --> 
     
    867867      <field id="ketrd_convP2K" long_name="ke-trend: conversion (potential to kinetic)"      unit="W/s^3"                        /> 
    868868      <field id="KE"            long_name="kinetic energy: u(n)*u(n+1)/2"                    unit="W/s^2"                        />    
    869       <!-- variables available when explicit mixing is used --> 
    870       <field id="dispkexyfo"    long_name="KE-trend: lateral  mixing induced dissipation"   standard_name="ocean_kinetic_energy_dissipation_per_unit_area_due_to_xy_friction"                   unit="W/m^2" grid_ref="grid_T_2D" />    
    871       <field id="dispkevfo"     long_name="KE-trend: vertical mixing induced dissipation"   standard_name="ocean_kinetic_energy_dissipation_per_unit_area_due_to_vertical_friction"             unit="W/m^2" grid_ref="grid_T_2D" />    
    872       <!-- variables available with key_traadv_eiv and key_diaeiv --> 
    873       <field id="eketrd_eiv"    long_name="EKE-trend due to parameterized eddy advection"   standard_name="tendency_of_ocean_eddy_kinetic_energy_content_due_to_parameterized_eddy_advection"   unit="W/m^2" grid_ref="grid_T_2D" />    
     869      <field id="ketrd_eiv"     long_name="Kinetic energy trend from mesoscale eddy advection"   unit="W/s^2" grid_ref="grid_T_2D" />    
    874870 
    875871      <!-- variables available with ln_PE_trd --> 
  • branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90

    r8627 r8617  
    1818   USE oce             ! ocean dynamics and tracers 
    1919   USE dom_oce         ! ocean space and time domain 
    20    USE phycst          ! physical constants 
    2120   USE ldfdyn_oce      ! ocean dynamics: lateral physics 
    2221   ! 
    2322   USE in_out_manager  ! I/O manager 
    24    USE iom             ! I/O library 
    2523   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    2624   USE wrk_nemo        ! Memory Allocation 
     
    7775      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    7876      ! 
    79       INTEGER  ::   ji, jj, jk                       ! dummy loop indices 
    80       REAL(wp) ::   zua, zva, zbt, ze2u, ze2v, zzz   ! local scalar 
    81       REAL(wp), POINTER, DIMENSION(:,:  ) ::   zcu, zcv 
    82       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zuf, zut, zlu, zlv 
    83       REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::   z2d   ! 2D workspace  
     77      INTEGER  ::   ji, jj, jk                  ! dummy loop indices 
     78      REAL(wp) ::   zua, zva, zbt, ze2u, ze2v   ! temporary scalar 
     79      REAL(wp), POINTER, DIMENSION(:,:  ) :: zcu, zcv 
     80      REAL(wp), POINTER, DIMENSION(:,:,:) :: zuf, zut, zlu, zlv 
    8481      !!---------------------------------------------------------------------- 
    8582      ! 
     
    115112            DO jj = 2, jpjm1 
    116113               DO ji = fs_2, fs_jpim1   ! vector opt. 
    117                   zlu(ji,jj,jk) = - (   zuf(ji  ,jj,jk) -  zuf(ji,jj-1,jk) ) / ( e2u(ji,jj) * fse3u(ji,jj,jk) )   & 
    118                      &            + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj  ,jk) ) /  e1u(ji,jj) 
    119     
    120                   zlv(ji,jj,jk) = + (   zuf(ji,jj  ,jk) -  zuf(ji-1,jj,jk) ) / ( e1v(ji,jj) * fse3v(ji,jj,jk) )   & 
    121                      &            + ( hdivb(ji,jj+1,jk) - hdivb(ji  ,jj,jk) ) /  e2v(ji,jj) 
     114                  zlu(ji,jj,jk) = - ( zuf(ji,jj,jk) - zuf(ji,jj-1,jk) ) / ( e2u(ji,jj) * fse3u(ji,jj,jk) )   & 
     115                     &         + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj,jk) ) / e1u(ji,jj) 
     116    
     117                  zlv(ji,jj,jk) = + ( zuf(ji,jj,jk) - zuf(ji-1,jj,jk) ) / ( e1v(ji,jj) * fse3v(ji,jj,jk) )   & 
     118                     &         + ( hdivb(ji,jj+1,jk) - hdivb(ji,jj,jk) ) / e2v(ji,jj) 
    122119               END DO 
    123120            END DO 
     
    126123               DO ji = fs_2, fs_jpim1   ! vector opt. 
    127124                  zlu(ji,jj,jk) = - ( rotb (ji  ,jj,jk) - rotb (ji,jj-1,jk) ) / e2u(ji,jj)   & 
    128                      &            + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj  ,jk) ) / e1u(ji,jj) 
     125                     &         + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj  ,jk) ) / e1u(ji,jj) 
    129126    
    130127                  zlv(ji,jj,jk) = + ( rotb (ji,jj  ,jk) - rotb (ji-1,jj,jk) ) / e1v(ji,jj)   & 
    131                      &            + ( hdivb(ji,jj+1,jk) - hdivb(ji  ,jj,jk) ) / e2v(ji,jj) 
     128                     &         + ( hdivb(ji,jj+1,jk) - hdivb(ji  ,jj,jk) ) / e2v(ji,jj) 
    132129               END DO   
    133130            END DO   
     
    136133      CALL lbc_lnk( zlu, 'U', -1. )   ;   CALL lbc_lnk( zlv, 'V', -1. )   ! Boundary conditions 
    137134 
    138       IF( iom_use('dispkexyfo') ) THEN   ! ocean kinetic energy dissipation per unit area 
    139          !                               ! due to xy friction (xy=lateral)  
    140          !   see NEMO_book appendix C, §C.7.2 (N.B. here averaged at t-points) 
    141          !   local dissipation of KE at t-point due to bilaplacian operator is given by : 
    142          !      + ahmu mi( zlu**2 ) + mj( ahmv zlv**2 ) 
    143          !   Note that a sign + is used as in v3.6 ahm is negative for bilaplacian viscosity 
    144          ! 
    145          ! NB: ahm is negative when bilaplacian is used 
    146          ALLOCATE( z2d(jpi,jpj) ) 
    147          z2d(:,:) = 0._wp 
    148          DO jk = 1, jpkm1 
    149             DO jj = 2, jpjm1 
    150                DO ji = 2, jpim1 
    151                   z2d(ji,jj) = z2d(ji,jj)                                                                  & 
    152                      &  +  (  fsahmu(ji,jj,jk)*zlu(ji,jj,jk)**2 + fsahmu(ji-1,jj,jk)*zlu(ji-1,jj,jk)**2    & 
    153                      &      + fsahmv(ji,jj,jk)*zlv(ji,jj,jk)**2 + fsahmv(ji,jj-1,jk)*zlv(ji,jj-1,jk)**2  ) * tmask(ji,jj,jk) 
    154                END DO 
    155             END DO 
    156          END DO 
    157          zzz = 0.5_wp * rau0 
    158          z2d(:,:) = zzz * z2d(:,:)  
    159          CALL lbc_lnk( z2d,'T', 1. ) 
    160          CALL iom_put( 'dispkexyfo', z2d ) 
    161          DEALLOCATE( z2d ) 
    162       ENDIF 
    163        
    164     
    165       ! Third derivative 
    166       ! ---------------- 
    167       ! 
     135          
    168136      DO jk = 1, jpkm1 
    169          ! 
     137    
     138         ! Third derivative 
     139         ! ---------------- 
     140          
    170141         ! Multiply by the eddy viscosity coef. (at u- and v-points) 
    171          zlu(:,:,jk) = zlu(:,:,jk) * fsahmu(:,:,jk)  
    172          zlv(:,:,jk) = zlv(:,:,jk) * fsahmv(:,:,jk) 
    173          !          
     142         zlu(:,:,jk) = zlu(:,:,jk) * ( fsahmu(:,:,jk) * (1-nkahm_smag) + nkahm_smag) 
     143 
     144         zlv(:,:,jk) = zlv(:,:,jk) * ( fsahmv(:,:,jk) * (1-nkahm_smag) + nkahm_smag) 
     145          
    174146         ! Contravariant "laplacian" 
    175147         zcu(:,:) = e1u(:,:) * zlu(:,:,jk) 
     
    180152            DO ji = 1, fs_jpim1   ! vector opt. 
    181153               zuf(ji,jj,jk) = fmask(ji,jj,jk) * (  zcv(ji+1,jj  ) - zcv(ji,jj)      & 
    182                   &                               - zcu(ji  ,jj+1) + zcu(ji,jj)  )   & 
    183                   &       * fse3f(ji,jj,jk) * r1_e12f(ji,jj) 
     154                  &                            - zcu(ji  ,jj+1) + zcu(ji,jj)  )   & 
     155                  &       * fse3f(ji,jj,jk) / ( e1f(ji,jj)*e2f(ji,jj) ) 
    184156            END DO   
    185157         END DO   
     
    203175      END DO 
    204176 
     177 
    205178      ! boundary conditions on the laplacian curl and div (zuf,zut) 
    206179!!bug gm no need to do this 2 following lbc... 
     
    208181      CALL lbc_lnk( zut, 'T', 1. ) 
    209182 
    210       DO jk = 1, jpkm1               ! Bilaplacian 
     183      DO jk = 1, jpkm1       
     184    
     185         ! Bilaplacian 
     186         ! ----------- 
     187 
    211188         DO jj = 2, jpjm1 
    212189            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    220197                  &  + ( zut(ji,jj+1,jk) - zut(ji  ,jj,jk) ) / e2v(ji,jj) 
    221198               ! add it to the general momentum trends 
    222                ua(ji,jj,jk) = ua(ji,jj,jk) + zua 
    223                va(ji,jj,jk) = va(ji,jj,jk) + zva 
     199               ua(ji,jj,jk) = ua(ji,jj,jk) + zua * ( fsahmu(ji,jj,jk)*nkahm_smag +(1 -nkahm_smag )) 
     200               va(ji,jj,jk) = va(ji,jj,jk) + zva * ( fsahmv(ji,jj,jk)*nkahm_smag +(1 -nkahm_smag )) 
    224201            END DO 
    225202         END DO 
     203 
    226204         !                                             ! =============== 
    227205      END DO                                           !   End of slab 
  • branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap.F90

    r8627 r8617  
    1717   USE oce             ! ocean dynamics and tracers 
    1818   USE dom_oce         ! ocean space and time domain 
    19    USE phycst          ! physical constants 
    2019   USE ldfdyn_oce      ! ocean dynamics: lateral physics 
    2120   USE zdf_oce         ! ocean vertical physics 
    2221   ! 
    2322   USE in_out_manager  ! I/O manager 
    24    USE iom             ! I/O library 
    2523   USE timing          ! Timing 
    2624 
     
    6462      INTEGER  ::   ji, jj, jk             ! dummy loop indices 
    6563      REAL(wp) ::   zua, zva, ze2u, ze1v   ! local scalars 
    66       REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::   z2d   ! 2D workspace  
    6764      !!---------------------------------------------------------------------- 
    6865      ! 
     
    9693      END DO                                           !   End of slab 
    9794      !                                                ! =============== 
    98        
    99       IF( iom_use('dispkexyfo') ) THEN   ! ocean Kinetic Energy dissipation per unit area 
    100          !                               ! due to lateral friction (xy=lateral)  
    101          !   see NEMO_book appendix C, §C.7.2 (N.B. here averaged at t-points) 
    102          !   local dissipation of KE at t-point due to laplacian operator is given by : 
    103          !      - ahmt hdivb**2 - mi( mj(ahmf rotb**2 e1f*e2f*e3t) ) / (e1e2t*e3t) 
    104          ! 
    105          ALLOCATE( z2d(jpi,jpj) ) 
    106          z2d(:,:) = 0._wp 
    107          DO jk = 1, jpkm1 
    108             DO jj = 2, jpjm1 
    109                DO ji = 2, jpim1 
    110                   z2d(ji,jj) = z2d(ji,jj)          -   (                                                         & 
    111                      &   hdivb(ji,jj,jk)**2 * fsahmt(ji,jj,jk) * fse3t_n(ji,jj,jk)                               & 
    112                      & + 0.25_wp * (                                                                             & 
    113                      &   rotb (ji  ,jj  ,jk)**2 * fsahmf(ji  ,jj  ,jk) * e12f(ji  ,jj  ) * fse3f(ji  ,jj  ,jk)   & 
    114                      & + rotb (ji-1,jj  ,jk)**2 * fsahmf(ji-1,jj  ,jk) * e12f(ji-1,jj  ) * fse3f(ji-1,jj  ,jk)   & 
    115                      & + rotb (ji  ,jj-1,jk)**2 * fsahmf(ji  ,jj-1,jk) * e12f(ji  ,jj-1) * fse3f(ji  ,jj-1,jk)   & 
    116                      & + rotb (ji-1,jj-1,jk)**2 * fsahmf(ji-1,jj-1,jk) * e12f(ji-1,jj-1) * fse3f(ji-1,jj-1,jk)   & 
    117                      &             ) * r1_e12t(ji,jj)  ) * tmask(ji,jj,jk) 
    118                END DO 
    119             END DO 
    120          END DO 
    121          z2d(:,:) = rau0 * z2d(:,:)  
    122          CALL lbc_lnk( z2d,'T', 1. ) 
    123          CALL iom_put( 'dispkexyfo', z2d ) 
    124          DEALLOCATE( z2d ) 
    125       ENDIF 
    126  
    12795      IF( nn_timing == 1 )  CALL timing_stop('dyn_ldf_lap') 
    12896      ! 
  • branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90

    r8627 r8617  
    2020   USE zdf_oce         ! ocean vertical physics 
    2121   USE phycst          ! physical constants 
     22   USE in_out_manager  ! I/O manager 
     23   USE lib_mpp         ! MPP library 
     24   USE zdfbfr          ! Bottom friction setup 
     25   USE wrk_nemo        ! Memory Allocation 
     26   USE timing          ! Timing 
    2227   USE dynadv          ! dynamics: vector invariant versus flux form 
    2328   USE dynspg_oce, ONLY: lk_dynspg_ts 
    24    USE zdfbfr          ! Bottom friction setup 
    25    ! 
    26    USE in_out_manager  ! I/O manager 
    27    USE iom             ! I/O library 
    28    USE lib_mpp         ! MPP library 
    29    USE wrk_nemo        ! Memory Allocation 
    30    USE timing          ! Timing 
    3129 
    3230   IMPLICIT NONE 
     
    7169      INTEGER  ::   ikbu, ikbv   ! local integers 
    7270      REAL(wp) ::   z1_p2dt, zcoef, zzwi, zzws, zrhs   ! local scalars 
    73       REAL(wp) ::   ze3ua, ze3va, zzz 
    74       REAL(wp), POINTER, DIMENSION(:,:)   ::  z2d 
     71      REAL(wp) ::   ze3ua, ze3va 
    7572      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwi, zwd, zws 
    7673      !!---------------------------------------------------------------------- 
     
    260257      END DO 
    261258 
     259#if ! defined key_dynspg_ts 
     260      ! Normalization to obtain the general momentum trend ua 
     261      DO jk = 1, jpkm1 
     262         DO jj = 2, jpjm1    
     263            DO ji = fs_2, fs_jpim1   ! vector opt. 
     264               ua(ji,jj,jk) = ( ua(ji,jj,jk) - ub(ji,jj,jk) ) * z1_p2dt 
     265            END DO 
     266         END DO 
     267      END DO 
     268#endif 
     269 
    262270      ! 3. Vertical diffusion on v 
    263271      ! --------------------------- 
     
    349357      END DO 
    350358 
    351       IF( iom_use( 'dispkevfo' ) ) THEN   ! ocean kinetic energy dissipation per unit area 
    352          !                                ! due to v friction (v=vertical)  
    353          !                                ! see NEMO_book appendix C, §C.8 (N.B. here averaged at t-points) 
    354          !                                ! Note that formally, in a Leap-Frog environment, the shear**2 should be the product of  
    355          !                                ! now by before shears, i.e. the source term of TKE (local positivity is not ensured). 
    356          CALL wrk_alloc(jpi,jpj,   z2d ) 
    357          z2d(:,:) = 0._wp 
    358          DO jk = 1, jpkm1 
    359             DO jj = 2, jpjm1 
    360                DO ji = 2, jpim1 
    361                   z2d(ji,jj) = z2d(ji,jj)  +  (                                                                                  & 
    362                      &   avmu(ji  ,jj,jk) * ( ua(ji  ,jj,jk-1) - ua(ji  ,jj,jk) )**2 / fse3uw(ji  ,jj,jk) * wumask(ji  ,jj,jk)   & 
    363                      & + avmu(ji-1,jj,jk) * ( ua(ji-1,jj,jk-1) - ua(ji-1,jj,jk) )**2 / fse3uw(ji-1,jj,jk) * wumask(ji-1,jj,jk)   & 
    364                      & + avmv(ji,jj  ,jk) * ( va(ji,jj  ,jk-1) - va(ji,jj  ,jk) )**2 / fse3vw(ji,jj  ,jk) * wvmask(ji,jj  ,jk)   & 
    365                      & + avmv(ji,jj-1,jk) * ( va(ji,jj-1,jk-1) - va(ji,jj-1,jk) )**2 / fse3vw(ji,jj-1,jk) * wvmask(ji,jj-1,jk)   & 
    366                      &                        ) 
    367                END DO 
    368             END DO 
    369          END DO 
    370          zzz= - 0.5_wp* rau0           ! caution sign minus here 
    371          z2d(:,:) = zzz * z2d(:,:)  
    372          CALL lbc_lnk( z2d,'T', 1. ) 
    373          CALL iom_put( 'dispkevfo', z2d ) 
    374          CALL wrk_dealloc(jpi,jpj,   z2d ) 
    375       ENDIF 
    376  
     359      ! Normalization to obtain the general momentum trend va 
    377360#if ! defined key_dynspg_ts 
    378 !!gm this can be removed if tranxt is changed like in the trunk so that implicit outcome with  
    379 !!gm the after velocity, not a trend 
    380       ! Normalization to obtain the general momentum trend ua 
    381361      DO jk = 1, jpkm1 
    382362         DO jj = 2, jpjm1    
    383363            DO ji = fs_2, fs_jpim1   ! vector opt. 
    384                ua(ji,jj,jk) = ( ua(ji,jj,jk) - ub(ji,jj,jk) ) * z1_p2dt 
    385364               va(ji,jj,jk) = ( va(ji,jj,jk) - vb(ji,jj,jk) ) * z1_p2dt 
    386365            END DO 
     
    414393      CALL wrk_dealloc( jpi,jpj,jpk, zwi, zwd, zws)  
    415394      ! 
    416       ! 
    417395      IF( nn_timing == 1 )  CALL timing_stop('dyn_zdf_imp') 
    418396      ! 
  • branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90

    r8627 r8617  
    165165         CALL iom_put( "voce_eiv", v_eiv )    ! j-eiv current 
    166166         CALL iom_put( "woce_eiv", w_eiv )    ! vert. eiv current 
    167          ! 
    168167         IF( iom_use('weiv_masstr') ) THEN   ! vertical mass transport & its square value 
    169             z2d(:,:) = rau0 * e12t(:,:) 
    170             DO jk = 1, jpk 
    171                z3d(:,:,jk) = w_eiv(:,:,jk) * z2d(:,:) 
    172             END DO 
    173             CALL iom_put( "weiv_masstr" , z3d )   
    174          ENDIF 
    175          ! 
     168           z2d(:,:) = rau0 * e12t(:,:) 
     169           DO jk = 1, jpk 
     170              z3d(:,:,jk) = w_eiv(:,:,jk) * z2d(:,:) 
     171           END DO 
     172           CALL iom_put( "weiv_masstr" , z3d )   
     173         ENDIF 
    176174         IF( iom_use("ueiv_masstr") .OR. iom_use("ueiv_heattr") .OR. iom_use('ueiv_heattr3d')        & 
    177             &                       .OR. iom_use("ueiv_salttr") .OR. iom_use('ueiv_salttr3d') ) THEN 
     175                                    .OR. iom_use("ueiv_salttr") .OR. iom_use('ueiv_salttr3d') ) THEN 
    178176            z3d(:,:,jpk) = 0.e0 
    179177            z2d(:,:) = 0.e0 
     
    184182            CALL iom_put( "ueiv_masstr", z3d )                  ! mass transport in i-direction 
    185183         ENDIF 
    186          ! 
     184 
    187185         IF( iom_use('ueiv_heattr') .OR. iom_use('ueiv_heattr3d') ) THEN 
    188186            zztmp = 0.5 * rcp  
     
    206204            ENDIF 
    207205         ENDIF 
    208          ! 
     206 
    209207         IF( iom_use('ueiv_salttr') .OR. iom_use('ueiv_salttr3d') ) THEN 
    210208            zztmp = 0.5 * 0.001 
     
    228226            ENDIF 
    229227         ENDIF 
    230          ! 
     228 
    231229         IF( iom_use("veiv_masstr") .OR. iom_use("veiv_heattr") .OR. iom_use('veiv_heattr3d')       & 
    232230                                    .OR. iom_use("veiv_salttr") .OR. iom_use('veiv_salttr3d') ) THEN 
     
    237235            CALL iom_put( "veiv_masstr", z3d )                  ! mass transport in j-direction 
    238236         ENDIF 
    239          !    
     237             
    240238         IF( iom_use('veiv_heattr') .OR. iom_use('veiv_heattr3d') ) THEN 
    241239            zztmp = 0.5 * rcp  
     
    259257            ENDIF 
    260258         ENDIF 
    261          ! 
     259 
    262260         IF( iom_use('veiv_salttr') .OR. iom_use('veiv_salttr3d') ) THEN 
    263261            zztmp = 0.5 * 0.001 
     
    281279            ENDIF 
    282280         ENDIF 
    283          ! 
     281 
    284282         IF( iom_use('weiv_masstr') .OR. iom_use('weiv_heattr3d') .OR. iom_use('weiv_salttr3d')) THEN   ! vertical mass transport & its square value 
    285283           z2d(:,:) = rau0 * e12t(:,:) 
     
    289287           CALL iom_put( "weiv_masstr" , z3d )                  ! mass transport in k-direction 
    290288         ENDIF 
    291          ! 
     289 
    292290         IF( iom_use('weiv_heattr3d') ) THEN 
    293291            zztmp = 0.5 * rcp  
     
    302300            CALL iom_put( "weiv_heattr3d", zztmp * z3d_T )                 ! 3D heat transport in k-direction 
    303301         ENDIF 
    304          ! 
     302 
    305303         IF( iom_use('weiv_salttr3d') ) THEN 
    306304            zztmp = 0.5 * 0.001  
     
    315313            CALL iom_put( "weiv_salttr3d", zztmp * z3d_T )                 ! 3D salt transport in k-direction 
    316314         ENDIF 
    317          ! 
    318          IF( ln_diaptr ) THEN 
    319             z3d(:,:,:) = 0._wp 
    320             DO jk = 1, jpkm1 
    321                DO jj = 2, jpjm1 
    322                   DO ji = fs_2, fs_jpim1   ! vector opt. 
    323                      z3d(ji,jj,jk) = v_eiv(ji,jj,jk) * 0.5 * (tsn(ji,jj,jk,jp_tem)+tsn(ji,jj+1,jk,jp_tem)) & 
    324                         &             * e1v(ji,jj) * fse3v(ji,jj,jk) 
    325                   END DO 
    326                END DO 
    327             END DO 
    328             CALL dia_ptr_ohst_components( jp_tem, 'eiv', z3d ) 
    329             z3d(:,:,:) = 0._wp 
    330             DO jk = 1, jpkm1 
    331                DO jj = 2, jpjm1 
    332                   DO ji = fs_2, fs_jpim1   ! vector opt. 
    333                      z3d(ji,jj,jk) = v_eiv(ji,jj,jk) * 0.5 * (tsn(ji,jj,jk,jp_sal)+tsn(ji,jj+1,jk,jp_sal)) & 
    334                      &             * e1v(ji,jj) * fse3v(ji,jj,jk) 
    335                   END DO 
    336                END DO 
    337             END DO 
    338             CALL dia_ptr_ohst_components( jp_sal, 'eiv', z3d ) 
    339          ENDIF 
    340          ! 
    341 !!gm add CMIP6 diag here instead of been done in trdken.F90 
    342          ! 
    343          IF( iom_use('eketrd_eiv') ) THEN     ! tendency of EKE from parameterized eddy advection 
    344             ! CMIP6 diagnostic tknebto = tendency of EKE from parameterized mesoscale eddy advection 
    345             ! = vertical_integral( k (N S)^2 ) rho dz   where rho = rau0 and S = isoneutral slope. 
    346             z2d(:,:) = 0._wp 
    347             DO jk = 1, jpkm1 
    348                DO ji = 1, jpi 
    349                   DO jj = 1,jpj 
    350                      z2d(ji,jj) = z2d(ji,jj) + rau0 * fsaeiw(ji,jj,jk)                 & 
    351                         &                    * rn2b(ji,jj,jk) * fse3w(ji,jj,jk)        & 
    352                         &                    * (  wslpi(ji,jj,jk) * wslpi(ji,jj,jk)    & 
    353                         &                       + wslpj(ji,jj,jk) * wslpj(ji,jj,jk)  ) * wmask(ji,jj,jk) 
    354                   END DO 
    355                END DO 
    356             END DO 
    357             CALL iom_put( "eketrd_eiv", z2d ) 
    358          ENDIF 
    359          ! 
    360 !!gm  removed from trdken.F90    IF( ln_KE_trd )   CALL trd_dyn(u_eiv, v_eiv, jpdyn_eivke, kt ) 
    361          ! 
    362       ENDIF 
     315 
     316    END IF 
     317! 
     318    IF( ln_diaptr .AND. cdtype == 'TRA' ) THEN 
     319       z3d(:,:,:) = 0._wp 
     320       DO jk = 1, jpkm1 
     321          DO jj = 2, jpjm1 
     322             DO ji = fs_2, fs_jpim1   ! vector opt. 
     323                z3d(ji,jj,jk) = v_eiv(ji,jj,jk) * 0.5 * (tsn(ji,jj,jk,jp_tem)+tsn(ji,jj+1,jk,jp_tem)) & 
     324                &             * e1v(ji,jj) * fse3v(ji,jj,jk) 
     325             END DO 
     326          END DO 
     327       END DO 
     328       CALL dia_ptr_ohst_components( jp_tem, 'eiv', z3d ) 
     329       z3d(:,:,:) = 0._wp 
     330       DO jk = 1, jpkm1 
     331          DO jj = 2, jpjm1 
     332             DO ji = fs_2, fs_jpim1   ! vector opt. 
     333                z3d(ji,jj,jk) = v_eiv(ji,jj,jk) * 0.5 * (tsn(ji,jj,jk,jp_sal)+tsn(ji,jj+1,jk,jp_sal)) & 
     334                &             * e1v(ji,jj) * fse3v(ji,jj,jk) 
     335             END DO 
     336          END DO 
     337       END DO 
     338       CALL dia_ptr_ohst_components( jp_sal, 'eiv', z3d ) 
     339    ENDIF 
     340 
     341    IF( ln_KE_trd ) CALL trd_dyn(u_eiv, v_eiv, jpdyn_eivke, kt ) 
    363342# endif   
    364343 
  • branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/TRD/trd_oce.F90

    r8627 r8617  
    7676   INTEGER, PUBLIC, PARAMETER ::   jpdyn_spgflt  = 14  !: filter contribution to surface pressure gradient (spg_flt) 
    7777   INTEGER, PUBLIC, PARAMETER ::   jpdyn_spgexp  = 15  !: explicit contribution to surface pressure gradient (spg_flt) 
     78   INTEGER, PUBLIC, PARAMETER ::   jpdyn_eivke   = 16  !: K.E trend from Gent McWilliams scheme 
    7879   ! 
    7980   !!---------------------------------------------------------------------- 
  • branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/OPA_SRC/TRD/trdken.F90

    r8627 r8617  
    195195                    CALL ken_p2k( kt , zke ) 
    196196                      CALL iom_put( "ketrd_convP2K", zke )     ! conversion -rau*g*w 
    197 !!gm moved in traadv_eiv ===>>> diag becomes accessible without ln_trdtra=T 
    198 !        CASE( jpdyn_eivke ) 
    199 !            ! CMIP6 diagnostic tknebto = tendency of EKE from 
    200 !            ! parameterized mesoscale eddy advection 
    201 !            ! = vertical_integral( k (N S)^2 ) rho dz 
    202 !            ! rho = reference density 
    203 !            ! S = isoneutral slope. 
    204 !            ! Most terms are on W grid so work on this grid 
    205 !#ifdef key_traldf_eiv 
    206 !            CALL wrk_alloc( jpi, jpj, zke2d ) 
    207 !            zke2d(:,:) = 0._wp 
    208 !            DO jk = 1,jpk 
    209 !               DO ji = 1,jpi 
    210 !                  DO jj = 1,jpj 
    211 !                     zke2d(ji,jj) = zke2d(ji,jj) +  rau0 * fsaeiw(ji, jj, jk)               & 
    212 !                          &                      * ( wslpi(ji, jj, jk) * wslpi(ji,jj,jk)    & 
    213 !                          &                      +   wslpj(ji, jj, jk) * wslpj(ji,jj,jk) )  & 
    214 !                          &                      *   rn2(ji,jj,jk) * fse3w(ji, jj, jk) 
    215 !                  ENDDO 
    216 !               ENDDO 
    217 !            ENDDO 
    218 !            CALL iom_put("ketrd_eiv", zke2d) 
    219 !            CALL wrk_dealloc( jpi, jpj, zke2d ) 
    220 !#endif 
    221 !!gm end 
     197        CASE( jpdyn_eivke ) 
     198            ! CMIP6 diagnostic tknebto = tendency of KE from 
     199            ! parameterized mesoscale eddy advection 
     200            ! = vertical_integral( k (N S)^2 ) rho dz 
     201            ! rho = reference density 
     202            ! S = isoneutral slope. 
     203            ! Most terms are on W grid so work on this grid 
     204#ifdef key_traldf_eiv 
     205            CALL wrk_alloc( jpi, jpj, zke2d ) 
     206            zke2d(:,:) = 0._wp 
     207            DO jk = 1,jpk 
     208               DO ji = 1,jpi 
     209                  DO jj = 1,jpj 
     210                     zke2d(ji,jj) = zke2d(ji,jj) +  rau0 * fsaeiw(ji, jj, jk)               & 
     211                          &                      * ( wslpi(ji, jj, jk) * wslpi(ji,jj,jk)    & 
     212                          &                      +   wslpj(ji, jj, jk) * wslpj(ji,jj,jk) )  & 
     213                          &                      *   rn2(ji,jj,jk) * fse3w(ji, jj, jk) 
     214                  ENDDO 
     215               ENDDO 
     216            ENDDO 
     217            CALL iom_put("ketrd_eiv", zke2d) 
     218            CALL wrk_dealloc( jpi, jpj, zke2d ) 
     219#endif 
    222220         ! 
    223221      END SELECT 
Note: See TracChangeset for help on using the changeset viewer.