Changeset 2915


Ignore:
Timestamp:
Jun 16, 2017, 6:03:16 PM (7 years ago)
Author:
jbmadeleine
Message:

Improved the way thermal inertia works in simulations using imposed SST and sea ice.
Removed inertie_ice which was confusing; Added inertie_sic for sea-ice and inertie_lic for
land-ice. When snow is present, inertie_sno is used instead of inertie_sol, inertie_sic or
inertie_lic. For sea-ice, added a flag called iflag_sic:
If iflag_sic=0, thermal inertia is changed over sea-ice when snow is present
If iflag_sic=1, thermal inertia is kept constant and equal to inertie_sic

Location:
LMDZ5/trunk/libf/phylmd
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/comsoil.h

    r1907 r2915  
    33!
    44
    5       common /comsoil/inertie_sol,inertie_sno,inertie_ice
    6       real inertie_sol,inertie_sno,inertie_ice
     5      common /comsoil/inertie_sol,inertie_sno,inertie_sic,inertie_lic,  &
     6     &                iflag_sic
     7      real inertie_sol,inertie_sno,inertie_sic,inertie_lic
     8      integer iflag_sic
    79!$OMP THREADPRIVATE(/comsoil/)
  • LMDZ5/trunk/libf/phylmd/conf_phys_m.F90

    r2852 r2915  
    173173    REAL,SAVE :: exposant_glace_omp
    174174    REAL,SAVE :: rei_min_omp, rei_max_omp
    175     REAL,SAVE :: inertie_sol_omp,inertie_sno_omp,inertie_ice_omp
     175    INTEGER,SAVE :: iflag_sic_omp
     176    REAL,SAVE :: inertie_sol_omp,inertie_sno_omp,inertie_sic_omp
     177    REAL,SAVE :: inertie_lic_omp
    176178    REAL,SAVE :: qsol0_omp
    177179    REAL,SAVE :: evap0_omp
     
    11331135    !-----------------------------------------------------------------------
    11341136    !
    1135     !Config Key  = inertie_ice
     1137    !Config Key  = iflag_sic
     1138    !Config Desc = 
     1139    !Config Def  = 0
     1140    !Config Help =
     1141    !
     1142    iflag_sic_omp = 0
     1143    CALL getin('iflag_sic',iflag_sic_omp)
     1144    !
     1145    !Config Key  = inertie_sic
    11361146    !Config Desc = 
    11371147    !Config Def  = 2000.
    11381148    !Config Help =
    11391149    !
    1140     inertie_ice_omp = 2000.
    1141     CALL getin('inertie_ice',inertie_ice_omp)
     1150    inertie_sic_omp = 2000.
     1151    CALL getin('inertie_sic',inertie_sic_omp)
     1152    !
     1153    !Config Key  = inertie_lic
     1154    !Config Desc = 
     1155    !Config Def  = 2000.
     1156    !Config Help =
     1157    !
     1158    inertie_lic_omp = 2000.
     1159    CALL getin('inertie_lic',inertie_lic_omp)
    11421160    !
    11431161    !Config Key  = inertie_sno
     
    21322150    evap0 = evap0_omp
    21332151    albsno0 = albsno0_omp
     2152    iflag_sic = iflag_sic_omp
    21342153    inertie_sol = inertie_sol_omp
    2135     inertie_ice = inertie_ice_omp
     2154    inertie_sic = inertie_sic_omp
     2155    inertie_lic = inertie_lic_omp
    21362156    inertie_sno = inertie_sno_omp
    21372157    rad_froid = rad_froid_omp
     
    25452565    write(lunout,*)' evap0 = ', evap0
    25462566    write(lunout,*)' albsno0 = ', albsno0
     2567    write(lunout,*)' iflag_sic = ', iflag_sic
    25472568    write(lunout,*)' inertie_sol = ', inertie_sol
    2548     write(lunout,*)' inertie_ice = ', inertie_ice
     2569    write(lunout,*)' inertie_sic = ', inertie_sic
     2570    write(lunout,*)' inertie_lic = ', inertie_lic
    25492571    write(lunout,*)' inertie_sno = ', inertie_sno
    25502572    write(lunout,*)' f_cdrag_ter = ',f_cdrag_ter
  • LMDZ5/trunk/libf/phylmd/sisvat/sisvat.F

    r1990 r2915  
    70707070
    70717071      DO ig = 1,knonv
    7072         ztherm_i(ig)   = inertie_ice
     7072        ztherm_i(ig)   = inertie_lic
    70737073        IF (isnoSV(ig) > 0) ztherm_i(ig)   = inertie_sno
    70747074      ENDDO
  • LMDZ5/trunk/libf/phylmd/soil.F90

    r2311 r2915  
    152152!-----------------------------------------------------------------------
    153153!   Calcul de l'inertie thermique a partir de la variable rnat.
    154 !   on initialise a inertie_ice meme au-dessus d'un point de mer au cas
     154!   on initialise a inertie_sic meme au-dessus d'un point de mer au cas
    155155!   ou le point de mer devienne point de glace au pas suivant
    156156!   on corrige si on a un point de terre avec ou sans glace
    157157!
    158 !-----------------------------------------------------------------------
     158!   iophys can be used to write the ztherm_i variable in a phys.nc file
     159!   and check the results; to do so, add "CALL iophys_ini" in physiq_mod
     160!   and add knindex to the list of inputs in all the calls to soil.F90
     161!   (and to soil.F90 itself !)
     162!-----------------------------------------------------------------------
     163
    159164  IF (indice == is_sic) THEN
    160165     DO ig = 1, knon
    161         ztherm_i(ig)   = inertie_ice
     166        ztherm_i(ig)   = inertie_sic
     167     ENDDO
     168     IF (iflag_sic == 0) THEN
     169       DO ig = 1, knon
     170         IF (snow(ig) > 0.0) ztherm_i(ig)   = inertie_sno
     171       ENDDO
     172!      Otherwise sea-ice keeps the same inertia, even when covered by snow
     173     ENDIF
     174!    CALL iophys_ecrit_index('ztherm_sic', 1, 'ztherm_sic', 'USI', &
     175!      knon, knindex, ztherm_i)
     176  ELSE IF (indice == is_lic) THEN
     177     DO ig = 1, knon
     178        ztherm_i(ig)   = inertie_lic
    162179        IF (snow(ig) > 0.0) ztherm_i(ig)   = inertie_sno
    163180     ENDDO
    164   ELSE IF (indice == is_lic) THEN
    165      DO ig = 1, knon
    166         ztherm_i(ig)   = inertie_ice
    167         IF (snow(ig) > 0.0) ztherm_i(ig)   = inertie_sno
    168      ENDDO
     181!    CALL iophys_ecrit_index('ztherm_lic', 1, 'ztherm_lic', 'USI', &
     182!      knon, knindex, ztherm_i)
    169183  ELSE IF (indice == is_ter) THEN
    170184     DO ig = 1, knon
     
    172186        IF (snow(ig) > 0.0) ztherm_i(ig)   = inertie_sno
    173187     ENDDO
     188!    CALL iophys_ecrit_index('ztherm_ter', 1, 'ztherm_ter', 'USI', &
     189!      knon, knindex, ztherm_i)
    174190  ELSE IF (indice == is_oce) THEN
    175191     DO ig = 1, knon
    176         ztherm_i(ig)   = inertie_ice
    177      ENDDO
     192!       This is just in case, but SST should be used by the model anyway
     193        ztherm_i(ig)   = inertie_sic
     194     ENDDO
     195!    CALL iophys_ecrit_index('ztherm_oce', 1, 'ztherm_oce', 'USI', &
     196!      knon, knindex, ztherm_i)
    178197  ELSE
    179198     WRITE(lunout,*) "valeur d indice non prevue", indice
Note: See TracChangeset for help on using the changeset viewer.