- Timestamp:
- 2021-06-18T16:26:14+02:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/ticket2680_C1D_PAPA/src/OCE/DIA/diawri.F90
r14476 r15022 123 123 REAL(wp):: zztmp2, zztmpy ! - - 124 124 REAL(wp):: ze3 125 REAL(wp), DIMENSION( jpi,jpj) :: z2d ! 2D workspace126 REAL(wp), DIMENSION( jpi,jpj,jpk) :: z3d ! 3D workspace125 REAL(wp), DIMENSION(A2D( 0)) :: z2d ! 2D workspace 126 REAL(wp), DIMENSION(A2D(nn_hls),jpk) :: z3d ! 3D workspace 127 127 !!---------------------------------------------------------------------- 128 128 ! … … 145 145 z3d(:,:,jk) = gdept(:,:,jk,Kmm) 146 146 END DO 147 CALL iom_put( "tpt_dep", z3d(:,:,:))147 CALL iom_put( "tpt_dep", z3d ) 148 148 ENDIF 149 149 … … 152 152 z3d(:,:,jk) = e3t(:,:,jk,Kmm) 153 153 END DO 154 CALL iom_put( "e3t" , z3d(:,:,:) ) 155 CALL iom_put( "e3tdef" , ( ( z3d(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 154 CALL iom_put( "e3t", z3d ) 155 IF ( iom_use("e3tdef") ) THEN 156 z3d(:,:,:) = ( ( z3d(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100._wp * tmask(:,:,:) ) ** 2 157 CALL iom_put( "e3tdef", z3d ) 158 ENDIF 156 159 ENDIF 157 160 IF ( iom_use("e3u") ) THEN ! time-varying e3u … … 159 162 z3d(:,:,jk) = e3u(:,:,jk,Kmm) 160 163 END DO 161 CALL iom_put( "e3u" , z3d (:,:,:))164 CALL iom_put( "e3u" , z3d ) 162 165 ENDIF 163 166 IF ( iom_use("e3v") ) THEN ! time-varying e3v … … 165 168 z3d(:,:,jk) = e3v(:,:,jk,Kmm) 166 169 END DO 167 CALL iom_put( "e3v" , z3d (:,:,:))170 CALL iom_put( "e3v" , z3d ) 168 171 ENDIF 169 172 IF ( iom_use("e3w") ) THEN ! time-varying e3w … … 171 174 z3d(:,:,jk) = e3w(:,:,jk,Kmm) 172 175 END DO 173 CALL iom_put( "e3w" , z3d (:,:,:))176 CALL iom_put( "e3w" , z3d ) 174 177 ENDIF 175 178 IF ( iom_use("e3f") ) THEN ! time-varying e3f caution here at Kaa … … 177 180 z3d(:,:,jk) = e3f(:,:,jk) 178 181 END DO 179 CALL iom_put( "e3f" , z3d(:,:,:) ) 180 ENDIF 181 182 IF( ll_wd ) THEN ! sea surface height (brought back to the reference used for wetting and drying) 183 CALL iom_put( "ssh" , (ssh(:,:,Kmm)+ssh_ref)*ssmask(:,:) ) 184 ELSE 185 CALL iom_put( "ssh" , ssh(:,:,Kmm) ) ! sea surface height 182 CALL iom_put( "e3f" , z3d ) 183 ENDIF 184 185 IF ( iom_use("ssh") ) THEN 186 IF( ll_wd ) THEN ! sea surface height (brought back to the reference used for wetting and drying) 187 CALL iom_put( "ssh" , (ssh(:,:,Kmm)+ssh_ref)*ssmask(:,:) ) 188 ELSE 189 CALL iom_put( "ssh" , ssh(:,:,Kmm) ) ! sea surface height 190 ENDIF 186 191 ENDIF 187 192 … … 218 223 219 224 IF ( iom_use("taubot") ) THEN ! bottom stress 220 zztmp = rho0 * 0.25 225 zztmp = rho0 * 0.25_wp 221 226 z2d(:,:) = 0._wp 222 227 DO_2D( 0, 0, 0, 0 ) … … 252 257 253 258 ! ! vertical velocity 254 IF( ln_zad_Aimp ) THEN ; CALL iom_put( "woce", ww + wi ) ! explicit plus implicit parts255 ELSE ; CALL iom_put( "woce", ww )259 IF( ln_zad_Aimp ) THEN ; IF( iom_use('woce') ) CALL iom_put( "woce", ww + wi ) ! explicit plus implicit parts 260 ELSE ; CALL iom_put( "woce", ww ) 256 261 ENDIF 257 262 … … 276 281 IF( iom_use('logavs') ) CALL iom_put( "logavs", LOG( MAX( 1.e-20_wp, avs(:,:,:) ) ) ) 277 282 278 IF ( iom_use("socegrad") .OR. iom_use("socegrad2") ) THEN 279 z3d(:,:,jpk) = 0. 280 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 281 zztmp = ts(ji,jj,jk,jp_sal,Kmm) 282 zztmpx = (ts(ji+1,jj,jk,jp_sal,Kmm) - zztmp) * r1_e1u(ji,jj) + (zztmp - ts(ji-1,jj ,jk,jp_sal,Kmm)) * r1_e1u(ji-1,jj) 283 zztmpy = (ts(ji,jj+1,jk,jp_sal,Kmm) - zztmp) * r1_e2v(ji,jj) + (zztmp - ts(ji ,jj-1,jk,jp_sal,Kmm)) * r1_e2v(ji,jj-1) 284 z3d(ji,jj,jk) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy ) & 285 & * umask(ji,jj,jk) * umask(ji-1,jj,jk) * vmask(ji,jj,jk) * umask(ji,jj-1,jk) 286 END_3D 287 CALL iom_put( "socegrad2", z3d ) ! square of module of sal gradient 288 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 289 z3d(ji,jj,jk) = SQRT( z3d(ji,jj,jk) ) 290 END_3D 291 CALL iom_put( "socegrad" , z3d ) ! module of sal gradient 283 IF ( iom_use("sssgrad") .OR. iom_use("sssgrad2") ) THEN 284 DO_2D( 0, 0, 0, 0 ) ! sss gradient 285 zztmp = ts(ji,jj,1,jp_sal,Kmm) 286 zztmpx = (ts(ji+1,jj,1,jp_sal,Kmm) - zztmp) * r1_e1u(ji,jj) + (zztmp - ts(ji-1,jj ,1,jp_sal,Kmm)) * r1_e1u(ji-1,jj) 287 zztmpy = (ts(ji,jj+1,1,jp_sal,Kmm) - zztmp) * r1_e2v(ji,jj) + (zztmp - ts(ji ,jj-1,1,jp_sal,Kmm)) * r1_e2v(ji,jj-1) 288 z2d(ji,jj) = 0.25_wp * ( zztmpx * zztmpx + zztmpy * zztmpy ) & 289 & * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * vmask(ji,jj-1,1) 290 END_2D 291 CALL iom_put( "sssgrad2", z2d ) ! square of module of sss gradient 292 IF ( iom_use("sssgrad") ) THEN 293 DO_2D( 0, 0, 0, 0 ) 294 z2d(ji,jj) = SQRT( z2d(ji,jj) ) 295 END_2D 296 CALL iom_put( "sssgrad", z2d ) ! module of sss gradient 297 ENDIF 292 298 ENDIF 293 299 294 300 IF ( iom_use("sstgrad") .OR. iom_use("sstgrad2") ) THEN 295 DO_2D( 0, 0, 0, 0 ) 301 DO_2D( 0, 0, 0, 0 ) ! sst gradient 296 302 zztmp = ts(ji,jj,1,jp_tem,Kmm) 297 303 zztmpx = ( ts(ji+1,jj,1,jp_tem,Kmm) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - ts(ji-1,jj ,1,jp_tem,Kmm) ) * r1_e1u(ji-1,jj) 298 304 zztmpy = ( ts(ji,jj+1,1,jp_tem,Kmm) - zztmp ) * r1_e2v(ji,jj) + ( zztmp - ts(ji ,jj-1,1,jp_tem,Kmm) ) * r1_e2v(ji,jj-1) 299 z2d(ji,jj) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy ) &300 & * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * umask(ji,jj-1,1)305 z2d(ji,jj) = 0.25_wp * ( zztmpx * zztmpx + zztmpy * zztmpy ) & 306 & * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * vmask(ji,jj-1,1) 301 307 END_2D 302 308 CALL iom_put( "sstgrad2", z2d ) ! square of module of sst gradient 303 DO_2D( 0, 0, 0, 0 ) 304 z2d(ji,jj) = SQRT( z2d(ji,jj) ) 305 END_2D 306 CALL iom_put( "sstgrad" , z2d ) ! module of sst gradient 309 IF ( iom_use("sstgrad") ) THEN 310 DO_2D( 0, 0, 0, 0 ) 311 z2d(ji,jj) = SQRT( z2d(ji,jj) ) 312 END_2D 313 CALL iom_put( "sstgrad", z2d ) ! module of sst gradient 314 ENDIF 307 315 ENDIF 308 316 … … 321 329 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 322 330 END_3D 323 CALL iom_put( "saltc", rho0 * z2d ) 331 CALL iom_put( "saltc", rho0 * z2d ) ! vertically integrated salt content (PSU*kg/m2) 324 332 ENDIF 325 333 ! … … 329 337 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 330 338 END_3D 331 CALL iom_put( "salt2c", rho0 * z2d ) 339 CALL iom_put( "salt2c", rho0 * z2d ) ! vertically integrated salt content (PSU*kg/m2) 332 340 ENDIF 333 341 ! … … 335 343 z3d(:,:,jpk) = 0._wp 336 344 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 337 zztmpx = 0.5 * ( uu(ji-1,jj ,jk,Kmm) + uu(ji,jj,jk,Kmm))338 zztmpy = 0.5 * ( vv(ji ,jj-1,jk,Kmm) + vv(ji,jj,jk,Kmm))339 z3d(ji,jj,jk) = 0. 5* ( zztmpx*zztmpx + zztmpy*zztmpy )345 zztmpx = uu(ji-1,jj ,jk,Kmm) + uu(ji,jj,jk,Kmm) 346 zztmpy = vv(ji ,jj-1,jk,Kmm) + vv(ji,jj,jk,Kmm) 347 z3d(ji,jj,jk) = 0.25_wp * ( zztmpx*zztmpx + zztmpy*zztmpy ) 340 348 END_3D 341 349 CALL iom_put( "ke", z3d ) ! kinetic energy … … 345 353 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * z3d(ji,jj,jk) * e1e2t(ji,jj) * tmask(ji,jj,jk) 346 354 END_3D 347 CALL iom_put( "ke_int", z2d ) ! vertically integrated kinetic energy348 ENDIF 349 ! 350 IF ( iom_use("sKE") ) THEN 355 CALL iom_put( "ke_int", z2d ) ! vertically integrated kinetic energy 356 ENDIF 357 ! 358 IF ( iom_use("sKE") ) THEN ! surface kinetic energy at T point 351 359 z2d(:,:) = 0._wp 352 360 DO_2D( 0, 0, 0, 0 ) … … 357 365 & * r1_e1e2t(ji,jj) / e3t(ji,jj,1,Kmm) * ssmask(ji,jj) 358 366 END_2D 359 CALL lbc_lnk( 'diawri', z2d, 'T', 1. )360 367 IF ( iom_use("sKE" ) ) CALL iom_put( "sKE" , z2d ) 361 368 ENDIF 362 369 ! 363 IF ( iom_use("ssKEf") ) THEN 364 z2d(:,:) = 0._wp 370 IF ( iom_use("ssKEf") ) THEN ! surface kinetic energy at F point 371 z2d(:,:) = 0._wp ! CAUTION : only valid in SWE, not with bathymetry 365 372 DO_2D( 0, 0, 0, 0 ) 366 373 z2d(ji,jj) = 0.25_wp * ( uu(ji,jj ,1,Kmm) * uu(ji,jj ,1,Kmm) * e1e2u(ji,jj ) * e3u(ji,jj ,1,Kmm) & … … 370 377 & * r1_e1e2f(ji,jj) / e3f(ji,jj,1) * ssfmask(ji,jj) 371 378 END_2D 372 CALL lbc_lnk( 'diawri', z2d, 'F', 1. )373 379 CALL iom_put( "ssKEf", z2d ) 374 380 ENDIF 375 381 ! 376 CALL iom_put( "hdiv", hdiv ) 377 378 IF ( iom_use("relvor") .OR. iom_use("absvor") .OR. iom_use("potvor") ) THEN382 CALL iom_put( "hdiv", hdiv ) ! Horizontal divergence 383 ! 384 IF( iom_use("u_masstr") .OR. iom_use("u_masstr_vint") .OR. iom_use("u_heattr") .OR. iom_use("u_salttr") ) THEN 379 385 380 z3d(:,:,jpk) = 0._wp 381 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 382 z3d(ji,jj,jk) = ( e2v(ji+1,jj ) * vv(ji+1,jj ,jk,Kmm) - e2v(ji,jj) * vv(ji,jj,jk,Kmm) & 383 & - e1u(ji ,jj+1) * uu(ji ,jj+1,jk,Kmm) + e1u(ji,jj) * uu(ji,jj,jk,Kmm) ) * r1_e1e2f(ji,jj) 384 END_3D 385 CALL iom_put( "relvor", z3d ) ! relative vorticity 386 387 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 388 z3d(ji,jj,jk) = ff_f(ji,jj) + z3d(ji,jj,jk) 389 END_3D 390 CALL iom_put( "absvor", z3d ) ! absolute vorticity 391 392 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 393 ze3 = ( e3t(ji,jj+1,jk,Kmm)*tmask(ji,jj+1,jk) + e3t(ji+1,jj+1,jk,Kmm)*tmask(ji+1,jj+1,jk) & 394 & + e3t(ji,jj ,jk,Kmm)*tmask(ji,jj ,jk) + e3t(ji+1,jj ,jk,Kmm)*tmask(ji+1,jj ,jk) ) 395 IF( ze3 /= 0._wp ) THEN ; ze3 = 4._wp / ze3 396 ELSE ; ze3 = 0._wp 397 ENDIF 398 z3d(ji,jj,jk) = ze3 * z3d(ji,jj,jk) 399 END_3D 400 CALL iom_put( "potvor", z3d ) ! potential vorticity 401 402 ENDIF 403 ! 404 IF( iom_use("u_masstr") .OR. iom_use("u_masstr_vint") .OR. iom_use("u_heattr") .OR. iom_use("u_salttr") ) THEN 405 z3d(:,:,jpk) = 0.e0 406 z2d(:,:) = 0.e0 386 z3d(:,:,jpk) = 0._wp 407 387 DO jk = 1, jpkm1 408 388 z3d(:,:,jk) = rho0 * uu(:,:,jk,Kmm) * e2u(:,:) * e3u(:,:,jk,Kmm) * umask(:,:,jk) 409 z2d(:,:) = z2d(:,:) + z3d(:,:,jk)410 389 END DO 411 CALL iom_put( "u_masstr" , z3d ) ! mass transport in i-direction 412 CALL iom_put( "u_masstr_vint", z2d ) ! mass transport in i-direction vertical sum 413 ENDIF 414 415 IF( iom_use("u_heattr") ) THEN 416 z2d(:,:) = 0._wp 417 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 418 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji+1,jj,jk,jp_tem,Kmm) ) 419 END_3D 420 CALL iom_put( "u_heattr", 0.5*rcp * z2d ) ! heat transport in i-direction 421 ENDIF 422 423 IF( iom_use("u_salttr") ) THEN 424 z2d(:,:) = 0.e0 425 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 426 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji+1,jj,jk,jp_sal,Kmm) ) 427 END_3D 428 CALL iom_put( "u_salttr", 0.5 * z2d ) ! heat transport in i-direction 429 ENDIF 430 390 CALL iom_put( "u_masstr" , z3d ) ! mass transport in i-direction 391 392 IF( iom_use("u_masstr_vint") ) THEN 393 z2d(:,:) = 0._wp 394 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 395 z2d(:,:) = z2d(:,:) + z3d(:,:,jk) 396 END_3D 397 CALL iom_put( "u_masstr_vint", z2d ) ! mass transport in i-direction vertical sum 398 ENDIF 399 IF( iom_use("u_heattr") ) THEN 400 z2d(:,:) = 0._wp 401 zztmp = 0.5_wp * rcp 402 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 403 z2d(ji,jj) = z2d(ji,jj) + zztmp * z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji+1,jj,jk,jp_tem,Kmm) ) 404 END_3D 405 CALL iom_put( "u_heattr", z2d ) ! heat transport in i-direction 406 ENDIF 407 IF( iom_use("u_salttr") ) THEN 408 z2d(:,:) = 0._wp 409 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 410 z2d(ji,jj) = z2d(ji,jj) + 0.5 * z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji+1,jj,jk,jp_sal,Kmm) ) 411 END_3D 412 CALL iom_put( "u_salttr", z2d ) ! heat transport in i-direction 413 ENDIF 414 415 ENDIF 431 416 432 417 IF( iom_use("v_masstr") .OR. iom_use("v_heattr") .OR. iom_use("v_salttr") ) THEN 433 z3d(:,:,jpk) = 0.e0 418 419 z3d(:,:,jpk) = 0._wp 434 420 DO jk = 1, jpkm1 435 421 z3d(:,:,jk) = rho0 * vv(:,:,jk,Kmm) * e1v(:,:) * e3v(:,:,jk,Kmm) * vmask(:,:,jk) 436 422 END DO 437 CALL iom_put( "v_masstr", z3d ) ! mass transport in j-direction 438 ENDIF 439 440 IF( iom_use("v_heattr") ) THEN 441 z2d(:,:) = 0.e0 442 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 443 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji,jj+1,jk,jp_tem,Kmm) ) 444 END_3D 445 CALL iom_put( "v_heattr", 0.5*rcp * z2d ) ! heat transport in j-direction 446 ENDIF 447 448 IF( iom_use("v_salttr") ) THEN 449 z2d(:,:) = 0._wp 450 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 451 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji,jj+1,jk,jp_sal,Kmm) ) 452 END_3D 453 CALL iom_put( "v_salttr", 0.5 * z2d ) ! heat transport in j-direction 423 CALL iom_put( "v_masstr", z3d ) ! mass transport in j-direction 424 425 IF( iom_use("v_heattr") ) THEN 426 z2d(:,:) = 0._wp 427 zztmp = 0.5_wp * rcp 428 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 429 z2d(ji,jj) = z2d(ji,jj) + zztmp * z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji,jj+1,jk,jp_tem,Kmm) ) 430 END_3D 431 CALL iom_put( "v_heattr", z2d ) ! heat transport in j-direction 432 ENDIF 433 IF( iom_use("v_salttr") ) THEN 434 z2d(:,:) = 0._wp 435 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 436 z2d(ji,jj) = z2d(ji,jj) + 0.5 * z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji,jj+1,jk,jp_sal,Kmm) ) 437 END_3D 438 CALL iom_put( "v_salttr", z2d ) ! heat transport in j-direction 439 ENDIF 440 454 441 ENDIF 455 442 … … 457 444 z2d(:,:) = 0._wp 458 445 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 459 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) *ts(ji,jj,jk,jp_tem,Kmm)446 z2d(ji,jj) = z2d(ji,jj) + rho0 * e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) 460 447 END_3D 461 CALL iom_put( "tosmint", rho0 * z2d )! Vertical integral of temperature448 CALL iom_put( "tosmint", z2d ) ! Vertical integral of temperature 462 449 ENDIF 463 450 IF( iom_use("somint") ) THEN 464 z2d(:,:) =0._wp451 z2d(:,:) = 0._wp 465 452 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 466 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm)453 z2d(ji,jj) = z2d(ji,jj) + rho0 * e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) 467 454 END_3D 468 CALL iom_put( "somint", rho0 * z2d ) ! Vertical integral of salinity 469 ENDIF 470 471 CALL iom_put( "bn2", rn2 ) ! Brunt-Vaisala buoyancy frequency (N^2) 472 ! 455 CALL iom_put( "somint", z2d ) ! Vertical integral of salinity 456 ENDIF 457 458 CALL iom_put( "bn2", rn2 ) ! Brunt-Vaisala buoyancy frequency (N^2) 473 459 474 IF (ln_dia25h) CALL dia_25h( kt, Kmm ) 460 IF (ln_dia25h) CALL dia_25h( kt, Kmm ) ! 25h averaging 475 461 476 462 ! Output of surface vorticity terms 477 IF ( iom_use("ssrelvor") .OR. iom_use("ssplavor") .OR. & 478 & iom_use("ssrelpotvor") .OR. iom_use("ssabspotvor") .OR. & 479 & iom_use("ssEns") ) THEN 463 ! 464 CALL iom_put( "ssplavor", ff_f ) ! planetary vorticity ( f ) 465 ! 466 IF ( iom_use("ssrelvor") .OR. iom_use("ssEns") .OR. & 467 & iom_use("ssrelpotvor") .OR. iom_use("ssabspotvor") ) THEN 480 468 ! 481 469 z2d(:,:) = 0._wp 482 ze3 = 0._wp 483 DO_2D( 1, 0, 1, 0 ) 470 DO_2D( 0, 0, 0, 0 ) 484 471 z2d(ji,jj) = ( e2v(ji+1,jj ) * vv(ji+1,jj ,1,Kmm) - e2v(ji,jj) * vv(ji,jj,1,Kmm) & 485 472 & - e1u(ji ,jj+1) * uu(ji ,jj+1,1,Kmm) + e1u(ji,jj) * uu(ji,jj,1,Kmm) ) * r1_e1e2f(ji,jj) 486 473 END_2D 487 CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 488 CALL iom_put( "ssrelvor", z2d ) ! relative vorticity ( zeta ) 474 CALL iom_put( "ssrelvor", z2d ) ! relative vorticity ( zeta ) 489 475 ! 490 CALL iom_put( "ssplavor", ff_f ) ! planetary vorticity ( f ) 491 ! 492 DO_2D( 1, 0, 1, 0 ) 493 ze3 = ( e3t(ji,jj+1,1,Kmm) * e1e2t(ji,jj+1) + e3t(ji+1,jj+1,1,Kmm) * e1e2t(ji+1,jj+1) & 494 & + e3t(ji,jj ,1,Kmm) * e1e2t(ji,jj ) + e3t(ji+1,jj ,1,Kmm) * e1e2t(ji+1,jj ) ) * r1_e1e2f(ji,jj) 495 IF( ze3 /= 0._wp ) THEN ; ze3 = 4._wp / ze3 496 ELSE ; ze3 = 0._wp 476 IF ( iom_use("ssEns") .OR. iom_use("ssrelpotvor") .OR. iom_use("ssabspotvor") ) THEN 477 DO_2D( 0, 0, 0, 0 ) 478 ze3 = ( e3t(ji,jj+1,1,Kmm) * e1e2t(ji,jj+1) + e3t(ji+1,jj+1,1,Kmm) * e1e2t(ji+1,jj+1) & 479 & + e3t(ji,jj ,1,Kmm) * e1e2t(ji,jj ) + e3t(ji+1,jj ,1,Kmm) * e1e2t(ji+1,jj ) ) * r1_e1e2f(ji,jj) 480 IF( ze3 /= 0._wp ) THEN ; ze3 = 4._wp / ze3 481 ELSE ; ze3 = 0._wp 482 ENDIF 483 z2d(ji,jj) = ze3 * z2d(ji,jj) 484 END_2D 485 CALL iom_put( "ssrelpotvor", z2d ) ! relative potential vorticity (zeta/h) 486 ! 487 IF ( iom_use("ssEns") .OR. iom_use("ssabspotvor") ) THEN 488 DO_2D( 0, 0, 0, 0 ) 489 ze3 = ( e3t(ji,jj+1,1,Kmm) * e1e2t(ji,jj+1) + e3t(ji+1,jj+1,1,Kmm) * e1e2t(ji+1,jj+1) & 490 & + e3t(ji,jj ,1,Kmm) * e1e2t(ji,jj ) + e3t(ji+1,jj ,1,Kmm) * e1e2t(ji+1,jj ) ) * r1_e1e2f(ji,jj) 491 IF( ze3 /= 0._wp ) THEN ; ze3 = 4._wp / ze3 492 ELSE ; ze3 = 0._wp 493 ENDIF 494 z2d(ji,jj) = ze3 * ff_f(ji,jj) + z2d(ji,jj) 495 END_2D 496 CALL iom_put( "ssabspotvor", z2d ) ! absolute potential vorticity ( q ) 497 ! 498 IF ( iom_use("ssEns") ) THEN 499 DO_2D( 0, 0, 0, 0 ) 500 z2d(ji,jj) = 0.5_wp * z2d(ji,jj) * z2d(ji,jj) 501 END_2D 502 CALL iom_put( "ssEns", z2d ) ! potential enstrophy ( 1/2*q2 ) 503 ENDIF 497 504 ENDIF 498 z2d(ji,jj) = ze3 * z2d(ji,jj) 499 END_2D 500 CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 501 CALL iom_put( "ssrelpotvor", z2d ) ! relative potential vorticity (zeta/h) 502 ! 503 DO_2D( 1, 0, 1, 0 ) 504 ze3 = ( e3t(ji,jj+1,1,Kmm) * e1e2t(ji,jj+1) + e3t(ji+1,jj+1,1,Kmm) * e1e2t(ji+1,jj+1) & 505 & + e3t(ji,jj ,1,Kmm) * e1e2t(ji,jj ) + e3t(ji+1,jj ,1,Kmm) * e1e2t(ji+1,jj ) ) * r1_e1e2f(ji,jj) 506 IF( ze3 /= 0._wp ) THEN ; ze3 = 4._wp / ze3 507 ELSE ; ze3 = 0._wp 508 ENDIF 509 z2d(ji,jj) = ze3 * ff_f(ji,jj) + z2d(ji,jj) 510 END_2D 511 CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 512 CALL iom_put( "ssabspotvor", z2d ) ! absolute potential vorticity ( q ) 513 ! 514 DO_2D( 1, 0, 1, 0 ) 515 z2d(ji,jj) = 0.5_wp * z2d(ji,jj) * z2d(ji,jj) 516 END_2D 517 CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 518 CALL iom_put( "ssEns", z2d ) ! potential enstrophy ( 1/2*q2 ) 519 ! 505 ENDIF 520 506 ENDIF 521 507
Note: See TracChangeset
for help on using the changeset viewer.