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 3625 for branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/OPA_SRC/DOM/phycst.F90 – NEMO

Ignore:
Timestamp:
2012-11-21T14:19:18+01:00 (11 years ago)
Author:
acc
Message:

Branch dev_NOC_2012_r3555. #1006. Step 7. Check in code now merged with dev_r3385_NOCS04_HAMF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/OPA_SRC/DOM/phycst.F90

    r3294 r3625  
    2727   REAL(wp), PUBLIC ::   rsmall = 0.5 * EPSILON( 1.e0 )         !: smallest real computer value 
    2828    
    29    REAL(wp), PUBLIC ::   rday = 24.*60.*60.       !: day (s) 
    30    REAL(wp), PUBLIC ::   rsiyea                   !: sideral year (s) 
    31    REAL(wp), PUBLIC ::   rsiday                   !: sideral day (s) 
    32    REAL(wp), PUBLIC ::   raamo =  12._wp          !: number of months in one year 
    33    REAL(wp), PUBLIC ::   rjjhh =  24._wp          !: number of hours in one day 
    34    REAL(wp), PUBLIC ::   rhhmm =  60._wp          !: number of minutes in one hour 
    35    REAL(wp), PUBLIC ::   rmmss =  60._wp          !: number of seconds in one minute 
    36 !! REAL(wp), PUBLIC ::   omega = 7.292115083046061e-5_wp ,  &  !: change the last digit! 
    37    REAL(wp), PUBLIC ::   omega                    !: earth rotation parameter 
    38    REAL(wp), PUBLIC ::   ra    = 6371229._wp      !: earth radius (meter) 
    39    REAL(wp), PUBLIC ::   grav  = 9.80665_wp       !: gravity (m/s2) 
    40     
    41    REAL(wp), PUBLIC ::   rtt      = 273.16_wp     !: triple point of temperature (Kelvin) 
    42    REAL(wp), PUBLIC ::   rt0      = 273.15_wp     !: freezing point of water (Kelvin) 
     29   REAL(wp), PUBLIC ::   rday = 24.*60.*60.     !: day                                [s] 
     30   REAL(wp), PUBLIC ::   rsiyea                 !: sideral year                       [s] 
     31   REAL(wp), PUBLIC ::   rsiday                 !: sideral day                        [s] 
     32   REAL(wp), PUBLIC ::   raamo =  12._wp        !: number of months in one year 
     33   REAL(wp), PUBLIC ::   rjjhh =  24._wp        !: number of hours in one day 
     34   REAL(wp), PUBLIC ::   rhhmm =  60._wp        !: number of minutes in one hour 
     35   REAL(wp), PUBLIC ::   rmmss =  60._wp        !: number of seconds in one minute 
     36   REAL(wp), PUBLIC ::   omega                  !: earth rotation parameter           [s-1] 
     37   REAL(wp), PUBLIC ::   ra    = 6371229._wp    !: earth radius                       [m] 
     38   REAL(wp), PUBLIC ::   grav  = 9.80665_wp     !: gravity                            [m/s2] 
     39    
     40   REAL(wp), PUBLIC ::   rtt      = 273.16_wp        !: triple point of temperature   [Kelvin] 
     41   REAL(wp), PUBLIC ::   rt0      = 273.15_wp        !: freezing point of fresh water [Kelvin] 
    4342#if defined key_lim3 
    44    REAL(wp), PUBLIC ::   rt0_snow = 273.16_wp     !: melting point of snow  (Kelvin) 
    45    REAL(wp), PUBLIC ::   rt0_ice  = 273.16_wp     !: melting point of ice   (Kelvin) 
    46 #else 
    47    REAL(wp), PUBLIC ::   rt0_snow = 273.15_wp     !: melting point of snow  (Kelvin) 
    48    REAL(wp), PUBLIC ::   rt0_ice  = 273.05_wp     !: melting point of ice   (Kelvin) 
    49 #endif 
    50  
     43   REAL(wp), PUBLIC ::   rt0_snow = 273.16_wp        !: melting point of snow         [Kelvin] 
     44   REAL(wp), PUBLIC ::   rt0_ice  = 273.16_wp        !: melting point of ice          [Kelvin] 
     45#else 
     46   REAL(wp), PUBLIC ::   rt0_snow = 273.15_wp        !: melting point of snow         [Kelvin] 
     47   REAL(wp), PUBLIC ::   rt0_ice  = 273.05_wp        !: melting point of ice          [Kelvin] 
     48#endif 
    5149#if defined key_cice 
    52    REAL(wp), PUBLIC ::   rau0     = 1026._wp      !: reference volumic mass (density)  (kg/m3) 
    53 #else 
    54    REAL(wp), PUBLIC ::   rau0     = 1035._wp      !: reference volumic mass (density)  (kg/m3) 
    55 #endif 
    56    REAL(wp), PUBLIC ::   rau0r                    !: reference specific volume         (m3/kg) 
    57    REAL(wp), PUBLIC ::   rcp      =    4.e+3_wp   !: ocean specific heat 
    58    REAL(wp), PUBLIC ::   ro0cpr                   !: = 1. / ( rau0 * rcp ) 
     50   REAL(wp), PUBLIC ::   rau0     = 1026._wp         !: volumic mass of reference     [kg/m3] 
     51#else 
     52   REAL(wp), PUBLIC ::   rau0     = 1035._wp         !: volumic mass of reference     [kg/m3] 
     53#endif 
     54   REAL(wp), PUBLIC ::   r1_rau0                     !: = 1. / rau0                   [m3/kg] 
     55   REAL(wp), PUBLIC ::   rauw     = 1000._wp         !: volumic mass of pure water    [m3/kg] 
     56   REAL(wp), PUBLIC ::   rcp      =    4.e3_wp       !: ocean specific heat           [J/Kelvin] 
     57   REAL(wp), PUBLIC ::   r1_rcp                      !: = 1. / rcp                    [Kelvin/J] 
     58   REAL(wp), PUBLIC ::   r1_rau0_rcp                 !: = 1. / ( rau0 * rcp ) 
     59 
     60   REAL(wp), PUBLIC ::   rhosn    =  330._wp         !: volumic mass of snow          [kg/m3] 
     61   REAL(wp), PUBLIC ::   emic     =    0.97_wp       !: emissivity of snow or ice 
     62   REAL(wp), PUBLIC ::   sice     =    6.0_wp        !: salinity of ice               [psu] 
     63   REAL(wp), PUBLIC ::   soce     =   34.7_wp        !: salinity of sea               [psu] 
     64   REAL(wp), PUBLIC ::   cevap    =    2.5e+6_wp     !: latent heat of evaporation (water) 
     65   REAL(wp), PUBLIC ::   srgamma  =    0.9_wp        !: correction factor for solar radiation (Oberhuber, 1974) 
     66   REAL(wp), PUBLIC ::   vkarmn   =    0.4_wp        !: von Karman constant 
     67   REAL(wp), PUBLIC ::   stefan   =    5.67e-8_wp    !: Stefan-Boltzmann constant  
    5968 
    6069#if defined key_lim3 || defined key_cice 
    61    REAL(wp), PUBLIC ::   rcdsn   =   0.31_wp      !: thermal conductivity of snow 
    62    REAL(wp), PUBLIC ::   rcdic   =   2.034396_wp  !: thermal conductivity of fresh ice 
    63    REAL(wp), PUBLIC ::   cpic    = 2067.0         !: specific heat of sea ice 
    64    REAL(wp), PUBLIC ::   lsub    = 2.834e+6       !: pure ice latent heat of sublimation (J.kg-1) 
    65    REAL(wp), PUBLIC ::   lfus    = 0.334e+6       !: latent heat of fusion of fresh ice   (J.kg-1) 
    66    REAL(wp), PUBLIC ::   rhoic   = 917._wp        !: volumic mass of sea ice (kg/m3) 
    67    REAL(wp), PUBLIC ::   tmut    =   0.054        !: decrease of seawater meltpoint with salinity 
    68 #else 
    69    REAL(wp), PUBLIC ::   rcdsn   =   0.22_wp      !: conductivity of the snow 
    70    REAL(wp), PUBLIC ::   rcdic   =   2.034396_wp  !: conductivity of the ice 
    71    REAL(wp), PUBLIC ::   rcpsn   =   6.9069e+5_wp !: density times specific heat for snow 
    72    REAL(wp), PUBLIC ::   rcpic   =   1.8837e+6_wp !: volumetric latent heat fusion of sea ice 
    73    REAL(wp), PUBLIC ::   lfus    =   0.3337e+6    !: latent heat of fusion of fresh ice   (J.kg-1)     
    74    REAL(wp), PUBLIC ::   xlsn    = 110.121e+6_wp  !: volumetric latent heat fusion of snow 
    75    REAL(wp), PUBLIC ::   xlic    = 300.33e+6_wp   !: volumetric latent heat fusion of ice 
    76    REAL(wp), PUBLIC ::   xsn     =   2.8e+6       !: latent heat of sublimation of snow 
    77    REAL(wp), PUBLIC ::   rhoic   = 900._wp        !: volumic mass of sea ice (kg/m3) 
    78 #endif 
    79    REAL(wp), PUBLIC ::   rhosn   = 330._wp        !: volumic mass of snow (kg/m3) 
    80    REAL(wp), PUBLIC ::   emic    =   0.97_wp      !: emissivity of snow or ice 
    81    REAL(wp), PUBLIC ::   sice    =   6.0_wp       !: reference salinity of ice (psu) 
    82    REAL(wp), PUBLIC ::   soce    =  34.7_wp       !: reference salinity of sea (psu) 
    83    REAL(wp), PUBLIC ::   cevap   =   2.5e+6_wp    !: latent heat of evaporation (water) 
    84    REAL(wp), PUBLIC ::   srgamma =   0.9_wp       !: correction factor for solar radiation (Oberhuber, 1974) 
    85    REAL(wp), PUBLIC ::   vkarmn  =   0.4_wp       !: von Karman constant 
    86    REAL(wp), PUBLIC ::   stefan  =   5.67e-8_wp   !: Stefan-Boltzmann constant  
     70   REAL(wp), PUBLIC ::   rhoic    =  917._wp         !: volumic mass of sea ice                               [kg/m3] 
     71   REAL(wp), PUBLIC ::   rcdic    =    2.034396_wp   !: thermal conductivity of fresh ice 
     72   REAL(wp), PUBLIC ::   rcdsn    =    0.31_wp       !: thermal conductivity of snow 
     73   REAL(wp), PUBLIC ::   cpic     = 2067.0_wp        !: specific heat for ice  
     74   REAL(wp), PUBLIC ::   lsub     =    2.834e+6_wp   !: pure ice latent heat of sublimation                   [J/kg] 
     75   REAL(wp), PUBLIC ::   lfus     =    0.334e+6_wp   !: latent heat of fusion of fresh ice                    [J/kg] 
     76   REAL(wp), PUBLIC ::   tmut     =    0.054_wp      !: decrease of seawater meltpoint with salinity 
     77   REAL(wp), PUBLIC ::   xlsn                        !: = lfus*rhosn (volumetric latent heat fusion of snow)  [J/m3] 
     78#else 
     79   REAL(wp), PUBLIC ::   rhoic    =  900._wp         !: volumic mass of sea ice                               [kg/m3] 
     80   REAL(wp), PUBLIC ::   rcdic    =    2.034396_wp   !: conductivity of the ice                               [W/m/K] 
     81   REAL(wp), PUBLIC ::   rcpic    =    1.8837e+6_wp  !: volumetric specific heat for ice                      [J/m3/K] 
     82   REAL(wp), PUBLIC ::   cpic                        !: = rcpic / rhoic  (specific heat for ice)              [J/Kg/K] 
     83   REAL(wp), PUBLIC ::   rcdsn    =    0.22_wp       !: conductivity of the snow                              [W/m/K] 
     84   REAL(wp), PUBLIC ::   rcpsn    =    6.9069e+5_wp  !: volumetric specific heat for snow                     [J/m3/K] 
     85   REAL(wp), PUBLIC ::   xlsn     =  110.121e+6_wp   !: volumetric latent heat fusion of snow                 [J/m3] 
     86   REAL(wp), PUBLIC ::   lfus                        !: = xlsn / rhosn   (latent heat of fusion of fresh ice) [J/Kg] 
     87   REAL(wp), PUBLIC ::   xlic     =  300.33e+6_wp    !: volumetric latent heat fusion of ice                  [J/m3] 
     88   REAL(wp), PUBLIC ::   xsn      =    2.8e+6_wp     !: volumetric latent heat of sublimation of snow         [J/m3] 
     89#endif 
    8790   !!---------------------------------------------------------------------- 
    8891   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
     
    102105      !!---------------------------------------------------------------------- 
    103106 
    104       !                                   ! Define additional parameters 
    105       rsiyea = 365.25 * rday * 2. * rpi / 6.283076 
    106       rsiday = rday / ( 1. + rday / rsiyea ) 
    107 #if defined key_cice 
    108       omega =  7.292116e-05 
    109 #else 
    110       omega  = 2. * rpi / rsiday  
    111 #endif 
    112  
    113       rau0r  = 1. /   rau0   
    114       ro0cpr = 1. / ( rau0 * rcp ) 
    115  
    116  
    117       IF(lwp) THEN                        ! control print 
    118          WRITE(numout,*) 
    119          WRITE(numout,*) ' phy_cst : initialization of ocean parameters and constants' 
    120          WRITE(numout,*) ' ~~~~~~~' 
     107      IF(lwp) WRITE(numout,*) 
     108      IF(lwp) WRITE(numout,*) ' phy_cst : initialization of ocean parameters and constants' 
     109      IF(lwp) WRITE(numout,*) ' ~~~~~~~' 
     110 
     111      ! Ocean Parameters 
     112      ! ---------------- 
     113      IF(lwp) THEN 
    121114         WRITE(numout,*) '       Domain info' 
    122115         WRITE(numout,*) '          dimension of model' 
     
    131124         WRITE(numout,*) '             jpnij   : ', jpnij 
    132125         WRITE(numout,*) '          lateral domain boundary condition type : jperio  = ', jperio 
    133          WRITE(numout,*) 
    134          WRITE(numout,*) '       Constants' 
    135          WRITE(numout,*) 
    136          WRITE(numout,*) '          mathematical constant                 rpi = ', rpi 
    137          WRITE(numout,*) '          day                                rday   = ', rday,   ' s' 
    138          WRITE(numout,*) '          sideral year                       rsiyea = ', rsiyea, ' s' 
    139          WRITE(numout,*) '          sideral day                        rsiday = ', rsiday, ' s' 
    140          WRITE(numout,*) '          omega                              omega  = ', omega,  ' s-1' 
    141          WRITE(numout,*) 
    142          WRITE(numout,*) '          nb of months per year               raamo = ', raamo, ' months' 
    143          WRITE(numout,*) '          nb of hours per day                 rjjhh = ', rjjhh, ' hours' 
    144          WRITE(numout,*) '          nb of minutes per hour              rhhmm = ', rhhmm, ' mn' 
    145          WRITE(numout,*) '          nb of seconds per minute            rmmss = ', rmmss, ' s' 
    146          WRITE(numout,*) 
    147          WRITE(numout,*) '          earth radius                         ra   = ', ra, ' m' 
    148          WRITE(numout,*) '          gravity                              grav = ', grav , ' m/s^2' 
    149          WRITE(numout,*) 
    150          WRITE(numout,*) '          triple point of temperature      rtt      = ', rtt     , ' K' 
    151          WRITE(numout,*) '          freezing point of water          rt0      = ', rt0     , ' K' 
    152          WRITE(numout,*) '          melting point of snow            rt0_snow = ', rt0_snow, ' K' 
    153          WRITE(numout,*) '          melting point of ice             rt0_ice  = ', rt0_ice , ' K' 
    154          WRITE(numout,*) 
    155          WRITE(numout,*) '          ocean reference volumic mass       rau0   = ', rau0 , ' kg/m^3' 
    156          WRITE(numout,*) '          ocean reference specific volume    rau0r  = ', rau0r, ' m^3/Kg' 
    157          WRITE(numout,*) '          ocean specific heat                rcp    = ', rcp 
    158          WRITE(numout,*) '                       1. / ( rau0 * rcp ) = ro0cpr = ', ro0cpr 
     126      ENDIF 
     127 
     128      ! Define constants 
     129      ! ---------------- 
     130      IF(lwp) WRITE(numout,*) 
     131      IF(lwp) WRITE(numout,*) '       Constants' 
     132 
     133      IF(lwp) WRITE(numout,*) 
     134      IF(lwp) WRITE(numout,*) '          mathematical constant                 rpi = ', rpi 
     135 
     136      rsiyea = 365.25_wp * rday * 2._wp * rpi / 6.283076_wp 
     137      rsiday = rday / ( 1._wp + rday / rsiyea ) 
     138#if defined key_cice 
     139      omega  = 7.292116e-05 
     140#else 
     141      omega  = 2._wp * rpi / rsiday  
     142#endif 
     143      IF(lwp) WRITE(numout,*) 
     144      IF(lwp) WRITE(numout,*) '          day                                rday   = ', rday,   ' s' 
     145      IF(lwp) WRITE(numout,*) '          sideral year                       rsiyea = ', rsiyea, ' s' 
     146      IF(lwp) WRITE(numout,*) '          sideral day                        rsiday = ', rsiday, ' s' 
     147      IF(lwp) WRITE(numout,*) '          omega                              omega  = ', omega,  ' s^-1' 
     148 
     149      IF(lwp) WRITE(numout,*) 
     150      IF(lwp) WRITE(numout,*) '          nb of months per year               raamo = ', raamo, ' months' 
     151      IF(lwp) WRITE(numout,*) '          nb of hours per day                 rjjhh = ', rjjhh, ' hours' 
     152      IF(lwp) WRITE(numout,*) '          nb of minutes per hour              rhhmm = ', rhhmm, ' mn' 
     153      IF(lwp) WRITE(numout,*) '          nb of seconds per minute            rmmss = ', rmmss, ' s' 
     154 
     155      IF(lwp) WRITE(numout,*) 
     156      IF(lwp) WRITE(numout,*) '          earth radius                         ra   = ', ra, ' m' 
     157      IF(lwp) WRITE(numout,*) '          gravity                              grav = ', grav , ' m/s^2' 
     158 
     159      IF(lwp) WRITE(numout,*) 
     160      IF(lwp) WRITE(numout,*) '          triple point of temperature      rtt      = ', rtt     , ' K' 
     161      IF(lwp) WRITE(numout,*) '          freezing point of water          rt0      = ', rt0     , ' K' 
     162      IF(lwp) WRITE(numout,*) '          melting point of snow            rt0_snow = ', rt0_snow, ' K' 
     163      IF(lwp) WRITE(numout,*) '          melting point of ice             rt0_ice  = ', rt0_ice , ' K' 
     164 
     165      r1_rau0     = 1._wp / rau0 
     166      r1_rcp      = 1._wp / rcp 
     167      r1_rau0_rcp = 1._wp / ( rau0 * rcp ) 
     168      IF(lwp) WRITE(numout,*) 
     169      IF(lwp) WRITE(numout,*) '          volumic mass of pure water          rauw  = ', rauw   , ' kg/m^3' 
     170      IF(lwp) WRITE(numout,*) '          volumic mass of reference           rau0  = ', rau0   , ' kg/m^3' 
     171      IF(lwp) WRITE(numout,*) '          1. / rau0                        r1_rau0  = ', r1_rau0, ' m^3/kg' 
     172      IF(lwp) WRITE(numout,*) '          ocean specific heat                 rcp   = ', rcp    , ' J/Kelvin' 
     173      IF(lwp) WRITE(numout,*) '          1. / ( rau0 * rcp )           r1_rau0_rcp = ', r1_rau0_rcp 
     174 
     175 
     176#if defined key_lim3 || defined key_cice 
     177      xlsn = lfus * rhosn        ! volumetric latent heat fusion of snow [J/m3] 
     178#else 
     179      cpic = rcpic / rhoic       ! specific heat for ice   [J/Kg/K] 
     180      lfus = xlsn / rhosn        ! latent heat of fusion of fresh ice 
     181#endif 
     182 
     183      IF(lwp) THEN 
    159184         WRITE(numout,*) 
    160185         WRITE(numout,*) '          thermal conductivity of the snow          = ', rcdsn   , ' J/s/m/K' 
    161186         WRITE(numout,*) '          thermal conductivity of the ice           = ', rcdic   , ' J/s/m/K' 
    162 #if defined key_lim3 
    163187         WRITE(numout,*) '          fresh ice specific heat                   = ', cpic    , ' J/kg/K' 
    164188         WRITE(numout,*) '          latent heat of fusion of fresh ice / snow = ', lfus    , ' J/kg' 
     189#if defined key_lim3 || defined key_cice 
    165190         WRITE(numout,*) '          latent heat of subl.  of fresh ice / snow = ', lsub    , ' J/kg' 
    166 #elif defined key_cice 
    167          WRITE(numout,*) '          latent heat of fusion of fresh ice / snow = ', lfus    , ' J/kg' 
    168191#else 
    169192         WRITE(numout,*) '          density times specific heat for snow      = ', rcpsn   , ' J/m^3/K'  
    170193         WRITE(numout,*) '          density times specific heat for ice       = ', rcpic   , ' J/m^3/K' 
    171194         WRITE(numout,*) '          volumetric latent heat fusion of sea ice  = ', xlic    , ' J/m'  
    172          WRITE(numout,*) '          volumetric latent heat fusion of snow     = ', xlsn    , ' J/m'  
    173195         WRITE(numout,*) '          latent heat of sublimation of snow        = ', xsn     , ' J/kg'  
    174196#endif 
     197         WRITE(numout,*) '          volumetric latent heat fusion of snow     = ', xlsn    , ' J/m^3'  
    175198         WRITE(numout,*) '          density of sea ice                        = ', rhoic   , ' kg/m^3' 
    176199         WRITE(numout,*) '          density of snow                           = ', rhosn   , ' kg/m^3' 
Note: See TracChangeset for help on using the changeset viewer.