Changeset 3253 for branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC
- Timestamp:
- 2012-01-06T16:40:17+01:00 (12 years ago)
- Location:
- branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r3186 r3253 28 28 USE ldftra_oce ! ocean active tracers: lateral physics 29 29 USE ldfdyn_oce ! ocean dynamics: lateral physics 30 USE traldf_iso_grif, ONLY : psix_eiv, psiy_eiv 30 31 USE sol_oce ! solver variables 31 32 USE sbc_oce ! Surface boundary condition: ocean fields … … 230 231 CHARACTER (len=40) :: clhstnam, clop, clmx ! local names 231 232 INTEGER :: inum = 11 ! temporary logical unit 233 INTEGER :: ji, jj, jk ! dummy loop indices 234 INTEGER :: ierr ! error code return from allocation 232 235 INTEGER :: iimi, iima, ipk, it, itmod, ijmi, ijma ! local integers 233 236 REAL(wp) :: zsto, zout, zmax, zjulian, zdt ! local scalars 234 237 !! 235 238 REAL(wp), POINTER, DIMENSION(:,:) :: zw2d ! 2D workspace 239 REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d ! 3D workspace 236 240 !!---------------------------------------------------------------------- 237 241 ! … … 239 243 ! 240 244 CALL wrk_alloc( jpi , jpj , zw2d ) 245 IF ( ln_traldf_gdia ) call wrk_alloc( jpi , jpj , jpk , zw3d ) 241 246 ! 242 247 ! Output the initial state and forcings … … 445 450 CALL histdef( nid_U, "vozocrtx", "Zonal Current" , "m/s" , & ! un 446 451 & jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout ) 452 IF( ln_traldf_gdia ) THEN 453 CALL histdef( nid_U, "vozoeivu", "Zonal EIV Current" , "m/s" , & ! u_eiv 454 & jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout ) 455 ELSE 447 456 #if defined key_diaeiv 448 CALL histdef( nid_U, "vozoeivu", "Zonal EIV Current" , "m/s" , & ! u_eiv457 CALL histdef( nid_U, "vozoeivu", "Zonal EIV Current" , "m/s" , & ! u_eiv 449 458 & jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout ) 450 459 #endif 460 END IF 451 461 ! !!! nid_U : 2D 452 462 CALL histdef( nid_U, "sozotaux", "Wind Stress along i-axis" , "N/m2" , & ! utau … … 458 468 CALL histdef( nid_V, "vomecrty", "Meridional Current" , "m/s" , & ! vn 459 469 & jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout ) 470 IF( ln_traldf_gdia ) THEN 471 CALL histdef( nid_V, "vomeeivv", "Meridional EIV Current" , "m/s" , & ! v_eiv 472 & jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout ) 473 ELSE 460 474 #if defined key_diaeiv 461 CALL histdef( nid_V, "vomeeivv", "Meridional EIV Current" , "m/s" , & ! v_eiv475 CALL histdef( nid_V, "vomeeivv", "Meridional EIV Current" , "m/s" , & ! v_eiv 462 476 & jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout ) 463 477 #endif 478 END IF 464 479 ! !!! nid_V : 2D 465 480 CALL histdef( nid_V, "sometauy", "Wind Stress along j-axis" , "N/m2" , & ! vtau … … 471 486 CALL histdef( nid_W, "vovecrtz", "Vertical Velocity" , "m/s" , & ! wn 472 487 & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 488 IF( ln_traldf_gdia ) THEN 489 CALL histdef( nid_W, "voveeivw", "Vertical EIV Velocity" , "m/s" , & ! w_eiv 490 & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 491 ELSE 473 492 #if defined key_diaeiv 474 CALL histdef( nid_W, "voveeivw", "Vertical EIV Velocity" , "m/s" , & ! w_eiv 475 & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 476 #endif 493 CALL histdef( nid_W, "voveeivw", "Vertical EIV Velocity" , "m/s" , & ! w_eiv 494 & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 495 #endif 496 END IF 477 497 CALL histdef( nid_W, "votkeavt", "Vertical Eddy Diffusivity" , "m2/s" , & ! avt 478 498 & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) … … 569 589 ! Write fields on U grid 570 590 CALL histwrite( nid_U, "vozocrtx", it, un , ndim_U , ndex_U ) ! i-current 591 IF( ln_traldf_gdia ) THEN 592 IF (.not. ALLOCATED(psix_eiv))THEN 593 ALLOCATE( psix_eiv(jpi,jpj,jpk) , psiy_eiv(jpi,jpj,jpk) , STAT=ierr ) 594 IF( lk_mpp ) CALL mpp_sum ( ierr ) 595 IF( ierr > 0 ) CALL ctl_stop('STOP', 'diawri: unable to allocate psi{x,y}_eiv') 596 psix_eiv(:,:,:) = 0.0_wp 597 psiy_eiv(:,:,:) = 0.0_wp 598 ENDIF 599 DO jk=1,jpkm1 600 zw3d(:,:,jk) = (psix_eiv(:,:,jk+1) - psix_eiv(:,:,jk))/fse3u(:,:,jk) ! u_eiv = -dpsix/dz 601 END DO 602 zw3d(:,:,jpk) = 0._wp 603 CALL histwrite( nid_U, "vozoeivu", it, zw3d, ndim_U , ndex_U ) ! i-eiv current 604 ELSE 571 605 #if defined key_diaeiv 572 CALL histwrite( nid_U, "vozoeivu", it, u_eiv , ndim_U , ndex_U ) ! i-eiv current 573 #endif 606 CALL histwrite( nid_U, "vozoeivu", it, u_eiv, ndim_U , ndex_U ) ! i-eiv current 607 #endif 608 ENDIF 574 609 CALL histwrite( nid_U, "sozotaux", it, utau , ndim_hU, ndex_hU ) ! i-wind stress 575 610 576 611 ! Write fields on V grid 577 612 CALL histwrite( nid_V, "vomecrty", it, vn , ndim_V , ndex_V ) ! j-current 613 IF( ln_traldf_gdia ) THEN 614 DO jk=1,jpk-1 615 zw3d(:,:,jk) = (psiy_eiv(:,:,jk+1) - psiy_eiv(:,:,jk))/fse3v(:,:,jk) ! v_eiv = -dpsiy/dz 616 END DO 617 zw3d(:,:,jpk) = 0._wp 618 CALL histwrite( nid_V, "vomeeivv", it, zw3d, ndim_V , ndex_V ) ! j-eiv current 619 ELSE 578 620 #if defined key_diaeiv 579 CALL histwrite( nid_V, "vomeeivv", it, v_eiv , ndim_V , ndex_V ) ! j-eiv current 580 #endif 621 CALL histwrite( nid_V, "vomeeivv", it, v_eiv, ndim_V , ndex_V ) ! j-eiv current 622 #endif 623 ENDIF 581 624 CALL histwrite( nid_V, "sometauy", it, vtau , ndim_hV, ndex_hV ) ! j-wind stress 582 625 583 626 ! Write fields on W grid 584 627 CALL histwrite( nid_W, "vovecrtz", it, wn , ndim_T, ndex_T ) ! vert. current 628 IF( ln_traldf_gdia ) THEN 629 DO jk=1,jpk-1 630 DO jj = 2, jpjm1 631 DO ji = fs_2, fs_jpim1 ! vector opt. 632 zw3d(ji,jj,jk) = (psiy_eiv(ji,jj,jk) - psiy_eiv(ji,jj-1,jk))/e2v(ji,jj) + & 633 & (psix_eiv(ji,jj,jk) - psix_eiv(ji-1,jj,jk))/e1u(ji,jj) ! w_eiv = dpsiy/dy + dpsiy/dx 634 END DO 635 END DO 636 END DO 637 zw3d(:,:,jpk) = 0._wp 638 CALL histwrite( nid_W, "voveeivw", it, zw3d , ndim_T, ndex_T ) ! vert. eiv current 639 ELSE 585 640 # if defined key_diaeiv 586 CALL histwrite( nid_W, "voveeivw", it, w_eiv , ndim_T, ndex_T ) ! vert. eiv current641 CALL histwrite( nid_W, "voveeivw", it, w_eiv , ndim_T, ndex_T ) ! vert. eiv current 587 642 # endif 643 ENDIF 588 644 CALL histwrite( nid_W, "votkeavt", it, avt , ndim_T, ndex_T ) ! T vert. eddy diff. coef. 589 645 CALL histwrite( nid_W, "votkeavm", it, avmu , ndim_T, ndex_T ) ! T vert. eddy visc. coef. … … 608 664 ! 609 665 CALL wrk_dealloc( jpi , jpj , zw2d ) 666 IF ( ln_traldf_gdia ) call wrk_dealloc( jpi , jpj , jpk , zw3d ) 610 667 ! 611 668 IF( nn_timing == 1 ) CALL timing_stop('dia_wri') -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_grif.F90
r3215 r3253 118 118 REAL(wp), POINTER, DIMENSION(:,: ) :: z2d 119 119 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdit, zdjt, ztfw 120 REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d ! 3D workspace 120 121 !!---------------------------------------------------------------------- 121 122 ! … … 134 135 IF( ierr > 0 ) CALL ctl_stop('STOP', 'tra_ldf_iso_grif: unable to allocate arrays') 135 136 IF( ln_traldf_gdia ) THEN 136 IF (. not. ALLOCATED(psix_eiv))THEN137 IF (.NOT. ALLOCATED(psix_eiv))THEN 137 138 ALLOCATE( psix_eiv(jpi,jpj,jpk) , psiy_eiv(jpi,jpj,jpk) , STAT=ierr ) 138 139 IF( lk_mpp ) CALL mpp_sum ( ierr ) … … 206 207 END DO 207 208 ! 209 #if defined key_iomput 210 IF( ln_traldf_gdia .AND. cdtype == 'TRA' ) THEN 211 CALL wrk_alloc( jpi , jpj , jpk , zw3d ) 212 DO jk=1,jpkm1 213 zw3d(:,:,jk) = (psix_eiv(:,:,jk+1) - psix_eiv(:,:,jk))/fse3u(:,:,jk) ! u_eiv = -dpsix/dz 214 END DO 215 zw3d(:,:,jpk) = 0._wp 216 CALL iom_put( "uoce_eiv", zw3d ) ! i-eiv current 217 218 DO jk=1,jpk-1 219 zw3d(:,:,jk) = (psiy_eiv(:,:,jk+1) - psiy_eiv(:,:,jk))/fse3v(:,:,jk) ! v_eiv = -dpsiy/dz 220 END DO 221 zw3d(:,:,jpk) = 0._wp 222 CALL iom_put( "voce_eiv", zw3d ) ! j-eiv current 223 224 DO jk=1,jpk-1 225 DO jj = 2, jpjm1 226 DO ji = fs_2, fs_jpim1 ! vector opt. 227 zw3d(ji,jj,jk) = (psiy_eiv(ji,jj,jk) - psiy_eiv(ji,jj-1,jk))/e2v(ji,jj) + & 228 & (psix_eiv(ji,jj,jk) - psix_eiv(ji-1,jj,jk))/e1u(ji,jj) ! w_eiv = dpsiy/dy + dpsiy/dx 229 END DO 230 END DO 231 END DO 232 zw3d(:,:,jpk) = 0._wp 233 CALL iom_put( "woce_eiv", zw3d ) ! vert. eiv current 234 CALL wrk_dealloc( jpi , jpj , jpk , zw3d ) 235 ENDIF 236 #endif 208 237 ! ! =========== 209 238 DO jn = 1, kjpt ! tracer loop
Note: See TracChangeset
for help on using the changeset viewer.