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

Changeset 519 for trunk/NEMO/OPA_SRC


Ignore:
Timestamp:
2006-10-11T15:49:05+02:00 (18 years ago)
Author:
opalod
Message:

nemo_v1_update_74 : CT : - add comments for the UBS scheme

  • syntax correction
  • remove the use of eddy velocity in the calculation of poleward transport since it is already included into the normal velocity
  • remove the save of the trend associated to the BBL advective velocity since it is already included into the normal velocity
Location:
trunk/NEMO/OPA_SRC
Files:
4 edited

Legend:

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

    r508 r519  
    241241         v_atl , v_ipc,                    & 
    242242         vt_atl, vt_pac, vt_ind,           & 
    243          vs_atl, vs_pac, vs_ind,           & 
    244          zv_eiv 
     243         vs_atl, vs_pac, vs_ind              
    245244      INTEGER ::  inum       ! temporary logical unit 
    246245      !!---------------------------------------------------------------------- 
     
    252251         zggram    = 1.e-6 
    253252    
    254 # if defined key_diaeiv 
    255          zv_eiv(:,:,:) = v_eiv(:,:,:) 
    256 # else 
    257          zv_eiv(:,:,:) = 0.e0 
    258 # endif 
    259  
    260253         ! "zonal" mean temperature and salinity at V-points 
    261254         tn_jk(:,:) = ptr_vtjk( tn(:,:,:) ) * surf_jk_r(:,:) 
     
    279272               DO ji = 1, jpi 
    280273                  ! basin separated velocity 
    281                   v_atl(ji,jj,:) = (vn(ji,jj,:)+zv_eiv(ji,jj,:))*abasin(ji,jj) 
    282                   v_ipc(ji,jj,:) = (vn(ji,jj,:)+zv_eiv(ji,jj,:))*(pbasin(ji,jj)+ibasin(ji,jj)) 
     274                  v_atl(ji,jj,:) = vn(ji,jj,:)*abasin(ji,jj) 
     275                  v_ipc(ji,jj,:) = vn(ji,jj,:)*(pbasin(ji,jj)+ibasin(ji,jj)) 
    283276 
    284277                  ! basin separated T times V on T points 
    285                   vt_ind(ji,jj,:) = tn(ji,jj,:) *                                 & 
    286                      &              ( (vn    (ji,jj,:) + vn    (ji,jj-1,:))*0.5   & 
    287                      &              + (zv_eiv(ji,jj,:) + zv_eiv(ji,jj-1,:))*0.5 )  
     278                  vt_ind(ji,jj,:) = tn(ji,jj,:) * ( vn(ji,jj,:) + vn(ji,jj-1,:) )*0.5 
    288279                  vt_atl(ji,jj,:) = vt_ind(ji,jj,:) * abasin(ji,jj) 
    289280                  vt_pac(ji,jj,:) = vt_ind(ji,jj,:) * pbasin(ji,jj) 
     
    291282 
    292283                  ! basin separated S times V on T points 
    293                   vs_ind(ji,jj,:) = sn(ji,jj,:) *                                 & 
    294                      &              ( (vn    (ji,jj,:) + vn    (ji,jj-1,:))*0.5   & 
    295                      &              + (zv_eiv(ji,jj,:) + zv_eiv(ji,jj-1,:))*0.5 )  
     284                  vs_ind(ji,jj,:) = sn(ji,jj,:) * ( vn(ji,jj,:) + vn(ji,jj-1,:) )*0.5 
    296285                  vs_atl(ji,jj,:) = vs_ind(ji,jj,:) * abasin(ji,jj) 
    297286                  vs_pac(ji,jj,:) = vs_ind(ji,jj,:) * pbasin(ji,jj) 
  • trunk/NEMO/OPA_SRC/TRA/traadv.F90

    r503 r519  
    9797      CASE (-1 )                                                     ! esopa: test all possibility with control print 
    9898         ;             CALL tra_adv_cen2    ( kt, zun, zvn, zwn ) 
    99          ;             CALL prt_ctl( tab3d_1=ta, clinfo1=' ldf0 - Ta: ', mask1=tmask,               & 
     99         ;             CALL prt_ctl( tab3d_1=ta, clinfo1=' adv0 - Ta: ', mask1=tmask,               & 
    100100            &                        tab3d_2=sa, clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    101101         ;             CALL tra_adv_cen2_jki( kt, zun, zvn, zwn ) 
    102          ;             CALL prt_ctl( tab3d_1=ta, clinfo1=' ldf1 - Ta: ', mask1=tmask,               & 
     102         ;             CALL prt_ctl( tab3d_1=ta, clinfo1=' adv1 - Ta: ', mask1=tmask,               & 
    103103            &                        tab3d_2=sa, clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    104104         ;             CALL tra_adv_tvd     ( kt, zun, zvn, zwn ) 
    105          ;             CALL prt_ctl( tab3d_1=ta, clinfo1=' ldf2 - Ta: ', mask1=tmask,               & 
     105         ;             CALL prt_ctl( tab3d_1=ta, clinfo1=' adv2 - Ta: ', mask1=tmask,               & 
    106106            &                        tab3d_2=sa, clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    107107         ;             CALL tra_adv_muscl   ( kt, zun, zvn, zwn ) 
    108          ;             CALL prt_ctl( tab3d_1=ta, clinfo1=' ldf3 - Ta: ', mask1=tmask,               & 
     108         ;             CALL prt_ctl( tab3d_1=ta, clinfo1=' adv3 - Ta: ', mask1=tmask,               & 
    109109            &                        tab3d_2=sa, clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    110110         ;             CALL tra_adv_muscl2  ( kt, zun, zvn, zwn ) 
    111          ;             CALL prt_ctl( tab3d_1=ta, clinfo1=' ldf4 - Ta: ', mask1=tmask,               & 
     111         ;             CALL prt_ctl( tab3d_1=ta, clinfo1=' adv4 - Ta: ', mask1=tmask,               & 
    112112            &                        tab3d_2=sa, clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    113113         ;             CALL tra_adv_ubs     ( kt, zun, zvn, zwn ) 
  • trunk/NEMO/OPA_SRC/TRA/traadv_ubs.F90

    r503 r519  
    4747      !!      and add it to the general trend of passive tracer equations. 
    4848      !! 
    49       !! ** Method  :   ??? 
     49      !! ** Method  :   The upstream biased third (UBS) is order scheme based  
     50      !!      on an upstream-biased parabolic interpolation (Shchepetkin and McWilliams 2005) 
     51      !!      It is only used in the horizontal direction. 
     52      !!      For example the i-component of the advective fluxes are given by : 
     53      !!                !  e1u e3u un ( mi(Tn) - zltu(i  ) )   if un(i) >= 0 
     54      !!          zwx = !  or  
     55      !!                !  e1u e3u un ( mi(Tn) - zltu(i+1) )   if un(i) < 0 
     56      !!      where zltu is the second derivative of the before temperature field: 
     57      !!          zltu = 1/e3t di[ e2u e3u / e1u di[Tb] ] 
     58      !!      This results in a dissipatively dominant (i.e. hyper-diffusive)  
     59      !!      truncation error. The overall performance of the advection scheme  
     60      !!      is similar to that reported in (Farrow and Stevens, 1995).  
     61      !!      For stability reasons, the first term of the fluxes which corresponds 
     62      !!      to a second order centered scheme is evaluated using the now velocity  
     63      !!      (centered in time) while the second term which is the diffusive part  
     64      !!      of the scheme, is evaluated using the before velocity (forward in time).  
     65      !!      Note that UBS is not positive. Do not use it on passive tracers. 
     66      !!      On the vertical, the advection is evaluated using a TVD scheme, as 
     67      !!      the UBS have been found to be too diffusive. 
    5068      !! 
    5169      !! ** Action : - update (ta,sa) with the now advective tracer trends 
     70      !! 
     71      !! Reference : Shchepetkin, A. F., J. C. McWilliams, 2005, Ocean Modelling, 9, 347-404.  
     72      !!             Farrow, D.E., Stevens, D.P., 1995, J. Phys. Ocean. 25, 1731Ð1741.  
    5273      !!---------------------------------------------------------------------- 
    5374      USE oce, ONLY :   zwx => ua   ! use ua as workspace 
  • trunk/NEMO/OPA_SRC/TRA/trabbl_adv.h90

    r503 r519  
    9393      !!---------------------------------------------------------------------- 
    9494 
    95  
    9695      IF( kt == nit000 )   CALL tra_bbl_init    ! initialization at first time-step 
    97  
    98       IF( l_trdtra )   THEN      ! Save ta and sa trends 
    99          ztrdt(:,:,:) = ta(:,:,:)  
    100          ztrds(:,:,:) = sa(:,:,:)  
    101       ENDIF 
    10296 
    10397      ! 1. 2D fields of bottom temperature and salinity, and bottom slope 
     
    342336      END DO 
    343337 
    344       ! save the trends for diagnostic 
    345       ! BBL lateral advection tracers trends 
    346       IF( l_trdtra )   THEN 
    347          ztrdt(:,:,:) = ta(:,:,:) - ztrdt(:,:,:) 
    348          ztrds(:,:,:) = sa(:,:,:) - ztrds(:,:,:) 
    349          CALL trd_mod(ztrdt, ztrds, jptra_trd_bbl, 'TRA', kt) 
    350       ENDIF 
    351  
    352338      IF(ln_ctl)   CALL prt_ctl( tab3d_1=ta, clinfo1=' bbl  - Ta: ', mask1=tmask,   & 
    353339         &                       tab3d_2=sa, clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
Note: See TracChangeset for help on using the changeset viewer.