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 2082 for branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP – NEMO

Ignore:
Timestamp:
2010-09-10T12:32:58+02:00 (14 years ago)
Author:
cetlod
Message:

Improve the merge of TRA-TRC, see ticket #717

Location:
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trcadv.F90

    r2034 r2082  
    3333 
    3434   PUBLIC   trc_adv    ! routine called by step module 
     35 
    3536   INTEGER ::   nadv   ! choice of the type of advection scheme 
     37   REAL(wp), DIMENSION(jpk) ::   r2dt  ! vertical profile time-step, = 2 rdttra 
     38      !                                ! except at nit000 (=rdttra) if neuler=0 
    3639 
    3740   !! * Substitutions 
     
    6467      IF( kt == nittrc000 )   CALL trc_adv_ctl          ! initialisation & control of options 
    6568 
     69      IF( neuler == 0 .AND. kt == nittrc000 ) THEN     ! at nit000 
     70         r2dt(:) =  rdttra(:) * FLOAT(nn_dttrc)          ! = rdtra (restarting with Euler time stepping) 
     71      ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN          ! at nit000 or nit000+1 
     72         r2dt(:) = 2. * rdttra(:) * FLOAT(nn_dttrc)      ! = 2 rdttra (leapfrog) 
     73      ENDIF 
     74 
    6675      !                                                   ! effective transport 
    6776      DO jk = 1, jpkm1 
     
    7887      ! 
    7988      SELECT CASE ( nadv )                            !==  compute advection trend and add it to general trend  ==! 
    80       CASE ( 1 )   ;    CALL tra_adv_cen2  ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )   !  2nd order centered 
    81       CASE ( 2 )   ;    CALL tra_adv_tvd   ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )   !  TVD  
    82       CASE ( 3 )   ;    CALL tra_adv_muscl ( kt, 'TRC', zun, zvn, zwn, trb,      tra, jptra )   !  MUSCL  
    83       CASE ( 4 )   ;    CALL tra_adv_muscl2( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )   !  MUSCL2  
    84       CASE ( 5 )   ;    CALL tra_adv_ubs   ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )   !  UBS  
    85       CASE ( 6 )   ;    CALL tra_adv_qck   ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )   !  QUICKEST  
     89      CASE ( 1 )   ;    CALL tra_adv_cen2  ( kt, 'TRC',       zun, zvn, zwn, trb, trn, tra, jptra )   !  2nd order centered 
     90      CASE ( 2 )   ;    CALL tra_adv_tvd   ( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra )   !  TVD  
     91      CASE ( 3 )   ;    CALL tra_adv_muscl ( kt, 'TRC', r2dt, zun, zvn, zwn, trb,      tra, jptra )   !  MUSCL  
     92      CASE ( 4 )   ;    CALL tra_adv_muscl2( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra )   !  MUSCL2  
     93      CASE ( 5 )   ;    CALL tra_adv_ubs   ( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra )   !  UBS  
     94      CASE ( 6 )   ;    CALL tra_adv_qck   ( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra )   !  QUICKEST  
    8695      ! 
    8796      CASE (-1 )                                      !==  esopa: test all possibility with control print  ==! 
    88          CALL tra_adv_cen2  ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )           
     97         CALL tra_adv_cen2  ( kt, 'TRC',       zun, zvn, zwn, trb, trn, tra, jptra )           
    8998         WRITE(charout, FMT="('adv1')")  ; CALL prt_ctl_trc_info(charout) 
    9099                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
    91          CALL tra_adv_tvd   ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )           
     100         CALL tra_adv_tvd   ( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra )           
    92101         WRITE(charout, FMT="('adv2')")  ; CALL prt_ctl_trc_info(charout) 
    93102                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
    94          CALL tra_adv_muscl ( kt, 'TRC', zun, zvn, zwn, trb,      tra, jptra )           
     103         CALL tra_adv_muscl ( kt, 'TRC', r2dt, zun, zvn, zwn, trb,      tra, jptra )           
    95104         WRITE(charout, FMT="('adv3')")  ; CALL prt_ctl_trc_info(charout) 
    96105                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
    97          CALL tra_adv_muscl2( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )           
     106         CALL tra_adv_muscl2( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra )           
    98107         WRITE(charout, FMT="('adv4')")  ; CALL prt_ctl_trc_info(charout) 
    99108                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
    100          CALL tra_adv_ubs   ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )           
     109         CALL tra_adv_ubs   ( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra )           
    101110         WRITE(charout, FMT="('adv5')")  ; CALL prt_ctl_trc_info(charout) 
    102111                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
    103          CALL tra_adv_qck   ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )           
     112         CALL tra_adv_qck   ( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra )           
    104113         WRITE(charout, FMT="('adv6')")  ; CALL prt_ctl_trc_info(charout) 
    105114                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trcldf.F90

    r2034 r2082  
    7070 
    7171      SELECT CASE ( nldf )                       ! compute lateral mixing trend and add it to the general trend 
    72       CASE ( 0 )   ;   CALL tra_ldf_lap   ( kt , 'TRC', gtru, gtrv, trb, tra, jptra            )  ! iso-level laplacian 
    73       CASE ( 1 )   ;   CALL tra_ldf_iso   ( kt , 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 )  ! rotated laplacian  
    74       CASE ( 2 )   ;   CALL tra_ldf_bilap ( kt , 'TRC', gtru, gtrv, trb, tra, jptra            )  ! iso-level bilaplacian 
    75       CASE ( 3 )   ;   CALL tra_ldf_bilapg( kt , 'TRC',             trb, tra, jptra            )  ! s-coord. horizontal bilaplacian 
     72      CASE ( 0 )   ;   CALL tra_ldf_lap   ( kt, 'TRC', gtru, gtrv, trb, tra, jptra            )  ! iso-level laplacian 
     73      CASE ( 1 )   ;   CALL tra_ldf_iso   ( kt, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 )  ! rotated laplacian  
     74      CASE ( 2 )   ;   CALL tra_ldf_bilap ( kt, 'TRC', gtru, gtrv, trb, tra, jptra            )  ! iso-level bilaplacian 
     75      CASE ( 3 )   ;   CALL tra_ldf_bilapg( kt, 'TRC',             trb, tra, jptra            )  ! s-coord. horizontal bilaplacian 
    7676         ! 
    7777      CASE ( -1 )                                     ! esopa: test all possibility with control print 
    78          CALL tra_ldf_lap   ( kt , 'TRC', gtru, gtrv, trb, tra, jptra            ) 
     78         CALL tra_ldf_lap   ( kt, 'TRC', gtru, gtrv, trb, tra, jptra            ) 
    7979         WRITE(charout, FMT="('ldf0 ')") ;  CALL prt_ctl_trc_info(charout) 
    8080                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
    81          CALL tra_ldf_iso   ( kt , 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 ) 
     81         CALL tra_ldf_iso   ( kt, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 ) 
    8282         WRITE(charout, FMT="('ldf1 ')") ;  CALL prt_ctl_trc_info(charout) 
    8383                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
    84          CALL tra_ldf_bilap ( kt , 'TRC', gtru, gtrv, trb, tra, jptra            ) 
     84         CALL tra_ldf_bilap ( kt, 'TRC', gtru, gtrv, trb, tra, jptra            ) 
    8585         WRITE(charout, FMT="('ldf2 ')") ;  CALL prt_ctl_trc_info(charout) 
    8686                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
    87          CALL tra_ldf_bilapg( kt , 'TRC',             trb, tra, jptra            ) 
     87         CALL tra_ldf_bilapg( kt, 'TRC',             trb, tra, jptra            ) 
    8888         WRITE(charout, FMT="('ldf3 ')") ;  CALL prt_ctl_trc_info(charout) 
    8989                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trcnxt.F90

    r2034 r2082  
    4444   PUBLIC trc_nxt          ! routine called by step.F90 
    4545 
    46   REAL(wp), DIMENSION(jpk) ::   r2dt_t 
     46  REAL(wp), DIMENSION(jpk) ::   r2dt 
    4747   !!---------------------------------------------------------------------- 
    4848   !!   TOP 1.0 , LOCEAN-IPSL (2005)  
     
    109109 
    110110      ! set time step size (Euler/Leapfrog) 
    111       IF( neuler == 0 .AND. kt ==  nittrc000) THEN  ;  r2dt_t(:) =     rdttra(:) * FLOAT( nn_dttrc )  ! at nit000             (Euler) 
    112       ELSEIF( kt <= nittrc000 + 1 )           THEN  ;  r2dt_t(:) = 2.* rdttra(:) * FLOAT( nn_dttrc )  ! at nit000 or nit000+1 (Leapfrog) 
     111      IF( neuler == 0 .AND. kt ==  nittrc000) THEN  ;  r2dt(:) =     rdttra(:) * FLOAT( nn_dttrc )  ! at nit000             (Euler) 
     112      ELSEIF( kt <= nittrc000 + 1 )           THEN  ;  r2dt(:) = 2.* rdttra(:) * FLOAT( nn_dttrc )  ! at nit000 or nit000+1 (Leapfrog) 
    113113      ENDIF 
    114114 
     
    133133         DO jn = 1, jptra 
    134134            DO jk = 1, jpkm1 
    135                zfact = 1.e0 / r2dt_t(jk)   
     135               zfact = 1.e0 / r2dt(jk)   
    136136               ztrdt(:,:,jk,jn) = ( trb(:,:,jk,jn) - ztrdt(:,:,jk,jn) ) * zfact  
    137137               CALL trd_tra( kt, 'TRC', jn, jptra_trd_atf, ztrdt ) 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trctrp.F90

    r2052 r2082  
    2828   USE trcrad          ! positivity                          (trc_rad routine) 
    2929   USE trcsbc          ! surface boundary condition          (trc_sbc routine) 
    30    USE zpshde          ! partial step: hor. derivative   (zps_hde_trc routine) 
     30   USE zpshde          ! partial step: hor. derivative       (zps_hde routine) 
    3131 
    3232#if defined key_agrif 
     
    7474#endif 
    7575                                CALL trc_zdf( kstp )            ! vertical mixing and after tracer fields 
    76          IF( ln_zps    )        CALL zps_hde_trc( kstp, jptra, trn, gtru, gtrv )  ! Partial steps: now horizontal gradient of passive 
     76         IF( ln_zps    )        CALL zps_hde( kstp, jptra, trn, gtru, gtrv )  ! Partial steps: now horizontal gradient of passive 
    7777                                                                ! tracers at the bottom ocean level 
    7878                                CALL trc_nxt( kstp )            ! tracer fields at next time step      
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trczdf.F90

    r2052 r2082  
    8080      SELECT CASE ( nzdf )                       ! compute lateral mixing trend and add it to the general trend 
    8181      CASE ( -1 )                                       ! esopa: test all possibility with control print 
    82          CALL tra_zdf_exp( kt , 'TRC', r2dt, nn_trczdf_exp, trb, tra, jptra )  
     82         CALL tra_zdf_exp( kt, 'TRC', r2dt, nn_trczdf_exp, trb, tra, jptra )  
    8383         WRITE(charout, FMT="('zdf1 ')") ;  CALL prt_ctl_trc_info(charout) 
    8484                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
    85          CALL tra_zdf_imp( kt , 'TRC', r2dt,                trb, tra, jptra )  
     85         CALL tra_zdf_imp( kt, 'TRC', r2dt,                trb, tra, jptra )  
    8686         WRITE(charout, FMT="('zdf2 ')") ;  CALL prt_ctl_trc_info(charout) 
    8787                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
    88       CASE ( 0 ) ;  CALL tra_zdf_exp( kt , 'TRC', r2dt, nn_trczdf_exp, trb, tra, jptra )    !   explicit scheme  
    89       CASE ( 1 ) ;  CALL tra_zdf_imp( kt , 'TRC', r2dt,                trb, tra, jptra )    !   implicit scheme           
     88      CASE ( 0 ) ;  CALL tra_zdf_exp( kt, 'TRC', r2dt, nn_trczdf_exp, trb, tra, jptra )    !   explicit scheme  
     89      CASE ( 1 ) ;  CALL tra_zdf_imp( kt, 'TRC', r2dt,                trb, tra, jptra )    !   implicit scheme           
    9090 
    9191      END SELECT 
Note: See TracChangeset for help on using the changeset viewer.