<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" xml:lang="en" dtd-version="3.0"><?xmltex \makeatother\@nolinetrue\makeatletter?><?xmltex \hack{\allowdisplaybreaks}?>
  <front>
    <journal-meta><journal-id journal-id-type="publisher">GMD</journal-id><journal-title-group>
    <journal-title>Geoscientific Model Development</journal-title>
    <abbrev-journal-title abbrev-type="publisher">GMD</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Geosci. Model Dev.</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">1991-9603</issn><publisher>
    <publisher-name>Copernicus Publications</publisher-name>
    <publisher-loc>Göttingen, Germany</publisher-loc>
  </publisher></journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.5194/gmd-11-1405-2018</article-id><title-group><article-title>OpenDrift v1.0: a generic framework for trajectory modelling</article-title><alt-title>OpenDrift v1.0: a generic framework for trajectory modelling</alt-title>
      </title-group><?xmltex \runningtitle{OpenDrift v1.0: a generic framework for trajectory modelling}?><?xmltex \runningauthor{K.-F.~Dagestad et al.}?>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>Dagestad</surname><given-names>Knut-Frode</given-names></name>
          <email>knutfd@met.no</email>
        <ext-link>https://orcid.org/0000-0002-0412-7485</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Röhrs</surname><given-names>Johannes</given-names></name>
          
        <ext-link>https://orcid.org/0000-0001-8402-2925</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1 aff3">
          <name><surname>Breivik</surname><given-names>Øyvind</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Ådlandsvik</surname><given-names>Bjørn</given-names></name>
          
        </contrib>
        <aff id="aff1"><label>1</label><institution>Norwegian Meteorological Institute, Bergen, Norway</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>Institute of Marine Research, Bergen, Norway</institution>
        </aff>
        <aff id="aff3"><label>3</label><institution>Geophysical Institute, University of Bergen, Bergen, Norway</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Knut-Frode Dagestad (knutfd@met.no)</corresp></author-notes><pub-date><day>13</day><month>April</month><year>2018</year></pub-date>
      
      <volume>11</volume>
      <issue>4</issue>
      <fpage>1405</fpage><lpage>1420</lpage>
      <history>
        <date date-type="received"><day>20</day><month>August</month><year>2017</year></date>
           <date date-type="rev-request"><day>30</day><month>August</month><year>2017</year></date>
           <date date-type="rev-recd"><day>6</day><month>February</month><year>2018</year></date>
           <date date-type="accepted"><day>19</day><month>February</month><year>2018</year></date>
      </history>
      <permissions>
        
        
      <license license-type="open-access"><license-p>This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this licence, visit <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link></license-p></license></permissions><self-uri xlink:href="https://gmd.copernicus.org/articles/11/1405/2018/gmd-11-1405-2018.html">This article is available from https://gmd.copernicus.org/articles/11/1405/2018/gmd-11-1405-2018.html</self-uri><self-uri xlink:href="https://gmd.copernicus.org/articles/11/1405/2018/gmd-11-1405-2018.pdf">The full text article is available as a PDF file from https://gmd.copernicus.org/articles/11/1405/2018/gmd-11-1405-2018.pdf</self-uri>
      <abstract>
    <p id="d1e122">OpenDrift is an open-source Python-based framework for Lagrangian particle
modelling under development at the Norwegian Meteorological Institute with
contributions from the wider scientific community. The framework is highly
generic and modular, and is designed to be used for any type of drift
calculations in the ocean or atmosphere. A specific module within the
OpenDrift framework corresponds to a Lagrangian particle model in the
traditional sense. A number of modules have already been developed, including
an oil drift module, a stochastic search-and-rescue module, a pelagic egg
module, and a basic module for atmospheric drift. The framework allows for
the ingestion of an unspecified number of forcing fields (scalar and
vectorial) from various sources, including Eulerian ocean, atmosphere and
wave models, but also measurements or a priori values for the same variables.
A basic backtracking mechanism is inherent, using sign reversal of the total
displacement vector and negative time stepping. OpenDrift is fast and simple
to set up and use on Linux, Mac and Windows environments, and can be used
with minimal or no Python experience. It is designed for flexibility, and
researchers may easily adapt or write modules for their specific purpose.
OpenDrift is also designed for performance, and simulations with millions of
particles may be performed on a laptop. Further, OpenDrift is designed for
robustness and is in daily operational use for emergency preparedness
modelling (oil drift, search and rescue, and drifting ships) at the Norwegian
Meteorological Institute.</p>
  </abstract>
    </article-meta>
  </front>
<body>
      

      <?xmltex \hack{\newpage}?>
<sec id="Ch1.S1" sec-type="intro">
  <title>Introduction</title>
      <p id="d1e134">Lagrangian trajectory models are used to predict the pathways
and transformations of various types of objects and substances drifting in
the ocean or in the atmosphere. There are many practical and academic
applications, including prediction of
<list list-type="bullet"><list-item>
      <p id="d1e139">oil drift and weathering to aid mitigation and cleanup operations
<xref ref-type="bibr" rid="bib1.bibx22" id="paren.1"/>;</p></list-item><list-item>
      <p id="d1e146">drifting objects for search and rescue (<xref ref-type="bibr" rid="bib1.bibx6 bib1.bibx7 bib1.bibx10" id="altparen.2"/>);</p></list-item><list-item>
      <p id="d1e153">ichthyoplankton transport (fish eggs and larvae) for stock assessments
<xref ref-type="bibr" rid="bib1.bibx33" id="paren.3"/>; and</p></list-item><list-item>
      <p id="d1e160">microplastics suspended in the ocean
(<xref ref-type="bibr" rid="bib1.bibx47 bib1.bibx48" id="altparen.4"/>).</p></list-item></list></p>
      <p id="d1e166">Table <xref ref-type="table" rid="Ch1.T1"/> lists some commonly used trajectory models
and their applications. Additionally, many individual researchers or research
groups have been developing trajectory model codes for in-house use, without
publishing (or naming) a software code.</p>
      <p id="d1e171">Lagrangian tools fall in two broad categories: either the trajectories are
computed along with the velocity fields as part of the ocean or atmospheric
circulation model, e.g. so-called floats in the regional ocean modelling
system (ROMS) <xref ref-type="bibr" rid="bib1.bibx37" id="paren.5"/>. This is known as “online” trajectory
computations and has the advantage that no separate model is needed.
Alternatively, the trajectories can be computed “offline” after completion
of the Eulerian model simulation(s). This is the approach taken for OpenDrift
and is also necessary for a generic framework as the trajectories<?pagebreak page1406?> depend in
many cases on forcing from a range of fields stemming from more than just one
Eulerian model. This is, e.g. the case for oil drift and search-and-rescue
models, which both require wind as well as currents (and wave forcing in the
case of oil drift) to properly account for the advection and transformation
of the particles. For such emergency preparedness purposes, offline models
are the only option fast enough to meet the requirements of operational
agencies. Other advantages of offline models are that modifications
(sensitivity tests) of the drift algorithms may be tested quickly without
needing to rerun the full Eulerian model, and also that simulations backwards
in time may be performed.</p>
      <p id="d1e177">Existing trajectory models are in most cases tied to a specific application,
and may not be applied to other drift applications without compromising
quality or flexibility. In many cases, trajectory models are also tied to a
specific Eulerian model, or even a particular institutional ocean model
setup, limiting usability for other institutes or researchers. Often, it is
also required that Eulerian forcing data must be in a specific file format.
This raises the time and effort needed to set up a trajectory model. Further,
in an operational setup, the need to convert large files to another format
increases both the complexity and computational costs of the processing
chain, compromising robustness.</p>
      <p id="d1e181">The OpenDrift framework has been designed to perform all tasks which are
common to trajectory models, whether oceanic or atmospheric. In short, the
main task is to obtain forcing data from various sources and to use this
information to move (propagate) the elements in space, while potentially
transforming other element properties, such as evaporation of oil, or growth
of larvae. In addition, common functionality includes mechanisms for
configuration of simulations, seeding of elements, exporting output to file,
and tools to visualise and analyse the output. Additionally, several design
requirements have been imposed on the development of OpenDrift: (1) platform
independence and ease of installation and use; (2) simple and rapid
implementation of any purpose-specific processes, yet flexibility to support
unforeseen needs; (3) forcing data from any type of source supported,
including Eulerian ocean, atmosphere or wave models (typically
NetCDF or GRIB files), in situ measurements, vector data sets (e.g. GSHHS
coastlines) or analytical fields for conceptual studies; (4) the ability run
fast, even with a large number of elements; (5) simulations forward and
backward in time; (6) robustness for operational use.</p>
      <p id="d1e184">In Sect. 2, we describe the overall design of the code and the general
workflow of performing a simulation. In Sect. 3, we give examples of three
specific modules which are included in the OpenDrift repository: search and
rescue, oil drift and atmospheric transport. The test suite and example
scripts are described in Sect. 4, and graphical user interfaces (web and
desktop) are described in Sect. 5. Section 6 provides discussion and
conclusions.</p>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T1" specific-use="star"><caption><p id="d1e190">Some existing trajectory models for various oceanic and atmospheric
applications.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">

         <oasis:entry colname="col1">Name</oasis:entry>

         <oasis:entry colname="col2">Reference/URL</oasis:entry>

         <oasis:entry colname="col3">Main application</oasis:entry>

       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>

         <oasis:entry colname="col1">Ariane</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx5" id="text.6"/>
                </oasis:entry>

         <oasis:entry colname="col3">Oceanography</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">BSHDmod</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx19" id="text.7"/>
                </oasis:entry>

         <oasis:entry colname="col3">Oil</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">Connectivity Modeling System</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx32" id="text.8"/>
                </oasis:entry>

         <oasis:entry colname="col3">Ocean, generic</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">CIS iceberg model</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx25" id="text.9"/>
                </oasis:entry>

         <oasis:entry colname="col3">Icebergs</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">CLaMS</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx31" id="text.10"/>
                </oasis:entry>

         <oasis:entry colname="col3">Atmospheric chemistry</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">EMEP</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx38" id="text.11"/>
                </oasis:entry>

         <oasis:entry colname="col3">Air pollution</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">FLEXPART, FLEXSTRA</oasis:entry>

         <oasis:entry colname="col2"><uri>www.flexpart.eu</uri>,</oasis:entry>

         <oasis:entry colname="col3">Nuclear, air pollution</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1"/>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx42" id="text.12"/>
                </oasis:entry>

         <oasis:entry colname="col3"/>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">HYSPLIT</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx41" id="text.13"/>
                </oasis:entry>

         <oasis:entry colname="col3">Atmospheric transport</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">Ladim</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx1" id="text.14"/>
                </oasis:entry>

         <oasis:entry colname="col3">Plankton transport</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">LAGRANTO</oasis:entry>

         <oasis:entry colname="col2"><xref ref-type="bibr" rid="bib1.bibx50" id="text.15"/>,</oasis:entry>

         <oasis:entry colname="col3">Meteorology</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1"/>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx40" id="text.16"/>
                </oasis:entry>

         <oasis:entry colname="col3"/>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">LAGRANTO.ocean</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx34" id="text.17"/>
                </oasis:entry>

         <oasis:entry colname="col3">Water mass properties</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">Leeway</oasis:entry>

         <oasis:entry colname="col2"><xref ref-type="bibr" rid="bib1.bibx6" id="text.18"/>,</oasis:entry>

         <oasis:entry colname="col3">Search and rescue</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1"/>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx2" id="text.19"/>
                </oasis:entry>

         <oasis:entry colname="col3"/>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">LTRANS</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx35" id="text.20"/>
                </oasis:entry>

         <oasis:entry colname="col3">Plankton (including larvae)</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">MEDSLIK, MEDSLIK-II</oasis:entry>

         <oasis:entry colname="col2"><xref ref-type="bibr" rid="bib1.bibx17" id="text.21"/>,</oasis:entry>

         <oasis:entry colname="col3">Oil</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1"/>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx27" id="text.22"/>
                </oasis:entry>

         <oasis:entry colname="col3"/>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">MIKE</oasis:entry>

         <oasis:entry colname="col2"><uri>www.mikepoweredbydhi.com</uri></oasis:entry>

         <oasis:entry colname="col3">Ocean, generic</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">MOHID</oasis:entry>

         <oasis:entry colname="col2"><uri>www.mohid.com</uri></oasis:entry>

         <oasis:entry colname="col3">Oil, sediments, water quality</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">MOTHY</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx15" id="text.23"/>
                </oasis:entry>

         <oasis:entry colname="col3">Oil, drifting objects</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">OD3D</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx52" id="text.24"/>
                </oasis:entry>

         <oasis:entry colname="col3">Oil</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">OILMAP, SIMAP, CHEMMAP,</oasis:entry>

         <oasis:entry colname="col2" morerows="1"><uri>www.asascience.com</uri></oasis:entry>

         <oasis:entry colname="col3">Oil, sediments, chemical, search</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">MUDMAP, SARMAP</oasis:entry>

         <oasis:entry colname="col3">and rescue</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">OILTOX</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx13" id="text.25"/>
                </oasis:entry>

         <oasis:entry colname="col3">Oil</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">OILTRANS</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx4" id="text.26"/>
                </oasis:entry>

         <oasis:entry colname="col3">Oil</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">OSCAR</oasis:entry>

         <oasis:entry colname="col2"><uri>www.sintef.no/en/software/oscar</uri></oasis:entry>

         <oasis:entry colname="col3">Oil</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">OSERIT</oasis:entry>

         <oasis:entry colname="col2"><uri>oserit.mumm.ac.be</uri></oasis:entry>

         <oasis:entry colname="col3">Oil, chemicals</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">PARCELS</oasis:entry>

         <oasis:entry colname="col2"><uri>https://github.com/OceanPARCELS/parcels</uri></oasis:entry>

         <oasis:entry colname="col3">Ocean, generic</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">POSEIDON-OSM</oasis:entry>

         <oasis:entry colname="col2"><uri>osm.hcmr.gr</uri></oasis:entry>

         <oasis:entry colname="col3">Oil</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">PyGNOME/GNOME</oasis:entry>

         <oasis:entry colname="col2"><uri>gnome.orr.noaa.gov</uri></oasis:entry>

         <oasis:entry colname="col3">Oil, generic</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">SeaTrackWeb, PADM</oasis:entry>

         <oasis:entry colname="col2"><uri>stw.smhi.se</uri></oasis:entry>

         <oasis:entry colname="col3">Oil, chemicals</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">SNAP</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx3" id="text.27"/>
                </oasis:entry>

         <oasis:entry colname="col3">Atmospheric nuclear transport</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">STILT</oasis:entry>

         <oasis:entry colname="col2"><uri>www.stilt-model.org</uri></oasis:entry>

         <oasis:entry colname="col3">Atmospheric trace gases</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">THREETOX</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx30" id="text.28"/>
                </oasis:entry>

         <oasis:entry colname="col3">Nuclear ocean transport</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">TRACMASS</oasis:entry>

         <oasis:entry colname="col2">
                  <xref ref-type="bibr" rid="bib1.bibx20" id="text.29"/>
                </oasis:entry>

         <oasis:entry colname="col3">Ocean and atmosphere, generic</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">VOS</oasis:entry>

         <oasis:entry colname="col2"><uri>en.ferhri.org</uri></oasis:entry>

         <oasis:entry colname="col3">Oil</oasis:entry>

       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

