import os, sys from datetime import datetime, timedelta #from opendrift.readers import reader_basemap_landmask from opendrift.readers import reader_netCDF_CF_generic #from opendrift.readers import reader_netCDF_EC #from opendrift.readers import reader_era #from opendrift.readers import reader_grib #from opendrift.models.openoil import OpenOil from opendrift.models.openoil import OpenOil o = OpenOil(loglevel=0, weathering_model='noaa') # conda activate opendrift # In[15]: time = datetime(int(os.environ['year']), int(os.environ['month']), int(os.environ['day']), int(os.environ['hour']), 0, 0) # #starttime = datetime(2012, 4, 21, 6, 0, 0) # 4 hours after explosion time2 = [time, time + timedelta(hours=24*4*10-24)] #time2 = [time, time + timedelta(hours=24*365*8-24*14)] #o.fallback_values['y_sea_water_velocity'] = 0 o.set_config('environment:fallback:x_wind', 0) o.set_config('environment:fallback:y_wind', 0) o.set_config('environment:fallback:x_sea_water_velocity', 0) o.set_config('environment:fallback:y_sea_water_velocity', 0) # # In[16]: lat=float(os.environ['lat']); lon=float(os.environ['lon']) if lon > 105.5 and lon < 112 and lat > 17.14 and lat < 21.85: print('start computing width lon/lat: ',lon,lat,time,os.environ['oiltype']) else: print('lon/lat is not real: ',lon,lat,time,os.environ['oiltype']) sys.exit() o.seed_elements(lon, lat, radius=0, z=0, number=100000, time=time2, oiltype=os.environ['oiltype']) #o.seed_elements(lon, lat, radius=0, z=0, number=36500*8, time=time2, oiltype='IFO-180LS 2014') #o.plot() #stop o.set_config('drift:wind_uncertainty', 0.1) o.set_config('drift:current_uncertainty', 0.1) #o.set_config('wave_entrainment:droplet_size_distribution', 'Exponential') o.set_config('wave_entrainment:droplet_size_distribution', 'Li et al. (2017)') o.set_config('processes:evaporation', True) o.set_config('processes:dispersion', False) o.set_config('processes:biodegradation', True) #o.set_config('turbulentmixing:droplet_diameter_min_wavebreaking', 1e-6) #o.add_reader([reader_current,reader_wind, reader_wave]) #o.add_reader([reader_wind,reader_wave,reader_FKEYSUV,reader_FKEYSTS,reader_current,reader_TS,reader_hycomUV,reader_hycomTS]) #o.add_reader([reader_basemap,reader_wind,reader_wave,reader_FKEYSUV,reader_FKEYSTS,reader_current,reader_TS]) o.add_readers_from_list([ 'https://tds.hycom.org/thredds/dodsC/GLBy0.08/expt_93.0/uv3z', 'https://tds.hycom.org/thredds/dodsC/GLBy0.08/expt_93.0/ts3z', #'https://tds.hycom.org/thredds/dodsC/GLBy0.08/latest', 'https://pae-paha.pacioos.hawaii.edu/thredds/dodsC/ncep_global/NCEP_Global_Atmospheric_Model_best.ncd']) o.run(steps=7*24*4, time_step=900, time_step_output=3600, outfile='data/Tonkin_xmas.nc') o.plot_oil_budget(filename='data/Tonkin_xmas.png') o.plot(lscale='h',corners =[105.456,112.066,17.0855,21.9156],bgalpha=1,fast=True,filename='data/CFO_tonkin_trajectory.png') o.animation(corners =[105.456,112.066,17.0855,21.9156],color='mass_oil',bgalpha=1,fast=False,filename='data/CFO_tonkin_animation.mp4')