Chris and Rich,
I am out early next week at Rutgers for a meeting related to climate forcing and fisheries. I am wondering if trying to get me up and running doing this is more work than it is worth. So, I am going to roll the dice to see if you guys will run the proof concept data for me. For proof of concept, all I really need is to track a set of particles from a starting grid of the NE Shelf in a climatological/mean surface current field.
Run: can be either forward or backward simulations, assume it would be forward
Start (end) locations: either nes_lon_lat.csv 3132 locations, 0.1 grid or nes_lon_lat 2.csv 837 locations, even 0.2 grid would be acceptable
Surface currents: mean annual surface currents for the NE Shelf, assume FVCOM data would be appropriate, mean of last decade or last two decades would be fine
Time: From what I see in Gnome, I suggest 3, 5, and 7 days, if there is only capacity to do one simulation, 5 days suggested
Deterministic: These simulations do not need to characterize variability, deterministic simulations would be fine
Output: For the simulation, start and end latitudes and longitudes, for simplicity, suggest CSV file format Filename: NES_5day.csv Record: start_lon, start_lat, end_lon, end_lat
Wishful thinking: The above represents either 1 or 3 simulations If easy to automate, instead of mean annual, mean monthly simulations would be wonderful, so 12 or 36 simulations
Best regards, Kevin
import os
from datetime import datetime, timedelta
from gnome import scripting
from gnome import utilities
from gnome.model import Model
from gnome.spill import point_line_release_spill, Spill, SpatialRelease
from gnome.movers import RandomMover
from gnome.environment import GridCurrent
from gnome.movers.py_current_movers import PyCurrentMover
from gnome.outputters import Renderer, NetCDFOutput
csv_file = 'nes_lon_lat.csv'
url = 'http://www.smast.umassd.edu:8080/thredds/dodsC/fvcom/hindcasts/30yr_gom3/mean'
#url = 'http://www.smast.umassd.edu:8080/thredds/dodsC/FVCOM/NECOFS/Forecasts/NECOFS_GOM3_FORECAST.nc'
start_time = datetime(2012, 1, 15, 0, 0)
model_duration_days = 7
time_step_seconds = 3600
model = Model(start_time=start_time,
duration=timedelta(days=model_duration_days),
time_step=time_step_seconds)
from numpy import genfromtxt
lonlat = genfromtxt(csv_file, delimiter=',')
lon = lonlat[:,1]
lat = lonlat[:,2]
locations = list(zip(lon,lat,0.0*lat))
# a Spill is the combination of a Release (where and when and how much is released)
# and *what* released -- defined by an ElementType
# create the release
release = SpatialRelease(release_time = start_time,
start_position = locations
)
# now make a spill out of it
spill = Spill(release=release,
# amount=100.0, # could be volume or mass
# units="kg",
name='Test_spatial_spill')
# and add it to the model
model.spills += spill
# add outputter
netcdf_file = 'output.nc'
model.outputters += NetCDFOutput(netcdf_file, which_data='all')
curr = GridCurrent.from_netCDF(filename=url)
print(curr.variables[0].data)
<type 'netCDF4._netCDF4.Variable'> float32 u(time, siglay, nele) long_name: Eastward Water Velocity units: meters s-1 type: data standard_name: eastward_sea_water_velocity coordinates: time siglay latc lonc mesh: fvcom_mesh location: face unlimited dimensions: current shape = (432, 45, 90415) filling off
mover = PyCurrentMover(current=curr, extrapolate=True)
model.movers += mover
model.movers += RandomMover(diffusion_coef=1000)
model.full_run()
<type 'netCDF4._netCDF4.Dataset'> root group (NETCDF4 data model, file format HDF5): dimensions(sizes): variables(dimensions): groups:
[{'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 0, 0)}, 'step_num': 0, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 1, 0)}, 'step_num': 1, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 2, 0)}, 'step_num': 2, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 3, 0)}, 'step_num': 3, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 4, 0)}, 'step_num': 4, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 5, 0)}, 'step_num': 5, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 6, 0)}, 'step_num': 6, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 7, 0)}, 'step_num': 7, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 8, 0)}, 'step_num': 8, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 9, 0)}, 'step_num': 9, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 10, 0)}, 'step_num': 10, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 11, 0)}, 'step_num': 11, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 12, 0)}, 'step_num': 12, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 13, 0)}, 'step_num': 13, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 14, 0)}, 'step_num': 14, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 15, 0)}, 'step_num': 15, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 16, 0)}, 'step_num': 16, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 17, 0)}, 'step_num': 17, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 18, 0)}, 'step_num': 18, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 19, 0)}, 'step_num': 19, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 20, 0)}, 'step_num': 20, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 21, 0)}, 'step_num': 21, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 22, 0)}, 'step_num': 22, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 15, 23, 0)}, 'step_num': 23, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 0, 0)}, 'step_num': 24, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 1, 0)}, 'step_num': 25, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 2, 0)}, 'step_num': 26, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 3, 0)}, 'step_num': 27, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 4, 0)}, 'step_num': 28, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 5, 0)}, 'step_num': 29, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 6, 0)}, 'step_num': 30, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 7, 0)}, 'step_num': 31, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 8, 0)}, 'step_num': 32, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 9, 0)}, 'step_num': 33, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 10, 0)}, 'step_num': 34, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 11, 0)}, 'step_num': 35, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 12, 0)}, 'step_num': 36, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 13, 0)}, 'step_num': 37, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 14, 0)}, 'step_num': 38, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 15, 0)}, 'step_num': 39, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 16, 0)}, 'step_num': 40, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 17, 0)}, 'step_num': 41, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 18, 0)}, 'step_num': 42, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 19, 0)}, 'step_num': 43, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 20, 0)}, 'step_num': 44, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 21, 0)}, 'step_num': 45, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 22, 0)}, 'step_num': 46, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 16, 23, 0)}, 'step_num': 47, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 0, 0)}, 'step_num': 48, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 1, 0)}, 'step_num': 49, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 2, 0)}, 'step_num': 50, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 3, 0)}, 'step_num': 51, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 4, 0)}, 'step_num': 52, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 5, 0)}, 'step_num': 53, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 6, 0)}, 'step_num': 54, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 7, 0)}, 'step_num': 55, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 8, 0)}, 'step_num': 56, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 9, 0)}, 'step_num': 57, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 10, 0)}, 'step_num': 58, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 11, 0)}, 'step_num': 59, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 12, 0)}, 'step_num': 60, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 13, 0)}, 'step_num': 61, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 14, 0)}, 'step_num': 62, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 15, 0)}, 'step_num': 63, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 16, 0)}, 'step_num': 64, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 17, 0)}, 'step_num': 65, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 18, 0)}, 'step_num': 66, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 19, 0)}, 'step_num': 67, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 20, 0)}, 'step_num': 68, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 21, 0)}, 'step_num': 69, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 22, 0)}, 'step_num': 70, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 17, 23, 0)}, 'step_num': 71, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 0, 0)}, 'step_num': 72, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 1, 0)}, 'step_num': 73, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 2, 0)}, 'step_num': 74, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 3, 0)}, 'step_num': 75, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 4, 0)}, 'step_num': 76, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 5, 0)}, 'step_num': 77, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 6, 0)}, 'step_num': 78, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 7, 0)}, 'step_num': 79, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 8, 0)}, 'step_num': 80, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 9, 0)}, 'step_num': 81, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 10, 0)}, 'step_num': 82, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 11, 0)}, 'step_num': 83, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 12, 0)}, 'step_num': 84, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 13, 0)}, 'step_num': 85, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 14, 0)}, 'step_num': 86, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 15, 0)}, 'step_num': 87, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 16, 0)}, 'step_num': 88, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 17, 0)}, 'step_num': 89, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 18, 0)}, 'step_num': 90, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 19, 0)}, 'step_num': 91, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 20, 0)}, 'step_num': 92, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 21, 0)}, 'step_num': 93, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 22, 0)}, 'step_num': 94, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 18, 23, 0)}, 'step_num': 95, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 0, 0)}, 'step_num': 96, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 1, 0)}, 'step_num': 97, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 2, 0)}, 'step_num': 98, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 3, 0)}, 'step_num': 99, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 4, 0)}, 'step_num': 100, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 5, 0)}, 'step_num': 101, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 6, 0)}, 'step_num': 102, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 7, 0)}, 'step_num': 103, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 8, 0)}, 'step_num': 104, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 9, 0)}, 'step_num': 105, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 10, 0)}, 'step_num': 106, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 11, 0)}, 'step_num': 107, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 12, 0)}, 'step_num': 108, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 13, 0)}, 'step_num': 109, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 14, 0)}, 'step_num': 110, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 15, 0)}, 'step_num': 111, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 16, 0)}, 'step_num': 112, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 17, 0)}, 'step_num': 113, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 18, 0)}, 'step_num': 114, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 19, 0)}, 'step_num': 115, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 20, 0)}, 'step_num': 116, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 21, 0)}, 'step_num': 117, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 22, 0)}, 'step_num': 118, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 19, 23, 0)}, 'step_num': 119, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 0, 0)}, 'step_num': 120, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 1, 0)}, 'step_num': 121, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 2, 0)}, 'step_num': 122, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 3, 0)}, 'step_num': 123, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 4, 0)}, 'step_num': 124, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 5, 0)}, 'step_num': 125, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 6, 0)}, 'step_num': 126, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 7, 0)}, 'step_num': 127, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 8, 0)}, 'step_num': 128, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 9, 0)}, 'step_num': 129, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 10, 0)}, 'step_num': 130, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 11, 0)}, 'step_num': 131, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 12, 0)}, 'step_num': 132, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 13, 0)}, 'step_num': 133, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 14, 0)}, 'step_num': 134, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 15, 0)}, 'step_num': 135, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 16, 0)}, 'step_num': 136, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 17, 0)}, 'step_num': 137, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 18, 0)}, 'step_num': 138, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 19, 0)}, 'step_num': 139, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 20, 0)}, 'step_num': 140, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 21, 0)}, 'step_num': 141, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 22, 0)}, 'step_num': 142, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 20, 23, 0)}, 'step_num': 143, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 0, 0)}, 'step_num': 144, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 1, 0)}, 'step_num': 145, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 2, 0)}, 'step_num': 146, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 3, 0)}, 'step_num': 147, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 4, 0)}, 'step_num': 148, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 5, 0)}, 'step_num': 149, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 6, 0)}, 'step_num': 150, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 7, 0)}, 'step_num': 151, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 8, 0)}, 'step_num': 152, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 9, 0)}, 'step_num': 153, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 10, 0)}, 'step_num': 154, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 11, 0)}, 'step_num': 155, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 12, 0)}, 'step_num': 156, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 13, 0)}, 'step_num': 157, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 14, 0)}, 'step_num': 158, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 15, 0)}, 'step_num': 159, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 16, 0)}, 'step_num': 160, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 17, 0)}, 'step_num': 161, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 18, 0)}, 'step_num': 162, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 19, 0)}, 'step_num': 163, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 20, 0)}, 'step_num': 164, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 21, 0)}, 'step_num': 165, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 22, 0)}, 'step_num': 166, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 21, 23, 0)}, 'step_num': 167, 'valid': True}, {'NetCDFOutput': {'netcdf_filename': ('output.nc', 'output_uncertain.nc'), 'time_stamp': datetime.datetime(2012, 1, 22, 0, 0)}, 'step_num': 168, 'valid': True}]
%matplotlib inline
import matplotlib.pyplot as plt
filename='output.nc'
from post_gnome import nc_particles
r = nc_particles.Reader(filename)
r.variables
[u'next_positions', u'spill_num', u'last_water_positions', u'longitude', u'age', u'depth', u'mass', u'latitude', u'status_codes', u'id']
len(r.times)
169
pos_start = r.get_timestep(1)
pos_stop = r.get_timestep(120)
plt.plot(pos_start['longitude'], pos_start['latitude'], 'o')
plt.plot(pos_stop['longitude'], pos_stop['latitude'], '.')
[<matplotlib.lines.Line2D at 0x7f13923b9190>]
import pandas as pd
df = pd.DataFrame({'start_lon':pos_start['longitude'],
'start_lat':pos_start['latitude'],
'stop_lon':pos_stop['longitude'],
'stop_lat':pos_stop['latitude'] })
df.head()
start_lat | start_lon | stop_lat | stop_lon | |
---|---|---|---|---|
0 | 36.898886 | -75.903836 | 36.739504 | -76.396584 |
1 | 36.998861 | -75.904310 | 36.837380 | -76.392498 |
2 | 37.098681 | -75.904376 | 36.940083 | -76.396374 |
3 | 36.298744 | -75.804124 | 36.135424 | -76.288069 |
4 | 36.398648 | -75.804246 | 36.234169 | -76.287940 |
start_time.strftime('%Y%m%d')
'20120115'
start = start_time.strftime('%Y%m%d')
csv_file='gnome_gom3_{}_{}.csv'.format(start, model_duration_days)
print(csv_file)
gnome_gom3_20120115_7.csv
df.to_csv(csv_file, index=False)