Lapse Theory
get_bulk_lapse_rate(temp1, temp2, p1, p2)
Compute the bulk environmental lapse rate, \(\Gamma\), between pressure p1
at environmental temperature temp1
and p2
at environmental temperature temp2
:
This equation assumes hydrostatic equilibrium, ideal gas equation of state and that \(\Gamma\) is constant
between p1
and p2
.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
temp1
|
DataArray
|
Temperature at pressure |
required |
temp2
|
DataArray
|
Temperature at pressure |
required |
p1
|
Union[DataArray, float]
|
Pressure at environmental temperature |
required |
p2
|
Union[DataArray, float]
|
Pressure at environmental temperature |
required |
Returns:
Type | Description |
---|---|
Bulk environmental lapse rate, positive if |
Source code in isca_tools/thesis/lapse_theory.py
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
get_ds_in_pressure_range(ds, pressure_min, pressure_max, n_pressure=20, pressure_var_name='P', method='log', lev_dim='lev', pressure_dim_name_out='plev_ind')
Extracts dataset variables interpolated (or sampled) at multiple evenly spaced
pressure levels between pressure_min
and pressure_max
for each point.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ds
|
Dataset
|
Input dataset containing at least a pressure variable (e.g. 'P') and one or more other variables dependent on pressure. Expected dims: (..., lev) |
required |
pressure_min
|
DataArray
|
Lower pressure bound for range [Pa]. Shape: same as all non-'lev' dims of ds. |
required |
pressure_max
|
DataArray
|
Upper pressure bound for range [Pa]. Shape: same as all non-'lev' dims of ds. |
required |
n_pressure
|
int
|
Number of evenly spaced pressure levels to sample between pressure_min and pressure_max. |
20
|
pressure_var_name
|
str
|
Name of pressure variable in |
'P'
|
method
|
str
|
Method of interpolation either take log10 of pressure first or leave as raw values. |
'log'
|
lev_dim
|
str
|
Name of model level dimension in |
'lev'
|
pressure_dim_name_out
|
str
|
Name for the new pressure dimension in the output dataset.
The out dimension with this name will have the value |
'plev_ind'
|
Returns:
Name | Type | Description |
---|---|---|
ds_out |
Dataset
|
Dataset sampled at |
Source code in isca_tools/thesis/lapse_theory.py
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 |
|
get_var_at_plev(var_env, p_env, p_desired, method='log', lev_dim='lev')
Find the value of var_env
at pressure p_desired
.
Similar to interp_hybrid_to_pressure
but handles the case where want different p_desired
at each
latitude and longitude.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
var_env
|
Union[Dataset, DataArray]
|
float |
required |
p_env
|
DataArray
|
float |
required |
p_desired
|
DataArray
|
float |
required |
method
|
str
|
Method of interpolation either take log10 of pressure first or leave as raw values. |
'log'
|
lev_dim
|
str
|
String that is the name of level dimension in |
'lev'
|
Returns:
Name | Type | Description |
---|---|---|
var_desired |
float |
Source code in isca_tools/thesis/lapse_theory.py
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
|
interp_var_at_pressure(var, p_desired, p_surf, hyam, hybm, p0, plev_step=1000, extrapolate=False, lev_dim='lev', var_name='new_var')
Function to get the value of variable var
at the pressure p_desired
, where p_desired
is expected to
be a different value at each lat and lon.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
var
|
Union[DataArray, Dataset, ndarray]
|
Variable to do interpolation of. Should have |
required |
p_desired
|
Union[DataArray, ndarray]
|
Desired pressure to find |
required |
p_surf
|
Union[DataArray, ndarray]
|
Surface pressure.
Should have same dimension as |
required |
hyam
|
DataArray
|
Hybrid a coefficients. Should have dimension of |
required |
hybm
|
DataArray
|
Hybrid b coefficients. Should have dimension of |
required |
p0
|
float
|
Reference pressure. Units: Pa. |
required |
plev_step
|
float
|
Will find var at value closest to |
1000
|
extrapolate
|
bool
|
If True, below ground extrapolation for variable will be done, otherwise will return nan. |
False
|
lev_dim
|
str
|
String that is the name of level dimension in input data. |
'lev'
|
var_name
|
str
|
String that is the name of variable in input data. Only used if |
'new_var'
|
Returns:
Type | Description |
---|---|
Dataset
|
Dataset with |
Source code in isca_tools/thesis/lapse_theory.py
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
|
reconstruct_temp(temp3, p1, p2, p3, lapse_12, lapse_23)
The temperature, \(T_1\), at \(p_1\) can be reconstructed from the lapse rate, \(\Gamma_{12}\), between \(p_1\) and \(p_2\); the lapse rate \(\Gamma_{23}\), between \(p_2\) and \(p_3\); and the temperature at \(p_3\), \(T_3\):
Parameters:
Name | Type | Description | Default |
---|---|---|---|
temp3
|
DataArray
|
Temperature at pressure |
required |
p1
|
Union[DataArray, float]
|
Pressure at level to reconstruct |
required |
p2
|
Union[DataArray, float]
|
Pressure at environmental temperature |
required |
p3
|
Union[DataArray, float]
|
Pressure at environmental temperature |
required |
lapse_12
|
DataArray
|
Bulk environmental lapse rate between |
required |
lapse_23
|
DataArray
|
Bulk environmental lapse rate between |
required |
Returns:
Name | Type | Description |
---|---|---|
temp1 |
Temperature at pressure |
Source code in isca_tools/thesis/lapse_theory.py
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
|