波动类型
波动类型枚举
为了区分不同波动类型,本模块提供枚举(Enum)类 EquatorialWave,来表示不同的赤道波动类型。
在计算频散关系和空间分布时,可以通过传入该枚举类的成员来选择波动类型。
EquatorialWave 枚举类由一个更基础的 Flag 枚举类 _BaseEW 的值组合而来。
_BaseEW 包含了以下几种 Flag 的定义:
KELVIN:表示 Kelvin 波IG:表示惯性重力波(Inertia-Gravity Wave)MRG:表示混合罗斯贝-重力波(Mixed Rossby-Gravity Wave)ROSSBY:表示赤道罗斯贝波(Equatorial Rossby Wave)EASTWARD:表示东向传播波动WESTWARD:表示西向传播波动
在 EquatorialWave 中的枚举值由这些 Flags 组成,例如
KELVIN_WAVE = _BaseEW.KELVIN | _BaseEW.EASTWARD
EquatorialWave 枚举类中定义了以下的赤道波动类型及缩写:
KELVIN_WAVE,KW:赤道 Kelvin 波EASTWARD_INERTIA_GRAVITY_WAVE,EIGW:东传惯性重力波WESTWARD_INERTIA_GRAVITY_WAVE,WIGW:西传惯性重力波INERTIA_GRAVITY_WAVE,IGW:惯性重力波(不分传播方向)EQUATOR_ROSSBY_WAVE,ERW:赤道罗斯贝波EASTWARD_MIXED_ROSSBY_GRAVITY_WAVE,EMRGW:东传混合罗斯贝-重力波WESTWARD_MIXED_ROSSBY_GRAVITY_WAVE,WMRGW:西传混合罗斯贝-重力波MIXED_ROSSBY_GRAVITY_WAVE,MRGW:混合罗斯贝-重力波(不分传播方向)
例如,要计算 Kelvin 波的频散关系,可以这样调用:
import numpy as np
import moisten_ew as mew
k = np.linspace(-20, 20, 200) * mew.unit('zonal_wavenumber')
# 使用 EquatorialWave.KELVIN_WAVE
omega = mew.angular_frequency(mew.EquatorialWave.KELVIN_WAVE, k)
# 或使用缩写
omega = mew.angular_frequency(mew.EquatorialWave.KW, k)
滤波区域
在进行 FFT 时空滤波时,因为不同的波动滤波区域形状不同,因此直接预设为类,可直接使用,而不需要使用枚举类来选择波动类型。
例如 moisten_ew.KelvinFilterArea 和 moisten_ew.MRGFilterArea 直接表示 Kelvin 波和 MRG 波的滤波区域类,可见示例 对 MRG 与 Kelvin 波时空滤波