Changeset 13472 for NEMO/trunk/src/OCE/DIA
- Timestamp:
- 2020-09-16T15:05:19+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/DIA/diawri.F90
r13295 r13472 118 118 INTEGER :: ji, jj, jk ! dummy loop indices 119 119 INTEGER :: ikbot ! local integer 120 REAL(wp):: ze3 120 121 REAL(wp):: zztmp , zztmpx ! local scalar 121 122 REAL(wp):: zztmp2, zztmpy ! - - … … 175 176 CALL iom_put( "sst", ts(:,:,1,jp_tem,Kmm) ) ! surface temperature 176 177 IF ( iom_use("sbt") ) THEN 177 DO_2D( 1, 1, 1, 1)178 DO_2D( 0, 0, 0, 0 ) 178 179 ikbot = mbkt(ji,jj) 179 180 z2d(ji,jj) = ts(ji,jj,ikbot,jp_tem,Kmm) … … 185 186 CALL iom_put( "sss", ts(:,:,1,jp_sal,Kmm) ) ! surface salinity 186 187 IF ( iom_use("sbs") ) THEN 187 DO_2D( 1, 1, 1, 1)188 DO_2D( 0, 0, 0, 0 ) 188 189 ikbot = mbkt(ji,jj) 189 190 z2d(ji,jj) = ts(ji,jj,ikbot,jp_sal,Kmm) … … 207 208 ! 208 209 END_2D 209 CALL lbc_lnk( 'diawri', z2d, 'T', 1.0_wp )210 210 CALL iom_put( "taubot", z2d ) 211 211 ENDIF … … 214 214 CALL iom_put( "ssu", uu(:,:,1,Kmm) ) ! surface i-current 215 215 IF ( iom_use("sbu") ) THEN 216 DO_2D( 1, 1, 1, 1)216 DO_2D( 0, 0, 0, 0 ) 217 217 ikbot = mbku(ji,jj) 218 218 z2d(ji,jj) = uu(ji,jj,ikbot,Kmm) … … 224 224 CALL iom_put( "ssv", vv(:,:,1,Kmm) ) ! surface j-current 225 225 IF ( iom_use("sbv") ) THEN 226 DO_2D( 1, 1, 1, 1)226 DO_2D( 0, 0, 0, 0 ) 227 227 ikbot = mbkv(ji,jj) 228 228 z2d(ji,jj) = vv(ji,jj,ikbot,Kmm) … … 253 253 IF( iom_use('logavs') ) CALL iom_put( "logavs", LOG( MAX( 1.e-20_wp, avs(:,:,:) ) ) ) 254 254 255 IF ( iom_use("socegrad") .OR. iom_use("socegrad2") ) THEN 256 z3d(:,:,jpk) = 0. 257 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 258 zztmp = ts(ji,jj,jk,jp_sal,Kmm) 259 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) 260 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) 261 z3d(ji,jj,jk) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy ) & 262 & * umask(ji,jj,jk) * umask(ji-1,jj,jk) * vmask(ji,jj,jk) * umask(ji,jj-1,jk) 263 END_3D 264 CALL iom_put( "socegrad2", z3d ) ! square of module of sal gradient 265 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 266 z3d(ji,jj,jk) = SQRT( z3d(ji,jj,jk) ) 267 END_3D 268 CALL iom_put( "socegrad" , z3d ) ! module of sal gradient 269 ENDIF 270 255 271 IF ( iom_use("sstgrad") .OR. iom_use("sstgrad2") ) THEN 256 272 DO_2D( 0, 0, 0, 0 ) … … 261 277 & * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * umask(ji,jj-1,1) 262 278 END_2D 263 CALL lbc_lnk( 'diawri', z2d, 'T', 1.0_wp )264 279 CALL iom_put( "sstgrad2", z2d ) ! square of module of sst gradient 265 z2d(:,:) = SQRT( z2d(:,:) ) 280 DO_2D( 0, 0, 0, 0 ) 281 z2d(ji,jj) = SQRT( z2d(ji,jj) ) 282 END_2D 266 283 CALL iom_put( "sstgrad" , z2d ) ! module of sst gradient 267 284 ENDIF … … 270 287 IF( iom_use("heatc") ) THEN 271 288 z2d(:,:) = 0._wp 272 DO_3D( 1, 1, 1, 1, 1, jpkm1 )289 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 273 290 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) * tmask(ji,jj,jk) 274 291 END_3D … … 278 295 IF( iom_use("saltc") ) THEN 279 296 z2d(:,:) = 0._wp 280 DO_3D( 1, 1, 1, 1, 1, jpkm1 )297 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 281 298 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 282 299 END_3D … … 284 301 ENDIF 285 302 ! 286 IF ( iom_use("eken") ) THEN 303 IF( iom_use("salt2c") ) THEN 304 z2d(:,:) = 0._wp 305 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 306 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) 307 END_3D 308 CALL iom_put( "salt2c", rho0 * z2d ) ! vertically integrated salt content (PSU*kg/m2) 309 ENDIF 310 ! 311 IF ( iom_use("ke") .OR. iom_use("ke_int") ) THEN 287 312 z3d(:,:,jpk) = 0._wp 288 313 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 289 zztmp = 0.25_wp * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 290 z3d(ji,jj,jk) = zztmp * ( uu(ji-1,jj,jk,Kmm)**2 * e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) & 291 & + uu(ji ,jj,jk,Kmm)**2 * e2u(ji ,jj) * e3u(ji ,jj,jk,Kmm) & 292 & + vv(ji,jj-1,jk,Kmm)**2 * e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) & 293 & + vv(ji,jj ,jk,Kmm)**2 * e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm) ) 294 END_3D 295 CALL lbc_lnk( 'diawri', z3d, 'T', 1.0_wp ) 296 CALL iom_put( "eken", z3d ) ! kinetic energy 314 zztmpx = 0.5 * ( uu(ji-1,jj ,jk,Kmm) + uu(ji,jj,jk,Kmm) ) 315 zztmpy = 0.5 * ( vv(ji ,jj-1,jk,Kmm) + vv(ji,jj,jk,Kmm) ) 316 z3d(ji,jj,jk) = 0.5 * ( zztmpx*zztmpx + zztmpy*zztmpy ) 317 END_3D 318 CALL iom_put( "ke", z3d ) ! kinetic energy 319 320 z2d(:,:) = 0._wp 321 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 322 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * z3d(ji,jj,jk) * e1e2t(ji,jj) * tmask(ji,jj,jk) 323 END_3D 324 CALL iom_put( "ke_int", z2d ) ! vertically integrated kinetic energy 297 325 ENDIF 298 326 ! 299 327 CALL iom_put( "hdiv", hdiv ) ! Horizontal divergence 328 329 IF ( iom_use("relvor") .OR. iom_use("absvor") .OR. iom_use("potvor") ) THEN 330 331 z3d(:,:,jpk) = 0._wp 332 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 333 z3d(ji,jj,jk) = ( e2v(ji+1,jj ) * vv(ji+1,jj ,jk,Kmm) - e2v(ji,jj) * vv(ji,jj,jk,Kmm) & 334 & - e1u(ji ,jj+1) * uu(ji ,jj+1,jk,Kmm) + e1u(ji,jj) * uu(ji,jj,jk,Kmm) ) * r1_e1e2f(ji,jj) 335 END_3D 336 CALL iom_put( "relvor", z3d ) ! relative vorticity 337 338 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 339 z3d(ji,jj,jk) = ff_f(ji,jj) + z3d(ji,jj,jk) 340 END_3D 341 CALL iom_put( "absvor", z3d ) ! absolute vorticity 342 343 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 344 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) & 345 & + e3t(ji,jj ,jk,Kmm)*tmask(ji,jj ,jk) + e3t(ji+1,jj ,jk,Kmm)*tmask(ji+1,jj ,jk) ) 346 IF( ze3 /= 0._wp ) THEN ; ze3 = 4._wp / ze3 347 ELSE ; ze3 = 0._wp 348 ENDIF 349 z3d(ji,jj,jk) = ze3 * z3d(ji,jj,jk) 350 END_3D 351 CALL iom_put( "potvor", z3d ) ! potential vorticity 352 353 ENDIF 300 354 ! 301 355 IF( iom_use("u_masstr") .OR. iom_use("u_masstr_vint") .OR. iom_use("u_heattr") .OR. iom_use("u_salttr") ) THEN … … 315 369 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) ) 316 370 END_3D 317 CALL lbc_lnk( 'diawri', z2d, 'U', -1.0_wp )318 371 CALL iom_put( "u_heattr", 0.5*rcp * z2d ) ! heat transport in i-direction 319 372 ENDIF … … 324 377 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) ) 325 378 END_3D 326 CALL lbc_lnk( 'diawri', z2d, 'U', -1.0_wp )327 379 CALL iom_put( "u_salttr", 0.5 * z2d ) ! heat transport in i-direction 328 380 ENDIF … … 342 394 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) ) 343 395 END_3D 344 CALL lbc_lnk( 'diawri', z2d, 'V', -1.0_wp )345 396 CALL iom_put( "v_heattr", 0.5*rcp * z2d ) ! heat transport in j-direction 346 397 ENDIF … … 351 402 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) ) 352 403 END_3D 353 CALL lbc_lnk( 'diawri', z2d, 'V', -1.0_wp )354 404 CALL iom_put( "v_salttr", 0.5 * z2d ) ! heat transport in j-direction 355 405 ENDIF … … 360 410 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) 361 411 END_3D 362 CALL lbc_lnk( 'diawri', z2d, 'T', -1.0_wp )363 412 CALL iom_put( "tosmint", rho0 * z2d ) ! Vertical integral of temperature 364 413 ENDIF … … 368 417 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) 369 418 END_3D 370 CALL lbc_lnk( 'diawri', z2d, 'T', -1.0_wp )371 419 CALL iom_put( "somint", rho0 * z2d ) ! Vertical integral of salinity 372 420 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.