- Timestamp:
- 2020-06-24T14:38:26+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12527_Gurvan_ShallowWater/src/OCE/TRA/traadv_mus.F90
r12377 r13151 29 29 USE in_out_manager ! I/O manager 30 30 USE lib_mpp ! distribued memory computing 31 USE lbclnk ! ocean lateral boundary condition (or mpp link) 32 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 31 USE lbclnk ! ocean lateral boundary condition (or mpp link) 32 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 33 33 34 34 IMPLICIT NONE … … 36 36 37 37 PUBLIC tra_adv_mus ! routine called by traadv.F90 38 38 39 39 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: upsmsk !: mixed upstream/centered scheme near some straits 40 40 ! ! and in closed seas (orca 2 and 1 configurations) 41 41 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xind !: mixed upstream/centered index 42 42 43 43 LOGICAL :: l_trd ! flag to compute trends 44 44 LOGICAL :: l_ptr ! flag to compute poleward transport … … 47 47 !! * Substitutions 48 48 # include "do_loop_substitute.h90" 49 # include "domzgr_substitute.h90" 49 50 !!---------------------------------------------------------------------- 50 51 !! NEMO/OCE 4.0 , NEMO Consortium (2018) 51 !! $Id$ 52 !! $Id$ 52 53 !! Software governed by the CeCILL license (see ./LICENSE) 53 54 !!---------------------------------------------------------------------- … … 64 65 !! 65 66 !! ** Method : MUSCL scheme plus centered scheme at ocean boundaries 66 !! ld_msc_ups=T : 67 !! ld_msc_ups=T : 67 68 !! 68 69 !! ** Action : - update pt(:,:,:,:,Krhs) with the now advective tracer trends … … 88 89 REAL(wp) :: zv, z0v, zzwy, z0w ! - - 89 90 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwx, zslpx ! 3D workspace 90 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwy, zslpy ! - - 91 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwy, zslpy ! - - 91 92 !!---------------------------------------------------------------------- 92 93 ! … … 112 113 & upsmsk(:,:) ) * tmask(:,:,jk) ! =>0 in some user defined area 113 114 END DO 114 ENDIF 115 ! 116 ENDIF 117 ! 115 ENDIF 116 ! 117 ENDIF 118 ! 118 119 l_trd = .FALSE. 119 120 l_hst = .FALSE. 120 121 l_ptr = .FALSE. 121 122 IF( ( cdtype == 'TRA' .AND. l_trdtra ) .OR. ( cdtype == 'TRC' .AND. l_trdtrc ) ) l_trd = .TRUE. 122 IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtadv' ) .OR. iom_use( 'sophtadv' ) ) ) l_ptr = .TRUE. 123 IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtadv' ) .OR. iom_use( 'sophtadv' ) ) ) l_ptr = .TRUE. 123 124 IF( cdtype == 'TRA' .AND. ( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR. & 124 125 & iom_use("uadv_salttr") .OR. iom_use("vadv_salttr") ) ) l_hst = .TRUE. … … 130 131 ! !-- first guess of the slopes 131 132 zwx(:,:,jpk) = 0._wp ! bottom values 132 zwy(:,:,jpk) = 0._wp 133 zwy(:,:,jpk) = 0._wp 133 134 DO_3D_10_10( 1, jpkm1 ) 134 135 zwx(ji,jj,jk) = umask(ji,jj,jk) * ( pt(ji+1,jj,jk,jn,Kbb) - pt(ji,jj,jk,jn,Kbb) ) … … 176 177 DO_3D_00_00( 1, jpkm1 ) 177 178 pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) - ( zwx(ji,jj,jk) - zwx(ji-1,jj ,jk ) & 178 & +zwy(ji,jj,jk) - zwy(ji ,jj-1,jk ) ) &179 & 179 & + zwy(ji,jj,jk) - zwy(ji ,jj-1,jk ) ) & 180 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 180 181 END_3D 181 182 ! ! trend diagnostics … … 184 185 CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_yad, zwy, pV, pt(:,:,:,jn,Kbb) ) 185 186 END IF 186 ! ! "Poleward" heat and salt transports 187 ! ! "Poleward" heat and salt transports 187 188 IF( l_ptr ) CALL dia_ptr_hst( jn, 'adv', zwy(:,:,:) ) 188 189 ! ! heat transport … … 227 228 ! 228 229 DO_3D_00_00( 1, jpkm1 ) 229 pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) - ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) ) * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 230 pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) - ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) ) & 231 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 230 232 END_3D 231 233 ! ! send trends for diagnostic
Note: See TracChangeset
for help on using the changeset viewer.