- Timestamp:
- 2017-09-08T17:09:25+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd.F90
r8512 r8514 97 97 98 98 ! conservation test 99 IF( ln_ limdiachk ) CALL ice_cons_hsm( 0, 'icethd', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b )99 IF( ln_icediachk ) CALL ice_cons_hsm( 0, 'icethd', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b ) 100 100 101 101 CALL ice_var_glo2eqv … … 179 179 180 180 ! In case we bypass open-water ice formation 181 IF( .NOT. ln_ limdO ) qlead(:,:) = 0._wp181 IF( .NOT. ln_icedO ) qlead(:,:) = 0._wp 182 182 ! In case we bypass growing/melting from top and bottom: we suppose ice is impermeable => ocean is isolated from atmosphere 183 IF( .NOT. ln_ limdH ) THEN183 IF( .NOT. ln_icedH ) THEN 184 184 hfx_in(:,:) = ( 1._wp - at_i_b(:,:) ) * ( qns_oce(:,:) + qsr_oce(:,:) ) + qemp_oce(:,:) 185 185 fhtur (:,:) = 0._wp … … 225 225 dh_snowice(1:nidx) = 0._wp ; dh_i_sub (1:nidx) = 0._wp 226 226 ! 227 IF( ln_ limdH ) THEN ! --- growing/melting --- !227 IF( ln_icedH ) THEN ! --- growing/melting --- ! 228 228 CALL ice_thd_dif ! Ice/Snow Temperature profile 229 229 CALL ice_thd_dh ! Ice/Snow thickness … … 236 236 ! 237 237 !!gm please create a new logical (l_thd_lam or a better explicit name) set one for all in icestp.F90 module 238 !!gm l_thd_lam = ln_ limdH .AND. ( ( nn_monocat == 1 .OR. nn_monocat == 4 ) .AND. jpl == 1 )238 !!gm l_thd_lam = ln_icedH .AND. ( ( nn_monocat == 1 .OR. nn_monocat == 4 ) .AND. jpl == 1 ) 239 239 !!gm by the way, the different options associated with nn_monocat =1 to 4 are quite impossible to identify 240 240 !!gm more comment to add when ready the namelist, with an explicit print in the ocean.output 241 IF( ln_ limdH ) THEN241 IF( ln_icedH ) THEN 242 242 IF ( ( nn_monocat == 1 .OR. nn_monocat == 4 ) .AND. jpl == 1 ) THEN 243 243 CALL ice_thd_lam ! --- extra lateral melting if monocat --- ! … … 245 245 END IF 246 246 ! 247 IF( ln_ limdA ) CALL ice_thd_da ! --- lateral melting --- !247 IF( ln_icedA ) CALL ice_thd_da ! --- lateral melting --- ! 248 248 ! 249 249 CALL ice_thd_1d2d( jl, 2 ) ! --- Change units of e_i, e_s from J/m3 to J/m2 --- ! … … 257 257 oa_i(:,:,:) = o_i(:,:,:) * a_i(:,:,:) 258 258 259 IF( ln_ limdiachk ) CALL ice_cons_hsm( 1, 'icethd', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b )259 IF( ln_icediachk ) CALL ice_cons_hsm( 1, 'icethd', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b ) 260 260 ! 261 261 CALL ice_var_zapsmall ! --- remove very small ice concentration (<1e-10) --- ! … … 264 264 IF( jpl > 1 ) CALL ice_itd_rem( kt ) ! --- Transport ice between thickness categories --- ! 265 265 ! 266 IF( ln_ limdO ) CALL ice_thd_lac ! --- frazil ice growing in leads --- !267 ! 268 IF( ln_ limctl ) CALL ice_prt( kt, iiceprt, jiceprt, 1, ' - ice thermodyn. - ' ) ! control print266 IF( ln_icedO ) CALL ice_thd_lac ! --- frazil ice growing in leads --- ! 267 ! 268 IF( ln_icectl ) CALL ice_prt( kt, iiceprt, jiceprt, 1, ' - ice thermodyn. - ' ) ! control print 269 269 IF( ln_ctl ) CALL ice_prt3D( 'icethd' ) ! Control print 270 270 ! … … 539 539 INTEGER :: ios ! Local integer output status for namelist read 540 540 !! 541 NAMELIST/namice_thd/ ln_ limthd, rn_kappa_i, nn_ice_thcon, ln_dqnsice, rn_cdsn,&542 & ln_ limdH, rn_betas, &543 & ln_ limdA, rn_beta, rn_dmin, &544 & ln_ limdO, rn_hnewice, ln_frazil, rn_maxfrazb, rn_vfrazb, rn_Cfrazb, rn_himin, &545 & nn_ limflx541 NAMELIST/namice_thd/ ln_icethd, rn_kappa_i, ln_cndi_U64, ln_cndi_P07, ln_dqns_i, rn_cnd_s, & 542 & ln_icedH, rn_blow_s, & 543 & ln_icedA, rn_beta, rn_dmin, & 544 & ln_icedO, rn_hinew, ln_frazil, rn_maxfraz, rn_vfraz, rn_Cfraz, rn_himin, & 545 & nn_iceflx 546 546 !!------------------------------------------------------------------- 547 547 ! … … 560 560 WRITE(numout,*) '~~~~~~~~~~~~~' 561 561 WRITE(numout,*) ' Namelist namice_thd' 562 WRITE(numout,*) ' Ice thermodynamics (T) or not (F) ln_ limthd = ', ln_limthd562 WRITE(numout,*) ' Ice thermodynamics (T) or not (F) ln_icethd = ', ln_icethd 563 563 WRITE(numout,*) ' -- icethd_dif --' 564 564 WRITE(numout,*) ' extinction radiation parameter in sea ice rn_kappa_i = ', rn_kappa_i 565 WRITE(numout,*) ' switch for comp. of thermal conductivity in the ice nn_ice_thcon = ', nn_ice_thcon 566 WRITE(numout,*) ' change the surface non-solar flux with Tsu or not ln_dqnsice = ', ln_dqnsice 567 WRITE(numout,*) ' thermal conductivity of the snow rn_cdsn = ', rn_cdsn 565 WRITE(numout,*) ' thermal conductivity in the ice (Untersteiner 1964) ln_cndi_U64 = ', ln_cndi_U64 566 WRITE(numout,*) ' thermal conductivity in the ice (Pringle et al 2007) ln_cndi_P07 = ', ln_cndi_P07 567 WRITE(numout,*) ' change the surface non-solar flux with Tsu or not ln_dqns_i = ', ln_dqns_i 568 WRITE(numout,*) ' thermal conductivity of the snow rn_cnd_s = ', rn_cnd_s 568 569 WRITE(numout,*) ' -- icethd_dh --' 569 WRITE(numout,*) ' activate ice thick change from top/bot (T) or not (F) ln_ limdH = ', ln_limdH570 WRITE(numout,*) ' coefficient for ice-lead partition of snowfall rn_b etas = ', rn_betas570 WRITE(numout,*) ' activate ice thick change from top/bot (T) or not (F) ln_icedH = ', ln_icedH 571 WRITE(numout,*) ' coefficient for ice-lead partition of snowfall rn_blow_s = ', rn_blow_s 571 572 WRITE(numout,*) ' -- icethd_da --' 572 WRITE(numout,*) ' activate lateral melting (T) or not (F) ln_ limdA = ', ln_limdA573 WRITE(numout,*) ' activate lateral melting (T) or not (F) ln_icedA = ', ln_icedA 573 574 WRITE(numout,*) ' Coef. beta for lateral melting param. rn_beta = ', rn_beta 574 575 WRITE(numout,*) ' Minimum floe diameter for lateral melting param. rn_dmin = ', rn_dmin 575 576 WRITE(numout,*) ' -- icethd_lac --' 576 WRITE(numout,*) ' activate ice growth in open-water (T) or not (F) ln_ limdO = ', ln_limdO577 WRITE(numout,*) ' ice thickness for lateral accretion rn_h newice = ', rn_hnewice577 WRITE(numout,*) ' activate ice growth in open-water (T) or not (F) ln_icedO = ', ln_icedO 578 WRITE(numout,*) ' ice thickness for lateral accretion rn_hinew = ', rn_hinew 578 579 WRITE(numout,*) ' Frazil ice thickness as a function of wind or not ln_frazil = ', ln_frazil 579 WRITE(numout,*) ' Maximum proportion of frazil ice collecting at bottom rn_maxfraz b = ', rn_maxfrazb580 WRITE(numout,*) ' Threshold relative drift speed for collection of frazil rn_vfraz b = ', rn_vfrazb581 WRITE(numout,*) ' Squeezing coefficient for collection of frazil rn_Cfraz b = ', rn_Cfrazb580 WRITE(numout,*) ' Maximum proportion of frazil ice collecting at bottom rn_maxfraz = ', rn_maxfraz 581 WRITE(numout,*) ' Threshold relative drift speed for collection of frazil rn_vfraz = ', rn_vfraz 582 WRITE(numout,*) ' Squeezing coefficient for collection of frazil rn_Cfraz = ', rn_Cfraz 582 583 WRITE(numout,*) ' -- iceitd --' 583 584 WRITE(numout,*) ' minimum ice thickness rn_himin = ', rn_himin 584 585 WRITE(numout,*) ' -- icestp --' 585 WRITE(numout,*) ' Multicategory heat flux formulation nn_ limflx = ', nn_limflx586 WRITE(numout,*) ' Multicategory heat flux formulation nn_iceflx = ', nn_iceflx 586 587 ENDIF 587 588 ! 588 IF ( rn_hnewice < rn_himin ) CALL ctl_stop( 'STOP', 'ice_thd_init : rn_hnewice should be >= rn_himin' ) 589 IF ( ( ln_cndi_U64 .AND. ln_cndi_P07 ) .OR. ( .NOT.ln_cndi_U64 .AND. .NOT.ln_cndi_P07 ) ) THEN 590 CALL ctl_stop( 'ice_thd_init: choose one and only one formulation for thermal conductivity (ln_cndi_U64 or ln_cndi_P07)' ) 591 ENDIF 592 ! 593 IF ( rn_hinew < rn_himin ) CALL ctl_stop( 'STOP', 'ice_thd_init : rn_hinew should be >= rn_himin' ) 589 594 ! 590 595 IF(lwp) WRITE(numout,*) 591 SELECT CASE( nn_ limflx ) ! LIM3 Multi-category heat flux formulation596 SELECT CASE( nn_iceflx ) ! LIM3 Multi-category heat flux formulation 592 597 CASE( -1 ) 593 IF(lwp) WRITE(numout,*) ' LIM3: use per-category fluxes (nn_ limflx = -1) '594 IF( ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_ limflx for LIM3 in coupled mode must be 0 or 2' )598 IF(lwp) WRITE(numout,*) ' LIM3: use per-category fluxes (nn_iceflx = -1) ' 599 IF( ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_iceflx for LIM3 in coupled mode must be 0 or 2' ) 595 600 CASE( 0 ) 596 IF(lwp) WRITE(numout,*) ' LIM3: use average per-category fluxes (nn_ limflx = 0) '601 IF(lwp) WRITE(numout,*) ' LIM3: use average per-category fluxes (nn_iceflx = 0) ' 597 602 CASE( 1 ) 598 IF(lwp) WRITE(numout,*) ' LIM3: use average then redistribute per-category fluxes (nn_ limflx = 1) '599 IF( ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_ limflx for LIM3 in coupled mode must be 0 or 2' )603 IF(lwp) WRITE(numout,*) ' LIM3: use average then redistribute per-category fluxes (nn_iceflx = 1) ' 604 IF( ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_iceflx for LIM3 in coupled mode must be 0 or 2' ) 600 605 CASE( 2 ) 601 IF(lwp) WRITE(numout,*) ' LIM3: Redistribute a single flux over categories (nn_ limflx = 2) '602 IF( .NOT. ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_ limflx for LIM3 in forced mode cannot be 2' )606 IF(lwp) WRITE(numout,*) ' LIM3: Redistribute a single flux over categories (nn_iceflx = 2) ' 607 IF( .NOT. ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_iceflx for LIM3 in forced mode cannot be 2' ) 603 608 CASE DEFAULT 604 CALL ctl_stop( 'ice_thd_init: LIM3 option, nn_ limflx, should be between -1 and 2' )609 CALL ctl_stop( 'ice_thd_init: LIM3 option, nn_iceflx, should be between -1 and 2' ) 605 610 END SELECT 606 611 !
Note: See TracChangeset
for help on using the changeset viewer.