Changeset 14994 for NEMO/branches/2021/ticket2669_isf_fluxes/src/OCE/TRA
- Timestamp:
- 2021-06-15T16:39:31+02:00 (3 years ago)
- Location:
- NEMO/branches/2021/ticket2669_isf_fluxes/src
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/ticket2669_isf_fluxes/src
- Property svn:mergeinfo deleted
-
NEMO/branches/2021/ticket2669_isf_fluxes/src/OCE/TRA/traadv_qck.F90
r14834 r14994 246 246 IF (nn_hls==1) CALL lbc_lnk( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp, ld4only= .TRUE. ) ! Lateral boundary conditions 247 247 248 ! Correct zfd on northfold after lbc_lnk; see #2640 249 IF( nn_hls == 1 .AND. l_IdoNFold .AND. ntej == Nje0 ) THEN 250 DO jk = 1, jpkm1 251 WHERE( tmask_i(ntsi:ntei,ntej:jpj) == 0._wp ) zfd(ntsi:ntei,ntej:jpj,jk) = zfc(ntsi:ntei,ntej:jpj,jk) 252 END DO 253 ENDIF 248 254 ! 249 255 ! Horizontal advective fluxes -
NEMO/branches/2021/ticket2669_isf_fluxes/src/OCE/TRA/traadv_qck_lf.F90
r14834 r14994 111 111 ! 112 112 ! ! horizontal fluxes are computed with the QUICKEST + ULTIMATE scheme 113 CALL tra_adv_qck_i ( kt, cdtype, p2dt, pU, Kbb, Kmm, pt, kjpt, Krhs )114 CALL tra_adv_qck_j ( kt, cdtype, p2dt, pV, Kbb, Kmm, pt, kjpt, Krhs )113 CALL tra_adv_qck_i_lf( kt, cdtype, p2dt, pU, Kbb, Kmm, pt, kjpt, Krhs ) 114 CALL tra_adv_qck_j_lf( kt, cdtype, p2dt, pV, Kbb, Kmm, pt, kjpt, Krhs ) 115 115 116 116 ! ! vertical fluxes are computed with the 2nd order centered scheme 117 CALL tra_adv_cen2_k ( kt, cdtype, pW, Kmm, pt, kjpt, Krhs )117 CALL tra_adv_cen2_k_lf( kt, cdtype, pW, Kmm, pt, kjpt, Krhs ) 118 118 ! 119 119 END SUBROUTINE tra_adv_qck_lf 120 120 121 121 122 SUBROUTINE tra_adv_qck_i ( kt, cdtype, p2dt, pU, Kbb, Kmm, pt, kjpt, Krhs )122 SUBROUTINE tra_adv_qck_i_lf( kt, cdtype, p2dt, pU, Kbb, Kmm, pt, kjpt, Krhs ) 123 123 !!---------------------------------------------------------------------- 124 124 !! … … 193 193 END DO 194 194 ! 195 END SUBROUTINE tra_adv_qck_i 196 197 198 SUBROUTINE tra_adv_qck_j ( kt, cdtype, p2dt, pV, Kbb, Kmm, pt, kjpt, Krhs )195 END SUBROUTINE tra_adv_qck_i_lf 196 197 198 SUBROUTINE tra_adv_qck_j_lf( kt, cdtype, p2dt, pV, Kbb, Kmm, pt, kjpt, Krhs ) 199 199 !!---------------------------------------------------------------------- 200 200 !! … … 273 273 END DO 274 274 ! 275 END SUBROUTINE tra_adv_qck_j 276 277 278 SUBROUTINE tra_adv_cen2_k ( kt, cdtype, pW, Kmm, pt, kjpt, Krhs )275 END SUBROUTINE tra_adv_qck_j_lf 276 277 278 SUBROUTINE tra_adv_cen2_k_lf( kt, cdtype, pW, Kmm, pt, kjpt, Krhs ) 279 279 !!---------------------------------------------------------------------- 280 280 !! … … 323 323 END DO 324 324 ! 325 END SUBROUTINE tra_adv_cen2_k 325 END SUBROUTINE tra_adv_cen2_k_lf 326 326 327 327 -
NEMO/branches/2021/ticket2669_isf_fluxes/src/OCE/TRA/traadv_ubs.F90
r14834 r14994 161 161 END_3D 162 162 ! 163 DO_3D( 1, 1, 1, 1, 1, jpk )163 DO_3D( 0, 0, 0, 0, 1, jpk ) 164 164 zltu(ji,jj,jk) = pt(ji,jj,jk,jn,Krhs) ! store the initial trends before its update 165 165 END_3D … … 175 175 END DO 176 176 ! 177 DO_3D( 1, 1, 1, 1, 1, jpk )177 DO_3D( 0, 0, 0, 0, 1, jpk ) 178 178 zltu(ji,jj,jk) = pt(ji,jj,jk,jn,Krhs) - zltu(ji,jj,jk) ! Horizontal advective trend used in vertical 2nd order FCT case 179 179 END_3D ! and/or in trend diagnostic (l_trd=T) … … 203 203 ! 204 204 ! !* upstream advection with initial mass fluxes & intermediate update ==! 205 DO_3D( 1, 1, 1, 1, 2, jpkm1 )205 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 206 206 zfp_wk = pW(ji,jj,jk) + ABS( pW(ji,jj,jk) ) 207 207 zfm_wk = pW(ji,jj,jk) - ABS( pW(ji,jj,jk) ) … … 210 210 IF( ln_linssh ) THEN ! top ocean value (only in linear free surface as ztw has been w-masked) 211 211 IF( ln_isfcav ) THEN ! top of the ice-shelf cavities and at the ocean surface 212 DO_2D( 1, 1, 1, 1)212 DO_2D( 0, 0, 0, 0 ) 213 213 ztw(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb) ! linear free surface 214 214 END_2D 215 215 ELSE ! no cavities: only at the ocean surface 216 DO_2D( 1, 1, 1, 1)216 DO_2D( 0, 0, 0, 0 ) 217 217 ztw(ji,jj,1) = pW(ji,jj,1) * pt(ji,jj,1,jn,Kbb) 218 218 END_2D … … 228 228 ! 229 229 ! !* anti-diffusive flux : high order minus low order 230 DO_3D( 1, 1, 1, 1, 2, jpkm1 )230 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 231 231 ztw(ji,jj,jk) = ( 0.5_wp * pW(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj,jk-1,jn,Kmm) ) & 232 232 & - ztw(ji,jj,jk) ) * wmask(ji,jj,jk) … … 243 243 END_3D 244 244 IF( ln_linssh ) THEN 245 DO_2D( 1, 1, 1, 1)245 DO_2D( 0, 0, 0, 0 ) 246 246 ztw(ji,jj,1) = pW(ji,jj,1) * pt(ji,jj,1,jn,Kmm) !!gm ISF & 4th COMPACT doesn't work 247 247 END_2D -
NEMO/branches/2021/ticket2669_isf_fluxes/src/OCE/TRA/tradmp.F90
r14718 r14994 53 53 !! * Substitutions 54 54 # include "do_loop_substitute.h90" 55 # include "domzgr_substitute.h90" 55 56 !!---------------------------------------------------------------------- 56 57 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 96 97 INTEGER :: ji, jj, jk, jn ! dummy loop indices 97 98 REAL(wp), DIMENSION(A2D(nn_hls),jpk,jpts) :: zts_dta 99 REAL(wp), DIMENSION(:,:,:) , ALLOCATABLE :: zwrk 98 100 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: ztrdts 99 101 !!---------------------------------------------------------------------- … … 102 104 ! 103 105 IF( l_trdtra .OR. iom_use('hflx_dmp_cea') .OR. iom_use('sflx_dmp_cea') ) THEN !* Save ta and sa trends 104 ALLOCATE( ztrdts(jpi,jpj,jpk,jpts) ) 105 ztrdts(:,:,:,:) = pts(:,:,:,:,Krhs) 106 ALLOCATE( ztrdts(A2D(nn_hls),jpk,jpts) ) 107 DO jn = 1, jpts 108 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 109 ztrdts(ji,jj,jk,jn) = pts(ji,jj,jk,jn,Krhs) 110 END_3D 111 END DO 106 112 ENDIF 107 113 ! !== input T-S data at kt ==! … … 141 147 ! 142 148 ! outputs (clem trunk) 143 IF( iom_use('hflx_dmp_cea') ) & 144 & CALL iom_put('hflx_dmp_cea', & 145 & SUM( ( pts(:,:,:,jp_tem,Krhs) - ztrdts(:,:,:,jp_tem) ) * e3t(:,:,:,Kmm), dim=3 ) * rcp * rho0 ) ! W/m2 146 IF( iom_use('sflx_dmp_cea') ) & 147 & CALL iom_put('sflx_dmp_cea', & 148 & SUM( ( pts(:,:,:,jp_sal,Krhs) - ztrdts(:,:,:,jp_sal) ) * e3t(:,:,:,Kmm), dim=3 ) * rho0 ) ! g/m2/s 149 IF( iom_use('hflx_dmp_cea') .OR. iom_use('sflx_dmp_cea') ) THEN 150 ALLOCATE( zwrk(A2D(nn_hls),jpk) ) ! Needed to handle expressions containing e3t when using key_qco or key_linssh 151 zwrk(:,:,:) = 0._wp 152 153 IF( iom_use('hflx_dmp_cea') ) THEN 154 DO_3D( 0, 0, 0, 0, 1, jpk ) 155 zwrk(ji,jj,jk) = ( pts(ji,jj,jk,jp_tem,Krhs) - ztrdts(ji,jj,jk,jp_tem) ) * e3t(ji,jj,jk,Kmm) 156 END_3D 157 CALL iom_put('hflx_dmp_cea', SUM( zwrk(:,:,:), dim=3 ) * rcp * rho0 ) ! W/m2 158 ENDIF 159 IF( iom_use('sflx_dmp_cea') ) THEN 160 DO_3D( 0, 0, 0, 0, 1, jpk ) 161 zwrk(ji,jj,jk) = ( pts(ji,jj,jk,jp_sal,Krhs) - ztrdts(ji,jj,jk,jp_sal) ) * e3t(ji,jj,jk,Kmm) 162 END_3D 163 CALL iom_put('sflx_dmp_cea', SUM( zwrk(:,:,:), dim=3 ) * rho0 ) ! g/m2/s 164 ENDIF 165 166 DEALLOCATE( zwrk ) 167 ENDIF 149 168 ! 150 169 IF( l_trdtra ) THEN ! trend diagnostic -
NEMO/branches/2021/ticket2669_isf_fluxes/src/OCE/TRA/tramle.F90
r14834 r14994 366 366 r1_ft(:,:) = 1._wp / SQRT( ff_t(:,:) * ff_t(:,:) + z1_t2 ) 367 367 ! 368 ! Specifically, dbdx_mle, dbdy_mle and mld_prof need to be defined for nn_hls = 2369 IF( nn_hls == 2 .AND. ln_osm_mle .AND. ln_zdfosm ) THEN370 CALL ctl_stop('nn_hls = 2 cannot be used with ln_mle = ln_osm_mle = ln_zdfosm = T (zdfosm not updated for nn_hls = 2)')371 ENDIF372 368 ENDIF 373 369 !
Note: See TracChangeset
for help on using the changeset viewer.