Changeset 14072 for NEMO/trunk/src/OCE/DIA/diaptr.F90
- Timestamp:
- 2020-12-04T08:48:38+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/DIA/diaptr.F90
r13982 r14072 66 66 !!---------------------------------------------------------------------- 67 67 !! NEMO/OCE 4.0 , NEMO Consortium (2018) 68 !! $Id$ 68 !! $Id$ 69 69 !! Software governed by the CeCILL license (see ./LICENSE) 70 70 !!---------------------------------------------------------------------- … … 75 75 !! *** ROUTINE dia_ptr *** 76 76 !!---------------------------------------------------------------------- 77 INTEGER , INTENT(in) :: kt ! ocean time-step index 77 INTEGER , INTENT(in) :: kt ! ocean time-step index 78 78 INTEGER , INTENT(in) :: Kmm ! time level index 79 79 REAL(wp), DIMENSION(A2D(nn_hls),jpk) , INTENT(in), OPTIONAL :: pvtr ! j-effective transport … … 177 177 178 178 IF( iom_use( 'sopstbtr' ) .OR. iom_use( 'sophtbtr' ) ) THEN 179 ! Calculate barotropic heat and salt transport here 179 ! Calculate barotropic heat and salt transport here 180 180 ALLOCATE( sjk(jpj,1,nbasin), r1_sjk(jpj,1,nbasin) ) 181 181 ! … … 245 245 ! 246 246 ! ! Advective and diffusive heat and salt transport 247 IF( iom_use( 'sophtadv' ) .OR. iom_use( 'sopstadv' ) ) THEN 248 ! 247 IF( iom_use( 'sophtadv' ) .OR. iom_use( 'sopstadv' ) ) THEN 248 ! 249 249 DO jn = 1, nbasin 250 250 z3dtr(1,:,jn) = hstr_adv(:,jp_tem,jn) * rc_pwatt ! (conversion in PW) … … 263 263 ENDIF 264 264 ! 265 IF( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf' ) ) THEN 266 ! 265 IF( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf' ) ) THEN 266 ! 267 267 DO jn = 1, nbasin 268 268 z3dtr(1,:,jn) = hstr_ldf(:,jp_tem,jn) * rc_pwatt ! (conversion in PW) … … 281 281 ENDIF 282 282 ! 283 IF( iom_use( 'sophteiv' ) .OR. iom_use( 'sopsteiv' ) ) THEN 284 ! 283 IF( iom_use( 'sophteiv' ) .OR. iom_use( 'sopsteiv' ) ) THEN 284 ! 285 285 DO jn = 1, nbasin 286 286 z3dtr(1,:,jn) = hstr_eiv(:,jp_tem,jn) * rc_pwatt ! (conversion in PW) … … 319 319 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = 0 ) ! Use full domain 320 320 CALL iom_get_var( 'uocetr_vsum_op', z2d ) ! get uocetr_vsum_op from xml 321 z2d(:,:) = ptr_ci_2d( z2d(:,:) ) 321 z2d(:,:) = ptr_ci_2d( z2d(:,:) ) 322 322 CALL iom_put( 'uocetr_vsum_cumul', z2d ) 323 323 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = nijtile ) ! Revert to tile domain … … 455 455 !!---------------------------------------------------------------------- 456 456 !! *** ROUTINE dia_ptr_init *** 457 !! 457 !! 458 458 !! ** Purpose : Initialization 459 459 !!---------------------------------------------------------------------- … … 472 472 & iom_use( 'sophteiv' ) .OR. iom_use( 'sopsteiv' ) .OR. iom_use( 'sopstvtr' ) .OR. & 473 473 & iom_use( 'sophtvtr' ) .OR. iom_use( 'uocetr_vsum_cumul' ) 474 474 475 475 IF(lwp) THEN ! Control print 476 476 WRITE(numout,*) … … 480 480 ENDIF 481 481 482 IF( l_diaptr ) THEN 482 IF( l_diaptr ) THEN 483 483 ! 484 484 IF( dia_ptr_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'dia_ptr_init : unable to allocate arrays' ) … … 489 489 IF( lk_mpp ) CALL mpp_ini_znl( numout ) ! Define MPI communicator for zonal sum 490 490 491 btmsk(:,:,1) = tmask_i(:,:) 491 btmsk(:,:,1) = tmask_i(:,:) 492 492 IF( nbasin == 5 ) THEN ! nbasin has been initialized in iom_init to define the axis "basin" 493 493 CALL iom_open( 'subbasins', inum ) … … 504 504 WHERE( gphit(:,:)*tmask_i(:,:) < -34._wp) 505 505 zmsk(:,:) = 0._wp ! mask out Southern Ocean 506 ELSE WHERE 506 ELSE WHERE 507 507 zmsk(:,:) = ssmask(:,:) 508 508 END WHERE 509 btmsk34(:,:,1) = btmsk(:,:,1) 509 btmsk34(:,:,1) = btmsk(:,:,1) 510 510 DO jn = 2, nbasin 511 511 btmsk34(:,:,jn) = btmsk(:,:,jn) * zmsk(:,:) ! interior domain only … … 514 514 ! Initialise arrays to zero because diatpr is called before they are first calculated 515 515 ! Note that this means diagnostics will not be exactly correct when model run is restarted. 516 hstr_adv(:,:,:) = 0._wp 517 hstr_ldf(:,:,:) = 0._wp 518 hstr_eiv(:,:,:) = 0._wp 519 hstr_ove(:,:,:) = 0._wp 516 hstr_adv(:,:,:) = 0._wp 517 hstr_ldf(:,:,:) = 0._wp 518 hstr_eiv(:,:,:) = 0._wp 519 hstr_ove(:,:,:) = 0._wp 520 520 hstr_btr(:,:,:) = 0._wp ! 521 521 hstr_vtr(:,:,:) = 0._wp ! … … 525 525 ll_init = .FALSE. 526 526 ! 527 ENDIF 528 ! 527 ENDIF 528 ! 529 529 END SUBROUTINE dia_ptr_init 530 530 531 531 532 SUBROUTINE dia_ptr_hst( ktra, cptr, pvflx ) 532 SUBROUTINE dia_ptr_hst( ktra, cptr, pvflx ) 533 533 !!---------------------------------------------------------------------- 534 534 !! *** ROUTINE dia_ptr_hst *** … … 727 727 ! 728 728 INTEGER :: ji,jj,jc ! dummy loop arguments 729 INTEGER :: ijpj ! ??? 729 INTEGER :: ijpj ! ??? 730 730 REAL(wp), DIMENSION(jpi,jpj) :: p_fval ! function value 731 731 !!-------------------------------------------------------------------- 732 ! 732 ! 733 733 ijpj = jpj ! ??? 734 734 p_fval(:,:) = 0._wp … … 738 738 END_2D 739 739 END DO 740 ! 740 ! 741 741 END FUNCTION ptr_ci_2d 742 742
Note: See TracChangeset
for help on using the changeset viewer.