pymaws

Matsuno Analytical Wave Solution implemented in Python


License
MIT
Install
pip install pymaws==0.1.0

Documentation

pymaws: Matsuno Analytical Wave Solution implemented in Python

A python module for evaluating the initial conditions used in: The Matsuno baroclinic wave test case (under review for GEOSCI. MODEL DEV.).

Installation

pymaws has minimal requirements of:

  • Python 3.4 to 3.7
  • numpy 1.16

The package can be installed using pip:

$ pip install pymaws

Testing

The testing procedure tests all the parts of pymaws and should take anywhere from a few seconds upto 20 seconds due to random elements in the tests. To run the tests, use python3 in the command line:

$ python test_pymaws.py

You should get OK in the last line.

Getting Started

In the python environmnet, start by importing pymaws with the command:

$ from pymaws import *

The main function eval_field was loaded to your environment and a dictionary named Earth that stores the planetary parameters used in this package. (if you want to run eval_field with different parameters , see below)

Example

Let's begin with a regular grid of lat/lon on a 20 second time interval:

$ import numpy as np
$ nlats = 100
$ nlons = 200
$ ntime = 50
$ lats = np.deg2rad(np.linspace(-80, 80, nlats))
$ lons = np.deg2rad(np.linspace(-180, 180, nlons))
$ time = np.linspace(0.0, 20, ntime)

Now, let's evaluate the meridional velocity field of an Eastward propagating Inertia-Gravity (EIG) wave:

$ v = np.zeros((ntime, nlats, nlons))
$ for t in range(ntime):
$     for j in range(nlats):
$         for i in range(nlons):
$             v[t, j, i] = eval_field(lats[j], lons[i], time[t], 
$                                           field='v', wave_type='EIG')

$ v.shape
$ (50, 200, 100)

Note that the default arguments of eval_field are n=1, k=5, amp=1e-5, wave_type='Rossby' and parameters=Earth. This package does not include visualizations of any kind, but you can use matplotlib, e.g.

$ from matplotlib import pyplot as plt
$ plt.contourf(np.rad2deg(lons), np.rad2deg(lats), v[0, :, :])
$ plt.xlim(-36,36)
$ plt.ylim(-30,30)

Meridional velocity at t=0 Meridional velocity at t=0

Caveats

This version of pymaws does not solve Matsuno equations for n, k < 1,

Planetary Parameters:

The default parameters in pymaws are stored in a dictionary named Earth:

$  {'angular_frequency': 7.29212e-05,
      'gravitational_acceleration': 9.80616,
      'mean_radius': 6371220.0,
      'layer_mean_depth': 30.0}

If you want to use different planetary parameters, just copy the dictionary Earth and replace the appropriate values. For example lets change the layer_mean_depth parameter to 10 meters:

$   Earth_1 = Earth.copy()
$   Earth_1['layer_mean_depth'] = 10.0

When you run eval_field, remember to use the argument parameters=Earth_1.

How to cite pymaws

If you use pymaws in your academic work and publish a paper, we kindly ask that you cite pymaws using the following DOI:

License

This project is licensed under the MIT License - see the LICENSE file for details

Authors