Changeset 13470
- Timestamp:
- 2020-09-15T12:56:56+02:00 (4 years ago)
- Location:
- NEMO/branches/2020/temporary_r4_trunk
- Files:
-
- 30 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icealb.F90
r13469 r13470 122 122 ! 123 123 DO jl = 1, jpl 124 DO_2D _11_11124 DO_2D( 1, 1, 1, 1 ) 125 125 ! 126 126 !---------------------------------------------! -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icecor.F90
r13469 r13470 92 92 zzc = rhoi * r1_rdtice 93 93 DO jl = 1, jpl 94 DO_2D _11_1194 DO_2D( 1, 1, 1, 1 ) 95 95 zsal = sv_i(ji,jj,jl) 96 96 sv_i(ji,jj,jl) = MIN( MAX( rn_simin*v_i(ji,jj,jl) , sv_i(ji,jj,jl) ) , rn_simax*v_i(ji,jj,jl) ) … … 105 105 ! !----------------------------------------------------- 106 106 IF( kn == 2 ) THEN ! Ice drift case: Corrections to avoid wrong values ! 107 DO_2D _00_00107 DO_2D( 0, 0, 0, 0 ) 108 108 IF ( at_i(ji,jj) == 0._wp ) THEN ! what to do if there is no ice 109 109 IF ( at_i(ji+1,jj) == 0._wp ) u_ice(ji ,jj) = 0._wp ! right side -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icectl.F90
r13469 r13470 366 366 cl_alname(ialert_id) = ' Very high salinity ' ! name of the alert 367 367 DO jl = 1, jpl 368 DO_2D _11_11368 DO_2D( 1, 1, 1, 1 ) 369 369 IF( v_i(ji,jj,jl) > epsi10 ) THEN 370 370 IF( sv_i(ji,jj,jl) / v_i(ji,jj,jl) > rn_simax ) THEN … … 381 381 cl_alname(ialert_id) = ' Very low salinity ' ! name of the alert 382 382 DO jl = 1, jpl 383 DO_2D _11_11383 DO_2D( 1, 1, 1, 1 ) 384 384 IF( v_i(ji,jj,jl) > epsi10 ) THEN 385 385 IF( sv_i(ji,jj,jl) / v_i(ji,jj,jl) < rn_simin ) THEN … … 396 396 cl_alname(ialert_id) = ' Very cold ice ' ! name of the alert 397 397 DO jl = 1, jpl 398 DO_3D _11_11(1, nlay_i )398 DO_3D( 1, 1, 1, 1, 1, nlay_i ) 399 399 ztmelts = -rTmlt * sz_i(ji,jj,jk,jl) + rt0 400 400 IF( t_i(ji,jj,jk,jl) < -50.+rt0 .AND. v_i(ji,jj,jl) > epsi10 ) THEN … … 410 410 cl_alname(ialert_id) = ' Very warm ice ' ! name of the alert 411 411 DO jl = 1, jpl 412 DO_3D _11_11(1, nlay_i )412 DO_3D( 1, 1, 1, 1, 1, nlay_i ) 413 413 ztmelts = -rTmlt * sz_i(ji,jj,jk,jl) + rt0 414 414 IF( t_i(ji,jj,jk,jl) > ztmelts .AND. v_i(ji,jj,jl) > epsi10 ) THEN … … 424 424 cl_alname(ialert_id) = ' Very thick ice ' ! name of the alert 425 425 jl = jpl 426 DO_2D _11_11426 DO_2D( 1, 1, 1, 1 ) 427 427 IF( h_i(ji,jj,jl) > 50._wp ) THEN 428 428 WRITE(numout,*) ' ALERTE : Very thick ice ',h_i(ji,jj,jl) … … 436 436 cl_alname(ialert_id) = ' Very thin ice ' ! name of the alert 437 437 jl = 1 438 DO_2D _11_11438 DO_2D( 1, 1, 1, 1 ) 439 439 IF( h_i(ji,jj,jl) < rn_himin ) THEN 440 440 WRITE(numout,*) ' ALERTE : Very thin ice ',h_i(ji,jj,jl) … … 447 447 ialert_id = ialert_id + 1 ! reference number of this alert 448 448 cl_alname(ialert_id) = ' Very fast ice ' ! name of the alert 449 DO_2D _11_11449 DO_2D( 1, 1, 1, 1 ) 450 450 IF( MAX( ABS( u_ice(ji,jj) ), ABS( v_ice(ji,jj) ) ) > 2. ) THEN 451 451 WRITE(numout,*) ' ALERTE : Very fast ice ',MAX( ABS( u_ice(ji,jj) ), ABS( v_ice(ji,jj) ) ) … … 458 458 ialert_id = ialert_id + 1 ! reference number of this alert 459 459 cl_alname(ialert_id) = ' Ice on continents ' ! name of the alert 460 DO_2D _11_11460 DO_2D( 1, 1, 1, 1 ) 461 461 IF( tmask(ji,jj,1) == 0._wp .AND. ( at_i(ji,jj) > 0._wp .OR. vt_i(ji,jj) > 0._wp ) ) THEN 462 462 WRITE(numout,*) ' ALERTE : Ice on continents ',at_i(ji,jj),vt_i(ji,jj) … … 469 469 ialert_id = ialert_id + 1 ! reference number of this alert 470 470 cl_alname(ialert_id) = ' Incompatible ice conc and vol ' ! name of the alert 471 DO_2D _11_11471 DO_2D( 1, 1, 1, 1 ) 472 472 IF( ( vt_i(ji,jj) == 0._wp .AND. at_i(ji,jj) > 0._wp ) .OR. & 473 473 & ( vt_i(ji,jj) > 0._wp .AND. at_i(ji,jj) == 0._wp ) ) THEN -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icedyn.F90
r13469 r13470 127 127 ! CFL = 0.5 at a distance from the bound of 1/6 of the basin length 128 128 ! Then for dx = 2m and dt = 1s => rn_uice = u (1/6th) = 1m/s 129 DO_2D _11_11129 DO_2D( 1, 1, 1, 1 ) 130 130 zcoefu = ( REAL(jpiglo+1)*0.5 - REAL(ji+nimpp-1) ) / ( REAL(jpiglo+1)*0.5 - 1. ) 131 131 zcoefv = ( REAL(jpjglo+1)*0.5 - REAL(jj+njmpp-1) ) / ( REAL(jpjglo+1)*0.5 - 1. ) … … 156 156 157 157 ALLOCATE( zdivu_i(jpi,jpj) ) 158 DO_2D _00_00158 DO_2D( 0, 0, 0, 0 ) 159 159 zdivu_i(ji,jj) = ( e2u(ji,jj) * u_ice(ji,jj) - e2u(ji-1,jj) * u_ice(ji-1,jj) & 160 160 & + e1v(ji,jj) * v_ice(ji,jj) - e1v(ji,jj-1) * v_ice(ji,jj-1) ) * r1_e1e2t(ji,jj) -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icedyn_adv_pra.F90
r13469 r13470 110 110 END WHERE 111 111 DO jl = 1, jpl 112 DO_2D _00_00112 DO_2D( 0, 0, 0, 0 ) 113 113 zhip_max(ji,jj,jl) = MAX( epsi20, ph_ip(ji,jj,jl), ph_ip(ji+1,jj ,jl), ph_ip(ji ,jj+1,jl), & 114 114 & ph_ip(ji-1,jj ,jl), ph_ip(ji ,jj-1,jl), & … … 143 143 END DO 144 144 DO jl = 1, jpl 145 DO_3D _00_00(1, nlay_i )145 DO_3D( 0, 0, 0, 0, 1, nlay_i ) 146 146 zei_max(ji,jj,jk,jl) = MAX( epsi20, ze_i(ji,jj,jk,jl), ze_i(ji+1,jj ,jk,jl), ze_i(ji ,jj+1,jk,jl), & 147 147 & ze_i(ji-1,jj ,jk,jl), ze_i(ji ,jj-1,jk,jl), & … … 151 151 END DO 152 152 DO jl = 1, jpl 153 DO_3D _00_00(1, nlay_s )153 DO_3D( 0, 0, 0, 0, 1, nlay_s ) 154 154 zes_max(ji,jj,jk,jl) = MAX( epsi20, ze_s(ji,jj,jk,jl), ze_s(ji+1,jj ,jk,jl), ze_s(ji ,jj+1,jk,jl), & 155 155 & ze_s(ji-1,jj ,jk,jl), ze_s(ji ,jj-1,jk,jl), & … … 307 307 ! derive open water from ice concentration 308 308 zati2(:,:) = SUM( pa_i(:,:,:), dim=3 ) 309 DO_2D _00_00309 DO_2D( 0, 0, 0, 0 ) 310 310 pato_i(ji,jj) = pato_i(ji,jj) - ( zati2(ji,jj) - zati1(ji,jj) ) & !--- open water 311 311 & - ( zudy(ji,jj) - zudy(ji-1,jj) + zvdx(ji,jj) - zvdx(ji,jj-1) ) * r1_e1e2t(ji,jj) * zdt … … 363 363 ! 364 364 ! Limitation of moments. 365 DO_2D _00_11365 DO_2D( 0, 0, 1, 1 ) 366 366 ! Initialize volumes of boxes (=area if adv_x first called, =psm otherwise) 367 367 psm (ji,jj,jl) = MAX( pcrh * e1e2t(ji,jj) + ( 1.0 - pcrh ) * psm(ji,jj,jl) , epsi20 ) … … 383 383 384 384 ! Calculate fluxes and moments between boxes i<-->i+1 385 DO_2D _00_11385 DO_2D( 0, 0, 1, 1 ) 386 386 zbet(ji,jj) = MAX( 0._wp, SIGN( 1._wp, put(ji,jj) ) ) 387 387 zalf = MAX( 0._wp, put(ji,jj) ) * pdt / psm(ji,jj,jl) … … 408 408 END_2D 409 409 410 DO_2D _00_10410 DO_2D( 0, 0, 1, 0 ) 411 411 zalf = MAX( 0._wp, -put(ji,jj) ) * pdt / psm(ji+1,jj,jl) 412 412 zalg (ji,jj) = zalf … … 427 427 END_2D 428 428 429 DO_2D _00_00429 DO_2D( 0, 0, 0, 0 ) 430 430 zbt = zbet(ji-1,jj) 431 431 zbt1 = 1.0 - zbet(ji-1,jj) … … 441 441 442 442 ! Put the temporary moments into appropriate neighboring boxes. 443 DO_2D _00_00443 DO_2D( 0, 0, 0, 0 ) 444 444 zbt = zbet(ji-1,jj) 445 445 zbt1 = 1.0 - zbet(ji-1,jj) … … 461 461 END_2D 462 462 463 DO_2D _00_00463 DO_2D( 0, 0, 0, 0 ) 464 464 zbt = zbet(ji,jj) 465 465 zbt1 = 1.0 - zbet(ji,jj) … … 520 520 ! 521 521 ! Limitation of moments. 522 DO_2D _11_00522 DO_2D( 1, 1, 0, 0 ) 523 523 ! Initialize volumes of boxes (=area if adv_x first called, =psm otherwise) 524 524 psm(ji,jj,jl) = MAX( pcrh * e1e2t(ji,jj) + ( 1.0 - pcrh ) * psm(ji,jj,jl) , epsi20 ) … … 540 540 541 541 ! Calculate fluxes and moments between boxes j<-->j+1 542 DO_2D _11_00542 DO_2D( 1, 1, 0, 0 ) 543 543 zbet(ji,jj) = MAX( 0._wp, SIGN( 1._wp, pvt(ji,jj) ) ) 544 544 zalf = MAX( 0._wp, pvt(ji,jj) ) * pdt / psm(ji,jj,jl) … … 565 565 END_2D 566 566 ! 567 DO_2D _10_00567 DO_2D( 1, 0, 0, 0 ) 568 568 zalf = MAX( 0._wp, -pvt(ji,jj) ) * pdt / psm(ji,jj+1,jl) 569 569 zalg (ji,jj) = zalf … … 585 585 586 586 ! Readjust moments remaining in the box. 587 DO_2D _00_00587 DO_2D( 0, 0, 0, 0 ) 588 588 zbt = zbet(ji,jj-1) 589 589 zbt1 = ( 1.0 - zbet(ji,jj-1) ) … … 599 599 600 600 ! Put the temporary moments into appropriate neighboring boxes. 601 DO_2D _00_00601 DO_2D( 0, 0, 0, 0 ) 602 602 zbt = zbet(ji,jj-1) 603 603 zbt1 = 1.0 - zbet(ji,jj-1) … … 620 620 END_2D 621 621 622 DO_2D _00_00622 DO_2D( 0, 0, 0, 0 ) 623 623 zbt = zbet(ji,jj) 624 624 zbt1 = 1.0 - zbet(ji,jj) … … 679 679 ! 680 680 DO jl = 1, jpl 681 DO_2D _11_11681 DO_2D( 1, 1, 1, 1 ) 682 682 IF ( pv_i(ji,jj,jl) > 0._wp ) THEN 683 683 ! … … 726 726 ! ! -- check e_i/v_i -- ! 727 727 DO jl = 1, jpl 728 DO_3D _11_11(1, nlay_i )728 DO_3D( 1, 1, 1, 1, 1, nlay_i ) 729 729 IF ( pv_i(ji,jj,jl) > 0._wp ) THEN 730 730 ! if e_i/v_i is larger than the surrounding 9 pts => put the heat excess in the ocean … … 740 740 ! ! -- check e_s/v_s -- ! 741 741 DO jl = 1, jpl 742 DO_3D _11_11(1, nlay_s )742 DO_3D( 1, 1, 1, 1, 1, nlay_s ) 743 743 IF ( pv_s(ji,jj,jl) > 0._wp ) THEN 744 744 ! if e_s/v_s is larger than the surrounding 9 pts => put the heat excess in the ocean … … 783 783 ! -- check snow load -- ! 784 784 DO jl = 1, jpl 785 DO_2D _11_11785 DO_2D( 1, 1, 1, 1 ) 786 786 IF ( pv_i(ji,jj,jl) > 0._wp ) THEN 787 787 ! -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icedyn_adv_umx.F90
r13469 r13470 114 114 END WHERE 115 115 DO jl = 1, jpl 116 DO_2D _00_00116 DO_2D( 0, 0, 0, 0 ) 117 117 zhip_max(ji,jj,jl) = MAX( epsi20, ph_ip(ji,jj,jl), ph_ip(ji+1,jj ,jl), ph_ip(ji ,jj+1,jl), & 118 118 & ph_ip(ji-1,jj ,jl), ph_ip(ji ,jj-1,jl), & … … 147 147 END DO 148 148 DO jl = 1, jpl 149 DO_3D _00_00(1, nlay_i )149 DO_3D( 0, 0, 0, 0, 1, nlay_i ) 150 150 zei_max(ji,jj,jk,jl) = MAX( epsi20, ze_i(ji,jj,jk,jl), ze_i(ji+1,jj ,jk,jl), ze_i(ji ,jj+1,jk,jl), & 151 151 & ze_i(ji-1,jj ,jk,jl), ze_i(ji ,jj-1,jk,jl), & … … 155 155 END DO 156 156 DO jl = 1, jpl 157 DO_3D _00_00(1, nlay_s )157 DO_3D( 0, 0, 0, 0, 1, nlay_s ) 158 158 zes_max(ji,jj,jk,jl) = MAX( epsi20, ze_s(ji,jj,jk,jl), ze_s(ji+1,jj ,jk,jl), ze_s(ji ,jj+1,jk,jl), & 159 159 & ze_s(ji-1,jj ,jk,jl), ze_s(ji ,jj-1,jk,jl), & … … 191 191 ! 192 192 ! --- define velocity for advection: u*grad(H) --- ! 193 DO_2D _00_00193 DO_2D( 0, 0, 0, 0 ) 194 194 IF ( pu_ice(ji,jj) * pu_ice(ji-1,jj) <= 0._wp ) THEN ; zcu_box(ji,jj) = 0._wp 195 195 ELSEIF( pu_ice(ji,jj) > 0._wp ) THEN ; zcu_box(ji,jj) = pu_ice(ji-1,jj) … … 224 224 IF( .NOT. ALLOCATED(jmsk_small) ) ALLOCATE( jmsk_small(jpi,jpj,jpl) ) 225 225 DO jl = 1, jpl 226 DO_2D _10_10226 DO_2D( 1, 0, 1, 0 ) 227 227 zvi_cen = 0.5_wp * ( pv_i(ji+1,jj,jl) + pv_i(ji,jj,jl) ) 228 228 IF( zvi_cen < epsi06) THEN ; imsk_small(ji,jj,jl) = 0 … … 380 380 !== Open water area ==! 381 381 zati2(:,:) = SUM( pa_i(:,:,:), dim=3 ) 382 DO_2D _00_00382 DO_2D( 0, 0, 0, 0 ) 383 383 pato_i(ji,jj) = pato_i(ji,jj) - ( zati2(ji,jj) - zati1(ji,jj) ) & 384 384 & - ( zudy(ji,jj) - zudy(ji-1,jj) + zvdx(ji,jj) - zvdx(ji,jj-1) ) * r1_e1e2t(ji,jj) * zdt … … 490 490 IF( pamsk == 0._wp ) THEN 491 491 DO jl = 1, jpl 492 DO_2D _10_10492 DO_2D( 1, 0, 1, 0 ) 493 493 IF( ABS( pu(ji,jj) ) > epsi10 ) THEN 494 494 zfu_ho (ji,jj,jl) = zfu_ho (ji,jj,jl) * puc (ji,jj,jl) / pu(ji,jj) … … 512 512 ! thus we calculate the upstream solution and apply a limiter again 513 513 DO jl = 1, jpl 514 DO_2D _00_00514 DO_2D( 0, 0, 0, 0 ) 515 515 ztra = - ( zfu_ups(ji,jj,jl) - zfu_ups(ji-1,jj,jl) + zfv_ups(ji,jj,jl) - zfv_ups(ji,jj-1,jl) ) 516 516 ! … … 533 533 IF( PRESENT( pua_ho ) ) THEN 534 534 DO jl = 1, jpl 535 DO_2D _10_10535 DO_2D( 1, 0, 1, 0 ) 536 536 pua_ho (ji,jj,jl) = zfu_ho (ji,jj,jl) ; pva_ho (ji,jj,jl) = zfv_ho (ji,jj,jl) 537 537 pua_ups(ji,jj,jl) = zfu_ups(ji,jj,jl) ; pva_ups(ji,jj,jl) = zfv_ups(ji,jj,jl) … … 543 543 ! --------------------------------- 544 544 DO jl = 1, jpl 545 DO_2D _00_00545 DO_2D( 0, 0, 0, 0 ) 546 546 ztra = - ( zfu_ho(ji,jj,jl) - zfu_ho(ji-1,jj,jl) + zfv_ho(ji,jj,jl) - zfv_ho(ji,jj-1,jl) ) 547 547 ! … … 577 577 ! 578 578 DO jl = 1, jpl 579 DO_2D _10_10579 DO_2D( 1, 0, 1, 0 ) 580 580 pfu_ups(ji,jj,jl) = MAX( pu(ji,jj), 0._wp ) * pt(ji,jj,jl) + MIN( pu(ji,jj), 0._wp ) * pt(ji+1,jj,jl) 581 581 pfv_ups(ji,jj,jl) = MAX( pv(ji,jj), 0._wp ) * pt(ji,jj,jl) + MIN( pv(ji,jj), 0._wp ) * pt(ji,jj+1,jl) … … 588 588 ! 589 589 DO jl = 1, jpl !-- flux in x-direction 590 DO_2D _10_10590 DO_2D( 1, 0, 1, 0 ) 591 591 pfu_ups(ji,jj,jl) = MAX( pu(ji,jj), 0._wp ) * pt(ji,jj,jl) + MIN( pu(ji,jj), 0._wp ) * pt(ji+1,jj,jl) 592 592 END_2D … … 594 594 ! 595 595 DO jl = 1, jpl !-- first guess of tracer from u-flux 596 DO_2D _00_00596 DO_2D( 0, 0, 0, 0 ) 597 597 ztra = - ( pfu_ups(ji,jj,jl) - pfu_ups(ji-1,jj,jl) ) & 598 598 & + ( pu (ji,jj ) - pu (ji-1,jj ) ) * pt(ji,jj,jl) * (1.-pamsk) … … 604 604 ! 605 605 DO jl = 1, jpl !-- flux in y-direction 606 DO_2D _10_10606 DO_2D( 1, 0, 1, 0 ) 607 607 pfv_ups(ji,jj,jl) = MAX( pv(ji,jj), 0._wp ) * zpt(ji,jj,jl) + MIN( pv(ji,jj), 0._wp ) * zpt(ji,jj+1,jl) 608 608 END_2D … … 612 612 ! 613 613 DO jl = 1, jpl !-- flux in y-direction 614 DO_2D _10_10614 DO_2D( 1, 0, 1, 0 ) 615 615 pfv_ups(ji,jj,jl) = MAX( pv(ji,jj), 0._wp ) * pt(ji,jj,jl) + MIN( pv(ji,jj), 0._wp ) * pt(ji,jj+1,jl) 616 616 END_2D … … 618 618 ! 619 619 DO jl = 1, jpl !-- first guess of tracer from v-flux 620 DO_2D _00_00620 DO_2D( 0, 0, 0, 0 ) 621 621 ztra = - ( pfv_ups(ji,jj,jl) - pfv_ups(ji,jj-1,jl) ) & 622 622 & + ( pv (ji,jj ) - pv (ji,jj-1 ) ) * pt(ji,jj,jl) * (1.-pamsk) … … 628 628 ! 629 629 DO jl = 1, jpl !-- flux in x-direction 630 DO_2D _10_10630 DO_2D( 1, 0, 1, 0 ) 631 631 pfu_ups(ji,jj,jl) = MAX( pu(ji,jj), 0._wp ) * zpt(ji,jj,jl) + MIN( pu(ji,jj), 0._wp ) * zpt(ji+1,jj,jl) 632 632 END_2D … … 638 638 ! 639 639 DO jl = 1, jpl !-- after tracer with upstream scheme 640 DO_2D _00_00640 DO_2D( 0, 0, 0, 0 ) 641 641 ztra = - ( pfu_ups(ji,jj,jl) - pfu_ups(ji-1,jj ,jl) & 642 642 & + pfv_ups(ji,jj,jl) - pfv_ups(ji ,jj-1,jl) ) & … … 677 677 ! 678 678 DO jl = 1, jpl 679 DO_2D _10_10679 DO_2D( 1, 0, 1, 0 ) 680 680 pfu_ho(ji,jj,jl) = 0.5_wp * pu(ji,jj) * ( pt(ji,jj,jl) + pt(ji+1,jj ,jl) ) 681 681 pfv_ho(ji,jj,jl) = 0.5_wp * pv(ji,jj) * ( pt(ji,jj,jl) + pt(ji ,jj+1,jl) ) … … 695 695 ! 696 696 DO jl = 1, jpl !-- flux in x-direction 697 DO_2D _10_10697 DO_2D( 1, 0, 1, 0 ) 698 698 pfu_ho(ji,jj,jl) = 0.5_wp * pu(ji,jj) * ( pt(ji,jj,jl) + pt(ji+1,jj,jl) ) 699 699 END_2D … … 702 702 703 703 DO jl = 1, jpl !-- first guess of tracer from u-flux 704 DO_2D _00_00704 DO_2D( 0, 0, 0, 0 ) 705 705 ztra = - ( pfu_ho(ji,jj,jl) - pfu_ho(ji-1,jj,jl) ) & 706 706 & + ( pu (ji,jj ) - pu (ji-1,jj ) ) * pt(ji,jj,jl) * (1.-pamsk) … … 712 712 713 713 DO jl = 1, jpl !-- flux in y-direction 714 DO_2D _10_10714 DO_2D( 1, 0, 1, 0 ) 715 715 pfv_ho(ji,jj,jl) = 0.5_wp * pv(ji,jj) * ( zpt(ji,jj,jl) + zpt(ji,jj+1,jl) ) 716 716 END_2D … … 721 721 ! 722 722 DO jl = 1, jpl !-- flux in y-direction 723 DO_2D _10_10723 DO_2D( 1, 0, 1, 0 ) 724 724 pfv_ho(ji,jj,jl) = 0.5_wp * pv(ji,jj) * ( pt(ji,jj,jl) + pt(ji,jj+1,jl) ) 725 725 END_2D … … 728 728 ! 729 729 DO jl = 1, jpl !-- first guess of tracer from v-flux 730 DO_2D _00_00730 DO_2D( 0, 0, 0, 0 ) 731 731 ztra = - ( pfv_ho(ji,jj,jl) - pfv_ho(ji,jj-1,jl) ) & 732 732 & + ( pv (ji,jj ) - pv (ji,jj-1 ) ) * pt(ji,jj,jl) * (1.-pamsk) … … 738 738 ! 739 739 DO jl = 1, jpl !-- flux in x-direction 740 DO_2D _10_10740 DO_2D( 1, 0, 1, 0 ) 741 741 pfu_ho(ji,jj,jl) = 0.5_wp * pu(ji,jj) * ( zpt(ji,jj,jl) + zpt(ji+1,jj,jl) ) 742 742 END_2D … … 786 786 ! !-- advective form update in zpt --! 787 787 DO jl = 1, jpl 788 DO_2D _00_00788 DO_2D( 0, 0, 0, 0 ) 789 789 zpt(ji,jj,jl) = ( pt(ji,jj,jl) - ( pubox(ji,jj ) * ( zt_u(ji,jj,jl) - zt_u(ji-1,jj,jl) ) * r1_e1t (ji,jj) & 790 790 & + pt (ji,jj,jl) * ( pu (ji,jj ) - pu (ji-1,jj ) ) * r1_e1e2t(ji,jj) & … … 813 813 ! !-- advective form update in zpt --! 814 814 DO jl = 1, jpl 815 DO_2D _00_00815 DO_2D( 0, 0, 0, 0 ) 816 816 zpt(ji,jj,jl) = ( pt(ji,jj,jl) - ( pvbox(ji,jj ) * ( zt_v(ji,jj,jl) - zt_v(ji,jj-1,jl) ) * r1_e2t (ji,jj) & 817 817 & + pt (ji,jj,jl) * ( pv (ji,jj ) - pv (ji,jj-1 ) ) * r1_e1e2t(ji,jj) & … … 895 895 ! 896 896 DO jl = 1, jpl 897 DO_2D _10_10897 DO_2D( 1, 0, 1, 0 ) 898 898 pt_u(ji,jj,jl) = 0.5_wp * umask(ji,jj,1) * ( pt(ji+1,jj,jl) + pt(ji,jj,jl) & 899 899 & - SIGN( 1._wp, pu(ji,jj) ) * ( pt(ji+1,jj,jl) - pt(ji,jj,jl) ) ) … … 904 904 ! 905 905 DO jl = 1, jpl 906 DO_2D _10_10906 DO_2D( 1, 0, 1, 0 ) 907 907 zcu = pu(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 908 908 pt_u(ji,jj,jl) = 0.5_wp * umask(ji,jj,1) * ( pt(ji+1,jj,jl) + pt(ji,jj,jl) & … … 914 914 ! 915 915 DO jl = 1, jpl 916 DO_2D _10_10916 DO_2D( 1, 0, 1, 0 ) 917 917 zcu = pu(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 918 918 zdx2 = e1u(ji,jj) * e1u(ji,jj) … … 928 928 ! 929 929 DO jl = 1, jpl 930 DO_2D _10_10930 DO_2D( 1, 0, 1, 0 ) 931 931 zcu = pu(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 932 932 zdx2 = e1u(ji,jj) * e1u(ji,jj) … … 942 942 ! 943 943 DO jl = 1, jpl 944 DO_2D _10_10944 DO_2D( 1, 0, 1, 0 ) 945 945 zcu = pu(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 946 946 zdx2 = e1u(ji,jj) * e1u(ji,jj) … … 963 963 IF( ll_neg ) THEN 964 964 DO jl = 1, jpl 965 DO_2D _10_10965 DO_2D( 1, 0, 1, 0 ) 966 966 IF( pt_u(ji,jj,jl) < 0._wp .OR. ( imsk_small(ji,jj,jl) == 0 .AND. pamsk == 0. ) ) THEN 967 967 pt_u(ji,jj,jl) = 0.5_wp * umask(ji,jj,1) * ( pt(ji+1,jj,jl) + pt(ji,jj,jl) & … … 973 973 ! !-- High order flux in i-direction --! 974 974 DO jl = 1, jpl 975 DO_2D _10_10975 DO_2D( 1, 0, 1, 0 ) 976 976 pfu_ho(ji,jj,jl) = pu(ji,jj) * pt_u(ji,jj,jl) 977 977 END_2D … … 1006 1006 ! !-- Laplacian in j-direction --! 1007 1007 DO jl = 1, jpl 1008 DO_2D _10_001008 DO_2D( 1, 0, 0, 0 ) 1009 1009 ztv1(ji,jj,jl) = ( pt(ji,jj+1,jl) - pt(ji,jj,jl) ) * r1_e2v(ji,jj) * vmask(ji,jj,1) 1010 1010 END_2D 1011 DO_2D _00_001011 DO_2D( 0, 0, 0, 0 ) 1012 1012 ztv2(ji,jj,jl) = ( ztv1(ji,jj,jl) - ztv1(ji,jj-1,jl) ) * r1_e2t(ji,jj) 1013 1013 END_2D … … 1017 1017 ! !-- BiLaplacian in j-direction --! 1018 1018 DO jl = 1, jpl 1019 DO_2D _10_001019 DO_2D( 1, 0, 0, 0 ) 1020 1020 ztv3(ji,jj,jl) = ( ztv2(ji,jj+1,jl) - ztv2(ji,jj,jl) ) * r1_e2v(ji,jj) * vmask(ji,jj,1) 1021 1021 END_2D 1022 DO_2D _00_001022 DO_2D( 0, 0, 0, 0 ) 1023 1023 ztv4(ji,jj,jl) = ( ztv3(ji,jj,jl) - ztv3(ji,jj-1,jl) ) * r1_e2t(ji,jj) 1024 1024 END_2D … … 1031 1031 CASE( 1 ) !== 1st order central TIM ==! (Eq. 21) 1032 1032 DO jl = 1, jpl 1033 DO_2D _10_101033 DO_2D( 1, 0, 1, 0 ) 1034 1034 pt_v(ji,jj,jl) = 0.5_wp * vmask(ji,jj,1) * ( pt(ji,jj+1,jl) + pt(ji,jj,jl) & 1035 1035 & - SIGN( 1._wp, pv(ji,jj) ) * ( pt(ji,jj+1,jl) - pt(ji,jj,jl) ) ) … … 1039 1039 CASE( 2 ) !== 2nd order central TIM ==! (Eq. 23) 1040 1040 DO jl = 1, jpl 1041 DO_2D _10_101041 DO_2D( 1, 0, 1, 0 ) 1042 1042 zcv = pv(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 1043 1043 pt_v(ji,jj,jl) = 0.5_wp * vmask(ji,jj,1) * ( pt(ji,jj+1,jl) + pt(ji,jj,jl) & … … 1048 1048 CASE( 3 ) !== 3rd order central TIM ==! (Eq. 24) 1049 1049 DO jl = 1, jpl 1050 DO_2D _10_101050 DO_2D( 1, 0, 1, 0 ) 1051 1051 zcv = pv(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 1052 1052 zdy2 = e2v(ji,jj) * e2v(ji,jj) … … 1061 1061 CASE( 4 ) !== 4th order central TIM ==! (Eq. 27) 1062 1062 DO jl = 1, jpl 1063 DO_2D _10_101063 DO_2D( 1, 0, 1, 0 ) 1064 1064 zcv = pv(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 1065 1065 zdy2 = e2v(ji,jj) * e2v(ji,jj) … … 1074 1074 CASE( 5 ) !== 5th order central TIM ==! (Eq. 29) 1075 1075 DO jl = 1, jpl 1076 DO_2D _10_101076 DO_2D( 1, 0, 1, 0 ) 1077 1077 zcv = pv(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 1078 1078 zdy2 = e2v(ji,jj) * e2v(ji,jj) … … 1095 1095 IF( ll_neg ) THEN 1096 1096 DO jl = 1, jpl 1097 DO_2D _10_101097 DO_2D( 1, 0, 1, 0 ) 1098 1098 IF( pt_v(ji,jj,jl) < 0._wp .OR. ( jmsk_small(ji,jj,jl) == 0 .AND. pamsk == 0. ) ) THEN 1099 1099 pt_v(ji,jj,jl) = 0.5_wp * vmask(ji,jj,1) * ( ( pt(ji,jj+1,jl) + pt(ji,jj,jl) ) & … … 1105 1105 ! !-- High order flux in j-direction --! 1106 1106 DO jl = 1, jpl 1107 DO_2D _10_101107 DO_2D( 1, 0, 1, 0 ) 1108 1108 pfv_ho(ji,jj,jl) = pv(ji,jj) * pt_v(ji,jj,jl) 1109 1109 END_2D … … 1141 1141 ! -------------------------------------------------- 1142 1142 DO jl = 1, jpl 1143 DO_2D _10_101143 DO_2D( 1, 0, 1, 0 ) 1144 1144 pfu_ho(ji,jj,jl) = pfu_ho(ji,jj,jl) - pfu_ups(ji,jj,jl) 1145 1145 pfv_ho(ji,jj,jl) = pfv_ho(ji,jj,jl) - pfv_ups(ji,jj,jl) … … 1158 1158 1159 1159 DO jl = 1, jpl 1160 DO_2D _00_001160 DO_2D( 0, 0, 0, 0 ) 1161 1161 zti_ups(ji,jj,jl)= pt_ups(ji+1,jj ,jl) 1162 1162 ztj_ups(ji,jj,jl)= pt_ups(ji ,jj+1,jl) … … 1166 1166 1167 1167 DO jl = 1, jpl 1168 DO_2D _00_001168 DO_2D( 0, 0, 0, 0 ) 1169 1169 IF ( pfu_ho(ji,jj,jl) * ( pt_ups(ji+1,jj ,jl) - pt_ups(ji,jj,jl) ) <= 0._wp .AND. & 1170 1170 & pfv_ho(ji,jj,jl) * ( pt_ups(ji ,jj+1,jl) - pt_ups(ji,jj,jl) ) <= 0._wp ) THEN … … 1195 1195 DO jl = 1, jpl 1196 1196 1197 DO_2D _11_111197 DO_2D( 1, 1, 1, 1 ) 1198 1198 IF ( pt(ji,jj,jl) <= 0._wp .AND. pt_ups(ji,jj,jl) <= 0._wp ) THEN 1199 1199 zbup(ji,jj) = -zbig … … 1211 1211 END_2D 1212 1212 1213 DO_2D _00_001213 DO_2D( 0, 0, 0, 0 ) 1214 1214 ! 1215 1215 zup = MAX( zbup(ji,jj), zbup(ji-1,jj), zbup(ji+1,jj), zbup(ji,jj-1), zbup(ji,jj+1) ) ! search max/min in neighbourhood … … 1248 1248 ! --------------------------------- 1249 1249 DO jl = 1, jpl 1250 DO_2D _10_101250 DO_2D( 1, 0, 1, 0 ) 1251 1251 zau = MIN( 1._wp , zbetdo(ji,jj,jl) , zbetup(ji+1,jj,jl) ) 1252 1252 zbu = MIN( 1._wp , zbetup(ji,jj,jl) , zbetdo(ji+1,jj,jl) ) … … 1259 1259 END_2D 1260 1260 1261 DO_2D _10_101261 DO_2D( 1, 0, 1, 0 ) 1262 1262 zav = MIN( 1._wp , zbetdo(ji,jj,jl) , zbetup(ji,jj+1,jl) ) 1263 1263 zbv = MIN( 1._wp , zbetup(ji,jj,jl) , zbetdo(ji,jj+1,jl) ) … … 1293 1293 ! 1294 1294 DO jl = 1, jpl 1295 DO_2D _00_001295 DO_2D( 0, 0, 0, 0 ) 1296 1296 zslpx(ji,jj,jl) = ( pt(ji+1,jj,jl) - pt(ji,jj,jl) ) * umask(ji,jj,1) 1297 1297 END_2D … … 1300 1300 1301 1301 DO jl = 1, jpl 1302 DO_2D _00_001302 DO_2D( 0, 0, 0, 0 ) 1303 1303 uCFL = pdt * ABS( pu(ji,jj) ) * r1_e1e2t(ji,jj) 1304 1304 … … 1384 1384 ! 1385 1385 DO jl = 1, jpl 1386 DO_2D _00_001386 DO_2D( 0, 0, 0, 0 ) 1387 1387 zslpy(ji,jj,jl) = ( pt(ji,jj+1,jl) - pt(ji,jj,jl) ) * vmask(ji,jj,1) 1388 1388 END_2D … … 1391 1391 1392 1392 DO jl = 1, jpl 1393 DO_2D _00_001393 DO_2D( 0, 0, 0, 0 ) 1394 1394 vCFL = pdt * ABS( pv(ji,jj) ) * r1_e1e2t(ji,jj) 1395 1395 … … 1488 1488 ! 1489 1489 DO jl = 1, jpl 1490 DO_2D _11_111490 DO_2D( 1, 1, 1, 1 ) 1491 1491 IF ( pv_i(ji,jj,jl) > 0._wp ) THEN 1492 1492 ! … … 1535 1535 ! ! -- check e_i/v_i -- ! 1536 1536 DO jl = 1, jpl 1537 DO_3D _11_11(1, nlay_i )1537 DO_3D( 1, 1, 1, 1, 1, nlay_i ) 1538 1538 IF ( pv_i(ji,jj,jl) > 0._wp ) THEN 1539 1539 ! if e_i/v_i is larger than the surrounding 9 pts => put the heat excess in the ocean … … 1549 1549 ! ! -- check e_s/v_s -- ! 1550 1550 DO jl = 1, jpl 1551 DO_3D _11_11(1, nlay_s )1551 DO_3D( 1, 1, 1, 1, 1, nlay_s ) 1552 1552 IF ( pv_s(ji,jj,jl) > 0._wp ) THEN 1553 1553 ! if e_s/v_s is larger than the surrounding 9 pts => put the heat excess in the ocean … … 1592 1592 ! -- check snow load -- ! 1593 1593 DO jl = 1, jpl 1594 DO_2D _11_111594 DO_2D( 1, 1, 1, 1 ) 1595 1595 IF ( pv_i(ji,jj,jl) > 0._wp ) THEN 1596 1596 ! -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icedyn_rdgrft.F90
r13469 r13470 159 159 npti = 0 ; nptidx(:) = 0 160 160 ipti = 0 ; iptidx(:) = 0 161 DO_2D _11_11161 DO_2D( 1, 1, 1, 1 ) 162 162 IF ( at_i(ji,jj) > epsi10 ) THEN 163 163 npti = npti + 1 … … 775 775 ! !--------------------------------------------------! 776 776 CASE( 1 ) !--- Spatial smoothing 777 DO_2D _00_00777 DO_2D( 0, 0, 0, 0 ) 778 778 IF ( SUM( a_i(ji,jj,:) ) > 0._wp ) THEN 779 779 zworka(ji,jj) = ( 4.0 * strength(ji,jj) & … … 786 786 END_2D 787 787 788 DO_2D _00_00788 DO_2D( 0, 0, 0, 0 ) 789 789 strength(ji,jj) = zworka(ji,jj) 790 790 END_2D … … 797 797 ENDIF 798 798 ! 799 DO_2D _00_00799 DO_2D( 0, 0, 0, 0 ) 800 800 IF ( SUM( a_i(ji,jj,:) ) > 0._wp ) THEN 801 801 itframe = 1 ! number of time steps for the running mean -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icedyn_rhg_evp.F90
r13469 r13470 182 182 ! for diagnostics and convergence tests 183 183 ALLOCATE( zmsk00(jpi,jpj), zmsk15(jpi,jpj) ) 184 DO_2D _11_11184 DO_2D( 1, 1, 1, 1 ) 185 185 zmsk00(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) ! 1 if ice , 0 if no ice 186 186 zmsk15(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - 0.15_wp ) ) ! 1 if 15% ice, 0 if less … … 192 192 !------------------------------------------------------------------------------! 193 193 ! ocean/land mask 194 DO_2D _10_10194 DO_2D( 1, 0, 1, 0 ) 195 195 zfmask(ji,jj) = tmask(ji,jj,1) * tmask(ji+1,jj,1) * tmask(ji,jj+1,1) * tmask(ji+1,jj+1,1) 196 196 END_2D … … 198 198 199 199 ! Lateral boundary conditions on velocity (modify zfmask) 200 DO_2D _00_00200 DO_2D( 0, 0, 0, 0 ) 201 201 IF( zfmask(ji,jj) == 0._wp ) THEN 202 202 zfmask(ji,jj) = rn_ishlat * MIN( 1._wp , MAX( umask(ji,jj,1), umask(ji,jj+1,1), & … … 266 266 zsshdyn(:,:) = ice_var_sshdyn( ssh_m, snwice_mass, snwice_mass_b) 267 267 268 DO_2D _00_00268 DO_2D( 0, 0, 0, 0 ) 269 269 270 270 ! ice fraction at U-V points … … 317 317 ! 318 318 IF( ln_landfast_L16 ) THEN !-- Lemieux 2016 319 DO_2D _00_00319 DO_2D( 0, 0, 0, 0 ) 320 320 ! ice thickness at U-V points 321 321 zvU = 0.5_wp * ( vt_i(ji,jj) * e1e2t(ji,jj) + vt_i(ji+1,jj) * e1e2t(ji+1,jj) ) * r1_e1e2u(ji,jj) * umask(ji,jj,1) … … 334 334 ! 335 335 ELSE !-- no landfast 336 DO_2D _00_00336 DO_2D( 0, 0, 0, 0 ) 337 337 ztaux_base(ji,jj) = 0._wp 338 338 ztauy_base(ji,jj) = 0._wp … … 351 351 ! convergence test 352 352 IF( nn_rhg_chkcvg == 1 .OR. nn_rhg_chkcvg == 2 ) THEN 353 DO_2D _11_11353 DO_2D( 1, 1, 1, 1 ) 354 354 zu_ice(ji,jj) = u_ice(ji,jj) * umask(ji,jj,1) ! velocity at previous time step 355 355 zv_ice(ji,jj) = v_ice(ji,jj) * vmask(ji,jj,1) … … 358 358 359 359 ! --- divergence, tension & shear (Appendix B of Hunke & Dukowicz, 2002) --- ! 360 DO_2D _10_10360 DO_2D( 1, 0, 1, 0 ) 361 361 362 362 ! shear at F points … … 368 368 CALL lbc_lnk( 'icedyn_rhg_evp', zds, 'F', 1. ) 369 369 370 DO_2D _01_01370 DO_2D( 0, 1, 0, 1 ) 371 371 372 372 ! shear**2 at T points (doc eq. A16) … … 417 417 ! Save beta at T-points for further computations 418 418 IF( ln_aEVP ) THEN 419 DO_2D _11_11419 DO_2D( 1, 1, 1, 1 ) 420 420 zbeta(ji,jj) = MAX( 50._wp, rpi * SQRT( 0.5_wp * zp_delt(ji,jj) * r1_e1e2t(ji,jj) * zdt_m(ji,jj) ) ) 421 421 END_2D 422 422 ENDIF 423 423 424 DO_2D _10_10424 DO_2D( 1, 0, 1, 0 ) 425 425 426 426 ! alpha for aEVP … … 442 442 443 443 ! --- Ice internal stresses (Appendix C of Hunke and Dukowicz, 2002) --- ! 444 DO_2D _00_00444 DO_2D( 0, 0, 0, 0 ) 445 445 ! !--- U points 446 446 zfU(ji,jj) = 0.5_wp * ( ( zs1(ji+1,jj) - zs1(ji,jj) ) * e2u(ji,jj) & … … 470 470 IF( MOD(jter,2) == 0 ) THEN ! even iterations 471 471 ! 472 DO_2D _00_00472 DO_2D( 0, 0, 0, 0 ) 473 473 ! !--- tau_io/(v_oce - v_ice) 474 474 zTauO = zaV(ji,jj) * zrhoco * SQRT( ( v_ice (ji,jj) - v_oce (ji,jj) ) * ( v_ice (ji,jj) - v_oce (ji,jj) ) & … … 522 522 IF( ln_bdy ) CALL bdy_ice_dyn( 'V' ) 523 523 ! 524 DO_2D _00_00524 DO_2D( 0, 0, 0, 0 ) 525 525 ! !--- tau_io/(u_oce - u_ice) 526 526 zTauO = zaU(ji,jj) * zrhoco * SQRT( ( u_ice (ji,jj) - u_oce (ji,jj) ) * ( u_ice (ji,jj) - u_oce (ji,jj) ) & … … 576 576 ELSE ! odd iterations 577 577 ! 578 DO_2D _00_00578 DO_2D( 0, 0, 0, 0 ) 579 579 ! !--- tau_io/(u_oce - u_ice) 580 580 zTauO = zaU(ji,jj) * zrhoco * SQRT( ( u_ice (ji,jj) - u_oce (ji,jj) ) * ( u_ice (ji,jj) - u_oce (ji,jj) ) & … … 628 628 IF( ln_bdy ) CALL bdy_ice_dyn( 'U' ) 629 629 ! 630 DO_2D _00_00630 DO_2D( 0, 0, 0, 0 ) 631 631 ! !--- tau_io/(v_oce - v_ice) 632 632 zTauO = zaV(ji,jj) * zrhoco * SQRT( ( v_ice (ji,jj) - v_oce (ji,jj) ) * ( v_ice (ji,jj) - v_oce (ji,jj) ) & … … 693 693 ! 4) Recompute delta, shear and div (inputs for mechanical redistribution) 694 694 !------------------------------------------------------------------------------! 695 DO_2D _10_10695 DO_2D( 1, 0, 1, 0 ) 696 696 697 697 ! shear at F points … … 702 702 END_2D 703 703 704 DO_2D _00_00704 DO_2D( 0, 0, 0, 0 ) 705 705 706 706 ! tension**2 at T points … … 766 766 ALLOCATE( zsig1(jpi,jpj) , zsig2(jpi,jpj) , zsig3(jpi,jpj) ) 767 767 ! 768 DO_2D _00_00768 DO_2D( 0, 0, 0, 0 ) 769 769 zdum1 = ( zmsk00(ji-1,jj) * pstress12_i(ji-1,jj) + zmsk00(ji ,jj-1) * pstress12_i(ji ,jj-1) + & ! stress12_i at T-point 770 770 & zmsk00(ji ,jj) * pstress12_i(ji ,jj) + zmsk00(ji-1,jj-1) * pstress12_i(ji-1,jj-1) ) & … … 817 817 & zdiag_xmtrp_snw(jpi,jpj) , zdiag_ymtrp_snw(jpi,jpj) , zdiag_xatrp(jpi,jpj) , zdiag_yatrp(jpi,jpj) ) 818 818 ! 819 DO_2D _00_00819 DO_2D( 0, 0, 0, 0 ) 820 820 ! 2D ice mass, snow mass, area transport arrays (X, Y) 821 821 zfac_x = 0.5 * u_ice(ji,jj) * e2u(ji,jj) * zmsk00(ji,jj) … … 917 917 zresm = 0._wp 918 918 ELSE 919 DO_2D _11_11919 DO_2D( 1, 1, 1, 1 ) 920 920 zres(ji,jj) = MAX( ABS( pu(ji,jj) - pub(ji,jj) ) * umask(ji,jj,1), & 921 921 & ABS( pv(ji,jj) - pvb(ji,jj) ) * vmask(ji,jj,1) ) * zmsk15(ji,jj) -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/iceistate.F90
r13469 r13470 287 287 ! select ice covered grid points 288 288 npti = 0 ; nptidx(:) = 0 289 DO_2D _11_11289 DO_2D( 1, 1, 1, 1 ) 290 290 IF ( zht_i_ini(ji,jj) > 0._wp ) THEN 291 291 npti = npti + 1 … … 342 342 CALL ice_var_salprof ! for sz_i 343 343 DO jl = 1, jpl 344 DO_2D _11_11344 DO_2D( 1, 1, 1, 1 ) 345 345 v_i (ji,jj,jl) = h_i(ji,jj,jl) * a_i(ji,jj,jl) 346 346 v_s (ji,jj,jl) = h_s(ji,jj,jl) * a_i(ji,jj,jl) … … 350 350 ! 351 351 DO jl = 1, jpl 352 DO_3D _11_11(1, nlay_s )352 DO_3D( 1, 1, 1, 1, 1, nlay_s ) 353 353 t_s(ji,jj,jk,jl) = zts_3d(ji,jj,jl) 354 354 e_s(ji,jj,jk,jl) = zswitch(ji,jj) * v_s(ji,jj,jl) * r1_nlay_s * & … … 358 358 ! 359 359 DO jl = 1, jpl 360 DO_3D _11_11(1, nlay_i )360 DO_3D( 1, 1, 1, 1, 1, nlay_i ) 361 361 t_i (ji,jj,jk,jl) = zti_3d(ji,jj,jl) 362 362 ztmelts = - rTmlt * sz_i(ji,jj,jk,jl) + rt0 ! melting temperature in K -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/iceitd.F90
r13469 r13470 97 97 ! 98 98 npti = 0 ; nptidx(:) = 0 99 DO_2D _11_1199 DO_2D( 1, 1, 1, 1 ) 100 100 IF ( at_i(ji,jj) > epsi10 ) THEN 101 101 npti = npti + 1 … … 604 604 ! !--------------------------------------- 605 605 npti = 0 ; nptidx(:) = 0 606 DO_2D _11_11606 DO_2D( 1, 1, 1, 1 ) 607 607 IF( a_i(ji,jj,jl) > 0._wp .AND. v_i(ji,jj,jl) > (a_i(ji,jj,jl) * hi_max(jl)) ) THEN 608 608 npti = npti + 1 … … 643 643 ! !----------------------------------------- 644 644 npti = 0 ; nptidx(:) = 0 645 DO_2D _11_11645 DO_2D( 1, 1, 1, 1 ) 646 646 IF( a_i(ji,jj,jl+1) > 0._wp .AND. v_i(ji,jj,jl+1) <= (a_i(ji,jj,jl+1) * hi_max(jl)) ) THEN 647 647 npti = npti + 1 -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icesbc.F90
r13469 r13470 77 77 IF( ln_mixcpl) THEN ! Case of a mixed Bulk/Coupled formulation 78 78 CALL sbc_cpl_ice_tau( zutau_ice , zvtau_ice ) 79 DO_2D _00_0079 DO_2D( 0, 0, 0, 0 ) 80 80 utau_ice(ji,jj) = utau_ice(ji,jj) * xcplmask(ji,jj,0) + zutau_ice(ji,jj) * ( 1. - xcplmask(ji,jj,0) ) 81 81 vtau_ice(ji,jj) = vtau_ice(ji,jj) * xcplmask(ji,jj,0) + zvtau_ice(ji,jj) * ( 1. - xcplmask(ji,jj,0) ) -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icethd.F90
r13469 r13470 120 120 zu_io(:,:) = u_ice(:,:) - ssu_m(:,:) 121 121 zv_io(:,:) = v_ice(:,:) - ssv_m(:,:) 122 DO_2D _00_00122 DO_2D( 0, 0, 0, 0 ) 123 123 zfric(ji,jj) = rn_cio * ( 0.5_wp * & 124 124 & ( zu_io(ji,jj) * zu_io(ji,jj) + zu_io(ji-1,jj) * zu_io(ji-1,jj) & … … 126 126 END_2D 127 127 ELSE ! if no ice dynamics => transmit directly the atmospheric stress to the ocean 128 DO_2D _00_00128 DO_2D( 0, 0, 0, 0 ) 129 129 zfric(ji,jj) = r1_rau0 * SQRT( 0.5_wp * & 130 130 & ( utau(ji,jj) * utau(ji,jj) + utau(ji-1,jj) * utau(ji-1,jj) & … … 137 137 ! Partial computation of forcing for the thermodynamic sea ice model 138 138 !--------------------------------------------------------------------! 139 DO_2D _11_11139 DO_2D( 1, 1, 1, 1 ) 140 140 rswitch = tmask(ji,jj,1) * MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi10 ) ) ! 0 if no ice 141 141 ! … … 209 209 ! select ice covered grid points 210 210 npti = 0 ; nptidx(:) = 0 211 DO_2D _11_11211 DO_2D( 1, 1, 1, 1 ) 212 212 IF ( a_i(ji,jj,jl) > epsi10 ) THEN 213 213 npti = npti + 1 -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/iceupdate.F90
r13469 r13470 114 114 ENDIF 115 115 116 DO_2D _11_11116 DO_2D( 1, 1, 1, 1 ) 117 117 118 118 ! Solar heat flux reaching the ocean = zqsr (W.m-2) … … 333 333 ! 334 334 IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN !== Ice time-step only ==! (i.e. surface module time-step) 335 DO_2D _00_00335 DO_2D( 0, 0, 0, 0 ) 336 336 ! ! 2*(U_ice-U_oce) at T-point 337 337 zu_t = u_ice(ji,jj) + u_ice(ji-1,jj) - u_oce(ji,jj) - u_oce(ji-1,jj) … … 359 359 ENDIF 360 360 ! 361 DO_2D _00_00361 DO_2D( 0, 0, 0, 0 ) 362 362 ! ice area at u and v-points 363 363 zat_u = ( at_i(ji,jj) * tmask(ji,jj,1) + at_i (ji+1,jj ) * tmask(ji+1,jj ,1) ) & -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icevar.F90
r13469 r13470 263 263 zlay_i = REAL( nlay_i , wp ) ! number of layers 264 264 DO jl = 1, jpl 265 DO_3D _11_11(1, nlay_i )265 DO_3D( 1, 1, 1, 1, 1, nlay_i ) 266 266 IF ( v_i(ji,jj,jl) > epsi20 ) THEN !--- icy area 267 267 ! … … 368 368 z1_dS = 1._wp / ( zsi1 - zsi0 ) 369 369 DO jl = 1, jpl 370 DO_2D _11_11370 DO_2D( 1, 1, 1, 1 ) 371 371 zalpha(ji,jj,jl) = MAX( 0._wp , MIN( ( zsi1 - s_i(ji,jj,jl) ) * z1_dS , 1._wp ) ) 372 372 ! ! force a constant profile when SSS too low (Baltic Sea) … … 377 377 ! Computation of the profile 378 378 DO jl = 1, jpl 379 DO_3D _11_11(1, nlay_i )379 DO_3D( 1, 1, 1, 1, 1, nlay_i ) 380 380 ! ! linear profile with 0 surface value 381 381 zs0 = z_slope_s(ji,jj,jl) * ( REAL(jk,wp) - 0.5_wp ) * h_i(ji,jj,jl) * r1_nlay_i … … 507 507 ! Zap ice energy and use ocean heat to melt ice 508 508 !----------------------------------------------------------------- 509 DO_3D _11_11(1, nlay_i )509 DO_3D( 1, 1, 1, 1, 1, nlay_i ) 510 510 ! update exchanges with ocean 511 511 hfx_res(ji,jj) = hfx_res(ji,jj) - (1._wp - zswitch(ji,jj) ) * e_i(ji,jj,jk,jl) * r1_rdtice ! W.m-2 <0 … … 514 514 END_3D 515 515 ! 516 DO_3D _11_11(1, nlay_s )516 DO_3D( 1, 1, 1, 1, 1, nlay_s ) 517 517 ! update exchanges with ocean 518 518 hfx_res(ji,jj) = hfx_res(ji,jj) - (1._wp - zswitch(ji,jj) ) * e_s(ji,jj,jk,jl) * r1_rdtice ! W.m-2 <0 … … 524 524 ! zap ice and snow volume, add water and salt to ocean 525 525 !----------------------------------------------------------------- 526 DO_2D _11_11526 DO_2D( 1, 1, 1, 1 ) 527 527 ! update exchanges with ocean 528 528 sfx_res(ji,jj) = sfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * sv_i(ji,jj,jl) * rhoi * r1_rdtice … … 597 597 ! zap ice energy and send it to the ocean 598 598 !---------------------------------------- 599 DO_3D _11_11(1, nlay_i )599 DO_3D( 1, 1, 1, 1, 1, nlay_i ) 600 600 IF( pe_i(ji,jj,jk,jl) < 0._wp .OR. pa_i(ji,jj,jl) <= 0._wp ) THEN 601 601 hfx_res(ji,jj) = hfx_res(ji,jj) - pe_i(ji,jj,jk,jl) * z1_dt ! W.m-2 >0 … … 604 604 END_3D 605 605 ! 606 DO_3D _11_11(1, nlay_s )606 DO_3D( 1, 1, 1, 1, 1, nlay_s ) 607 607 IF( pe_s(ji,jj,jk,jl) < 0._wp .OR. pa_i(ji,jj,jl) <= 0._wp ) THEN 608 608 hfx_res(ji,jj) = hfx_res(ji,jj) - pe_s(ji,jj,jk,jl) * z1_dt ! W.m-2 <0 … … 614 614 ! zap ice and snow volume, add water and salt to ocean 615 615 !----------------------------------------------------- 616 DO_2D _11_11616 DO_2D( 1, 1, 1, 1 ) 617 617 IF( pv_i(ji,jj,jl) < 0._wp .OR. pa_i(ji,jj,jl) <= 0._wp ) THEN 618 618 wfx_res(ji,jj) = wfx_res(ji,jj) + pv_i (ji,jj,jl) * rhoi * z1_dt -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icewri.F90
r13469 r13470 69 69 70 70 ! tresholds for outputs 71 DO_2D _11_1171 DO_2D( 1, 1, 1, 1 ) 72 72 zmsk00(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) ! 1 if ice , 0 if no ice 73 73 zmsk05(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - 0.05_wp ) ) ! 1 if 5% ice , 0 if less … … 76 76 END_2D 77 77 DO jl = 1, jpl 78 DO_2D _11_1178 DO_2D( 1, 1, 1, 1 ) 79 79 zmsk00l(ji,jj,jl) = MAX( 0._wp , SIGN( 1._wp , a_i(ji,jj,jl) - epsi06 ) ) 80 80 zmsksnl(ji,jj,jl) = MAX( 0._wp , SIGN( 1._wp , v_s(ji,jj,jl) - epsi06 ) ) … … 130 130 ! 131 131 IF( iom_use('icevel') .OR. iom_use('fasticepres') ) THEN ! module of ice velocity 132 DO_2D _00_00132 DO_2D( 0, 0, 0, 0 ) 133 133 z2da = u_ice(ji,jj) + u_ice(ji-1,jj) 134 134 z2db = v_ice(ji,jj) + v_ice(ji,jj-1) -
NEMO/branches/2020/temporary_r4_trunk/src/OCE/DOM/domain.F90
r13469 r13470 140 140 ! Read in masks to define closed seas and lakes 141 141 ! 142 DO_2D _11_11142 DO_2D( 1, 1, 1, 1 ) 143 143 ik = mikt(ji,jj) 144 144 risfdep(ji,jj) = gdepw_0(ji,jj,ik) -
NEMO/branches/2020/temporary_r4_trunk/src/OCE/DYN/dynspg_ts.F90
r13469 r13470 253 253 IF( ln_wd_il ) THEN ! W/D : limiter applied to spgspg 254 254 CALL wad_spg( sshn, zcpx, zcpy ) ! Calculating W/D gravity filters, zcpx and zcpy 255 DO_2D _00_00255 DO_2D( 0, 0, 0, 0 ) 256 256 zu_trd(ji,jj) = zu_trd(ji,jj) - grav * ( sshn(ji+1,jj ) - sshn(ji ,jj ) ) & 257 257 & * r1_e1u(ji,jj) * zcpx(ji,jj) * wdrampu(ji,jj) !jth … … 260 260 END_2D 261 261 ELSE ! now suface pressure gradient 262 DO_2D _00_00262 DO_2D( 0, 0, 0, 0 ) 263 263 zu_trd(ji,jj) = zu_trd(ji,jj) - grav * ( sshn(ji+1,jj ) - sshn(ji ,jj ) ) * r1_e1u(ji,jj) 264 264 zv_trd(ji,jj) = zv_trd(ji,jj) - grav * ( sshn(ji ,jj+1) - sshn(ji ,jj ) ) * r1_e2v(ji,jj) … … 268 268 ENDIF 269 269 ! 270 DO_2D _00_00270 DO_2D( 0, 0, 0, 0 ) 271 271 zu_frc(ji,jj) = zu_frc(ji,jj) - zu_trd(ji,jj) * ssumask(ji,jj) 272 272 zv_frc(ji,jj) = zv_frc(ji,jj) - zv_trd(ji,jj) * ssvmask(ji,jj) … … 281 281 IF( ln_apr_dyn ) THEN 282 282 IF( ln_bt_fw ) THEN ! FORWARD integration: use kt+1/2 pressure (NOW+1/2) 283 DO_2D _00_00283 DO_2D( 0, 0, 0, 0 ) 284 284 zu_frc(ji,jj) = zu_frc(ji,jj) + grav * ( ssh_ib (ji+1,jj ) - ssh_ib (ji,jj) ) * r1_e1u(ji,jj) 285 285 zv_frc(ji,jj) = zv_frc(ji,jj) + grav * ( ssh_ib (ji ,jj+1) - ssh_ib (ji,jj) ) * r1_e2v(ji,jj) … … 287 287 ELSE ! CENTRED integration: use kt-1/2 + kt+1/2 pressure (NOW) 288 288 zztmp = grav * r1_2 289 DO_2D _00_00289 DO_2D( 0, 0, 0, 0 ) 290 290 zu_frc(ji,jj) = zu_frc(ji,jj) + zztmp * ( ssh_ib (ji+1,jj ) - ssh_ib (ji,jj) & 291 291 & + ssh_ibb(ji+1,jj ) - ssh_ibb(ji,jj) ) * r1_e1u(ji,jj) … … 299 299 ! ! ---------------------------------- ! 300 300 IF( ln_bt_fw ) THEN ! Add wind forcing 301 DO_2D _00_00301 DO_2D( 0, 0, 0, 0 ) 302 302 zu_frc(ji,jj) = zu_frc(ji,jj) + r1_rau0 * utau(ji,jj) * r1_hu_n(ji,jj) 303 303 zv_frc(ji,jj) = zv_frc(ji,jj) + r1_rau0 * vtau(ji,jj) * r1_hv_n(ji,jj) … … 305 305 ELSE 306 306 zztmp = r1_rau0 * r1_2 307 DO_2D _00_00307 DO_2D( 0, 0, 0, 0 ) 308 308 zu_frc(ji,jj) = zu_frc(ji,jj) + zztmp * ( utau_b(ji,jj) + utau(ji,jj) ) * r1_hu_n(ji,jj) 309 309 zv_frc(ji,jj) = zv_frc(ji,jj) + zztmp * ( vtau_b(ji,jj) + vtau(ji,jj) ) * r1_hv_n(ji,jj) … … 443 443 ! 444 444 ! ! ocean u- and v-depth at mid-step (separate DO-loops remove the need of a lbc_lnk) 445 DO_2D _11_10445 DO_2D( 1, 1, 1, 0 ) 446 446 zhup2_e(ji,jj) = hu_0(ji,jj) + r1_2 * r1_e1e2u(ji,jj) & 447 447 & * ( e1e2t(ji ,jj) * zsshp2_e(ji ,jj) & 448 448 & + e1e2t(ji+1,jj) * zsshp2_e(ji+1,jj) ) * ssumask(ji,jj) 449 449 END_2D 450 DO_2D _10_11450 DO_2D( 1, 0, 1, 1 ) 451 451 zhvp2_e(ji,jj) = hv_0(ji,jj) + r1_2 * r1_e1e2v(ji,jj) & 452 452 & * ( e1e2t(ji,jj ) * zsshp2_e(ji,jj ) & … … 508 508 !-- ssh = ssh - delta_t' * [ frc + div( flux ) ] --! 509 509 !-------------------------------------------------------------------------! 510 DO_2D _00_00510 DO_2D( 0, 0, 0, 0 ) 511 511 zhdiv = ( zhU(ji,jj) - zhU(ji-1,jj) + zhV(ji,jj) - zhV(ji,jj-1) ) * r1_e1e2t(ji,jj) 512 512 ssha_e(ji,jj) = ( sshn_e(ji,jj) - rdtbt * ( zssh_frc(ji,jj) + zhdiv ) ) * ssmask(ji,jj) … … 533 533 ! Sea Surface Height at u-,v-points (vvl case only) 534 534 IF( .NOT.ln_linssh ) THEN 535 DO_2D _00_00535 DO_2D( 0, 0, 0, 0 ) 536 536 zsshu_a(ji,jj) = r1_2 * ssumask(ji,jj) * r1_e1e2u(ji,jj) & 537 537 & * ( e1e2t(ji ,jj ) * ssha_e(ji ,jj ) & … … 553 553 ! ! Surface pressure gradient 554 554 zldg = ( 1._wp - rn_scal_load ) * grav ! local factor 555 DO_2D _00_00555 DO_2D( 0, 0, 0, 0 ) 556 556 zu_spg(ji,jj) = - zldg * ( zsshp2_e(ji+1,jj) - zsshp2_e(ji,jj) ) * r1_e1u(ji,jj) 557 557 zv_spg(ji,jj) = - zldg * ( zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj) ) * r1_e2v(ji,jj) … … 571 571 ! Add tidal astronomical forcing if defined 572 572 IF ( ln_tide .AND. ln_tide_pot ) THEN 573 DO_2D _00_00573 DO_2D( 0, 0, 0, 0 ) 574 574 zu_trd(ji,jj) = zu_trd(ji,jj) + grav * ( pot_astro(ji+1,jj) - pot_astro(ji,jj) ) * r1_e1u(ji,jj) 575 575 zv_trd(ji,jj) = zv_trd(ji,jj) + grav * ( pot_astro(ji,jj+1) - pot_astro(ji,jj) ) * r1_e2v(ji,jj) … … 580 580 !jth do implicitly instead 581 581 IF ( .NOT. ll_wd ) THEN ! Revert to explicit for bit comparison tests in non wad runs 582 DO_2D _00_00582 DO_2D( 0, 0, 0, 0 ) 583 583 zu_trd(ji,jj) = zu_trd(ji,jj) + zCdU_u(ji,jj) * un_e(ji,jj) * hur_e(ji,jj) 584 584 zv_trd(ji,jj) = zv_trd(ji,jj) + zCdU_v(ji,jj) * vn_e(ji,jj) * hvr_e(ji,jj) … … 598 598 !------------------------------------------------------------------------------------------------------------------------! 599 599 IF( ln_dynadv_vec .OR. ln_linssh ) THEN !* Vector form 600 DO_2D _00_00600 DO_2D( 0, 0, 0, 0 ) 601 601 ua_e(ji,jj) = ( un_e(ji,jj) & 602 602 & + rdtbt * ( zu_spg(ji,jj) & … … 613 613 ! 614 614 ELSE !* Flux form 615 DO_2D _00_00615 DO_2D( 0, 0, 0, 0 ) 616 616 ! ! hu_e, hv_e hold depth at jn, zhup2_e, zhvp2_e hold extrapolated depth at jn+1/2 617 617 ! ! backward interpolated depth used in spg terms at jn+1/2 … … 637 637 !jth implicit bottom friction: 638 638 IF ( ll_wd ) THEN ! revert to explicit for bit comparison tests in non wad runs 639 DO_2D _00_00639 DO_2D( 0, 0, 0, 0 ) 640 640 ua_e(ji,jj) = ua_e(ji,jj) /(1.0 - rdtbt * zCdU_u(ji,jj) * hur_e(ji,jj)) 641 641 va_e(ji,jj) = va_e(ji,jj) /(1.0 - rdtbt * zCdU_v(ji,jj) * hvr_e(ji,jj)) … … 703 703 IF (ln_bt_fw) THEN 704 704 IF( .NOT.( kt == nit000 .AND. neuler==0 ) ) THEN 705 DO_2D _11_11705 DO_2D( 1, 1, 1, 1 ) 706 706 zun_save = un_adv(ji,jj) 707 707 zvn_save = vn_adv(ji,jj) … … 734 734 ELSE 735 735 ! At this stage, ssha has been corrected: compute new depths at velocity points 736 DO_2D _10_10736 DO_2D( 1, 0, 1, 0 ) 737 737 zsshu_a(ji,jj) = r1_2 * ssumask(ji,jj) * r1_e1e2u(ji,jj) & 738 738 & * ( e1e2t(ji ,jj) * ssha(ji ,jj) & … … 969 969 ! Max courant number for ext. grav. waves 970 970 ! 971 DO_2D _11_11971 DO_2D( 1, 1, 1, 1 ) 972 972 zxr2 = r1_e1t(ji,jj) * r1_e1t(ji,jj) 973 973 zyr2 = r1_e2t(ji,jj) * r1_e2t(ji,jj) … … 1093 1093 SELECT CASE( nn_een_e3f ) !* ff_f/e3 at F-point 1094 1094 CASE ( 0 ) ! original formulation (masked averaging of e3t divided by 4) 1095 DO_2D _10_101095 DO_2D( 1, 0, 1, 0 ) 1096 1096 zwz(ji,jj) = ( ht_n(ji ,jj+1) + ht_n(ji+1,jj+1) + & 1097 1097 & ht_n(ji ,jj ) + ht_n(ji+1,jj ) ) * 0.25_wp … … 1099 1099 END_2D 1100 1100 CASE ( 1 ) ! new formulation (masked averaging of e3t divided by the sum of mask) 1101 DO_2D _10_101101 DO_2D( 1, 0, 1, 0 ) 1102 1102 zwz(ji,jj) = ( ht_n (ji ,jj+1) + ht_n (ji+1,jj+1) & 1103 1103 & + ht_n (ji ,jj ) + ht_n (ji+1,jj ) ) & … … 1110 1110 ! 1111 1111 ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp 1112 DO_2D _01_011112 DO_2D( 0, 1, 0, 1 ) 1113 1113 ftne(ji,jj) = zwz(ji-1,jj ) + zwz(ji ,jj ) + zwz(ji ,jj-1) 1114 1114 ftnw(ji,jj) = zwz(ji-1,jj-1) + zwz(ji-1,jj ) + zwz(ji ,jj ) … … 1119 1119 CASE( np_EET ) != EEN scheme using e3t (energy conserving scheme) 1120 1120 ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp 1121 DO_2D _01_011121 DO_2D( 0, 1, 0, 1 ) 1122 1122 z1_ht = ssmask(ji,jj) / ( ht_n(ji,jj) + 1._wp - ssmask(ji,jj) ) 1123 1123 ftne(ji,jj) = ( ff_f(ji-1,jj ) + ff_f(ji ,jj ) + ff_f(ji ,jj-1) ) * z1_ht … … 1152 1152 ! 1153 1153 !zhf(:,:) = hbatf(:,:) 1154 DO_2D _10_101154 DO_2D( 1, 0, 1, 0 ) 1155 1155 zhf(ji,jj) = ( ht_0 (ji,jj ) + ht_0 (ji+1,jj ) & 1156 1156 & + ht_0 (ji,jj+1) + ht_0 (ji+1,jj+1) ) & … … 1171 1171 CALL lbc_lnk( 'dynspg_ts', zhf, 'F', 1._wp ) 1172 1172 ! JC: TBC. hf should be greater than 0 1173 DO_2D _11_111173 DO_2D( 1, 1, 1, 1 ) 1174 1174 IF( zhf(ji,jj) /= 0._wp ) zwz(ji,jj) = 1._wp / zhf(ji,jj) 1175 1175 END_2D … … 1194 1194 SELECT CASE( nvor_scheme ) 1195 1195 CASE( np_ENT ) ! enstrophy conserving scheme (f-point) 1196 DO_2D _00_001196 DO_2D( 0, 0, 0, 0 ) 1197 1197 z1_hu = ssumask(ji,jj) / ( hu_n(ji,jj) + 1._wp - ssumask(ji,jj) ) 1198 1198 z1_hv = ssvmask(ji,jj) / ( hv_n(ji,jj) + 1._wp - ssvmask(ji,jj) ) … … 1207 1207 ! 1208 1208 CASE( np_ENE , np_MIX ) ! energy conserving scheme (t-point) ENE or MIX 1209 DO_2D _00_001209 DO_2D( 0, 0, 0, 0 ) 1210 1210 zy1 = ( zhV(ji,jj-1) + zhV(ji+1,jj-1) ) * r1_e1u(ji,jj) 1211 1211 zy2 = ( zhV(ji,jj ) + zhV(ji+1,jj ) ) * r1_e1u(ji,jj) … … 1218 1218 ! 1219 1219 CASE( np_ENS ) ! enstrophy conserving scheme (f-point) 1220 DO_2D _00_001220 DO_2D( 0, 0, 0, 0 ) 1221 1221 zy1 = r1_8 * ( zhV(ji ,jj-1) + zhV(ji+1,jj-1) & 1222 1222 & + zhV(ji ,jj ) + zhV(ji+1,jj ) ) * r1_e1u(ji,jj) … … 1228 1228 ! 1229 1229 CASE( np_EET , np_EEN ) ! energy & enstrophy scheme (using e3t or e3f) 1230 DO_2D _00_001230 DO_2D( 0, 0, 0, 0 ) 1231 1231 zu_trd(ji,jj) = + r1_12 * r1_e1u(ji,jj) * ( ftne(ji,jj ) * zhV(ji ,jj ) & 1232 1232 & + ftnw(ji+1,jj) * zhV(ji+1,jj ) & … … 1262 1262 ! 1263 1263 IF( ln_wd_dl_rmp ) THEN 1264 DO_2D _11_111264 DO_2D( 1, 1, 1, 1 ) 1265 1265 IF ( pssh(ji,jj) + ht_0(ji,jj) > 2._wp * rn_wdmin1 ) THEN 1266 1266 ! IF ( pssh(ji,jj) + ht_0(ji,jj) > rn_wdmin2 ) THEN … … 1273 1273 END_2D 1274 1274 ELSE 1275 DO_2D _11_111275 DO_2D( 1, 1, 1, 1 ) 1276 1276 IF ( pssh(ji,jj) + ht_0(ji,jj) > rn_wdmin1 ) THEN ; ptmsk(ji,jj) = 1._wp 1277 1277 ELSE ; ptmsk(ji,jj) = 0._wp … … 1301 1301 !!---------------------------------------------------------------------- 1302 1302 ! 1303 DO_2D _11_101303 DO_2D( 1, 1, 1, 0 ) 1304 1304 IF ( phU(ji,jj) > 0._wp ) THEN ; pUmsk(ji,jj) = pTmsk(ji ,jj) 1305 1305 ELSE ; pUmsk(ji,jj) = pTmsk(ji+1,jj) … … 1309 1309 END_2D 1310 1310 ! 1311 DO_2D _10_111311 DO_2D( 1, 0, 1, 1 ) 1312 1312 IF ( phV(ji,jj) > 0._wp ) THEN ; pVmsk(ji,jj) = pTmsk(ji,jj ) 1313 1313 ELSE ; pVmsk(ji,jj) = pTmsk(ji,jj+1) … … 1331 1331 REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: zcpx, zcpy 1332 1332 !!---------------------------------------------------------------------- 1333 DO_2D _00_001333 DO_2D( 0, 0, 0, 0 ) 1334 1334 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji+1,jj) ) > & 1335 1335 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) .AND. & … … 1397 1397 IF( ln_isfcav.OR.ln_drgice_imp ) THEN ! top+bottom friction (ocean cavities) 1398 1398 1399 DO_2D _00_001399 DO_2D( 0, 0, 0, 0 ) 1400 1400 pCdU_u(ji,jj) = r1_2*( rCdU_bot(ji+1,jj)+rCdU_bot(ji,jj) + rCdU_top(ji+1,jj)+rCdU_top(ji,jj) ) 1401 1401 pCdU_v(ji,jj) = r1_2*( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj) + rCdU_top(ji,jj+1)+rCdU_top(ji,jj) ) 1402 1402 END_2D 1403 1403 ELSE ! bottom friction only 1404 DO_2D _00_001404 DO_2D( 0, 0, 0, 0 ) 1405 1405 pCdU_u(ji,jj) = r1_2*( rCdU_bot(ji+1,jj)+rCdU_bot(ji,jj) ) 1406 1406 pCdU_v(ji,jj) = r1_2*( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj) ) … … 1412 1412 IF( ln_bt_fw ) THEN ! FORWARD integration: use NOW bottom baroclinic velocities 1413 1413 1414 DO_2D _00_001414 DO_2D( 0, 0, 0, 0 ) 1415 1415 ikbu = mbku(ji,jj) 1416 1416 ikbv = mbkv(ji,jj) … … 1420 1420 ELSE ! CENTRED integration: use BEFORE bottom baroclinic velocities 1421 1421 1422 DO_2D _00_001422 DO_2D( 0, 0, 0, 0 ) 1423 1423 ikbu = mbku(ji,jj) 1424 1424 ikbv = mbkv(ji,jj) … … 1430 1430 IF( ln_wd_il ) THEN ! W/D : use the "clipped" bottom friction !!gm explain WHY, please ! 1431 1431 zztmp = -1._wp / rdtbt 1432 DO_2D _00_001432 DO_2D( 0, 0, 0, 0 ) 1433 1433 pu_RHSi(ji,jj) = pu_RHSi(ji,jj) + zu_i(ji,jj) * wdrampu(ji,jj) * MAX( & 1434 1434 & r1_hu_n(ji,jj) * r1_2*( rCdU_bot(ji+1,jj)+rCdU_bot(ji,jj) ) , zztmp ) … … 1438 1438 ELSE ! use "unclipped" drag (even if explicit friction is used in 3D calculation) 1439 1439 1440 DO_2D _00_001440 DO_2D( 0, 0, 0, 0 ) 1441 1441 pu_RHSi(ji,jj) = pu_RHSi(ji,jj) + r1_hu_n(ji,jj) * r1_2*( rCdU_bot(ji+1,jj)+rCdU_bot(ji,jj) ) * zu_i(ji,jj) 1442 1442 pv_RHSi(ji,jj) = pv_RHSi(ji,jj) + r1_hv_n(ji,jj) * r1_2*( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj) ) * zv_i(ji,jj) … … 1450 1450 IF( ln_bt_fw ) THEN ! FORWARD integration: use NOW top baroclinic velocity 1451 1451 1452 DO_2D _00_001452 DO_2D( 0, 0, 0, 0 ) 1453 1453 iktu = miku(ji,jj) 1454 1454 iktv = mikv(ji,jj) … … 1458 1458 ELSE ! CENTRED integration: use BEFORE top baroclinic velocity 1459 1459 1460 DO_2D _00_001460 DO_2D( 0, 0, 0, 0 ) 1461 1461 iktu = miku(ji,jj) 1462 1462 iktv = mikv(ji,jj) … … 1468 1468 ! ! use "unclipped" top drag (even if explicit friction is used in 3D calculation) 1469 1469 1470 DO_2D _00_001470 DO_2D( 0, 0, 0, 0 ) 1471 1471 pu_RHSi(ji,jj) = pu_RHSi(ji,jj) + r1_hu_n(ji,jj) * r1_2*( rCdU_top(ji+1,jj)+rCdU_top(ji,jj) ) * zu_i(ji,jj) 1472 1472 pv_RHSi(ji,jj) = pv_RHSi(ji,jj) + r1_hv_n(ji,jj) * r1_2*( rCdU_top(ji,jj+1)+rCdU_top(ji,jj) ) * zv_i(ji,jj) -
NEMO/branches/2020/temporary_r4_trunk/src/OCE/DYN/dynzdf.F90
r13469 r13470 131 131 va(:,:,jk) = ( va(:,:,jk) - va_b(:,:) ) * vmask(:,:,jk) 132 132 END DO 133 DO_2D _00_00133 DO_2D( 0, 0, 0, 0 ) 134 134 iku = mbku(ji,jj) ! ocean bottom level at u- and v-points 135 135 ikv = mbkv(ji,jj) ! (deepest ocean u- and v-points) … … 140 140 END_2D 141 141 IF( ln_isfcav.OR.ln_drgice_imp ) THEN ! Ocean cavities (ISF) 142 DO_2D _00_00142 DO_2D( 0, 0, 0, 0 ) 143 143 iku = miku(ji,jj) ! top ocean level at u- and v-points 144 144 ikv = mikv(ji,jj) ! (first wet ocean u- and v-points) … … 158 158 SELECT CASE( nldf_dyn ) 159 159 CASE( np_lap_i ) ! rotated lateral mixing: add its vertical mixing (akzu) 160 DO_3D _00_00(1, jpkm1 )160 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 161 161 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,jk) + r_vvl * e3u_a(ji,jj,jk) ! after scale factor at U-point 162 162 zzwi = - zdt * ( avm(ji+1,jj,jk ) + avm(ji,jj,jk ) + akzu(ji,jj,jk ) ) & … … 171 171 END_3D 172 172 CASE DEFAULT ! iso-level lateral mixing 173 DO_3D _00_00(1, jpkm1 )173 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 174 174 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,jk) + r_vvl * e3u_a(ji,jj,jk) ! after scale factor at U-point 175 175 zzwi = - zdt * ( avm(ji+1,jj,jk ) + avm(ji,jj,jk ) ) / ( ze3ua * e3uw_n(ji,jj,jk ) ) * wumask(ji,jj,jk ) … … 182 182 END_3D 183 183 END SELECT 184 DO_2D _00_00184 DO_2D( 0, 0, 0, 0 ) 185 185 zwi(ji,jj,1) = 0._wp 186 186 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,1) + r_vvl * e3u_a(ji,jj,1) … … 193 193 SELECT CASE( nldf_dyn ) 194 194 CASE( np_lap_i ) ! rotated lateral mixing: add its vertical mixing (akzu) 195 DO_3D _00_00(1, jpkm1 )195 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 196 196 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,jk) + r_vvl * e3u_a(ji,jj,jk) ! after scale factor at U-point 197 197 zzwi = - zdt * ( avm(ji+1,jj,jk ) + avm(ji,jj,jk ) + akzu(ji,jj,jk ) ) & … … 204 204 END_3D 205 205 CASE DEFAULT ! iso-level lateral mixing 206 DO_3D _00_00(1, jpkm1 )206 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 207 207 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,jk) + r_vvl * e3u_a(ji,jj,jk) ! after scale factor at U-point 208 208 zzwi = - zdt * ( avm(ji+1,jj,jk ) + avm(ji,jj,jk ) ) / ( ze3ua * e3uw_n(ji,jj,jk ) ) * wumask(ji,jj,jk ) … … 213 213 END_3D 214 214 END SELECT 215 DO_2D _00_00215 DO_2D( 0, 0, 0, 0 ) 216 216 zwi(ji,jj,1) = 0._wp 217 217 zwd(ji,jj,1) = 1._wp - zws(ji,jj,1) … … 227 227 ! 228 228 IF ( ln_drgimp ) THEN ! implicit bottom friction 229 DO_2D _00_00229 DO_2D( 0, 0, 0, 0 ) 230 230 iku = mbku(ji,jj) ! ocean bottom level at u- and v-points 231 231 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,iku) + r_vvl * e3u_a(ji,jj,iku) ! after scale factor at T-point … … 233 233 END_2D 234 234 IF ( ln_isfcav.OR.ln_drgice_imp ) THEN ! top friction (always implicit) 235 DO_2D _00_00235 DO_2D( 0, 0, 0, 0 ) 236 236 !!gm top Cd is masked (=0 outside cavities) no need of test on mik>=2 ==>> it has been suppressed 237 237 iku = miku(ji,jj) ! ocean top level at u- and v-points … … 257 257 !----------------------------------------------------------------------- 258 258 ! 259 DO_3D _00_00(2, jpkm1 )259 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 260 260 zwd(ji,jj,jk) = zwd(ji,jj,jk) - zwi(ji,jj,jk) * zws(ji,jj,jk-1) / zwd(ji,jj,jk-1) 261 261 END_3D 262 262 ! 263 DO_2D _00_00263 DO_2D( 0, 0, 0, 0 ) 264 264 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,1) + r_vvl * e3u_a(ji,jj,1) 265 265 ua(ji,jj,1) = ua(ji,jj,1) + r2dt * 0.5_wp * ( utau_b(ji,jj) + utau(ji,jj) ) & 266 266 & / ( ze3ua * rau0 ) * umask(ji,jj,1) 267 267 END_2D 268 DO_3D _00_00(2, jpkm1 )268 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 269 269 ua(ji,jj,jk) = ua(ji,jj,jk) - zwi(ji,jj,jk) / zwd(ji,jj,jk-1) * ua(ji,jj,jk-1) 270 270 END_3D 271 271 ! 272 DO_2D _00_00272 DO_2D( 0, 0, 0, 0 ) 273 273 ua(ji,jj,jpkm1) = ua(ji,jj,jpkm1) / zwd(ji,jj,jpkm1) 274 274 END_2D 275 DO_3D _00_00(jpk-2, 1, -1 )275 DO_3D( 0, 0, 0, 0, jpk-2, 1, -1 ) 276 276 ua(ji,jj,jk) = ( ua(ji,jj,jk) - zws(ji,jj,jk) * ua(ji,jj,jk+1) ) / zwd(ji,jj,jk) 277 277 END_3D … … 284 284 SELECT CASE( nldf_dyn ) 285 285 CASE( np_lap_i ) ! rotated lateral mixing: add its vertical mixing (akzv) 286 DO_3D _00_00(1, jpkm1 )286 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 287 287 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,jk) + r_vvl * e3v_a(ji,jj,jk) ! after scale factor at V-point 288 288 zzwi = - zdt * ( avm(ji,jj+1,jk ) + avm(ji,jj,jk ) + akzv(ji,jj,jk ) ) & … … 297 297 END_3D 298 298 CASE DEFAULT ! iso-level lateral mixing 299 DO_3D _00_00(1, jpkm1 )299 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 300 300 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,jk) + r_vvl * e3v_a(ji,jj,jk) ! after scale factor at V-point 301 301 zzwi = - zdt * ( avm(ji,jj+1,jk ) + avm(ji,jj,jk ) ) / ( ze3va * e3vw_n(ji,jj,jk ) ) * wvmask(ji,jj,jk ) … … 308 308 END_3D 309 309 END SELECT 310 DO_2D _00_00310 DO_2D( 0, 0, 0, 0 ) 311 311 zwi(ji,jj,1) = 0._wp 312 312 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,1) + r_vvl * e3v_a(ji,jj,1) … … 319 319 SELECT CASE( nldf_dyn ) 320 320 CASE( np_lap_i ) ! rotated lateral mixing: add its vertical mixing (akzu) 321 DO_3D _00_00(1, jpkm1 )321 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 322 322 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,jk) + r_vvl * e3v_a(ji,jj,jk) ! after scale factor at V-point 323 323 zzwi = - zdt * ( avm(ji,jj+1,jk ) + avm(ji,jj,jk ) + akzv(ji,jj,jk ) ) & … … 330 330 END_3D 331 331 CASE DEFAULT ! iso-level lateral mixing 332 DO_3D _00_00(1, jpkm1 )332 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 333 333 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,jk) + r_vvl * e3v_a(ji,jj,jk) ! after scale factor at V-point 334 334 zzwi = - zdt * ( avm(ji,jj+1,jk ) + avm(ji,jj,jk ) ) / ( ze3va * e3vw_n(ji,jj,jk ) ) * wvmask(ji,jj,jk ) … … 339 339 END_3D 340 340 END SELECT 341 DO_2D _00_00341 DO_2D( 0, 0, 0, 0 ) 342 342 zwi(ji,jj,1) = 0._wp 343 343 zwd(ji,jj,1) = 1._wp - zws(ji,jj,1) … … 352 352 ! 353 353 IF( ln_drgimp ) THEN 354 DO_2D _00_00354 DO_2D( 0, 0, 0, 0 ) 355 355 ikv = mbkv(ji,jj) ! (deepest ocean u- and v-points) 356 356 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,ikv) + r_vvl * e3v_a(ji,jj,ikv) ! after scale factor at T-point … … 358 358 END_2D 359 359 IF ( ln_isfcav.OR.ln_drgice_imp ) THEN 360 DO_2D _00_00360 DO_2D( 0, 0, 0, 0 ) 361 361 ikv = mikv(ji,jj) ! (first wet ocean u- and v-points) 362 362 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,ikv) + r_vvl * e3v_a(ji,jj,ikv) ! after scale factor at T-point … … 381 381 !----------------------------------------------------------------------- 382 382 ! 383 DO_3D _00_00(2, jpkm1 )383 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 384 384 zwd(ji,jj,jk) = zwd(ji,jj,jk) - zwi(ji,jj,jk) * zws(ji,jj,jk-1) / zwd(ji,jj,jk-1) 385 385 END_3D 386 386 ! 387 DO_2D _00_00387 DO_2D( 0, 0, 0, 0 ) 388 388 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,1) + r_vvl * e3v_a(ji,jj,1) 389 389 va(ji,jj,1) = va(ji,jj,1) + r2dt * 0.5_wp * ( vtau_b(ji,jj) + vtau(ji,jj) ) & 390 390 & / ( ze3va * rau0 ) * vmask(ji,jj,1) 391 391 END_2D 392 DO_3D _00_00(2, jpkm1 )392 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 393 393 va(ji,jj,jk) = va(ji,jj,jk) - zwi(ji,jj,jk) / zwd(ji,jj,jk-1) * va(ji,jj,jk-1) 394 394 END_3D 395 395 ! 396 DO_2D _00_00396 DO_2D( 0, 0, 0, 0 ) 397 397 va(ji,jj,jpkm1) = va(ji,jj,jpkm1) / zwd(ji,jj,jpkm1) 398 398 END_2D 399 DO_3D _00_00(jpk-2, 1, -1 )399 DO_3D( 0, 0, 0, 0, jpk-2, 1, -1 ) 400 400 va(ji,jj,jk) = ( va(ji,jj,jk) - zws(ji,jj,jk) * va(ji,jj,jk+1) ) / zwd(ji,jj,jk) 401 401 END_3D -
NEMO/branches/2020/temporary_r4_trunk/src/OCE/SBC/sbc_oce.F90
r13469 r13470 209 209 !!--------------------------------------------------------------------- 210 210 zcoef = 0.5 / ( zrhoa * zcdrag ) 211 DO_2D _00_00211 DO_2D( 0, 0, 0, 0 ) 212 212 ztx = utau(ji-1,jj ) + utau(ji,jj) 213 213 zty = vtau(ji ,jj-1) + vtau(ji,jj) -
NEMO/branches/2020/temporary_r4_trunk/src/OCE/SBC/sbcblk.F90
r13469 r13470 408 408 #if defined key_cyclone 409 409 CALL wnd_cyc( kt, zwnd_i, zwnd_j ) ! add analytical tropical cyclone (Vincent et al. JGR 2012) 410 DO_2D _00_00410 DO_2D( 0, 0, 0, 0 ) 411 411 sf(jp_wndi)%fnow(ji,jj,1) = sf(jp_wndi)%fnow(ji,jj,1) + zwnd_i(ji,jj) 412 412 sf(jp_wndj)%fnow(ji,jj,1) = sf(jp_wndj)%fnow(ji,jj,1) + zwnd_j(ji,jj) 413 413 END_2D 414 414 #endif 415 DO_2D _00_00415 DO_2D( 0, 0, 0, 0 ) 416 416 zwnd_i(ji,jj) = ( sf(jp_wndi)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( pu(ji-1,jj ) + pu(ji,jj) ) ) 417 417 zwnd_j(ji,jj) = ( sf(jp_wndj)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( pv(ji ,jj-1) + pv(ji,jj) ) ) … … 470 470 !! CALL iom_put( "Ch_oce", Ch_atm) ! output value of pure ocean-atm. transfer coef. 471 471 472 DO_2D _11_11472 DO_2D( 1, 1, 1, 1 ) 473 473 zztmp = zrhoa(ji,jj) * zU_zu(ji,jj) * Cd_atm(ji,jj) ! using bulk wind speed 474 474 taum (ji,jj) = zztmp * wndm (ji,jj) … … 485 485 ! Note the use of 0.5*(2-umask) in order to unmask the stress along coastlines 486 486 ! Note the use of MAX(tmask(i,j),tmask(i+1,j) is to mask tau over ice shelves 487 DO_2D _10_10487 DO_2D( 1, 0, 1, 0 ) 488 488 utau(ji,jj) = 0.5 * ( 2. - umask(ji,jj,1) ) * ( zwnd_i(ji,jj) + zwnd_i(ji+1,jj ) ) & 489 489 & * MAX(tmask(ji,jj,1),tmask(ji+1,jj,1)) … … 625 625 !!---------------------------------------------------------------------------------- 626 626 ! 627 DO_2D _11_11627 DO_2D( 1, 1, 1, 1 ) 628 628 ! 629 629 ztmp = rt0 / ptak(ji,jj) … … 659 659 !!---------------------------------------------------------------------------------- 660 660 ! 661 DO_2D _11_11661 DO_2D( 1, 1, 1, 1 ) 662 662 zrv = pqa(ji,jj) / (1. - pqa(ji,jj)) 663 663 ziRT = 1. / (R_dry*ptak(ji,jj)) ! 1/RT … … 723 723 ! ------------------------------------------------------------ ! 724 724 ! C-grid ice dynamics : U & V-points (same as ocean) 725 DO_2D _00_00725 DO_2D( 0, 0, 0, 0 ) 726 726 zwndi_t = ( sf(jp_wndi)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( u_ice(ji-1,jj ) + u_ice(ji,jj) ) ) 727 727 zwndj_t = ( sf(jp_wndj)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( v_ice(ji ,jj-1) + v_ice(ji,jj) ) ) … … 749 749 ! ------------------------------------------------------------ ! 750 750 zztmp1 = rn_vfac * 0.5_wp 751 DO_2D _01_01751 DO_2D( 0, 1, 0, 1 ) 752 752 zztmp2 = zrhoa(ji,jj) * Cd_atm(ji,jj) * wndm_ice(ji,jj) 753 753 utau_ice(ji,jj) = zztmp2 * ( sf(jp_wndi)%fnow(ji,jj,1) - zztmp1 * ( u_ice(ji-1,jj ) + u_ice(ji,jj) ) ) … … 755 755 END_2D 756 756 ! 757 DO_2D _00_00757 DO_2D( 0, 0, 0, 0 ) 758 758 ! take care of the land-sea mask to avoid "pollution" of coastal stress. p[uv]taui used in frazil and rheology 759 759 zztmp1 = 0.5_wp * ( 2. - umask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji+1,jj ,1) ) … … 1007 1007 ! 1008 1008 DO jl = 1, jpl 1009 DO_2D _11_111009 DO_2D( 1, 1, 1, 1 ) 1010 1010 zhe = ( rn_cnd_s * phi(ji,jj,jl) + rcnd_i * phs(ji,jj,jl) ) * zfac ! Effective thickness 1011 1011 IF( zhe >= zfac2 ) zgfac(ji,jj,jl) = MIN( 2._wp, 0.5_wp * ( 1._wp + LOG( zhe * zfac3 ) ) ) ! Enhanced conduction factor … … 1022 1022 ! 1023 1023 DO jl = 1, jpl 1024 DO_2D _11_111024 DO_2D( 1, 1, 1, 1 ) 1025 1025 ! 1026 1026 zkeff_h = zfac * zgfac(ji,jj,jl) / & ! Effective conductivity of the snow-ice system divided by thickness … … 1173 1173 zqi_sat(:,:) = 0.98_wp * q_sat( ztm_su(:,:), sf(jp_slp)%fnow(:,:,1) ) ! saturation humidity over ice [kg/kg] 1174 1174 ! 1175 DO_2D _00_001175 DO_2D( 0, 0, 0, 0 ) 1176 1176 ! Virtual potential temperature [K] 1177 1177 zthetav_os = zst(ji,jj) * ( 1._wp + rctv0 * zqo_sat(ji,jj) ) ! over ocean -
NEMO/branches/2020/temporary_r4_trunk/src/OCE/SBC/sbcblk_algo_ncar.F90
r13469 r13470 214 214 !!---------------------------------------------------------------------------------- 215 215 ! 216 DO_2D _11_11216 DO_2D( 1, 1, 1, 1 ) 217 217 ! 218 218 zw = pw10(ji,jj) … … 279 279 REAL(wp) :: zzeta, zx2, zx, zpsi_unst, zpsi_stab, zstab ! local scalars 280 280 !!---------------------------------------------------------------------------------- 281 DO_2D _11_11281 DO_2D( 1, 1, 1, 1 ) 282 282 283 283 zzeta = pzeta(ji,jj) … … 318 318 !!---------------------------------------------------------------------------------- 319 319 ! 320 DO_2D _11_11320 DO_2D( 1, 1, 1, 1 ) 321 321 ! 322 322 zzeta = pzeta(ji,jj) … … 376 376 !!------------------------------------------------------------------- 377 377 ! 378 DO_2D _11_11378 DO_2D( 1, 1, 1, 1 ) 379 379 ! 380 380 zqa = (1._wp + rctv0*pqa(ji,jj)) -
NEMO/branches/2020/temporary_r4_trunk/src/OCE/SBC/sbccpl.F90
r13469 r13470 1193 1193 ! 1194 1194 IF( srcv(jpr_otx1)%clgrid == 'T' ) THEN 1195 DO_2D _00_001195 DO_2D( 0, 0, 0, 0 ) 1196 1196 frcv(jpr_otx1)%z3(ji,jj,1) = 0.5 * ( frcv(jpr_otx1)%z3(ji+1,jj ,1) + frcv(jpr_otx1)%z3(ji,jj,1) ) 1197 1197 frcv(jpr_oty1)%z3(ji,jj,1) = 0.5 * ( frcv(jpr_oty1)%z3(ji ,jj+1,1) + frcv(jpr_oty1)%z3(ji,jj,1) ) … … 1217 1217 ! => need to be done only when otx1 was changed 1218 1218 IF( llnewtx ) THEN 1219 DO_2D _00_001219 DO_2D( 0, 0, 0, 0 ) 1220 1220 zzx = frcv(jpr_otx1)%z3(ji-1,jj ,1) + frcv(jpr_otx1)%z3(ji,jj,1) 1221 1221 zzy = frcv(jpr_oty1)%z3(ji ,jj-1,1) + frcv(jpr_oty1)%z3(ji,jj,1) … … 1242 1242 IF( llnewtau ) THEN 1243 1243 zcoef = 1. / ( zrhoa * zcdrag ) 1244 DO_2D _11_111244 DO_2D( 1, 1, 1, 1 ) 1245 1245 frcv(jpr_w10m)%z3(ji,jj,1) = SQRT( frcv(jpr_taum)%z3(ji,jj,1) * zcoef ) 1246 1246 END_2D … … 1580 1580 p_tauj(:,:) = frcv(jpr_ity1)%z3(:,:,1) 1581 1581 CASE( 'T' ) 1582 DO_2D _00_001582 DO_2D( 0, 0, 0, 0 ) 1583 1583 ! take care of the land-sea mask to avoid "pollution" of coastal stress. p[uv]taui used in frazil and rheology 1584 1584 zztmp1 = 0.5_wp * ( 2. - umask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji+1,jj ,1) ) … … 2463 2463 SELECT CASE( TRIM( sn_snd_crt%cldes ) ) 2464 2464 CASE( 'oce only' ) ! C-grid ==> T 2465 DO_2D _00_002465 DO_2D( 0, 0, 0, 0 ) 2466 2466 zotx1(ji,jj) = 0.5 * ( uu(ji,jj,1,Nii) + uu(ji-1,jj ,1,Nii) ) 2467 2467 zoty1(ji,jj) = 0.5 * ( vv(ji,jj,1,Nii) + vv(ji ,jj-1,1,Nii) ) 2468 2468 END_2D 2469 2469 CASE( 'weighted oce and ice' ) ! Ocean and Ice on C-grid ==> T 2470 DO_2D _00_002470 DO_2D( 0, 0, 0, 0 ) 2471 2471 zotx1(ji,jj) = 0.5 * ( uu (ji,jj,1,Nii) + uu (ji-1,jj ,1,Nii) ) * zfr_l(ji,jj) 2472 2472 zoty1(ji,jj) = 0.5 * ( vv (ji,jj,1,Nii) + vv (ji ,jj-1,1,Nii) ) * zfr_l(ji,jj) … … 2476 2476 CALL lbc_lnk_multi( 'sbccpl', zitx1, 'T', -1., zity1, 'T', -1. ) 2477 2477 CASE( 'mixed oce-ice' ) ! Ocean and Ice on C-grid ==> T 2478 DO_2D _00_002478 DO_2D( 0, 0, 0, 0 ) 2479 2479 zotx1(ji,jj) = 0.5 * ( uu (ji,jj,1,Nii) + uu (ji-1,jj ,1,Nii) ) * zfr_l(ji,jj) & 2480 2480 & + 0.5 * ( u_ice(ji,jj ) + u_ice(ji-1,jj ) ) * fr_i(ji,jj) … … 2540 2540 SELECT CASE( TRIM( sn_snd_crtw%cldes ) ) 2541 2541 CASE( 'oce only' ) ! C-grid ==> T 2542 DO_2D _00_002542 DO_2D( 0, 0, 0, 0 ) 2543 2543 zotx1(ji,jj) = 0.5 * ( uu(ji,jj,1,Nii) + uu(ji-1,jj ,1,Nii) ) 2544 2544 zoty1(ji,jj) = 0.5 * ( vv(ji,jj,1,Nii) + vv(ji , jj-1,1,Nii) ) 2545 2545 END_2D 2546 2546 CASE( 'weighted oce and ice' ) ! Ocean and Ice on C-grid ==> T 2547 DO_2D _00_002547 DO_2D( 0, 0, 0, 0 ) 2548 2548 zotx1(ji,jj) = 0.5 * ( uu (ji,jj,1,Nii) + uu (ji-1,jj ,1,Nii) ) * zfr_l(ji,jj) 2549 2549 zoty1(ji,jj) = 0.5 * ( vv (ji,jj,1,Nii) + vv (ji ,jj-1,1,Nii) ) * zfr_l(ji,jj) … … 2553 2553 CALL lbc_lnk_multi( 'sbccpl', zitx1, 'T', -1., zity1, 'T', -1. ) 2554 2554 CASE( 'mixed oce-ice' ) ! Ocean and Ice on C-grid ==> T 2555 DO_2D _00_002555 DO_2D( 0, 0, 0, 0 ) 2556 2556 zotx1(ji,jj) = 0.5 * ( uu (ji,jj,1,Nii) + uu (ji-1,jj ,1,Nii) ) * zfr_l(ji,jj) & 2557 2557 & + 0.5 * ( u_ice(ji,jj ) + u_ice(ji-1,jj ) ) * fr_i(ji,jj) -
NEMO/branches/2020/temporary_r4_trunk/src/OCE/ZDF/zdfdrg.F90
r13469 r13470 115 115 ! 116 116 IF( l_log_not_linssh ) THEN !== "log layer" ==! compute Cd and -Cd*|U| 117 DO_2D _00_00117 DO_2D( 0, 0, 0, 0 ) 118 118 imk = k_mk(ji,jj) ! ocean bottom level at t-points 119 119 zut = uu(ji,jj,imk,Nii) + uu(ji-1,jj,imk,Nii) ! 2 x velocity at t-point … … 127 127 END_2D 128 128 ELSE !== standard Cd ==! 129 DO_2D _00_00129 DO_2D( 0, 0, 0, 0 ) 130 130 imk = k_mk(ji,jj) ! ocean bottom level at t-points 131 131 zut = uu(ji,jj,imk,Nii) + uu(ji-1,jj,imk,Nii) ! 2 x velocity at t-point … … 173 173 ENDIF 174 174 175 DO_2D _00_00175 DO_2D( 0, 0, 0, 0 ) 176 176 ikbu = mbku(ji,jj) ! deepest wet ocean u- & v-levels 177 177 ikbv = mbkv(ji,jj) … … 186 186 ! 187 187 IF( ln_isfcav ) THEN ! ocean cavities 188 DO_2D _00_00188 DO_2D( 0, 0, 0, 0 ) 189 189 ikbu = miku(ji,jj) ! first wet ocean u- & v-levels 190 190 ikbv = mikv(ji,jj) … … 434 434 l_log_not_linssh = .FALSE. !- don't update Cd at each time step 435 435 ! 436 DO_2D _11_11436 DO_2D( 1, 1, 1, 1 ) 437 437 zzz = 0.5_wp * e3t_0(ji,jj,k_mk(ji,jj)) 438 438 zcd = ( vkarmn / LOG( zzz / rn_z0 ) )**2 -
NEMO/branches/2020/temporary_r4_trunk/src/OCE/ZDF/zdfgls.F90
r13469 r13470 177 177 178 178 ! Compute surface, top and bottom friction at T-points 179 DO_2D _00_00179 DO_2D( 0, 0, 0, 0 ) 180 180 ustar2_surf(ji,jj) = r1_rau0 * taum(ji,jj) * tmask(ji,jj,1) 181 181 END_2D … … 184 184 ! 185 185 IF( .NOT.ln_drg_OFF ) THEN !== top/bottom friction (explicit before friction) 186 DO_2D _00_00186 DO_2D( 0, 0, 0, 0 ) 187 187 zmsku = ( 2._wp - umask(ji-1,jj,mbkt(ji,jj)) * umask(ji,jj,mbkt(ji,jj)) ) 188 188 zmskv = ( 2._wp - vmask(ji,jj-1,mbkt(ji,jj)) * vmask(ji,jj,mbkt(ji,jj)) ) ! (CAUTION: CdU<0) … … 191 191 END_2D 192 192 IF( ln_isfcav ) THEN !top friction 193 DO_2D _00_00193 DO_2D( 0, 0, 0, 0 ) 194 194 zmsku = ( 2._wp - umask(ji-1,jj,mikt(ji,jj)) * umask(ji,jj,mikt(ji,jj)) ) 195 195 zmskv = ( 2._wp - vmask(ji,jj-1,mikt(ji,jj)) * vmask(ji,jj,mikt(ji,jj)) ) ! (CAUTION: CdU<0) … … 218 218 zhsro(:,:) = ( (1._wp-zice_fra(:,:)) * zhsro(:,:) + zice_fra(:,:) * rn_hsri )*tmask(:,:,1) + (1._wp - tmask(:,:,1))*rn_hsro 219 219 ! 220 DO_3D _10_10(2, jpkm1 )220 DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 221 221 eps(ji,jj,jk) = rc03 * en(ji,jj,jk) * SQRT( en(ji,jj,jk) ) / hmxl_n(ji,jj,jk) 222 222 END_3D … … 227 227 228 228 IF( nn_clos == 0 ) THEN ! Mellor-Yamada 229 DO_3D _00_00(2, jpkm1 )229 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 230 230 zup = hmxl_n(ji,jj,jk) * gdepw_n(ji,jj,mbkt(ji,jj)+1) 231 231 zdown = vkarmn * gdepw_n(ji,jj,jk) * ( -gdepw_n(ji,jj,jk) + gdepw_n(ji,jj,mbkt(ji,jj)+1) ) … … 248 248 ! Warning : after this step, en : right hand side of the matrix 249 249 250 DO_3D _00_00(2, jpkm1 )250 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 251 251 ! 252 252 buoy = - p_avt(ji,jj,jk) * rn2(ji,jj,jk) ! stratif. destruction … … 342 342 ! ! en(ibot) = u*^2 / Co2 and hmxl_n(ibot) = rn_lmin 343 343 ! ! Balance between the production and the dissipation terms 344 DO_2D _00_00344 DO_2D( 0, 0, 0, 0 ) 345 345 !!gm This means that bottom and ocean w-level above have a specified "en" value. Sure ???? 346 346 !! With thick deep ocean level thickness, this may be quite large, no ??? … … 360 360 ! 361 361 IF( ln_isfcav) THEN ! top boundary (ocean cavity) 362 DO_2D _00_00362 DO_2D( 0, 0, 0, 0 ) 363 363 itop = mikt(ji,jj) ! k top w-point 364 364 itopp1 = mikt(ji,jj) + 1 ! k+1 1st w-point below the top one … … 378 378 CASE ( 1 ) ! Neumman boundary condition 379 379 ! 380 DO_2D _00_00380 DO_2D( 0, 0, 0, 0 ) 381 381 ibot = mbkt(ji,jj) + 1 ! k bottom level of w-point 382 382 ibotm1 = mbkt(ji,jj) ! k-1 bottom level of w-point but >=1 … … 392 392 END_2D 393 393 IF( ln_isfcav) THEN ! top boundary (ocean cavity) 394 DO_2D _00_00394 DO_2D( 0, 0, 0, 0 ) 395 395 itop = mikt(ji,jj) ! k top w-point 396 396 itopp1 = mikt(ji,jj) + 1 ! k+1 1st w-point below the top one … … 412 412 ! ---------------------------------------------------------- 413 413 ! 414 DO_3D _00_00(2, jpkm1 )414 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 415 415 zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 416 416 END_3D 417 DO_3D _00_00(2, jpk )417 DO_3D( 0, 0, 0, 0, 2, jpk ) 418 418 zd_lw(ji,jj,jk) = en(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) * zd_lw(ji,jj,jk-1) 419 419 END_3D 420 DO_3D _00_00(jpk-1, 2, -1 )420 DO_3D( 0, 0, 0, 0, jpk-1, 2, -1 ) 421 421 en(ji,jj,jk) = ( zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) * en(ji,jj,jk+1) ) / zdiag(ji,jj,jk) 422 422 END_3D … … 433 433 ! 434 434 CASE( 0 ) ! k-kl (Mellor-Yamada) 435 DO_3D _00_00(2, jpkm1 )435 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 436 436 psi(ji,jj,jk) = eb(ji,jj,jk) * hmxl_b(ji,jj,jk) 437 437 END_3D 438 438 ! 439 439 CASE( 1 ) ! k-eps 440 DO_3D _00_00(2, jpkm1 )440 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 441 441 psi(ji,jj,jk) = eps(ji,jj,jk) 442 442 END_3D 443 443 ! 444 444 CASE( 2 ) ! k-w 445 DO_3D _00_00(2, jpkm1 )445 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 446 446 psi(ji,jj,jk) = SQRT( eb(ji,jj,jk) ) / ( rc0 * hmxl_b(ji,jj,jk) ) 447 447 END_3D 448 448 ! 449 449 CASE( 3 ) ! generic 450 DO_3D _00_00(2, jpkm1 )450 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 451 451 psi(ji,jj,jk) = rc02 * eb(ji,jj,jk) * hmxl_b(ji,jj,jk)**rnn 452 452 END_3D … … 461 461 ! Warning : after this step, en : right hand side of the matrix 462 462 463 DO_3D _00_00(2, jpkm1 )463 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 464 464 ! 465 465 ! psi / k … … 557 557 ! ! en(ibot) = u*^2 / Co2 and hmxl_n(ibot) = vkarmn * r_z0_bot 558 558 ! ! Balance between the production and the dissipation terms 559 DO_2D _00_00559 DO_2D( 0, 0, 0, 0 ) 560 560 ibot = mbkt(ji,jj) + 1 ! k bottom level of w-point 561 561 ibotm1 = mbkt(ji,jj) ! k-1 bottom level of w-point but >=1 … … 576 576 CASE ( 1 ) ! Neumman boundary condition 577 577 ! 578 DO_2D _00_00578 DO_2D( 0, 0, 0, 0 ) 579 579 ibot = mbkt(ji,jj) + 1 ! k bottom level of w-point 580 580 ibotm1 = mbkt(ji,jj) ! k-1 bottom level of w-point but >=1 … … 604 604 ! ---------------- 605 605 ! 606 DO_3D _00_00(2, jpkm1 )606 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 607 607 zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 608 608 END_3D 609 DO_3D _00_00(2, jpk )609 DO_3D( 0, 0, 0, 0, 2, jpk ) 610 610 zd_lw(ji,jj,jk) = psi(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) * zd_lw(ji,jj,jk-1) 611 611 END_3D 612 DO_3D _00_00(jpk-1, 2, -1 )612 DO_3D( 0, 0, 0, 0, jpk-1, 2, -1 ) 613 613 psi(ji,jj,jk) = ( zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) * psi(ji,jj,jk+1) ) / zdiag(ji,jj,jk) 614 614 END_3D … … 620 620 ! 621 621 CASE( 0 ) ! k-kl (Mellor-Yamada) 622 DO_3D _00_00(1, jpkm1 )622 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 623 623 eps(ji,jj,jk) = rc03 * en(ji,jj,jk) * en(ji,jj,jk) * SQRT( en(ji,jj,jk) ) / MAX( psi(ji,jj,jk), rn_epsmin) 624 624 END_3D 625 625 ! 626 626 CASE( 1 ) ! k-eps 627 DO_3D _00_00(1, jpkm1 )627 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 628 628 eps(ji,jj,jk) = psi(ji,jj,jk) 629 629 END_3D 630 630 ! 631 631 CASE( 2 ) ! k-w 632 DO_3D _00_00(1, jpkm1 )632 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 633 633 eps(ji,jj,jk) = rc04 * en(ji,jj,jk) * psi(ji,jj,jk) 634 634 END_3D … … 638 638 zex1 = ( 1.5_wp + rmm/rnn ) 639 639 zex2 = -1._wp / rnn 640 DO_3D _00_00(1, jpkm1 )640 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 641 641 eps(ji,jj,jk) = zcoef * en(ji,jj,jk)**zex1 * psi(ji,jj,jk)**zex2 642 642 END_3D … … 646 646 ! Limit dissipation rate under stable stratification 647 647 ! -------------------------------------------------- 648 DO_3D _00_00(1, jpkm1 )648 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 649 649 ! limitation 650 650 eps (ji,jj,jk) = MAX( eps(ji,jj,jk), rn_epsmin ) … … 662 662 ! 663 663 CASE ( 0 , 1 ) ! Galperin or Kantha-Clayson stability functions 664 DO_3D _00_00(2, jpkm1 )664 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 665 665 ! zcof = l²/q² 666 666 zcof = hmxl_b(ji,jj,jk) * hmxl_b(ji,jj,jk) / ( 2._wp*eb(ji,jj,jk) ) … … 679 679 ! 680 680 CASE ( 2, 3 ) ! Canuto stability functions 681 DO_3D _00_00(2, jpkm1 )681 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 682 682 ! zcof = l²/q² 683 683 zcof = hmxl_b(ji,jj,jk)*hmxl_b(ji,jj,jk) / ( 2._wp * eb(ji,jj,jk) ) … … 711 711 ! default value, in case jpk > mbkt(ji,jj)+1. Not needed but avoid a bug when looking for undefined values (-fpe0) 712 712 zstm(:,:,jpk) = 0. 713 DO_2D _00_00713 DO_2D( 0, 0, 0, 0 ) 714 714 zstm(ji,jj,mbkt(ji,jj)+1) = zstm(ji,jj,mbkt(ji,jj)) 715 715 END_2D … … 726 726 ! later overwritten by surface/bottom boundaries conditions, so we don't really care of p_avm(:,:1) and p_avm(:,:jpk) 727 727 ! for zd_lw and zd_up but they have to be defined to avoid a bug when looking for undefined values (-fpe0) 728 DO_3D _00_00(1, jpk )728 DO_3D( 0, 0, 0, 0, 1, jpk ) 729 729 zsqen = SQRT( 2._wp * en(ji,jj,jk) ) * hmxl_n(ji,jj,jk) 730 730 zavt = zsqen * zstt(ji,jj,jk) -
NEMO/branches/2020/temporary_r4_trunk/src/OCE/ZDF/zdftke.F90
r13469 r13470 231 231 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 232 232 ! 233 DO_2D _00_00233 DO_2D( 0, 0, 0, 0 ) 234 234 !! clem: this should be the right formulation but it makes the model unstable unless drags are calculated implicitly 235 235 !! one way around would be to increase zbbirau … … 249 249 IF( .NOT.ln_drg_OFF ) THEN !== friction used as top/bottom boundary condition on TKE 250 250 ! 251 DO_2D _00_00251 DO_2D( 0, 0, 0, 0 ) 252 252 zmsku = ( 2. - umask(ji-1,jj,mbkt(ji,jj)) * umask(ji,jj,mbkt(ji,jj)) ) 253 253 zmskv = ( 2. - vmask(ji,jj-1,mbkt(ji,jj)) * vmask(ji,jj,mbkt(ji,jj)) ) … … 258 258 END_2D 259 259 IF( ln_isfcav ) THEN ! top friction 260 DO_2D _00_00260 DO_2D( 0, 0, 0, 0 ) 261 261 zmsku = ( 2. - umask(ji-1,jj,mikt(ji,jj)) * umask(ji,jj,mikt(ji,jj)) ) 262 262 zmskv = ( 2. - vmask(ji,jj-1,mikt(ji,jj)) * vmask(ji,jj,mikt(ji,jj)) ) … … 283 283 zcof = 0.5 * 0.016 * 0.016 / ( zrhoa * zcdrag ) 284 284 imlc(:,:) = mbkt(:,:) + 1 ! Initialization to the number of w ocean point (=2 over land) 285 DO_3D _11_11(jpkm1, 2, -1 )285 DO_3D( 1, 1, 1, 1, jpkm1, 2, -1 ) 286 286 zus = zcof * taum(ji,jj) 287 287 IF( zpelc(ji,jj,jk) > zus ) imlc(ji,jj) = jk 288 288 END_3D 289 289 ! ! finite LC depth 290 DO_2D _11_11290 DO_2D( 1, 1, 1, 1 ) 291 291 zhlc(ji,jj) = pdepw(ji,jj,imlc(ji,jj)) 292 292 END_2D 293 293 zcof = 0.016 / SQRT( zrhoa * zcdrag ) 294 DO_2D _00_00294 DO_2D( 0, 0, 0, 0 ) 295 295 zus = zcof * SQRT( taum(ji,jj) ) ! Stokes drift 296 296 zus3(ji,jj) = MAX( 0._wp, 1._wp - zice_fra(ji,jj) ) * zus * zus * zus * tmask(ji,jj,1) ! zus > 0. ok 297 297 END_2D 298 DO_3D _00_00(2, jpkm1 )298 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 299 299 IF ( zus3(ji,jj) /= 0._wp ) THEN 300 300 ! vertical velocity due to LC … … 318 318 ! 319 319 IF( nn_pdl == 1 ) THEN !* Prandtl number = F( Ri ) 320 DO_3D _00_00(2, jpkm1 )320 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 321 321 ! ! local Richardson number 322 322 zri = MAX( rn2b(ji,jj,jk), 0._wp ) * p_avm(ji,jj,jk) / ( p_sh2(ji,jj,jk) + rn_bshear ) … … 326 326 ENDIF 327 327 ! 328 DO_3D _00_00(2, jpkm1 )328 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 329 329 zcof = zfact1 * tmask(ji,jj,jk) 330 330 ! ! A minimum of 2.e-5 m2/s is imposed on TKE vertical … … 346 346 END_3D 347 347 ! !* Matrix inversion from level 2 (tke prescribed at level 1) 348 DO_3D _00_00(3, jpkm1 )348 DO_3D( 0, 0, 0, 0, 3, jpkm1 ) 349 349 zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 350 350 END_3D 351 DO_2D _00_00351 DO_2D( 0, 0, 0, 0 ) 352 352 zd_lw(ji,jj,2) = en(ji,jj,2) - zd_lw(ji,jj,2) * en(ji,jj,1) ! Surface boudary conditions on tke 353 353 END_2D 354 DO_3D _00_00(3, jpkm1 )354 DO_3D( 0, 0, 0, 0, 3, jpkm1 ) 355 355 zd_lw(ji,jj,jk) = en(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) *zd_lw(ji,jj,jk-1) 356 356 END_3D 357 DO_2D _00_00357 DO_2D( 0, 0, 0, 0 ) 358 358 en(ji,jj,jpkm1) = zd_lw(ji,jj,jpkm1) / zdiag(ji,jj,jpkm1) 359 359 END_2D 360 DO_3D _00_00(jpk-2, 2, -1 )360 DO_3D( 0, 0, 0, 0, jpk-2, 2, -1 ) 361 361 en(ji,jj,jk) = ( zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) * en(ji,jj,jk+1) ) / zdiag(ji,jj,jk) 362 362 END_3D 363 DO_3D _00_00(2, jpkm1 )363 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 364 364 en(ji,jj,jk) = MAX( en(ji,jj,jk), rn_emin ) * wmask(ji,jj,jk) 365 365 END_3D … … 373 373 374 374 IF( nn_etau == 1 ) THEN !* penetration below the mixed layer (rn_efr fraction) 375 DO_3D _00_00(2, jpkm1 )375 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 376 376 en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -pdepw(ji,jj,jk) / htau(ji,jj) ) & 377 377 & * MAX( 0._wp, 1._wp - zice_fra(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 378 378 END_3D 379 379 ELSEIF( nn_etau == 2 ) THEN !* act only at the base of the mixed layer (jk=nmln) (rn_efr fraction) 380 DO_2D _00_00380 DO_2D( 0, 0, 0, 0 ) 381 381 jk = nmln(ji,jj) 382 382 en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -pdepw(ji,jj,jk) / htau(ji,jj) ) & … … 384 384 END_2D 385 385 ELSEIF( nn_etau == 3 ) THEN !* penetration belox the mixed layer (HF variability) 386 DO_3D _00_00(2, jpkm1 )386 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 387 387 ztx2 = utau(ji-1,jj ) + utau(ji,jj) 388 388 zty2 = vtau(ji ,jj-1) + vtau(ji,jj) … … 459 459 zraug = vkarmn * 2.e5_wp / ( rau0 * grav ) 460 460 #if ! defined key_si3 && ! defined key_cice 461 DO_2D _00_00461 DO_2D( 0, 0, 0, 0 ) 462 462 zmxlm(ji,jj,1) = zraug * taum(ji,jj) * tmask(ji,jj,1) 463 463 END_2D … … 467 467 ! 468 468 CASE( 0 ) ! No scaling under sea-ice 469 DO_2D _00_00469 DO_2D( 0, 0, 0, 0 ) 470 470 zmxlm(ji,jj,1) = zraug * taum(ji,jj) * tmask(ji,jj,1) 471 471 END_2D 472 472 ! 473 473 CASE( 1 ) ! scaling with constant sea-ice thickness 474 DO_2D _00_00474 DO_2D( 0, 0, 0, 0 ) 475 475 zmxlm(ji,jj,1) = ( ( 1._wp - fr_i(ji,jj) ) * zraug * taum(ji,jj) + & 476 476 & fr_i(ji,jj) * rn_mxlice ) * tmask(ji,jj,1) … … 478 478 ! 479 479 CASE( 2 ) ! scaling with mean sea-ice thickness 480 DO_2D _00_00480 DO_2D( 0, 0, 0, 0 ) 481 481 #if defined key_si3 482 482 zmxlm(ji,jj,1) = ( ( 1._wp - fr_i(ji,jj) ) * zraug * taum(ji,jj) + & … … 490 490 ! 491 491 CASE( 3 ) ! scaling with max sea-ice thickness 492 DO_2D _00_00492 DO_2D( 0, 0, 0, 0 ) 493 493 zmaxice = MAXVAL( h_i(ji,jj,:) ) 494 494 zmxlm(ji,jj,1) = ( ( 1._wp - fr_i(ji,jj) ) * zraug * taum(ji,jj) + & … … 499 499 #endif 500 500 ! 501 DO_2D _00_00501 DO_2D( 0, 0, 0, 0 ) 502 502 zmxlm(ji,jj,1) = MAX( rn_mxl0, zmxlm(ji,jj,1) ) 503 503 END_2D … … 507 507 ENDIF 508 508 ! 509 DO_3D _00_00(2, jpkm1 )509 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 510 510 zrn2 = MAX( rn2(ji,jj,jk), rsmall ) 511 511 zmxlm(ji,jj,jk) = MAX( rmxl_min, SQRT( 2._wp * en(ji,jj,jk) / zrn2 ) ) … … 522 522 ! where wmask = 0 set zmxlm == p_e3w 523 523 CASE ( 0 ) ! bounded by the distance to surface and bottom 524 DO_3D _00_00(2, jpkm1 )524 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 525 525 zemxl = MIN( pdepw(ji,jj,jk) - pdepw(ji,jj,mikt(ji,jj)), zmxlm(ji,jj,jk), & 526 526 & pdepw(ji,jj,mbkt(ji,jj)+1) - pdepw(ji,jj,jk) ) … … 531 531 ! 532 532 CASE ( 1 ) ! bounded by the vertical scale factor 533 DO_3D _00_00(2, jpkm1 )533 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 534 534 zemxl = MIN( p_e3w(ji,jj,jk), zmxlm(ji,jj,jk) ) 535 535 zmxlm(ji,jj,jk) = zemxl … … 538 538 ! 539 539 CASE ( 2 ) ! |dk[xml]| bounded by e3t : 540 DO_3D _00_00(2, jpkm1 )540 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 541 541 zmxlm(ji,jj,jk) = MIN( zmxlm(ji,jj,jk-1) + p_e3t(ji,jj,jk-1), zmxlm(ji,jj,jk) ) 542 542 END_3D 543 DO_3D _00_00(jpkm1, 2, -1 )543 DO_3D( 0, 0, 0, 0, jpkm1, 2, -1 ) 544 544 zemxl = MIN( zmxlm(ji,jj,jk+1) + p_e3t(ji,jj,jk+1), zmxlm(ji,jj,jk) ) 545 545 zmxlm(ji,jj,jk) = zemxl … … 548 548 ! 549 549 CASE ( 3 ) ! lup and ldown, |dk[xml]| bounded by e3t : 550 DO_3D _00_00(2, jpkm1 )550 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 551 551 zmxld(ji,jj,jk) = MIN( zmxld(ji,jj,jk-1) + p_e3t(ji,jj,jk-1), zmxlm(ji,jj,jk) ) 552 552 END_3D 553 DO_3D _00_00(jpkm1, 2, -1 )553 DO_3D( 0, 0, 0, 0, jpkm1, 2, -1 ) 554 554 zmxlm(ji,jj,jk) = MIN( zmxlm(ji,jj,jk+1) + p_e3t(ji,jj,jk+1), zmxlm(ji,jj,jk) ) 555 555 END_3D 556 DO_3D _00_00(2, jpkm1 )556 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 557 557 zemlm = MIN ( zmxld(ji,jj,jk), zmxlm(ji,jj,jk) ) 558 558 zemlp = SQRT( zmxld(ji,jj,jk) * zmxlm(ji,jj,jk) ) … … 566 566 ! ! Vertical eddy viscosity and diffusivity (avm and avt) 567 567 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 568 DO_3D _00_00(1, jpkm1 )568 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 569 569 zsqen = SQRT( en(ji,jj,jk) ) 570 570 zav = rn_ediff * zmxlm(ji,jj,jk) * zsqen … … 576 576 ! 577 577 IF( nn_pdl == 1 ) THEN !* Prandtl number case: update avt 578 DO_3D _00_00(2, jpkm1 )578 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 579 579 p_avt(ji,jj,jk) = MAX( apdlr(ji,jj,jk) * p_avt(ji,jj,jk), avtb_2d(ji,jj) * avtb(jk) ) * wmask(ji,jj,jk) 580 580 END_3D -
NEMO/branches/2020/temporary_r4_trunk/src/TOP/PISCES/P4Z/p4zfechem.F90
r13469 r13470 89 89 ! Chemistry is supposed to be fast enough to be at equilibrium 90 90 ! ------------------------------------------------------------ 91 DO_3D _11_11(1, jpkm1 )91 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 92 92 zTL1(ji,jj,jk) = ztotlig(ji,jj,jk) 93 93 zkeq = fekeq(ji,jj,jk) … … 104 104 105 105 zdust = 0. ! if no dust available 106 DO_3D _11_11(1, jpkm1 )106 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 107 107 ! Scavenging rate of iron. This scavenging rate depends on the load of particles of sea water. 108 108 ! This parameterization assumes a simple second order kinetics (k[Particles][Fe]). … … 170 170 IF( ln_ligand ) THEN 171 171 ! 172 DO_3D _11_11(1, jpkm1 )172 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 173 173 zlam1a = ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 174 174 & + ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) -
NEMO/branches/2020/temporary_r4_trunk/src/TOP/PISCES/P4Z/p4zsbc.F90
r13469 r13470 126 126 CALL fld_read( kt, 1, sf_river ) 127 127 IF( ln_p4z ) THEN 128 DO_2D _11_11128 DO_2D( 1, 1, 1, 1 ) 129 129 zcoef = ryyss * e1e2t(ji,jj) * h_rnf(ji,jj) 130 130 rivalk(ji,jj) = sf_river(jr_dic)%fnow(ji,jj,1) & … … 142 142 END_2D 143 143 ELSE ! ln_p5z 144 DO_2D _11_11144 DO_2D( 1, 1, 1, 1 ) 145 145 zcoef = ryyss * e1e2t(ji,jj) * h_rnf(ji,jj) 146 146 rivalk(ji,jj) = sf_river(jr_dic)%fnow(ji,jj,1) & … … 407 407 IF(lwp) WRITE(numout,*) 408 408 IF(lwp) WRITE(numout,*) ' Level corresponding to 50m depth ', ik50,' ', gdept_1d(ik50+1) 409 DO_3D _00_00(1, ik50 )409 DO_3D( 0, 0, 0, 0, 1, ik50 ) 410 410 ze3t = e3t_0(ji,jj,jk) 411 411 zsurfc = e1u(ji,jj) * ( 1. - umask(ji ,jj ,jk) ) & … … 423 423 CALL lbc_lnk( 'p4zsbc', zcmask , 'T', 1. ) ! lateral boundary conditions on cmask (sign unchanged) 424 424 ! 425 DO_3D _11_11(1, jpk )425 DO_3D( 1, 1, 1, 1, 1, jpk ) 426 426 zexpide = MIN( 8.,( gdept_n(ji,jj,jk) / 500. )**(-1.5) ) 427 427 zdenitide = -0.9543 + 0.7662 * LOG( zexpide ) - 0.235 * LOG( zexpide )**2 -
NEMO/branches/2020/temporary_r4_trunk/src/TOP/PISCES/P4Z/p4zsms.F90
r13469 r13470 127 127 xnegtr(:,:,:) = 1.e0 128 128 DO jn = jp_pcs0, jp_pcs1 129 DO_3D _11_11(1, jpk )129 DO_3D( 1, 1, 1, 1, 1, jpk ) 130 130 IF( ( trb(ji,jj,jk,jn) + tra(ji,jj,jk,jn) ) < 0.e0 ) THEN 131 131 ztra = ABS( trb(ji,jj,jk,jn) ) / ( ABS( tra(ji,jj,jk,jn) ) + rtrn ) -
NEMO/branches/2020/temporary_r4_trunk/tests/CANAL/MY_SRC/diawri.F90
r13469 r13470 150 150 CALL iom_put( "sst", tsn(:,:,1,jp_tem) ) ! surface temperature 151 151 IF ( iom_use("sbt") ) THEN 152 DO_2D _11_11152 DO_2D( 1, 1, 1, 1 ) 153 153 ikbot = mbkt(ji,jj) 154 154 z2d(ji,jj) = tsn(ji,jj,ikbot,jp_tem) … … 160 160 CALL iom_put( "sss", tsn(:,:,1,jp_sal) ) ! surface salinity 161 161 IF ( iom_use("sbs") ) THEN 162 DO_2D _11_11162 DO_2D( 1, 1, 1, 1 ) 163 163 ikbot = mbkt(ji,jj) 164 164 z2d(ji,jj) = tsn(ji,jj,ikbot,jp_sal) … … 170 170 zztmp = rau0 * 0.25 171 171 z2d(:,:) = 0._wp 172 DO_2D _00_00172 DO_2D( 0, 0, 0, 0 ) 173 173 zztmp2 = ( ( rCdU_bot(ji+1,jj)+rCdU_bot(ji ,jj) ) * uu(ji ,jj,mbku(ji ,jj),Nii) )**2 & 174 174 & + ( ( rCdU_bot(ji ,jj)+rCdU_bot(ji-1,jj) ) * uu(ji-1,jj,mbku(ji-1,jj),Nii) )**2 & … … 185 185 CALL iom_put( "ssu", uu(:,:,1,Nii) ) ! surface i-current 186 186 IF ( iom_use("sbu") ) THEN 187 DO_2D _11_11187 DO_2D( 1, 1, 1, 1 ) 188 188 ikbot = mbku(ji,jj) 189 189 z2d(ji,jj) = uu(ji,jj,ikbot,Nii) … … 195 195 CALL iom_put( "ssv", vv(:,:,1,Nii) ) ! surface j-current 196 196 IF ( iom_use("sbv") ) THEN 197 DO_2D _11_11197 DO_2D( 1, 1, 1, 1 ) 198 198 ikbot = mbkv(ji,jj) 199 199 z2d(ji,jj) = vv(ji,jj,ikbot,Nii) … … 222 222 IF ( iom_use("socegrad") .OR. iom_use("socegrad2") ) THEN 223 223 z3d(:,:,jpk) = 0. 224 DO_3D _00_00(1, jpkm1 )224 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 225 225 zztmp = tsn(ji,jj,jk,jp_sal) 226 226 zztmpx = ( tsn(ji+1,jj,jk,jp_sal) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - tsn(ji-1,jj ,jk,jp_sal) ) * r1_e1u(ji-1,jj) … … 236 236 237 237 IF ( iom_use("sstgrad") .OR. iom_use("sstgrad2") ) THEN 238 DO_2D _00_00238 DO_2D( 0, 0, 0, 0 ) 239 239 zztmp = tsn(ji,jj,1,jp_tem) 240 240 zztmpx = ( tsn(ji+1,jj,1,jp_tem) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - tsn(ji-1,jj ,1,jp_tem) ) * r1_e1u(ji-1,jj) … … 252 252 IF( iom_use("heatc") ) THEN 253 253 z2d(:,:) = 0._wp 254 DO_3D _11_11(1, jpkm1 )254 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 255 255 z2d(ji,jj) = z2d(ji,jj) + e3t_n(ji,jj,jk) * tsn(ji,jj,jk,jp_tem) * tmask(ji,jj,jk) 256 256 END_3D … … 260 260 IF( iom_use("saltc") ) THEN 261 261 z2d(:,:) = 0._wp 262 DO_3D _11_11(1, jpkm1 )262 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 263 263 z2d(ji,jj) = z2d(ji,jj) + e3t_n(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk) 264 264 END_3D … … 268 268 IF( iom_use("salt2c") ) THEN 269 269 z2d(:,:) = 0._wp 270 DO_3D _11_11(1, jpkm1 )270 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 271 271 z2d(ji,jj) = z2d(ji,jj) + e3t_n(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) * tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk) 272 272 END_3D … … 276 276 IF ( iom_use("eken") .OR. iom_use("eken_int") ) THEN 277 277 z3d(:,:,jpk) = 0._wp 278 DO_3D _00_00(1, jpkm1 )278 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 279 279 zztmpx = 0.5 * ( uu(ji-1,jj ,jk,Nii) + uu(ji,jj,jk,Nii) ) 280 280 zztmpy = 0.5 * ( vv(ji ,jj-1,jk,Nii) + vv(ji,jj,jk,Nii) ) … … 285 285 286 286 z2d(:,:) = 0._wp 287 DO_3D _11_11(1, jpkm1 )287 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 288 288 z2d(ji,jj) = z2d(ji,jj) + e3t_n(ji,jj,jk) * z3d(ji,jj,jk) * e1e2t(ji,jj) * tmask(ji,jj,jk) 289 289 END_3D … … 296 296 297 297 z3d(:,:,jpk) = 0._wp 298 DO_3D _10_10(1, jpkm1 )298 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 299 299 z3d(ji,jj,jk) = ( e2v(ji+1,jj ) * vv(ji+1,jj ,jk,Nii) - e2v(ji,jj) * vv(ji,jj,jk,Nii) & 300 300 & - e1u(ji ,jj+1) * uu(ji ,jj+1,jk,Nii) + e1u(ji,jj) * uu(ji,jj,jk,Nii) ) * r1_e1e2f(ji,jj) … … 303 303 CALL iom_put( "relvor", z3d ) ! relative vorticity 304 304 305 DO_3D _11_11(1, jpkm1 )305 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 306 306 z3d(ji,jj,jk) = ff_f(ji,jj) + z3d(ji,jj,jk) 307 307 END_3D 308 308 CALL iom_put( "absvor", z3d ) ! absolute vorticity 309 309 310 DO_3D _10_10(1, jpkm1 )310 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 311 311 ze3 = ( e3t_n(ji,jj+1,jk)*tmask(ji,jj+1,jk) + e3t_n(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk) & 312 312 & + e3t_n(ji,jj ,jk)*tmask(ji,jj ,jk) + e3t_n(ji+1,jj ,jk)*tmask(ji+1,jj ,jk) ) … … 335 335 IF( iom_use("u_heattr") ) THEN 336 336 z2d(:,:) = 0._wp 337 DO_3D _00_00(1, jpkm1 )337 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 338 338 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) ) 339 339 END_3D … … 344 344 IF( iom_use("u_salttr") ) THEN 345 345 z2d(:,:) = 0.e0 346 DO_3D _00_00(1, jpkm1 )346 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 347 347 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) ) 348 348 END_3D … … 362 362 IF( iom_use("v_heattr") ) THEN 363 363 z2d(:,:) = 0.e0 364 DO_3D _00_00(1, jpkm1 )364 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 365 365 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) ) 366 366 END_3D … … 371 371 IF( iom_use("v_salttr") ) THEN 372 372 z2d(:,:) = 0._wp 373 DO_3D _00_00(1, jpkm1 )373 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 374 374 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_sal) + tsn(ji,jj+1,jk,jp_sal) ) 375 375 END_3D … … 380 380 IF( iom_use("tosmint") ) THEN 381 381 z2d(:,:) = 0._wp 382 DO_3D _00_00(1, jpkm1 )382 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 383 383 z2d(ji,jj) = z2d(ji,jj) + e3t_n(ji,jj,jk) * tsn(ji,jj,jk,jp_tem) 384 384 END_3D … … 388 388 IF( iom_use("somint") ) THEN 389 389 z2d(:,:)=0._wp 390 DO_3D _00_00(1, jpkm1 )390 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 391 391 z2d(ji,jj) = z2d(ji,jj) + e3t_n(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) 392 392 END_3D -
NEMO/branches/2020/temporary_r4_trunk/tests/CANAL/MY_SRC/usrdef_istate.F90
r13469 r13470 201 201 CASE(4) ! geostrophic zonal pulse 202 202 203 DO_2D _11_11203 DO_2D( 1, 1, 1, 1 ) 204 204 IF ( ABS(glamt(ji,jj)) <= zjetx ) THEN 205 205 zdu = rn_uzonal … … 236 236 zP0 = rau0 * zf0 * zumax * zlambda * SQRT(EXP(1._wp)/2._wp) 237 237 ! 238 DO_2D _11_11238 DO_2D( 1, 1, 1, 1 ) 239 239 zx = glamt(ji,jj) * 1.e3 240 240 zy = gphit(ji,jj) * 1.e3 … … 267 267 ! velocities: 268 268 za = 2._wp * zP0 / zlambda**2 269 DO_2D _00_00269 DO_2D( 0, 0, 0, 0 ) 270 270 zx = glamu(ji,jj) * 1.e3 271 271 zy = gphiu(ji,jj) * 1.e3 … … 282 282 END_2D 283 283 ! 284 DO_2D _00_00284 DO_2D( 0, 0, 0, 0 ) 285 285 zx = glamv(ji,jj) * 1.e3 286 286 zy = gphiv(ji,jj) * 1.e3
Note: See TracChangeset
for help on using the changeset viewer.