Changeset 27 for branches/2016
- Timestamp:
- 10/06/16 11:31:57 (8 years ago)
- Location:
- branches/2016/dev_v3.20_2016_platelet
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_v3.20_2016_platelet/INPUT/ISPOL/source_3.20/icephys.param
r6 r27 51 51 # delta_cw ! CW88 grav. drainage eff.(1.68e-7 for CW88 or 0.588e-7 for V08 value) 52 52 1.68e-7 53 # rn_e_newice ! Liquid fraction in new ice (max fraction due to flottability of ice) 54 0.75 55 # nn_thcond ! Type of thermal conductivity (1- Pringle et al 2007; 2- Mushy layer) 56 2 53 57 # 54 58 #-------------------------------------------------------------------------------------------------- -
branches/2016/dev_v3.20_2016_platelet/SCRIPTS/lim1d_ispol.nqs
r6 r27 9 9 USERNICK="Martouf" # user nickname 10 10 11 EXP_ID="test_3.20_ISPOL_ a"# name of the experiment ### CHANGE11 EXP_ID="test_3.20_ISPOL_01" # name of the experiment ### CHANGE 12 12 SOURCE="source_3.20" # version of the sources 13 13 TS="1d" # time step (1h or 1d) … … 17 17 SUBDIR=`pwd` 18 18 19 MAINDIR="$HOME/Boulot/CODES/LIM1D /2015_v3.20" ### CHANGE19 MAINDIR="$HOME/Boulot/CODES/LIM1D_SVN/dev_v3.20_2016_platelet" ### CHANGE 20 20 21 21 SCRATCHDIR="$MAINDIR/SCRATCH/$EXP_ID" # SCRATCH - temporary directory on which code is run … … 24 24 INFILEDIR="$MAINDIR/INPUT/$CONF/$SOURCE" # INPUT - initialization, forcing & param files 25 25 26 GRAPHDIR="$HOME/Boulot/SCIENCE/PLOT_SCRIPTS/LIM1D _BIO/IDL/$CONF" # IDL plots26 GRAPHDIR="$HOME/Boulot/SCIENCE/PLOT_SCRIPTS/LIM1D/IDL/$CONF" # IDL plots 27 27 28 28 ####################################################################################### -
branches/2016/dev_v3.20_2016_platelet/SOURCES/source_3.20/ice.com
r6 r27 181 181 182 182 COMMON/barrowconf/sal_read(11), hi_read(11), hgins, hnins, 183 & tsuins, oce_sal, oce_flx, num_sal, nday1,183 & tsuins, s_w, oce_flx, num_sal, nday1, 184 184 & i_sal 185 185 … … 191 191 COMMON/fluidtpt/flu_beta, rad_io, 192 192 & frtr_si_phy, qsummer, d_br_mol, d_br_tur, 193 & ra_c, ra_smooth, e_thr_flu, delta_cw, ini_swi, 193 & ra_c, ra_smooth, e_thr_flu, delta_cw, 194 & rn_e_newice, ini_swi, 195 & nn_thcond, 194 196 & s_ini, ln_flo, ln_flu, ln_grd 195 197 -
branches/2016/dev_v3.20_2016_platelet/SOURCES/source_3.20/ice_bio_remap.f
r6 r27 169 169 170 170 IF ( ln_trbo ) 171 & ch_bo_bio(jn) = e_skel * c_w_bio(jn) * MAX( dh_i_bott(ji),172 & 0.0 )171 & ch_bo_bio(jn) = rn_e_newice * c_w_bio(jn) * 172 & MAX( dh_i_bott(ji), 0.0 ) 173 173 174 174 IF ( ln_trsi ) -
branches/2016/dev_v3.20_2016_platelet/SOURCES/source_3.20/ice_brine.f
r6 r27 48 48 sbr_bio(layer) = -21.4*tc_bio(layer) - 0.886*zt2 -0.0107*zt3 ! Brine 3rd order salinity 49 49 50 rhobr_bio(layer) = rho0 + beta_ocs*( sbr_bio(layer)- oce_sal) ! Brine density50 rhobr_bio(layer) = rho0 + beta_ocs*( sbr_bio(layer)-s_w ) ! Brine density 51 51 52 52 END DO -
branches/2016/dev_v3.20_2016_platelet/SOURCES/source_3.20/ice_output.f
r6 r27 208 208 WRITE(numout,*) ' fsbp dimension created ' 209 209 210 CALL CF_CREATE_VAR(" oce_sal","Ocean Salinity",210 CALL CF_CREATE_VAR("s_w","Ocean Salinity", 211 211 . "kgNaCl/dm3","time","-","-","-" ) 212 WRITE(numout,*) ' oce_saldimension created '212 WRITE(numout,*) ' s_w dimension created ' 213 213 214 214 ! Forcing … … 590 590 & 1, 1, 1, REAL(fsbp) ) 591 591 592 CALL CF_WRITE (filenc, ' oce_sal', numit-nstart+1,593 & 1, 1, 1, REAL( oce_sal) )592 CALL CF_WRITE (filenc, 's_w', numit-nstart+1, 593 & 1, 1, 1, REAL(s_w) ) 594 594 595 595 ! Forcing -
branches/2016/dev_v3.20_2016_platelet/SOURCES/source_3.20/ice_phy_ini.f
r6 r27 86 86 CALL CF_CLOSE (filenc) ! close nc file 87 87 88 t_bo_b(ji) = 273.15-tmut* oce_sal88 t_bo_b(ji) = 273.15-tmut*s_w 89 89 90 90 !---------------------- -
branches/2016/dev_v3.20_2016_platelet/SOURCES/source_3.20/ice_phy_param.f
r6 r27 108 108 rho0 = 1025.0 ! ocean mean density 109 109 cpw = 3.99d+03 ! seawater specific heat 110 oce_sal= 34.0 ! 34. is the control110 s_w = 34.0 ! 34. is the control 111 111 112 112 visc_br = 1.79e-3 ! dynamic viscosity of water at 0C … … 191 191 READ(25,*) delta_cw ! Cox and weeks gravity drainage parameter 192 192 READ(25,*) 193 READ(25,*) rn_e_newice ! Liquid fraction in new ice 194 READ(25,*) 195 READ(25,*) nn_thcond ! Type of thermal conductivity computation 196 READ(25,*) 193 197 READ(25,*) 194 198 READ(25,*) … … 251 255 WRITE(numout,*) ' gravdr :', gravdr 252 256 WRITE(numout,*) ' delta_cw :', delta_cw 257 WRITE(numout,*) ' rn_e_newice:', rn_e_newice 258 WRITE(numout,*) ' nn_thcond :', nn_thcond 253 259 WRITE(numout,*) ' emig :', emig 254 260 WRITE(numout,*) ' fpar_fsw :', fpar_fsw -
branches/2016/dev_v3.20_2016_platelet/SOURCES/source_3.20/ice_phy_remap.f
r6 r27 436 436 ! 437 437 ! basal new ice salt content 438 zsh_i_new = e_skel * oce_sal* MAX ( dh_i_bott(ji), 0.0 )438 zsh_i_new = rn_e_newice * s_w * MAX ( dh_i_bott(ji), 0.0 ) 439 439 ! snow ice salt content 440 s_i_snic = ( rhog - rhon ) / rhog * oce_sal *440 s_i_snic = ( rhog - rhon ) / rhog * s_w * 441 441 & frtr_si_phy ! snow ice salinity 442 442 zsh_i_sni = s_i_snic * dh_snowice(ji) … … 470 470 IF ( ln_write ) THEN 471 471 WRITE(numout,*) ' frtr_si_phy:', frtr_si_phy 472 WRITE(numout,*) ' oce_sal : ', oce_sal472 WRITE(numout,*) ' s_w : ', s_w 473 473 WRITE(numout,*) ' s_i_snic : ', s_i_snic 474 474 WRITE(numout,*) ' zsh_i0 : ', zsh_i0(ntop0:nbot0) -
branches/2016/dev_v3.20_2016_platelet/SOURCES/source_3.20/ice_sal_diff.f
r6 r27 194 194 !-------------------- 195 195 DO layer = 1, nlay_i 196 zrhodiff(layer) = - beta_ocs * ( oce_sal- zsigma(layer) )196 zrhodiff(layer) = - beta_ocs * ( s_w - zsigma(layer) ) 197 197 END DO 198 198 … … 444 444 ztrid(nlay_i,3) = 0. 445 445 zind(nlay_i) = z_sbr_i(nlay_i) + za(nlay_i) * ( zb(nlay_i) 446 & - zc(nlay_i) ) * oce_sal446 & - zc(nlay_i) ) * s_w 447 447 448 448 IF ( ln_write ) THEN … … 523 523 zfb = - e_i_b(nlay_i) * 524 524 & ( diff_br(nlay_i) * 2.0 / deltaz_i_phy(nlay_i) * 525 & ( z_sbr_i(nlay_i) - oce_sal) + w_flood * ( z_flood *526 & oce_sal+ ( 1. - z_flood ) * z_sbr_i(nlay_i) ) )525 & ( z_sbr_i(nlay_i) - s_w ) + w_flood * ( z_flood * 526 & s_w + ( 1. - z_flood ) * z_sbr_i(nlay_i) ) ) 527 527 & - e_i_b(nlay_i) * w_flush * z_sbr_i(nlay_i) 528 528 ! & - qsummer * z_sbr_i(nlay_i) / ddtb -
branches/2016/dev_v3.20_2016_platelet/SOURCES/source_3.20/ice_sal_diff_CW.f
r6 r27 429 429 & * diff_br(nlay_i) * 2.0 430 430 & / deltaz_i_phy(nlay_i) * ( z_sbr_i(nlay_i) 431 & - oce_sal) ) * zswitch_open431 & - s_w ) ) * zswitch_open 432 432 & + zswitchs * ( - qsummer * z_sbr_i(nlay_i) ) 433 433 & / ddtb -
branches/2016/dev_v3.20_2016_platelet/SOURCES/source_3.20/ice_th_dh.f
r6 r27 315 315 ! Basal growth 316 316 !-------------- 317 ! Initial value (tested 1D, can be anything between 1 and 20)318 s_i_new = 10.0319 num_iter_max = 10320 321 ! the growth rate (dh_i_bott) is function of the new ice322 ! heat content (q_i_b(nlay_i+1)). q_i_b depends on the new ice323 ! salinity (snewice). snewice depends on dh_i_bott324 ! it converges quickly, so, no problem325 326 ! Iterative procedure327 317 IF ( ( fc_bo_i(ji) + fbbqb(ji) ) .LT. 0.0 ) THEN 328 329 IF ( l_write ) WRITE(numout,*) ' Energy available for 330 & basal growth : ', 331 & fc_bo_i(ji) + fbbqb(ji) 332 333 DO iter = 1, num_iter_max 334 tmelts = - tmut * s_i_new + tpw ! Melting point in K 335 q_i_b(ji,nlay_i+1) = rhog*( cpg*(tmelts-t_bo_b(ji)) 336 & + lfus*( 1.0-(tmelts-tpw) 337 & / (t_bo_b(ji) - tpw) ) 338 & - cpw*(tmelts-tpw) ) 339 340 ! Bottom growth rate = - F*dt / q 341 dh_i_bott(ji) = - ddtb*(fc_bo_i(ji) + fbbqb(ji) ) 342 & / q_i_b(ji,nlay_i+1) 343 ! 344 ! New ice salinity ( Cox and Weeks, JGR, 1988 ) 345 ! 346 ! zswi2 (1) if dh_i_bott/rdt .GT. 3.6e-7 347 ! zswi12 (1) if dh_i_bott/rdt .LT. 3.6e-7 and .GT. 2.0e-8 348 ! zswi1 (1) if dh_i_bott/rdt .LT. 2.0e-8 349 ! 350 zgrr = MIN( 1.0e-3, 351 & MAX ( dh_i_bott(ji) / ddtb , zeps ) ) 352 zswi2 = MAX( 0.0 , SIGN( 1.0d0 , zgrr - 3.6e-7 ) ) 353 zswi12 = MAX( 0.0 , SIGN( 1.0d0 , zgrr - 2.0e-8 ) ) * 354 & ( 1.0 - zswi2 ) 355 zswi1 = 1. - zswi2 * zswi12 356 zfracs = zswi1 * 0.12 + 357 & zswi12 * ( 0.8925 + 0.0568 * 358 & LOG( 100.0 * zgrr ) ) + 359 & zswi2 * 0.26 / 360 & ( 0.26 + 0.74 * EXP ( - 724300.0 * zgrr ) ) 361 zfracs = 1. 362 zds = zfracs * oce_sal - s_i_new 363 s_i_new = zfracs * oce_sal 364 365 ! the brine volume in the skeletal layer is equal to f 366 e_skel = zfracs 367 368 ! salt flux due to initial salt entrapment 369 fsbp = oce_sal * ( 1. - zfracs ) * dh_i_bott(ji) / ddtb * 370 & rhog / 1000. 371 372 ! WRITE(numout,*) 373 ! WRITE(numout,*) ' ddtb : ', ddtb 374 ! WRITE(numout,*) ' zgrr : ', zgrr 375 ! WRITE(numout,*) ' zswi12 : ', zswi12 376 ! WRITE(numout,*) ' zswi1 : ', zswi1 377 ! WRITE(numout,*) ' zswi2 : ', zswi2 378 ! WRITE(numout,*) ' dh_i_bott : ', dh_i_bott(ji) 379 ! WRITE(numout,*) ' oce_sal : ', oce_sal 380 ! WRITE(numout,*) ' zfracs : ', zfracs 381 ! WRITE(numout,*) ' s_i_new : ', s_i_new 382 ! WRITE(numout,*) 383 384 END DO ! iter 385 ENDIF ! fc_bo_i 386 387 IF ( l_write ) THEN 388 WRITE(numout,*) ' e_skel : ', e_skel 389 WRITE(numout,*) 390 ENDIF 391 392 ! Final values 393 IF ( (fc_bo_i(ji)+fbbqb(ji)) .LT. 0.0 ) THEN 394 ! New ice salinity must not exceed 15 psu 395 zoldsinew = s_i_new 396 ! TEST MARTIN NOV 2010 this line should be removed in future versions 397 s_i_new = MIN( s_i_new , s_i_max ) 398 ! Metling point in K 399 tmelts = - tmut * s_i_new + tpw 318 319 s_i_new = rn_e_newice * s_w ! New ice salinity (g/kg) 320 321 ztmelts = - tmut * s_i_new + tpw ! Melting point in K 322 400 323 ! New ice heat content (Bitz and Lipscomb, 1999) 324 ! should be zdE instead 401 325 q_i_b(ji,nlay_i+1) = rhog*( cpg*(tmelts-t_bo_b(ji)) 402 326 & + lfus*( 1.0-(tmelts-tpw) 403 327 & / (t_bo_b(ji) - tpw) ) 404 328 & - cpw*(tmelts-tpw) ) 329 330 zE1 = - cpw * t_bo_b(ji) ! specific enthalpy of sea water 331 zE2 = q_i_b(ji,nlay_i+1) ! specific enthalpy of new sea ice 332 333 zdE = zE2 - zE1 334 405 335 dh_i_bott(ji) = - ddtb*(fc_bo_i(ji) + fbbqb(ji) ) 406 & / q_i_b(ji,nlay_i+1) 336 & / zdE 337 338 ! salt flux due to initial salt entrapment (keep ?) 339 fsbp = s_w * ( 1. - rn_e_newice ) * dh_i_bott(ji) / ddtb * 340 & rhog / 1000. 341 407 342 IF ( l_write ) WRITE(numout,*) ' dh_i_bott : ', dh_i_bott(ji) 408 409 ENDIF 343 344 ENDIF 410 345 411 346 !----------------- -
branches/2016/dev_v3.20_2016_platelet/SOURCES/source_3.20/ice_th_diff.f
r6 r27 59 59 INTEGER numeqmin, numeqmax, numeq 60 60 DIMENSION ztcond_i(0:nlay_i), 61 & ze(0:nlay_i), 62 & ztc(0:nlay_i), 61 63 & zkappa_s(0:nlay_s), 62 64 & zkappa_i(0:nlay_i),ztstemp(0:nlay_s),ztitemp(0:nlay_i), … … 122 124 !------------------------------------------------------------------------------ 123 125 ! 124 ! Pringle et al., JGR 2007 formula 125 ! 2.11 + 0.09 S/T - 0.011.T 126 nn_thcond = 2 126 127 127 128 DO 10 ji = kideb, kiut 128 129 129 ! thermal conductivity inthe snow130 ! thermal conductivity of the snow 130 131 ykn(ji) = xkn 131 132 zkimin = 0.1 133 134 ! thermal conductivity of the sea ice 135 136 SELECT CASE ( nn_thcond ) 137 138 !--------------------------------------------------- 139 CASE(1) ! Pringle et al., JGR 2007 140 ! 2.11 + 0.09 S/T - 0.011.T 141 ! Empirical, direct measurements in sea ice 142 !--------------------------------------------------- 132 143 133 144 ztcond_i(0) = xkg + betak1*s_i_b(ji,1) 134 145 & / MIN( -zeps , t_i_b(ji,1) - tpw ) 135 146 & - betak2* ( t_i_b(ji,1) - tpw ) 136 ztcond_i(0) = MAX( ztcond_i(0) , zkimin )137 147 138 148 DO layer = 1, nlay_i-1 … … 142 152 & - betak2 * 0.5 * ( t_i_b(ji,layer) + ! bugfix fred dupont add 0.5 143 153 & t_i_b(ji,layer+1) - 2.0*tpw ) 144 ztcond_i(layer) = MAX( ztcond_i(layer) , zkimin )145 154 END DO 146 155 … … 148 157 & MIN( -zeps , t_bo_b(ji) - tpw ) 149 158 & - betak2 * ( t_bo_b(ji) - tpw ) 159 160 !--------------------------------------------------- 161 CASE(2) ! Mushy layer: k = ki . ( 1 - phi) + kbr . phi 162 ! Thermal conductivity of pure ice at interfaces from Yen (1991) 163 ! zki = 2.21 - 1.0e-2*ztc + 3.44e-5*ztc.^2 (Yen 1991) 164 ! Thermal conductivity of brine at interfaces (Castelli et al DSR 1974) 165 ! 0.55286 + 1.8364e-3 * TT - 3.3058e-7 * TT.^3 166 !--------------------------------------------------- 167 168 ! Brine fraction at layer mid-points 169 e_i_b(:) = -tmut * s_i_b(ji,:) / ( t_i_b(ji,:) - tpw ) 170 171 ! Brine fraction at interfaces 172 zde_dz = ( e_i_b(2) - e_i_b(1) ) / 173 & ( z_i_phy(2) - z_i_phy(1) ) 174 ze(0) = e_i_b(1) - zde_dz * deltaz_i_phy(1) / 2. 175 176 DO layer = 1, nlay_i - 1 177 zde_dz = ( e_i_b(layer+1) - e_i_b(layer) ) / 178 & ( z_i_phy(layer+1) - z_i_phy(layer) ) 179 ze(layer) = e_i_b(layer) + zde_dz * deltaz_i_phy(layer) / 2. 180 END DO 181 182 ze(nlay_i) = 1. 183 184 ! Temperature at interfaces 185 !!! ztc(0) could be better interpolated ... use effective conductivity ? 186 zdt_dz = ( t_i_b(ji,2) - t_i_b(ji,1) ) / 187 & ( z_i_phy(2) - z_i_phy(1) ) 188 ztc(0) = t_i_b(ji,1) - zdt_dz * deltaz_i_phy(1) / 2. 189 ztc(0) = ztc(0) - tpw 190 191 DO layer = 1, nlay_i - 1 192 zdt_dz = ( t_i_b(ji,layer+1) - t_i_b(ji,layer) ) / 193 & ( z_i_phy(layer+1) - z_i_phy(layer) ) 194 ztc(layer) = t_i_b(ji,layer) + 195 & zdt_dz * deltaz_i_phy(layer) / 2. 196 ztc(layer) = ztc(layer) - tpw 197 END DO 198 ztc(nlay_i) = t_bo_b(ji) - tpw 199 200 DO layer = 0, nlay_i 201 zt1 = ztc(layer) 202 zt2 = zt1*zt1 203 zt3 = zt1*zt2 204 zki = 2.2156 - 1.0045e-2*zt1 + 3.44520e-5*ztc2 205 zkbr = 0.55286 + 1.8364e-3*zt1 - 3.3058e-7*zt3 206 ztcond_i(layer) = zki * ( 1. - ze(layer) ) + zkbr * ze(layer) 207 END DO 208 209 END SELECT 210 211 ! Cap thermal conductivity to prevent small values 212 ztcond_i(0) = MAX( ztcond_i(0) , zkimin ) 213 DO layer = 0, nlay_i 214 ztcond_i(layer) = MAX( ztcond_i(layer) , zkimin ) 215 END DO 150 216 ztcond_i(nlay_i) = MAX( ztcond_i(nlay_i) , zkimin ) 151 217 … … 488 554 zindterm(numeqmin) = ztiold(1) + zeta_i(1)* 489 555 ! & (radab_phy_i(1) + radab_alg_i(1) 490 & ( radab_i(1) +556 & ( radab_i(1) 491 557 & + zkappa_i(1)*t_bo_b(ji) ) 492 558 & + t_su_b(ji)*zeta_i(1)*zkappa_i(0)*2.0 -
branches/2016/dev_v3.20_2016_platelet/SOURCES/source_3.20/thermo.com
r6 r27 99 99 & q_i_layer_fin(nbpt,maxnlay), fprec, fsnic 100 100 101 common/ salt / beta_sal, s_i_new, s_i_snic, e_skel,q_summer,101 common/ salt / beta_sal, s_i_new, s_i_snic, q_summer, 102 102 & diff_br(maxnlay), rayleigh(maxnlay), fsb, fsbp, 103 103 & w_flood, w_flush
Note: See TracChangeset
for help on using the changeset viewer.