Changeset 10874 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv.F90
- Timestamp:
- 2019-04-15T15:57:37+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv.F90
r10806 r10874 75 75 CONTAINS 76 76 77 SUBROUTINE tra_adv( kt , ktlev1, ktlev2, ktlev3, kt2lev, pts_rhs)77 SUBROUTINE tra_adv( kt ) 78 78 !!---------------------------------------------------------------------- 79 79 !! *** ROUTINE tra_adv *** … … 81 81 !! ** Purpose : compute the ocean tracer advection trend. 82 82 !! 83 !! ** Method : - Update (pu_rhs,pv_rhs) with the advection term following nadv 84 !!---------------------------------------------------------------------- 85 INTEGER, INTENT(in) :: kt ! ocean time-step index 86 INTEGER, INTENT(in) :: ktlev1, ktlev2, ktlev3 ! time level indices for 3-time-level source terms 87 INTEGER, INTENT(in) :: kt2lev ! time level index for 2-time-level source terms 88 REAL(wp), INTENT( inout), DIMENSION(jpi,jpj,jpk,jpts) :: pts_rhs ! temperature and salinity trends 83 !! ** Method : - Update (ua,va) with the advection term following nadv 84 !!---------------------------------------------------------------------- 85 INTEGER, INTENT(in) :: kt ! ocean time-step index 89 86 ! 90 87 INTEGER :: jk ! dummy loop index … … 106 103 IF( ln_wave .AND. ln_sdw ) THEN 107 104 DO jk = 1, jpkm1 ! eulerian transport + Stokes Drift 108 zun(:,:,jk) = e2u (:,:) * e3u (:,:,jk,ktlev2) * ( uu(:,:,jk,ktlev2) + usd(:,:,jk) )109 zvn(:,:,jk) = e1v (:,:) * e3v (:,:,jk,ktlev2) * ( vv(:,:,jk,ktlev2) + vsd(:,:,jk) )110 zwn(:,:,jk) = e1e2t(:,:) * ( w w(:,:,jk) + wsd(:,:,jk) )105 zun(:,:,jk) = e2u (:,:) * e3u_n(:,:,jk) * ( un(:,:,jk) + usd(:,:,jk) ) 106 zvn(:,:,jk) = e1v (:,:) * e3v_n(:,:,jk) * ( vn(:,:,jk) + vsd(:,:,jk) ) 107 zwn(:,:,jk) = e1e2t(:,:) * ( wn(:,:,jk) + wsd(:,:,jk) ) 111 108 END DO 112 109 ELSE 113 110 DO jk = 1, jpkm1 114 zun(:,:,jk) = e2u (:,:) * e3u (:,:,jk,ktlev2) * uu(:,:,jk,ktlev2) ! eulerian transport only115 zvn(:,:,jk) = e1v (:,:) * e3v (:,:,jk,ktlev2) * vv(:,:,jk,ktlev2)116 zwn(:,:,jk) = e1e2t(:,:) * w w(:,:,jk)111 zun(:,:,jk) = e2u (:,:) * e3u_n(:,:,jk) * un(:,:,jk) ! eulerian transport only 112 zvn(:,:,jk) = e1v (:,:) * e3v_n(:,:,jk) * vn(:,:,jk) 113 zwn(:,:,jk) = e1e2t(:,:) * wn(:,:,jk) 117 114 END DO 118 115 ENDIF … … 142 139 IF( l_trdtra ) THEN !* Save ta and sa trends 143 140 ALLOCATE( ztrdt(jpi,jpj,jpk), ztrds(jpi,jpj,jpk) ) 144 ztrdt(:,:,:) = pts_rhs(:,:,:,jp_tem)145 ztrds(:,:,:) = pts_rhs(:,:,:,jp_sal)141 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 142 ztrds(:,:,:) = tsa(:,:,:,jp_sal) 146 143 ENDIF 147 144 ! … … 149 146 ! 150 147 CASE ( np_CEN ) ! Centered scheme : 2nd / 4th order 151 CALL tra_adv_cen ( kt, nit000, ktlev2, 'TRA', zun, zvn, zwn , ts(:,:,:,:,ktlev2), pts_rhs, jpts, nn_cen_h, nn_cen_v )148 CALL tra_adv_cen ( kt, nit000, 'TRA', zun, zvn, zwn , tsn, tsa, jpts, nn_cen_h, nn_cen_v ) 152 149 CASE ( np_FCT ) ! FCT scheme : 2nd / 4th order 153 CALL tra_adv_fct ( kt, nit000, ktlev1, ktlev2, ktlev3, 'TRA', r2dt, zun, zvn, zwn, & 154 & ts(:,:,:,:,ktlev1), ts(:,:,:,:,ktlev2), pts_rhs, jpts, nn_fct_h, nn_fct_v ) 150 CALL tra_adv_fct ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts, nn_fct_h, nn_fct_v ) 155 151 CASE ( np_MUS ) ! MUSCL 156 CALL tra_adv_mus ( kt, nit000, ktlev2, kt2lev, 'TRA', r2dt, zun, zvn, zwn, ts(:,:,:,:,ktlev1), pts_rhs, jpts , ln_mus_ups )152 CALL tra_adv_mus ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsa, jpts , ln_mus_ups ) 157 153 CASE ( np_UBS ) ! UBS 158 CALL tra_adv_ubs ( kt, nit000, ktlev2, 'TRA', r2dt, zun, zvn, zwn, ts(:,:,:,:,ktlev1), ts(:,:,:,:,ktlev2), pts_rhs, jpts , nn_ubs_v )154 CALL tra_adv_ubs ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts , nn_ubs_v ) 159 155 CASE ( np_QCK ) ! QUICKEST 160 CALL tra_adv_qck ( kt, nit000, ktlev2, 'TRA', r2dt, zun, zvn, zwn, ts(:,:,:,:,ktlev1), ts(:,:,:,:,ktlev2), pts_rhs, jpts )156 CALL tra_adv_qck ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts ) 161 157 ! 162 158 END SELECT … … 164 160 IF( l_trdtra ) THEN ! save the advective trends for further diagnostics 165 161 DO jk = 1, jpkm1 166 ztrdt(:,:,jk) = pts_rhs(:,:,jk,jp_tem) - ztrdt(:,:,jk)167 ztrds(:,:,jk) = pts_rhs(:,:,jk,jp_sal) - ztrds(:,:,jk)162 ztrdt(:,:,jk) = tsa(:,:,jk,jp_tem) - ztrdt(:,:,jk) 163 ztrds(:,:,jk) = tsa(:,:,jk,jp_sal) - ztrds(:,:,jk) 168 164 END DO 169 165 CALL trd_tra( kt, 'TRA', jp_tem, jptra_totad, ztrdt )
Note: See TracChangeset
for help on using the changeset viewer.