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 10880 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP – NEMO

Ignore:
Timestamp:
2019-04-17T12:02:14+02:00 (5 years ago)
Author:
davestorkey
Message:

branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps:

  1. Move time indices from dom_oce.F90 to step.F90.
  2. Implement time dimension for passive tracers with independent set of time indices in trcstp.F90.
  3. Update all the traadv and trcadv modules.
Location:
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcadv.F90

    r10874 r10880  
    6868CONTAINS 
    6969 
    70    SUBROUTINE trc_adv( kt ) 
     70   SUBROUTINE trc_adv( kt, Kbb, Kmm, ptr, Krhs ) 
    7171      !!---------------------------------------------------------------------- 
    7272      !!                  ***  ROUTINE trc_adv  *** 
     
    7676      !! ** Method  : - Update after tracers (tra) with the advection term following nadv 
    7777      !!---------------------------------------------------------------------- 
    78       INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     78      INTEGER                                   , INTENT(in)    :: kt   ! ocean time-step index 
     79      INTEGER                                   , INTENT(in)    :: Kbb, Kmm, Krhs ! time level indices 
     80      REAL(wp), DIMENSION(jpi,jpj,jpk,jptra,jpt), INTENT(inout) :: ptr            ! passive tracers and RHS of tracer equation 
    7981      ! 
    8082      INTEGER ::   jk   ! dummy loop index 
     
    123125      ! 
    124126      CASE ( np_CEN )                                 ! Centered : 2nd / 4th order 
    125          CALL tra_adv_cen( kt, nittrc000,'TRC',          zun, zvn, zwn     , trn, tra, jptra, nn_cen_h, nn_cen_v ) 
     127         CALL tra_adv_cen( kt, nittrc000,'TRC',          zun, zvn, zwn,      Kmm, ptr, jptra, Krhs, nn_cen_h, nn_cen_v ) 
    126128      CASE ( np_FCT )                                 ! FCT      : 2nd / 4th order 
    127          CALL tra_adv_fct( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra, nn_fct_h, nn_fct_v ) 
     129         CALL tra_adv_fct( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, Kbb, Kmm, ptr, jptra, Krhs, nn_fct_h, nn_fct_v ) 
    128130      CASE ( np_MUS )                                 ! MUSCL 
    129          CALL tra_adv_mus( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb,      tra, jptra        , ln_mus_ups )  
     131         CALL tra_adv_mus( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, Kbb, Kmm, ptr, jptra, Krhs, ln_mus_ups        )  
    130132      CASE ( np_UBS )                                 ! UBS 
    131          CALL tra_adv_ubs( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra          , nn_ubs_v ) 
     133         CALL tra_adv_ubs( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, Kbb, Kmm, ptr, jptra, Krhs, nn_ubs_v          ) 
    132134      CASE ( np_QCK )                                 ! QUICKEST 
    133          CALL tra_adv_qck( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra                     ) 
     135         CALL tra_adv_qck( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, Kbb, Kmm, ptr, jptra, Krhs                     ) 
    134136      ! 
    135137      END SELECT 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trctrp.F90

    r10874 r10880  
    4444CONTAINS 
    4545 
    46    SUBROUTINE trc_trp( kt ) 
     46   SUBROUTINE trc_trp( kt, Kbb, Kmm, Krhs, Kaa ) 
    4747      !!---------------------------------------------------------------------- 
    4848      !!                     ***  ROUTINE trc_trp  *** 
     
    5353      !!              - Update the passive tracers 
    5454      !!---------------------------------------------------------------------- 
    55       INTEGER, INTENT( in ) ::  kt  ! ocean time-step index 
     55      INTEGER, INTENT( in ) :: kt                  ! ocean time-step index 
     56      INTEGER, INTENT( in ) :: Kbb, Kmm, Krhs, Kaa ! time level indices 
    5657      !! --------------------------------------------------------------------- 
    5758      ! 
     
    6465         IF( ln_trcdmp )        CALL trc_dmp    ( kt )      ! internal damping trends 
    6566         IF( ln_bdy )           CALL trc_bdy_dmp( kt )      ! BDY damping trends 
    66                                 CALL trc_adv    ( kt )      ! horizontal & vertical advection  
     67                                CALL trc_adv    ( kt, Kbb, Kmm, tr, Krhs )      ! horizontal & vertical advection  
    6768         !                                                         ! Partial top/bottom cell: GRADh( trb )   
    6869         IF( ln_zps ) THEN 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/oce_trc.F90

    r10351 r10880  
    88   !!---------------------------------------------------------------------- 
    99   !                                            !* Domain size * 
     10   USE par_oce , ONLY :   jpt      =>   jpt        !: time dimension 
    1011   USE par_oce , ONLY :   jpi      =>   jpi        !: first  dimension of grid --> i  
    1112   USE par_oce , ONLY :   jpj      =>   jpj        !: second dimension of grid --> j   
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/trc.F90

    r10425 r10880  
    3333   REAL(wp), PUBLIC                                        ::  areatot        !: total volume  
    3434   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:  ) ::  cvol           !: volume correction -degrad option-  
    35    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::  trn            !: tracer concentration for now time step 
    36    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::  tra            !: tracer concentration for next time step 
    37    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::  trb            !: tracer concentration for before time step 
     35   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:,:), TARGET ::  tr             !: tracer concentration  
    3836   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:  ) ::  sbc_trc_b      !: Before sbc fluxes for tracers 
    3937   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:  ) ::  sbc_trc        !: Now sbc fluxes for tracers 
     
    4240   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:  ) ::  trc_o          !: prescribed tracer concentration in ocean for SBC 
    4341   INTEGER             , PUBLIC                            ::  nn_ice_tr      !: handling of sea ice tracers 
     42 
     43   !! TEMPORARY POINTERS - TO BE DELETED AFTER IMMERSE DEVELOPMENT COMPLETE 
     44   REAL(wp), PUBLIC, POINTER, SAVE, DIMENSION(:,:,:,:)   ::  trn            !: tracer concentration for now time step 
     45   REAL(wp), PUBLIC, POINTER, SAVE, DIMENSION(:,:,:,:)   ::  tra            !: tracer concentration for next time step 
     46   REAL(wp), PUBLIC, POINTER, SAVE, DIMENSION(:,:,:,:)   ::  trb            !: tracer concentration for before time step 
     47   !! TEMPORARY POINTERS - TO BE DELETED AFTER IMMERSE DEVELOPMENT COMPLETE 
    4448 
    4549   !! interpolated gradient 
     
    147151      ierr(:) = 0 
    148152      ! 
    149       ALLOCATE( trn(jpi,jpj,jpk,jptra), trb(jpi,jpj,jpk,jptra), tra(jpi,jpj,jpk,jptra),       &   
     153      ALLOCATE( tr(jpi,jpj,jpk,jptra,jpt)                                             ,       &   
    150154         &      trc_i(jpi,jpj,jptra)  , trc_o(jpi,jpj,jptra)                          ,       & 
    151155         &      gtru (jpi,jpj,jptra)  , gtrv (jpi,jpj,jptra)                          ,       & 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/trcini.F90

    r10570 r10880  
    2626   USE trcice          ! tracers in sea ice 
    2727   USE trcbc,   only : trc_bc_ini ! generalized Boundary Conditions 
     28   USE trcstp          ! for time level indices (to be initialised) 
    2829  
    2930   IMPLICIT NONE 
     
    6162      CALL trc_nam       ! read passive tracers namelists 
    6263      CALL top_alloc()   ! allocate TOP arrays 
     64 
     65      ! Initialise time level indices 
     66      Nbb = 1; Nnn = 2; Naa = 3; Nrhs = Naa 
     67 
     68      ! Initialisation of temporary pointers (to be deleted after development finished) 
     69      CALL update_pointers_trc() 
    6370      ! 
    6471      IF(.NOT.ln_trcdta )   ln_trc_ini(:) = .FALSE. 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/trcstp.F90

    r10570 r10880  
    3030 
    3131   PUBLIC   trc_stp    ! called by step 
     32   PUBLIC   update_pointers_trc ! called in initialisation 
     33 
     34   !!---------------------------------------------------------------------- 
     35   !! time level indices 
     36   !!---------------------------------------------------------------------- 
     37   INTEGER, PUBLIC :: Nbb, Nnn, Naa, Nrhs               !! used by trc_init 
    3238 
    3339   LOGICAL  ::   llnew                   ! ??? 
     
    100106                                   CALL trc_wri      ( kt )       ! output of passive tracers with iom I/O manager 
    101107                                   CALL trc_sms      ( kt )       ! tracers: sinks and sources 
    102                                    CALL trc_trp      ( kt )       ! transport of passive tracers 
     108                                   CALL trc_trp      ( kt, Nbb, Nnn, Nrhs, Naa )       ! transport of passive tracers 
    103109         IF( kt == nittrc000 ) THEN 
    104110            CALL iom_close( numrtr )       ! close input tracer restart file 
     
    125131   END SUBROUTINE trc_stp 
    126132 
     133   SUBROUTINE update_pointers_trc 
     134      !!---------------------------------------------------------------------- 
     135      !!                     ***  ROUTINE update_pointers_trc  *** 
     136      !! 
     137      !! ** Purpose :   Associate temporary pointer arrays. 
     138      !!                For IMMERSE development phase only - to be deleted 
     139      !! 
     140      !! ** Method  : 
     141      !!---------------------------------------------------------------------- 
     142 
     143      trb => tr(:,:,:,:,Nbb); trn => tr(:,:,:,:,Nnn); tra => tr(:,:,:,:,Naa) 
     144 
     145   END SUBROUTINE update_pointers_trc 
    127146 
    128147   SUBROUTINE trc_mean_qsr( kt ) 
Note: See TracChangeset for help on using the changeset viewer.