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.
phycst.F90 in branches/2011/dev_UKM0_2011/NEMOGCM/NEMO/OPA_SRC/DOM – NEMO

source: branches/2011/dev_UKM0_2011/NEMOGCM/NEMO/OPA_SRC/DOM/phycst.F90 @ 3078

Last change on this file since 3078 was 3078, checked in by rfurner, 12 years ago

ticket #885 small bug fix to bdydta, and changes to documentation and in-code comments

  • Property svn:keywords set to Id
File size: 12.0 KB
Line 
1MODULE phycst
2   !!======================================================================
3   !!                    ***  MODULE  phycst  ***
4   !!     Definition of of both ocean and ice parameters used in the code
5   !!=====================================================================
6   !! History :   OPA  !  1990-10  (C. Levy - G. Madec)  Original code
7   !!             8.1  !  1991-11  (G. Madec, M. Imbard)  cosmetic changes
8   !!   NEMO      1.0  !  2002-08  (G. Madec, C. Ethe)  F90, add ice constants
9   !!              -   !  2006-08  (G. Madec)  style
10   !!             3.2  !  2006-08  (S. Masson, G. Madec)  suppress useless variables + style
11   !!             3.4  !  2011-11  (C. Harris)  minor changes for CICE constants
12   !!----------------------------------------------------------------------
13
14   !!----------------------------------------------------------------------
15   !!   phy_cst  : define and print physical constant and domain parameters
16   !!----------------------------------------------------------------------
17   USE par_oce          ! ocean parameters
18   USE in_out_manager   ! I/O manager
19
20   IMPLICIT NONE
21   PRIVATE
22
23   PUBLIC   phy_cst     ! routine called by inipar.F90
24
25   REAL(wp), PUBLIC ::   rpi = 3.141592653589793_wp             !: pi
26   REAL(wp), PUBLIC ::   rad = 3.141592653589793_wp / 180._wp   !: conversion from degre into radian
27   REAL(wp), PUBLIC ::   rsmall = 0.5 * EPSILON( 1.e0 )         !: smallest real computer value
28   
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)
43#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
51#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 )
59
60#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
87   !!----------------------------------------------------------------------
88   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
89   !! $Id$
90   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
91   !!----------------------------------------------------------------------
92   
93CONTAINS
94   
95   SUBROUTINE phy_cst
96      !!----------------------------------------------------------------------
97      !!                       ***  ROUTINE phy_cst  ***
98      !!
99      !! ** Purpose :   Print model parameters and set and print the constants
100      !!----------------------------------------------------------------------
101      CHARACTER (len=64) ::   cform = "(A12, 3(A13, I7) )" 
102      !!----------------------------------------------------------------------
103
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,*) ' ~~~~~~~'
121         WRITE(numout,*) '       Domain info'
122         WRITE(numout,*) '          dimension of model'
123         WRITE(numout,*) '                 Local domain      Global domain       Data domain '
124         WRITE(numout,cform) '            ','   jpi     : ', jpi, '   jpiglo  : ', jpiglo, '   jpidta  : ', jpidta
125         WRITE(numout,cform) '            ','   jpj     : ', jpj, '   jpjglo  : ', jpjglo, '   jpjdta  : ', jpjdta
126         WRITE(numout,cform) '            ','   jpk     : ', jpk, '   jpk     : ', jpk   , '   jpkdta  : ', jpkdta
127         WRITE(numout,*)      '           ','   jpij    : ', jpij
128         WRITE(numout,*) '          mpp local domain info (mpp)'
129         WRITE(numout,*) '             jpni    : ', jpni, '   jpreci  : ', jpreci
130         WRITE(numout,*) '             jpnj    : ', jpnj, '   jprecj  : ', jprecj
131         WRITE(numout,*) '             jpnij   : ', jpnij
132         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
159         WRITE(numout,*)
160         WRITE(numout,*) '          thermal conductivity of the snow          = ', rcdsn   , ' J/s/m/K'
161         WRITE(numout,*) '          thermal conductivity of the ice           = ', rcdic   , ' J/s/m/K'
162#if defined key_lim3
163         WRITE(numout,*) '          fresh ice specific heat                   = ', cpic    , ' J/kg/K'
164         WRITE(numout,*) '          latent heat of fusion of fresh ice / snow = ', lfus    , ' J/kg'
165         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'
168#else
169         WRITE(numout,*) '          density times specific heat for snow      = ', rcpsn   , ' J/m^3/K' 
170         WRITE(numout,*) '          density times specific heat for ice       = ', rcpic   , ' J/m^3/K'
171         WRITE(numout,*) '          volumetric latent heat fusion of sea ice  = ', xlic    , ' J/m' 
172         WRITE(numout,*) '          volumetric latent heat fusion of snow     = ', xlsn    , ' J/m' 
173         WRITE(numout,*) '          latent heat of sublimation of snow        = ', xsn     , ' J/kg' 
174#endif
175         WRITE(numout,*) '          density of sea ice                        = ', rhoic   , ' kg/m^3'
176         WRITE(numout,*) '          density of snow                           = ', rhosn   , ' kg/m^3'
177         WRITE(numout,*) '          emissivity of snow or ice                 = ', emic 
178         WRITE(numout,*) '          salinity of ice                           = ', sice    , ' psu'
179         WRITE(numout,*) '          salinity of sea                           = ', soce    , ' psu'
180         WRITE(numout,*) '          latent heat of evaporation (water)        = ', cevap   , ' J/m^3' 
181         WRITE(numout,*) '          correction factor for solar radiation     = ', srgamma 
182         WRITE(numout,*) '          von Karman constant                       = ', vkarmn 
183         WRITE(numout,*) '          Stefan-Boltzmann constant                 = ', stefan  , ' J/s/m^2/K^4'
184         WRITE(numout,*)
185         WRITE(numout,*) '          conversion: degre ==> radian          rad = ', rad
186         WRITE(numout,*)
187         WRITE(numout,*) '          smallest real computer value       rsmall = ', rsmall
188      ENDIF
189
190   END SUBROUTINE phy_cst
191
192   !!======================================================================
193END MODULE phycst
Note: See TracBrowser for help on using the repository browser.