Changeset 7083 for branches/UKMO/dev_r5518_GO6_package_MEDUSA_extra_CMIP6_diags/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90
- Timestamp:
- 2016-10-25T12:12:41+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package_MEDUSA_extra_CMIP6_diags/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90
r6919 r7083 79 79 # endif 80 80 REAL(wp), POINTER, DIMENSION(:,:) :: zu_eiv, zv_eiv, zw_eiv, z2d 81 REAL(wp), POINTER, DIMENSION(:,:,:) :: z3d 81 REAL(wp), POINTER, DIMENSION(:,:,:) :: z3d, z3d_T 82 82 !!---------------------------------------------------------------------- 83 83 ! … … 86 86 # if defined key_diaeiv 87 87 CALL wrk_alloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv, z2d ) 88 IF( ln_diaptr ) CALL wrk_alloc( jpi, jpj, jpk, z3d)88 CALL wrk_alloc( jpi, jpj, jpk, z3d, z3d_T ) 89 89 # else 90 90 CALL wrk_alloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv ) … … 170 170 CALL iom_put( "weiv_masstr" , z3d ) 171 171 ENDIF 172 IF( iom_use("ueiv_masstr") .OR. iom_use("ueiv_heattr") ) THEN 172 IF( iom_use("ueiv_masstr") .OR. iom_use("ueiv_heattr") .OR. iom_use('ueiv_heattr3d') & 173 .OR. iom_use("ueiv_salttr") .OR. iom_use('ueiv_salttr3d') ) THEN 173 174 z3d(:,:,jpk) = 0.e0 174 z2d(:,:) = 0.e0175 175 DO jk = 1, jpkm1 176 176 z3d(:,:,jk) = rau0 * u_eiv(:,:,jk) * e2u(:,:) * fse3u(:,:,jk) * umask(:,:,jk) 177 z2d(:,:) = z2d(:,:) + z3d(:,:,jk)178 177 END DO 179 178 CALL iom_put( "ueiv_masstr", z3d ) ! mass transport in i-direction 180 179 ENDIF 181 180 182 IF( iom_use('ueiv_heattr') ) THEN181 IF( iom_use('ueiv_heattr') .OR. iom_use('ueiv_heattr3d') ) THEN 183 182 zztmp = 0.5 * rcp 184 183 z2d(:,:) = 0.e0 185 DO jk = 1, jpkm1 186 DO jj = 2, jpjm1 187 DO ji = fs_2, fs_jpim1 ! vector opt. 188 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) ) 189 END DO 190 END DO 191 END DO 192 CALL lbc_lnk( z2d, 'U', -1. ) 193 CALL iom_put( "ueiv_heattr", zztmp * z2d ) ! heat transport in i-direction 194 ENDIF 195 196 IF( iom_use("veiv_masstr") .OR. iom_use("veiv_heattr") ) THEN 184 z3d_T(:,:,:) = 0.e0 185 DO jk = 1, jpkm1 186 DO jj = 2, jpjm1 187 DO ji = fs_2, fs_jpim1 ! vector opt. 188 z3d_T(ji,jj,jk) = z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) ) 189 z2d(ji,jj) = z2d(ji,jj) + z3d_T(ji,jj,jk) 190 END DO 191 END DO 192 END DO 193 IF (iom_use('ueiv_heattr') ) THEN 194 CALL lbc_lnk( z2d, 'U', -1. ) 195 CALL iom_put( "ueiv_heattr", zztmp * z2d ) ! 2D heat transport in i-direction 196 ENDIF 197 IF (iom_use('ueiv_heattr3d') ) THEN 198 CALL lbc_lnk( z3d_T, 'U', -1. ) 199 CALL iom_put( "ueiv_heattr3d", zztmp * z3d_T ) ! 3D heat transport in i-direction 200 ENDIF 201 ENDIF 202 203 IF( iom_use('ueiv_salttr') .OR. iom_use('ueiv_salttr3d') ) THEN 204 zztmp = 0.5 * 0.001 205 z2d(:,:) = 0.e0 206 z3d_T(:,:,:) = 0.e0 207 DO jk = 1, jpkm1 208 DO jj = 2, jpjm1 209 DO ji = fs_2, fs_jpim1 ! vector opt. 210 z3d_T(ji,jj,jk) = z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) ) 211 z2d(ji,jj) = z2d(ji,jj) + z3d_T(ji,jj,jk) 212 END DO 213 END DO 214 END DO 215 IF (iom_use('ueiv_salttr') ) THEN 216 CALL lbc_lnk( z2d, 'U', -1. ) 217 CALL iom_put( "ueiv_salttr", zztmp * z2d ) ! 2D salt transport in i-direction 218 ENDIF 219 IF (iom_use('ueiv_salttr3d') ) THEN 220 CALL lbc_lnk( z3d_T, 'U', -1. ) 221 CALL iom_put( "ueiv_salttr3d", zztmp * z3d_T ) ! 3D salt transport in i-direction 222 ENDIF 223 ENDIF 224 225 IF( iom_use("veiv_masstr") .OR. iom_use("veiv_heattr") .OR. iom_use('veiv_heattr3d') & 226 .OR. iom_use("veiv_salttr") .OR. iom_use('veiv_salttr3d') ) THEN 197 227 z3d(:,:,jpk) = 0.e0 198 z2d(:,:) = 0.e0199 228 DO jk = 1, jpkm1 200 229 z3d(:,:,jk) = rau0 * v_eiv(:,:,jk) * e1v(:,:) * fse3v(:,:,jk) * vmask(:,:,jk) … … 202 231 CALL iom_put( "veiv_masstr", z3d ) ! mass transport in j-direction 203 232 ENDIF 204 205 IF( iom_use('veiv_heattr') ) THEN 233 IF( iom_use('veiv_heattr') .OR. iom_use('veiv_heattr3d') ) THEN 206 234 zztmp = 0.5 * rcp 207 235 z2d(:,:) = 0.e0 208 DO jk = 1, jpkm1 209 DO jj = 2, jpjm1 210 DO ji = fs_2, fs_jpim1 ! vector opt. 211 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) ) 212 END DO 213 END DO 214 END DO 215 CALL lbc_lnk( z2d, 'V', -1. ) 216 CALL iom_put( "veiv_heattr", zztmp * z2d ) ! heat transport in j-direction 217 ENDIF 236 z3d_T(:,:,:) = 0.e0 237 DO jk = 1, jpkm1 238 DO jj = 2, jpjm1 239 DO ji = fs_2, fs_jpim1 ! vector opt. 240 z3d_T(ji,jj,jk) = z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) ) 241 z2d(ji,jj) = z2d(ji,jj) + z3d_T(ji,jj,jk) 242 END DO 243 END DO 244 END DO 245 IF (iom_use('veiv_heattr') ) THEN 246 CALL lbc_lnk( z2d, 'V', -1. ) 247 CALL iom_put( "veiv_heattr", zztmp * z2d ) ! 2D heat transport in j-direction 248 ENDIF 249 IF (iom_use('veiv_heattr3d') ) THEN 250 CALL lbc_lnk( z3d_T, 'V', -1. ) 251 CALL iom_put( "veiv_heattr3d", zztmp * z3d_T ) ! 3D heat transport in j-direction 252 ENDIF 253 ENDIF 254 255 IF( iom_use('veiv_salttr') .OR. iom_use('veiv_salttr3d') ) THEN 256 zztmp = 0.5 * 0.001 257 z2d(:,:) = 0.e0 258 z3d_T(:,:,:) = 0.e0 259 DO jk = 1, jpkm1 260 DO jj = 2, jpjm1 261 DO ji = fs_2, fs_jpim1 ! vector opt. 262 z3d_T(ji,jj,jk) = z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_sal) + tsn(ji,jj+1,jk,jp_sal) ) 263 z2d(ji,jj) = z2d(ji,jj) + z3d_T(ji,jj,jk) 264 END DO 265 END DO 266 END DO 267 IF (iom_use('veiv_salttr') ) THEN 268 CALL lbc_lnk( z2d, 'V', -1. ) 269 CALL iom_put( "veiv_salttr", zztmp * z2d ) ! 2D salt transport in i-direction 270 ENDIF 271 IF (iom_use('veiv_salttr3d') ) THEN 272 CALL lbc_lnk( z3d_T, 'V', -1. ) 273 CALL iom_put( "veiv_salttr3d", zztmp * z3d_T ) ! 3D salt transport in i-direction 274 ENDIF 275 ENDIF 276 277 IF( iom_use('weiv_masstr') .OR. iom_use('weiv_heattr3d') .OR. iom_use('weiv_salttr3d')) THEN ! vertical mass transport & its square value 278 z2d(:,:) = rau0 * e12t(:,:) 279 DO jk = 1, jpk 280 z3d(:,:,jk) = w_eiv(:,:,jk) * z2d(:,:) 281 END DO 282 CALL iom_put( "weiv_masstr" , z3d ) ! mass transport in k-direction 283 ENDIF 284 285 IF( iom_use('weiv_heattr3d') ) THEN 286 zztmp = 0.5 * rcp 287 DO jk = 1, jpkm1 288 DO jj = 2, jpjm1 289 DO ji = fs_2, fs_jpim1 ! vector opt. 290 z3d_T(ji,jj,jk) = z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_tem) + tsn(ji,jj,jk+1,jp_tem) ) 291 END DO 292 END DO 293 END DO 294 CALL lbc_lnk( z3d_T, 'T', 1. ) 295 CALL iom_put( "weiv_heattr3d", zztmp * z3d_T ) ! 3D heat transport in k-direction 296 ENDIF 297 298 IF( iom_use('weiv_salttr3d') ) THEN 299 zztmp = 0.5 * 0.001 300 DO jk = 1, jpkm1 301 DO jj = 2, jpjm1 302 DO ji = fs_2, fs_jpim1 ! vector opt. 303 z3d_T(ji,jj,jk) = z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_sal) + tsn(ji,jj,jk+1,jp_sal) ) 304 END DO 305 END DO 306 END DO 307 CALL lbc_lnk( z3d_T, 'T', 1. ) 308 CALL iom_put( "weiv_salttr3d", zztmp * z3d_T ) ! 3D salt transport in k-direction 309 ENDIF 310 218 311 END IF 219 312 ! … … 244 337 # if defined key_diaeiv 245 338 CALL wrk_dealloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv, z2d ) 246 IF( ln_diaptr ) CALL wrk_dealloc( jpi, jpj, jpk, z3d)339 CALL wrk_dealloc( jpi, jpj, jpk, z3d, z3d_T ) 247 340 # else 248 341 CALL wrk_dealloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv )
Note: See TracChangeset
for help on using the changeset viewer.