</sec>
<sec id="Ch1.S2">
  <title>Software design</title>
      <p id="d1e749">To meet the requirements listed above, a simple and flexible object-oriented
data model has been designed, based on two main classes. One class
(“Reader”) is dedicated to obtaining forcing data from external sources, as
described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>. A generic class for a trajectory model
instance (“BaseModel”) is described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS2"/>. This class
contains functionality which is common to all drift models, whereas advection
(propagation) and transformation of elements is left for purpose-specific
subclasses.</p>
<sec id="Ch1.S2.SS1">
  <title>Reader class</title>
      <?pagebreak page1407?><p id="d1e761">The class Reader obtains forcing data (e.g. wind, waves and currents) from
any possible source and provides this to any OpenDrift model through a common
interface. To avoid duplication of code, a parent class “BaseReader”
contains functionality which is common to all Readers, whereas specific
subclasses take care of only the tasks which are specific to a particular
source of data, e.g. how to decode and interpret a particular file format.
Two methods must be implemented by any Reader subclass: (1) a constructor
method which initialises a Reader object and (2) a method to retrieve data
for given variables, position and time. The constructor (__init__
in Python) can take any arguments as implemented by the specific Reader
class, but it is typical to provide a filename or URL from which data shall
be obtained by this Reader. The following Python commands initialise a Reader
of type NetCDF_CF_generic to obtain data from a file
“ocean_model_output.nc”.
<?xmltex \hack{\bgroup\small}?>
<preformat><![CDATA[>>> from opendrift.readers import reader_
    netCDF_CF_generic
>>> r = reader_netCDF_CF_generic.Reader(
    "ocean_model_output.nc")]]></preformat> <?xmltex \hack{\egroup}?><?xmltex \hack{\noindent}?>The initialisation typically includes opening and reading metadata from a
given file or URL to check which variables are available, and the coverage in
time and space. The actual reading of the data is, however, not performed
yet, but is delayed until it is known exactly which subset in space and time
is actually needed (“lazy reading”). The contents can be inspected by
printing the object:
<?xmltex \hack{\bgroup\footnotesize}?>
<preformat><![CDATA[>>> print r
Projection:
  +proj=stere +lat_0=90 +lon_0=70 +lat_ts=60
  +units=m  +a=6.371e+06 +e=0 +no_defs
Coverage: [m]
  xmin: -2952800.000000
  xmax: -2712800.000000
  step: 800   numx: 301
  ymin: -1384000.000000
  ymax: -1224000.000000
  step: 800   numy: 201
  Corners (lon, lat):
    (  2.52,  59.90)  (  4.28,  61.89)
    (  5.11,  59.32)  (  7.03,  61.26)
Vertical levels [m]:
  [0.]
Available time range:
  start: 2015-11-16 00:00:00
  end: 2015-11-18 18:00:00
  step: 1:00:00
    67 times (0 missing)
Variables:
  x_sea_water_velocity
  y_sea_water_velocity]]></preformat>
<?xmltex \hack{\egroup}?><?xmltex \hack{\noindent}?>The above example shows that the created Reader object can provide ocean
surface current on a grid with 800 m pixel size in polar stereographic
coordinates, at hourly time resolution.</p>
      <p id="d1e780">To allow for generic coupling of any OpenDrift model with any Reader, a
naming convention for variables is necessary. By convention, the commonly
used Climate and Forecast (CF) naming convention (<monospace>cfconventions.org</monospace>) should be used
whenever possible. Thus, if the data source is not already following this
convention (e.g. a GRIB file), the Reader should map the variable names to
corresponding CF <italic>standard_name</italic>.</p>
      <p id="d1e789">The given Reader class must also have implemented a specific instance of the
method <italic>get_variables</italic> which is called to return data:
<?xmltex \hack{\bgroup\small}?>
<preformat><![CDATA[>>> data = r.get_variables(["x_wind",
           "y_wind"], x, y, z, time)]]></preformat>
<?xmltex \hack{\egroup}?><?xmltex \hack{\noindent}?>The horizontal coordinates (<monospace>x,y</monospace>) correspond to the native projection
of the Reader, which is polar stereographic in the given example. The task of
transforming from one coordinate system to another (including the rotation of
vectors) is performed<?pagebreak page1408?> by common methods from the parent class, based on the
widely used PROJ.4 library (<monospace>proj4.org</monospace>), through its Python interface
pyproj. This allows OpenDrift to combine input data from any coordinate
systems, whilst keeping the implementation of new Reader classes as
minimalistic and clean as possible. Further, this centralisation of code also
facilitates optimisation for both performance and robustness. The vertical
coordinate (<monospace>z</monospace>) is by convention always in metres, zero at the
air/water surface and positive upwards. Thus, Readers providing data from
sources with other vertical coordinate systems (e.g. topography following
coordinates or pressure/density levels) must take care of transforming this
to metres before data are returned. This is, e.g. done by an existing Reader
supporting native output from the ROMS ocean model. The variable
<italic>time</italic> is consistently handled as Python <italic>datetime</italic> objects
within OpenDrift, with any time intervals as <italic>timedelta</italic> objects.
Readers also share some common convenience methods, such as plotting of
geographical coverage.</p>
      <p id="d1e822">Readers are, however, normally not called directly by the user or from
specific OpenDrift instances (models) but rather implicitly from the parent
BaseModel class (see Sect. <xref ref-type="sec" rid="Ch1.S2.SS2"/>). An internal caching mechanism is
implemented to minimise the amount of data to be read, which is key to
improving performance. Input data from numerical models are normally provided
on a 3-D spatial grid <inline-formula><mml:math id="M1" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> at discrete time steps, which are often
larger than the time steps used internally by OpenDrift models. When data are
requested for a given set of element positions at a given time, OpenDrift
requests from the Readers' 3-D blocks of data from the time before and after
the given time. These 3-D blocks encompass the elements tightly, except for a
buffer on each side which is large enough so that elements will stay within
the coverage during the time step of the Reader. After 3-D blocks of data are
provided by the Reader, interpolators are generated and then reused to
interpolate the same data blocks onto the element positions successively at
each internal calculation time step, until the calculation time step reaches
the latter Reader (model) time step. At this point, a 3-D block for the
subsequent model time step is requested, and a new interpolator is generated.
Due to this very economical access of remote data, simulations with OpenDrift
are almost as fast when obtaining data from remote Thredds servers, as when
reading the same data from a local file. The interpolator mechanism is also
modularised by a dedicated class in OpenDrift, allowing independent
development and optimisation. The default interpolation algorithm uses
bilinear interpolation (<italic>scipy.ndimage.map_coordinates</italic>) and may
also extrapolate data towards land, to avoid particles stranding in a “no
data” gap between ocean pixels from an ocean model and land points as
determined from an independent land mask.</p>
      <p id="d1e851">Functionality exists also for reading and interpolating data from ensemble
models. For example, when obtaining wind from a NetCDF model file containing 10
ensemble members, particles number 1, 11, <inline-formula><mml:math id="M2" display="inline"><mml:mrow><mml:mn mathvariant="normal">21</mml:mn><mml:mi mathvariant="normal">…</mml:mi></mml:mrow></mml:math></inline-formula> will use wind from
member 1 of the atmospheric ensemble, and particles number 2, 12,
<inline-formula><mml:math id="M3" display="inline"><mml:mrow><mml:mn mathvariant="normal">22</mml:mn><mml:mi mathvariant="normal">…</mml:mi></mml:mrow></mml:math></inline-formula> will use wind from member 2 of the atmospheric ensemble and so
on. This allows for a more realistic spread/diffusion of particles than when
using no or constant diffusivity. This functionality is particularly useful
for ocean model output, which is inherently uncertain on short timescales,
due to limited availability of observations for assimilation.</p>
      <p id="d1e874">Whereas obtaining forcing data from 3-D Eulerian models is the most common in
practice, Readers may obtain data from any other possible source. One example
is to read a time series from an American Standard Code for Information Interchange (ASCII) file of observations, e.g. from a buoy
or a weather station. Another example is to calculate forcing data according
to some analytical function. One such example is included in the code
repository, providing ocean current vectors according to a “perfect circular
eddy” with centre coordinates as given to its constructor. Such analytical
forcing data fields are useful for, e.g. testing the accuracy of forward
propagation schemes, as discussed below.</p>
      <p id="d1e877">OpenDrift also contains some internal convenience methods to calculate
