  As Ocean General Circulation Models (OGCMs) move into the petascale age,
where the output from global high-resolution model runs can be of the order of
hundreds of terabytes in size, tools to analyse the output of these models will
need to scale up too. Lagrangian Ocean Analysis, where virtual particles are
tracked through hydrodynamic fields, is an increasingly popular way to analyse
OGCM output, by mapping pathways and connectivity of biotic and abiotic
particulates. However, the current software stack of Lagrangian Ocean Analysis
codes is not dynamic enough to cope with the increasing complexity, scale and
need for customisation of use-cases. Furthermore, most community codes are
developed for stand-alone use, making it a nontrivial task to integrate virtual
particles at runtime of the OGCM. Here, we introduce the new Parcels code,
which was designed from the ground up to be sufficiently scalable to cope with
petascale computing. We highlight its API design that combines flexibility and
customisation with the ability to optimise for HPC workflows, following the
paradigm of domain-specific languages. Parcels is primarily written in Python,
utilising the wide range of tools available in the scientific Python ecosystem,
while generating low-level C-code and using Just-In-Time compilation for
performance-critical computation. We show a worked-out example of its API, and
validate the accuracy of the code against seven idealised test cases. This
version~0.9 of Parcels is focussed on laying out the API, with future work
concentrating on optimisation, efficiency and at-runtime coupling with OGCMs.
