Run Simulation From Script
If the user requires more control over the simulation, he/she can make a custom python script, just like for any other OpenDrift simulation.
Start by importing all required dependencies.
import numpy as np
from opendrift.readers import reader_netCDF_CF_generic
from opendrift.readers import reader_global_landmask
from datetime import datetime, timedelta
from netCDF4 import Dataset
from carbondrift.models.areadecay import carbondrift
Setup readers, configures and initial conditions.
#Import readers
btm = reader_netCDF_CF_generic.Reader("./supplementary_data/etopo2_remaped1deg.nc",
standard_name_mapping={"topo":"depth"})
tmp = reader_netCDF_CF_generic.Reader("./supplementary_data/tmp_luo_remaped1deg.nc")
lm = reader_global_landmask.Reader()
#Increase buffer, since vertical speeds are large!
tmp.verticalbuffer = 100
tmp.always_valid = True
#Define start time
time = datetime(year=1993, month = 1, day = 1)
#Set up configures
config = {'drift:advection_scheme':"runge-kutta",
'general:use_auto_landmask': False, 'seed:ocean_only':False}
#Initial mass and vertical velocity
mass = np.ones(2)
w0 = -0.009259
outfile = "outNetCDFFilePath"
Initialize and configure CarbonDrift object.
o = carbondrift.CarbonDrift(loglevel = 0, initial_velocity = w0,
m0 = mass, decay_type = "linear")
#Deactivate horizontal advection and fragmentation
o.deactivate_horizontal_advection()
o.deactivate_fragmentation()
#Set readers and configures
o.add_reader([btm, tmp, lm])
for key, value in config.items():
o.set_config(key, value)
Seed and run simulation.
o.seed_elements(lon = [146, -45], lat = [58, 30],
time = time, mass = mass, z = -50)
o.run(outfile=outfile, steps = 5, time_step=timedelta(minutes = 30),
time_step_output=timedelta(hours = 2))