- Timestamp:
- 2017-09-15T20:07:33+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd.F90
r8522 r8531 28 28 & fr1_i0, fr2_i0 29 29 USE ice1D ! thermodynamic sea-ice variables 30 USE icethd_ dif ! vertical diffusion30 USE icethd_zdf ! vertical diffusion 31 31 USE icethd_dh ! ice-snow growth and melt 32 32 USE icethd_da ! lateral melting 33 33 USE icethd_sal ! ice salinity 34 34 USE icethd_ent ! ice enthalpy redistribution 35 USE icethd_ lac! lateral accretion35 USE icethd_do ! lateral accretion 36 36 USE iceitd ! remapping thickness distribution 37 37 USE icetab ! 1D <==> 2D transformation … … 51 51 PUBLIC ice_thd_init ! called by ice_init 52 52 53 !!** namelist (namthd) ** 54 LOGICAL :: ln_icedH ! activate ice thickness change from growing/melting (T) or not (F) 55 LOGICAL :: ln_icedA ! activate lateral melting param. (T) or not (F) 56 LOGICAL :: ln_icedO ! activate ice growth in open-water (T) or not (F) 57 LOGICAL :: ln_icedS ! activate gravity drainage and flushing (T) or not (F) 58 53 59 !! * Substitutions 54 60 # include "vectopt_loop_substitute.h90" … … 70 76 !! at the ice base, snow acc.,heat budget of the leads) 71 77 !! - selection of the icy points and put them in an array 72 !! - call ice_thd_ dif for vertical heat diffusion78 !! - call ice_thd_zdf for vertical heat diffusion 73 79 !! - call ice_thd_dh for vertical ice growth and melt 74 80 !! - call ice_thd_ent for enthalpy remapping 75 81 !! - call ice_thd_sal for ice desalination 76 82 !! - call ice_thd_temp to retrieve temperature from ice enthalpy 83 !! - call ice_thd_lam for extra lateral ice melt if monocat 84 !! - call ice_thd_da for lateral ice melt 77 85 !! - back to the geographic grid 78 86 !!--------------------------------------------------------------------- … … 223 231 ! 224 232 IF( ln_icedH ) THEN ! --- growing/melting --- ! 225 CALL ice_thd_ dif ! Ice/Snow Temperature profile233 CALL ice_thd_zdf ! Ice/Snow Temperature profile 226 234 CALL ice_thd_dh ! Ice/Snow thickness 227 235 CALL ice_thd_ent( e_i_1d(1:nidx,:) ) ! Ice enthalpy remapping 228 236 ENDIF 229 237 ! 230 CALL ice_thd_sal 238 CALL ice_thd_sal( ln_icedS ) ! --- Ice salinity --- ! 231 239 ! 232 240 CALL ice_thd_temp ! --- temperature update --- ! … … 261 269 IF( jpl > 1 ) CALL ice_itd_rem( kt ) ! --- Transport ice between thickness categories --- ! 262 270 ! 263 IF( ln_icedO ) CALL ice_thd_ lac! --- frazil ice growing in leads --- !271 IF( ln_icedO ) CALL ice_thd_do ! --- frazil ice growing in leads --- ! 264 272 ! 265 273 ! controls … … 523 531 !! *** ROUTINE ice_thd_init *** 524 532 !! 525 !! ** Purpose : Physical constants and parameters linked to the ice526 !! thermodynamics533 !! ** Purpose : Physical constants and parameters associated with 534 !! ice thermodynamics 527 535 !! 528 !! ** Method : Read the nam ice_thd namelist and check the ice-thermo529 !! parameter valuescalled at the first timestep (nit000)536 !! ** Method : Read the namthd namelist and check the parameters 537 !! called at the first timestep (nit000) 530 538 !! 531 !! ** input : Namelist nam icether539 !! ** input : Namelist namthd 532 540 !!------------------------------------------------------------------- 533 541 INTEGER :: ios ! Local integer output status for namelist read 534 542 !! 535 NAMELIST/namice_thd/ rn_kappa_i, ln_cndi_U64, ln_cndi_P07, ln_dqns_i, rn_cnd_s, & 536 & ln_icedH, rn_blow_s, & 537 & ln_icedA, rn_beta, rn_dmin, & 538 & ln_icedO, rn_hinew, ln_frazil, rn_maxfraz, rn_vfraz, rn_Cfraz, & 539 & nn_iceflx 543 NAMELIST/namthd/ ln_icedH, ln_icedA, ln_icedO, ln_icedS 540 544 !!------------------------------------------------------------------- 541 545 ! 542 REWIND( numnam_ice_ref ) ! Namelist nam ice_thd in reference namelist : Ice thermodynamics543 READ ( numnam_ice_ref, nam ice_thd, IOSTAT = ios, ERR = 901)544 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_thd in reference namelist', lwp )545 546 REWIND( numnam_ice_cfg ) ! Namelist nam ice_thd in configuration namelist : Ice thermodynamics547 READ ( numnam_ice_cfg, nam ice_thd, IOSTAT = ios, ERR = 902 )548 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_thd in configuration namelist', lwp )549 IF(lwm) WRITE ( numoni, nam ice_thd )546 REWIND( numnam_ice_ref ) ! Namelist namthd in reference namelist : Ice thermodynamics 547 READ ( numnam_ice_ref, namthd, IOSTAT = ios, ERR = 901) 548 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd in reference namelist', lwp ) 549 550 REWIND( numnam_ice_cfg ) ! Namelist namthd in configuration namelist : Ice thermodynamics 551 READ ( numnam_ice_cfg, namthd, IOSTAT = ios, ERR = 902 ) 552 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd in configuration namelist', lwp ) 553 IF(lwm) WRITE ( numoni, namthd ) 550 554 ! 551 555 ! 552 556 IF(lwp) THEN ! control print 553 WRITE(numout,*) 'ice_thd_init : Ice Thermodynamics' 554 WRITE(numout,*) '~~~~~~~~~~~~~' 555 WRITE(numout,*) ' Namelist namice_thd' 556 WRITE(numout,*) ' -- icethd_dif --' 557 WRITE(numout,*) ' extinction radiation parameter in sea ice rn_kappa_i = ', rn_kappa_i 558 WRITE(numout,*) ' thermal conductivity in the ice (Untersteiner 1964) ln_cndi_U64 = ', ln_cndi_U64 559 WRITE(numout,*) ' thermal conductivity in the ice (Pringle et al 2007) ln_cndi_P07 = ', ln_cndi_P07 560 WRITE(numout,*) ' change the surface non-solar flux with Tsu or not ln_dqns_i = ', ln_dqns_i 561 WRITE(numout,*) ' thermal conductivity of the snow rn_cnd_s = ', rn_cnd_s 562 WRITE(numout,*) ' -- icethd_dh --' 563 WRITE(numout,*) ' activate ice thick change from top/bot (T) or not (F) ln_icedH = ', ln_icedH 564 WRITE(numout,*) ' coefficient for ice-lead partition of snowfall rn_blow_s = ', rn_blow_s 565 WRITE(numout,*) ' -- icethd_da --' 566 WRITE(numout,*) ' activate lateral melting (T) or not (F) ln_icedA = ', ln_icedA 567 WRITE(numout,*) ' Coef. beta for lateral melting param. rn_beta = ', rn_beta 568 WRITE(numout,*) ' Minimum floe diameter for lateral melting param. rn_dmin = ', rn_dmin 569 WRITE(numout,*) ' -- icethd_lac --' 570 WRITE(numout,*) ' activate ice growth in open-water (T) or not (F) ln_icedO = ', ln_icedO 571 WRITE(numout,*) ' ice thickness for lateral accretion rn_hinew = ', rn_hinew 572 WRITE(numout,*) ' Frazil ice thickness as a function of wind or not ln_frazil = ', ln_frazil 573 WRITE(numout,*) ' Maximum proportion of frazil ice collecting at bottom rn_maxfraz = ', rn_maxfraz 574 WRITE(numout,*) ' Threshold relative drift speed for collection of frazil rn_vfraz = ', rn_vfraz 575 WRITE(numout,*) ' Squeezing coefficient for collection of frazil rn_Cfraz = ', rn_Cfraz 576 WRITE(numout,*) ' -- icestp --' 577 WRITE(numout,*) ' Multicategory heat flux formulation nn_iceflx = ', nn_iceflx 557 WRITE(numout,*) 'ice_thd_init: Ice Thermodynamics' 558 WRITE(numout,*) '~~~~~~~~~~~~' 559 WRITE(numout,*) ' Namelist namthd:' 560 WRITE(numout,*) ' activate ice thick change from top/bot (T) or not (F) ln_icedH = ', ln_icedH 561 WRITE(numout,*) ' activate lateral melting (T) or not (F) ln_icedA = ', ln_icedA 562 WRITE(numout,*) ' activate ice growth in open-water (T) or not (F) ln_icedO = ', ln_icedO 563 WRITE(numout,*) ' activate gravity drainage and flushing (T) or not (F) ln_icedS = ', ln_icedS 564 ENDIF 565 ! 566 CALL ice_thd_zdf_init ! set ice heat diffusion parameters 567 IF( ln_icedA ) CALL ice_thd_da_init ! set ice lateral melting parameters 568 IF( ln_icedO ) CALL ice_thd_do_init ! set ice growth in open water parameters 569 CALL ice_thd_sal_init ! set ice salinity parameters 570 ! 571 IF( ln_icedS .AND. nn_icesal == 1 ) THEN 572 ln_icedS = .FALSE. 573 CALL ctl_warn('ln_icedS is set to false since constant ice salinity is chosen (nn_icesal=1)') 578 574 ENDIF 579 !580 IF ( ( ln_cndi_U64 .AND. ln_cndi_P07 ) .OR. ( .NOT.ln_cndi_U64 .AND. .NOT.ln_cndi_P07 ) ) THEN581 CALL ctl_stop( 'ice_thd_init: choose one and only one formulation for thermal conductivity (ln_cndi_U64 or ln_cndi_P07)' )582 ENDIF583 !584 IF ( rn_hinew < rn_himin ) CALL ctl_stop( 'ice_thd_init : rn_hinew should be >= rn_himin' )585 !586 IF(lwp) WRITE(numout,*)587 SELECT CASE( nn_iceflx ) ! LIM3 Multi-category heat flux formulation588 CASE( -1 )589 IF(lwp) WRITE(numout,*) ' LIM3: use per-category fluxes (nn_iceflx = -1) '590 IF( ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_iceflx for LIM3 in coupled mode must be 0 or 2' )591 CASE( 0 )592 IF(lwp) WRITE(numout,*) ' LIM3: use average per-category fluxes (nn_iceflx = 0) '593 CASE( 1 )594 IF(lwp) WRITE(numout,*) ' LIM3: use average then redistribute per-category fluxes (nn_iceflx = 1) '595 IF( ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_iceflx for LIM3 in coupled mode must be 0 or 2' )596 CASE( 2 )597 IF(lwp) WRITE(numout,*) ' LIM3: Redistribute a single flux over categories (nn_iceflx = 2) '598 IF( .NOT. ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_iceflx for LIM3 in forced mode cannot be 2' )599 CASE DEFAULT600 CALL ctl_stop( 'ice_thd_init: LIM3 option, nn_iceflx, should be between -1 and 2' )601 END SELECT602 575 ! 603 576 END SUBROUTINE ice_thd_init
Note: See TracChangeset
for help on using the changeset viewer.