波动频散与空间分布
_BaseEW
Bases: Flag
基本赤道波动类型的标识,用于组合不同方向的波动类型。
EASTWARD
class-attribute
instance-attribute
EASTWARD = auto()
Eastward wave
IG
class-attribute
instance-attribute
IG = auto()
Inertio-Gravity wave
KELVIN
class-attribute
instance-attribute
KELVIN = auto()
Kelvin wave
MRG
class-attribute
instance-attribute
MRG = auto()
Mixed Rossby-Gravity wave
ROSSBY
class-attribute
instance-attribute
ROSSBY = auto()
Equatorial Rossby wave
WESTWARD
class-attribute
instance-attribute
WESTWARD = auto()
Westward wave
EquatorialWave
Bases: Enum
不同类型的赤道波动的枚举类,用于波动类型的标识与选择。 包含全称与缩写两种表示方式。
The enumeration class for different types of equatorial waves, used for wave type identification and selection. It includes both full names and abbreviations.
EASTWARD_INERTIO_GRAVITY_WAVE
class-attribute
instance-attribute
Eastward Inertio-Gravity Wave, n > 0
EASTWARD_MIXED_ROSSBY_GRAVITY_WAVE
class-attribute
instance-attribute
Eastward Mixed Rossby-Gravity Wave, n = 0
EIGW
class-attribute
instance-attribute
Eastward Inertio-Gravity Wave, n > 0
EMRGW
class-attribute
instance-attribute
Eastward Mixed Rossby-Gravity Wave, n = 0
EQUATORIAL_ROSSBY_WAVE
class-attribute
instance-attribute
Equatorial Rossby Wave, n > 0
IGW
class-attribute
instance-attribute
IGW = INERTIO_GRAVITY_WAVE
Inertio-Gravity Wave (both eastward and westward), n > 0
INERTIO_GRAVITY_WAVE
class-attribute
instance-attribute
Inertio-Gravity Wave (both eastward and westward), n > 0
KELVIN_WAVE
class-attribute
instance-attribute
Kelvin Wave
MIXED_ROSSBY_GRAVITY_WAVE
class-attribute
instance-attribute
Mixed Rossby-Gravity Wave (both eastward and westward), n = 0
MRGW
class-attribute
instance-attribute
MRGW = MIXED_ROSSBY_GRAVITY_WAVE
Mixed Rossby-Gravity Wave (both eastward and westward), n = 0
WESTWARD_INERTIO_GRAVITY_WAVE
class-attribute
instance-attribute
Westward Inertio-Gravity Wave, n > 0
WESTWARD_MIXED_ROSSBY_GRAVITY_WAVE
class-attribute
instance-attribute
Westward Mixed Rossby-Gravity Wave, n = 0
WIGW
class-attribute
instance-attribute
Westward Inertio-Gravity Wave, n > 0
WMRGW
class-attribute
instance-attribute
Westward Mixed Rossby-Gravity Wave, n = 0
angular_frequency_dimensionless
angular_frequency_dimensionless(
wave: EquatorialWave,
wavenumber: np.ndarray,
n: int = 1,
keep_direction: bool = True,
) -> np.ndarray
计算无量纲化(Matsuno, 1966)下赤道波动的角频率(ω),可用于绘制频散曲线或计算。 使用现代流行标准,以波数的正负表示波动相速度的方向,角频率 ω >= 0。
Parameters:
-
wave(EquatorialWave) –赤道波动类型
-
wavenumber(np.ndarray) –无量纲经向波数 (k)
-
n(int, default:1) –埃尔米特多项式的阶数 n, 若为 MRG 波或 Kelvin 波,此参数无效,默认为 1。
-
keep_direction(bool, default:True) –是否只保留波动的传播方向的值,未指定方向的波动此参数无效。默认为 True。 例如如果为 True,则对于东传波,传入的负波数对应的频率将被设为 NaN;
Returns:
-
np.ndarray–该波动无量纲下的角频率 ω
angular_frequency
angular_frequency(
wave: EquatorialWave,
wavenumber: Quantity | np.ndarray | float,
n: int = 1,
equivalent_depth: Quantity | float = 25,
g: Quantity = EARTH_GRAVITY,
beta: Quantity = ROSSBY_PARAMETER_ON_EQUATOR,
) -> Quantity
计算有量纲的赤道波动角频率(ω),返回的角频率单位为 rad/day。 使用现代流行标准,以波数的正负表示波动相速度的方向,角频率 ω >= 0。
>>> import numpy as np
>>> import mositen_ew as mew
>>>
>>> # 定义带单位波数
>>> k = np.linspace(-20, 20, 200) * mew.unit('zonal_wavenumber')
>>> omega = mew.angular_frequency(mew.EquatorialWave.KELVIN_WAVE, k)
>>> freq = omega/(2*np.pi) # from rad/day to 1/day
Parameters:
-
wave(EquatorialWave) –赤道波动类型
-
wavenumber(Quantity | np.ndarray | float) –带单位的波数,推荐使用单位 'zonal_wavenumber',如果输入不带单位,则认为是 '1/m'。
-
n(int, default:1) –埃尔米特多项式的阶数 n, 若为 MRG 波或 Kelvin 波,此参数无效,默认为 1。
-
equivalent_depth(Quantity | float, default:25) –等效深度,默认为 25
-
g(Quantity, default:EARTH_GRAVITY) –重力加速度, 默认为地表重力加速度 EARTH_GRAVITY
-
beta(Quantity, default:ROSSBY_PARAMETER_ON_EQUATOR) –赤道上的 β 参数, 默认为 ROSSBY_PARAMETER_ON_EQUATOR
Returns:
-
Quantity–该波动有量纲下的角频率 ω,单位为 rad/day
wave_distribution_dimensionless
wave_distribution_dimensionless(
wave: EquatorialWave,
x: np.ndarray,
y: np.ndarray,
t: float,
wavenumber: np.ndarray | float,
n: int = 1,
) -> tuple[np.ndarray, np.ndarray, np.ndarray]
计算无量纲化下赤道波动的变量场分布,返回 x, y 网格上的 (u, v, φ) 分布。
Parameters:
-
wave(EquatorialWave) –赤道波动类型
-
x(np.ndarray) –无量纲经向坐标
-
y(np.ndarray) –无量纲纬向坐标
-
t(float) –无量纲时间
-
wavenumber(np.ndarray | float) –无量纲经向波数
-
n(int, default:1) –埃尔米特多项式的阶数 n, 若为 MRG 波或 Kelvin 波,此参数无效,默认为 1。
Returns:
-
tuple[np.ndarray, np.ndarray, np.ndarray]–返回扰动场的 (u, v, φ) 分布
wave_distribution
wave_distribution(
wave: EquatorialWave,
x: Quantity | np.ndarray,
y: Quantity | np.ndarray,
t: Quantity | float,
wavenumber: Quantity | float,
n: int = 1,
equivalent_depth: Quantity | float = 25,
g: Quantity = EARTH_GRAVITY,
beta: Quantity = ROSSBY_PARAMETER_ON_EQUATOR,
) -> tuple[Quantity, Quantity, Quantity]
计算有量纲下赤道波动的变量场分布,返回 x, y 网格上的 (u, v, φ) 分布。 x, y 坐标数组,需要都是一维或都是二维数组。
Parameters:
-
wave(EquatorialWave) –赤道波动类型
-
x(Quantity | np.ndarray) –带单位的经向坐标数组,如果输入不带单位,则认为是 'm'。
-
y(Quantity | np.ndarray) –带单位的纬向坐标数组,如果输入不带单位,则认为是 'm'。
-
t(Quantity | float) –带单位的时间,推荐使用单位 's',如果输入不带单位,则认为是 's'。
-
wavenumber(Quantity | float) –带单位的波数,推荐使用单位 'zonal_wavenumber',如果输入不带单位,则认为是 '1/m'。
-
n(int, default:1) –埃尔米特多项式的阶数 n, 若为 MRG 波或 Kelvin 波,此参数无效,默认为 1。
-
equivalent_depth(Quantity | float, default:25) –等效深度,默认为 25,单位为 'm'。
-
g(Quantity, default:EARTH_GRAVITY) –重力加速度, 默认为地表重力加速度 EARTH_GRAVITY
-
beta(Quantity, default:ROSSBY_PARAMETER_ON_EQUATOR) –赤道上的 β 参数, 默认为 ROSSBY_PARAMETER_ON_EQUATOR
Returns:
-
tuple[np.ndarray, np.ndarray, np.ndarray]–返回扰动场的 (u, v, φ) 分布