New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 1858 for branches/DEV_r1837_mass_heat_salt_fluxes/NEMO/OPA_SRC/DOM/phycst.F90 – NEMO

Ignore:
Timestamp:
2010-05-04T10:39:48+02:00 (14 years ago)
Author:
gm
Message:

ticket:#665 : step 1 - heat content of freezing-melting ice

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r1837_mass_heat_salt_fluxes/NEMO/OPA_SRC/DOM/phycst.F90

    r1739 r1858  
    44   !!     Definition of of both ocean and ice parameters used in the code 
    55   !!===================================================================== 
    6    !! History :        !  90-10  (C. Levy - G. Madec)  Original code 
    7    !!                  !  91-11  (G. Madec) 
    8    !!                  !  91-12  (M. Imbard) 
    9    !!             8.5  !  02-08  (G. Madec, C. Ethe)  F90, add ice constants 
    10    !!             9.0  !  06-08  (G. Madec)  style  
     6   !! History :  OPA  !  1990-10  (C. Levy - G. Madec)  Original code 
     7   !!                 !  1991-11  (G. Madec, M. Imbard) 
     8   !!  NEMO      1.0  !  2002-08  (G. Madec, C. Ethe)  F90, add ice constants 
     9   !!             -   !  2006-08  (G. Madec)  style  
     10   !!            3.0  !  2008-08  (G. Madec)  add LIM-3  
    1111   !!---------------------------------------------------------------------- 
    1212 
     
    2626   REAL(wp), PUBLIC ::   rsmall = 0.5 * EPSILON( 1. )           !: smallest real computer value 
    2727    
    28    REAL(wp), PUBLIC ::          & !: 
    29       rday = 24.*60.*60.  ,     & !: day (s) 
    30       rsiyea              ,     & !: sideral year (s) 
    31       rsiday              ,     & !: sideral day (s) 
    32       raamo =  12._wp     ,     & !: number of months in one year 
    33       rjjhh =  24._wp     ,     & !: number of hours in one day 
    34       rhhmm =  60._wp     ,     & !: number of minutes in one hour 
    35       rmmss =  60._wp     ,     & !: number of seconds in one minute 
    36 !!!   omega = 7.292115083046061e-5_wp ,  &  !: change the last digit! 
    37       omega               ,    &  !: earth rotation parameter 
    38       ra    = 6371229._wp ,    &  !: earth radius (meter) 
    39       grav  = 9.80665_wp          !: gravity (m/s2) 
     28   REAL(wp), PUBLIC ::   rday = 24.*60.*60.     !: day                                [s] 
     29   REAL(wp), PUBLIC ::   rsiyea                 !: sideral year                       [s] 
     30   REAL(wp), PUBLIC ::   rsiday                 !: sideral day                        [s] 
     31   REAL(wp), PUBLIC ::   raamo =  12._wp        !: number of months in one year 
     32   REAL(wp), PUBLIC ::   rjjhh =  24._wp        !: number of hours in one day 
     33   REAL(wp), PUBLIC ::   rhhmm =  60._wp        !: number of minutes in one hour 
     34   REAL(wp), PUBLIC ::   rmmss =  60._wp        !: number of seconds in one minute 
     35   REAL(wp), PUBLIC ::   omega                  !: earth rotation parameter           [s-1] 
     36   REAL(wp), PUBLIC ::   ra    = 6371229._wp    !: earth radius                       [m] 
     37   REAL(wp), PUBLIC ::   grav  = 9.80665_wp     !: gravity                            [m/s2] 
    4038    
    41    REAL(wp), PUBLIC ::         &  !: 
    42       rtt      = 273.16_wp  ,  &  !: triple point of temperature (Kelvin) 
    43       rt0      = 273.15_wp  ,  &  !: freezing point of water (Kelvin) 
    44 #if defined key_lim3 
    45       rt0_snow = 273.16_wp  ,  &  !: melting point of snow  (Kelvin) 
    46       rt0_ice  = 273.16_wp  ,  &  !: melting point of ice   (Kelvin) 
    47 #else 
    48       rt0_snow = 273.15_wp  ,  &  !: melting point of snow  (Kelvin) 
    49       rt0_ice  = 273.05_wp  ,  &  !: melting point of ice   (Kelvin) 
    50 #endif 
    51       rau0     = 1035._wp   ,  &  !: volumic mass of reference (kg/m3) 
    52       rauw     = 1000._wp   ,  &  !: volumic mass of pure water (kg/m3) 
    53       rcp      =    4.e+3_wp,  &  !: ocean specific heat 
    54       ro0cpr                      !: = 1. / ( rau0 * rcp ) 
    55  
    56    REAL(wp), PUBLIC ::            &  !: 
    57 #if defined key_lim3 
    58       rcdsn   =   0.31_wp     ,   &  !: thermal conductivity of snow 
    59       rcdic   =   2.034396_wp ,   &  !: thermal conductivity of fresh ice 
    60       cpic    = 2067.0        ,   & 
    61       ! add the following lines 
    62       lsub    = 2.834e+6      ,   &  !: pure ice latent heat of sublimation (J.kg-1) 
    63       lfus    = 0.334e+6      ,   &  !: latent heat of fusion of fresh ice   (J.kg-1) 
    64       rhoic   = 917._wp       ,   &  !: volumic mass of sea ice (kg/m3) 
    65       tmut    =   0.054       ,   &  !: decrease of seawater meltpoint with salinity 
    66 #else 
    67       rcdsn   =   0.22_wp     ,   &  !: conductivity of the snow 
    68       rcdic   =   2.034396_wp ,   &  !: conductivity of the ice 
    69       rcpsn   =   6.9069e+5_wp,   &  !: density times specific heat for snow 
    70       rcpic   =   1.8837e+6_wp,   &  !: volumetric latent heat fusion of sea ice 
    71       xlsn    = 110.121e+6_wp ,   &  !: volumetric latent heat fusion of snow 
    72       xlic    = 300.33e+6_wp  ,   &  !: volumetric latent heat fusion of ice 
    73       xsn     =   2.8e+6      ,   &  !: latent heat of sublimation of snow 
    74       rhoic   = 900._wp       ,   &  !: volumic mass of sea ice (kg/m3) 
    75 #endif 
    76       rhosn   = 330._wp       ,   &  !: volumic mass of snow (kg/m3) 
    77       emic    =   0.97_wp     ,   &  !: emissivity of snow or ice 
    78       sice    =   6.0_wp      ,   &  !: salinity of ice (psu) 
    79       soce    =  34.7_wp      ,   &  !: salinity of sea (psu) 
    80       cevap   =   2.5e+6_wp   ,   &  !: latent heat of evaporation (water) 
    81       srgamma =   0.9_wp      ,   &  !: correction factor for solar radiation (Oberhuber, 1974) 
    82       vkarmn  =   0.4_wp      ,   &  !: von Karman constant 
    83       stefan  =   5.67e-8_wp         !: Stefan-Boltzmann constant  
    84       !!---------------------------------------------------------------------- 
    85       !!  OPA 9.0 , LOCEAN-IPSL (2005)  
    86       !! $Id$  
    87       !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    88       !!---------------------------------------------------------------------- 
    89     
     39   REAL(wp), PUBLIC ::   rtt      = 273.16_wp        !: triple point of temperature   [Kelvin] 
     40   REAL(wp), PUBLIC ::   rt0      = 273.15_wp        !: freezing point of fresh water [Kelvin] 
     41#if defined key_lim3 
     42   REAL(wp), PUBLIC ::   rt0_snow = 273.16_wp        !: melting point of snow         [Kelvin] 
     43   REAL(wp), PUBLIC ::   rt0_ice  = 273.16_wp        !: melting point of ice          [Kelvin] 
     44#else 
     45   REAL(wp), PUBLIC ::   rt0_snow = 273.15_wp        !: melting point of snow         [Kelvin] 
     46   REAL(wp), PUBLIC ::   rt0_ice  = 273.05_wp        !: melting point of ice          [Kelvin] 
     47#endif 
     48   REAL(wp), PUBLIC ::   rau0     = 1035._wp         !: volumic mass of reference     [kg/m3] 
     49   REAL(wp), PUBLIC ::   r1_rau0                     !: = 1. / rau0                   [m3/kg] 
     50   REAL(wp), PUBLIC ::   rauw     = 1000._wp         !: volumic mass of pure water    [m3/kg] 
     51   REAL(wp), PUBLIC ::   rcp      =    4.e3_wp       !: ocean specific heat           [J/Kelvin] 
     52   REAL(wp), PUBLIC ::   r1_rcp                      !: = 1. / rcp                    [Kelvin/J] 
     53   REAL(wp), PUBLIC ::   r1_rau0_rcp                 !: = 1. / ( rau0 * rcp ) 
     54 
     55   REAL(wp), PUBLIC ::   rhosn    =  330._wp         !: volumic mass of snow          [kg/m3] 
     56   REAL(wp), PUBLIC ::   emic     =    0.97_wp       !: emissivity of snow or ice 
     57   REAL(wp), PUBLIC ::   sice     =    6.0_wp        !: salinity of ice (psu) 
     58   REAL(wp), PUBLIC ::   soce     =   34.7_wp        !: salinity of sea (psu) 
     59 
     60#if defined key_lim3 
     61   REAL(wp), PUBLIC ::   rhoic    =  917._wp         !: volumic mass of sea ice                               [kg/m3] 
     62   REAL(wp), PUBLIC ::   rcdic    =    2.034396_wp   !: thermal conductivity of fresh ice 
     63   REAL(wp), PUBLIC ::   rcdsn    =    0.31_wp       !: thermal conductivity of snow 
     64   REAL(wp), PUBLIC ::   cpic     = 2067.0_wp        !: specific heat for ice  
     65   REAL(wp), PUBLIC ::   lsub     =    2.834e+6_wp   !: pure ice latent heat of sublimation                   [J/kg] 
     66   REAL(wp), PUBLIC ::   lfus     =    0.334e+6_wp   !: latent heat of fusion of fresh ice                    [J/kg] 
     67   REAL(wp), PUBLIC ::   tmut     =    0.054_wp      !: decrease of seawater meltpoint with salinity 
     68   REAL(wp), PUBLIC ::   xlsn                        !: = lfus*rhosn (volumetric latent heat fusion of snow)  [J/m3] 
     69#else 
     70   REAL(wp), PUBLIC ::   rhoic    =  900._wp         !: volumic mass of sea ice                               [kg/m3] 
     71   REAL(wp), PUBLIC ::   rcdic    =    2.034396_wp   !: conductivity of the ice                               [W/m/K] 
     72   REAL(wp), PUBLIC ::   rcpic    =    1.8837e+6_wp  !: volumetric specific heat for ice                      [J/m3/K] 
     73   REAL(wp), PUBLIC ::   cpic                        !: = rcpic / rhoic  (specific heat for ice)              [J/Kg/K] 
     74   REAL(wp), PUBLIC ::   rcdsn    =    0.22_wp       !: conductivity of the snow                              [W/m/K] 
     75   REAL(wp), PUBLIC ::   rcpsn    =    6.9069e+5_wp  !: volumetric specific heat for snow                     [J/m3/K] 
     76   REAL(wp), PUBLIC ::   xlsn     =  110.121e+6_wp   !: volumetric latent heat fusion of snow                 [J/m3] 
     77   REAL(wp), PUBLIC ::   lfus                        !: = xlsn / rhosn   (latent heat of fusion of fresh ice) [J/Kg] 
     78   REAL(wp), PUBLIC ::   xlic     =  300.33e+6_wp    !: volumetric latent heat fusion of ice                  [J/m3] 
     79   REAL(wp), PUBLIC ::   xsn      =    2.8e+6_wp     !: volumetric latent heat of sublimation of snow         [J/m3] 
     80#endif 
     81   REAL(wp), PUBLIC ::   cevap    =    2.5e+6_wp     !: latent heat of evaporation (water) 
     82   REAL(wp), PUBLIC ::   srgamma  =    0.9_wp        !: correction factor for solar radiation (Oberhuber, 1974) 
     83   REAL(wp), PUBLIC ::   vkarmn   =    0.4_wp        !: von Karman constant 
     84   REAL(wp), PUBLIC ::   stefan   =    5.67e-8_wp    !: Stefan-Boltzmann constant  
     85   !!---------------------------------------------------------------------- 
     86   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
     87   !! $Id$  
     88   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     89   !!---------------------------------------------------------------------- 
    9090CONTAINS 
    9191    
     
    153153      IF(lwp) WRITE(numout,*) '          melting point of ice             rt0_ice  = ', rt0_ice , ' K' 
    154154 
    155       ro0cpr = 1. / ( rau0 * rcp ) 
    156       IF(lwp) WRITE(numout,*) 
    157       IF(lwp) WRITE(numout,*) '          volumic mass of pure water         rauw   = ', rauw, ' kg/m^3' 
    158       IF(lwp) WRITE(numout,*) '          volumic mass of reference          rau0   = ', rau0, ' kg/m^3' 
    159       IF(lwp) WRITE(numout,*) '          ocean specific heat                rcp    = ', rcp 
    160       IF(lwp) WRITE(numout,*) '                       1. / ( rau0 * rcp ) = ro0cpr = ', ro0cpr 
     155      r1_rau0     = 1.e0 / rau0 
     156      r1_rcp      = 1.e0 / rcp 
     157      r1_rau0_rcp = 1.e0 / ( rau0 * rcp ) 
     158      IF(lwp) WRITE(numout,*) 
     159      IF(lwp) WRITE(numout,*) '          volumic mass of pure water          rauw  = ', rauw   , ' kg/m3' 
     160      IF(lwp) WRITE(numout,*) '          volumic mass of reference           rau0  = ', rau0   , ' kg/m3' 
     161      IF(lwp) WRITE(numout,*) '          1. / rau0                        r1_rau0  = ', r1_rau0, ' m3/kg' 
     162      IF(lwp) WRITE(numout,*) '          ocean specific heat                 rcp   = ', rcp    , ' J/Kelvin' 
     163      IF(lwp) WRITE(numout,*) '          1. / ( rau0 * rcp )           r1_rau0_rcp = ', r1_rau0_rcp 
     164 
     165 
     166#if defined key_lim3 
     167      xlsn = lfus * rhosn        ! volumetric latent heat fusion of snow [J/m3] 
     168#else 
     169      cpic = rcpic / rhoic       ! specific heat for ice   [J/Kg/K] 
     170      lfus = xlsn / rhosn        ! latent heat of fusion of fresh ice 
     171#endif 
    161172 
    162173      IF(lwp) THEN 
     
    164175         WRITE(numout,*) '          thermal conductivity of the snow          = ', rcdsn   , ' J/s/m/K' 
    165176         WRITE(numout,*) '          thermal conductivity of the ice           = ', rcdic   , ' J/s/m/K' 
    166 #if defined key_lim3 
    167177         WRITE(numout,*) '          fresh ice specific heat                   = ', cpic    , ' J/kg/K' 
    168178         WRITE(numout,*) '          latent heat of fusion of fresh ice / snow = ', lfus    , ' J/kg' 
     179#if defined key_lim3 
    169180         WRITE(numout,*) '          latent heat of subl.  of fresh ice / snow = ', lsub    , ' J/kg' 
    170181#else 
    171          WRITE(numout,*) '          density times specific heat for snow      = ', rcpsn   , ' J/m^3/K'  
    172          WRITE(numout,*) '          density times specific heat for ice       = ', rcpic   , ' J/m^3/K' 
     182         WRITE(numout,*) '          density times specific heat for snow      = ', rcpsn   , ' J/m3/K'  
     183         WRITE(numout,*) '          density times specific heat for ice       = ', rcpic   , ' J/m3/K' 
    173184         WRITE(numout,*) '          volumetric latent heat fusion of sea ice  = ', xlic    , ' J/m'  
    174          WRITE(numout,*) '          volumetric latent heat fusion of snow     = ', xlsn    , ' J/m'  
    175185         WRITE(numout,*) '          latent heat of sublimation of snow        = ', xsn     , ' J/kg'  
    176186#endif 
    177          WRITE(numout,*) '          density of sea ice                        = ', rhoic   , ' kg/m^3' 
    178          WRITE(numout,*) '          density of snow                           = ', rhosn   , ' kg/m^3' 
     187         WRITE(numout,*) '          volumetric latent heat fusion of snow     = ', xlsn    , ' J/m^3'  
     188         WRITE(numout,*) '          density of sea ice                        = ', rhoic   , ' kg/m3' 
     189         WRITE(numout,*) '          density of snow                           = ', rhosn   , ' kg/m3' 
    179190         WRITE(numout,*) '          emissivity of snow or ice                 = ', emic   
    180191         WRITE(numout,*) '          salinity of ice                           = ', sice    , ' psu' 
    181192         WRITE(numout,*) '          salinity of sea                           = ', soce    , ' psu' 
    182          WRITE(numout,*) '          latent heat of evaporation (water)        = ', cevap   , ' J/m^3'  
     193         WRITE(numout,*) '          latent heat of evaporation (water)        = ', cevap   , ' J/m3'  
    183194         WRITE(numout,*) '          correction factor for solar radiation     = ', srgamma  
    184195         WRITE(numout,*) '          von Karman constant                       = ', vkarmn  
     
    191202         WRITE(numout,*) '          smallest real computer value       rsmall = ', rsmall 
    192203      ENDIF 
    193  
     204      ! 
    194205   END SUBROUTINE phy_cst 
    195206 
Note: See TracChangeset for help on using the changeset viewer.