Changeset 12890
- Timestamp:
- 2020-05-07T16:11:23+02:00 (3 years ago)
- Location:
- NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/cfgs/SHARED/namelist_ice_ref
r12832 r12890 56 56 rn_ishlat = 2. ! lbc : free slip (0) ; partial slip (0-2) ; no slip (2) ; strong slip (>2) 57 57 ln_landfast_L16 = .false. ! landfast: parameterization from Lemieux 2016 58 rn_ depfra= 0.125 ! fraction of ocean depth that ice must reach to initiate landfast58 rn_lf_depfra = 0.125 ! fraction of ocean depth that ice must reach to initiate landfast 59 59 ! recommended range: [0.1 ; 0.25] 60 rn_ icebfr = 15. ! maximum bottom stress per unit volume [N/m3]61 rn_lf relax= 1.e-5 ! relaxation time scale to reach static friction [s-1]62 rn_ tensile= 0.05 ! isotropic tensile strength [0-0.5??]60 rn_lf_bfr = 15. ! maximum bottom stress per unit volume [N/m3] 61 rn_lf_relax = 1.e-5 ! relaxation time scale to reach static friction [s-1] 62 rn_lf_tensile = 0.05 ! isotropic tensile strength [0-0.5??] 63 63 / 64 64 !------------------------------------------------------------------------------ … … 110 110 !------------------------------------------------------------------------------ 111 111 rn_cio = 5.0e-03 ! ice-ocean drag coefficient (-) 112 rn_blow_s = 0.66 ! mesure of snow blowing into the leads 112 nn_snwfra = 0 ! calculate the fraction of ice covered by snow (for zdf and albedo) 113 ! = 0 fraction = 1 (if snow) or 0 (if no snow) 114 ! = 1 fraction = 1-exp(-0.2*rhos*hsnw) [MetO formulation] 115 ! = 2 fraction = hsnw / (hsnw+0.02) [CICE formulation] 116 rn_snwblow = 0.66 ! mesure of snow blowing into the leads 113 117 ! = 1 => no snow blowing, < 1 => some snow blowing 114 118 nn_flxdist = -1 ! Redistribute heat flux over ice categories -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/doc/namelists/namdyn
r11703 r12890 10 10 rn_ishlat = 2. ! lbc : free slip (0) ; partial slip (0-2) ; no slip (2) ; strong slip (>2) 11 11 ln_landfast_L16 = .false. ! landfast: parameterization from Lemieux 2016 12 rn_ depfra= 0.125 ! fraction of ocean depth that ice must reach to initiate landfast12 rn_lf_depfra = 0.125 ! fraction of ocean depth that ice must reach to initiate landfast 13 13 ! recommended range: [0.1 ; 0.25] 14 rn_ icebfr = 15. ! maximum bottom stress per unit volume [N/m3]15 rn_lf relax= 1.e-5 ! relaxation time scale to reach static friction [s-1]16 rn_ tensile= 0.05 ! isotropic tensile strength [0-0.5??]14 rn_lf_bfr = 15. ! maximum bottom stress per unit volume [N/m3] 15 rn_lf_relax = 1.e-5 ! relaxation time scale to reach static friction [s-1] 16 rn_lf_tensile = 0.05 ! isotropic tensile strength [0-0.5??] 17 17 / -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/ice.F90
r12832 r12890 141 141 REAL(wp), PUBLIC :: rn_ishlat !: lateral boundary condition for sea-ice 142 142 LOGICAL , PUBLIC :: ln_landfast_L16 !: landfast ice parameterizationfrom lemieux2016 143 REAL(wp), PUBLIC :: rn_ depfra!: fraction of ocean depth that ice must reach to initiate landfast ice144 REAL(wp), PUBLIC :: rn_ icebfr !: maximum bottom stress per unit area of contact (lemieux2016) or per unit volume (home)145 REAL(wp), PUBLIC :: rn_lf relax!: relaxation time scale (s-1) to reach static friction146 REAL(wp), PUBLIC :: rn_ tensile!: isotropic tensile strength143 REAL(wp), PUBLIC :: rn_lf_depfra !: fraction of ocean depth that ice must reach to initiate landfast ice 144 REAL(wp), PUBLIC :: rn_lf_bfr !: maximum bottom stress per unit area of contact (lemieux2016) or per unit volume (home) 145 REAL(wp), PUBLIC :: rn_lf_relax !: relaxation time scale (s-1) to reach static friction 146 REAL(wp), PUBLIC :: rn_lf_tensile !: isotropic tensile strength 147 147 ! 148 148 ! !!** ice-ridging/rafting namelist (namdyn_rdgrft) ** … … 163 163 ! !!** ice-surface boundary conditions namelist (namsbc) ** 164 164 ! -- icethd_dh -- ! 165 REAL(wp), PUBLIC :: rn_blow_s !: coef. for partitioning of snowfall between leads and sea ice 165 REAL(wp), PUBLIC :: rn_snwblow !: coef. for partitioning of snowfall between leads and sea ice 166 ! -- icethd_zdf and icealb -- ! 167 INTEGER , PUBLIC :: nn_snwfra !: calculate the fraction of ice covered by snow 168 ! ! = 0 fraction = 1 (if snow) or 0 (if no snow) 169 ! ! = 1 fraction = 1-exp(-0.2*rhos*hsnw) [MetO formulation] 170 ! ! = 2 fraction = hsnw / (hsnw+0.02) [CICE formulation] 166 171 ! -- icethd -- ! 167 172 REAL(wp), PUBLIC :: rn_cio !: drag coefficient for oceanic stress -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icedyn.F90
r12720 r12890 223 223 NAMELIST/namdyn/ ln_dynALL, ln_dynRHGADV, ln_dynADV1D, ln_dynADV2D, rn_uice, rn_vice, & 224 224 & rn_ishlat , & 225 & ln_landfast_L16, rn_ depfra, rn_icebfr, rn_lfrelax, rn_tensile225 & ln_landfast_L16, rn_lf_depfra, rn_lf_bfr, rn_lf_relax, rn_lf_tensile 226 226 !!------------------------------------------------------------------- 227 227 ! … … 246 246 WRITE(numout,*) ' lateral boundary condition for sea ice dynamics rn_ishlat = ', rn_ishlat 247 247 WRITE(numout,*) ' Landfast: param from Lemieux 2016 ln_landfast_L16 = ', ln_landfast_L16 248 WRITE(numout,*) ' fraction of ocean depth that ice must reach rn_ depfra = ', rn_depfra249 WRITE(numout,*) ' maximum bottom stress per unit area of contact rn_ icebfr = ', rn_icebfr250 WRITE(numout,*) ' relax time scale (s-1) to reach static friction rn_lf relax = ', rn_lfrelax251 WRITE(numout,*) ' isotropic tensile strength rn_ tensile = ', rn_tensile248 WRITE(numout,*) ' fraction of ocean depth that ice must reach rn_lf_depfra = ', rn_lf_depfra 249 WRITE(numout,*) ' maximum bottom stress per unit area of contact rn_lf_bfr = ', rn_lf_bfr 250 WRITE(numout,*) ' relax time scale (s-1) to reach static friction rn_lf_relax = ', rn_lf_relax 251 WRITE(numout,*) ' isotropic tensile strength rn_lf_tensile = ', rn_lf_tensile 252 252 WRITE(numout,*) 253 253 ENDIF -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icedyn_rhg_evp.F90
r12741 r12890 258 258 259 259 ! landfast param from Lemieux(2016): add isotropic tensile strength (following Konig Beatty and Holland, 2010) 260 IF( ln_landfast_L16 ) THEN ; zkt = rn_ tensile260 IF( ln_landfast_L16 ) THEN ; zkt = rn_lf_tensile 261 261 ELSE ; zkt = 0._wp 262 262 ENDIF … … 329 329 zvV = 0.5_wp * ( vt_i(ji,jj) * e1e2t(ji,jj) + vt_i(ji,jj+1) * e1e2t(ji,jj+1) ) * r1_e1e2v(ji,jj) * vmask(ji,jj,1) 330 330 ! ice-bottom stress at U points 331 zvCr = zaU(ji,jj) * rn_ depfra * hu_n(ji,jj)332 ztaux_base(ji,jj) = - rn_ icebfr * MAX( 0._wp, zvU - zvCr ) * EXP( -rn_crhg * ( 1._wp - zaU(ji,jj) ) )331 zvCr = zaU(ji,jj) * rn_lf_depfra * hu_n(ji,jj) 332 ztaux_base(ji,jj) = - rn_lf_bfr * MAX( 0._wp, zvU - zvCr ) * EXP( -rn_crhg * ( 1._wp - zaU(ji,jj) ) ) 333 333 ! ice-bottom stress at V points 334 zvCr = zaV(ji,jj) * rn_ depfra * hv_n(ji,jj)335 ztauy_base(ji,jj) = - rn_ icebfr * MAX( 0._wp, zvV - zvCr ) * EXP( -rn_crhg * ( 1._wp - zaV(ji,jj) ) )334 zvCr = zaV(ji,jj) * rn_lf_depfra * hv_n(ji,jj) 335 ztauy_base(ji,jj) = - rn_lf_bfr * MAX( 0._wp, zvV - zvCr ) * EXP( -rn_crhg * ( 1._wp - zaV(ji,jj) ) ) 336 336 ! ice_bottom stress at T points 337 zvCr = at_i(ji,jj) * rn_ depfra * ht_n(ji,jj)338 tau_icebfr(ji,jj) = - rn_ icebfr * MAX( 0._wp, vt_i(ji,jj) - zvCr ) * EXP( -rn_crhg * ( 1._wp - at_i(ji,jj) ) )337 zvCr = at_i(ji,jj) * rn_lf_depfra * ht_n(ji,jj) 338 tau_icebfr(ji,jj) = - rn_lf_bfr * MAX( 0._wp, vt_i(ji,jj) - zvCr ) * EXP( -rn_crhg * ( 1._wp - at_i(ji,jj) ) ) 339 339 END DO 340 340 END DO … … 506 506 & + zRHS + zTauO * v_ice(ji,jj) ) & ! F + tau_ia + Coriolis + spg + tau_io(only ocean part) 507 507 & / MAX( zepsi, zmV_t(ji,jj) * ( zbeta(ji,jj) + 1._wp ) + zTauO - zTauB ) & ! m/dt + tau_io(only ice part) + landfast 508 & + ( 1._wp - rswitch ) * v_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf relax )& ! static friction => slow decrease to v=0508 & + ( 1._wp - rswitch ) * v_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf_relax ) & ! static friction => slow decrease to v=0 509 509 & ) * zmsk01y(ji,jj) + v_oce(ji,jj) * 0.01_wp * ( 1._wp - zmsk01y(ji,jj) ) & ! v_ice = v_oce/100 if mass < zmmin & conc < zamin 510 510 & ) * zmsk00y(ji,jj) … … 513 513 & + zRHS + zTauO * v_ice(ji,jj) ) & ! F + tau_ia + Coriolis + spg + tau_io(only ocean part) 514 514 & / MAX( zepsi, zmV_t(ji,jj) + zTauO - zTauB ) & ! m/dt + tau_io(only ice part) + landfast 515 & + ( 1._wp - rswitch ) * v_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf relax )& ! static friction => slow decrease to v=0515 & + ( 1._wp - rswitch ) * v_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf_relax ) & ! static friction => slow decrease to v=0 516 516 & ) * zmsk01y(ji,jj) + v_oce(ji,jj) * 0.01_wp * ( 1._wp - zmsk01y(ji,jj) ) & ! v_ice = v_oce/100 if mass < zmmin & conc < zamin 517 517 & ) * zmsk00y(ji,jj) … … 557 557 & + zRHS + zTauO * u_ice(ji,jj) ) & ! F + tau_ia + Coriolis + spg + tau_io(only ocean part) 558 558 & / MAX( zepsi, zmU_t(ji,jj) * ( zbeta(ji,jj) + 1._wp ) + zTauO - zTauB ) & ! m/dt + tau_io(only ice part) + landfast 559 & + ( 1._wp - rswitch ) * u_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf relax )& ! static friction => slow decrease to v=0559 & + ( 1._wp - rswitch ) * u_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf_relax ) & ! static friction => slow decrease to v=0 560 560 & ) * zmsk01x(ji,jj) + u_oce(ji,jj) * 0.01_wp * ( 1._wp - zmsk01x(ji,jj) ) & ! v_ice = v_oce/100 if mass < zmmin & conc < zamin 561 561 & ) * zmsk00x(ji,jj) … … 564 564 & + zRHS + zTauO * u_ice(ji,jj) ) & ! F + tau_ia + Coriolis + spg + tau_io(only ocean part) 565 565 & / MAX( zepsi, zmU_t(ji,jj) + zTauO - zTauB ) & ! m/dt + tau_io(only ice part) + landfast 566 & + ( 1._wp - rswitch ) * u_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf relax )& ! static friction => slow decrease to v=0566 & + ( 1._wp - rswitch ) * u_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf_relax ) & ! static friction => slow decrease to v=0 567 567 & ) * zmsk01x(ji,jj) + u_oce(ji,jj) * 0.01_wp * ( 1._wp - zmsk01x(ji,jj) ) & ! v_ice = v_oce/100 if mass < zmmin & conc < zamin 568 568 & ) * zmsk00x(ji,jj) … … 610 610 & + zRHS + zTauO * u_ice(ji,jj) ) & ! F + tau_ia + Coriolis + spg + tau_io(only ocean part) 611 611 & / MAX( zepsi, zmU_t(ji,jj) * ( zbeta(ji,jj) + 1._wp ) + zTauO - zTauB ) & ! m/dt + tau_io(only ice part) + landfast 612 & + ( 1._wp - rswitch ) * u_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf relax )& ! static friction => slow decrease to v=0612 & + ( 1._wp - rswitch ) * u_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf_relax ) & ! static friction => slow decrease to v=0 613 613 & ) * zmsk01x(ji,jj) + u_oce(ji,jj) * 0.01_wp * ( 1._wp - zmsk01x(ji,jj) ) & ! v_ice = v_oce/100 if mass < zmmin & conc < zamin 614 614 & ) * zmsk00x(ji,jj) … … 617 617 & + zRHS + zTauO * u_ice(ji,jj) ) & ! F + tau_ia + Coriolis + spg + tau_io(only ocean part) 618 618 & / MAX( zepsi, zmU_t(ji,jj) + zTauO - zTauB ) & ! m/dt + tau_io(only ice part) + landfast 619 & + ( 1._wp - rswitch ) * u_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf relax )& ! static friction => slow decrease to v=0619 & + ( 1._wp - rswitch ) * u_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf_relax ) & ! static friction => slow decrease to v=0 620 620 & ) * zmsk01x(ji,jj) + u_oce(ji,jj) * 0.01_wp * ( 1._wp - zmsk01x(ji,jj) ) & ! v_ice = v_oce/100 if mass < zmmin & conc < zamin 621 621 & ) * zmsk00x(ji,jj) … … 661 661 & + zRHS + zTauO * v_ice(ji,jj) ) & ! F + tau_ia + Coriolis + spg + tau_io(only ocean part) 662 662 & / MAX( zepsi, zmV_t(ji,jj) * ( zbeta(ji,jj) + 1._wp ) + zTauO - zTauB ) & ! m/dt + tau_io(only ice part) + landfast 663 & + ( 1._wp - rswitch ) * v_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf relax )& ! static friction => slow decrease to v=0663 & + ( 1._wp - rswitch ) * v_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf_relax ) & ! static friction => slow decrease to v=0 664 664 & ) * zmsk01y(ji,jj) + v_oce(ji,jj) * 0.01_wp * ( 1._wp - zmsk01y(ji,jj) ) & ! v_ice = v_oce/100 if mass < zmmin & conc < zamin 665 665 & ) * zmsk00y(ji,jj) … … 668 668 & + zRHS + zTauO * v_ice(ji,jj) ) & ! F + tau_ia + Coriolis + spg + tau_io(only ocean part) 669 669 & / MAX( zepsi, zmV_t(ji,jj) + zTauO - zTauB ) & ! m/dt + tau_io(only ice part) + landfast 670 & + ( 1._wp - rswitch ) * v_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf relax )& ! static friction => slow decrease to v=0670 & + ( 1._wp - rswitch ) * v_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lf_relax ) & ! static friction => slow decrease to v=0 671 671 & ) * zmsk01y(ji,jj) + v_oce(ji,jj) * 0.01_wp * ( 1._wp - zmsk01y(ji,jj) ) & ! v_ice = v_oce/100 if mass < zmmin & conc < zamin 672 672 & ) * zmsk00y(ji,jj) -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/iceistate.F90
r12816 r12890 199 199 si(jp_tsu)%fnow(:,:,1) = ( rn_tsu_ini_n * zswitch + rn_tsu_ini_s * (1._wp - zswitch) ) * tmask(:,:,1) 200 200 si(jp_tms)%fnow(:,:,1) = ( rn_tms_ini_n * zswitch + rn_tms_ini_s * (1._wp - zswitch) ) * tmask(:,:,1) 201 ELSEIF( TRIM(si(jp_tmi)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tms)%clrootname) /= 'NOT USED' ) THEN ! if T_s is read and not T_i, set T_i = (T_s + T_freeze)/2202 si(jp_tmi)%fnow(:,:,1) = 0.5_wp * ( si(jp_tms)%fnow(:,:,1) + 271.15 )203 ELSEIF( TRIM(si(jp_tmi)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tsu)%clrootname) /= 'NOT USED' ) THEN ! if T_su is read and not T_i, set T_i = (T_su + T_freeze)/2204 si(jp_tmi)%fnow(:,:,1) = 0.5_wp * ( si(jp_tsu)%fnow(:,:,1) + 271.15 )205 ELSEIF( TRIM(si(jp_tsu)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tms)%clrootname) /= 'NOT USED' ) THEN ! if T_s is read and not T_su, set T_su = T_s206 si(jp_tsu)%fnow(:,:,1) = si(jp_tms)%fnow(:,:,1)207 ELSEIF( TRIM(si(jp_tsu)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tmi)%clrootname) /= 'NOT USED' ) THEN ! if T_i is read and not T_su, set T_su = T_i208 si(jp_tsu)%fnow(:,:,1) = si(jp_tmi)%fnow(:,:,1)209 ELSEIF( TRIM(si(jp_tms)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tsu)%clrootname) /= 'NOT USED' ) THEN ! if T_su is read and not T_s, set T_s = T_su210 si(jp_tms)%fnow(:,:,1) = si(jp_tsu)%fnow(:,:,1)211 ELSEIF( TRIM(si(jp_tms)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tmi)%clrootname) /= 'NOT USED' ) THEN ! if T_i is read and not T_s, set T_s = T_i212 si(jp_tms)%fnow(:,:,1) = si(jp_tmi)%fnow(:,:,1)213 201 ENDIF 202 IF( TRIM(si(jp_tmi)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tms)%clrootname) /= 'NOT USED' ) & ! if T_s is read and not T_i, set T_i = (T_s + T_freeze)/2 203 & si(jp_tmi)%fnow(:,:,1) = 0.5_wp * ( si(jp_tms)%fnow(:,:,1) + 271.15 ) 204 IF( TRIM(si(jp_tmi)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tsu)%clrootname) /= 'NOT USED' ) & ! if T_su is read and not T_i, set T_i = (T_su + T_freeze)/2 205 & si(jp_tmi)%fnow(:,:,1) = 0.5_wp * ( si(jp_tsu)%fnow(:,:,1) + 271.15 ) 206 IF( TRIM(si(jp_tsu)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tms)%clrootname) /= 'NOT USED' ) & ! if T_s is read and not T_su, set T_su = T_s 207 & si(jp_tsu)%fnow(:,:,1) = si(jp_tms)%fnow(:,:,1) 208 IF( TRIM(si(jp_tsu)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tmi)%clrootname) /= 'NOT USED' ) & ! if T_i is read and not T_su, set T_su = T_i 209 & si(jp_tsu)%fnow(:,:,1) = si(jp_tmi)%fnow(:,:,1) 210 IF( TRIM(si(jp_tms)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tsu)%clrootname) /= 'NOT USED' ) & ! if T_su is read and not T_s, set T_s = T_su 211 & si(jp_tms)%fnow(:,:,1) = si(jp_tsu)%fnow(:,:,1) 212 IF( TRIM(si(jp_tms)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tmi)%clrootname) /= 'NOT USED' ) & ! if T_i is read and not T_s, set T_s = T_i 213 & si(jp_tms)%fnow(:,:,1) = si(jp_tmi)%fnow(:,:,1) 214 214 ! 215 215 ! pond concentration -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icesbc.F90
r12785 r12890 276 276 INTEGER :: ios, ioptio ! Local integer 277 277 !! 278 NAMELIST/namsbc/ rn_cio, rn_ blow_s, nn_flxdist, ln_cndflx, ln_cndemulate278 NAMELIST/namsbc/ rn_cio, rn_snwblow, nn_snwfra, nn_flxdist, ln_cndflx, ln_cndemulate 279 279 !!------------------------------------------------------------------- 280 280 ! … … 293 293 WRITE(numout,*) ' Namelist namsbc:' 294 294 WRITE(numout,*) ' drag coefficient for oceanic stress rn_cio = ', rn_cio 295 WRITE(numout,*) ' coefficient for ice-lead partition of snowfall rn_blow_s = ', rn_blow_s 295 WRITE(numout,*) ' fraction of ice covered by snow (options 0,1,2) nn_snwfra = ', nn_snwfra 296 WRITE(numout,*) ' coefficient for ice-lead partition of snowfall rn_snwblow = ', rn_snwblow 296 297 WRITE(numout,*) ' Multicategory heat flux formulation nn_flxdist = ', nn_flxdist 297 298 WRITE(numout,*) ' Use conduction flux as surface condition ln_cndflx = ', ln_cndflx -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icethd_dh.F90
r10786 r12890 13 13 !!---------------------------------------------------------------------- 14 14 !! ice_thd_dh : vertical sea-ice growth and melt 15 !! ice_thd_snwblow : distribute snow fall between ice and ocean 16 !!---------------------------------------------------------------------- 15 !!---------------------------------------------------------------------- 17 16 USE dom_oce ! ocean space and time domain 18 17 USE phycst ! physical constants … … 20 19 USE ice1D ! sea-ice: thermodynamics variables 21 20 USE icethd_sal ! sea-ice: salinity profiles 21 USE icevar ! for CALL ice_var_snwblow 22 22 ! 23 23 USE in_out_manager ! I/O manager … … 29 29 30 30 PUBLIC ice_thd_dh ! called by ice_thd 31 PUBLIC ice_thd_snwblow ! called in sbcblk/sbccpl and here32 33 INTERFACE ice_thd_snwblow34 MODULE PROCEDURE ice_thd_snwblow_1d, ice_thd_snwblow_2d35 END INTERFACE36 31 37 32 !!---------------------------------------------------------------------- … … 186 181 ! Snow precipitation 187 182 !------------------- 188 CALL ice_ thd_snwblow( 1. - at_i_1d(1:npti), zsnw(1:npti) ) ! snow distribution over ice after wind blowing183 CALL ice_var_snwblow( 1. - at_i_1d(1:npti), zsnw(1:npti) ) ! snow distribution over ice after wind blowing 189 184 190 185 zdeltah(1:npti,:) = 0._wp … … 636 631 END SUBROUTINE ice_thd_dh 637 632 638 639 !!--------------------------------------------------------------------------640 !! INTERFACE ice_thd_snwblow641 !!642 !! ** Purpose : Compute distribution of precip over the ice643 !!644 !! Snow accumulation in one thermodynamic time step645 !! snowfall is partitionned between leads and ice.646 !! If snow fall was uniform, a fraction (1-at_i) would fall into leads647 !! but because of the winds, more snow falls on leads than on sea ice648 !! and a greater fraction (1-at_i)^beta of the total mass of snow649 !! (beta < 1) falls in leads.650 !! In reality, beta depends on wind speed,651 !! and should decrease with increasing wind speed but here, it is652 !! considered as a constant. an average value is 0.66653 !!--------------------------------------------------------------------------654 !!gm I think it can be usefull to set this as a FUNCTION, not a SUBROUTINE....655 SUBROUTINE ice_thd_snwblow_2d( pin, pout )656 REAL(wp), DIMENSION(:,:), INTENT(in ) :: pin ! previous fraction lead ( 1. - a_i_b )657 REAL(wp), DIMENSION(:,:), INTENT(inout) :: pout658 pout = ( 1._wp - ( pin )**rn_blow_s )659 END SUBROUTINE ice_thd_snwblow_2d660 661 SUBROUTINE ice_thd_snwblow_1d( pin, pout )662 REAL(wp), DIMENSION(:), INTENT(in ) :: pin663 REAL(wp), DIMENSION(:), INTENT(inout) :: pout664 pout = ( 1._wp - ( pin )**rn_blow_s )665 END SUBROUTINE ice_thd_snwblow_1d666 667 633 #else 668 634 !!---------------------------------------------------------------------- -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icethd_zdf_bl99.F90
r12854 r12890 94 94 REAL(wp) :: ztsu_err = 1.e-5_wp ! range around which t_su is considered at 0C 95 95 REAL(wp) :: zdti_bnd = 1.e-4_wp ! maximal authorized error on temperature 96 REAL(wp) :: zhs_min = 0.1_wp ! minimum snow thickness for conductivity calculation 96 REAL(wp) :: zhs_ssl = 0.03_wp ! surface scattering layer in the snow 97 REAL(wp) :: zhi_ssl = 0.10_wp ! surface scattering layer in the ice 97 98 REAL(wp) :: ztmelts ! ice melting temperature 98 99 REAL(wp) :: zdti_max ! current maximal error on temperature 99 100 REAL(wp) :: zcpi ! Ice specific heat 100 101 REAL(wp) :: zhfx_err, zdq ! diag errors on heat 101 REAL(wp) :: zfac ! dummy factor 102 ! 103 REAL(wp), DIMENSION(jpij) :: isnow ! fraction of sea ice that is snow covered (for thermodynamic use only) 102 ! 104 103 REAL(wp), DIMENSION(jpij) :: ztsub ! surface temperature at previous iteration 105 104 REAL(wp), DIMENSION(jpij) :: zh_i, z1_h_i ! ice layer thickness … … 150 149 !------------------ 151 150 DO ji = 1, npti 152 153 ! If the snow thickness drops below zhs_min then reduce the snow fraction instead 154 !!IF( h_s_1d(ji) < zhs_min ) THEN 155 !! isnow(ji) = h_s_1d(ji) / zhs_min 156 !! zh_s(ji) = zhs_min * r1_nlay_s 157 !!ELSE 158 !! isnow(ji) = 1.0_wp 159 !! zh_s(ji) = h_s_1d(ji) * r1_nlay_s 160 !!END IF 161 isnow(ji) = za_s_fra(ji) !!clem: 2 variables for the same thing 162 zh_s(ji) = h_s_1d(ji) * r1_nlay_s 163 164 165 ! layer thickness 166 zh_i(ji) = h_i_1d(ji) * r1_nlay_i 167 151 zh_s(ji) = MAX( zhs_ssl , h_s_1d(ji) ) * r1_nlay_s ! set a minimum snw thickness for conduction 152 zh_i(ji) = MAX( zhi_ssl , h_i_1d(ji) ) * r1_nlay_i ! set a minimum ice thickness for conduction 168 153 END DO 169 154 ! 170 WHERE( zh_i(1:npti) >= epsi10) ; z1_h_i(1:npti) = 1._wp / zh_i(1:npti)171 ELSEWHERE ; z1_h_i(1:npti) = 0._wp155 WHERE( h_i_1d(1:npti) >= zhi_ssl ) ; z1_h_i(1:npti) = 1._wp / zh_i(1:npti) 156 ELSEWHERE ; z1_h_i(1:npti) = 0._wp ! put 0 if ice thick < scattering layer 172 157 END WHERE 173 158 ! 174 WHERE( zh_s(1:npti) >= epsi10) ; z1_h_s(1:npti) = 1._wp / zh_s(1:npti)175 ELSEWHERE ; z1_h_s(1:npti) = 0._wp159 WHERE( h_s_1d(1:npti) >= zhs_ssl ) ; z1_h_s(1:npti) = 1._wp / zh_s(1:npti) 160 ELSEWHERE ; z1_h_s(1:npti) = 0._wp ! put 0 if snw thick < scattering layer 176 161 END WHERE 177 162 ! … … 198 183 DO ji = 1, npti 199 184 ! ! radiation transmitted below the layer-th snow layer 200 zradtr_s(ji,jk) = zradtr_s(ji,0) * EXP( - zraext_s * h_s_1d(ji) * r1_nlay_s * REAL(jk) )185 zradtr_s(ji,jk) = zradtr_s(ji,0) * EXP( - zraext_s * MAX( 0._wp, zh_s(ji) * REAL(jk) - zhs_ssl ) ) 201 186 ! ! radiation absorbed by the layer-th snow layer 202 187 zradab_s(ji,jk) = zradtr_s(ji,jk-1) - zradtr_s(ji,jk) … … 204 189 END DO 205 190 ! 206 zradtr_i(1:npti,0) = zradtr_s(1:npti,nlay_s) * isnow(1:npti) + qtr_ice_top_1d(1:npti) * ( 1._wp - isnow(1:npti))191 zradtr_i(1:npti,0) = zradtr_s(1:npti,nlay_s) * za_s_fra(1:npti) + qtr_ice_top_1d(1:npti) * (1._wp - za_s_fra(1:npti)) 207 192 DO jk = 1, nlay_i 208 193 DO ji = 1, npti 209 194 ! ! radiation transmitted below the layer-th ice layer 210 zradtr_i(ji,jk) = zradtr_i(ji,0) * EXP( - rn_kappa_i * zh_i(ji) * REAL(jk) )195 zradtr_i(ji,jk) = zradtr_i(ji,0) * EXP( - rn_kappa_i * MAX( 0._wp, zh_i(ji) * REAL(jk) - zhi_ssl ) ) 211 196 ! ! radiation absorbed by the layer-th ice layer 212 197 zradab_i(ji,jk) = zradtr_i(ji,jk-1) - zradtr_i(ji,jk) … … 216 201 qtr_ice_bot_1d(1:npti) = zradtr_i(1:npti,nlay_i) ! record radiation transmitted below the ice 217 202 ! 218 iconv 203 iconv = 0 ! number of iterations 219 204 ! 220 205 l_T_converged(:) = .FALSE. … … 243 228 DO ji = 1, npti 244 229 ztcond_i_cp(ji,jk) = rcnd_i + zbeta * 0.5_wp * ( sz_i_1d(ji,jk) + sz_i_1d(ji,jk+1) ) / & 245 & MIN( -epsi10, 0.5_wp * (t_i_1d(ji,jk) + t_i_1d(ji,jk+1)) - rt0 )230 & MIN( -epsi10, 0.5_wp * ( t_i_1d(ji,jk) + t_i_1d(ji,jk+1) ) - rt0 ) 246 231 END DO 247 232 END DO … … 251 236 DO ji = 1, npti 252 237 ztcond_i_cp(ji,0) = rcnd_i + 0.09_wp * sz_i_1d(ji,1) / MIN( -epsi10, t_i_1d(ji,1) - rt0 ) & 253 & - 0.011_wp * ( t_i_1d(ji,1) - rt0 )238 & - 0.011_wp * ( t_i_1d(ji,1) - rt0 ) 254 239 ztcond_i_cp(ji,nlay_i) = rcnd_i + 0.09_wp * sz_i_1d(ji,nlay_i) / MIN( -epsi10, t_bo_1d(ji) - rt0 ) & 255 & - 0.011_wp * ( t_bo_1d(ji) - rt0 )240 & - 0.011_wp * ( t_bo_1d(ji) - rt0 ) 256 241 END DO 257 242 DO jk = 1, nlay_i-1 258 243 DO ji = 1, npti 259 ztcond_i_cp(ji,jk) = rcnd_i + 0.09_wp * 0.5_wp * ( sz_i_1d(ji,jk) + sz_i_1d(ji,jk+1) ) / 260 & MIN( -epsi10, 0.5_wp * ( t_i_1d (ji,jk) + t_i_1d (ji,jk+1) ) - rt0 )&261 & - 0.011_wp * ( 0.5_wp * ( t_i_1d (ji,jk) + t_i_1d(ji,jk+1) ) - rt0 )244 ztcond_i_cp(ji,jk) = rcnd_i + 0.09_wp * 0.5_wp * ( sz_i_1d(ji,jk) + sz_i_1d(ji,jk+1) ) / & 245 & MIN( -epsi10, 0.5_wp * ( t_i_1d(ji,jk) + t_i_1d(ji,jk+1) ) - rt0 ) & 246 & - 0.011_wp * ( 0.5_wp * ( t_i_1d(ji,jk) + t_i_1d(ji,jk+1) ) - rt0 ) 262 247 END DO 263 248 END DO … … 304 289 DO ji = 1, npti ! Snow-ice interface 305 290 IF ( .NOT. l_T_converged(ji) ) THEN 306 zfac = 0.5_wp * ( ztcond_i(ji,0) * zh_s(ji) + rn_cnd_s * zh_i(ji) )307 IF( zfac > epsi10 ) THEN308 zkappa_s(ji,nlay_s) = zghe(ji) * rn_cnd_s * ztcond_i(ji,0) / zfac291 IF( h_s_1d(ji) >= zhs_ssl ) THEN 292 zkappa_s(ji,nlay_s) = zghe(ji) * rn_cnd_s * ztcond_i(ji,0) / & 293 & ( 0.5_wp * ( ztcond_i(ji,0) * zh_s(ji) + rn_cnd_s * zh_i(ji) ) ) 309 294 ELSE 310 295 zkappa_s(ji,nlay_s) = 0._wp … … 324 309 DO ji = 1, npti ! Snow-ice interface 325 310 IF ( .NOT. l_T_converged(ji) ) & 326 zkappa_i(ji,0) = zkappa_s(ji,nlay_s) * isnow(ji) + zkappa_i(ji,0) * ( 1._wp - isnow(ji))311 zkappa_i(ji,0) = zkappa_s(ji,nlay_s) * za_s_fra(ji) + zkappa_i(ji,0) * (1._wp - za_s_fra(ji)) 327 312 END DO 328 313 ! … … 558 543 IF( t_su_1d(ji) < rt0 ) THEN 559 544 t_su_1d(ji) = ( zindtbis(ji,jm_min(ji)) - ztrid(ji,jm_min(ji),3) * & 560 & ( isnow(ji) * t_s_1d(ji,1) + ( 1._wp - isnow(ji)) * t_i_1d(ji,1) ) ) / zdiagbis(ji,jm_min(ji))545 & ( za_s_fra(ji) * t_s_1d(ji,1) + (1._wp - za_s_fra(ji)) * t_i_1d(ji,1) ) ) / zdiagbis(ji,jm_min(ji)) 561 546 ENDIF 562 547 ENDIF … … 790 775 ! 791 776 DO ji = 1, npti 792 qcn_ice_top_1d(ji) = - isnow(ji) * zkappa_s(ji,0) * zg1s * ( t_s_1d(ji,1) - t_su_1d(ji) ) &793 & - ( 1._wp - isnow(ji) ) * zkappa_i(ji,0) * zg1 * ( t_i_1d(ji,1) - t_su_1d(ji) )777 qcn_ice_top_1d(ji) = - za_s_fra(ji) * zkappa_s(ji,0) * zg1s * ( t_s_1d(ji,1) - t_su_1d(ji) ) & 778 & - ( 1._wp - za_s_fra(ji) ) * zkappa_i(ji,0) * zg1 * ( t_i_1d(ji,1) - t_su_1d(ji) ) 794 779 END DO 795 780 ! … … 806 791 DO ji = 1, npti 807 792 t_su_1d(ji) = ( qcn_ice_top_1d(ji) & ! calculate surface temperature 808 & + isnow(ji)* zkappa_s(ji,0) * zg1s * t_s_1d(ji,1) &809 & + ( 1._wp - isnow(ji)) * zkappa_i(ji,0) * zg1 * t_i_1d(ji,1) &810 & ) / MAX( epsi10, isnow(ji) * zkappa_s(ji,0) * zg1s + ( 1._wp - isnow(ji)) * zkappa_i(ji,0) * zg1 )793 & + za_s_fra(ji) * zkappa_s(ji,0) * zg1s * t_s_1d(ji,1) & 794 & + (1._wp - za_s_fra(ji)) * zkappa_i(ji,0) * zg1 * t_i_1d(ji,1) & 795 & ) / MAX( epsi10, za_s_fra(ji) * zkappa_s(ji,0) * zg1s + (1._wp - za_s_fra(ji)) * zkappa_i(ji,0) * zg1 ) 811 796 t_su_1d(ji) = MAX( MIN( t_su_1d(ji), rt0 ), rt0 - 100._wp ) ! cap t_su 812 797 END DO … … 866 851 !-------------------------------------------------------------------- 867 852 ! effective conductivity and 1st layer temperature (needed by Met Office) 853 ! this is a conductivity at mid-layer, hence the factor 2 868 854 DO ji = 1, npti 869 IF( h_i_1d(ji) > 0.1_wp ) THEN855 IF( h_i_1d(ji) >= zhi_ssl ) THEN ! zkappa_i=0 when h_i<zhi_ssl (but ztcond_i/=0) 870 856 cnd_ice_1d(ji) = 2._wp * zkappa_i(ji,0) 871 857 ELSE 872 cnd_ice_1d(ji) = 2._wp * ztcond_i(ji,0) * 10._wp ! cnd_ice is capped by: cond_i/0.1m858 cnd_ice_1d(ji) = 2._wp * ztcond_i(ji,0) / zhi_ssl ! cnd_ice is capped by: cond_i/zhi_ssl 873 859 ENDIF 874 t1_ice_1d(ji) = isnow(ji) * t_s_1d(ji,1) + ( 1._wp - isnow(ji) ) * t_i_1d(ji,1)860 t1_ice_1d(ji) = za_s_fra(ji) * t_s_1d(ji,1) + ( 1._wp - za_s_fra(ji) ) * t_i_1d(ji,1) 875 861 END DO 876 862 ! … … 886 872 DO ji = 1, npti 887 873 !--- Snow-ice interfacial temperature (diagnostic SIMIP) 888 zfac = rn_cnd_s * zh_i(ji) + ztcond_i(ji,1) * zh_s(ji) 889 IF( h_s_1d(ji) >= zhs_min ) THEN !!clem change that 890 t_si_1d(ji) = ( rn_cnd_s * zh_i(ji) * t_s_1d(ji,1) + & 891 & ztcond_i(ji,1) * zh_s(ji) * t_i_1d(ji,1) ) / MAX( epsi10, zfac ) 874 IF( h_s_1d(ji) >= zhs_ssl ) THEN 875 t_si_1d(ji) = ( rn_cnd_s * zh_i(ji) * t_s_1d(ji,1) + ztcond_i(ji,1) * zh_s(ji) * t_i_1d(ji,1) ) / & 876 & ( rn_cnd_s * zh_i(ji) + ztcond_i(ji,1) * zh_s(ji) ) 892 877 ELSE 893 878 t_si_1d(ji) = t_su_1d(ji) -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icevar.F90
r12854 r12890 52 52 !! ice_var_itd : convert N-cat to M-cat 53 53 !! ice_var_snwfra : fraction of ice covered by snow 54 !! ice_var_snwblow : distribute snow fall between ice and ocean 54 55 !!---------------------------------------------------------------------- 55 56 USE dom_oce ! ocean space and time domain … … 79 80 PUBLIC ice_var_itd 80 81 PUBLIC ice_var_snwfra 82 PUBLIC ice_var_snwblow 81 83 82 84 INTERFACE ice_var_itd … … 86 88 INTERFACE ice_var_snwfra 87 89 MODULE PROCEDURE ice_var_snwfra_1d, ice_var_snwfra_2d, ice_var_snwfra_3d 90 END INTERFACE 91 92 INTERFACE ice_var_snwblow 93 MODULE PROCEDURE ice_var_snwblow_1d, ice_var_snwblow_2d 88 94 END INTERFACE 89 95 … … 1009 1015 pt_su(:,jl) = ptmsu(:) 1010 1016 ps_i (:,jl) = psmi (:) 1011 ps_i (:,jl) = psmi (:)1012 1017 END DO 1013 1018 ! … … 1059 1064 !! 1060 1065 !! 2) Expand the filling to the cat jlmin-1 and jlmax+1 1061 1066 !! by removing 25% ice area from jlmin and jlmax (resp.) 1062 1067 !! 1063 1068 !! 3) Expand the filling to the empty cat between jlmin and jlmax … … 1293 1298 !!------------------------------------------------------------------- 1294 1299 SUBROUTINE ice_var_snwfra_3d( ph_s, pa_s_fra ) 1295 !!-------------------------------------------------------------------1296 1300 REAL(wp), DIMENSION(:,:,:), INTENT(in ) :: ph_s ! snow thickness 1297 1301 REAL(wp), DIMENSION(:,:,:), INTENT( out) :: pa_s_fra ! ice fraction covered by snow 1298 !!------------------------------------------------------------------- 1299 pa_s_fra(:,:,:) = 1._wp - EXP( -0.2_wp * rhos * ph_s(:,:,:) ) 1302 IF ( nn_snwfra == 0 ) THEN ! basic 0 or 1 snow cover 1303 WHERE( ph_s > 0._wp ) ; pa_s_fra = 1._wp 1304 ELSEWHERE ; pa_s_fra = 0._wp 1305 END WHERE 1306 ELSEIF( nn_snwfra == 1 ) THEN ! snow cover depends on hsnow (met-office style) 1307 pa_s_fra = 1._wp - EXP( -0.2_wp * rhos * ph_s ) 1308 ELSEIF( nn_snwfra == 2 ) THEN ! snow cover depends on hsnow (cice style) 1309 pa_s_fra = ph_s / ( ph_s + 0.02_wp ) 1310 ENDIF 1300 1311 END SUBROUTINE ice_var_snwfra_3d 1301 1312 1302 1313 SUBROUTINE ice_var_snwfra_2d( ph_s, pa_s_fra ) 1303 !!-------------------------------------------------------------------1304 1314 REAL(wp), DIMENSION(:,:), INTENT(in ) :: ph_s ! snow thickness 1305 1315 REAL(wp), DIMENSION(:,:), INTENT( out) :: pa_s_fra ! ice fraction covered by snow 1306 !!------------------------------------------------------------------- 1307 pa_s_fra(:,:) = 1._wp - EXP( -0.2_wp * rhos * ph_s(:,:) ) 1316 IF ( nn_snwfra == 0 ) THEN ! basic 0 or 1 snow cover 1317 WHERE( ph_s > 0._wp ) ; pa_s_fra = 1._wp 1318 ELSEWHERE ; pa_s_fra = 0._wp 1319 END WHERE 1320 ELSEIF( nn_snwfra == 1 ) THEN ! snow cover depends on hsnow (met-office style) 1321 pa_s_fra = 1._wp - EXP( -0.2_wp * rhos * ph_s ) 1322 ELSEIF( nn_snwfra == 2 ) THEN ! snow cover depends on hsnow (cice style) 1323 pa_s_fra = ph_s / ( ph_s + 0.02_wp ) 1324 ENDIF 1308 1325 END SUBROUTINE ice_var_snwfra_2d 1309 1326 1310 1327 SUBROUTINE ice_var_snwfra_1d( ph_s, pa_s_fra ) 1311 !!-------------------------------------------------------------------1312 1328 REAL(wp), DIMENSION(:), INTENT(in ) :: ph_s ! snow thickness 1313 1329 REAL(wp), DIMENSION(:), INTENT( out) :: pa_s_fra ! ice fraction covered by snow 1314 !!------------------------------------------------------------------- 1315 pa_s_fra(:) = 1._wp - EXP( -0.2_wp * rhos * ph_s(:) ) 1330 IF ( nn_snwfra == 0 ) THEN ! basic 0 or 1 snow cover 1331 WHERE( ph_s > 0._wp ) ; pa_s_fra = 1._wp 1332 ELSEWHERE ; pa_s_fra = 0._wp 1333 END WHERE 1334 ELSEIF( nn_snwfra == 1 ) THEN ! snow cover depends on hsnow (met-office style) 1335 pa_s_fra = 1._wp - EXP( -0.2_wp * rhos * ph_s ) 1336 ELSEIF( nn_snwfra == 2 ) THEN ! snow cover depends on hsnow (cice style) 1337 pa_s_fra = ph_s / ( ph_s + 0.02_wp ) 1338 ENDIF 1316 1339 END SUBROUTINE ice_var_snwfra_1d 1317 1340 1341 !!-------------------------------------------------------------------------- 1342 !! INTERFACE ice_var_snwblow 1343 !! 1344 !! ** Purpose : Compute distribution of precip over the ice 1345 !! 1346 !! Snow accumulation in one thermodynamic time step 1347 !! snowfall is partitionned between leads and ice. 1348 !! If snow fall was uniform, a fraction (1-at_i) would fall into leads 1349 !! but because of the winds, more snow falls on leads than on sea ice 1350 !! and a greater fraction (1-at_i)^beta of the total mass of snow 1351 !! (beta < 1) falls in leads. 1352 !! In reality, beta depends on wind speed, 1353 !! and should decrease with increasing wind speed but here, it is 1354 !! considered as a constant. an average value is 0.66 1355 !!-------------------------------------------------------------------------- 1356 !!gm I think it can be usefull to set this as a FUNCTION, not a SUBROUTINE.... 1357 SUBROUTINE ice_var_snwblow_2d( pin, pout ) 1358 REAL(wp), DIMENSION(:,:), INTENT(in ) :: pin ! previous fraction lead ( 1. - a_i_b ) 1359 REAL(wp), DIMENSION(:,:), INTENT(inout) :: pout 1360 pout = ( 1._wp - ( pin )**rn_snwblow ) 1361 END SUBROUTINE ice_var_snwblow_2d 1362 1363 SUBROUTINE ice_var_snwblow_1d( pin, pout ) 1364 REAL(wp), DIMENSION(:), INTENT(in ) :: pin 1365 REAL(wp), DIMENSION(:), INTENT(inout) :: pout 1366 pout = ( 1._wp - ( pin )**rn_snwblow ) 1367 END SUBROUTINE ice_var_snwblow_1d 1318 1368 1319 1369 #else -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/SBC/sbcblk.F90
r12811 r12890 47 47 #if defined key_si3 48 48 USE ice , ONLY : u_ice, v_ice, jpl, a_i_b, at_i_b, t_su, rn_cnd_s, hfx_err_dif 49 USE ice thd_dh ! for CALL ice_thd_snwblow49 USE icevar ! for CALL ice_var_snwblow 50 50 #endif 51 51 USE sbcblk_algo_ncar ! => turb_ncar : NCAR - CORE (Large & Yeager, 2009) … … 890 890 ! --- evaporation minus precipitation --- ! 891 891 zsnw(:,:) = 0._wp 892 CALL ice_ thd_snwblow( (1.-at_i_b(:,:)), zsnw ) ! snow distribution over ice after wind blowing892 CALL ice_var_snwblow( (1.-at_i_b(:,:)), zsnw ) ! snow distribution over ice after wind blowing 893 893 emp_oce(:,:) = ( 1._wp - at_i_b(:,:) ) * zevap(:,:) - ( tprecip(:,:) - sprecip(:,:) ) - sprecip(:,:) * (1._wp - zsnw ) 894 894 emp_ice(:,:) = SUM( a_i_b(:,:,:) * evap_ice(:,:,:), dim=3 ) - sprecip(:,:) * zsnw -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/SBC/sbccpl.F90
r12811 r12890 41 41 #endif 42 42 #if defined key_si3 43 USE ice thd_dh ! for CALL ice_thd_snwblow43 USE icevar ! for CALL ice_var_snwblow 44 44 #endif 45 45 ! … … 1730 1730 1731 1731 ! zsnw = snow fraction over ice after wind blowing (=picefr if no blowing) 1732 zsnw(:,:) = 0._wp ; CALL ice_ thd_snwblow( ziceld, zsnw )1732 zsnw(:,:) = 0._wp ; CALL ice_var_snwblow( ziceld, zsnw ) 1733 1733 1734 1734 ! --- evaporation minus precipitation corrected (because of wind blowing on snow) --- !
Note: See TracChangeset
for help on using the changeset viewer.