- Timestamp:
- 2020-11-10T12:57:08+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_12905_xios_ancil
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_12905_xios_ancil
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 8 9 9 # SETTE 10 ^/utils/CI/sette@ HEADsette10 ^/utils/CI/sette@13559 sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/DIA/diaptr.F90
r12489 r13766 36 36 END INTERFACE 37 37 38 PUBLIC ptr_sj ! call by tra_ldf & tra_adv routines39 PUBLIC ptr_sjk !40 PUBLIC dia_ptr_init ! call in memogcm41 38 PUBLIC dia_ptr ! call in step module 42 39 PUBLIC dia_ptr_hst ! called from tra_ldf/tra_adv routines 43 40 44 ! !!** namelist namptr **45 41 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hstr_adv, hstr_ldf, hstr_eiv !: Heat/Salt TRansports(adv, diff, Bolus.) 46 42 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hstr_ove, hstr_btr, hstr_vtr !: heat Salt TRansports(overturn, baro, merional) 47 43 48 LOGICAL , PUBLIC :: l_diaptr !: tracers trend flag (set from namelist in trdini) 49 INTEGER, PARAMETER, PUBLIC :: nptr = 5 ! (glo, atl, pac, ind, ipc) 44 LOGICAL, PUBLIC :: l_diaptr !: tracers trend flag 50 45 51 46 REAL(wp) :: rc_sv = 1.e-6_wp ! conversion from m3/s to Sverdrup … … 59 54 REAL(wp), TARGET, ALLOCATABLE, SAVE, DIMENSION(:,:) :: p_fval2d 60 55 61 LOGICAL :: ll_init = .TRUE. !: tracers trend flag (set from namelist in trdini) 56 LOGICAL :: ll_init = .TRUE. !: tracers trend flag 57 62 58 !! * Substitutions 63 59 # include "do_loop_substitute.h90" 60 # include "domzgr_substitute.h90" 64 61 !!---------------------------------------------------------------------- 65 62 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 86 83 ! 87 84 !overturning calculation 88 REAL(wp), DIMENSION( jpj,jpk,nptr) ::sjk, r1_sjk, v_msf ! i-mean i-k-surface and its inverse89 REAL(wp), DIMENSION( jpj,jpk,nptr) :: zt_jk, zs_jk! i-mean T and S, j-Stream-Function90 91 REAL(wp), DIMENSION( jpi,jpj,jpk,nptr) ::z4d1, z4d292 REAL(wp), DIMENSION( jpi,jpj,nptr) :: z3dtr ! i-mean T and S, j-Stream-Function85 REAL(wp), DIMENSION(:,:,: ), ALLOCATABLE :: sjk, r1_sjk, v_msf ! i-mean i-k-surface and its inverse 86 REAL(wp), DIMENSION(:,:,: ), ALLOCATABLE :: zt_jk, zs_jk ! i-mean T and S, j-Stream-Function 87 88 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: z4d1, z4d2 89 REAL(wp), DIMENSION(:,:,: ), ALLOCATABLE :: z3dtr 93 90 !!---------------------------------------------------------------------- 94 91 ! 95 92 IF( ln_timing ) CALL timing_start('dia_ptr') 96 93 97 IF( kt == nit000 .AND. ll_init ) CALL dia_ptr_init 98 ! 99 IF( .NOT. l_diaptr ) RETURN 100 94 IF( kt == nit000 .AND. ll_init ) CALL dia_ptr_init ! -> will define l_diaptr and nbasin 95 ! 96 IF( .NOT. l_diaptr ) THEN 97 IF( ln_timing ) CALL timing_stop('dia_ptr') 98 RETURN 99 ENDIF 100 ! 101 ALLOCATE( z3dtr(jpi,jpj,nbasin) ) 102 ! 101 103 IF( PRESENT( pvtr ) ) THEN 102 104 IF( iom_use( 'zomsf' ) ) THEN ! effective MSF 103 DO jn = 1, nptr ! by sub-basins 105 ALLOCATE( z4d1(jpi,jpj,jpk,nbasin) ) 106 DO jn = 1, nbasin ! by sub-basins 104 107 z4d1(1,:,:,jn) = ptr_sjk( pvtr(:,:,:), btmsk34(:,:,jn) ) ! zonal cumulative effective transport excluding closed seas 105 108 DO jk = jpkm1, 1, -1 … … 111 114 END DO 112 115 CALL iom_put( 'zomsf', z4d1 * rc_sv ) 116 DEALLOCATE( z4d1 ) 113 117 ENDIF 114 118 IF( iom_use( 'sopstove' ) .OR. iom_use( 'sophtove' ) .OR. & … … 117 121 zmask(:,:,:) = 0._wp 118 122 zts(:,:,:,:) = 0._wp 119 DO_3D _10_11(1, jpkm1 )123 DO_3D( 1, 0, 1, 1, 1, jpkm1 ) 120 124 zvfc = e1v(ji,jj) * e3v(ji,jj,jk,Kmm) 121 125 zmask(ji,jj,jk) = vmask(ji,jj,jk) * zvfc … … 125 129 ENDIF 126 130 IF( iom_use( 'sopstove' ) .OR. iom_use( 'sophtove' ) ) THEN 127 DO jn = 1, nptr 131 DO jn = 1, nbasin 132 ALLOCATE( sjk(jpj,jpk,nbasin), r1_sjk(jpj,jpk,nbasin), v_msf(jpj,jpk,nbasin), & 133 & zt_jk(jpj,jpk,nbasin), zs_jk(jpj,jpk,nbasin) ) 128 134 sjk(:,:,jn) = ptr_sjk( zmask(:,:,:), btmsk(:,:,jn) ) 129 135 r1_sjk(:,:,jn) = 0._wp … … 135 141 hstr_ove(:,jp_tem,jn) = SUM( v_msf(:,:,jn)*zt_jk(:,:,jn), 2 ) 136 142 hstr_ove(:,jp_sal,jn) = SUM( v_msf(:,:,jn)*zs_jk(:,:,jn), 2 ) 143 DEALLOCATE( sjk, r1_sjk, v_msf, zt_jk, zs_jk ) 137 144 ! 138 145 ENDDO 139 DO jn = 1, n ptr146 DO jn = 1, nbasin 140 147 z3dtr(1,:,jn) = hstr_ove(:,jp_tem,jn) * rc_pwatt ! (conversion in PW) 141 148 DO ji = 1, jpi … … 144 151 ENDDO 145 152 CALL iom_put( 'sophtove', z3dtr ) 146 DO jn = 1, n ptr153 DO jn = 1, nbasin 147 154 z3dtr(1,:,jn) = hstr_ove(:,jp_sal,jn) * rc_ggram ! (conversion in Gg) 148 155 DO ji = 1, jpi … … 155 162 IF( iom_use( 'sopstbtr' ) .OR. iom_use( 'sophtbtr' ) ) THEN 156 163 ! Calculate barotropic heat and salt transport here 157 DO jn = 1, nptr 164 DO jn = 1, nbasin 165 ALLOCATE( sjk(jpj,1,nbasin), r1_sjk(jpj,1,nbasin) ) 158 166 sjk(:,1,jn) = ptr_sj( zmask(:,:,:), btmsk(:,:,jn) ) 159 167 r1_sjk(:,1,jn) = 0._wp … … 165 173 hstr_btr(:,jp_tem,jn) = zvsum(:) * ztsum(:) * r1_sjk(:,1,jn) 166 174 hstr_btr(:,jp_sal,jn) = zvsum(:) * zssum(:) * r1_sjk(:,1,jn) 175 DEALLOCATE( sjk, r1_sjk ) 167 176 ! 168 177 ENDDO 169 DO jn = 1, n ptr178 DO jn = 1, nbasin 170 179 z3dtr(1,:,jn) = hstr_btr(:,jp_tem,jn) * rc_pwatt ! (conversion in PW) 171 180 DO ji = 1, jpi … … 174 183 ENDDO 175 184 CALL iom_put( 'sophtbtr', z3dtr ) 176 DO jn = 1, n ptr185 DO jn = 1, nbasin 177 186 z3dtr(1,:,jn) = hstr_btr(:,jp_sal,jn) * rc_ggram ! (conversion in Gg) 178 187 DO ji = 1, jpi … … 188 197 zts(:,:,:,:) = 0._wp 189 198 IF( iom_use( 'zotem' ) .OR. iom_use( 'zosal' ) .OR. iom_use( 'zosrf' ) ) THEN ! i-mean i-k-surface 190 DO_3D_11_11( 1, jpkm1 ) 199 ALLOCATE( z4d1(jpi,jpj,jpk,nbasin), z4d2(jpi,jpj,jpk,nbasin) ) 200 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 191 201 zsfc = e1t(ji,jj) * e3t(ji,jj,jk,Kmm) 192 202 zmask(ji,jj,jk) = tmask(ji,jj,jk) * zsfc … … 195 205 END_3D 196 206 ! 197 DO jn = 1, n ptr207 DO jn = 1, nbasin 198 208 zmask(1,:,:) = ptr_sjk( zmask(:,:,:), btmsk(:,:,jn) ) 209 DO ji = 1, jpi 210 zmask(ji,:,:) = zmask(1,:,:) 211 ENDDO 199 212 z4d1(:,:,:,jn) = zmask(:,:,:) 200 213 ENDDO 201 214 CALL iom_put( 'zosrf', z4d1 ) 202 215 ! 203 DO jn = 1, n ptr216 DO jn = 1, nbasin 204 217 z4d2(1,:,:,jn) = ptr_sjk( zts(:,:,:,jp_tem), btmsk(:,:,jn) ) & 205 218 & / MAX( z4d1(1,:,:,jn), 10.e-15 ) … … 210 223 CALL iom_put( 'zotem', z4d2 ) 211 224 ! 212 DO jn = 1, n ptr225 DO jn = 1, nbasin 213 226 z4d2(1,:,:,jn) = ptr_sjk( zts(:,:,:,jp_sal), btmsk(:,:,jn) ) & 214 227 & / MAX( z4d1(1,:,:,jn), 10.e-15 ) … … 218 231 ENDDO 219 232 CALL iom_put( 'zosal', z4d2 ) 233 DEALLOCATE( z4d1, z4d2 ) 220 234 ! 221 235 ENDIF … … 224 238 IF( iom_use( 'sophtadv' ) .OR. iom_use( 'sopstadv' ) ) THEN 225 239 ! 226 DO jn = 1, n ptr240 DO jn = 1, nbasin 227 241 z3dtr(1,:,jn) = hstr_adv(:,jp_tem,jn) * rc_pwatt ! (conversion in PW) 228 242 DO ji = 1, jpi … … 231 245 ENDDO 232 246 CALL iom_put( 'sophtadv', z3dtr ) 233 DO jn = 1, n ptr247 DO jn = 1, nbasin 234 248 z3dtr(1,:,jn) = hstr_adv(:,jp_sal,jn) * rc_ggram ! (conversion in Gg) 235 249 DO ji = 1, jpi … … 242 256 IF( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf' ) ) THEN 243 257 ! 244 DO jn = 1, n ptr258 DO jn = 1, nbasin 245 259 z3dtr(1,:,jn) = hstr_ldf(:,jp_tem,jn) * rc_pwatt ! (conversion in PW) 246 260 DO ji = 1, jpi … … 249 263 ENDDO 250 264 CALL iom_put( 'sophtldf', z3dtr ) 251 DO jn = 1, n ptr265 DO jn = 1, nbasin 252 266 z3dtr(1,:,jn) = hstr_ldf(:,jp_sal,jn) * rc_ggram ! (conversion in Gg) 253 267 DO ji = 1, jpi … … 260 274 IF( iom_use( 'sophteiv' ) .OR. iom_use( 'sopsteiv' ) ) THEN 261 275 ! 262 DO jn = 1, n ptr276 DO jn = 1, nbasin 263 277 z3dtr(1,:,jn) = hstr_eiv(:,jp_tem,jn) * rc_pwatt ! (conversion in PW) 264 278 DO ji = 1, jpi … … 267 281 ENDDO 268 282 CALL iom_put( 'sophteiv', z3dtr ) 269 DO jn = 1, n ptr283 DO jn = 1, nbasin 270 284 z3dtr(1,:,jn) = hstr_eiv(:,jp_sal,jn) * rc_ggram ! (conversion in Gg) 271 285 DO ji = 1, jpi … … 278 292 IF( iom_use( 'sopstvtr' ) .OR. iom_use( 'sophtvtr' ) ) THEN 279 293 zts(:,:,:,:) = 0._wp 280 DO_3D _10_11(1, jpkm1 )294 DO_3D( 1, 0, 1, 1, 1, jpkm1 ) 281 295 zvfc = e1v(ji,jj) * e3v(ji,jj,jk,Kmm) 282 296 zts(ji,jj,jk,jp_tem) = (ts(ji,jj,jk,jp_tem,Kmm)+ts(ji,jj+1,jk,jp_tem,Kmm)) * 0.5 * zvfc !Tracers averaged onto V grid … … 285 299 CALL dia_ptr_hst( jp_tem, 'vtr', zts(:,:,:,jp_tem) ) 286 300 CALL dia_ptr_hst( jp_sal, 'vtr', zts(:,:,:,jp_sal) ) 287 DO jn = 1, n ptr301 DO jn = 1, nbasin 288 302 z3dtr(1,:,jn) = hstr_vtr(:,jp_tem,jn) * rc_pwatt ! (conversion in PW) 289 303 DO ji = 1, jpi … … 292 306 ENDDO 293 307 CALL iom_put( 'sophtvtr', z3dtr ) 294 DO jn = 1, n ptr308 DO jn = 1, nbasin 295 309 z3dtr(1,:,jn) = hstr_vtr(:,jp_sal,jn) * rc_ggram ! (conversion in Gg) 296 310 DO ji = 1, jpi … … 309 323 ENDIF 310 324 ! 325 DEALLOCATE( z3dtr ) 326 ! 311 327 IF( ln_timing ) CALL timing_stop('dia_ptr') 312 328 ! … … 318 334 !! *** ROUTINE dia_ptr_init *** 319 335 !! 320 !! ** Purpose : Initialization , namelist read336 !! ** Purpose : Initialization 321 337 !!---------------------------------------------------------------------- 322 338 INTEGER :: inum, jn ! local integers … … 324 340 REAL(wp), DIMENSION(jpi,jpj) :: zmsk 325 341 !!---------------------------------------------------------------------- 326 327 l_diaptr = .FALSE. 328 IF( iom_use( 'zomsf' ) .OR. iom_use( 'zotem' ) .OR. iom_use( 'zosal' ) .OR. & 329 & iom_use( 'zosrf' ) .OR. iom_use( 'sopstove' ) .OR. iom_use( 'sophtove' ) .OR. & 330 & iom_use( 'sopstbtr' ) .OR. iom_use( 'sophtbtr' ) .OR. iom_use( 'sophtadv' ) .OR. & 331 & iom_use( 'sopstadv' ) .OR. iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf' ) .OR. & 332 & iom_use( 'sophteiv' ) .OR. iom_use( 'sopsteiv' ) .OR. iom_use( 'sopstvtr' ) .OR. & 333 & iom_use( 'sophtvtr' ) .OR. iom_use( 'uocetr_vsum_cumul' ) ) l_diaptr = .TRUE. 334 342 343 ! l_diaptr is defined with iom_use 344 ! --> dia_ptr_init must be done after the call to iom_init 345 ! --> cannot be .TRUE. without cpp key: key_iom --> nbasin define by iom_init is initialized 346 l_diaptr = iom_use( 'zomsf' ) .OR. iom_use( 'zotem' ) .OR. iom_use( 'zosal' ) .OR. & 347 & iom_use( 'zosrf' ) .OR. iom_use( 'sopstove' ) .OR. iom_use( 'sophtove' ) .OR. & 348 & iom_use( 'sopstbtr' ) .OR. iom_use( 'sophtbtr' ) .OR. iom_use( 'sophtadv' ) .OR. & 349 & iom_use( 'sopstadv' ) .OR. iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf' ) .OR. & 350 & iom_use( 'sophteiv' ) .OR. iom_use( 'sopsteiv' ) .OR. iom_use( 'sopstvtr' ) .OR. & 351 & iom_use( 'sophtvtr' ) .OR. iom_use( 'uocetr_vsum_cumul' ) 335 352 336 353 IF(lwp) THEN ! Control print … … 338 355 WRITE(numout,*) 'dia_ptr_init : poleward transport and msf initialization' 339 356 WRITE(numout,*) '~~~~~~~~~~~~' 340 WRITE(numout,*) ' Namelist namptr : set ptr parameters'341 357 WRITE(numout,*) ' Poleward heat & salt transport (T) or not (F) l_diaptr = ', l_diaptr 342 358 ENDIF … … 345 361 ! 346 362 IF( dia_ptr_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'dia_ptr_init : unable to allocate arrays' ) 347 363 ! 348 364 rc_pwatt = rc_pwatt * rho0_rcp ! conversion from K.s-1 to PetaWatt 349 365 rc_ggram = rc_ggram * rho0 ! conversion from m3/s to Gg/s … … 352 368 353 369 btmsk(:,:,1) = tmask_i(:,:) 354 CALL iom_open( 'subbasins', inum, ldstop = .FALSE. ) 355 CALL iom_get( inum, jpdom_data, 'atlmsk', btmsk(:,:,2) ) ! Atlantic basin 356 CALL iom_get( inum, jpdom_data, 'pacmsk', btmsk(:,:,3) ) ! Pacific basin 357 CALL iom_get( inum, jpdom_data, 'indmsk', btmsk(:,:,4) ) ! Indian basin 358 CALL iom_close( inum ) 359 btmsk(:,:,5) = MAX ( btmsk(:,:,3), btmsk(:,:,4) ) ! Indo-Pacific basin 360 DO jn = 2, nptr 361 btmsk(:,:,jn) = btmsk(:,:,jn) * tmask_i(:,:) ! interior domain only 370 IF( nbasin == 5 ) THEN ! nbasin has been initialized in iom_init to define the axis "basin" 371 CALL iom_open( 'subbasins', inum ) 372 CALL iom_get( inum, jpdom_global, 'atlmsk', btmsk(:,:,2) ) ! Atlantic basin 373 CALL iom_get( inum, jpdom_global, 'pacmsk', btmsk(:,:,3) ) ! Pacific basin 374 CALL iom_get( inum, jpdom_global, 'indmsk', btmsk(:,:,4) ) ! Indian basin 375 CALL iom_close( inum ) 376 btmsk(:,:,5) = MAX ( btmsk(:,:,3), btmsk(:,:,4) ) ! Indo-Pacific basin 377 ENDIF 378 DO jn = 2, nbasin 379 btmsk(:,:,jn) = btmsk(:,:,jn) * tmask_i(:,:) ! interior domain only 362 380 END DO 363 381 ! JD : modification so that overturning streamfunction is available in Atlantic at 34S to compare with observations … … 368 386 END WHERE 369 387 btmsk34(:,:,1) = btmsk(:,:,1) 370 DO jn = 2, n ptr371 btmsk34(:,:,jn) = btmsk(:,:,jn) * zmsk(:,:) ! interior domain only388 DO jn = 2, nbasin 389 btmsk34(:,:,jn) = btmsk(:,:,jn) * zmsk(:,:) ! interior domain only 372 390 ENDDO 373 391 … … 403 421 IF( cptr == 'adv' ) THEN 404 422 IF( ktra == jp_tem ) THEN 405 DO jn = 1, n ptr423 DO jn = 1, nbasin 406 424 hstr_adv(:,jp_tem,jn) = ptr_sj( pvflx(:,:,:), btmsk(:,:,jn) ) 407 425 ENDDO 408 426 ENDIF 409 427 IF( ktra == jp_sal ) THEN 410 DO jn = 1, n ptr428 DO jn = 1, nbasin 411 429 hstr_adv(:,jp_sal,jn) = ptr_sj( pvflx(:,:,:), btmsk(:,:,jn) ) 412 430 ENDDO … … 416 434 IF( cptr == 'ldf' ) THEN 417 435 IF( ktra == jp_tem ) THEN 418 DO jn = 1, n ptr436 DO jn = 1, nbasin 419 437 hstr_ldf(:,jp_tem,jn) = ptr_sj( pvflx(:,:,:), btmsk(:,:,jn) ) 420 438 ENDDO 421 439 ENDIF 422 440 IF( ktra == jp_sal ) THEN 423 DO jn = 1, n ptr441 DO jn = 1, nbasin 424 442 hstr_ldf(:,jp_sal,jn) = ptr_sj( pvflx(:,:,:), btmsk(:,:,jn) ) 425 443 ENDDO … … 429 447 IF( cptr == 'eiv' ) THEN 430 448 IF( ktra == jp_tem ) THEN 431 DO jn = 1, n ptr449 DO jn = 1, nbasin 432 450 hstr_eiv(:,jp_tem,jn) = ptr_sj( pvflx(:,:,:), btmsk(:,:,jn) ) 433 451 ENDDO 434 452 ENDIF 435 453 IF( ktra == jp_sal ) THEN 436 DO jn = 1, n ptr454 DO jn = 1, nbasin 437 455 hstr_eiv(:,jp_sal,jn) = ptr_sj( pvflx(:,:,:), btmsk(:,:,jn) ) 438 456 ENDDO … … 442 460 IF( cptr == 'vtr' ) THEN 443 461 IF( ktra == jp_tem ) THEN 444 DO jn = 1, n ptr462 DO jn = 1, nbasin 445 463 hstr_vtr(:,jp_tem,jn) = ptr_sj( pvflx(:,:,:), btmsk(:,:,jn) ) 446 464 ENDDO 447 465 ENDIF 448 466 IF( ktra == jp_sal ) THEN 449 DO jn = 1, n ptr467 DO jn = 1, nbasin 450 468 hstr_vtr(:,jp_sal,jn) = ptr_sj( pvflx(:,:,:), btmsk(:,:,jn) ) 451 469 ENDDO … … 465 483 ierr(:) = 0 466 484 ! 485 ! nbasin has been initialized in iom_init to define the axis "basin" 486 ! 467 487 IF( .NOT. ALLOCATED( btmsk ) ) THEN 468 ALLOCATE( btmsk(jpi,jpj,n ptr) , btmsk34(jpi,jpj,nptr), &469 & hstr_adv(jpj,jpts,n ptr), hstr_eiv(jpj,jpts,nptr), &470 & hstr_ove(jpj,jpts,n ptr), hstr_btr(jpj,jpts,nptr), &471 & hstr_ldf(jpj,jpts,n ptr), hstr_vtr(jpj,jpts,nptr), STAT=ierr(1) )488 ALLOCATE( btmsk(jpi,jpj,nbasin) , btmsk34(jpi,jpj,nbasin), & 489 & hstr_adv(jpj,jpts,nbasin), hstr_eiv(jpj,jpts,nbasin), & 490 & hstr_ove(jpj,jpts,nbasin), hstr_btr(jpj,jpts,nbasin), & 491 & hstr_ldf(jpj,jpts,nbasin), hstr_vtr(jpj,jpts,nbasin), STAT=ierr(1) ) 472 492 ! 473 493 ALLOCATE( p_fval1d(jpj), p_fval2d(jpj,jpk), Stat=ierr(2)) … … 503 523 ijpj = jpj 504 524 p_fval(:) = 0._wp 505 DO_3D _00_00(1, jpkm1 )525 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 506 526 p_fval(jj) = p_fval(jj) + pvflx(ji,jj,jk) * pmsk(ji,jj) * tmask_i(ji,jj) 507 527 END_3D … … 536 556 ijpj = jpj 537 557 p_fval(:) = 0._wp 538 DO_2D _00_00558 DO_2D( 0, 0, 0, 0 ) 539 559 p_fval(jj) = p_fval(jj) + pvflx(ji,jj) * pmsk(ji,jj) * tmask_i(ji,jj) 540 560 END_2D … … 565 585 p_fval(:,:) = 0._wp 566 586 DO jc = 1, jpnj ! looping over all processors in j axis 567 DO_2D _00_00587 DO_2D( 0, 0, 0, 0 ) 568 588 p_fval(ji,jj) = p_fval(ji,jj-1) + pva(ji,jj) * tmask_i(ji,jj) 569 589 END_2D 570 CALL lbc_lnk( 'diaptr', p_fval, 'U', -1. )590 CALL lbc_lnk( 'diaptr', p_fval, 'U', -1.0_wp ) 571 591 END DO 572 592 ! … … 604 624 p_fval(:,:) = 0._wp 605 625 ! 606 DO_3D _00_00(1, jpkm1 )626 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 607 627 p_fval(jj,jk) = p_fval(jj,jk) + pta(ji,jj,jk) * pmsk(ji,jj) * tmask_i(ji,jj) 608 628 END_3D
Note: See TracChangeset
for help on using the changeset viewer.