Ignore:
Timestamp:
10/06/16 11:31:57 (8 years ago)
Author:
vancop
Message:

First physical fixes, new ice liquid fraction and mushy-layer thermal conductivity

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_v3.20_2016_platelet/SOURCES/source_3.20/ice_th_diff.f

    r6 r27  
    5959      INTEGER    numeqmin, numeqmax, numeq 
    6060      DIMENSION  ztcond_i(0:nlay_i), 
     61     &           ze(0:nlay_i), 
     62     &           ztc(0:nlay_i), 
    6163     &           zkappa_s(0:nlay_s), 
    6264     &           zkappa_i(0:nlay_i),ztstemp(0:nlay_s),ztitemp(0:nlay_i), 
     
    122124!------------------------------------------------------------------------------  
    123125! 
    124       ! Pringle et al., JGR 2007 formula 
    125       ! 2.11 + 0.09 S/T - 0.011.T 
     126      nn_thcond = 2 
    126127 
    127128      DO 10 ji = kideb, kiut 
    128129 
    129       ! thermal conductivity in the snow 
     130      ! thermal conductivity of the snow 
    130131      ykn(ji)  =  xkn 
    131132      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      !--------------------------------------------------- 
    132143 
    133144      ztcond_i(0)     = xkg + betak1*s_i_b(ji,1)  
    134145     &                   / MIN( -zeps , t_i_b(ji,1) - tpw )  
    135146     &                   - betak2* ( t_i_b(ji,1) - tpw ) 
    136       ztcond_i(0)     = MAX( ztcond_i(0) , zkimin ) 
    137147 
    138148      DO layer = 1, nlay_i-1 
     
    142152     &                      - betak2 * 0.5 * ( t_i_b(ji,layer) +  ! bugfix fred dupont add 0.5 
    143153     &                        t_i_b(ji,layer+1) - 2.0*tpw ) 
    144          ztcond_i(layer) = MAX( ztcond_i(layer) , zkimin ) 
    145154      END DO 
    146155 
     
    148157     &                        MIN( -zeps , t_bo_b(ji) - tpw )  
    149158     &                      - 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 
    150216      ztcond_i(nlay_i)   = MAX( ztcond_i(nlay_i) , zkimin ) 
    151217 
     
    488554         zindterm(numeqmin) =  ztiold(1) + zeta_i(1)* 
    489555!    &                         (radab_phy_i(1) + radab_alg_i(1) 
    490      &                         ( radab_i(1) +  
     556     &                         ( radab_i(1)    
    491557     &                         + zkappa_i(1)*t_bo_b(ji) )  
    492558     &                         + t_su_b(ji)*zeta_i(1)*zkappa_i(0)*2.0 
Note: See TracChangeset for help on using the changeset viewer.