Changeset 12810 for NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/TRA/traadv_mus.F90
- Timestamp:
- 2020-04-24T17:09:39+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/TRA/traadv_mus.F90
r12719 r12810 31 31 USE lbclnk ! ocean lateral boundary condition (or mpp link) 32 32 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 33 USE halo_mng34 33 35 34 IMPLICIT NONE … … 38 37 PUBLIC tra_adv_mus ! routine called by traadv.F90 39 38 40 REAL(wp), POINTER, SAVE, DIMENSION(:,:) :: upsmsk !: mixed upstream/centered scheme near some straits39 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: upsmsk !: mixed upstream/centered scheme near some straits 41 40 ! ! and in closed seas (orca 2 and 1 configurations) 42 41 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xind !: mixed upstream/centered index … … 45 44 LOGICAL :: l_ptr ! flag to compute poleward transport 46 45 LOGICAL :: l_hst ! flag to compute heat/salt transport 47 48 INTEGER :: jphls = 249 46 50 47 !! * Substitutions … … 83 80 LOGICAL , INTENT(in ) :: ld_msc_ups ! use upstream scheme within muscl 84 81 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 85 REAL(wp), POINTER, DIMENSION(:,:,:), INTENT(in ) :: pU, pV, pW ! 3 ocean volume flux components86 REAL(wp), POINTER, DIMENSION(:,:,:,:,:), INTENT(inout) :: pt ! tracers and RHS of tracer equation82 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ) :: pU, pV, pW ! 3 ocean volume flux components 83 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) :: pt ! tracers and RHS of tracer equation 87 84 ! 88 85 INTEGER :: ji, jj, jk, jn ! dummy loop indices … … 90 87 REAL(wp) :: zu, z0u, zzwx, zw , zalpha ! local scalars 91 88 REAL(wp) :: zv, z0v, zzwy, z0w ! - - 92 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zwx, zslpx ! 3D workspace93 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zwy, zslpy ! - -89 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwx, zslpx ! 3D workspace 90 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwy, zslpy ! - - 94 91 !!---------------------------------------------------------------------- 95 92 ! 96 CALL halo_mng_set(jphls)97 98 ALLOCATE(zwx(jpi,jpj,jpk))99 ALLOCATE(zwy(jpi,jpj,jpk))100 ALLOCATE(zslpx(jpi,jpj,jpk))101 ALLOCATE(zslpy(jpi,jpj,jpk))102 103 CALL halo_mng_resize(r1_e1e2t,'T', 1._wp)104 CALL halo_mng_resize(r1_e1e2u,'U', 1._wp)105 CALL halo_mng_resize(r1_e1e2v,'V', 1._wp)106 CALL halo_mng_resize(tmask,'T', 1._wp)107 CALL halo_mng_resize(wmask,'W', 1._wp)108 CALL halo_mng_resize(umask,'U', 1._wp)109 CALL halo_mng_resize(vmask,'V', 1._wp)110 CALL halo_mng_resize(pt, 'T', 1._wp, kjpt=kjpt, fjpt=Kbb )111 CALL halo_mng_resize(pt, 'T', 1._wp, kjpt=kjpt, fjpt=Krhs )112 CALL halo_mng_resize(e3t,'T', 1._wp, fillval=1._wp, fjpt=Kmm)113 CALL halo_mng_resize(e3u,'U', 1._wp, fillval=1._wp, fjpt=Kmm )114 CALL halo_mng_resize(e3v,'V', 1._wp, fillval=1._wp, fjpt=Kmm)115 CALL halo_mng_resize(e3w,'W', 1._wp, fillval=1._wp, fjpt=Kmm)116 CALL halo_mng_resize(pU, 'U', -1._wp)117 CALL halo_mng_resize(pV, 'V', -1._wp)118 CALL halo_mng_resize(pW, 'W', 1._wp)119 !120 IF( ln_isfcav ) CALL halo_mng_resize(mikt, 'T', 1._wp)121 IF( ld_msc_ups) CALL halo_mng_resize(rnfmsk,'T', 1._wp)122 IF( ld_msc_ups) CALL halo_mng_resize(upsmsk,'T', 1._wp)123 124 93 IF( kt == kit000 ) THEN 125 94 IF(lwp) WRITE(numout,*) … … 167 136 END_3D 168 137 ! lateral boundary conditions (changed sign) 169 !CALL lbc_lnk_multi( 'traadv_mus', zwx, 'U', -1. , zwy, 'V', -1. )138 CALL lbc_lnk_multi( 'traadv_mus', zwx, 'U', -1. , zwy, 'V', -1. ) 170 139 ! !-- Slopes of tracer 171 140 zslpx(:,:,jpk) = 0._wp ! bottom values … … 203 172 zwy(ji,jj,jk) = pV(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 204 173 END_3D 205 !CALL lbc_lnk_multi( 'traadv_mus', zwx, 'U', -1. , zwy, 'V', -1. ) ! lateral boundary conditions (changed sign)174 CALL lbc_lnk_multi( 'traadv_mus', zwx, 'U', -1. , zwy, 'V', -1. ) ! lateral boundary conditions (changed sign) 206 175 ! 207 176 DO_3D_00_00( 1, jpkm1 ) … … 264 233 ! 265 234 END DO ! end of tracer loop 266 267 DEALLOCATE(zwx,zwy) 268 DEALLOCATE(zslpx,zslpy) 269 270 CALL halo_mng_set(1) 271 ! 272 CALL halo_mng_resize(r1_e1e2t,'T', 1._wp) 273 CALL halo_mng_resize(r1_e1e2u,'U', 1._wp) 274 CALL halo_mng_resize(r1_e1e2v,'V', 1._wp) 275 CALL halo_mng_resize(pt,'T', 1._wp, kjpt=kjpt, fjpt=Kbb ) 276 CALL halo_mng_resize(pt,'T', 1._wp, kjpt=kjpt, fjpt=Krhs ) 277 CALL halo_mng_resize(tmask,'T', 1._wp) 278 CALL halo_mng_resize(wmask,'W', 1._wp) 279 CALL halo_mng_resize(umask,'U', 1._wp) 280 CALL halo_mng_resize(vmask,'V', 1._wp) 281 CALL halo_mng_resize(e3t,'T', 1._wp, fillval=1._wp, fjpt=Kmm) 282 CALL halo_mng_resize(e3u,'U', 1._wp, fillval=1._wp, fjpt=Kmm) 283 CALL halo_mng_resize(e3v,'V', 1._wp, fillval=1._wp, fjpt=Kmm) 284 CALL halo_mng_resize(e3w,'W', 1._wp, fillval=1._wp, fjpt=Kmm) 285 CALL halo_mng_resize(pU,'U', 1._wp) 286 CALL halo_mng_resize(pV,'V', 1._wp) 287 CALL halo_mng_resize(pW,'W', 1._wp) 288 289 IF( ln_isfcav ) CALL halo_mng_resize(mikt, 'T', 1._wp) 290 IF( ld_msc_ups) CALL halo_mng_resize(rnfmsk, 'T', 1._wp) 291 IF( ld_msc_ups) CALL halo_mng_resize(upsmsk, 'T', 1._wp) 235 ! 292 236 END SUBROUTINE tra_adv_mus 293 237
Note: See TracChangeset
for help on using the changeset viewer.