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 trunk/NEMO/OPA_SRC – NEMO

source: trunk/NEMO/OPA_SRC/phycst.F90 @ 15

Last change on this file since 15 was 15, checked in by opalod, 20 years ago

CT : UPDATE001 : First major NEMO update

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 10.2 KB
Line 
1MODULE phycst
2   !!======================================================================
3   !!                    ***  MODULE  phycst  ***
4   !!     Definition of of both ocean and ice parameters used in the code
5   !!=====================================================================
6   !! * Modules used
7   USE par_oce          ! ocean parameters
8   USE in_out_manager   ! I/O manager
9
10   IMPLICIT NONE
11   PRIVATE
12
13   !! * Routine accessibility
14   PUBLIC phy_cst          ! routine called by inipar.F90
15
16   !! * Shared module variables
17   INTEGER, PUBLIC, DIMENSION(12) ::   &  !:
18      nbiss = (/ 31, 29, 31, 30, 31, 30,      &  !: number of days per month
19         &       31, 31, 30, 31, 30, 31 /) ,  &  !  (leap-year)
20      nobis = (/ 31, 28, 31, 30, 31, 30,      &  !: number of days per month
21         &       31, 31, 30, 31, 30, 31 /)       !  (365 days a year)
22   
23   REAL(wp), PUBLIC ::                        &  !:
24      rpi = 3.141592653589793_wp           ,  &  !: pi
25      rad = 3.141592653589793_wp / 180._wp ,  &  !: conversion from degre into radian
26      rsmall = 0.5 * EPSILON( 1. )               !: smallest real computer value
27   
28   REAL(wp), PUBLIC ::          & !:
29      rday = 24.*60.*60.  ,     & !: day (s)
30      rsiyea              ,     & !: sideral year (s)
31      rsiday              ,     & !: sideral day (s)
32      raajj = 365._wp     ,     & !: number of days in one year
33      raamo =  12._wp     ,     & !: number of months in one year
34      rjjhh =  24._wp     ,     & !: number of hours in one day
35      rhhmm =  60._wp     ,     & !: number of minutes in one hour
36      rmmss =  60._wp     ,     & !: number of seconds in one minute
37      raass               ,     & !: number of seconds in one year
38      rmoss               ,     & !: number of seconds in one month
39      rjjss               ,     & !: number of seconds in one day
40!!!   omega = 7.292115083046061e-5_wp ,  &  !: change the last digit!
41      omega               ,    &  !: earth rotation parameter
42      ra    = 6371229._wp ,    &  !: earth radius (meter)
43      grav  = 9.80665_wp          !: gravity (m/s2)
44   
45   REAL(wp), PUBLIC ::         &  !:
46      rtt      = 273.16_wp  ,  &  !: triple point of temperature (Kelvin)
47      rt0      = 273.15_wp  ,  &  !: freezing point of water (Kelvin)
48      rt0_snow = 273.15_wp  ,  &  !: melting point of snow  (Kelvin)
49      rt0_ice  = 273.05_wp  ,  &  !: melting point of ice   (Kelvin)
50      rau0     = 1020._wp   ,  &  !: volumic mass of reference (kg/m3)
51      rauw     = 1000._wp   ,  &  !: density of pure water (kg/m3)
52      rcp      =    4.e+3_wp,  &  !: ocean specific heat
53      ro0cpr                      !: = 1. / ( rau0 * rcp )
54
55   REAL(wp), PUBLIC ::            &  !:
56      rcdsn   =   0.22_wp     ,   &  !: conductivity of the snow
57      rcdic   =   2.034396_wp ,   &  !: conductivity of the ice
58      rcpsn   =   6.9069e+5_wp,   &  !: density times specific heat for snow
59      rcpic   =   1.8837e+6_wp,   &  !: volumetric latent heat fusion of sea ice
60      xlsn    = 110.121e+6_wp ,   &  !: volumetric latent heat fusion of snow
61      xlic    = 300.33e+6_wp  ,   &  !: volumetric latent heat fusion of ice
62      xsn     =   2.8e+6      ,   &  !: latent heat of sublimation of snow
63      rhoic   = 900._wp       ,   &  !: density of sea ice (kg/m3)
64      rhosn   = 330._wp       ,   &  !: density of snow (kg/m3)
65      emic    =   0.97_wp     ,   &  !: emissivity of snow or ice
66      sice    =   6.0_wp      ,   &  !: salinity of ice (psu)
67      soce    =  34.7_wp      ,   &  !: salinity of sea (psu)
68      cevap   =   2.5e+6_wp   ,   &  !: latent heat of evaporation (water)
69      srgamma =   0.9_wp      ,   &  !: correction factor for solar radiation (Oberhuber, 1974)
70      vkarmn  =   0.4_wp      ,   &  !: von Karman constant
71      stefan  =   5.67e-8_wp         !: Stefan-Boltzmann constant
72      !!----------------------------------------------------------------------
73      !!  OPA 9.0, LODYC-IPSL (2003)
74      !!----------------------------------------------------------------------
75   
76CONTAINS
77   
78   SUBROUTINE phy_cst
79      !!----------------------------------------------------------------------
80      !!                       ***  ROUTINE phy_cst  ***
81      !!
82      !! ** Purpose :   Print model parameters and set and print the constants
83      !!
84      !! ** Method  :   no
85      !!
86      !! History :
87      !!        !  90-10  (C. Levy - G. Madec)  Original code
88      !!        !  91-11  (G. Madec)
89      !!        !  91-12  (M. Imbard)
90      !!   8.5  !  02-08  (G. Madec, C. Ethe)  F90, add ice constants
91      !!----------------------------------------------------------------------
92      !! * Local variables
93      CHARACTER (len=64) ::   cform = "( 4(A13, I7) )" 
94      !!----------------------------------------------------------------------
95
96      IF(lwp) WRITE(numout,*)
97      IF(lwp) WRITE(numout,*) ' phy_cst : initialization of ocean parameters and constants'
98      IF(lwp) WRITE(numout,*) ' ~~~~~~~'
99      IF(lwp) WRITE(numout,*)
100
101
102      ! Ocean Parameters
103      ! ----------------
104      IF(lwp) THEN
105         WRITE(numout,*)
106         WRITE(numout,*) ' parameter file'
107         WRITE(numout,*) ' ~~~~~~~~~~~~~~'
108
109         WRITE(numout,*)
110         WRITE(numout,*) ' dimension of model'
111         WRITE(numout,*) ' local domain                              Global domain           Data domain '
112         WRITE(numout,cform) '   jpi     : ', jpi, '   jpim1   : ', jpim1, '   jpiglo  : ', jpiglo, '   jpidta  : ', jpidta
113         WRITE(numout,cform) '   jpj     : ', jpj, '   jpjm1   : ', jpjm1, '   jpjglo  : ', jpjglo, '   jpjdta  : ', jpjdta
114         WRITE(numout,cform) '   jpk     : ', jpk, '   jpkm1   : ', jpkm1, '   jpk     : ', jpk   , '   jpkdta  : ', jpkdta
115         WRITE(numout,*)      '  jpij    : ', jpij
116         WRITE(numout,*)
117         WRITE(numout,*) ' mpp local domain info (mpp)'
118         WRITE(numout,*) '   jpni    : ', jpni, '   jpreci  : ', jpreci
119         WRITE(numout,*) '   jpnj    : ', jpnj, '   jprecj  : ', jprecj
120         WRITE(numout,*) '   jpnij   : ', jpnij
121
122         WRITE(numout,*)
123         WRITE(numout,*) ' lateral domain boundary condition type : jperio  = ', jperio
124         WRITE(numout,*) ' domain island (use in rigid-lid case)  : jpisl   = ', jpisl 
125         WRITE(numout,*) '                                          jpnisl  = ', jpnisl
126      ENDIF
127
128
129      ! Define constants
130      ! ----------------
131      IF(lwp) WRITE(numout,*)
132      IF(lwp) WRITE(numout,*) ' constants'
133      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~'
134
135      IF(lwp) WRITE(numout,*)
136      IF(lwp) WRITE(numout,*) ' mathematical constant rpi = ', rpi
137
138      rsiyea = 365.25 * rday * 2. * rpi / 6.283076
139      rsiday = rday / ( 1. + rday / rsiyea )
140      omega  = 2. * rpi / rsiday 
141      IF(lwp) WRITE(numout,*)
142      IF(lwp) WRITE(numout,*) ' day          rday   = ', rday,   ' s'
143      IF(lwp) WRITE(numout,*) ' sideral year rsiyea = ', rsiyea, ' s'
144      IF(lwp) WRITE(numout,*) ' sideral day  rsiday = ', rsiday, ' s'
145      IF(lwp) WRITE(numout,*) ' omega        omega  = ', omega,  ' s-1'
146
147      rjjss = rjjhh * rhhmm * rmmss
148      IF(lwp) WRITE(numout,*)
149      IF(lwp) WRITE(numout,*) ' nb of months per year    raamo = ', raamo, ' months'
150      IF(lwp) WRITE(numout,*) ' nb of hours per day      rjjhh = ', rjjhh, ' hours'
151      IF(lwp) WRITE(numout,*) ' nb of minutes per hour   rhhmm = ', rhhmm, ' mn'
152      IF(lwp) WRITE(numout,*) ' nb of seconds per minute rmmss = ', rmmss, ' s'
153      IF(lwp) WRITE(numout,*) ' nb of seconds per day    rjjss = ', rjjss, ' 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/s2'
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 ( C)     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      ro0cpr = 1. / ( rau0 * rcp )    !
166      IF(lwp) WRITE(numout,*)
167      IF(lwp) WRITE(numout,*) ' volumic mass of pure water (kg/m3)  rauw   = ', rauw, ' kg/m3'
168      IF(lwp) WRITE(numout,*) ' volumic mass of reference  (kg/m3)  rau0   = ', rau0, ' kg/m3'
169      IF(lwp) WRITE(numout,*) ' ocean specific heat                 rcp    = ', rcp
170      IF(lwp) WRITE(numout,*) '               1. / ( rau0 * rcp ) = ro0cpr = ', ro0cpr
171
172      IF(lwp) THEN
173         WRITE(numout,*)
174         WRITE(numout,*) ' thermal conductivity of the snow          = ', rcdsn   , ' J.s-1.m-1.K-1'
175         WRITE(numout,*) ' thermal conductivity of the ice           = ', rcdic   , ' J.s-1.m-1.K-1'
176         WRITE(numout,*) ' density times specific heat for snow      = ', rcpsn   , ' J.m-3.K-1' 
177         WRITE(numout,*) ' density times specific heat for ice       = ', rcpic   , ' J.m-3.K-1' 
178         WRITE(numout,*) ' volumetric latent heat fusion of sea ice  = ', xlic    , ' J.m-3' 
179         WRITE(numout,*) ' volumetric latent heat fusion of snow     = ', xlsn    , ' J.m-3' 
180         WRITE(numout,*) ' latent heat of sublimation of snow        = ', xsn     , ' J.kg-1' 
181         WRITE(numout,*) ' density of sea ice                        = ', rhoic   , ' kg.m-3'
182         WRITE(numout,*) ' density of snow                           = ', rhosn   , ' kg.m-3'
183         WRITE(numout,*) ' emissivity of snow or ice                 = ', emic 
184         WRITE(numout,*) ' salinity of ice                           = ', sice    , ' psu'
185         WRITE(numout,*) ' salinity of sea                           = ', soce    , ' psu'
186         WRITE(numout,*) ' latent heat of evaporation (water)        = ', cevap   , ' J.m-3' 
187         WRITE(numout,*) ' correction factor for solar radiation     = ', srgamma 
188         WRITE(numout,*) ' von Karman constant                       = ', vkarmn 
189         WRITE(numout,*) ' Stefan-Boltzmann constant                 = ', stefan  , ' J.s-1.m-2.K-4'
190
191         WRITE(numout,*)
192         WRITE(numout,*) ' conversion: degre ==> radian rad = ', rad
193
194         WRITE(numout,*)
195         WRITE(numout,*) ' smallest real computer value= ', rsmall
196      ENDIF
197
198   END SUBROUTINE phy_cst
199
200   !!======================================================================
201END MODULE phycst
Note: See TracBrowser for help on using the repository browser.