Skip to content

Instantly share code, notes, and snippets.

@douglatornell
Created April 29, 2013 04:00
Show Gist options
  • Save douglatornell/5479638 to your computer and use it in GitHub Desktop.
Save douglatornell/5479638 to your computer and use it in GitHub Desktop.
Calculation of Vertical Dynamic Ocean Modes Based on http://woodshole.er.usgs.gov/operations/sea-mat/klinck-html/dynmodes.html by John Klinck, 1999.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "dynmodes"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Calculation of Vertical Dynamic Ocean Modes #\n",
"\n",
"Based on http://woodshole.er.usgs.gov/operations/sea-mat/klinck-html/dynmodes.html\n",
"by John Klinck, 1999."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy as np\n",
"import scipy.linalg\n",
"import matplotlib.pyplot as plt"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 225
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Inputs:\n",
"\n",
"* Nsq = column vector of Brunt-Vaisala buoyancy frequency $[s^{-2}]$\n",
"* depth = column vector of pressure $[decibars]$\n",
"* nmodes = number of vertical modes to calculate \n",
"\n",
"Outputs:\n",
"\n",
"* wmodes = vertical velocity structure\n",
"* pmodes = horizontal velocity structure\n",
"* ce = modal speed $[m / s]$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We're doing a numerical solution of the generalized eigenvalue problem expressed by:\n",
"\n",
"$$\\frac{\\partial^2}{\\partial z^2} w_m + \\alpha^2 N^2 w_m = 0$$\n",
"\n",
"or\n",
"\n",
"$$\\nabla^2 w_m + \\alpha^2 N^2 w_m = 0$$\n",
"\n",
"with $w_m = 0$ at the surface and the bottom.\n",
"\n",
"The first step is to build a matrix that discretizes $\\nabla^2$ over the depth domain,\n",
"and includes the boundary condtions:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def build_delsq_matrix(depth):\n",
" \"\"\"Build the matrix that discretized del-squared over the depth,\n",
" and applies the boundary conditions.\n",
"\n",
" TODO: handle case where surface values are not specified\n",
" \"\"\"\n",
" zed = -depth\n",
" # Depth steps\n",
" nz = zed.size\n",
" dz = zed[:nz - 1] - zed[1:]\n",
" # Depth step midpoints\n",
" z_mid = zed[:nz - 1] - 0.5 * dz[:nz - 1]\n",
" # Depth step midpoint steps\n",
" dz_mid = np.zeros_like(zed)\n",
" dz_mid[1:dz_mid.size - 1] = z_mid[:nz - 2] - z_mid[1:nz - 1]\n",
" dz_mid[0] = dz_mid[1]\n",
" dz_mid[dz_mid.size - 1] = dz_mid[dz_mid.size - 2]\n",
" # del-squared matrix plus boundary conditions\n",
" delsq = np.zeros((nz, nz))\n",
" diag_index = np.arange(1, nz - 1)\n",
" delsq[diag_index, diag_index] = (\n",
" 1 / (dz[:nz - 2] * dz_mid[1:nz - 1]) + 1 / (dz[1:nz - 1] * dz_mid[1:nz - 1]))\n",
" diag_index_p1 = np.arange(2, nz)\n",
" delsq[diag_index, diag_index_p1] = -1 / (dz[:nz - 2] * dz_mid[1:nz - 1])\n",
" diag_index_m1 = np.arange(nz - 2)\n",
" delsq[diag_index, diag_index_m1] = -1 / (dz[1:nz - 1] * dz_mid[1:nz - 1])\n",
" # Boundary conditions\n",
" delsq[0, 0] = delsq[nz - 1, 0] = -1\n",
" return delsq, nz, dz"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 295
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once the eigenvalues and modes have been calculated,\n",
"we need to clean up numerical artifacts:\n",
"\n",
"* exclude complex-valued (non-physical) eigenvalues and their corresponding modes\n",
"* exclude near-zero and negative eigenvalues and their corresponding modes\n",
"\n",
"Finally,\n",
"we sort the eigenvalues and modes by increasing eigenvalue magnitude,\n",
"and we truncate the set to the number of modes that were requested for the calculation."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def clean_up_modes(eigenvalues, wmodes, nmodes):\n",
" \"\"\"Exclude complex-valued and near-zero/negative eigenvalues and their modes.\n",
" Sort the eigenvalues and mode by increasing eigenvalue magnitude,\n",
" and truncate the results to the number of modes that were requested.\n",
" \"\"\"\n",
" # Transpose modes to that they can be handled as an array of vectors\n",
" wmodes = wmodes.transpose()\n",
" # Filter out complex-values and small/negative eigenvalues and corresponding modes\n",
" mask = np.imag(eigenvalues) == 0\n",
" eigenvalues = eigenvalues[mask]\n",
" wmodes = wmodes[mask]\n",
" mask = eigenvalues >= 1e-10\n",
" eigenvalues = eigenvalues[mask]\n",
" wmodes = wmodes[mask]\n",
" # Sort eigenvalues and modes and truncate to number of modes requests\n",
" index = np.argsort(eigenvalues)\n",
" eigenvalues = eigenvalues[index[:nmodes]]\n",
" wmodes = wmodes[index[:nmodes]]\n",
" return eigenvalues, wmodes"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now,\n",
"we put everythng together:\n",
"\n",
"* build the del-squared matrix\n",
"* solve the generalized eigenvalue problem\n",
"* clean up the eigenvalue and vertical mode results\n",
"* calculate the modal speeds\n",
"* calculate the horizontal modes by differention of the vertical modes"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def dynmodes(Nsq, depth, nmodes, rho0=1028):\n",
" \"\"\"Calculate ocean dynamic vertical modes\n",
" taking a column vector of Brunt-Vaisala values (Nsq) at\n",
" different depths (depth) and calculating some number of \n",
" dynamic modes (nmodes).\n",
"\n",
" Based on http://woodshole.er.usgs.gov/operations/sea-mat/klinck-html/dynmodes.html\n",
" by John Klinck, 1999.\n",
" \"\"\"\n",
" # del-squared matrix plus boundary conditions\n",
" delsq, nz, dz = build_delsq_matrix(depth)\n",
" # N-squared diagonal matrix\n",
" Nsq_mat = np.identity(nz) * Nsq\n",
" # Solve generalized eigenvalue problem for eigenvalues and vertical velocity modes\n",
" eigenvalues, wmodes = scipy.linalg.eig(delsq, Nsq_mat)\n",
" eigenvalues, wmodes = clean_up_modes(eigenvalues, wmodes, nmodes)\n",
" # Modal speeds\n",
" ce = np.real(1 / np.sqrt(eigenvalues))\n",
" # Horizontal velocity modes\n",
" pmodes = np.zeros_like(wmodes)\n",
" # 1st derivative of vertical modes\n",
" pr = np.diff(wmodes)* rho0 * (ce ** 2).reshape(-1, 1) / dz\n",
" # Linear interpolation depth grid\n",
" pmodes[:, 1:nz - 1] = (pr[:, 1:nz - 1] + pr[:, :nz - 2]) / 2\n",
" pmodes[:, 0] = pr[:, 0]\n",
" pmodes[:, nz - 1] = pr[:, nz - 2]\n",
" return wmodes, pmodes, ce"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Test Case #1 #\n",
"Unit depth and uniform, unit $N^2$\n",
"\n",
"Analytical solution is:\n",
"$$h = h_o \\sin(\\frac{z}{ce})$$\n",
"where\n",
"$$ce = \\frac{1}{n \\pi}$$"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"depth = np.arange(0, 1.05, 0.05)\n",
"Nsq = np.ones_like(depth)\n",
"wmodes, pmodes, ce = dynmodes(Nsq, depth, 3)\n",
"print ce"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[ 0.31863737 0.15981133 0.10709144]\n"
]
}
],
"prompt_number": 296
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"const = 1 / np.pi\n",
"analytical = np.array((const, const / 2, const / 3))\n",
"print analytical"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[ 0.31830989 0.15915494 0.1061033 ]\n"
]
}
],
"prompt_number": 297
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def plot_wmodes(wmodes, depth):\n",
" fig = plt.figure()\n",
" ax = fig.add_subplot(111)\n",
" for i in xrange(3):\n",
" ax.plot(wmodes[i], -depth, label='mode {}'.format(i))\n",
" ax.set_ylabel('Depth')\n",
" ax.legend()\n",
" \n",
"plot_wmodes(wmodes, depth)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nAAAASUVORK5CYII=\n"
}
],
"prompt_number": 298
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Test Case #2 #\n",
"400 m depth at 10 m intervals\n",
"\n",
"Uniform $N^2 = 1 \\times 10^{-6}$\n",
"\n",
"Analytical solution is:\n",
"$$h = h_o \\sin(\\frac{N_o z}{ce})$$\n",
"where\n",
"$$ce = \\frac{N_o H}{n \\pi}, N_o = 1 \\times 10^{-3}, H = 400$$"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"depth = np.linspace(0, 400., 41)\n",
"Nsq = np.ones_like(depth) * 1e-6\n",
"wmodes, pmodes, ce = dynmodes(Nsq, depth, 3)\n",
"print ce"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[ 0.12735669 0.06372747 0.04253965]\n"
]
}
],
"prompt_number": 277
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"const = 1e-3 * 400 / np.pi\n",
"analytical = np.array((const, const / 2, const / 3))\n",
"print analytical"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[ 0.12732395 0.06366198 0.04244132]\n"
]
}
],
"prompt_number": 278
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plot_wmodes(wmodes, depth)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 279
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment