Changeset 13409 for NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/src/OCE/TRA/zpshde.F90
- Timestamp:
- 2020-08-17T15:28:54+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/src/OCE/TRA/zpshde.F90
r12377 r13409 17 17 USE oce ! ocean: dynamics and tracers variables 18 18 USE dom_oce ! domain: ocean variables 19 USE domutl, ONLY : is_tile 19 20 USE phycst ! physical constants 20 21 USE eosbn2 ! ocean equation of state … … 39 40 CONTAINS 40 41 41 SUBROUTINE zps_hde( kt, Kmm, kjpt, pta, pgtu, pgtv, & 42 & prd, pgru, pgrv ) 42 ! TODO: NOT TESTED- requires zps 43 SUBROUTINE zps_hde( kt, Kmm, kjpt, pta, pgtu, pgtv, & 44 & prd, pgru, pgrv ) 45 !! 46 INTEGER , INTENT(in ) :: kt ! ocean time-step index 47 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 48 INTEGER , INTENT(in ) :: kjpt ! number of tracers 49 REAL(wp), DIMENSION(:,:,:,:), INTENT(in ) :: pta ! 4D tracers fields 50 REAL(wp), DIMENSION(:,:,:) , INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts 51 REAL(wp), DIMENSION(:,:,:) , INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields 52 REAL(wp), DIMENSION(:,:) , INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom) 53 ! 54 INTEGER :: itrd, itgr 55 !! 56 IF( PRESENT(prd) ) THEN ; itrd = is_tile(prd) ; ELSE ; itrd = 0 ; ENDIF 57 IF( PRESENT(pgru) ) THEN ; itgr = is_tile(pgru) ; ELSE ; itgr = 0 ; ENDIF 58 59 CALL zps_hde_t( kt, Kmm, kjpt, pta, is_tile(pta), pgtu, pgtv, is_tile(pgtu), & 60 & prd, itrd, pgru, pgrv, itgr ) 61 END SUBROUTINE zps_hde 62 63 64 SUBROUTINE zps_hde_t( kt, Kmm, kjpt, pta, ktta, pgtu, pgtv, ktgt, & 65 & prd, ktrd, pgru, pgrv, ktgr ) 43 66 !!---------------------------------------------------------------------- 44 67 !! *** ROUTINE zps_hde *** … … 84 107 !! - pgru, pgrv: horizontal gradient of rho (if present) at u- & v-points 85 108 !!---------------------------------------------------------------------- 86 INTEGER , INTENT(in ) :: kt ! ocean time-step index 87 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 88 INTEGER , INTENT(in ) :: kjpt ! number of tracers 89 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: pta ! 4D tracers fields 90 REAL(wp), DIMENSION(jpi,jpj, kjpt), INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts 91 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields 92 REAL(wp), DIMENSION(jpi,jpj ), INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom) 109 INTEGER , INTENT(in ) :: kt ! ocean time-step index 110 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 111 INTEGER , INTENT(in ) :: kjpt ! number of tracers 112 INTEGER , INTENT(in ) :: ktta, ktgt, ktrd, ktgr 113 REAL(wp), DIMENSION(T2D(ktta),jpk,kjpt), INTENT(in ) :: pta ! 4D tracers fields 114 REAL(wp), DIMENSION(T2D(ktgt) ,kjpt), INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts 115 REAL(wp), DIMENSION(T2D(ktrd),jpk ), INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields 116 REAL(wp), DIMENSION(T2D(ktgr) ), INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom) 93 117 ! 94 118 INTEGER :: ji, jj, jn ! Dummy loop indices 95 119 INTEGER :: iku, ikv, ikum1, ikvm1 ! partial step level (ocean bottom level) at u- and v-points 96 120 REAL(wp) :: ze3wu, ze3wv, zmaxu, zmaxv ! local scalars 97 REAL(wp), DIMENSION( jpi,jpj) :: zri, zrj, zhi, zhj ! NB: 3rd dim=1 to use eos98 REAL(wp), DIMENSION( jpi,jpj,kjpt) :: zti, ztj !121 REAL(wp), DIMENSION(A2D) :: zri, zrj, zhi, zhj ! NB: 3rd dim=1 to use eos 122 REAL(wp), DIMENSION(A2D,kjpt) :: zti, ztj ! 99 123 !!---------------------------------------------------------------------- 100 124 ! … … 184 208 IF( ln_timing ) CALL timing_stop( 'zps_hde') 185 209 ! 186 END SUBROUTINE zps_hde 187 188 210 END SUBROUTINE zps_hde_t 211 212 213 ! TODO: NOT TESTED- requires zps 189 214 SUBROUTINE zps_hde_isf( kt, Kmm, kjpt, pta, pgtu, pgtv, pgtui, pgtvi, & 190 & prd, pgru, pgrv, pgrui, pgrvi ) 215 & prd, pgru, pgrv, pgrui, pgrvi ) 216 !! 217 INTEGER , INTENT(in ) :: kt ! ocean time-step index 218 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 219 INTEGER , INTENT(in ) :: kjpt ! number of tracers 220 REAL(wp), DIMENSION(:,:,:,:), INTENT(in ) :: pta ! 4D tracers fields 221 REAL(wp), DIMENSION(:,:,:) , INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts 222 REAL(wp), DIMENSION(:,:,:) , INTENT( out) :: pgtui, pgtvi ! hor. grad. of stra at u- & v-pts (ISF) 223 REAL(wp), DIMENSION(:,:,:) , INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields 224 REAL(wp), DIMENSION(:,:) , INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom) 225 REAL(wp), DIMENSION(:,:) , INTENT( out), OPTIONAL :: pgrui, pgrvi ! hor. grad of prd at u- & v-pts (top) 226 ! 227 INTEGER :: itrd, itgr, itgri 228 !! 229 IF( PRESENT(prd) ) THEN ; itrd = is_tile(prd) ; ELSE ; itrd = 0 ; ENDIF 230 IF( PRESENT(pgru) ) THEN ; itgr = is_tile(pgru) ; ELSE ; itgr = 0 ; ENDIF 231 IF( PRESENT(pgrui) ) THEN ; itgri = is_tile(pgrui) ; ELSE ; itgri = 0 ; ENDIF 232 233 CALL zps_hde_isf_t( kt, Kmm, kjpt, pta, is_tile(pta), pgtu, pgtv, is_tile(pgtu), pgtui, pgtvi, is_tile(pgtui), & 234 & prd, itrd, pgru, pgrv, itgr, pgrui, pgrvi, itgri ) 235 END SUBROUTINE zps_hde_isf 236 237 238 SUBROUTINE zps_hde_isf_t( kt, Kmm, kjpt, pta, ktta, pgtu, pgtv, ktgt, pgtui, pgtvi, ktgti, & 239 & prd, ktrd, pgru, pgrv, ktgr, pgrui, pgrvi, ktgri ) 191 240 !!---------------------------------------------------------------------- 192 241 !! *** ROUTINE zps_hde_isf *** … … 235 284 !! - pgru, pgrv, pgrui, pgtvi: horizontal gradient of rho (if present) at u- & v-points 236 285 !!---------------------------------------------------------------------- 237 INTEGER , INTENT(in ) :: kt ! ocean time-step index 238 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 239 INTEGER , INTENT(in ) :: kjpt ! number of tracers 240 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: pta ! 4D tracers fields 241 REAL(wp), DIMENSION(jpi,jpj, kjpt), INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts 242 REAL(wp), DIMENSION(jpi,jpj, kjpt), INTENT( out) :: pgtui, pgtvi ! hor. grad. of stra at u- & v-pts (ISF) 243 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields 244 REAL(wp), DIMENSION(jpi,jpj ), INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom) 245 REAL(wp), DIMENSION(jpi,jpj ), INTENT( out), OPTIONAL :: pgrui, pgrvi ! hor. grad of prd at u- & v-pts (top) 286 INTEGER , INTENT(in ) :: kt ! ocean time-step index 287 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 288 INTEGER , INTENT(in ) :: kjpt ! number of tracers 289 INTEGER , INTENT(in ) :: ktta, ktgt, ktgti, ktrd, ktgr, ktgri 290 REAL(wp), DIMENSION(T2D(ktta),jpk,kjpt), INTENT(in ) :: pta ! 4D tracers fields 291 REAL(wp), DIMENSION(T2D(ktgt) ,kjpt), INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts 292 REAL(wp), DIMENSION(T2D(ktgti) ,kjpt), INTENT( out) :: pgtui, pgtvi ! hor. grad. of stra at u- & v-pts (ISF) 293 REAL(wp), DIMENSION(T2D(ktrd),jpk ), INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields 294 REAL(wp), DIMENSION(T2D(ktgr) ), INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom) 295 REAL(wp), DIMENSION(T2D(ktgri) ), INTENT( out), OPTIONAL :: pgrui, pgrvi ! hor. grad of prd at u- & v-pts (top) 246 296 ! 247 297 INTEGER :: ji, jj, jn ! Dummy loop indices 248 298 INTEGER :: iku, ikv, ikum1, ikvm1,ikup1, ikvp1 ! partial step level (ocean bottom level) at u- and v-points 249 299 REAL(wp) :: ze3wu, ze3wv, zmaxu, zmaxv ! temporary scalars 250 REAL(wp), DIMENSION( jpi,jpj) :: zri, zrj, zhi, zhj ! NB: 3rd dim=1 to use eos251 REAL(wp), DIMENSION( jpi,jpj,kjpt) :: zti, ztj !300 REAL(wp), DIMENSION(A2D) :: zri, zrj, zhi, zhj ! NB: 3rd dim=1 to use eos 301 REAL(wp), DIMENSION(A2D,kjpt) :: zti, ztj ! 252 302 !!---------------------------------------------------------------------- 253 303 ! … … 439 489 IF( ln_timing ) CALL timing_stop( 'zps_hde_isf') 440 490 ! 441 END SUBROUTINE zps_hde_isf 491 END SUBROUTINE zps_hde_isf_t 442 492 443 493 !!======================================================================
Note: See TracChangeset
for help on using the changeset viewer.