Changeset 9987 for branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90
- Timestamp:
- 2018-07-23T11:33:03+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90
r7960 r9987 26 26 USE ldfslp ! iso-neutral slopes 27 27 USE diaptr ! poleward transport diagnostics 28 USE trd_oce ! trends: ocean variables 29 USE trdtra ! trends manager: tracers 28 30 USE in_out_manager ! I/O manager 29 31 USE iom ! I/O library 30 32 USE phycst ! physical constants 31 33 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 32 USE wrk_nemo ! Memory Allocation33 34 USE timing ! Timing 34 35 … … 105 106 INTEGER :: ji, jj, jk, jn ! dummy loop indices 106 107 INTEGER :: ikt 107 REAL(wp) :: zmsku, zabe1, zcof1, zcoef3 ! local scalars 108 REAL(wp) :: zmskv, zabe2, zcof2, zcoef4 ! - - 109 REAL(wp) :: zcoef0, zbtr, ztra ! - - 110 REAL(wp), POINTER, DIMENSION(:,: ) :: z2d 111 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdkt, zdk1t, zdit, zdjt, ztfw 108 REAL(wp) :: zmsku, zabe1, zcof1, zcoef3 ! local scalars 109 REAL(wp) :: zmskv, zabe2, zcof2, zcoef4 ! - - 110 REAL(wp) :: zcoef0, zbtr ! - - 111 REAL(wp), ALLOCATABLE, DIMENSION(:,: ) :: z2d 112 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zdkt, zdk1t, zdit, zdjt, ztfw 113 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET :: ztrax, ztray, ztraz 114 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET :: ztrax_T, ztray_T, ztraz_T 112 115 !!---------------------------------------------------------------------- 113 116 ! 114 117 IF( nn_timing == 1 ) CALL timing_start('tra_ldf_iso') 115 118 ! 116 CALL wrk_alloc( jpi, jpj, z2d ) 117 CALL wrk_alloc( jpi, jpj, jpk, zdit, zdjt, ztfw, zdkt, zdk1t ) 119 ALLOCATE( z2d(1:jpi, 1:jpj)) 120 ALLOCATE( zdit(1:jpi, 1:jpj, 1:jpk)) 121 ALLOCATE( zdjt(1:jpi, 1:jpj, 1:jpk)) 122 ALLOCATE( ztfw(1:jpi, 1:jpj, 1:jpk)) 123 ALLOCATE( zdkt(1:jpi, 1:jpj, 1:jpk)) 124 ALLOCATE( zdk1t(1:jpi, 1:jpj, 1:jpk)) 125 ALLOCATE( ztrax(1:jpi,1:jpj,1:jpk)) 126 ALLOCATE( ztray(1:jpi,1:jpj,1:jpk)) 127 ALLOCATE( ztraz(1:jpi,1:jpj,1:jpk) ) 128 IF( l_trdtra .and. cdtype == 'TRA' ) THEN 129 ALLOCATE( ztrax_T(1:jpi,1:jpj,1:jpk)) 130 ALLOCATE( ztray_T(1:jpi,1:jpj,1:jpk)) 131 ALLOCATE( ztraz_T(1:jpi,1:jpj,1:jpk)) 132 ENDIF 118 133 ! 119 134 … … 127 142 DO jn = 1, kjpt ! tracer loop 128 143 ! ! =========== 144 ztrax(:,:,:) = 0._wp ; ztray(:,:,:) = 0._wp ; ztraz(:,:,:) = 0._wp ; 129 145 ! 130 146 !!---------------------------------------------------------------------- … … 226 242 DO ji = fs_2, fs_jpim1 ! vector opt. 227 243 zbtr = 1.0 / ( e12t(ji,jj) * fse3t_n(ji,jj,jk) ) 228 ztra = zbtr * ( zftu(ji,jj,jk) - zftu(ji-1,jj,jk) + zftv(ji,jj,jk) - zftv(ji,jj-1,jk))229 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra244 ztrax(ji,jj,jk) = zbtr * ( zftu(ji,jj,jk) - zftu(ji-1,jj,jk) ) 245 ztray(ji,jj,jk) = zbtr * ( zftv(ji,jj,jk) - zftv(ji,jj-1,jk) ) 230 246 END DO 231 247 END DO … … 234 250 ! ! =============== 235 251 ! 252 pta(:,:,:,jn) = pta(:,:,:,jn) + ztrax(:,:,:) + ztray(:,:,:) 253 ! 236 254 ! "Poleward" diffusive heat or salt transports (T-S case only) 237 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN238 255 ! note sign is reversed to give down-gradient diffusive transports (#1043) 239 IF( jn == jp_tem) htr_ldf(:) = ptr_sj( -zftv(:,:,:) ) 240 IF( jn == jp_sal) str_ldf(:) = ptr_sj( -zftv(:,:,:) ) 241 ENDIF 256 IF( cdtype == 'TRA' .AND. ln_diaptr ) CALL dia_ptr_ohst_components( jn, 'ldf', -zftv(:,:,:) ) 242 257 243 258 IF( iom_use("udiff_heattr") .OR. iom_use("vdiff_heattr") ) THEN … … 314 329 DO ji = fs_2, fs_jpim1 ! vector opt. 315 330 zbtr = 1.0 / ( e12t(ji,jj) * fse3t_n(ji,jj,jk) ) 316 ztra = ( ztfw(ji,jj,jk) - ztfw(ji,jj,jk+1) ) * zbtr 317 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 331 ztraz(ji,jj,jk) = ( ztfw(ji,jj,jk) - ztfw(ji,jj,jk+1) ) * zbtr 318 332 END DO 319 333 END DO 320 334 END DO 335 pta(:,:,:,jn) = pta(:,:,:,jn) + ztraz(:,:,:) 321 336 ! 337 IF( l_trdtra .AND. cdtype == "TRA" .AND. jn .eq. 1 ) THEN ! save the temperature trends 338 ztrax_T(:,:,:) = ztrax(:,:,:) 339 ztray_T(:,:,:) = ztray(:,:,:) 340 ztraz_T(:,:,:) = ztraz(:,:,:) 341 ENDIF 342 IF( l_trdtrc .AND. cdtype == "TRC" ) THEN ! save the horizontal component of diffusive trends for further diagnostics 343 CALL trd_tra( kt, cdtype, jn, jptra_iso_x, ztrax ) 344 CALL trd_tra( kt, cdtype, jn, jptra_iso_y, ztray ) 345 CALL trd_tra( kt, cdtype, jn, jptra_iso_z1, ztraz ) ! This is the first part of the vertical component. 346 ENDIF 322 347 END DO 323 348 ! 324 CALL wrk_dealloc( jpi, jpj, z2d ) 325 CALL wrk_dealloc( jpi, jpj, jpk, zdit, zdjt, ztfw, zdkt, zdk1t ) 349 IF( l_trdtra .AND. cdtype == "TRA" ) THEN ! save the horizontal component of diffusive trends for further diagnostics 350 CALL trd_tra( kt, cdtype, jp_tem, jptra_iso_x, ztrax_T ) 351 CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_x, ztrax ) 352 CALL trd_tra( kt, cdtype, jp_tem, jptra_iso_y, ztray_T ) 353 CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_y, ztray ) 354 CALL trd_tra( kt, cdtype, jp_tem, jptra_iso_z1, ztraz_T ) ! This is the first part of the vertical component 355 CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_z1, ztraz ) ! 356 ENDIF 357 ! 358 DEALLOCATE( z2d ) 359 DEALLOCATE( zdit) 360 DEALLOCATE( zdjt) 361 DEALLOCATE( ztfw) 362 DEALLOCATE( zdkt ) 363 DEALLOCATE( zdk1t ) 364 DEALLOCATE( ztrax, ztray, ztraz ) 365 IF( l_trdtra .and. cdtype == 'TRA' ) DEALLOCATE( ztrax_T, ztray_T, ztraz_T ) 326 366 ! 327 367 IF( nn_timing == 1 ) CALL timing_stop('tra_ldf_iso')
Note: See TracChangeset
for help on using the changeset viewer.