Changeset 9076
- Timestamp:
- 2017-12-15T14:59:08+01:00 (6 years ago)
- Location:
- branches/2017/dev_merge_2017/NEMOGCM/NEMO
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/ice.F90
r9019 r9076 157 157 INTEGER , PUBLIC :: nlay_i !: number of ice layers 158 158 INTEGER , PUBLIC :: nlay_s !: number of snow layers 159 INTEGER , PUBLIC :: nn_ monocat !: virtual ITD mono-category parameterizations (1-4) or not (0)159 INTEGER , PUBLIC :: nn_virtual_itd !: virtual ITD mono-category parameterizations (1-3) or not (0) 160 160 LOGICAL , PUBLIC :: ln_icedyn !: flag for ice dynamics (T) or not (F) 161 161 LOGICAL , PUBLIC :: ln_icethd !: flag for ice thermo (T) or not (F) -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icedyn.F90
r9019 r9076 38 38 ! ! associated indices: 39 39 INTEGER, PARAMETER :: np_dynFULL = 1 ! full ice dynamics (rheology + advection + ridging/rafting + correction) 40 INTEGER, PARAMETER :: np_dynRHGADV1 = 2 ! no ridging/rafting (rheology + advection + correction) 41 INTEGER, PARAMETER :: np_dynRHGADV2 = 3 ! pure dynamics (rheology + advection) 42 INTEGER, PARAMETER :: np_dynADV = 4 ! only advection w prescribed vel.(rn_uvice + advection) 40 INTEGER, PARAMETER :: np_dynRHGADV = 2 ! pure dynamics (rheology + advection) 41 INTEGER, PARAMETER :: np_dynADV = 3 ! only advection w prescribed vel.(rn_uvice + advection) 43 42 ! 44 43 ! ** namelist (namdyn) ** … … 110 109 CALL ice_cor ( kt , 1 ) ! -- Corrections 111 110 112 CASE ( np_dynRHGADV1 ) !== no ridge/raft ==! (mono cat. case 2) 113 CALL ice_dyn_rhg ( kt ) ! -- rheology 114 CALL ice_dyn_adv ( kt ) ! -- advection of ice 115 CALL Hpiling ! -- simple pile-up (replaces ridging/rafting) 116 CALL ice_cor ( kt , 1 ) ! -- Corrections 117 118 CASE ( np_dynRHGADV2 ) !== no ridge/raft & no corrections ==! 111 CASE ( np_dynRHGADV ) !== no ridge/raft & no corrections ==! 119 112 CALL ice_dyn_rhg ( kt ) ! -- rheology 120 113 CALL ice_dyn_adv ( kt ) ! -- advection of ice … … 250 243 ioptio = 0 251 244 ! !--- full dynamics (rheology + advection + ridging/rafting + correction) 252 IF( ln_dynFULL .AND. nn_monocat /= 2 ) THEN ; ioptio = ioptio + 1 ; nice_dyn = np_dynFULL ; ENDIF 253 ! !--- dynamics without ridging/rafting (rheology + advection + correction) 254 IF( ln_dynFULL .AND. nn_monocat == 2 ) THEN ; ioptio = ioptio + 1 ; nice_dyn = np_dynRHGADV1 ; ENDIF 245 IF( ln_dynFULL ) THEN ; ioptio = ioptio + 1 ; nice_dyn = np_dynFULL ; ENDIF 255 246 ! !--- dynamics without ridging/rafting and corr (rheology + advection) 256 IF( ln_dynRHGADV ) THEN ; ioptio = ioptio + 1 ; nice_dyn = np_dynRHGADV2; ENDIF247 IF( ln_dynRHGADV ) THEN ; ioptio = ioptio + 1 ; nice_dyn = np_dynRHGADV ; ENDIF 257 248 ! !--- advection only with prescribed ice velocities (from namelist) 258 IF( ln_dynADV 249 IF( ln_dynADV ) THEN ; ioptio = ioptio + 1 ; nice_dyn = np_dynADV ; ENDIF 259 250 ! 260 251 IF( ioptio /= 1 ) CALL ctl_stop( 'ice_dyn_init: one and only one ice dynamics option has to be defined ' ) -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/iceforcing.F90
r9019 r9076 146 146 SELECT CASE( nice_jules ) 147 147 CASE( np_jules_ACTIVE ) ! compute conduction flux and surface temperature (as in Jules surface module) 148 CALL blk_ice_qcn ( nn_ monocat, t_su, t_bo, h_s, h_i )148 CALL blk_ice_qcn ( nn_virtual_itd, t_su, t_bo, h_s, h_i ) 149 149 END SELECT 150 150 CASE ( jp_purecpl ) !--- coupled formulation -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icestp.F90
r9019 r9076 285 285 !!------------------------------------------------------------------- 286 286 INTEGER :: ios ! Local integer output status for namelist read 287 NAMELIST/nampar/ jpl, nlay_i, nlay_s, nn_ monocat, ln_icedyn, ln_icethd, rn_amax_n, rn_amax_s, &287 NAMELIST/nampar/ jpl, nlay_i, nlay_s, nn_virtual_itd, ln_icedyn, ln_icethd, rn_amax_n, rn_amax_s, & 288 288 & cn_icerst_in, cn_icerst_indir, cn_icerst_out, cn_icerst_outdir 289 289 !!------------------------------------------------------------------- … … 306 306 WRITE(numout,*) ' number of ice layers nlay_i = ', nlay_i 307 307 WRITE(numout,*) ' number of snow layers nlay_s = ', nlay_s 308 WRITE(numout,*) ' virtual ITD mono-category param (1-4) or not (0) nn_monocat = ', nn_monocat308 WRITE(numout,*) ' virtual ITD param for jpl=1 (1-3) or not (0) nn_virtual_itd = ', nn_virtual_itd 309 309 WRITE(numout,*) ' Ice dynamics (T) or not (F) ln_icedyn = ', ln_icedyn 310 310 WRITE(numout,*) ' Ice thermodynamics (T) or not (F) ln_icethd = ', ln_icethd … … 314 314 ! 315 315 ! !--- check consistency 316 IF ( jpl > 1 .AND. nn_ monocat== 1 ) THEN317 nn_ monocat= 0316 IF ( jpl > 1 .AND. nn_virtual_itd == 1 ) THEN 317 nn_virtual_itd = 0 318 318 IF(lwp) WRITE(numout,*) 319 IF(lwp) WRITE(numout,*) ' nn_ monocat forced to 0 as jpl>1, i.e. multi-category case is chosen'319 IF(lwp) WRITE(numout,*) ' nn_virtual_itd forced to 0 as jpl>1, no need with multiple categories to emulate them' 320 320 ENDIF 321 321 ! … … 323 323 CALL ctl_stop( 'STOP', 'par_init: in coupled mode, nn_cats_cpl should be either 1 or jpl' ) 324 324 ENDIF 325 ! IF ( jpl == 1 .AND. nn_monocat == 0 ) THEN326 ! CALL ctl_stop( 'STOP', 'par_init : if jpl=1 then nn_monocat should be between 1 and 4' )327 ! ENDIF328 325 ! 329 326 IF( ln_bdy .AND. ln_icediachk ) CALL ctl_warn('par_init: online conservation check does not work with BDY') -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icethd.F90
r9019 r9076 82 82 !! - call ice_thd_sal for ice desalination 83 83 !! - call ice_thd_temp to retrieve temperature from ice enthalpy 84 !! - call ice_thd_lam for extra lateral ice melt if monocat84 !! - call ice_thd_lam for extra lateral ice melt if active virtual thickness distribution 85 85 !! - call ice_thd_da for lateral ice melt 86 86 !! - back to the geographic grid … … 245 245 ! 246 246 !!gm please create a new logical (l_thd_lam or a better explicit name) set one for all in icestp.F90 module 247 !!gm l_thd_lam = ln_icedH .AND. ( ( nn_ monocat == 1 .OR. nn_monocat== 4 ) .AND. jpl == 1 )248 !!gm by the way, the different options associated with nn_ monocat=1 to 4 are quite impossible to identify247 !!gm l_thd_lam = ln_icedH .AND. ( ( nn_virtual_itd == 1 .OR. nn_virtual_itd == 4 ) .AND. jpl == 1 ) 248 !!gm by the way, the different options associated with nn_virtual_itd =1 to 4 are quite impossible to identify 249 249 !!gm more comment to add when ready the namelist, with an explicit print in the ocean.output 250 250 IF( ln_icedH ) THEN 251 IF ( ( nn_ monocat == 1 .OR. nn_monocat == 4) .AND. jpl == 1 ) THEN252 CALL ice_thd_lam ! --- extra lateral melting if monocat--- !251 IF ( ( nn_virtual_itd == 1 .OR. nn_virtual_itd == 3 ) .AND. jpl == 1 ) THEN 252 CALL ice_thd_lam ! --- extra lateral melting if virtual_itd --- ! 253 253 END IF 254 254 END IF … … 316 316 !! *** ROUTINE ice_thd_lam *** 317 317 !! 318 !! ** Purpose : Lateral melting in case monocategory318 !! ** Purpose : Lateral melting in case virtual_itd 319 319 !! ( dA = A/2h dh ) 320 320 !!----------------------------------------------------------------------- -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icethd_zdf_bl99.F90
r9068 r9076 252 252 zghe(1:npti) = 1._wp 253 253 ! 254 SELECT CASE ( nn_ monocat)255 ! 256 CASE ( 1 , 3)254 SELECT CASE ( nn_virtual_itd ) 255 ! 256 CASE ( 1 , 2 ) 257 257 ! 258 258 zepsilon = 0.1_wp -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk.F90
r9033 r9076 975 975 976 976 977 SUBROUTINE blk_ice_qcn( k_ monocat, ptsu, ptb, phs, phi )977 SUBROUTINE blk_ice_qcn( k_virtual_itd, ptsu, ptb, phs, phi ) 978 978 !!--------------------------------------------------------------------- 979 979 !! *** ROUTINE blk_ice_qcn *** … … 990 990 !! 991 991 !!--------------------------------------------------------------------- 992 INTEGER , INTENT(in ) :: k_ monocat! single-category option993 REAL(wp), DIMENSION(:,:,:), INTENT(inout) :: ptsu ! sea ice / snow surface temperature994 REAL(wp), DIMENSION(:,:) , INTENT(in ) :: ptb ! sea ice base temperature995 REAL(wp), DIMENSION(:,:,:), INTENT(in ) :: phs ! snow thickness996 REAL(wp), DIMENSION(:,:,:), INTENT(in ) :: phi ! sea ice thickness992 INTEGER , INTENT(in ) :: k_virtual_itd ! single-category option 993 REAL(wp), DIMENSION(:,:,:), INTENT(inout) :: ptsu ! sea ice / snow surface temperature 994 REAL(wp), DIMENSION(:,:) , INTENT(in ) :: ptb ! sea ice base temperature 995 REAL(wp), DIMENSION(:,:,:), INTENT(in ) :: phs ! snow thickness 996 REAL(wp), DIMENSION(:,:,:), INTENT(in ) :: phi ! sea ice thickness 997 997 ! 998 998 INTEGER , PARAMETER :: nit = 10 ! number of iterations … … 1013 1013 ! I Enhanced conduction factor ! 1014 1014 ! -------------------------------------! 1015 ! Emulates the enhancement of conduction by unresolved thin ice (k_ monocat = 1/3)1015 ! Emulates the enhancement of conduction by unresolved thin ice (k_virtual_itd = 1/2) 1016 1016 ! Fichefet and Morales Maqueda, JGR 1997 1017 1017 ! 1018 1018 zgfac(:,:,:) = 1._wp 1019 1019 1020 SELECT CASE ( k_ monocat )1021 ! 1022 CASE ( 1 , 3)1020 SELECT CASE ( k_virtual_itd ) 1021 ! 1022 CASE ( 1 , 2 ) 1023 1023 ! 1024 1024 zfac = 1._wp / ( rn_cnd_s + rcdic )
Note: See TracChangeset
for help on using the changeset viewer.