Skip to content

Instantly share code, notes, and snippets.

@chryss
Created August 17, 2018 16:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chryss/c62c05b8b4ecaf0c44207b6a0f1665ae to your computer and use it in GitHub Desktop.
Save chryss/c62c05b8b4ecaf0c44207b6a0f1665ae to your computer and use it in GitHub Desktop.
Fuego volcano source file
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Create source file for volcanic ash driver in WRF-Chem / Volc 3.9.1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is specifically for the Fuego volcano in Guatemala, which started a major eruption in June 2018."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"----"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Imports go here"
]
},
{
"cell_type": "code",
"execution_count": 200,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import csv\n",
"import datetime as dt\n",
"import numpy as np\n",
"from io import StringIO\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"----"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Basic data goes here"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fuego is a 3763 m tall volcano of the class M3. Therefore, the distribution of initial ash into bins is:"
]
},
{
"cell_type": "code",
"execution_count": 201,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'0.13 0.2 0.275 0.225 0.07 0.04 0.03 0.02 0.01 0.0'"
]
},
"execution_count": 201,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bindist = [0.13, 0.2, 0.275, 0.225, 0.07, 0.04, 0.03, 0.02, 0.01, 0.0]\n",
"bindist_str = \" \".join([str(part) for part in bindist])\n",
"bindist_str"
]
},
{
"cell_type": "code",
"execution_count": 202,
"metadata": {},
"outputs": [],
"source": [
"volcano_vent_height_m = 3763"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The eruption sequence we have established goes like this:"
]
},
{
"cell_type": "code",
"execution_count": 203,
"metadata": {},
"outputs": [],
"source": [
"eruptionsequence_csv = \"\"\"20180603,1200,6000,100\n",
"20180603,1340,9962,155\n",
"20180603,1615,5791,75\n",
"20180603,1730,15240,150\n",
"20180603,2145,5468,30\n",
"20180604,0640,4663,110\n",
"20180604,1325,4572,20\n",
"20180605,2115,4000,180\n",
"20180606,0015,5182,90\n",
"20180608,1000,5791,840\n",
"20180610,0345,5468,180\n",
"20180610,1300,4572,180\n",
"20180611,0445,5791,660\n",
"20180611,1545,4572,180\n",
"20180612,1345,4420,360\n",
"20180612,1945,4572,180\n",
"\"\"\""
]
},
{
"cell_type": "code",
"execution_count": 204,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['20180603', '1200', '6000', '100']\n",
"['20180603', '1340', '9962', '155']\n",
"['20180603', '1615', '5791', '75']\n",
"['20180603', '1730', '15240', '150']\n",
"['20180603', '2145', '5468', '30']\n",
"['20180604', '0640', '4663', '110']\n",
"['20180604', '1325', '4572', '20']\n",
"['20180605', '2115', '4000', '180']\n",
"['20180606', '0015', '5182', '90']\n",
"['20180608', '1000', '5791', '840']\n",
"['20180610', '0345', '5468', '180']\n",
"['20180610', '1300', '4572', '180']\n",
"['20180611', '0445', '5791', '660']\n",
"['20180611', '1545', '4572', '180']\n",
"['20180612', '1345', '4420', '360']\n",
"['20180612', '1945', '4572', '180']\n"
]
}
],
"source": [
"f = StringIO(eruptionsequence_csv)\n",
"reader = csv.reader(f, delimiter=',')\n",
"for row in reader:\n",
" print(row)"
]
},
{
"cell_type": "code",
"execution_count": 205,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ -3263., -2763., -2263., -1763., -1263., -763., -263.,\n",
" 237., 737., 1237., 1737., 2237., 2737., 3237.,\n",
" 3737., 4237., 4737., 5237., 5737., 6237., 6737.,\n",
" 7237., 7737., 8237., 8737., 9237., 9737., 10237.,\n",
" 10737., 11237., 11737., 12237., 12737., 13237., 13737.,\n",
" 14237., 14737., 15237., 15737., 16237., 16737., 17237.,\n",
" 17737., 18237., 18737., 19237.])"
]
},
"execution_count": 205,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"heights_m = np.arange(500., 23500., 500.)\n",
"heights_m - volcano_vent_height_m"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Area of grid cell:"
]
},
{
"cell_type": "code",
"execution_count": 206,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4.444444444444445"
]
},
"execution_count": 206,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dx = 15000\n",
"area = dx * dx\n",
"1e9 / area"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"----"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Functions for processing steps"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1st step: Mastin's formula"
]
},
{
"cell_type": "code",
"execution_count": 207,
"metadata": {},
"outputs": [],
"source": [
"def mass_eruption_rate(h_above_vent, correction=False):\n",
" correctionfac = 1.\n",
" if correction:\n",
" correctionfac = 1e9/area\n",
" return 2600. * (h_above_vent * .0005)**4.1494 * correctionfac\n",
"#emiss_ash_mass = eh * 1.e9 / area <-- I'm not sure what this is doing here"
]
},
{
"cell_type": "code",
"execution_count": 208,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"9.94e+06\n"
]
}
],
"source": [
"print(\"{:.2e}\".format(mass_eruption_rate(14600))) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"2nd step: get lower, middle, and top height as per height array"
]
},
{
"cell_type": "code",
"execution_count": 209,
"metadata": {},
"outputs": [],
"source": [
"def find_nearest_idx(nparray, a0):\n",
" \"Element in nd array `nparray` closest to the scalar value `a0`\"\n",
" idx = np.abs(nparray - a0).argmin()\n",
" return idx"
]
},
{
"cell_type": "code",
"execution_count": 210,
"metadata": {},
"outputs": [],
"source": [
"def getrefheight_idx(heightarray, plumeelevation, volcanoheight):\n",
" plumeheight = plumeelevation - volcanoheight\n",
" transitionheight = 0.73 * plumeheight + volcanoheight\n",
" minheight_idx = find_nearest_idx(heightarray, volcanoheight)\n",
" midheight_idx = find_nearest_idx(heightarray, transitionheight)\n",
" maxheight_idx = find_nearest_idx(heightarray, plumeelevation)\n",
" return minheight_idx, midheight_idx, maxheight_idx"
]
},
{
"cell_type": "code",
"execution_count": 211,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"22"
]
},
"execution_count": 211,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"find_nearest_idx(heights_m, 15240-volcano_vent_height_m)"
]
},
{
"cell_type": "code",
"execution_count": 212,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(7, 23, 29)"
]
},
"execution_count": 212,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"getrefheight_idx(heights_m, 15240, volcano_vent_height_m)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"3rd step: get functions for linear and parabolic ash flux"
]
},
{
"cell_type": "code",
"execution_count": 213,
"metadata": {},
"outputs": [],
"source": [
"def linearashflux(h, hB, hM, m):\n",
" return 2 * m * (h - hB) / (hM - hB)**2"
]
},
{
"cell_type": "code",
"execution_count": 214,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"391.34918700062713"
]
},
"execution_count": 214,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hB = heights_m[7]\n",
"hM = heights_m[23]\n",
"hT = heights_m[29]\n",
"h = heights_m[9] \n",
"m = mass_eruption_rate(14000)\n",
"linearashflux(heights_m[10], hB, hM, m)"
]
},
{
"cell_type": "code",
"execution_count": 215,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"32286307.927551731"
]
},
"execution_count": 215,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sum([linearashflux(heights_m[ii], hB, hM, m) for ii in range(8, 18)]) * 9 * 500"
]
},
{
"cell_type": "code",
"execution_count": 216,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"8348782.656013378"
]
},
"execution_count": 216,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mass_eruption_rate(14000)"
]
},
{
"cell_type": "code",
"execution_count": 217,
"metadata": {},
"outputs": [],
"source": [
"def baseparabola(x, xmax, m):\n",
" return (0.75 * m / xmax) * (1 - x**2 / xmax**2)"
]
},
{
"cell_type": "code",
"execution_count": 218,
"metadata": {},
"outputs": [],
"source": [
"def parabolicashflux(h, hM, hT, m):\n",
" xmax = 0.5 * (hT - hM)\n",
" x = h - hM - xmax\n",
" return baseparabola(x, xmax, m)"
]
},
{
"cell_type": "code",
"execution_count": 219,
"metadata": {},
"outputs": [],
"source": [
"def totalashflux(h, hB, hM, hT, mtot):\n",
" m1 = mtot * 0.25\n",
" m2 = mtot * 0.75\n",
" if h < hB:\n",
" return 0.\n",
" elif h <= hM:\n",
" return linearashflux(h, hB, hM, m1)\n",
" elif h <= hT: \n",
" return parabolicashflux(h, hM, hT, m2)\n",
" else:\n",
" return 0."
]
},
{
"cell_type": "code",
"execution_count": 220,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"32.6124322501\n",
"65.2248645001\n",
"97.8372967502\n",
"130.449729\n",
"163.06216125\n",
"195.6745935\n",
"228.28702575\n",
"260.899458\n",
"293.51189025\n",
"326.124322501\n",
"358.736754751\n",
"391.349187001\n",
"423.961619251\n",
"456.574051501\n",
"489.186483751\n",
"521.798916001\n",
"1739.32972\n",
"2782.927552\n",
"3130.79349601\n",
"2782.927552\n",
"1739.32972\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n",
"0.0\n"
]
}
],
"source": [
"mtot = mass_eruption_rate(14000)\n",
"for ii in range(len(heights_m)):\n",
" print(totalashflux(heights_m[ii], hB, hM, hT, mtot))"
]
},
{
"cell_type": "code",
"execution_count": 221,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x11674beb8>]"
]
},
"execution_count": 221,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(heights_m, [totalashflux(height, 3500, hM, hT, mtot) for height in heights_m])"
]
},
{
"cell_type": "code",
"execution_count": 222,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"8305299.4130133074"
]
},
"execution_count": 222,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sum([totalashflux(heights_m[ii], hB, hM, hT, mtot)*500 for ii in range(len(heights_m)) ])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"4th step: putting it together"
]
},
{
"cell_type": "code",
"execution_count": 223,
"metadata": {},
"outputs": [],
"source": [
"def generateheights(row, printzeros=True):\n",
" datestamp = row[0]\n",
" timestamp = row[1]\n",
" datetimestamp = dt.datetime.strptime(datestamp+timestamp, \"%Y%m%d%H%M\")\n",
" plumeelev = int(row[2])\n",
" plumeheight = plumeelev - volcano_vent_height_m\n",
" \n",
" totalmass = mass_eruption_rate(plumeheight)\n",
" idxB, idxM, idxT = getrefheight_idx(heights_m, plumeelev, volcano_vent_height_m)\n",
" hB = 3500\n",
" hM = heights_m[idxM]\n",
" hT = heights_m[idxT]\n",
" for height in heights_m:\n",
" print(\"{} {} {:7.3f} {:.7E} {}\".format(\n",
" datestamp, timestamp+\"00\", height,\n",
" totalashflux(height, hB, hM, hT, totalmass),\n",
" \"0.0000000\"))\n",
" print()\n",
" if printzeros:\n",
" duration = dt.timedelta(seconds=60 * int(row[3]))\n",
" nextdatetimestamp = datetimestamp + duration\n",
" newdatestamp = nextdatetimestamp.strftime(\"%Y%m%d\")\n",
" newtimestamp = nextdatetimestamp.strftime(\"%H%M%S\")\n",
" for height in heights_m:\n",
" print(\"{} {} {:7.3f} {} {}\".format(\n",
" newdatestamp, newtimestamp, height,\n",
" \"0.0000000\", \"0.0000000\"))\n",
" print()\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 224,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"20180603 120000 500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 1000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 1500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 2000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 2500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 3000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 3500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 4000.000 2.5862085E-01 0.0000000\n",
"20180603 120000 4500.000 5.1724170E-01 0.0000000\n",
"20180603 120000 5000.000 7.7586255E-01 0.0000000\n",
"20180603 120000 5500.000 1.0344834E+00 0.0000000\n",
"20180603 120000 6000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 6500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 7000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 7500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 8000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 8500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 9000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 9500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 10000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 10500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 11000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 11500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 12000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 12500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 13000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 13500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 14000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 14500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 15000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 15500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 16000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 16500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 17000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 17500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 18000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 18500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 19000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 19500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 20000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 20500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 21000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 21500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 22000.000 0.0000000E+00 0.0000000\n",
"20180603 120000 22500.000 0.0000000E+00 0.0000000\n",
"20180603 120000 23000.000 0.0000000E+00 0.0000000\n",
"\n",
"20180603 134000 500.000 0.0000000 0.0000000\n",
"20180603 134000 1000.000 0.0000000 0.0000000\n",
"20180603 134000 1500.000 0.0000000 0.0000000\n",
"20180603 134000 2000.000 0.0000000 0.0000000\n",
"20180603 134000 2500.000 0.0000000 0.0000000\n",
"20180603 134000 3000.000 0.0000000 0.0000000\n",
"20180603 134000 3500.000 0.0000000 0.0000000\n",
"20180603 134000 4000.000 0.0000000 0.0000000\n",
"20180603 134000 4500.000 0.0000000 0.0000000\n",
"20180603 134000 5000.000 0.0000000 0.0000000\n",
"20180603 134000 5500.000 0.0000000 0.0000000\n",
"20180603 134000 6000.000 0.0000000 0.0000000\n",
"20180603 134000 6500.000 0.0000000 0.0000000\n",
"20180603 134000 7000.000 0.0000000 0.0000000\n",
"20180603 134000 7500.000 0.0000000 0.0000000\n",
"20180603 134000 8000.000 0.0000000 0.0000000\n",
"20180603 134000 8500.000 0.0000000 0.0000000\n",
"20180603 134000 9000.000 0.0000000 0.0000000\n",
"20180603 134000 9500.000 0.0000000 0.0000000\n",
"20180603 134000 10000.000 0.0000000 0.0000000\n",
"20180603 134000 10500.000 0.0000000 0.0000000\n",
"20180603 134000 11000.000 0.0000000 0.0000000\n",
"20180603 134000 11500.000 0.0000000 0.0000000\n",
"20180603 134000 12000.000 0.0000000 0.0000000\n",
"20180603 134000 12500.000 0.0000000 0.0000000\n",
"20180603 134000 13000.000 0.0000000 0.0000000\n",
"20180603 134000 13500.000 0.0000000 0.0000000\n",
"20180603 134000 14000.000 0.0000000 0.0000000\n",
"20180603 134000 14500.000 0.0000000 0.0000000\n",
"20180603 134000 15000.000 0.0000000 0.0000000\n",
"20180603 134000 15500.000 0.0000000 0.0000000\n",
"20180603 134000 16000.000 0.0000000 0.0000000\n",
"20180603 134000 16500.000 0.0000000 0.0000000\n",
"20180603 134000 17000.000 0.0000000 0.0000000\n",
"20180603 134000 17500.000 0.0000000 0.0000000\n",
"20180603 134000 18000.000 0.0000000 0.0000000\n",
"20180603 134000 18500.000 0.0000000 0.0000000\n",
"20180603 134000 19000.000 0.0000000 0.0000000\n",
"20180603 134000 19500.000 0.0000000 0.0000000\n",
"20180603 134000 20000.000 0.0000000 0.0000000\n",
"20180603 134000 20500.000 0.0000000 0.0000000\n",
"20180603 134000 21000.000 0.0000000 0.0000000\n",
"20180603 134000 21500.000 0.0000000 0.0000000\n",
"20180603 134000 22000.000 0.0000000 0.0000000\n",
"20180603 134000 22500.000 0.0000000 0.0000000\n",
"20180603 134000 23000.000 0.0000000 0.0000000\n",
"\n"
]
}
],
"source": [
"examplerow = ['20180603', '1200', '6000', '100']\n",
"generateheights(examplerow, printzeros=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Generate output"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"print(bindist_str)\n",
"print(\"YYYYMMDD HHMMSS HGTHGTHGT ASH SO2\")\n",
"f = StringIO(eruptionsequence_csv)\n",
"reader = csv.reader(f, delimiter=',')\n",
"for row in reader:\n",
" generateheights(row, printzeros=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment