0.6.2-dev0
FORCES
FORtran lib for Comp. Env. Sys.
Loading...
Searching...
No Matches
mo_constants.f90
Go to the documentation of this file.
1!> \file mo_constants.f90
2!> \brief \copybrief mo_constants
3!> \details \copydetails mo_constants
4
5!> \brief Provides computational, mathematical, physical, and file constants
6!> \details Provides computational constants like epsilon, mathematical constants such as Pi,
7!! physical constants such as the Stefan-Boltzmann constant, and file units for some standard streams
8!! such as standard in.
9!> \author Matthias Cuntz
10!> \date Nov 2011
11!> \copyright Copyright 2005-\today, the CHS Developers, Sabine Attinger: All rights reserved.
12!! FORCES is released under the LGPLv3+ license \license_note
14
15 use mo_kind, only : sp, dp, i4, i8
16 use, intrinsic :: iso_fortran_env, only : input_unit, output_unit, error_unit
17
18 implicit none
19
20 ! Mathematical
21 !> Pi in double precision
22 real(dp), parameter :: pi_dp = 3.141592653589793238462643383279502884197_dp ! Pi
23 !> Pi in single precision
24 real(sp), parameter :: pi_sp = 3.141592653589793238462643383279502884197_sp
25 !> Pi/2 in double precision
26 real(dp), parameter :: pio2_dp = 1.57079632679489661923132169163975144209858_dp ! Pi/2
27 !> Pi/2 in single precision
28 real(sp), parameter :: pio2_sp = 1.57079632679489661923132169163975144209858_sp
29 !> 2*Pi in double precision
30 real(dp), parameter :: twopi_dp = 6.283185307179586476925286766559005768394_dp ! 2*Pi
31 !> 2*Pi in single precision
32 real(sp), parameter :: twopi_sp = 6.283185307179586476925286766559005768394_sp
33 !> Square root of 2 in double precision
34 real(dp), parameter :: sqrt2_dp = 1.41421356237309504880168872420969807856967_dp ! Sqrt(2)
35 !> Square root of 2 in single precision
36 real(sp), parameter :: sqrt2_sp = 1.41421356237309504880168872420969807856967_sp
37 !> 2/3 in double precision
38 real(dp), parameter :: twothird_dp = 0.6666666666666666666666666666666666667_dp ! 2/3
39 !> 2/3 in single precision
40 real(sp), parameter :: twothird_sp = 0.6666666666666666666666666666666666667_sp
41 !> 1/3 in double precision
42 real(dp), parameter :: onethird_dp = 0.3333333333333333333333333333333333333_dp ! 1/3
43 !> 1/3 in single precision
44 real(sp), parameter :: onethird_sp = 0.3333333333333333333333333333333333333_sp ! 1/3
45 !> degree to radian conversion (pi/180) in double precision
46 real(dp), parameter :: deg2rad_dp = pi_dp / 180._dp ! deg2rad
47 !> degree to radian conversion (pi/180) in double precision
48 real(sp), parameter :: deg2rad_sp = pi_sp / 180._sp
49 !> radian to conversion (180/pi) in double precision
50 real(dp), parameter :: rad2deg_dp = 180._dp / pi_dp ! rad2deg
51 !> radian to degree conversion (180/pi) in single precision
52 real(sp), parameter :: rad2deg_sp = 180._sp / pi_sp
53
54 ! Time conversion
55 !> Seconds per day [s] in single precision
56 real(sp), public, parameter :: secday_sp = 86400.0_sp
57 real(dp), public, parameter :: secday_dp = 86400.0_dp !< secday [s]
58 real(dp), public, parameter :: dayhours = 24.0_dp !< hours per day
59 real(dp), public, parameter :: yearmonths = 12.0_dp !< months per year
60 real(dp), public, parameter :: yeardays = 365.0_dp !< days in a year
61 real(dp), public, parameter :: daysecs = 86400.0_dp !< sec in a day
62 real(dp), public, parameter :: hoursecs = 3600.0_dp !< seconds per hour
63
64 ! Physical
65 !> Psychrometric constant [kPa K^-1] in double precision
66 real(dp), parameter :: psychro_dp = 0.0646_dp ! psychrometric constant [kPa C-1]
67 !> Psychrometric constant [kPa K^-1] in sibgle precision
68 real(sp), parameter :: psychro_sp = 0.0646_sp
69 !> Gravity accelaration [m^2 s^-1] in double precision
70 real(dp), parameter :: gravity_dp = 9.81_dp ! Gravity acceleration [m^2/s]
71 !> Gravity accelaration [m^2 s^-1] in single precision
72 real(sp), parameter :: gravity_sp = 9.81_sp
73 !> Solar constant in [J m^-2 s^-1] in double precision
74 real(dp), parameter :: solarconst_dp = 1367._dp ! Solar constant in [W m-2 = kg s-3]
75 !> Solar constant in [J m^-2 s^-1] in single precision
76 real(sp), parameter :: solarconst_sp = 1367._sp
77 !> Specific heat for vaporization of water in [J m-2 mm-1] in double precision
78 real(dp), parameter :: specheatet_dp = 2.45e06_dp ! Specific heat in [W s m-2 mm-1 = kg s-2 mm-1]
79 !> Specific heat for vaporization of water in [J m-2 mm-1] in single precision
80 real(sp), parameter :: specheatet_sp = 2.45e06_sp
81 !> Standard temperature [K] in double precision
82 real(dp), parameter :: t0_dp = 273.15_dp ! Celcius <-> Kelvin [K]
83 !> Standard temperature [K] in single precision
84 real(sp), parameter :: t0_sp = 273.15_sp
85 !> Stefan-Boltzmann constant [W m^-2 K^-4] in double precision
86 real(dp), parameter :: sigma_dp = 5.67e-08_dp ! Stefan-Boltzmann constant [W/m^2/K^4]
87 !> Stefan-Boltzmann constant [W m^-2 K^-4] in single precision
88 real(sp), parameter :: sigma_sp = 5.67e-08_sp
89 !> Earth radius [m] in single precision
90 real(sp), parameter :: radiusearth_sp = 6371228._sp
91 !> Earth radius [m] in double precision
92 real(dp), parameter :: radiusearth_dp = 6371228._dp
93
94 ! standard atmospehere
95 !> Standard pressure [Pa] in double precision
96 real(dp), parameter :: p0_dp = 101325._dp ! Standard pressure [Pa]
97 !> Standard pressure [Pa] in single precision
98 real(sp), parameter :: p0_sp = 101325._sp
99 !> standard density [kg m^-3] in double precision
100 real(dp), parameter :: rho0_dp = 1.225_dp ! Standard air density
101 !> standard density [kg m^-3] in single precision
102 real(sp), parameter :: rho0_sp = 1.225_sp
103 !> specific heat capacity of air [J kg^-1 K^-1] in double precision
104 real(dp), parameter :: cp0_dp = 1005.0_dp ! Standard specific heat of air
105 !> specific heat capacity of air [J kg^-1 K^-1] in single precision
106 real(sp), parameter :: cp0_sp = 1005.0_sp
107 !> specific heat capacity of water [J kg^-1 K^-1] in double precision
108 real(dp), parameter :: cp_w_dp = 4.19_dp
109 !> specific heat capacity of water [J kg^-1 K^-1] in single precision
110 real(sp), parameter :: cp_w_sp = 4.19_sp
111
112 !> Pi in double precision
113 real(dp), parameter :: pi_d = 3.141592653589793238462643383279502884197_dp ! Pi
114 !> Pi in single precision
115 real(sp), parameter :: pi = 3.141592653589793238462643383279502884197_sp
116 !> Pi/2 in double precision
117 real(dp), parameter :: pio2_d = 1.57079632679489661923132169163975144209858_dp ! Pi/2
118 !> Pi/2 in single precision
119 real(sp), parameter :: pio2 = 1.57079632679489661923132169163975144209858_sp
120 !> 2*Pi in double precision
121 real(dp), parameter :: twopi_d = 6.283185307179586476925286766559005768394_dp ! 2*Pi
122 !> 2*Pi in single precision
123 real(sp), parameter :: twopi = 6.283185307179586476925286766559005768394_sp
124 !> Square root of 2 in double precision
125 real(dp), parameter :: sqrt2_d = 1.41421356237309504880168872420969807856967_dp ! Sqrt(2)
126 !> Square root of 2 in single precision
127 real(sp), parameter :: sqrt2 = 1.41421356237309504880168872420969807856967_sp
128 !> Euler''s constant in double precision
129 real(dp), parameter :: euler_d = 0.5772156649015328606065120900824024310422_dp ! Euler
130 !> Euler''s constant in single precision
131 real(sp), parameter :: euler = 0.5772156649015328606065120900824024310422_sp
132
133 ! Standard file units
134 !> Standard input file unit
135 ! integer, parameter :: nin = 5 ! standard input stream
136 integer, parameter :: nin = input_unit ! standard input stream
137 !> Standard output file unit
138 ! integer, parameter :: nout = 6 ! standard output stream
139 integer, parameter :: nout = output_unit ! standard output stream
140 !> Standard error file unit
141 ! integer, parameter :: nerr = 0 ! error output stream
142 integer, parameter :: nerr = error_unit ! error output stream
143 !> Standard file unit for namelist
144 integer, parameter :: nnml = 100 ! namelist unit
145
146 ! computational, these values need to be the same!!!
147 real(sp), public, parameter :: nodata_sp = -9999.0_sp !< [-] global no data value
148 real(dp), public, parameter :: nodata_dp = -9999.0_dp !< [-] global no data value
149 integer(i4), public, parameter :: nodata_i4 = int(nodata_dp) !< [-] global no data value
150 integer(i8), public, parameter :: nodata_i8 = int(nodata_dp, kind=i8) !< [-] global no data value
151 !> epsilon(1.0) in double precision
152 real(dp), public, parameter :: eps_dp = epsilon(1.0_dp)
153 !> epsilon(1.0) in single precision
154 real(sp), public, parameter :: eps_sp = epsilon(1.0_sp)
155
156end module mo_constants
Provides computational, mathematical, physical, and file constants.
integer, parameter nin
Standard input file unit.
real(sp), parameter deg2rad_sp
degree to radian conversion (pi/180) in double precision
real(dp), parameter sqrt2_d
Square root of 2 in double precision.
real(sp), parameter onethird_sp
1/3 in single precision
real(dp), parameter, public nodata_dp
[-] global no data value
real(dp), parameter, public yearmonths
months per year
real(sp), parameter euler
Euler''s constant in single precision.
real(dp), parameter, public eps_dp
epsilon(1.0) in double precision
real(dp), parameter, public yeardays
days in a year
real(sp), parameter twopi_sp
2*Pi in single precision
real(dp), parameter radiusearth_dp
Earth radius [m] in double precision.
real(sp), parameter sigma_sp
Stefan-Boltzmann constant [W m^-2 K^-4] in single precision.
real(sp), parameter rad2deg_sp
radian to degree conversion (180/pi) in single precision
real(sp), parameter rho0_sp
standard density [kg m^-3] in single precision
real(dp), parameter twopi_dp
2*Pi in double precision
real(dp), parameter solarconst_dp
Solar constant in [J m^-2 s^-1] in double precision.
real(dp), parameter twothird_dp
2/3 in double precision
integer(i8), parameter, public nodata_i8
[-] global no data value
real(dp), parameter specheatet_dp
Specific heat for vaporization of water in [J m-2 mm-1] in double precision.
real(sp), parameter pio2_sp
Pi/2 in single precision.
real(sp), parameter radiusearth_sp
Earth radius [m] in single precision.
real(dp), parameter deg2rad_dp
degree to radian conversion (pi/180) in double precision
integer, parameter nnml
Standard file unit for namelist.
real(sp), parameter psychro_sp
Psychrometric constant [kPa K^-1] in sibgle precision.
real(dp), parameter, public secday_dp
secday [s]
integer, parameter nerr
Standard error file unit.
real(dp), parameter rho0_dp
standard density [kg m^-3] in double precision
real(sp), parameter gravity_sp
Gravity accelaration [m^2 s^-1] in single precision.
real(dp), parameter psychro_dp
Psychrometric constant [kPa K^-1] in double precision.
real(dp), parameter, public dayhours
hours per day
real(sp), parameter cp0_sp
specific heat capacity of air [J kg^-1 K^-1] in single precision
real(sp), parameter pi
Pi in single precision.
real(dp), parameter euler_d
Euler''s constant in double precision.
real(dp), parameter pio2_d
Pi/2 in double precision.
real(dp), parameter t0_dp
Standard temperature [K] in double precision.
real(dp), parameter sigma_dp
Stefan-Boltzmann constant [W m^-2 K^-4] in double precision.
integer(i4), parameter, public nodata_i4
[-] global no data value
real(sp), parameter sqrt2_sp
Square root of 2 in single precision.
real(sp), parameter t0_sp
Standard temperature [K] in single precision.
real(dp), parameter pio2_dp
Pi/2 in double precision.
real(dp), parameter, public hoursecs
seconds per hour
real(dp), parameter cp0_dp
specific heat capacity of air [J kg^-1 K^-1] in double precision
real(dp), parameter pi_d
Pi in double precision.
real(sp), parameter cp_w_sp
specific heat capacity of water [J kg^-1 K^-1] in single precision
real(sp), parameter, public secday_sp
Seconds per day [s] in single precision.
real(dp), parameter pi_dp
Pi in double precision.
real(dp), parameter twopi_d
2*Pi in double precision
real(sp), parameter twopi
2*Pi in single precision
real(dp), parameter rad2deg_dp
radian to conversion (180/pi) in double precision
real(sp), parameter pio2
Pi/2 in single precision.
real(dp), parameter, public daysecs
sec in a day
real(sp), parameter sqrt2
Square root of 2 in single precision.
real(sp), parameter p0_sp
Standard pressure [Pa] in single precision.
real(sp), parameter specheatet_sp
Specific heat for vaporization of water in [J m-2 mm-1] in single precision.
real(sp), parameter solarconst_sp
Solar constant in [J m^-2 s^-1] in single precision.
real(sp), parameter, public nodata_sp
[-] global no data value
real(dp), parameter p0_dp
Standard pressure [Pa] in double precision.
real(sp), parameter pi_sp
Pi in single precision.
real(dp), parameter cp_w_dp
specific heat capacity of water [J kg^-1 K^-1] in double precision
integer, parameter nout
Standard output file unit.
real(sp), parameter twothird_sp
2/3 in single precision
real(dp), parameter onethird_dp
1/3 in double precision
real(dp), parameter gravity_dp
Gravity accelaration [m^2 s^-1] in double precision.
real(sp), parameter, public eps_sp
epsilon(1.0) in single precision
real(dp), parameter sqrt2_dp
Square root of 2 in double precision.
Define number representations.
Definition mo_kind.F90:17
integer, parameter sp
Single Precision Real Kind.
Definition mo_kind.F90:44
integer, parameter i4
4 Byte Integer Kind
Definition mo_kind.F90:40
integer, parameter i8
8 Byte Integer Kind
Definition mo_kind.F90:42
integer, parameter dp
Double Precision Real Kind.
Definition mo_kind.F90:46