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/OFF_SRC/DOM – NEMO

source: trunk/NEMO/OFF_SRC/DOM/phycst.F90 @ 1746

Last change on this file since 1746 was 1746, checked in by cetlod, 14 years ago

moving module phycst.F90 in DOM sub-directory, see ticket:609

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 6.9 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   REAL(wp), PUBLIC ::                        &  !:
18      rpi = 3.141592653589793_wp           ,  &  !: pi
19      rad = 3.141592653589793_wp / 180._wp ,  &  !: conversion from degre into radian
20      rsmall = 0.5 * EPSILON( 1. )               !: smallest real computer value
21   
22   REAL(wp), PUBLIC ::          & !:
23      rday = 24.*60.*60.  ,     & !: day (s)
24      rsiyea              ,     & !: sideral year (s)
25      rsiday              ,     & !: sideral day (s)
26      raamo =  12._wp     ,     & !: number of months in one year
27      rjjhh =  24._wp     ,     & !: number of hours in one day
28      rhhmm =  60._wp     ,     & !: number of minutes in one hour
29      rmmss =  60._wp     ,     & !: number of seconds in one minute
30      rjjss               ,     & !: number of seconds in one day
31!!!   omega = 7.292115083046061e-5_wp ,  &  !: change the last digit!
32      omega               ,    &  !: earth rotation parameter
33      ra    = 6371229._wp ,    &  !: earth radius (meter)
34      grav  = 9.80665_wp          !: gravity (m/s2)
35   
36   REAL(wp), PUBLIC ::         &  !:
37      rtt      = 273.16_wp  ,  &  !: triple point of temperature (Kelvin)
38      rt0      = 273.15_wp  ,  &  !: freezing point of water (Kelvin)
39      rau0     = 1020._wp   ,  &  !: volumic mass of reference (kg/m3)
40      rauw     = 1000._wp   ,  &  !: density of pure water (kg/m3)
41      rcp      =    4.e+3_wp,  &  !: ocean specific heat
42      ro0cpr                      !: = 1. / ( rau0 * rcp )
43
44      !!----------------------------------------------------------------------
45      !!  OPA 9.0 , LOCEAN-IPSL (2005)
46      !! $Id$
47      !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
48      !!----------------------------------------------------------------------
49   
50CONTAINS
51   
52   SUBROUTINE phy_cst
53      !!----------------------------------------------------------------------
54      !!                       ***  ROUTINE phy_cst  ***
55      !!
56      !! ** Purpose :   Print model parameters and set and print the constants
57      !!
58      !! ** Method  :   no
59      !!
60      !! History :
61      !!        !  90-10  (C. Levy - G. Madec)  Original code
62      !!        !  91-11  (G. Madec)
63      !!        !  91-12  (M. Imbard)
64      !!   8.5  !  02-08  (G. Madec, C. Ethe)  F90, add ice constants
65      !!----------------------------------------------------------------------
66      !! * Local variables
67      CHARACTER (len=64) ::   cform = "(A9, 3(A13, I7) )" 
68      !!----------------------------------------------------------------------
69
70      IF(lwp) WRITE(numout,*)
71      IF(lwp) WRITE(numout,*) ' phy_cst : initialization of ocean parameters and constants'
72      IF(lwp) WRITE(numout,*) ' ~~~~~~~'
73
74      ! Ocean Parameters
75      ! ----------------
76      IF(lwp) THEN
77         WRITE(numout,*) '       parameter file'
78         WRITE(numout,*)
79         WRITE(numout,*) '          dimension of model'
80         WRITE(numout,*) '              Local domain      Global domain       Data domain '
81         WRITE(numout,cform) '         ','   jpi     : ', jpi, '   jpiglo  : ', jpiglo, '   jpidta  : ', jpidta
82         WRITE(numout,cform) '         ','   jpj     : ', jpj, '   jpjglo  : ', jpjglo, '   jpjdta  : ', jpjdta
83         WRITE(numout,cform) '         ','   jpk     : ', jpk, '   jpk     : ', jpk   , '   jpkdta  : ', jpkdta
84         WRITE(numout,*)      '        ','   jpij    : ', jpij
85         WRITE(numout,*)
86         WRITE(numout,*) '          mpp local domain info (mpp)'
87         WRITE(numout,*) '             jpni    : ', jpni, '   jpreci  : ', jpreci
88         WRITE(numout,*) '             jpnj    : ', jpnj, '   jprecj  : ', jprecj
89         WRITE(numout,*) '             jpnij   : ', jpnij
90
91         WRITE(numout,*)
92         WRITE(numout,*) '          lateral domain boundary condition type : jperio  = ', jperio
93         WRITE(numout,*) '          domain island (use in rigid-lid case)  : jpisl   = ', jpisl 
94         WRITE(numout,*) '                                                   jpnisl  = ', jpnisl
95      ENDIF
96
97      ! Define constants
98      ! ----------------
99      IF(lwp) WRITE(numout,*)
100      IF(lwp) WRITE(numout,*) '       constants'
101
102      IF(lwp) WRITE(numout,*)
103      IF(lwp) WRITE(numout,*) '          mathematical constant                 rpi = ', rpi
104
105      rsiyea = 365.25 * rday * 2. * rpi / 6.283076
106      rsiday = rday / ( 1. + rday / rsiyea )
107      omega  = 2. * rpi / rsiday 
108      IF(lwp) WRITE(numout,*)
109      IF(lwp) WRITE(numout,*) '          day                                rday   = ', rday,   ' s'
110      IF(lwp) WRITE(numout,*) '          sideral year                       rsiyea = ', rsiyea, ' s'
111      IF(lwp) WRITE(numout,*) '          sideral day                        rsiday = ', rsiday, ' s'
112      IF(lwp) WRITE(numout,*) '          omega                              omega  = ', omega,  ' s-1'
113
114      IF(lwp) WRITE(numout,*)
115      IF(lwp) WRITE(numout,*) '          nb of hours per day                 rjjhh = ', rjjhh, ' hours'
116      IF(lwp) WRITE(numout,*) '          nb of minutes per hour              rhhmm = ', rhhmm, ' mn'
117      IF(lwp) WRITE(numout,*) '          nb of seconds per minute            rmmss = ', rmmss, ' s'
118
119      IF(lwp) WRITE(numout,*)
120      IF(lwp) WRITE(numout,*) '          earth radius                         ra   = ', ra, ' m'
121      IF(lwp) WRITE(numout,*) '          gravity                              grav = ', grav , ' m/s^2'
122
123      IF(lwp) WRITE(numout,*)
124      IF(lwp) WRITE(numout,*) '          triple point of temperature      rtt      = ', rtt     , ' K'
125      IF(lwp) WRITE(numout,*) '          freezing point of water          rt0      = ', rt0     , ' K'
126
127      ro0cpr = 1. / ( rau0 * rcp )
128      IF(lwp) WRITE(numout,*)
129      IF(lwp) WRITE(numout,*) '          volumic mass of pure water         rauw   = ', rauw, ' kg/m^3'
130      IF(lwp) WRITE(numout,*) '          volumic mass of reference          rau0   = ', rau0, ' kg/m^3'
131      IF(lwp) WRITE(numout,*) '          ocean specific heat                rcp    = ', rcp
132      IF(lwp) WRITE(numout,*) '                       1. / ( rau0 * rcp ) = ro0cpr = ', ro0cpr
133
134      IF(lwp) THEN
135         WRITE(numout,*)
136         WRITE(numout,*)
137         WRITE(numout,*) '          conversion: degre ==> radian          rad = ', rad
138         WRITE(numout,*)
139         WRITE(numout,*) '          smallest real computer value       rsmall = ', rsmall
140      ENDIF
141
142   END SUBROUTINE phy_cst
143
144   !!======================================================================
145END MODULE phycst
Note: See TracBrowser for help on using the repository browser.