Changeset 15003
- Timestamp:
- 2021-06-16T12:21:35+02:00 (3 years ago)
- Location:
- NEMO/branches/2021/ticket2690_consign_isf
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/ticket2690_consign_isf
- Property svn:externals
-
old new 9 9 10 10 # SETTE 11 ^/utils/CI/sette@14244 sette 11 ^/utils/CI/sette@HEAD sette 12
-
- Property svn:externals
-
NEMO/branches/2021/ticket2690_consign_isf/src/ICE/icealb.F90
r13472 r15003 124 124 ! 125 125 DO jl = 1, jpl 126 DO_2D( 1, 1, 1, 1 )126 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) ! palb_ice used over the full domain in icesbc 127 127 ! 128 128 !---------------------------------------------! -
NEMO/branches/2021/ticket2690_consign_isf/src/ICE/icecor.F90
r14433 r15003 91 91 zzc = rhoi * r1_Dt_ice 92 92 DO jl = 1, jpl 93 DO_2D( 1, 1, 1, 1)93 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 94 94 zsal = sv_i(ji,jj,jl) 95 95 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) ) -
NEMO/branches/2021/ticket2690_consign_isf/src/ICE/icectl.F90
r14595 r15003 391 391 cl_alname(ialert_id) = ' Very high salinity ' ! name of the alert 392 392 DO jl = 1, jpl 393 DO_2D( 1, 1, 1, 1)393 DO_2D( 0, 0, 0, 0 ) 394 394 IF( v_i(ji,jj,jl) > epsi10 ) THEN 395 395 IF( sv_i(ji,jj,jl) / v_i(ji,jj,jl) > rn_simax ) THEN … … 406 406 cl_alname(ialert_id) = ' Very low salinity ' ! name of the alert 407 407 DO jl = 1, jpl 408 DO_2D( 1, 1, 1, 1)408 DO_2D( 0, 0, 0, 0 ) 409 409 IF( v_i(ji,jj,jl) > epsi10 ) THEN 410 410 IF( sv_i(ji,jj,jl) / v_i(ji,jj,jl) < rn_simin ) THEN … … 421 421 cl_alname(ialert_id) = ' Very cold ice ' ! name of the alert 422 422 DO jl = 1, jpl 423 DO_3D( 1, 1, 1, 1, 1, nlay_i )423 DO_3D( 0, 0, 0, 0, 1, nlay_i ) 424 424 ztmelts = -rTmlt * sz_i(ji,jj,jk,jl) + rt0 425 425 IF( t_i(ji,jj,jk,jl) < -50.+rt0 .AND. v_i(ji,jj,jl) > epsi10 ) THEN … … 435 435 cl_alname(ialert_id) = ' Very warm ice ' ! name of the alert 436 436 DO jl = 1, jpl 437 DO_3D( 1, 1, 1, 1, 1, nlay_i )437 DO_3D( 0, 0, 0, 0, 1, nlay_i ) 438 438 ztmelts = -rTmlt * sz_i(ji,jj,jk,jl) + rt0 439 439 IF( t_i(ji,jj,jk,jl) > ztmelts .AND. v_i(ji,jj,jl) > epsi10 ) THEN … … 449 449 cl_alname(ialert_id) = ' Very thick ice ' ! name of the alert 450 450 jl = jpl 451 DO_2D( 1, 1, 1, 1)451 DO_2D( 0, 0, 0, 0 ) 452 452 IF( h_i(ji,jj,jl) > 50._wp ) THEN 453 453 WRITE(numout,*) ' ALERTE : Very thick ice ',h_i(ji,jj,jl) … … 461 461 cl_alname(ialert_id) = ' Very thin ice ' ! name of the alert 462 462 jl = 1 463 DO_2D( 1, 1, 1, 1)463 DO_2D( 0, 0, 0, 0 ) 464 464 IF( h_i(ji,jj,jl) < rn_himin ) THEN 465 465 WRITE(numout,*) ' ALERTE : Very thin ice ',h_i(ji,jj,jl) … … 472 472 ialert_id = ialert_id + 1 ! reference number of this alert 473 473 cl_alname(ialert_id) = ' Very fast ice ' ! name of the alert 474 DO_2D( 1, 1, 1, 1)474 DO_2D( 0, 0, 0, 0 ) 475 475 IF( MAX( ABS( u_ice(ji,jj) ), ABS( v_ice(ji,jj) ) ) > 2. ) THEN 476 476 WRITE(numout,*) ' ALERTE : Very fast ice ',MAX( ABS( u_ice(ji,jj) ), ABS( v_ice(ji,jj) ) ) … … 483 483 ialert_id = ialert_id + 1 ! reference number of this alert 484 484 cl_alname(ialert_id) = ' Ice on continents ' ! name of the alert 485 DO_2D( 1, 1, 1, 1)485 DO_2D( 0, 0, 0, 0 ) 486 486 IF( tmask(ji,jj,1) == 0._wp .AND. ( at_i(ji,jj) > 0._wp .OR. vt_i(ji,jj) > 0._wp ) ) THEN 487 487 WRITE(numout,*) ' ALERTE : Ice on continents ',at_i(ji,jj),vt_i(ji,jj) … … 494 494 ialert_id = ialert_id + 1 ! reference number of this alert 495 495 cl_alname(ialert_id) = ' Incompatible ice conc and vol ' ! name of the alert 496 DO_2D( 1, 1, 1, 1)496 DO_2D( 0, 0, 0, 0 ) 497 497 IF( ( vt_i(ji,jj) == 0._wp .AND. at_i(ji,jj) > 0._wp ) .OR. & 498 498 & ( vt_i(ji,jj) > 0._wp .AND. at_i(ji,jj) == 0._wp ) ) THEN … … 775 775 ! 2D budgets (must be close to 0) 776 776 IF( iom_use('icedrift_mass') .OR. iom_use('icedrift_salt') .OR. iom_use('icedrift_heat') ) THEN 777 DO_2D( 1, 1, 1, 1)777 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 778 778 zdiag_mass2D(ji,jj) = wfx_ice(ji,jj) + wfx_snw(ji,jj) + wfx_spr(ji,jj) + wfx_sub(ji,jj) + wfx_pnd(ji,jj) & 779 779 & + diag_vice(ji,jj) + diag_vsnw(ji,jj) + diag_vpnd(ji,jj) - diag_adv_mass(ji,jj) -
NEMO/branches/2021/ticket2690_consign_isf/src/ICE/icedyn.F90
r14072 r15003 135 135 ! CFL = 0.5 at a distance from the bound of 1/6 of the basin length 136 136 ! Then for dx = 2m and dt = 1s => rn_uice = u (1/6th) = 1m/s 137 DO_2D( 1, 1, 1, 1)137 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 138 138 zcoefu = ( REAL(jpiglo+1)*0.5_wp - REAL(ji+nimpp-1) ) / ( REAL(jpiglo+1)*0.5_wp - 1._wp ) 139 139 zcoefv = ( REAL(jpjglo+1)*0.5_wp - REAL(jj+njmpp-1) ) / ( REAL(jpjglo+1)*0.5_wp - 1._wp ) -
NEMO/branches/2021/ticket2690_consign_isf/src/ICE/icedyn_rdgrft.F90
r14072 r15003 162 162 npti = 0 ; nptidx(:) = 0 163 163 ipti = 0 ; iptidx(:) = 0 164 DO_2D( 1, 1, 1, 1)164 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 165 165 IF ( at_i(ji,jj) > epsi10 ) THEN 166 166 npti = npti + 1 -
NEMO/branches/2021/ticket2690_consign_isf/src/ICE/iceistate.F90
r14143 r15003 308 308 ! select ice covered grid points 309 309 npti = 0 ; nptidx(:) = 0 310 DO_2D( 1, 1, 1, 1)310 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 311 311 IF ( zht_i_ini(ji,jj) > 0._wp ) THEN 312 312 npti = npti + 1 … … 363 363 CALL ice_var_salprof ! for sz_i 364 364 DO jl = 1, jpl 365 DO_2D( 1, 1, 1, 1)365 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 366 366 v_i (ji,jj,jl) = h_i(ji,jj,jl) * a_i(ji,jj,jl) 367 367 v_s (ji,jj,jl) = h_s(ji,jj,jl) * a_i(ji,jj,jl) … … 371 371 ! 372 372 DO jl = 1, jpl 373 DO_3D( 1, 1, 1, 1, 1, nlay_s )373 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nlay_s ) 374 374 t_s(ji,jj,jk,jl) = zts_3d(ji,jj,jl) 375 375 e_s(ji,jj,jk,jl) = zswitch(ji,jj) * v_s(ji,jj,jl) * r1_nlay_s * & … … 379 379 ! 380 380 DO jl = 1, jpl 381 DO_3D( 1, 1, 1, 1, 1, nlay_i )381 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nlay_i ) 382 382 t_i (ji,jj,jk,jl) = zti_3d(ji,jj,jl) 383 383 ztmelts = - rTmlt * sz_i(ji,jj,jk,jl) + rt0 ! melting temperature in K -
NEMO/branches/2021/ticket2690_consign_isf/src/ICE/iceitd.F90
r14072 r15003 101 101 ! 102 102 npti = 0 ; nptidx(:) = 0 103 DO_2D( 1, 1, 1, 1)103 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 104 104 IF ( at_i(ji,jj) > epsi10 ) THEN 105 105 npti = npti + 1 … … 624 624 ! !--------------------------------------- 625 625 npti = 0 ; nptidx(:) = 0 626 DO_2D( 1, 1, 1, 1)626 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 627 627 IF( a_i(ji,jj,jl) > 0._wp .AND. v_i(ji,jj,jl) > (a_i(ji,jj,jl) * hi_max(jl)) ) THEN 628 628 npti = npti + 1 … … 660 660 ! !----------------------------------------- 661 661 npti = 0 ; nptidx(:) = 0 662 DO_2D( 1, 1, 1, 1)662 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 663 663 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 664 664 npti = npti + 1 -
NEMO/branches/2021/ticket2690_consign_isf/src/ICE/icestp.F90
r14886 r15003 404 404 !!---------------------------------------------------------------------- 405 405 406 DO_2D( 1, 1, 1, 1 )406 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) ! needed for (at least) diag_adv_mass -> to be removed 407 407 sfx (ji,jj) = 0._wp ; 408 408 sfx_bri(ji,jj) = 0._wp ; sfx_lam(ji,jj) = 0._wp … … 452 452 453 453 DO jl = 1, jpl 454 DO_2D( 1, 1, 1, 1)454 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 455 455 ! SIMIP diagnostics 456 456 t_si (ji,jj,jl) = rt0 ! temp at the ice-snow interface -
NEMO/branches/2021/ticket2690_consign_isf/src/ICE/icethd.F90
r14886 r15003 141 141 ! Partial computation of forcing for the thermodynamic sea ice model 142 142 !--------------------------------------------------------------------! 143 DO_2D( 1, 1, 1, 1 )143 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) ! needed for qlead 144 144 rswitch = tmask(ji,jj,1) * MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi10 ) ) ! 0 if no ice 145 145 ! … … 226 226 ! select ice covered grid points 227 227 npti = 0 ; nptidx(:) = 0 228 DO_2D( 1, 1, 1, 1)228 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 229 229 IF ( a_i(ji,jj,jl) > epsi10 ) THEN 230 230 npti = npti + 1 -
NEMO/branches/2021/ticket2690_consign_isf/src/ICE/icethd_do.F90
r14433 r15003 204 204 ! Identify grid points where new ice forms 205 205 npti = 0 ; nptidx(:) = 0 206 DO_2D( 1, 1, 1, 1)206 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 207 207 IF ( qlead(ji,jj) < 0._wp ) THEN 208 208 npti = npti + 1 -
NEMO/branches/2021/ticket2690_consign_isf/src/ICE/icethd_pnd.F90
r14252 r15003 99 99 ! 100 100 DO jl = 1, jpl 101 DO_2D( 1, 1, 1, 1)101 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 102 102 IF( v_i(ji,jj,jl) < epsi10 .OR. at_i(ji,jj) < epsi10 ) THEN 103 103 wfx_pnd (ji,jj) = wfx_pnd(ji,jj) + ( v_ip(ji,jj,jl) + v_il(ji,jj,jl) ) * rhow * r1_Dt_ice … … 116 116 !------------------------------ 117 117 npti = 0 ; nptidx(:) = 0 118 DO_2D( 1, 1, 1, 1)118 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 119 119 IF( at_i(ji,jj) >= epsi10 ) THEN 120 120 npti = npti + 1 … … 590 590 591 591 DO jl = 1, jpl 592 DO_2D( 1, 1, 1, 1)592 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 593 593 594 594 IF ( a_i(ji,jj,jl) > epsi10 ) THEN … … 638 638 IF( ln_pnd_lids ) THEN 639 639 640 DO_2D( 1, 1, 1, 1)640 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 641 641 642 642 IF ( at_i(ji,jj) > 0.01 .AND. hm_i(ji,jj) > rn_himin .AND. zvolp_ini(ji,jj) > zvp_min * at_i(ji,jj) ) THEN … … 765 765 DO jl = 1, jpl 766 766 767 DO_2D( 1, 1, 1, 1)767 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 768 768 769 769 ! ! zap lids on small ponds … … 869 869 h_ip(:,:,:) = 0._wp 870 870 871 DO_2D( 1, 1, 1, 1)871 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 872 872 873 873 IF ( at_i(ji,jj) > 0.01 .AND. hm_i(ji,jj) > rn_himin .AND. zvolp(ji,jj) > zvp_min * at_i(ji,jj) ) THEN -
NEMO/branches/2021/ticket2690_consign_isf/src/ICE/iceupdate.F90
r14718 r15003 120 120 ENDIF 121 121 122 DO_2D( 1, 1, 1, 1)122 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 123 123 124 124 ! Solar heat flux reaching the ocean (max) = zqsr (W.m-2) -
NEMO/branches/2021/ticket2690_consign_isf/src/ICE/icevar.F90
r14072 r15003 271 271 zlay_i = REAL( nlay_i , wp ) ! number of layers 272 272 DO jl = 1, jpl 273 DO_3D( 1, 1, 1, 1, 1, nlay_i )273 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nlay_i ) 274 274 IF ( v_i(ji,jj,jl) > epsi20 ) THEN !--- icy area 275 275 ! … … 376 376 z1_dS = 1._wp / ( zsi1 - zsi0 ) 377 377 DO jl = 1, jpl 378 DO_2D( 1, 1, 1, 1)378 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 379 379 zalpha(ji,jj,jl) = MAX( 0._wp , MIN( ( zsi1 - s_i(ji,jj,jl) ) * z1_dS , 1._wp ) ) 380 380 ! ! force a constant profile when SSS too low (Baltic Sea) … … 385 385 ! Computation of the profile 386 386 DO jl = 1, jpl 387 DO_3D( 1, 1, 1, 1, 1, nlay_i )387 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nlay_i ) 388 388 ! ! linear profile with 0 surface value 389 389 zs0 = z_slope_s(ji,jj,jl) * ( REAL(jk,wp) - 0.5_wp ) * h_i(ji,jj,jl) * r1_nlay_i … … 515 515 ! Zap ice energy and use ocean heat to melt ice 516 516 !----------------------------------------------------------------- 517 DO_3D( 1, 1, 1, 1, 1, nlay_i )517 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nlay_i ) 518 518 ! update exchanges with ocean 519 519 hfx_res(ji,jj) = hfx_res(ji,jj) - (1._wp - zswitch(ji,jj) ) * e_i(ji,jj,jk,jl) * r1_Dt_ice ! W.m-2 <0 … … 522 522 END_3D 523 523 ! 524 DO_3D( 1, 1, 1, 1, 1, nlay_s )524 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nlay_s ) 525 525 ! update exchanges with ocean 526 526 hfx_res(ji,jj) = hfx_res(ji,jj) - (1._wp - zswitch(ji,jj) ) * e_s(ji,jj,jk,jl) * r1_Dt_ice ! W.m-2 <0 … … 532 532 ! zap ice and snow volume, add water and salt to ocean 533 533 !----------------------------------------------------------------- 534 DO_2D( 1, 1, 1, 1)534 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 535 535 ! update exchanges with ocean 536 536 sfx_res(ji,jj) = sfx_res(ji,jj) + ( 1._wp - zswitch(ji,jj) ) * sv_i(ji,jj,jl) * rhoi * r1_Dt_ice … … 608 608 ! zap ice energy and send it to the ocean 609 609 !---------------------------------------- 610 DO_3D( 1, 1, 1, 1, 1, nlay_i )610 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nlay_i ) 611 611 IF( pe_i(ji,jj,jk,jl) < 0._wp .OR. pa_i(ji,jj,jl) <= 0._wp ) THEN 612 612 hfx_res(ji,jj) = hfx_res(ji,jj) - pe_i(ji,jj,jk,jl) * z1_dt ! W.m-2 >0 … … 615 615 END_3D 616 616 ! 617 DO_3D( 1, 1, 1, 1, 1, nlay_s )617 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nlay_s ) 618 618 IF( pe_s(ji,jj,jk,jl) < 0._wp .OR. pa_i(ji,jj,jl) <= 0._wp ) THEN 619 619 hfx_res(ji,jj) = hfx_res(ji,jj) - pe_s(ji,jj,jk,jl) * z1_dt ! W.m-2 <0 … … 625 625 ! zap ice and snow volume, add water and salt to ocean 626 626 !----------------------------------------------------- 627 DO_2D( 1, 1, 1, 1)627 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 628 628 IF( pv_i(ji,jj,jl) < 0._wp .OR. pa_i(ji,jj,jl) <= 0._wp ) THEN 629 629 wfx_res(ji,jj) = wfx_res(ji,jj) + pv_i (ji,jj,jl) * rhoi * z1_dt -
NEMO/branches/2021/ticket2690_consign_isf/src/ICE/icewri.F90
r14072 r15003 71 71 72 72 ! tresholds for outputs 73 DO_2D( 1, 1, 1, 1)73 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 74 74 zmsk00(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) ! 1 if ice , 0 if no ice 75 75 zmsk05(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - 0.05_wp ) ) ! 1 if 5% ice , 0 if less … … 78 78 END_2D 79 79 DO jl = 1, jpl 80 DO_2D( 1, 1, 1, 1)80 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 81 81 zmsk00l(ji,jj,jl) = MAX( 0._wp , SIGN( 1._wp , a_i(ji,jj,jl) - epsi06 ) ) 82 82 zmsksnl(ji,jj,jl) = MAX( 0._wp , SIGN( 1._wp , v_s(ji,jj,jl) - epsi06 ) )
Note: See TracChangeset
for help on using the changeset viewer.