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_r2802_UKMO8_cice/NEMOGCM/NEMO/OPA_SRC/DOM – NEMO

source: branches/2011/dev_r2802_UKMO8_cice/NEMOGCM/NEMO/OPA_SRC/DOM/phycst.F90 @ 2874

Last change on this file since 2874 was 2874, checked in by charris, 13 years ago

Code for running NEMO with CICE (for fully coupled mode this should be used in combination with dev_r2802_UKMO8_sbccpl). Changes are described briefly below.

physct: Constants modified to be consistent with CICE

nemogcm / prtctl / mppini: Changes to NEMO decomposition (activated using key_nemocice_decomp) to produce 'square' options in CICE. Can run without this key / code but this requires a global gather / scatter in the NEMO-CICE coupling which gets very slow on large processors numbers.

sbc_ice: CICE options and arrays added

sbcmod: CICE option added, including calls for initialising and finalising CICE.

sbcblk_core: Make sure necessary forcing field are available for CICE

sbcice_cice: Main CICE coupling code.

  • Property svn:keywords set to Id
File size: 11.8 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   !!----------------------------------------------------------------------
12
13   !!----------------------------------------------------------------------
14   !!   phy_cst  : define and print physical constant and domain parameters
15   !!----------------------------------------------------------------------
16   USE par_oce          ! ocean parameters
17   USE in_out_manager   ! I/O manager
18
19   IMPLICIT NONE
20   PRIVATE
21
22   PUBLIC   phy_cst     ! routine called by inipar.F90
23
24   REAL(wp), PUBLIC ::   rpi = 3.141592653589793_wp             !: pi
25   REAL(wp), PUBLIC ::   rad = 3.141592653589793_wp / 180._wp   !: conversion from degre into radian
26   REAL(wp), PUBLIC ::   rsmall = 0.5 * EPSILON( 1.e0 )         !: smallest real computer value
27   
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 = 7.292115083046061e-5_wp ,  &  !: change the last digit!
36   REAL(wp), PUBLIC ::   omega                    !: earth rotation parameter
37   REAL(wp), PUBLIC ::   ra    = 6371229._wp      !: earth radius (meter)
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 water (Kelvin)
42#if defined key_lim3
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
49
50#if defined key_cice
51   REAL(wp), PUBLIC ::   rau0     = 1026._wp      !: reference volumic mass (density)  (kg/m3)
52#else
53   REAL(wp), PUBLIC ::   rau0     = 1035._wp      !: reference volumic mass (density)  (kg/m3)
54#endif
55   REAL(wp), PUBLIC ::   rau0r                    !: reference specific volume         (m3/kg)
56   REAL(wp), PUBLIC ::   rcp      =    4.e+3_wp   !: ocean specific heat
57   REAL(wp), PUBLIC ::   ro0cpr                   !: = 1. / ( rau0 * rcp )
58
59#if defined key_lim3 || defined key_cice
60   REAL(wp), PUBLIC ::   rcdsn   =   0.31_wp      !: thermal conductivity of snow
61   REAL(wp), PUBLIC ::   rcdic   =   2.034396_wp  !: thermal conductivity of fresh ice
62   REAL(wp), PUBLIC ::   cpic    = 2067.0         !: specific heat of sea ice
63   REAL(wp), PUBLIC ::   lsub    = 2.834e+6       !: pure ice latent heat of sublimation (J.kg-1)
64   REAL(wp), PUBLIC ::   lfus    = 0.334e+6       !: latent heat of fusion of fresh ice   (J.kg-1)
65   REAL(wp), PUBLIC ::   rhoic   = 917._wp        !: volumic mass of sea ice (kg/m3)
66   REAL(wp), PUBLIC ::   tmut    =   0.054        !: decrease of seawater meltpoint with salinity
67#else
68   REAL(wp), PUBLIC ::   rcdsn   =   0.22_wp      !: conductivity of the snow
69   REAL(wp), PUBLIC ::   rcdic   =   2.034396_wp  !: conductivity of the ice
70   REAL(wp), PUBLIC ::   rcpsn   =   6.9069e+5_wp !: density times specific heat for snow
71   REAL(wp), PUBLIC ::   rcpic   =   1.8837e+6_wp !: volumetric latent heat fusion of sea ice
72   REAL(wp), PUBLIC ::   lfus    =   0.3337e+6    !: latent heat of fusion of fresh ice   (J.kg-1)   
73   REAL(wp), PUBLIC ::   xlsn    = 110.121e+6_wp  !: volumetric latent heat fusion of snow
74   REAL(wp), PUBLIC ::   xlic    = 300.33e+6_wp   !: volumetric latent heat fusion of ice
75   REAL(wp), PUBLIC ::   xsn     =   2.8e+6       !: latent heat of sublimation of snow
76   REAL(wp), PUBLIC ::   rhoic   = 900._wp        !: volumic mass of sea ice (kg/m3)
77#endif
78   REAL(wp), PUBLIC ::   rhosn   = 330._wp        !: volumic mass of snow (kg/m3)
79   REAL(wp), PUBLIC ::   emic    =   0.97_wp      !: emissivity of snow or ice
80   REAL(wp), PUBLIC ::   sice    =   6.0_wp       !: reference salinity of ice (psu)
81   REAL(wp), PUBLIC ::   soce    =  34.7_wp       !: reference salinity of sea (psu)
82   REAL(wp), PUBLIC ::   cevap   =   2.5e+6_wp    !: latent heat of evaporation (water)
83   REAL(wp), PUBLIC ::   srgamma =   0.9_wp       !: correction factor for solar radiation (Oberhuber, 1974)
84   REAL(wp), PUBLIC ::   vkarmn  =   0.4_wp       !: von Karman constant
85   REAL(wp), PUBLIC ::   stefan  =   5.67e-8_wp   !: Stefan-Boltzmann constant
86   !!----------------------------------------------------------------------
87   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
88   !! $Id$
89   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
90   !!----------------------------------------------------------------------
91   
92CONTAINS
93   
94   SUBROUTINE phy_cst
95      !!----------------------------------------------------------------------
96      !!                       ***  ROUTINE phy_cst  ***
97      !!
98      !! ** Purpose :   Print model parameters and set and print the constants
99      !!----------------------------------------------------------------------
100      CHARACTER (len=64) ::   cform = "(A12, 3(A13, I7) )" 
101      !!----------------------------------------------------------------------
102
103      !                                   ! Define additional parameters
104      rsiyea = 365.25 * rday * 2. * rpi / 6.283076
105      rsiday = rday / ( 1. + rday / rsiyea )
106#if defined key_cice
107      omega =  7.292116e-05
108#else
109      omega  = 2. * rpi / rsiday 
110#endif
111
112      rau0r  = 1. /   rau0 
113      ro0cpr = 1. / ( rau0 * rcp )
114
115
116      IF(lwp) THEN                        ! control print
117         WRITE(numout,*)
118         WRITE(numout,*) ' phy_cst : initialization of ocean parameters and constants'
119         WRITE(numout,*) ' ~~~~~~~'
120         WRITE(numout,*) '       Domain info'
121         WRITE(numout,*) '          dimension of model'
122         WRITE(numout,*) '                 Local domain      Global domain       Data domain '
123         WRITE(numout,cform) '            ','   jpi     : ', jpi, '   jpiglo  : ', jpiglo, '   jpidta  : ', jpidta
124         WRITE(numout,cform) '            ','   jpj     : ', jpj, '   jpjglo  : ', jpjglo, '   jpjdta  : ', jpjdta
125         WRITE(numout,cform) '            ','   jpk     : ', jpk, '   jpk     : ', jpk   , '   jpkdta  : ', jpkdta
126         WRITE(numout,*)      '           ','   jpij    : ', jpij
127         WRITE(numout,*) '          mpp local domain info (mpp)'
128         WRITE(numout,*) '             jpni    : ', jpni, '   jpreci  : ', jpreci
129         WRITE(numout,*) '             jpnj    : ', jpnj, '   jprecj  : ', jprecj
130         WRITE(numout,*) '             jpnij   : ', jpnij
131         WRITE(numout,*) '          lateral domain boundary condition type : jperio  = ', jperio
132         WRITE(numout,*)
133         WRITE(numout,*) '       Constants'
134         WRITE(numout,*)
135         WRITE(numout,*) '          mathematical constant                 rpi = ', rpi
136         WRITE(numout,*) '          day                                rday   = ', rday,   ' s'
137         WRITE(numout,*) '          sideral year                       rsiyea = ', rsiyea, ' s'
138         WRITE(numout,*) '          sideral day                        rsiday = ', rsiday, ' s'
139         WRITE(numout,*) '          omega                              omega  = ', omega,  ' s-1'
140         WRITE(numout,*)
141         WRITE(numout,*) '          nb of months per year               raamo = ', raamo, ' months'
142         WRITE(numout,*) '          nb of hours per day                 rjjhh = ', rjjhh, ' hours'
143         WRITE(numout,*) '          nb of minutes per hour              rhhmm = ', rhhmm, ' mn'
144         WRITE(numout,*) '          nb of seconds per minute            rmmss = ', rmmss, ' s'
145         WRITE(numout,*)
146         WRITE(numout,*) '          earth radius                         ra   = ', ra, ' m'
147         WRITE(numout,*) '          gravity                              grav = ', grav , ' m/s^2'
148         WRITE(numout,*)
149         WRITE(numout,*) '          triple point of temperature      rtt      = ', rtt     , ' K'
150         WRITE(numout,*) '          freezing point of water          rt0      = ', rt0     , ' K'
151         WRITE(numout,*) '          melting point of snow            rt0_snow = ', rt0_snow, ' K'
152         WRITE(numout,*) '          melting point of ice             rt0_ice  = ', rt0_ice , ' K'
153         WRITE(numout,*)
154         WRITE(numout,*) '          ocean reference volumic mass       rau0   = ', rau0 , ' kg/m^3'
155         WRITE(numout,*) '          ocean reference specific volume    rau0r  = ', rau0r, ' m^3/Kg'
156         WRITE(numout,*) '          ocean specific heat                rcp    = ', rcp
157         WRITE(numout,*) '                       1. / ( rau0 * rcp ) = ro0cpr = ', ro0cpr
158         WRITE(numout,*)
159         WRITE(numout,*) '          thermal conductivity of the snow          = ', rcdsn   , ' J/s/m/K'
160         WRITE(numout,*) '          thermal conductivity of the ice           = ', rcdic   , ' J/s/m/K'
161#if defined key_lim3
162         WRITE(numout,*) '          fresh ice specific heat                   = ', cpic    , ' J/kg/K'
163         WRITE(numout,*) '          latent heat of fusion of fresh ice / snow = ', lfus    , ' J/kg'
164         WRITE(numout,*) '          latent heat of subl.  of fresh ice / snow = ', lsub    , ' J/kg'
165#else
166         WRITE(numout,*) '          density times specific heat for snow      = ', rcpsn   , ' J/m^3/K' 
167         WRITE(numout,*) '          density times specific heat for ice       = ', rcpic   , ' J/m^3/K'
168         WRITE(numout,*) '          volumetric latent heat fusion of sea ice  = ', xlic    , ' J/m' 
169         WRITE(numout,*) '          volumetric latent heat fusion of snow     = ', xlsn    , ' J/m' 
170         WRITE(numout,*) '          latent heat of sublimation of snow        = ', xsn     , ' J/kg' 
171#endif
172         WRITE(numout,*) '          density of sea ice                        = ', rhoic   , ' kg/m^3'
173         WRITE(numout,*) '          density of snow                           = ', rhosn   , ' kg/m^3'
174         WRITE(numout,*) '          emissivity of snow or ice                 = ', emic 
175         WRITE(numout,*) '          salinity of ice                           = ', sice    , ' psu'
176         WRITE(numout,*) '          salinity of sea                           = ', soce    , ' psu'
177         WRITE(numout,*) '          latent heat of evaporation (water)        = ', cevap   , ' J/m^3' 
178         WRITE(numout,*) '          correction factor for solar radiation     = ', srgamma 
179         WRITE(numout,*) '          von Karman constant                       = ', vkarmn 
180         WRITE(numout,*) '          Stefan-Boltzmann constant                 = ', stefan  , ' J/s/m^2/K^4'
181         WRITE(numout,*)
182         WRITE(numout,*) '          conversion: degre ==> radian          rad = ', rad
183         WRITE(numout,*)
184         WRITE(numout,*) '          smallest real computer value       rsmall = ', rsmall
185      ENDIF
186
187   END SUBROUTINE phy_cst
188
189   !!======================================================================
190END MODULE phycst
Note: See TracBrowser for help on using the repository browser.