geophysical variables from others. For example, if a drift module requires wave
height or Stokes drift, this may be parameterised internally based on the wind
velocity if no Readers providing wave parameters are available.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F1" specific-use="star"><caption><p id="d1e882">Flowchart of an OpenDrift simulation.</p></caption>
          <?xmltex \igopts{width=341.433071pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/11/1405/2018/gmd-11-1405-2018-f01.png"/>

        </fig>

</sec>
<sec id="Ch1.S2.SS2">
  <title>BaseModel class</title>
      <p id="d1e897">Functionality which is common to any trajectory model is described in a main
class, named BaseModel. This functionality includes the following:
<list list-type="order"><list-item>
      <p id="d1e902">A mechanism for configuration of a trajectory model, or a specific simulation is needed.
This may include adjusting the resolution of a coastline or some
model-specific parameters concerning the movement of the elements. The
configuration mechanism of OpenDrift is based upon the ConfigObj package
(<uri>https://pypi.python.org/pypi/configobj</uri>).</p></list-item><list-item>
      <p id="d1e909">A generic method to seed elements for a simulation is required. See Sect. <xref ref-type="sec" rid="Ch1.S2.SS3.SSS3"/>
for details.</p></list-item><list-item>
      <p id="d1e915">Managing and referencing a set of Readers (Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>), which are
called as needed to obtain forcing data during a simulation, are also necessary. See
Sect. <xref ref-type="sec" rid="Ch1.S2.SS3.SSS2"/> for details.</p></list-item><list-item>
      <p id="d1e923">It is required to keep track of the positions and properties of all elements during a simulation
and remove elements scheduled for deactivation. This is stored in 2-D
arrays with two dimensions, time and particle ID. Thus, the trajectory
(propagation with time) of a single element or the simulation state (all
element positions and properties at a given time) is easily and quickly
obtained as vertical or horizontal slices of the array. The history of data
may also be written to file, as described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3.SSS6"/>.</p></list-item><list-item>
      <?pagebreak page1409?><p id="d1e929">Finally, the BaseModel class contains the main loop for time stepping,
performing necessary tasks for a simulation in the correct order, as described
in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3.SSS5"/>.</p></list-item></list></p>
      <p id="d1e934">The only part missing is a description of how the elements (e.g. objects or
substance) shall be propagated and potentially transformed along their
trajectories under the influence of environmental forcing data. Such
application-specific description is left to subclasses, yielding trajectory
model instances as exemplified in Sect. <xref ref-type="sec" rid="Ch1.S3"/>. These
subclasses thus inherit and may reuse any functionality from the BaseModel.
The subclasses may also add further functionality as needed, or overload and
modify existing functionality. Thus, all necessary core functionality is
available by convenience but may be modified for flexibility. In precise
terminology, OpenDrift is a framework within which specific trajectory models
may be implemented by class inheritance (subclassing). An instance (object)
of such a subclass represents a specific trajectory simulation.</p>
</sec>
<sec id="Ch1.S2.SS3">
  <title>Performing a simulation</title>
      <p id="d1e945">In this section, we describe and explain the general workflow of a simulation
with an OpenDrift model, as illustrated in the flowchart in
Fig. <xref ref-type="fig" rid="Ch1.F1"/>.</p>
<sec id="Ch1.S2.SS3.SSS1">
  <title>Initialisation</title>
      <?pagebreak page1410?><p id="d1e955">The first step is to import a specific OpenDrift model (subclass of
BaseModel) and to initialise an instance. The following Python statements
import and initialise an instance of the Leeway search-and-rescue model
(Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>).
<preformat><![CDATA[>>> from opendrift.models.leeway import
    Leeway
>>> l = Leeway()]]></preformat></p>
</sec>
<sec id="Ch1.S2.SS3.SSS2">
  <title>Adding Readers</title>
      <p id="d1e968">If a given model requires, e.g. ocean current and atmospheric wind as
environmental forcing, we need to create and add Reader instances which can
provide these variables. Say that we have a Thredds server which can provide
ocean currents and a local GRIB file which contains atmospheric winds; we
can create and add these Readers to the simulation instance as follows:
<?xmltex \hack{\bgroup\small}?>
<preformat><![CDATA[>>> from opendrift.readers import reader_
    netCDF_CF_generic
>>> from opendrift.readers import reader_
    grib
>>> reader_current =
    reader_netCDF_CF_generic.Reader(
    'http://thredds.example.com/current.nc')
>>> reader_wind = reader_grib.Reader
    ('winds.grib')
>>> l.add_readers([reader_current,
    reader_wind])]]></preformat>
<?xmltex \hack{\egroup}?><?xmltex \hack{\noindent}?>For NetCDF files, it is also possible to create a single Reader object which
merges together many files by using wildcards (<inline-formula><mml:math id="M4" display="inline"><mml:msup><mml:mi/><mml:mo>∗</mml:mo></mml:msup></mml:math></inline-formula> or ?) in the
filename. This functionality is based on the NetCDF MFDataset class.</p>
      <p id="d1e988">It is also possible to perform a simulation even with no Readers added for
one or more of the required variables. In this case, constant values may be
provided; otherwise, reasonable default values will be used, defaulting to
zero values for winds, waves and currents. For example, in the case of having a 5-day
wind forecast, but only a 3-day current forecast, it is still possible to run
a 5-day trajectory forecast, where the current will be zero for the last 2 days.</p>
      <p id="d1e991">A key feature of OpenDrift, for both convenience and robustness, is the
possibility to provide a priority list of Readers for a given set of
variables. As an example, it is possible to specify that a high-resolution
ocean model shall be used whenever particles are within coverage in space and
time, and reverting to using another model with larger coverage in space and
time whenever particles are outside the time or spatial domain of the
high-resolution model. As an important feature for operational setups, the backup
Readers will also be used if the first-choice model (file or URL) should not
be available, or if there should be any other problems, e.g. corrupt
values or files.</p>
</sec>
<sec id="Ch1.S2.SS3.SSS3">
  <title>Seeding of elements</title>
      <p id="d1e1000">The seeding methods of OpenDrift are very flexible. The simplest case is to
seed (initialise) an element at a given position and time:
<?xmltex \hack{\bgroup\small}?>
<preformat><![CDATA[>>> l.seed_elements(lon=4.0, lat=60.0,
    time=datetime(2017, 6, 25, 12))]]></preformat>
<?xmltex \hack{\egroup}?><?xmltex \hack{\noindent}?>Also the number of elements and an uncertainty radius may be
provided. Further, both position and time may be provided as two-element
vectors to seed elements continuously in space and time from position P1 with
uncertainty radius R1 at time T1, to position P2 with uncertainty radius R2
at time T2. This is a common use case in search-and-rescue modelling (see
<xref ref-type="bibr" rid="bib1.bibx6" id="altparen.30"/>): a ship is known to have departed from position P1 at time
T1, with normally small uncertainty radius R1, and disappeared on the way
towards the destination (P2), normally with larger uncertainty in position
(R2) and estimated arrival time (T2). Thus, this will track out a “seeding
cone” in space and time. Another common use case is that P1 equals P2, with
T2 <inline-formula><mml:math id="M5" display="inline"><mml:mo>&gt;</mml:mo></mml:math></inline-formula> T1, e.g. simulating a continuous oil spill from a leaking well.</p>
      <p id="d1e1021">Another built-in feature is seeding of elements within polygons. This may,
e.g. be done by providing vectors of longitude and latitude:
<?xmltex \hack{\bgroup\small}?>
<preformat><![CDATA[>>> l.seed_within_polygon(lon=lonvector,
    lat=latvector,
    time=datetime(2017, 6, 25, 12),
    number=10000)]]></preformat>
<?xmltex \hack{\egroup}?></p>
      <p id="d1e1030">This example will seed 10 000 elements with regular spacing within the
polygon encompassed by vectors <italic>lonvector</italic> and <italic>latvector</italic>.
Based upon this generic polygon seeding method, more specific applications
have been developed; see, e.g. Sect. <xref ref-type="sec" rid="Ch1.S3.SS2"/>. The seeding methods may
also be overloaded to provide customised functionality for a given module.</p>
</sec>
<sec id="Ch1.S2.SS3.SSS4">
  <title>Configuration</title>
      <p id="d1e1048">OpenDrift modules share several configuration settings which may be adjusted
before a simulation, as well as some settings which are module specific. All
possible settings of a module may be shown with the command
<monospace>l.list_configspec()</monospace>, of which one example is
<?xmltex \hack{\bgroup\small}?>
<preformat><![CDATA[drift:scheme [euler] option('euler',
                            'runge-kutta',
                            default='euler')]]></preformat>
<?xmltex \hack{\egroup}?><?xmltex \hack{\noindent}?>This shows that the setting <monospace>drift:scheme</monospace> may have one or two
possible values, <italic>'euler'</italic> or <italic>'runge-kutta'</italic>, where the first
is the default and also the present setting as indicated within brackets. A
second-order Runge–Kutta propagation scheme may instead be activated by the
command
<?xmltex \hack{\bgroup\small}?>
<preformat><![CDATA[>>> l.set_config('drift:scheme',
                 'runge-kutta')]]></preformat>
<?xmltex \hack{\egroup}?></p>
      <p id="d1e1078">Another example of a configuration setting is <monospace>coastline_action</monospace>,
which determines how the particles shall interact with the coastline.
Possible options are <monospace>stranding</monospace>, which means that particles will be
deactivated if they hit the coastline (default); <monospace>previous</monospace> which
means that particles shall be moved back to their previous position (i.e.
“waiting” at the coast until eventually moved offshore later); or
<monospace>none</monospace>, which means that particles do not interact<?pagebreak page1411?> with land, as for
the WindBlow module as demonstrated in Sect. <xref ref-type="sec" rid="Ch1.S3.SS3"/>.</p>
      <p id="d1e1095">The configuration mechanism is based on the widely used ConfigObj package
and allows, e.g. exporting to, and importing from, files of the common
'INI' format.</p>
</sec>
<sec id="Ch1.S2.SS3.SSS5">
  <title>Starting the model run</title>
      <p id="d1e1104">After initialisation, configuration, adding of Readers and seeding of
elements, the model simulation may be started by calling the method
<italic>run</italic>:
<?xmltex \hack{\bgroup\small}?>
<preformat><![CDATA[>>> l.run(duration=timedelta(hours=48),
    time_step=timedelta(minutes=15),
    outfile='outleeway.nc')]]></preformat>
<?xmltex \hack{\egroup}?></p>
      <p id="d1e1116">This starts the main loop, as shown on the flowchart of Fig. <xref ref-type="fig" rid="Ch1.F1"/>.
At each time step, forcing data are obtained by all the Readers and
interpolated onto the element positions, and the model-specific update method
is called to move and/or otherwise update the other element properties (e.g.
evaporation of oil elements, or growth of fish larvae) based on the
environmental conditions.</p>
      <p id="d1e1121">For the above example, the simulation will cover 48 h, starting the time of
the first seeded elements. The time step of the calculation is given here as
15 min. An output time step might be specified differently, with, e.g. output
every hour to save memory and disk space.</p>
      <p id="d1e1124">All instances of OpenDrift can be run in reverse, i.e. backwards from a final
destination, by reversing the sign of the advective increment. All spatial
increments due to model physics pertinent to the instance in question are
calculated as normal, but the sign of the total increment, <inline-formula><mml:math id="M6" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, is reversed and the particles are advected “backwards” over
a time step <inline-formula><mml:math id="M7" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>. All diffusive properties are kept in the forward
sense, meaning that particles will disperse as they propagate backwards in
time. Nonlinear processes, such as evaporation of oil or capsizing of vessels,
are disabled in backtracking mode. This simple backtracking scheme is an
easy-to-use alternative to more complicated inverse methods, such as iterative
forward trajectory modelling <xref ref-type="bibr" rid="bib1.bibx9" id="paren.31"/>, and is also much less
computationally expensive.</p>
</sec>
<sec id="Ch1.S2.SS3.SSS6">
  <title>Exporting model output</title>
      <p id="d1e1172">In the above example, the output is saved to a CF-compliant NetCDF file
(trajectory data specification), which is the default output format of
OpenDrift. Both particle positions and any other properties, as well as
configuration settings are stored in the file. If the number of elements and
time steps is too large to keep all data in physical memory, OpenDrift will
flush history data to the output file as needed during the simulation to free
internal memory. The simulation may be imported by OpenDrift, or independent
software, for subsequent analysis or plotting. Stored output files may also
be used as input to a subsequent OpenDrift simulation, allowing for an
intermediate step where the particles are subjected to various considerations
such as a Bayesian update of their probabilities based on posterior
information. Saving data to files is not a requirement, as the output of the
simulations is otherwise held in memory for subsequent plotting or analysis,
either interactively from within Python shell, or by a script. A number of
visualisation tools based on the Matplotlib graphics library of Python are
included within OpenDrift. Some examples of both generic and module-specific
plotting methods are illustrated in Sect. <xref ref-type="sec" rid="Ch1.S3"/>.</p>
</sec>
</sec>
</sec>
<sec id="Ch1.S3">
  <title>Examples of model instances</title>
<sec id="Ch1.S3.SS1">
  <title>Leeway (search and rescue)</title>
      <p id="d1e1190">The OpenDrift Leeway instance (OpenLeeway) is based on the operational
search-and-rescue model of the Norwegian Meteorological Institute <xref ref-type="bibr" rid="bib1.bibx6" id="paren.32"/>. The
model ingests a list of object classes, where each drifting object has
specific properties such as downwind and crosswind leeway (the motion due to
wind) in a way similar to SAROPS, the operational system used by the US Coast
Guard (see <xref ref-type="bibr" rid="bib1.bibx24" id="altparen.33"/>, and the overview of search-and-rescue models
by <xref ref-type="bibr" rid="bib1.bibx16" id="altparen.34"/>). These properties vary greatly from object to object and
are based on field work <xref ref-type="bibr" rid="bib1.bibx7 bib1.bibx8" id="paren.35"/> where specific objects of
relevance in search and rescue have been studied. All objects are assumed to
be small enough that direct wave scattering forces are insignificant.
Furthermore, the Stokes drift <xref ref-type="bibr" rid="bib1.bibx23 bib1.bibx11 bib1.bibx12" id="paren.36"/> is inherently part
of the leeway obtained from observations. As wind-generated waves have a mean
direction closely aligned with the local wind direction, it is neither
practical nor desirable to disentangle the Stokes drift from the wind drag
for Leeway simulations.</p>
      <p id="d1e1208">Once an object class has been chosen and the pertinent wind and current
forcing fields selected, the particles are seeded based on the available
information. If the particles hit the coast, they stick by default. This can,
however, be relaxed so that particles detach from the coastline if the wind
direction changes.</p>
      <p id="d1e1211">The OpenLeeway class along with all other subclasses has the option of being
run backwards. This is a convenient feature in the cases where, for example, a
debris field is observed and the location of the accident is sought. Note
that this method is fundamentally different from the BAKTRAK model described
by <xref ref-type="bibr" rid="bib1.bibx9" id="text.37"/> where a large number of particles were seeded in potential
initial locations at various times, and only those that ended up close to the
location of the observed object were kept. This is an iterative procedure
which in principle can deal with nonlinearities in the flow field as well as
nonlinear behaviour of the object itself (such as capsizing and swamping).
Although in principle this allows for a more realistic mapping of initial
locations, the difficulties associated with this iterative process<?pagebreak page1412?> mean that
real-time operations are normally better off with a simple negative-time
integration.</p>
      <p id="d1e1217">OpenLeeway is used operationally at Norwegian Meteorological Institute and
is also currently being implemented as the operational search-and-rescue
model for the Joint Rescue Coordination Centres (JRCC) of Norway.</p>
      <p id="d1e1221">The following lines of Python code illustrate a complete working example of
running an OpenLeeway simulation:
<?xmltex \hack{\bgroup\small}?>
<preformat><![CDATA[from opendrift.readers import reader_netCDF_
     CF_generic
from opendrift.models.leeway import Leeway
l = Leeway() # Creating a simulation object
# Wind field
reader_wind = reader_netCDF_CF_generic.
     Reader('http://thredds.met.no/thredds/
     dodsC/meps25files/meps_det_pp_2_
     5km_latest.nc')
# Ocean model data
reader_ocean = reader_netCDF_CF_generic.
   Reader('http://thredds.met.no/thredds/
   dodsC/sea/norkyst800m/1h/aggregate_be')
l.add_reader([reader_wind, reader_ocean])
# Seed elements at defined position and time
objType = 26  # Life-raft, no ballast
l.seed_elements(lon=4.5, lat=60.0,
   radius=1000, number=5000,
   time=datetime(2017,7,1,12),
   objectType=objType)
# Running the model 48 hours ahead
l.run(duration=timedelta(hours=48))
# Print and plot results
print
l.animation(filename='leeway_example.mp4')
l.plot(filename='leeway_example.png')]]></preformat>
<?xmltex \hack{\egroup}?></p>
      <p id="d1e1230">The final plotting command yields Fig. <xref ref-type="fig" rid="Ch1.F2"/>. The coastline shown
is from the GSHHS database <xref ref-type="bibr" rid="bib1.bibx51" id="paren.38"/>, which is the default
option used to check stranding in OpenDrift. This coastline is, however,
interfaced to OpenDrift as a regular Reader (Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>) and can be
replaced by any other Reader providing the CF variable
<italic>land_binary_mask</italic>. This allows performing simulations in narrow
bays or lakes where even the full-resolution GSHHS coastline is too coarse.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F2" specific-use="star"><caption><p id="d1e1245">Output from the Leeway example of Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>. Green dots are
the initial positions of the elements (life rafts), grey lines are
trajectories, and blue dots are positions at the end of the simulation. Red
dots indicate elements which have hit land (stranded).</p></caption>
          <?xmltex \igopts{width=293.063386pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/11/1405/2018/gmd-11-1405-2018-f02.png"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS2">
  <title>OpenOil (oil drift)</title>
      <p id="d1e1262">OpenOil is a full-fledged oil drift model, bundled within the OpenDrift
framework. As a model, it has been developed from scratch but is based on a
selection of parameterisations of oil drift as found in the open research
literature. With regard to horizontal drift, three processes are considered:
<list list-type="bullet"><list-item>
      <p id="d1e1267">Any element, whether submerged or at the surface, drifts along with the ocean current.</p></list-item><list-item>
      <p id="d1e1271">Elements are subject to Stokes drift corresponding to their actual depth.
Surface Stokes drift is normally obtained from a wave model (or by any
Reader), and its decline with depth is calculated as described in
<?xmltex \hack{\mbox\bgroup}?><xref ref-type="bibr" rid="bib1.bibx12" id="text.39"/><?xmltex \hack{\egroup}?>.</p></list-item><list-item>
      <p id="d1e1280">Oil elements at the ocean surface are moved with an additional factor of
2 % (configurable) of the wind. Together with the Stokes drift (typically
1.5 % of the wind at the surface), this sums up to the commonly found
empirical value of 3.5 % of the wind <xref ref-type="bibr" rid="bib1.bibx36" id="paren.40"/>.
The physical mechanism behind this wind drift factor is not obvious and is
discussed in <xref ref-type="bibr" rid="bib1.bibx22" id="text.41"/>.</p></list-item></list></p>
      <p id="d1e1289">The above three drift components may lead to a very strong gradient of drift
magnitude and direction in the upper few metres of the ocean. For this
reason, it is also of critical importance to have a good description of the
vertical oil transport processes, which in OpenOil are the sum of the
following factors:
<list list-type="bullet"><list-item>
      <p id="d1e1294">If the vertical ocean current velocity is available from a Reader, the
oil elements will follow it. This part of the movement is, however, often
negligible compared to the processes below.</p></list-item><list-item>
      <p id="d1e1298">Oil elements at the surface, regarded as being in the state of an oil slick,
may be entrained into the ocean by breaking waves. Presently, OpenOil contains
two different parameterisations of this entrainment rate, from which the user
can chose as part of configuration (see below): <xref ref-type="bibr" rid="bib1.bibx46" id="text.42"/> and
<xref ref-type="bibr" rid="bib1.bibx29" id="text.43"/>. The entrainment depends on both the wind and wave
(breaking) conditions and also on the oil properties, such as viscosity,
density and oil–water interfacial tension.</p></list-item><list-item>
      <p id="d1e1308">Buoyancy of droplets is calculated according to empirical relationships
and the Stokes law of <xref ref-type="bibr" rid="bib1.bibx46" id="text.44"/>, dependent on ocean stratification
(calculated from temperature and salinity profile, normally read from an
ocean model), oil and water viscosities and densities. Also, the buoyancy is
strongly dependent on the oil droplet size (diameter), of which two
parameterisations are available: one is a generic power law, with droplets
between a minimum and maximum diameter, and a configurable exponent where
<inline-formula><mml:math id="M8" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>2.3 corresponds to the classical work of <xref ref-type="bibr" rid="bib1.bibx18" id="normal.45"/>.
The second option for droplet size spectrum is a “modern” approach by
<xref ref-type="bibr" rid="bib1.bibx21" id="text.46"/>, where a log-normal droplet spectrum is
calculated explicitly based on wave height and oil properties such as
viscosity, density, interfacial tension and surface film thickness.</p></list-item><list-item>
      <p id="d1e1328">In addition to the wave-induced entrainment, the oil elements are also
subject to vertical turbulence throughout the water column, as parameterised
with a numerical scheme described in <xref ref-type="bibr" rid="bib1.bibx49" id="text.47"/>. This
scheme is generic within OpenDrift and is also used by the PelagicEgg module
for ichthyoplankton (Sect. <xref ref-type="sec" rid="Ch1.S3.SS4"/>). Only the properties specific
to oil, or plankton, are coded in the respective classes (modules).</p></list-item></list></p>
      <p id="d1e1336">In addition to the vertical and horizontal drift, weathering of the oil also
has to be considered. While parameterisations of weathering might also be
implemented directly within the OpenDrift framework, the OpenOil module
instead interfaces with the already existing OilLibrary software developed by
NOAA (<?xmltex \hack{\mbox\bgroup}?><uri>https://github.com/NOAA-ORR-ERD/OilLibrary</uri><?xmltex \hack{\egroup}?>). The NOAA
OilLibrary is also open-source and written in Python, so integration is
straightforward. In addition to state-of-the-art parameterisations of
processes such as evaporation, emulsification and dispersion, this software
contains a database of measured properties of almost 1000 oil types from
around the world. As oils from different sources/wells have vastly different
properties, such a database is of vital importance for accurate results. The
same OilLibrary is also used by the NOAA oil drift model PyGNOME
(<uri>https://github.com/NOAA-ORR-ERD/PyGnome</uri>), where it is replacing the
original ADIOS oil library <xref ref-type="bibr" rid="bib1.bibx28" id="paren.48"/>. PyGNOME includes
also more processes not (yet) included in OpenOil, such as dissolution, and
adding of dispersants.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F3"><caption><p id="d1e1352">Oil drift simulation initialised by seeding 2000 oil elements within
contours of an oil slick as observed from satellite (Radarsat2). The contour
is imported from a Geography Markup Language (GML) file produced by Kongsberg Satellite Services
(KSAT).</p></caption>
          <?xmltex \igopts{width=199.169291pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/11/1405/2018/gmd-11-1405-2018-f03.png"/>

        </fig>

      <p id="d1e1362">To run an OpenOil simulation, one could reuse the exact code as for the
Leeway example of Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>, only replacing the name of the imported
module (<italic>OpenOil</italic> instead of <italic>Leeway</italic>) and replacing the
<italic>objectType</italic> property of Leeway with a corresponding oil name from the
NOAA database. However, whereas key features and functionality is shared
among OpenDrift modules, each module (or group of modules) may add specific
functionality. For example, for OpenOil, it is possible to initialise the
simulations with an oil slick as read from a file containing contours, either
a shapefile or the  Geography Markup Language (GML) format/specification, as used by the European Maritime
Safety Agency (EMSA):
<?xmltex \hack{\bgroup\small}?>
<preformat><![CDATA[>>> o.seed_from_gml("RS2_20151116_002619_
    SCNB_HH_Oil.gml", num_elements=2000)
>>> o.plot()]]></preformat>
<?xmltex \hack{\egroup}?><?xmltex \hack{\noindent}?>where o is the oil drift simulation object. The last command produces the
plot shown in Fig. <xref ref-type="fig" rid="Ch1.F3"/>.</p>
      <?pagebreak page1414?><p id="d1e1387">OpenOil also has module-specific configuration settings. The following
commands specify that the oil entrainment rate shall be calculated
according to <xref ref-type="bibr" rid="bib1.bibx29" id="text.49"/>, and the oil droplet size spectrum
shall be calculated according to <xref ref-type="bibr" rid="bib1.bibx21" id="text.50"/>.
<?xmltex \hack{\bgroup\small}?>
<preformat><![CDATA[>>> o.set_config('wave_entrainment:
                 entrainment_rate',
                 'Li et al. (2017)')
>>> o.set_config('wave_entrainment:droplet_
                 size_distribution',
                 'Johansen et al. (2015)')]]></preformat>
<?xmltex \hack{\egroup}?><?xmltex \hack{\noindent}?>Adjusting configuration this way is convenient for sensitivity studies, where
one component is changed for two otherwise identical simulations.</p>
      <p id="d1e1404">After the simulation is finished, the generic plot command may be used to
produce a map with trajectories as shown in Fig. <xref ref-type="fig" rid="Ch1.F2"/>. However,
more specific plotting methods are also available. The command
<monospace>o.plot_oil_budget()</monospace> plots an oil budget as shown in
<?xmltex \hack{\mbox\bgroup}?>Fig. <xref ref-type="fig" rid="Ch1.F4"/><?xmltex \hack{\egroup}?>.</p>
      <p id="d1e1417">The vertical distribution of the elements can be plotted with the command
<monospace>o.plot_vertical_distribution()</monospace>, generating output as shown in
Fig. <xref ref-type="fig" rid="Ch1.F5"/>. This method is shared among three-dimensional
modules and may also be used for simulations with, e.g. the PelagicEgg module
(Sect. <xref ref-type="sec" rid="Ch1.S3.SS4"/>).</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F4" specific-use="star"><caption><p id="d1e1429">Plot of the time evolution of the oil budget of a 24 h simulation
with OpenOil. Of 500 kg oil initially at the ocean surface, about 20 %
is seen to evaporate within the 24 h. The amount of oil submerged due to
wave action and ocean turbulence varies with the wind and wave conditions,
with more oil resurfacing when wind decreases after about 7 h. After about
18 h, some of the oil is seen to hit the coastline. These results are for the
oil type “Martin Linge crude”; very different results could be
obtained if using another oil type for the same geophysical
conditions.</p></caption>
          <?xmltex \igopts{width=341.433071pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/11/1405/2018/gmd-11-1405-2018-f04.png"/>

        </fig>

      <?xmltex \floatpos{t}?><fig id="Ch1.F5"><caption><p id="d1e1441">Vertical profile of the amount of (oil) elements. The bottom bar is
an interactive slider, which the user can pull left/right to see the time
variation of the vertical distribution.</p></caption>
          <?xmltex \igopts{width=241.848425pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/11/1405/2018/gmd-11-1405-2018-f05.png"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS3">
  <title>WindBlow (atmospheric transport)</title>
      <p id="d1e1456">As an example of a minimalistic trajectory model, we also include the instance
WindBlow, which simply calculates the propagation of a passive particle
subject to a two-dimensional wind field. The code below is the complete and
fully functional WindDrift module.
<?xmltex \hack{\bgroup\small}?>
<preformat><![CDATA[# WindBlow module code from opendrift.
  models.basemodel
import OpenDriftSimulation from opendrift.
elements.passivetracer import PassiveTracer

class WindBlow(OpenDriftSimulation):
   ElementType = PassiveTracer
   required_variables = ['x_wind', 'y_wind']

    def update(self):
        self.update_positions(
             self.environment.x_wind,
             self.environment.y_wind)]]></preformat>
<?xmltex \hack{\egroup}?></p>
      <p id="d1e1465">Because all common functionality is inherited from the main class, the
WindBlow model only needs to address its own specific needs. It will use
elements without any other properties except for position (PassiveTracer),
and the only forcing needed to move the elements is wind, whose vector
components are named <italic>x_wind</italic> and <italic>y_wind</italic> in
CF terminology. The <italic>update()</italic> method which is called at each time
step simply advects all elements with the wind velocity at their respective
locations. The wind might be provided by any Reader (Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>).
The WindDrift module may be run with an even more simplified form of the code
example found in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>: the WindDrift class has to be imported,
no Reader for ocean current is needed, and there is no object category to
specify.</p>
      <p id="d1e1481">Clearly, an air parcel in the real atmosphere will also be subjected to
updrafts and diffusion, and will with time rise or fall, but the example
serves to demonstrate how little is required to develop a new subclass of
OpenDrift. The model may be made more sophisticated by adding, e.g. vertical
wind (<italic>upward_air_velocity</italic>) and turbulence parameters to the
list of required variables, and adding corresponding parameterisations of how
to use this information for the advection.</p>
</sec>
<sec id="Ch1.S3.SS4">
  <title>Other modules</title>
      <p id="d1e1493">In addition to the models described above, some other modules are bundled
within the OpenDrift repository, as illustrated in Fig. <xref ref-type="fig" rid="Ch1.F6"/>:
<list list-type="bullet"><list-item>
      <p id="d1e1500"><italic>OceanDrift</italic> is a basic module for tracking, e.g. water masses or
passive tracers. Stokes drift is included, if provided by a Reader. A
wind drift factor may also be specified, allowing an additional wind drag at
the surface, e.g. for simulation trajectories of various ocean drifting buoys
<xref ref-type="bibr" rid="bib1.bibx14" id="paren.51"/>.</p></list-item><list-item>
      <?pagebreak page1415?><p id="d1e1509"><italic>PelagicEgg</italic> is a module for transport of pelagic ichthyoplankton.
This module contains quite basic functionality with identical transport
mechanisms as in <xref ref-type="bibr" rid="bib1.bibx33" id="text.52"/>, including the vertical turbulent scheme
(Sect. <xref ref-type="sec" rid="Ch1.S3.SS2"/>) which is of key importance for most pelagic plankton
applications. Although a fully working a module, users with specialised needs
(e.g. a specific biological species) can customise the drift and behaviour
parameterisations by modifying or adding parameterisations in the PelagicEgg
module, such as larval behaviour. Some users have interfaced this module with
existing Fortran code, e.g. for calculation of sunlight-dependent behaviour;
see, e.g. <xref ref-type="bibr" rid="bib1.bibx26" id="text.53"/> and
<xref ref-type="bibr" rid="bib1.bibx44" id="text.54"/>. A pure Python version of the sunlight module
is available and will be included in a future version of OpenDrift.</p></list-item><list-item>
      <p id="d1e1526"><italic>ShipDrift</italic> is a module for predicting the drift of ships larger
than 30 m, where the effect of waves has to be calculated explicitly, and
not implicitly with the wind drift as in the Leeway module. This module is
based on <xref ref-type="bibr" rid="bib1.bibx39" id="text.55"/>. A previous version programmed
in the C programming language has been used operationally at MET Norway for
15 years but is now replaced by the OpenDrift version, which has been tested
and shown to provide identical output for identical input/forcing.</p></list-item></list></p>
      <p id="d1e1534">A module for drift of icebergs (OpenBerg, not yet included in repository) has
been developed by Ron Saper at Carleton University with partial funding from
ASL Environmental Sciences of Victoria, Canada, and with data support from
the Canadian Ice Service (personal communication, 2017). Two different
iceberg drift forecasting approaches are being tested. One approach uses a
drag formulation to calculate wind and water drag forces. The challenge with
this approach is that the trajectories are very sensitive to underwater
draft/shape and suitable drag coefficients, of which information is rarely
available. The second approach predicts and subtracts the wind and tidal
components of the drift, and then analyses the residual for extrapolation an
appropriately short time into the future. Finally, wind and tidal components
are added back in to produce a trajectory forecast. The first version of
OpenBerg does not include thermodynamic effects (melting) which are important
longer timescales from weeks to months.</p>
      <p id="d1e1537">Drift of marine plastics, including microplastics, is an important
application not covered by modules included with the OpenDrift repository
version 1.0. However, as most of the needed infrastructure is already
provided, including a vertical mixing scheme, a user with knowledge of the
relevant physics and basic Python programming should be able to implement
such a module with moderate efforts. However, there is no upper limit to the
complexity of any module.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F6" specific-use="star"><caption><p id="d1e1542">Illustration of how OpenDrift modules for specific applications
(white boxes) inherit common functionality from the core module. This
includes functionality to interact with Readers for obtaining forcing data.
Subclassing (inheritance) allows, e.g. both the OpenOil and PelagicEgg models
to share further 3-D-functionality through subclassing the OpenDrift3D class.
The boxes with solid boundaries illustrate existing modules bundled with the
OpenDrift repository, whereas dashed boundaries indicate planned modules. The
green box illustrates that OpenOil (oil drift model) utilises functionality
from a third-party library, the NOAA OilLibrary.</p></caption>
          <?xmltex \igopts{width=298.753937pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/11/1405/2018/gmd-11-1405-2018-f06.png"/>

        </fig>

</sec>
</sec>
<?pagebreak page1416?><sec id="Ch1.S4">
  <title>Test suite and example scripts</title>
      <p id="d1e1559">OpenDrift contains a broad set of automatic tests (Python unittest framework)
which can be run by the user to assure that all calculations are performed
correctly on the local machine. The tests cover both basic calculations, such
as interpolation and rotation of vectors from one spatial reference system
(SRS) to another, but also more extensive integration tests, performing full
simulations with the modules to verify that an expected numerical result is
obtained. Also, very importantly, the tests are also run automatically on a
variety of machine configurations, using the Travis Continuous Integration
(CI) framework (<uri>https://travis-ci.org</uri>). This ensures that OpenDrift
calculations remain accurate and correct with both old and new versions of
the various required libraries (e.g. NumPy), and that existing functionality
is not broken as new functionality is added. For version 1.0 of OpenDrift,
64 % of the code is covered by the unit tests, as reported by the
Coveralls tool (coveralls.io).</p>
      <p id="d1e1565">A user manual of OpenDrift is kept alongside the code repository on the
wiki pages of GitHub (<uri>https://github.com/OpenDrift/opendrift/wiki</uri>),
facilitating a dynamic description to evolve with the code, instead of
diverting from it. Many example scripts (40 in version 1.0) are also provided
in the repository along with the needed input forcing data, illustrating a
variety of real-life use cases. The examples can easily be modified and
adapted, allowing a soft learning curve.</p>
      <p id="d1e1571">OpenDrift also comes with a set of handy command line tools, such as
<italic>readerinfo.py</italic>, which may be used to easily inspect the contents and
coverage of potential forcing fields. The following shell command produces
the same output as the example of Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>, where the switch '-p'
also displays a plot of the geographical coverage:
<?xmltex \hack{\bgroup\small}?>
<preformat><![CDATA[$ readerinfo.py ocean_model_output.nc -p]]></preformat>
<?xmltex \hack{\egroup}?></p>
</sec>
<sec id="Ch1.S5">
  <title>Graphical user interfaces</title>
      <p id="d1e1591">Although running OpenDrift modules with Python scripts (see, e.g.
Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>) is the most flexible and powerful, a basic graphical user
interface (GUI) is also included in the repository. A screenshot is shown in
Fig. <xref ref-type="fig" rid="Ch1.F7"/>. The GUI allows to select a module and an
object type or medium (e.g. oil type) corresponding to the module, and then a
seeding location and time. The simulation is started by clicking the
“START” button, and plots and animation of the output is available after
the simulation and also saved to a NetCDF file. The GUI will obtain forcing
data through a provided list (configurable) of Thredds servers with global
coverage, so there is no need for the user to obtain and download large
amounts of model input in advance. Although presently with only basic
functionality, the GUI is in operational use at MET Norway, where it is
tested daily by meteorologists on duty as part of the oil spill and search-and-rescue preparedness system.</p>
      <p id="d1e1598">In addition to the native GUI, a web interface has also been developed for
remote access without need for any local installation. This is based on
communication with OpenDrift through a web processing service (WPS) developed
at MET Norway (not included in the repository). Independently, a WPS for the
Leeway module has also been developed and implemented at the Swedish Met
Office (SMHI). A generic and configurable WPS to be included in the
repository is planned for the future.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F7" specific-use="star"><caption><p id="d1e1603">Screenshot of the graphical user interface included with
OpenDrift.</p></caption>
        <?xmltex \igopts{width=312.980315pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/11/1405/2018/gmd-11-1405-2018-f07.png"/>

      </fig>

</sec>
<sec id="Ch1.S6" sec-type="conclusions">
  <title>Discussion and conclusions</title>
      <p id="d1e1618">Several offline
trajectory models exist to predict the transport and transformation of
various substances and objects in the ocean or in the atmosphere. OpenDrift
is an open-source Python framework aiming at extracting anything which<?pagebreak page1417?> is
common to all such trajectory models in a core library, and combining this
with a clean and generic interface for describing any processes which are
application specific. Several examples of such specific modules are bundled
with the OpenDrift code repository and serve as ready-to-use trajectory
models. This includes an oil drift model (OpenOil), a search-and-rescue model
(Leeway) and a model for predicting the drift and transformation of
ichthyoplankton (PelagicEgg). Interfaces (Readers) towards the most common
formats of forcing data (e.g. NetCDF and GRIB) are also included, allowing
any of the modules to be forced by data from a combination of files and other
sources, including remote Thredds servers. The concept of Readers is also
modularised, allowing a scientist or programmer to easily develop an
interface towards any other specific source of forcing data, e.g. an
ASCII file containing in situ observations from a buoy or weather station, or
ocean currents from HF-radar systems in a specific binary format.</p>
      <p id="d1e1621">A built-in configuration mechanism provides flexibility to the operation of
the OpenDrift modules. However, the fact that the application-specific
processes of these modules are separated from the technical complexities of
the OpenDrift core provides even greater flexibility to the user in that it
is easy to modify existing modules, or even write new modules from scratch.
Several users have already developed or adjusted modules for their specific
purpose and added useful contributions to the OpenDrift core
<xref ref-type="bibr" rid="bib1.bibx44 bib1.bibx26" id="paren.56"/>.</p>
      <p id="d1e1627">Whereas flexibility is important for scientific studies, OpenDrift is also
designed for performance and robustness and is in daily use for operational
emergency response systems at the Norwegian Meteorological Institute. Being
able to use the same tool in both cases facilitates rapid transition of the
latest research results into operations.</p>
      <p id="d1e1630">The efficiency of the code has been optimised to the point that more time is
normally spent on reading the forcing data from disk (or a URL) than on
performing actual calculations. Computational performance similar to compiled
languages (Fortran or C) is obtained by, e.g. using primarily NumPy arrays
for calculations (avoiding the slower MaskedArray class) and avoiding “for
loops”. A typical emergency simulation with the Leeway model with 5000
elements and 48 h duration takes on the order of 1 min. A corresponding
simulation with OpenOil takes about 3–5 min, primarily because<?pagebreak page1418?> more layers
of ocean model data have to be read from disk, in contrast to the Leeway
simulation which only needs the surface current. A typical 1-year simulation
of 20 000 drifting cod eggs (developing into larvae) takes about 4 h on a
regular desktop computer <xref ref-type="bibr" rid="bib1.bibx26" id="paren.57"/>. The
OpenDrift code is presently not parallelised. However, given that most time
is spent on reading data from disk, some further performance gain could
possibly be achieved by, e.g. reading in parallel data from different input
files (e.g. ocean model and atmospheric model) or by reading input data for
the following time step in parallel to performing calculations.</p>
      <p id="d1e1637">Another great benefit of the modularity provided by OpenDrift is the ability
to perform sensitivity tests by varying one component while keeping
everything else constant. Much can be learnt from performing two otherwise
identical simulations with, e.g. input from two different Eulerian models, or
by using two different parameterisations of some process. Further,
consistency is also provided by the possibility of handling, e.g. overlap of
fish eggs and oil with the same forcing and numerical scheme. Traditionally,
it might be difficult to draw conclusions by comparing the output from
different trajectory models, as the differences depend on many factors, such
as interpolation schemes and numerical algorithms.</p>
      <p id="d1e1640">The modules presently included with OpenDrift will be improved in the future,
in particular by validation against available relevant observations. Among
the general problems which require more attention, is properly describing
and quantifying the very strong vertical gradients of horizontal drift often
found in the upper few metres of the ocean, as result of a delicate balance
between ocean currents and Stokes drift, as well as the direct wind drift
affecting objects and substances at the very ocean surface. This vertical
gradient of forcing is highly important for drift of, e.g. oil and chemicals,
plankton and microplastics. This implies further that having accurate
parameterisations of the vertical transport processes (wave entrainment,
buoyancy and ocean turbulence) is also very important. For example, a key factor for
successful simulation of the drift of observed oil slicks in
<xref ref-type="bibr" rid="bib1.bibx22" id="text.58"/> was to incorporate a vertical mixing
scheme developed for fish eggs
<xref ref-type="bibr" rid="bib1.bibx43 bib1.bibx45 bib1.bibx1" id="paren.59"/> into
the oil drift model OpenOil.</p>
</sec>

      
      </body>
    <back><notes notes-type="codeavailability">

      <p id="d1e1653">OpenDrift is housed on GitHub:
<uri>https://github.com/OpenDrift/opendrift</uri>. The accompanying wiki pages
contain installation instructions, documentation and examples. Version 1.0 of
OpenDrift is registered with Zenodo: <ext-link xlink:href="https://doi.org/10.5281/zenodo.845813" ext-link-type="DOI">10.5281/zenodo.845813</ext-link>. OpenDrift
has been tested on both Linux, Mac and Windows platforms. Version 1.0
requires Python 2.7 and is not adapted for Python 3. The OpenDrift framework
is distributed under a GPLv2 license.</p>
  </notes><ack><title>Acknowledgements</title><p id="d1e1665">Knut-Frode Dagestad, Johannes Röhrs and Øyvind Breivik gratefully
acknowledge support from the Joint Rescue Coordination Centres through the
project OpenLeeway and the Research Council of Norway through the CIRFA
(grant no. 237906) and RETROSPECT (grant no. 244262) projects. The Norwegian
Clean Seas Association (NOFO) and the Norwegian Coastal Administration have
been instrumental in their support and testing of the software during the
development phase.<?xmltex \hack{\newline}?><?xmltex \hack{\newline}?>
Edited by: Robert Marsh <?xmltex \hack{\newline}?>
Reviewed by: two anonymous referees</p></ack><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Ådlandsvik and Sundby(1994)</label><mixed-citation>Ådlandsvik, B. and Sundby, S.: Modelling the transport of cod larvae
from the Lofoten area, ICES J. Mar. Sci. Symp., 198, 379–392, available at:
<uri>https://www.scienceopen.com/document?vid=53b16ebf-bddc-4332-8719-1bb180e1cdaa</uri>
(last access: 9 April 2018), 1994.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Allen and Plourde(1999)</label><mixed-citation>Allen, A. and Plourde, J. V.: Review of Leeway: Field Experiments and
Implementation, US Coast Guard Research and Development Center, 1082
Shennecossett Road, Groton, CT, USA, Tech. Rep. CG-D-08-99, available
through: <uri>http://www.ntis.gov</uri> (last access: 9 April 2018), 1999.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Bartnicki et al.(2016)</label><mixed-citation>Bartnicki, J., Amundsen, I., Brown, J., Hosseini, A., Hov, O., Haakenstad,
H., Klein, H., Lind, O. C., Salbu, B., Szacinski Wendel, C. C., and
Ytre-Eide, M. A.: Atmospheric transport of radioactive debris to Norway in
case of a hypothetical accident related to the recovery of the Russian
submarine K-27, J. Environ. Radioactiv., 151, 404–416,
<ext-link xlink:href="https://doi.org/10.1016/j.jenvrad.2015.02.025" ext-link-type="DOI">10.1016/j.jenvrad.2015.02.025</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Berry et al.(2012)</label><mixed-citation>Berry, A., Dabrowski, T., and Lyons, K.: The oil spill model OILTRANS and
its application to the Celtic Sea, Mar. Pollut. Bull., 64, 2489–2501,
<ext-link xlink:href="https://doi.org/10.1016/j.marpolbul.2012.07.036" ext-link-type="DOI">10.1016/j.marpolbul.2012.07.036</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Blanke et al.(1997)</label><mixed-citation>Blanke, B., Raynaud, S., Blanke, B., and Raynaud, S.: Kinematics of the
Pacific Equatorial Undercurrent: An Eulerian and Lagrangian Approach from GCM
Results, J. Phys. Oceanogr., 27, 1038–1053,
<ext-link xlink:href="https://doi.org/10.1175/1520-0485(1997)027&lt;1038:KOTPEU&gt;2.0.CO;2" ext-link-type="DOI">10.1175/1520-0485(1997)027&lt;1038:KOTPEU&gt;2.0.CO;2</ext-link>,
1997.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Breivik and Allen(2008)</label><mixed-citation>Breivik, Ø. and Allen, A. A.: An operational search and rescue model for
the Norwegian Sea and the North Sea, J. Marine Syst., 69, 99–113,
<ext-link xlink:href="https://doi.org/10.1016/j.jmarsys.2007.02.010" ext-link-type="DOI">10.1016/j.jmarsys.2007.02.010</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Breivik et al.(2011)</label><mixed-citation>Breivik, Ø., Allen, A. A., Maisondieu, C., and Roth, J. C.: Wind-induced
drift of objects at sea: The leeway field method, Appl. Ocean Res., 33,
100–109, <ext-link xlink:href="https://doi.org/10.1016/j.apor.2011.01.005" ext-link-type="DOI">10.1016/j.apor.2011.01.005</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Breivik et al.(2012a)</label><mixed-citation>Breivik, Ø., Allen, A., Maisondieu, C., Roth, J.-C., and Forest, B.: The
Leeway of Shipping Containers at Different Immersion Levels, Ocean Dynam.,
62, 741–752, <ext-link xlink:href="https://doi.org/10.1007/s10236-012-0522-z" ext-link-type="DOI">10.1007/s10236-012-0522-z</ext-link>, 2012a.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Breivik et al.(2012b)</label><mixed-citation>Breivik, Ø., Bekkvik, T. C., Ommundsen, A., and Wettre, C.: BAKTRAK:
Backtracking drifting objects using an iterative algorithm with a forward
trajectory model, Ocean Dynam., 62, 239–252,
<ext-link xlink:href="https://doi.org/10.1007/s10236-011-0496-2" ext-link-type="DOI">10.1007/s10236-011-0496-2</ext-link>, 2012b.</mixed-citation></ref>
      <?pagebreak page1419?><ref id="bib1.bibx10"><label>Breivik et al.(2013)</label><mixed-citation>Breivik, Ø., Allen, A., Maisondieu, C., and Olagnon, M.: Advances in
Search and Rescue at Sea, Ocean Dynam., 63, 83–88,
<ext-link xlink:href="https://doi.org/10.1007/s10236-012-0581-1" ext-link-type="DOI">10.1007/s10236-012-0581-1</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Breivik et al.(2014)</label><mixed-citation>Breivik, Ø., Janssen, P., and Bidlot, J.: Approximate Stokes Drift
Profiles in Deep Water, J. Phys. Oceanogr., 44, 2433–2445,
<ext-link xlink:href="https://doi.org/10.1175/JPO-D-14-0020.1" ext-link-type="DOI">10.1175/JPO-D-14-0020.1</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Breivik et al.(2016)</label><mixed-citation>Breivik, Ø., Bidlot, J.-R., and Janssen, P. A.: A Stokes drift
approximation based on the Phillips spectrum, Ocean Model., 100, 49–56,
<ext-link xlink:href="https://doi.org/10.1016/j.ocemod.2016.01.005" ext-link-type="DOI">10.1016/j.ocemod.2016.01.005</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Brovchenko et al.(2003)</label><mixed-citation>Brovchenko, I., Kuschan, A., Maderich, V., Shliakhtun, M., Yuschenko, S., and
Zheleznyak, M.: The modelling system for simulation of the oil spills in the
Black Sea, Elsev. Oceanogr. Serie., 69, 586–591,
<ext-link xlink:href="https://doi.org/10.1016/S0422-9894(03)80095-8" ext-link-type="DOI">10.1016/S0422-9894(03)80095-8</ext-link>, 2003.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Dagestad and Röhrs(2018)</label><mixed-citation>
Dagestad, K.-F. and Röhrs, J.: Prediction of ocean surface trajectories
using satellite derived vs. modeled ocean currents, Remote Sens. Environ.,
submitted, 2018.</mixed-citation></ref>
      <ref id="bib1.bib1"><label>1</label><mixed-citation>Dagestad, K.-F., Röhrs, J., Breivik, Ø., and Aadlandsvik, B.:
OpenDrift v1.0.3, <ext-link xlink:href="https://doi.org/10.5281/zenodo.1175634" ext-link-type="DOI">10.5281/zenodo.1175634</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Daniel(1996)</label><mixed-citation>Daniel, P.: Operational forecasting of oil spill drift at
Météo-France, Spill Sci. Technol. B., 3, 53–64,
<ext-link xlink:href="https://doi.org/10.1016/S1353-2561(96)00030-8" ext-link-type="DOI">10.1016/S1353-2561(96)00030-8</ext-link>, 1996.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Davidson et al.(2009)</label><mixed-citation>Davidson, F. J. M., Allen, A., Brassington, G. B., Breivik, Ø., Daniel,
P., Kamachi, M., Sato, S., King, B., Lefevre, F., Sutton, M., and Kaneko, H.:
Applications of GODAE ocean current forecasts to search and rescue and ship
routing, Oceanography, 22, 176–181, <ext-link xlink:href="https://doi.org/10.5670/oceanog.2009.76" ext-link-type="DOI">10.5670/oceanog.2009.76</ext-link>, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>De Dominicis et al.(2013)</label><mixed-citation>De Dominicis, M., Pinardi, N., Zodiatis, G., and Lardner, R.: MEDSLIK-II, a
Lagrangian marine surface oil spill model for short-term forecasting –
Part 1: Theory, Geosci. Model Dev., 6, 1851–1869,
<ext-link xlink:href="https://doi.org/10.5194/gmd-6-1851-2013" ext-link-type="DOI">10.5194/gmd-6-1851-2013</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Delvigne and Sweeney(1989)</label><mixed-citation>
Delvigne, G. and Sweeney, C.: Natural Dispersion of Oil, Publication
No. 399, Delft Hydraulic Laboratory, Delft, The Netherlands, Tech. rep.,
399, 30 pp., 1989.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Dick and Soetje(1990)</label><mixed-citation>
Dick, S. and Soetje, K. C.: An operational oil dispersion model for the
German Bight, Hydrographische Zeitschrift, 16, 43 pp., 1990.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Döös et al.(2013)</label><mixed-citation>Döös, K., Kjellsson, J., and Jönsson, B.: TRACMASS –
A Lagrangian Trajectory Model, in: Preventive Methods for Coastal Protection,
Springer International Publishing, Heidelberg, 225–249,
<ext-link xlink:href="https://doi.org/10.1007/978-3-319-00440-2_7" ext-link-type="DOI">10.1007/978-3-319-00440-2_7</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Johansen et al.(2015)</label><mixed-citation>Johansen, O., Reed, M., and Bodsberg, N. R.: Natural dispersion revisited,
Mar. Pollut. Bull., 93, 20–26, <ext-link xlink:href="https://doi.org/10.1016/j.marpolbul.2015.02.026" ext-link-type="DOI">10.1016/j.marpolbul.2015.02.026</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Jones et al.(2016)</label><mixed-citation>Jones, C. E., Dagestad, K.-F., Breivik, O., Holt, B., Röhrs, J.,
Christensen, K. H., Espeseth, M., Brekke, C., and Skrunes, S.: Measurement
and modeling of oil slick transport, J. Geophys. Res.-Oceans, 121,
7759–7775, <ext-link xlink:href="https://doi.org/10.1002/2016JC012113" ext-link-type="DOI">10.1002/2016JC012113</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Kenyon(1969)</label><mixed-citation>Kenyon, K. E.: Stokes Drift for Random Gravity Waves, J. Geophys. Res., 74,
6991–6994, <ext-link xlink:href="https://doi.org/10.1029/JC074i028p06991" ext-link-type="DOI">10.1029/JC074i028p06991</ext-link>, 1969.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Kratzke et al.(2010)</label><mixed-citation>Kratzke, T. M., Stone, L. D., and Frost, J. R.: Search and Rescue Optimal
Planning System, in: Information Fusion (FUSION), 2010 13th Conference on,
26–29 July 2010, Edinburgh, UK, IEEE, 8 pp.,
<ext-link xlink:href="https://doi.org/10.1109/ICIF.2010.5712114" ext-link-type="DOI">10.1109/ICIF.2010.5712114</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Kubat et al.(2007)</label><mixed-citation>Kubat, I., Sayed, M., Savage, S. B., Carrieres, T., and Crocker, G.: An
Operational Iceberg Deterioration Model, in: The Seventeenth International
Offshore and Polar Engineering Conference, 1–6 July, Lisbon, Portugal,
International Society of Offshore and Polar Engineers, available at:
<uri>https://www.onepetro.org/conference-paper/ISOPE-I-07-282</uri> (last access:
9 April 2018), 2007.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Kvile et al.(2018)</label><mixed-citation>
Kvile, K., Romagnoni, G., Dagestad, K.-F., Langangen, Ø. and Kristiansen,
T.: Sensitivity of modelled North Sea cod larvae transport to vertical
behaviour, ocean model resolution and interannual variation in ocean
dynamics, ICES Journal of Marine Science, in press, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Lardner et al.(1998)</label><mixed-citation>
Lardner, R., Zodiatis, G., Loizides, L., and Demetropoulos, A.: An
operational oil spill model for the Levantine Basin (Eastern Mediterranean
Sea), International symposium on marine pollution, Monaco, Monaco,
5–9 October 1998, 30, 511–512, 1998.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Lehr et al.(2002)</label><mixed-citation>Lehr, W., Jones, R., Evans, M., Simecek-Beatty, D., and Overstreet, R.:
Revisions of the ADIOS oil spill model, Environ. Modell. Softw., 17,
189–197, <ext-link xlink:href="https://doi.org/10.1016/S1364-8152(01)00064-0" ext-link-type="DOI">10.1016/S1364-8152(01)00064-0</ext-link>, 2002.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Li et al.(2017)</label><mixed-citation>Li, Z., Spaulding, M. L., and French-McCay, D.: An algorithm for modeling
entrainment and naturally and chemically dispersed oil droplet size
distribution under surface breaking wave conditions, Mar. Pollut. Bull.,
119, 145–152, <ext-link xlink:href="https://doi.org/10.1016/j.marpolbul.2017.03.048" ext-link-type="DOI">10.1016/j.marpolbul.2017.03.048</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Margvelashvily et al.(1997)</label><mixed-citation>
Margvelashvily, N., Maderich, V., and Zheleznyak, M.: THREETOX – A Computer
Code to Simulate Three-Dimensional Dispersion of Radionuclides in Stratified
Water Bodies, Radiat. Prot. Dosim., 73, 177–180, 1997.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>McKenna et al.(2002)</label><mixed-citation>McKenna, D. S., Konopka, P., Grooß, J., Günther, G., Müller,
R., Spang, R., Offermann, D., and Orsolini, Y.: A new Chemical Lagrangian
Model of the Stratosphere (CLaMS) 1. Formulation of advection and mixing,
J. Geophys. Res., 107, 4309, <ext-link xlink:href="https://doi.org/10.1029/2000JD000114" ext-link-type="DOI">10.1029/2000JD000114</ext-link>, 2002.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Paris et al.(2013)</label><mixed-citation>Paris, C. B., Helgers, J., van Sebille, E., and Srinivasan, A.: Connectivity
Modeling System: A probabilistic modeling tool for the multi-scale tracking
of biotic and abiotic variability in the ocean, Environ. Modell. Softw., 42,
47–54, <ext-link xlink:href="https://doi.org/10.1016/J.ENVSOFT.2012.12.006" ext-link-type="DOI">10.1016/J.ENVSOFT.2012.12.006</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Röhrs et al.(2014)</label><mixed-citation>Röhrs, J., Christensen, K. H., Vikebø, F., Sundby, S., Sætra,
Ø., and Broström, G.: Wave-induced transport and vertical mixing of
pelagic eggs and larvae, Limnol. Oceanogr., 59, 1213–1227,
<ext-link xlink:href="https://doi.org/10.4319/lo.2014.59.4.1213" ext-link-type="DOI">10.4319/lo.2014.59.4.1213</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Schemm et al.(2017)</label><mixed-citation>Schemm, S., Nummelin, A., Kvamstø, N. G., and Breivik, O.: The Ocean
Version of the Lagrangian Analysis Tool LAGRANTO, J. Atmos. Ocean. Tech.,
34, 1723–1741, <ext-link xlink:href="https://doi.org/10.1175/JTECH-D-16-0198.1" ext-link-type="DOI">10.1175/JTECH-D-16-0198.1</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>Schlag and North(2012)</label><mixed-citation>
Schlag, Z. R. and North, E. W.: Lagrangian TRANSport model (LTRANS v.2)
User's Guide, University of Maryland Center for Environmental Science, Horn
Point Laboratory, Cambridge, MD, USA, Tech. rep., 183 pp., 2012.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Schwartzberg(1971)</label><mixed-citation>Schwartzberg, H. G.: THE MOVEMENT OF OIL SPILLS, International Oil Spill
Conference Proceedings, 1971, 489–494, <ext-link xlink:href="https://doi.org/10.7901/2169-3358-1971-1-489" ext-link-type="DOI">10.7901/2169-3358-1971-1-489</ext-link>,
1971.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>Shchepetkin and McWilliams(2005)</label><mixed-citation>Shchepetkin, A. F. and McWilliams, J. C.: The regional oceanic modeling
system (ROMS): a split-explicit, free-surface,
topography-following-coordinate oceanic model, Ocean Model., 9, 347–404,
<ext-link xlink:href="https://doi.org/10.1016/j.ocemod.2004.08.002" ext-link-type="DOI">10.1016/j.ocemod.2004.08.002</ext-link>, 2005.</mixed-citation></ref>
      <ref id="bib1.bibx38"><label>Simpson et al.(2012)</label><mixed-citation>Simpson, D., Benedictow, A., Berge, H., Bergström, R., Emberson, L. D.,
Fagerli, H., Flechard, C. R., Hayman, G. D., Gauss, M., Jonson, J. E.,
Jenkin, M. E., Nyíri, A., Richter, C., Semeena, V. S., Tsyro, S.,
Tuovinen, J.-P., Valdebenito, Á.,<?pagebreak page1420?> and Wind, P.: The EMEP MSC-W chemical
transport model – technical description, Atmos. Chem. Phys., 12, 7825–7865,
<ext-link xlink:href="https://doi.org/10.5194/acp-12-7825-2012" ext-link-type="DOI">10.5194/acp-12-7825-2012</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx39"><label>Sørgård and Vada(2011)</label><mixed-citation>
Sørgård, E. and Vada, T.: Observations and modelling of drifting
ships, DnV, Report 96-2011, Tech. rep., 64 pp., 2011.</mixed-citation></ref>
      <ref id="bib1.bibx40"><label>Sprenger and Wernli(2015)</label><mixed-citation>Sprenger, M. and Wernli, H.: The LAGRANTO Lagrangian analysis tool – version
2.0, Geosci. Model Dev., 8, 2569–2586, <ext-link xlink:href="https://doi.org/10.5194/gmd-8-2569-2015" ext-link-type="DOI">10.5194/gmd-8-2569-2015</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx41"><label>Stein et al.(2015)</label><mixed-citation>Stein, A. F., Draxler, R. R., Rolph, G. D., Stunder, B. J. B., Cohen, M. D.,
Ngan, F., Stein, A. F., Draxler, R. R., Rolph, G. D., Stunder, B. J. B.,
Cohen, M. D., and Ngan, F.: NOAA's HYSPLIT Atmospheric Transport and
Dispersion Modeling System, B. Am. Meteorol. Soc., 96, 2059–2077,
<ext-link xlink:href="https://doi.org/10.1175/BAMS-D-14-00110.1" ext-link-type="DOI">10.1175/BAMS-D-14-00110.1</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx42"><label>Stohl et al.(1995)</label><mixed-citation>Stohl, A., Wotawa, G., Seibert, P., Kromp-Kolb, H., Stohl, A., Wotawa, G.,
Seibert, P., and Kromp-Kolb, H.: Interpolation Errors in Wind Fields as a
Function of Spatial and Temporal Resolution and Their Impact on Different
Types of Kinematic Trajectories, J. Applied Meteorol., 34, 2149–2165,
<ext-link xlink:href="https://doi.org/10.1175/1520-0450(1995)034&lt;2149:IEIWFA&gt;2.0.CO;2" ext-link-type="DOI">10.1175/1520-0450(1995)034&lt;2149:IEIWFA&gt;2.0.CO;2</ext-link>,
1995.</mixed-citation></ref>
      <ref id="bib1.bibx43"><label>Sundby(1983)</label><mixed-citation>Sundby, S.: A one-dimensional model for the vertical distribution of pelagic
fish eggs in the mixed layer, Deep-Sea Res. Pt. A, 30, 645–661,
<ext-link xlink:href="https://doi.org/10.1016/0198-0149(83)90042-0" ext-link-type="DOI">10.1016/0198-0149(83)90042-0</ext-link>, 1983.</mixed-citation></ref>
      <ref id="bib1.bibx44"><label>Sundby et al.(2017)</label><mixed-citation>Sundby, S., Kristiansen, T., Nash, R., and Johannessen, T.: Dynamic Mapping
of North Sea Spawning – Report of the KINO Project, Fisken og Havet,
Intitute of Marine Research, Norway, Bergen, Tech. rep. 2-2017, 195 pp.,
available at:
<uri>http://www.imr.no/filarkiv/2017/02/fogh_nr_2-2017_kino_report_ss.pdf_1/nb-no</uri>
(last access: 9 April 2018), 2017.</mixed-citation></ref>
      <ref id="bib1.bibx45"><label>Thygesen and Ådlandsvik(2007)</label><mixed-citation>Thygesen, U. and Ådlandsvik, B.: Simulating vertical turbulent dispersal
with finite volumes and binned random walks, Mar. Ecol. Prog. Ser., 347,
145–153, <ext-link xlink:href="https://doi.org/10.3354/meps06975" ext-link-type="DOI">10.3354/meps06975</ext-link>, 2007.
</mixed-citation></ref><?xmltex \hack{\newpage}?>
      <ref id="bib1.bibx46"><label>Tkalich and Chan(2002)</label><mixed-citation>Tkalich, P. and Chan, E. S.: Vertical mixing of oil droplets by breaking
waves, Mar. Pollut. Bull., 44, 1219–1229,
<ext-link xlink:href="https://doi.org/10.1016/S0025-326X(02)00178-9" ext-link-type="DOI">10.1016/S0025-326X(02)00178-9</ext-link>, 2002.</mixed-citation></ref>
      <ref id="bib1.bibx47"><label>van Sebille et al.(2012)</label><mixed-citation>van Sebille, E., England, M. H., and Froyland, G.: Origin, dynamics and
evolution of ocean garbage patches from observed surface drifters, Environ.
Res. Lett., 7, 044040, <ext-link xlink:href="https://doi.org/10.1088/1748-9326/7/4/044040" ext-link-type="DOI">10.1088/1748-9326/7/4/044040</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx48"><label>van Sebille et al.(2015)</label><mixed-citation>van Sebille, E., Wilcox, C., Lebreton, L., Maximenko, N., Hardesty, B. D.,
van Franeker, J. A., Eriksen, M., Siegel, D., Galgani, F., and Law, K. L.: A
global inventory of small floating plastic debris, Environ. Res. Lett., 10,
124006, <ext-link xlink:href="https://doi.org/10.1088/1748-9326/10/12/124006" ext-link-type="DOI">10.1088/1748-9326/10/12/124006</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx49"><label>Visser(1997)</label><mixed-citation>Visser, A.: Using random walk models to simulate the vertical distribution
of particles in a turbulent water column, Mar. Ecol. Prog. Ser., 158,
275–281, <ext-link xlink:href="https://doi.org/10.3354/meps158275" ext-link-type="DOI">10.3354/meps158275</ext-link>, 1997.</mixed-citation></ref>
      <ref id="bib1.bibx50"><label>Wernli and Davies(1997)</label><mixed-citation>Wernli, B. H. and Davies, H. C.: A lagrangian-based analysis of
extratropical cyclones. I: The method and some applications, Q. J. Roy.
Meteor. Soc., 123, 467–489, <ext-link xlink:href="https://doi.org/10.1002/qj.49712353811" ext-link-type="DOI">10.1002/qj.49712353811</ext-link>, 1997.</mixed-citation></ref>
      <ref id="bib1.bibx51"><label>Wessel and Smith(1996)</label><mixed-citation>Wessel, P. and Smith, W. H. F.: A global, self-consistent, hierarchical,
high-resolution shoreline database, J. Geophys. Res., 101, 8741–8743,
<ext-link xlink:href="https://doi.org/10.1029/96JB00104" ext-link-type="DOI">10.1029/96JB00104</ext-link>, 1996.</mixed-citation></ref>
      <ref id="bib1.bibx52"><label>Wettre et al.(2001)</label><mixed-citation>
Wettre, C., Johansen, Ø., and Skognes, K.: Development of a 3-dimensional
oild drift model at dnmi, Norwegian Meteorological Institute, Oslo, Norway,
Research Report 133, 50 pp., 2001.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>OpenDrift v1.0: a generic framework for trajectory modelling</article-title-html>
<abstract-html><p>OpenDrift is an open-source Python-based framework for Lagrangian particle
modelling under development at the Norwegian Meteorological Institute with
contributions from the wider scientific community. The framework is highly
generic and modular, and is designed to be used for any type of drift
calculations in the ocean or atmosphere. A specific module within the
OpenDrift framework corresponds to a Lagrangian particle model in the
traditional sense. A number of modules have already been developed, including
an oil drift module, a stochastic search-and-rescue module, a pelagic egg
module, and a basic module for atmospheric drift. The framework allows for
the ingestion of an unspecified number of forcing fields (scalar and
vectorial) from various sources, including Eulerian ocean, atmosphere and
wave models, but also measurements or a priori values for the same variables.
A basic backtracking mechanism is inherent, using sign reversal of the total
displacement vector and negative time stepping. OpenDrift is fast and simple
to set up and use on Linux, Mac and Windows environments, and can be used
with minimal or no Python experience. It is designed for flexibility, and
researchers may easily adapt or write modules for their specific purpose.
OpenDrift is also designed for performance, and simulations with millions of
particles may be performed on a laptop. Further, OpenDrift is designed for
robustness and is in daily operational use for emergency preparedness
modelling (oil drift, search and rescue, and drifting ships) at the Norwegian
Meteorological Institute.</p></abstract-html>
<ref-html id="bib1.bib1"><label>Ådlandsvik and Sundby(1994)</label><mixed-citation>
Ådlandsvik, B. and Sundby, S.: Modelling the transport of cod larvae
from the Lofoten area, ICES J. Mar. Sci. Symp., 198, 379–392, available at:
<a href="https://www.scienceopen.com/document?vid=53b16ebf-bddc-4332-8719-1bb180e1cdaa" target="_blank">https://www.scienceopen.com/document?vid=53b16ebf-bddc-4332-8719-1bb180e1cdaa</a>
(last access: 9 April 2018), 1994.
</mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Allen and Plourde(1999)</label><mixed-citation>
Allen, A. and Plourde, J. V.: Review of Leeway: Field Experiments and
Implementation, US Coast Guard Research and Development Center, 1082
Shennecossett Road, Groton, CT, USA, Tech. Rep. CG-D-08-99, available
through: <a href="http://www.ntis.gov" target="_blank">http://www.ntis.gov</a> (last access: 9 April 2018), 1999.
</mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Bartnicki et al.(2016)</label><mixed-citation>
Bartnicki, J., Amundsen, I., Brown, J., Hosseini, A., Hov, O., Haakenstad,
H., Klein, H., Lind, O. C., Salbu, B., Szacinski Wendel, C. C., and
Ytre-Eide, M. A.: Atmospheric transport of radioactive debris to Norway in
case of a hypothetical accident related to the recovery of the Russian
submarine K-27, J. Environ. Radioactiv., 151, 404–416,
<a href="https://doi.org/10.1016/j.jenvrad.2015.02.025" target="_blank">https://doi.org/10.1016/j.jenvrad.2015.02.025</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Berry et al.(2012)</label><mixed-citation>
Berry, A., Dabrowski, T., and Lyons, K.: The oil spill model OILTRANS and
its application to the Celtic Sea, Mar. Pollut. Bull., 64, 2489–2501,
<a href="https://doi.org/10.1016/j.marpolbul.2012.07.036" target="_blank">https://doi.org/10.1016/j.marpolbul.2012.07.036</a>, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Blanke et al.(1997)</label><mixed-citation>
Blanke, B., Raynaud, S., Blanke, B., and Raynaud, S.: Kinematics of the
Pacific Equatorial Undercurrent: An Eulerian and Lagrangian Approach from GCM
Results, J. Phys. Oceanogr., 27, 1038–1053,
<a href="https://doi.org/10.1175/1520-0485(1997)027&lt;1038:KOTPEU&gt;2.0.CO;2" target="_blank">https://doi.org/10.1175/1520-0485(1997)027&lt;1038:KOTPEU&gt;2.0.CO;2</a>,
1997.
</mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Breivik and Allen(2008)</label><mixed-citation>
Breivik, Ø. and Allen, A. A.: An operational search and rescue model for
the Norwegian Sea and the North Sea, J. Marine Syst., 69, 99–113,
<a href="https://doi.org/10.1016/j.jmarsys.2007.02.010" target="_blank">https://doi.org/10.1016/j.jmarsys.2007.02.010</a>, 2008.
</mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Breivik et al.(2011)</label><mixed-citation>
Breivik, Ø., Allen, A. A., Maisondieu, C., and Roth, J. C.: Wind-induced
drift of objects at sea: The leeway field method, Appl. Ocean Res., 33,
100–109, <a href="https://doi.org/10.1016/j.apor.2011.01.005" target="_blank">https://doi.org/10.1016/j.apor.2011.01.005</a>, 2011.
</mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Breivik et al.(2012a)</label><mixed-citation>
Breivik, Ø., Allen, A., Maisondieu, C., Roth, J.-C., and Forest, B.: The
Leeway of Shipping Containers at Different Immersion Levels, Ocean Dynam.,
62, 741–752, <a href="https://doi.org/10.1007/s10236-012-0522-z" target="_blank">https://doi.org/10.1007/s10236-012-0522-z</a>, 2012a.
</mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Breivik et al.(2012b)</label><mixed-citation>
Breivik, Ø., Bekkvik, T. C., Ommundsen, A., and Wettre, C.: BAKTRAK:
Backtracking drifting objects using an iterative algorithm with a forward
trajectory model, Ocean Dynam., 62, 239–252,
<a href="https://doi.org/10.1007/s10236-011-0496-2" target="_blank">https://doi.org/10.1007/s10236-011-0496-2</a>, 2012b.
</mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Breivik et al.(2013)</label><mixed-citation>
Breivik, Ø., Allen, A., Maisondieu, C., and Olagnon, M.: Advances in
Search and Rescue at Sea, Ocean Dynam., 63, 83–88,
<a href="https://doi.org/10.1007/s10236-012-0581-1" target="_blank">https://doi.org/10.1007/s10236-012-0581-1</a>, 2013.
</mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Breivik et al.(2014)</label><mixed-citation>
Breivik, Ø., Janssen, P., and Bidlot, J.: Approximate Stokes Drift
Profiles in Deep Water, J. Phys. Oceanogr., 44, 2433–2445,
<a href="https://doi.org/10.1175/JPO-D-14-0020.1" target="_blank">https://doi.org/10.1175/JPO-D-14-0020.1</a>, 2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Breivik et al.(2016)</label><mixed-citation>
Breivik, Ø., Bidlot, J.-R., and Janssen, P. A.: A Stokes drift
approximation based on the Phillips spectrum, Ocean Model., 100, 49–56,
<a href="https://doi.org/10.1016/j.ocemod.2016.01.005" target="_blank">https://doi.org/10.1016/j.ocemod.2016.01.005</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Brovchenko et al.(2003)</label><mixed-citation>
Brovchenko, I., Kuschan, A., Maderich, V., Shliakhtun, M., Yuschenko, S., and
Zheleznyak, M.: The modelling system for simulation of the oil spills in the
Black Sea, Elsev. Oceanogr. Serie., 69, 586–591,
<a href="https://doi.org/10.1016/S0422-9894(03)80095-8" target="_blank">https://doi.org/10.1016/S0422-9894(03)80095-8</a>, 2003.
</mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Dagestad and Röhrs(2018)</label><mixed-citation>
Dagestad, K.-F. and Röhrs, J.: Prediction of ocean surface trajectories
using satellite derived vs. modeled ocean currents, Remote Sens. Environ.,
submitted, 2018.
</mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>1</label><mixed-citation>
Dagestad, K.-F., Röhrs, J., Breivik, Ø., and Aadlandsvik, B.:
OpenDrift v1.0.3, <a href="https://doi.org/10.5281/zenodo.1175634" target="_blank">https://doi.org/10.5281/zenodo.1175634</a>, 2017.
</mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Daniel(1996)</label><mixed-citation>
Daniel, P.: Operational forecasting of oil spill drift at
Météo-France, Spill Sci. Technol. B., 3, 53–64,
<a href="https://doi.org/10.1016/S1353-2561(96)00030-8" target="_blank">https://doi.org/10.1016/S1353-2561(96)00030-8</a>, 1996.
</mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Davidson et al.(2009)</label><mixed-citation>
Davidson, F. J. M., Allen, A., Brassington, G. B., Breivik, Ø., Daniel,
P., Kamachi, M., Sato, S., King, B., Lefevre, F., Sutton, M., and Kaneko, H.:
Applications of GODAE ocean current forecasts to search and rescue and ship
routing, Oceanography, 22, 176–181, <a href="https://doi.org/10.5670/oceanog.2009.76" target="_blank">https://doi.org/10.5670/oceanog.2009.76</a>, 2009.
</mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>De Dominicis et al.(2013)</label><mixed-citation>
De Dominicis, M., Pinardi, N., Zodiatis, G., and Lardner, R.: MEDSLIK-II, a
Lagrangian marine surface oil spill model for short-term forecasting –
Part 1: Theory, Geosci. Model Dev., 6, 1851–1869,
<a href="https://doi.org/10.5194/gmd-6-1851-2013" target="_blank">https://doi.org/10.5194/gmd-6-1851-2013</a>, 2013.
</mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Delvigne and Sweeney(1989)</label><mixed-citation>
Delvigne, G. and Sweeney, C.: Natural Dispersion of Oil, Publication
No. 399, Delft Hydraulic Laboratory, Delft, The Netherlands, Tech. rep.,
399, 30 pp., 1989.
</mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Dick and Soetje(1990)</label><mixed-citation>
Dick, S. and Soetje, K. C.: An operational oil dispersion model for the
German Bight, Hydrographische Zeitschrift, 16, 43 pp., 1990.
</mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Döös et al.(2013)</label><mixed-citation>
Döös, K., Kjellsson, J., and Jönsson, B.: TRACMASS –
A Lagrangian Trajectory Model, in: Preventive Methods for Coastal Protection,
Springer International Publishing, Heidelberg, 225–249,
<a href="https://doi.org/10.1007/978-3-319-00440-2_7" target="_blank">https://doi.org/10.1007/978-3-319-00440-2_7</a>, 2013.
</mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Johansen et al.(2015)</label><mixed-citation>
Johansen, O., Reed, M., and Bodsberg, N. R.: Natural dispersion revisited,
Mar. Pollut. Bull., 93, 20–26, <a href="https://doi.org/10.1016/j.marpolbul.2015.02.026" target="_blank">https://doi.org/10.1016/j.marpolbul.2015.02.026</a>, 2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Jones et al.(2016)</label><mixed-citation>
Jones, C. E., Dagestad, K.-F., Breivik, O., Holt, B., Röhrs, J.,
Christensen, K. H., Espeseth, M., Brekke, C., and Skrunes, S.: Measurement
and modeling of oil slick transport, J. Geophys. Res.-Oceans, 121,
7759–7775, <a href="https://doi.org/10.1002/2016JC012113" target="_blank">https://doi.org/10.1002/2016JC012113</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Kenyon(1969)</label><mixed-citation>
Kenyon, K. E.: Stokes Drift for Random Gravity Waves, J. Geophys. Res., 74,
6991–6994, <a href="https://doi.org/10.1029/JC074i028p06991" target="_blank">https://doi.org/10.1029/JC074i028p06991</a>, 1969.
</mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Kratzke et al.(2010)</label><mixed-citation>
Kratzke, T. M., Stone, L. D., and Frost, J. R.: Search and Rescue Optimal
Planning System, in: Information Fusion (FUSION), 2010 13th Conference on,
26–29 July 2010, Edinburgh, UK, IEEE, 8 pp.,
<a href="https://doi.org/10.1109/ICIF.2010.5712114" target="_blank">https://doi.org/10.1109/ICIF.2010.5712114</a>, 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Kubat et al.(2007)</label><mixed-citation>
Kubat, I., Sayed, M., Savage, S. B., Carrieres, T., and Crocker, G.: An
Operational Iceberg Deterioration Model, in: The Seventeenth International
Offshore and Polar Engineering Conference, 1–6 July, Lisbon, Portugal,
International Society of Offshore and Polar Engineers, available at:
<a href="https://www.onepetro.org/conference-paper/ISOPE-I-07-282" target="_blank">https://www.onepetro.org/conference-paper/ISOPE-I-07-282</a> (last access:
9 April 2018), 2007.
</mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Kvile et al.(2018)</label><mixed-citation>
Kvile, K., Romagnoni, G., Dagestad, K.-F., Langangen, Ø. and Kristiansen,
T.: Sensitivity of modelled North Sea cod larvae transport to vertical
behaviour, ocean model resolution and interannual variation in ocean
dynamics, ICES Journal of Marine Science, in press, 2018.
</mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Lardner et al.(1998)</label><mixed-citation>
Lardner, R., Zodiatis, G., Loizides, L., and Demetropoulos, A.: An
operational oil spill model for the Levantine Basin (Eastern Mediterranean
Sea), International symposium on marine pollution, Monaco, Monaco,
5–9 October 1998, 30, 511–512, 1998.
</mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Lehr et al.(2002)</label><mixed-citation>
Lehr, W., Jones, R., Evans, M., Simecek-Beatty, D., and Overstreet, R.:
Revisions of the ADIOS oil spill model, Environ. Modell. Softw., 17,
189–197, <a href="https://doi.org/10.1016/S1364-8152(01)00064-0" target="_blank">https://doi.org/10.1016/S1364-8152(01)00064-0</a>, 2002.
</mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Li et al.(2017)</label><mixed-citation>
Li, Z., Spaulding, M. L., and French-McCay, D.: An algorithm for modeling
entrainment and naturally and chemically dispersed oil droplet size
distribution under surface breaking wave conditions, Mar. Pollut. Bull.,
119, 145–152, <a href="https://doi.org/10.1016/j.marpolbul.2017.03.048" target="_blank">https://doi.org/10.1016/j.marpolbul.2017.03.048</a>, 2017.
</mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Margvelashvily et al.(1997)</label><mixed-citation>
Margvelashvily, N., Maderich, V., and Zheleznyak, M.: THREETOX – A Computer
Code to Simulate Three-Dimensional Dispersion of Radionuclides in Stratified
Water Bodies, Radiat. Prot. Dosim., 73, 177–180, 1997.
</mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>McKenna et al.(2002)</label><mixed-citation>
McKenna, D. S., Konopka, P., Grooß, J., Günther, G., Müller,
R., Spang, R., Offermann, D., and Orsolini, Y.: A new Chemical Lagrangian
Model of the Stratosphere (CLaMS) 1. Formulation of advection and mixing,
J. Geophys. Res., 107, 4309, <a href="https://doi.org/10.1029/2000JD000114" target="_blank">https://doi.org/10.1029/2000JD000114</a>, 2002.
</mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Paris et al.(2013)</label><mixed-citation>
Paris, C. B., Helgers, J., van Sebille, E., and Srinivasan, A.: Connectivity
Modeling System: A probabilistic modeling tool for the multi-scale tracking
of biotic and abiotic variability in the ocean, Environ. Modell. Softw., 42,
47–54, <a href="https://doi.org/10.1016/J.ENVSOFT.2012.12.006" target="_blank">https://doi.org/10.1016/J.ENVSOFT.2012.12.006</a>, 2013.
</mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Röhrs et al.(2014)</label><mixed-citation>
Röhrs, J., Christensen, K. H., Vikebø, F., Sundby, S., Sætra,
Ø., and Broström, G.: Wave-induced transport and vertical mixing of
pelagic eggs and larvae, Limnol. Oceanogr., 59, 1213–1227,
<a href="https://doi.org/10.4319/lo.2014.59.4.1213" target="_blank">https://doi.org/10.4319/lo.2014.59.4.1213</a>, 2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Schemm et al.(2017)</label><mixed-citation>
Schemm, S., Nummelin, A., Kvamstø, N. G., and Breivik, O.: The Ocean
Version of the Lagrangian Analysis Tool LAGRANTO, J. Atmos. Ocean. Tech.,
34, 1723–1741, <a href="https://doi.org/10.1175/JTECH-D-16-0198.1" target="_blank">https://doi.org/10.1175/JTECH-D-16-0198.1</a>, 2017.
</mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Schlag and North(2012)</label><mixed-citation>
Schlag, Z. R. and North, E. W.: Lagrangian TRANSport model (LTRANS v.2)
User's Guide, University of Maryland Center for Environmental Science, Horn
Point Laboratory, Cambridge, MD, USA, Tech. rep., 183 pp., 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Schwartzberg(1971)</label><mixed-citation>
Schwartzberg, H. G.: THE MOVEMENT OF OIL SPILLS, International Oil Spill
Conference Proceedings, 1971, 489–494, <a href="https://doi.org/10.7901/2169-3358-1971-1-489" target="_blank">https://doi.org/10.7901/2169-3358-1971-1-489</a>,
1971.
</mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>Shchepetkin and McWilliams(2005)</label><mixed-citation>
Shchepetkin, A. F. and McWilliams, J. C.: The regional oceanic modeling
system (ROMS): a split-explicit, free-surface,
topography-following-coordinate oceanic model, Ocean Model., 9, 347–404,
<a href="https://doi.org/10.1016/j.ocemod.2004.08.002" target="_blank">https://doi.org/10.1016/j.ocemod.2004.08.002</a>, 2005.
</mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>Simpson et al.(2012)</label><mixed-citation>
Simpson, D., Benedictow, A., Berge, H., Bergström, R., Emberson, L. D.,
Fagerli, H., Flechard, C. R., Hayman, G. D., Gauss, M., Jonson, J. E.,
Jenkin, M. E., Nyíri, A., Richter, C., Semeena, V. S., Tsyro, S.,
Tuovinen, J.-P., Valdebenito, Á., and Wind, P.: The EMEP MSC-W chemical
transport model – technical description, Atmos. Chem. Phys., 12, 7825–7865,
<a href="https://doi.org/10.5194/acp-12-7825-2012" target="_blank">https://doi.org/10.5194/acp-12-7825-2012</a>, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>Sørgård and Vada(2011)</label><mixed-citation>
Sørgård, E. and Vada, T.: Observations and modelling of drifting
ships, DnV, Report 96-2011, Tech. rep., 64 pp., 2011.
</mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Sprenger and Wernli(2015)</label><mixed-citation>
Sprenger, M. and Wernli, H.: The LAGRANTO Lagrangian analysis tool – version
2.0, Geosci. Model Dev., 8, 2569–2586, <a href="https://doi.org/10.5194/gmd-8-2569-2015" target="_blank">https://doi.org/10.5194/gmd-8-2569-2015</a>, 2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Stein et al.(2015)</label><mixed-citation>
Stein, A. F., Draxler, R. R., Rolph, G. D., Stunder, B. J. B., Cohen, M. D.,
Ngan, F., Stein, A. F., Draxler, R. R., Rolph, G. D., Stunder, B. J. B.,
Cohen, M. D., and Ngan, F.: NOAA's HYSPLIT Atmospheric Transport and
Dispersion Modeling System, B. Am. Meteorol. Soc., 96, 2059–2077,
<a href="https://doi.org/10.1175/BAMS-D-14-00110.1" target="_blank">https://doi.org/10.1175/BAMS-D-14-00110.1</a>, 2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Stohl et al.(1995)</label><mixed-citation>
Stohl, A., Wotawa, G., Seibert, P., Kromp-Kolb, H., Stohl, A., Wotawa, G.,
Seibert, P., and Kromp-Kolb, H.: Interpolation Errors in Wind Fields as a
Function of Spatial and Temporal Resolution and Their Impact on Different
Types of Kinematic Trajectories, J. Applied Meteorol., 34, 2149–2165,
<a href="https://doi.org/10.1175/1520-0450(1995)034&lt;2149:IEIWFA&gt;2.0.CO;2" target="_blank">https://doi.org/10.1175/1520-0450(1995)034&lt;2149:IEIWFA&gt;2.0.CO;2</a>,
1995.
</mixed-citation></ref-html>
<ref-html id="bib1.bib44"><label>Sundby(1983)</label><mixed-citation>
Sundby, S.: A one-dimensional model for the vertical distribution of pelagic
fish eggs in the mixed layer, Deep-Sea Res. Pt. A, 30, 645–661,
<a href="https://doi.org/10.1016/0198-0149(83)90042-0" target="_blank">https://doi.org/10.1016/0198-0149(83)90042-0</a>, 1983.
</mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Sundby et al.(2017)</label><mixed-citation>
Sundby, S., Kristiansen, T., Nash, R., and Johannessen, T.: Dynamic Mapping
of North Sea Spawning – Report of the KINO Project, Fisken og Havet,
Intitute of Marine Research, Norway, Bergen, Tech. rep. 2-2017, 195 pp.,
available at:
<a href="http://www.imr.no/filarkiv/2017/02/fogh_nr_2-2017_kino_report_ss.pdf_1/nb-no" target="_blank">http://www.imr.no/filarkiv/2017/02/fogh_nr_2-2017_kino_report_ss.pdf_1/nb-no</a>
(last access: 9 April 2018), 2017.
</mixed-citation></ref-html>
<ref-html id="bib1.bib46"><label>Thygesen and Ådlandsvik(2007)</label><mixed-citation>
Thygesen, U. and Ådlandsvik, B.: Simulating vertical turbulent dispersal
with finite volumes and binned random walks, Mar. Ecol. Prog. Ser., 347,
145–153, <a href="https://doi.org/10.3354/meps06975" target="_blank">https://doi.org/10.3354/meps06975</a>, 2007.

</mixed-citation></ref-html>
<ref-html id="bib1.bib47"><label>Tkalich and Chan(2002)</label><mixed-citation>
Tkalich, P. and Chan, E. S.: Vertical mixing of oil droplets by breaking
waves, Mar. Pollut. Bull., 44, 1219–1229,
<a href="https://doi.org/10.1016/S0025-326X(02)00178-9" target="_blank">https://doi.org/10.1016/S0025-326X(02)00178-9</a>, 2002.
</mixed-citation></ref-html>
<ref-html id="bib1.bib48"><label>van Sebille et al.(2012)</label><mixed-citation>
van Sebille, E., England, M. H., and Froyland, G.: Origin, dynamics and
evolution of ocean garbage patches from observed surface drifters, Environ.
Res. Lett., 7, 044040, <a href="https://doi.org/10.1088/1748-9326/7/4/044040" target="_blank">https://doi.org/10.1088/1748-9326/7/4/044040</a>, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib49"><label>van Sebille et al.(2015)</label><mixed-citation>
van Sebille, E., Wilcox, C., Lebreton, L., Maximenko, N., Hardesty, B. D.,
van Franeker, J. A., Eriksen, M., Siegel, D., Galgani, F., and Law, K. L.: A
global inventory of small floating plastic debris, Environ. Res. Lett., 10,
124006, <a href="https://doi.org/10.1088/1748-9326/10/12/124006" target="_blank">https://doi.org/10.1088/1748-9326/10/12/124006</a>, 2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib50"><label>Visser(1997)</label><mixed-citation>
Visser, A.: Using random walk models to simulate the vertical distribution
of particles in a turbulent water column, Mar. Ecol. Prog. Ser., 158,
275–281, <a href="https://doi.org/10.3354/meps158275" target="_blank">https://doi.org/10.3354/meps158275</a>, 1997.
</mixed-citation></ref-html>
<ref-html id="bib1.bib51"><label>Wernli and Davies(1997)</label><mixed-citation>
Wernli, B. H. and Davies, H. C.: A lagrangian-based analysis of
extratropical cyclones. I: The method and some applications, Q. J. Roy.
Meteor. Soc., 123, 467–489, <a href="https://doi.org/10.1002/qj.49712353811" target="_blank">https://doi.org/10.1002/qj.49712353811</a>, 1997.
</mixed-citation></ref-html>
<ref-html id="bib1.bib52"><label>Wessel and Smith(1996)</label><mixed-citation>
Wessel, P. and Smith, W. H. F.: A global, self-consistent, hierarchical,
high-resolution shoreline database, J. Geophys. Res., 101, 8741–8743,
<a href="https://doi.org/10.1029/96JB00104" target="_blank">https://doi.org/10.1029/96JB00104</a>, 1996.
</mixed-citation></ref-html>
<ref-html id="bib1.bib53"><label>Wettre et al.(2001)</label><mixed-citation>
Wettre, C., Johansen, Ø., and Skognes, K.: Development of a 3-dimensional
oild drift model at dnmi, Norwegian Meteorological Institute, Oslo, Norway,
Research Report 133, 50 pp., 2001.
</mixed-citation></ref-html>--></article>
