REMORA
Regional Modeling of Oceans Refined Adaptively
Loading...
Searching...
No Matches
REMORA_Constants.H
Go to the documentation of this file.
1#ifndef REMORA_CONSTANTS_H_
2#define REMORA_CONSTANTS_H_
3
4#include <AMReX_REAL.H>
5
6constexpr amrex::Real zero = amrex::Real(0.0);
7constexpr amrex::Real one = amrex::Real(1.0);
8constexpr amrex::Real two = amrex::Real(2.0);
9constexpr amrex::Real three = amrex::Real(3.0);
10constexpr amrex::Real four = amrex::Real(4.0);
11constexpr amrex::Real myhalf = amrex::Real(0.5);
12constexpr amrex::Real fourth = amrex::Real(0.25);
13constexpr amrex::Real third = amrex::Real(1.0/3.0);
14constexpr amrex::Real eightthirds = amrex::Real(8.0/3.0);
15
16//Note that amrex source code uses fewer digits of pi:
17// constexpr Real pi = Real(3.1415926535897932);
18//
19constexpr amrex::Real PI = amrex::Real(3.14159265358979323846264338327950288);
20
21// Safe overly large value to fill data so that it is not uninitialized
22// but we can easily identify if the value is used in a computation
23// Would like to use the following but std::sqrt will not be allowable
24// in constexpr until C++26
25// const amrex::Real bogus_large_value = std::sqrt(std::numeric_limits<amrex::Real>::max());
26#ifdef AMREX_USE_FLOAT
27constexpr amrex::Real bogus_large_value = amrex::Real(1.e18);
28#else
29constexpr amrex::Real bogus_large_value = amrex::Real(1.e150);
30#endif
31
32constexpr amrex::Real Cp = amrex::Real(3985.0); // Specific heat of seawater [Joules/kg/degC]
33constexpr amrex::Real Csolar = amrex::Real(1353.0); // Solar irradiation constant [1360-1380 W/m2]
34constexpr amrex::Real Eradius = amrex::Real(6371315.0); // Earth equatorial radius [m]
35constexpr amrex::Real StefBo = amrex::Real(5.670374419e-8); // Stefan-Boltzmann constant [Watts/m2/K4]
36constexpr amrex::Real emmiss = amrex::Real(0.97); // Infrared emissivity [non_dimensional]
37constexpr amrex::Real rhow = amrex::Real(1000.0); // fresh water density [kg/m3]
38constexpr amrex::Real g = amrex::Real(9.80665); // acceleration due to gravity [m/s2]
39constexpr amrex::Real vonKar = amrex::Real(0.41); // von Karman constant
40
41//-----------------------------------------------------------------------
42// Constants used in surface fluxes bulk parameterization.
43//-----------------------------------------------------------------------
44//
45// blk_Cpa Specific heat capacity for dry air (J/kg/K).
46// blk_Cpw Specific heat capacity for seawater (J/kg/K).
47// blk_Rgas Gas constant for dry air (J/kg/K).
48// blk_Zabl Height (m) of atmospheric boundary layer.
49// blk_ZQ Height (m) of surface air humidity measurement.
50// blk_ZT Height (m) of surface air temperature measurement.
51// blk_ZW Height (m) of surface winds measurement.
52// blk_beta Beta parameter evaluated from Fairall low windspeed
53// turbulence data.
54// blk_dter Temperature change.
55// blk_tcw Thermal conductivity of water (W/m/K).
56// blk_visw Kinematic viscosity water (m2/s).
57
58constexpr amrex::Real blk_Cpa = amrex::Real(1004.67); // (J/kg/K), Businger 1982
59constexpr amrex::Real blk_Cpw = amrex::Real(4000.0); // (J/kg/K)
60constexpr amrex::Real blk_Rgas = amrex::Real(287.1); // (J/kg/K)
61constexpr amrex::Real blk_Zabl = amrex::Real(600.0); // (m)
62constexpr amrex::Real blk_beta = amrex::Real(1.2); // non-dimensional
63constexpr amrex::Real blk_dter = amrex::Real(0.3); // (K)
64constexpr amrex::Real blk_tcw = amrex::Real(0.6); // (W/m/K)
65constexpr amrex::Real blk_visw = amrex::Real(0.000001); // (m2/s)
66
67
68// Polynomial expansion coefficients for the computation of
69// "in situ" density and other associated quantities via the
70// nonlinear equation of state for seawater as a function of
71// potential temperature, salinity, and pressure (Jackett and
72// McDougall, 1992).
73
74constexpr amrex::Real A00 = amrex::Real(1.909256e+04);
75constexpr amrex::Real A01 = amrex::Real(2.098925e+02);
76constexpr amrex::Real A02 = amrex::Real(-3.041638e+00);
77constexpr amrex::Real A03 = amrex::Real(-1.852732e-03);
78constexpr amrex::Real A04 = amrex::Real(-1.361629e-05);
79constexpr amrex::Real B00 = amrex::Real(1.044077e+02);
80constexpr amrex::Real B01 = amrex::Real(-6.500517e+00);
81constexpr amrex::Real B02 = amrex::Real(1.553190e-01);
82constexpr amrex::Real B03 = amrex::Real(2.326469e-04);
83constexpr amrex::Real D00 = amrex::Real(-5.587545e+00);
84constexpr amrex::Real D01 = amrex::Real(7.390729e-01);
85constexpr amrex::Real D02 = amrex::Real(-1.909078e-02);
86constexpr amrex::Real E00 = amrex::Real(4.721788e-01);
87constexpr amrex::Real E01 = amrex::Real(1.028859e-02);
88constexpr amrex::Real E02 = amrex::Real(-2.512549e-04);
89constexpr amrex::Real E03 = amrex::Real(-5.939910e-07);
90constexpr amrex::Real F00 = amrex::Real(-1.571896e-02);
91constexpr amrex::Real F01 = amrex::Real(-2.598241e-04);
92constexpr amrex::Real F02 = amrex::Real(7.267926e-06);
93constexpr amrex::Real G00 = amrex::Real(2.042967e-03);
94constexpr amrex::Real G01 = amrex::Real(1.045941e-05);
95constexpr amrex::Real G02 = amrex::Real(-5.782165e-10);
96constexpr amrex::Real G03 = amrex::Real(1.296821e-07);
97constexpr amrex::Real H00 = amrex::Real(-2.595994e-07);
98constexpr amrex::Real H01 = amrex::Real(-1.248266e-09);
99constexpr amrex::Real H02 = amrex::Real(-3.508914e-09);
100constexpr amrex::Real Q00 = amrex::Real(9.99842594e+02);
101constexpr amrex::Real Q01 = amrex::Real(6.793952e-02);
102constexpr amrex::Real Q02 = amrex::Real(-9.095290e-03);
103constexpr amrex::Real Q03 = amrex::Real(1.001685e-04);
104constexpr amrex::Real Q04 = amrex::Real(-1.120083e-06);
105constexpr amrex::Real Q05 = amrex::Real(6.536332e-09);
106constexpr amrex::Real U00 = amrex::Real(8.24493e-01);
107constexpr amrex::Real U01 = amrex::Real(-4.08990e-03);
108constexpr amrex::Real U02 = amrex::Real(7.64380e-05);
109constexpr amrex::Real U03 = amrex::Real(-8.24670e-07);
110constexpr amrex::Real U04 = amrex::Real(5.38750e-09);
111constexpr amrex::Real V00 = amrex::Real(-5.72466e-03);
112constexpr amrex::Real V01 = amrex::Real(1.02270e-04);
113constexpr amrex::Real V02 = amrex::Real(-1.65460e-06);
114constexpr amrex::Real W00 = amrex::Real(4.8314e-04);
115
116#endif
constexpr amrex::Real three
constexpr amrex::Real A01
constexpr amrex::Real U01
constexpr amrex::Real E02
constexpr amrex::Real W00
constexpr amrex::Real E03
constexpr amrex::Real H00
constexpr amrex::Real Q04
constexpr amrex::Real four
constexpr amrex::Real Eradius
constexpr amrex::Real two
constexpr amrex::Real bogus_large_value
constexpr amrex::Real V02
constexpr amrex::Real B02
constexpr amrex::Real U03
constexpr amrex::Real eightthirds
constexpr amrex::Real H01
constexpr amrex::Real blk_tcw
constexpr amrex::Real one
constexpr amrex::Real G00
constexpr amrex::Real fourth
constexpr amrex::Real D02
constexpr amrex::Real A04
constexpr amrex::Real B00
constexpr amrex::Real A02
constexpr amrex::Real B01
constexpr amrex::Real zero
constexpr amrex::Real blk_Zabl
constexpr amrex::Real F01
constexpr amrex::Real g
constexpr amrex::Real myhalf
constexpr amrex::Real Q00
constexpr amrex::Real vonKar
constexpr amrex::Real G01
constexpr amrex::Real PI
constexpr amrex::Real blk_dter
constexpr amrex::Real G03
constexpr amrex::Real Q02
constexpr amrex::Real H02
constexpr amrex::Real Q01
constexpr amrex::Real rhow
constexpr amrex::Real Q03
constexpr amrex::Real U04
constexpr amrex::Real blk_Rgas
constexpr amrex::Real blk_beta
constexpr amrex::Real F00
constexpr amrex::Real emmiss
constexpr amrex::Real B03
constexpr amrex::Real E00
constexpr amrex::Real Q05
constexpr amrex::Real G02
constexpr amrex::Real Cp
constexpr amrex::Real StefBo
constexpr amrex::Real Csolar
constexpr amrex::Real V00
constexpr amrex::Real U02
constexpr amrex::Real blk_Cpa
constexpr amrex::Real F02
constexpr amrex::Real third
constexpr amrex::Real E01
constexpr amrex::Real blk_Cpw
constexpr amrex::Real U00
constexpr amrex::Real A00
constexpr amrex::Real V01
constexpr amrex::Real A03
constexpr amrex::Real D01
constexpr amrex::Real D00
constexpr amrex::Real blk_visw