Skip to content

波动类型

波动类型枚举

为了区分不同波动类型,本模块提供枚举(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.KelvinFilterAreamoisten_ew.MRGFilterArea 直接表示 Kelvin 波和 MRG 波的滤波区域类,可见示例 对 MRG 与 Kelvin 波时空滤波