Skip to main content
zenodoopen

Particle tracking dataset for: Exceptional 20th century ocean circulation in the Northeast Atlantic

<p>Particle tracking data for: &quot;Exceptional 20th century ocean circulation in the Northeast Atlantic&quot; Peter T. Spooner, David J. R. Thornalley, Delia W. Oppo, Alan Fox, Svetlana Radionovskaya, Neil L. Rose, Robbie Mallett, Emma Cooper, J. Murray Roberts</p> <p>VIKING20 (is a 1/20th degree ocean model, forced by a hindcast simulation of the atmosphere: CORE2 (Griffies et al., 2009). The reverse tracks of 113200 particles per year for 50 years, (1959-2009) were simulated with the ARIANE software (D&ouml;&ouml;s, 1995) modified to include independent vertical motion of particles. Particles were seeded at the seabed in 10 km x 10 km boxes centered on MC16-A/17-5P and RAPID-21-3K (representing the settling location). The reverse tracks &#39;rose&#39; (sinking) at 100 m/day (Takahashi &amp; Be, 1984) and were then allowed to drift freely within the upper 100 m of the water column for six months (i.e. spanning the reasonable lifespan for many species of planktic foraminifera).</p> <p>Track data for the full 50 years are stored in a single netcdf file (output of ncdump -h &lt;filename&gt; given below). The 3D particle positions are in variables traj_lon, traj_lat and traj_depth with the Viking20 model along-track temperature, salinity and density in traj_temp, temp_sal and traj_dens, respectively. The main complication is the obscure storage of time (see also ARIANE software documentation). Variable init_t gives particle start time, counting in 5-day periods from 12:00 pm on 29 December 1957. Viking20 uses a fixed 365 day year so the year can be found for track &#39;traj&#39; according to:</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; year&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp;&nbsp; 1958 + ( (init_t(traj)-1) \ 73 )&nbsp;&nbsp;&nbsp;&nbsp; where &#39;\&#39; represents integer division, discarding the remainder.</p> <p>All particle tracks &#39;begin&#39; (actually the end of the track in time as these are tracked backwards) at the start of July (12:00 pm July 1 in model). Particles are ordered by release time, so trajectories 1-113200 are 1959; 113201-226400 are 1960; etc. Positions are stored every 5 days, counting backwards.</p> <p>Further details are available from the authors.</p> <p>&nbsp;</p> <p>References</p> <p>D&ouml;&ouml;s, K. (1995). Interocean exchange of water masses. Journal of Geophysical Research, 100(C7), 13499. <a href="https://doi.org/10.1029/95JC00337">https://doi.org/10.1029/95JC00337</a></p> <p>Griffies, S. M., Biastoch, A., B&ouml;ning, C., Bryan, F., Danabasoglu, G., Chassignet, E. P., et al. (2009). Coordinated Ocean-ice Reference Experiments (COREs). Ocean Modelling, 26(1&ndash;2), 1&ndash;46. <a href="https://doi.org/10.1016/J.OCEMOD.2008.08.007">https://doi.org/10.1016/J.OCEMOD.2008.08.007</a></p> <p>Takahashi, K., &amp; Be, A. W. H. (1984). Planktonic foraminifera: factors controlling sinking speeds. Deep Sea Research Part A. Oceanographic Research Papers, 31(12), 1477&ndash;1500. <a href="https://doi.org/10.1016/0198-0149(84)90083-9">https://doi.org/10.1016/0198-0149(84)90083-9</a></p> <p>&nbsp;</p> <p>$ ncdump -h ariane_trajectories_qualitative.nc</p> <p>netcdf ariane_trajectories_qualitative {</p> <p>dimensions:</p> <p>ntraj = 5660000 ;</p> <p>nb_output = UNLIMITED ; // (74 currently)</p> <p>variables:</p> <p><strong>double init_x(ntraj) ;</strong></p> <p>init_x:title = &quot;What is init_x ?&quot; ;</p> <p>init_x:longname = &quot;Initial position in i&quot; ;</p> <p>init_x:units = &quot;No dimension&quot; ;</p> <p>init_x:missing_value = 1.e+20 ;</p> <p><strong>double init_y(ntraj) ;</strong></p> <p>init_y:title = &quot;What is init_y ?&quot; ;</p> <p>init_y:longname = &quot;Initial position in j&quot; ;</p> <p>init_y:units = &quot;No dimension&quot; ;</p> <p>init_y:missing_value = 1.e+20 ;</p> <p><strong>double init_z(ntraj) ;</strong></p> <p>init_z:title = &quot;What is init_z ?&quot; ;</p> <p>init_z:longname = &quot;Initial position in k&quot; ;</p> <p>init_z:units = &quot;No dimension&quot; ;</p> <p>init_z:missing_value = 1.e+20 ;</p> <p><strong>double init_t(ntraj) ;</strong></p> <p>init_t:title = &quot;What is init_t ?&quot; ;</p> <p>init_t:longname = &quot;Initial position in l (time)&quot; ;</p> <p>init_t:units = &quot;See global attributes...&quot; ;</p> <p>init_t:missing_value = 1.e+20 ;</p> <p><strong>double init_age(ntraj) ;</strong></p> <p>init_age:title = &quot;What is init_age ?&quot; ;</p> <p>init_age:longname = &quot;Initial age (time)&quot; ;</p> <p>init_age:units = &quot;seconds&quot; ;</p> <p>init_age:missing_value = 1.e+20 ;</p> <p><strong>double init_transp(ntraj) ;</strong></p> <p>init_transp:title = &quot;What is init_transp ?&quot; ;</p> <p>init_transp:longname = &quot;Initial transport&quot; ;</p> <p>init_transp:units = &quot;m3/s&quot; ;</p> <p>init_transp:missing_value = 1.e+20 ;</p> <p><strong>double l_matureage(ntraj) ;</strong></p> <p>l_matureage:title = &quot;What is l_matureage ?&quot; ;</p> <p>l_matureage:longname = &quot;Larval age of maturity&quot; ;</p> <p>l_matureage:units = &quot;days&quot; ;</p> <p>l_matureage:missing_value = 1.e+20 ;</p> <p><strong>double l_descendage(ntraj) ;</strong></p> <p>l_descendage:title = &quot;What is l_descendage ?&quot; ;</p> <p>l_descendage:longname = &quot;Larval age of competency&quot; ;</p> <p>l_descendage:units = &quot;days&quot; ;</p> <p>l_descendage:missing_value = 1.e+20 ;</p> <p><strong>double l_maxspeedup(ntraj) ;</strong></p> <p>l_maxspeedup:title = &quot;What is l_maxspeedup ?&quot; ;</p> <p>l_maxspeedup:longname = &quot;Max upward larval swim speed&quot; ;</p> <p>l_maxspeedup:units = &quot;mm s-1&quot; ;</p> <p>l_maxspeedup:missing_value = 1.e+20 ;</p> <p><strong>double l_maxspeeddown(ntraj) ;</strong></p> <p>l_maxspeeddown:title = &quot;What is l_maxspeeddown ?&quot; ;</p> <p>l_maxspeeddown:longname = &quot;Max downward larval swim speed&quot; ;</p> <p>l_maxspeeddown:units = &quot;mm s-1&quot; ;</p> <p>l_maxspeeddown:missing_value = 1.e+20 ;</p> <p><strong>int l_targetdepth(ntraj) ;</strong></p> <p>l_targetdepth:title = &quot;What is l_targetdepth ?&quot; ;</p> <p>l_targetdepth:longname = &quot;Target shallow depth&quot; ;</p> <p>l_targetdepth:units = &quot;No dimension&quot; ;</p> <p>l_targetdepth:missing_value = -1. ;</p> <p><strong>double final_x(ntraj) ;</strong></p> <p>final_x:title = &quot;What is final_x ?&quot; ;</p> <p>final_x:longname = &quot;Final position in x (or i)&quot; ;</p> <p>final_x:units = &quot;No dimension&quot; ;</p> <p>final_x:missing_value = 1.e+20 ;</p> <p><strong>double final_y(ntraj) ;</strong></p> <p>final_y:title = &quot;What is final_y ?&quot; ;</p> <p>final_y:longname = &quot;Final position in y (or j)&quot; ;</p> <p>final_y:units = &quot;No dimension&quot; ;</p> <p>final_y:missing_value = 1.e+20 ;</p> <p><strong>double final_z(ntraj) </strong>;</p> <p>final_z:title = &quot;What is final_z ?&quot; ;</p> <p>final_z:longname = &quot;Final position in z (or k)&quot; ;</p> <p>final_z:units = &quot;No dimension&quot; ;</p> <p>final_z:missing_value = 1.e+20 ;</p> <p><strong>double final_t(ntraj) ;</strong></p> <p>final_t:title = &quot;What is final_t ?&quot; ;</p> <p>final_t:longname = &quot;Final position in t (time)&quot; ;</p> <p>final_t:units = &quot;See global attributes...&quot; ;</p> <p>final_t:missing_value = 1.e+20 ;</p> <p><strong>double final_age(ntraj) ;</strong></p> <p>final_age:title = &quot;What is fial_age ?&quot; ;</p> <p>final_age:longname = &quot;Final Age.&quot; ;</p> <p>final_age:units = &quot;seconds&quot; ;</p> <p>final_age:missing_value = 1.e+20 ;</p> <p><strong>double final_transp(ntraj) ;</strong></p> <p>final_transp:title = &quot;What is final_transp ?&quot; ;</p> <p>final_transp:longname = &quot;Final transport&quot; ;</p> <p>final_transp:units = &quot;m3/s&quot; ;</p> <p>final_transp:missing_value = 1.e+20 ;</p> <p><strong>float traj_lon(nb_output, ntraj) ;</strong></p> <p>traj_lon:title = &quot;What is traj_lon ?&quot; ;</p> <p>traj_lon:longname = &quot;Trajectory: x positions&quot; ;</p> <p>traj_lon:units = &quot;No dimension&quot; ;</p> <p>traj_lon:missing_value = 1.e+20 ;</p> <p><strong>float traj_lat(nb_output, ntraj) ;</strong></p> <p>traj_lat:title = &quot;What is traj_lat ?&quot; ;</p> <p>traj_lat:longname = &quot;Trajectory: y positions&quot; ;</p> <p>traj_lat:units = &quot;No dimension&quot; ;</p> <p>traj_lat:missing_value = 1.e+20 ;</p> <p><strong>float traj_depth(nb_output, ntraj) ;</strong></p> <p>traj_depth:title = &quot;What is traj_depth ?&quot; ;</p> <p>traj_depth:longname = &quot;Trajectory: z positions&quot; ;</p> <p>traj_depth:units = &quot;No dimension&quot; ;</p> <p>traj_depth:missing_value = 1.e+20 ;</p> <p><strong>float traj_time(nb_output, ntraj) ;</strong></p> <p>traj_time:title = &quot;What is traj_time ?&quot; ;</p> <p>traj_time:longname = &quot;Trajectory: time positions&quot; ;</p> <p>traj_time:units = &quot;See global attributes&quot; ;</p> <p>traj_time:missing_value = 1.e+20 ;</p> <p><strong>float traj_iU(nb_output, ntraj) ;</strong></p> <p>traj_iU:title = &quot;ind i on grid U&quot; ;</p> <p>traj_iU:longname = &quot;Trajectory: i on grid U&quot; ;</p> <p>traj_iU:units = &quot;No dimension&quot; ;</p> <p>traj_iU:missing_value = 1.e+20 ;</p> <p><strong>float traj_jV(nb_output, ntraj) ;</strong></p> <p>traj_jV:title = &quot;ind j on grid V&quot; ;</p> <p>traj_jV:longname = &quot;Trajectory: j on grid V&quot; ;</p> <p>traj_jV:units = &quot;No dimension&quot; ;</p> <p>traj_jV:missing_value = 1.e+20 ;</p> <p><strong>float traj_kW(nb_output, ntraj) ;</strong></p> <p>traj_kW:title = &quot;ind k on grid W&quot; ;</p> <p>traj_kW:longname = &quot;Trajectory: k on grid W&quot; ;</p> <p>traj_kW:units = &quot;No dimension&quot; ;</p> <p>traj_kW:missing_value = 1.e+20 ;</p> <p><strong>float traj_temp(nb_output, ntraj) ;</strong></p> <p>traj_temp:title = &quot;What is traj_temp ?&quot; ;</p> <p>traj_temp:longname = &quot;Trajectory: temperatures&quot; ;</p> <p>traj_temp:units = &quot;degres&quot; ;</p> <p>traj_temp:missing_value = 1.e+20 ;</p> <p><strong>float traj_salt(nb_output, ntraj) ;</strong></p> <p>traj_salt:title = &quot;What is traj_salt ?&quot; ;</p> <p>traj_salt:longname = &quot;Trajectory: salinities&quot; ;</p> <p>traj_salt:units = &quot;psu&quot; ;</p> <p>traj_salt:missing_value = 1.e+20 ;</p> <p><strong>float traj_dens(nb_output, ntraj) ;</strong></p> <p>traj_dens:title = &quot;What is traj_dens ?&quot; ;</p> <p>traj_dens:longname = &quot;Trajectory: densities&quot; ;</p> <p>traj_dens:units = &quot;...&quot; ;</p> <p>traj_dens:missing_value = 1.e+20 ;</p> <p>&nbsp;</p> <p>// global attributes:</p> <p>:key_roms = &quot;.FALSE.&quot; ;</p> <p>:key_symphonie = &quot;.FALSE.&quot; ;</p> <p>:key_B2C_grid = &quot;.FALSE.&quot; ;</p> <p>:key_sequential = &quot;.TRUE.&quot; ;</p> <p>:key_alltracers = &quot;.TRUE.&quot; ;</p> <p>:key_ascii_outputs = &quot;.FALSE.&quot; ;</p> <p>:key_iU_jV_kW = &quot;.TRUE.&quot; ;</p> <p>:key_read_age = &quot;.FALSE.&quot; ;</p> <p>:mode = &quot;qualitative&quot; ;</p> <p>:forback = &quot;backward&quot; ;</p> <p>:bin = &quot;nobin&quot; ;</p> <p>:init_final = &quot;NONE&quot; ;</p> <p>:nmax = 10000000 ;</p> <p>:tunit = 86400. ;</p> <p>:ntfic = 5 ;</p> <p>:tcyc = 1639872000. ;</p> <p>:key_approximatesigma = &quot;.FALSE.&quot; ;</p> <p>:key_computesigma = &quot;.TRUE.&quot; ;</p> <p>:zsigma = 1000. ;</p> <p>:memory_log = &quot;.TRUE.&quot; ;</p> <p>:output_netcdf_large_file = &quot;.FALSE.&quot; ;</p> <p>:key_interp_temporal = &quot;.TRUE.&quot; ;</p> <p>:maxcycles = 50 ;</p> <p>:delta_t = 86400. ;</p> <p>:frequency = 5 ;</p> <p>:nb_output = 73 ;</p> <p>:mask = &quot;.TRUE.&quot; ;</p> <p>:key_region = &quot;.FALSE.&quot; ;</p> <p>:key_larvae = &quot;.TRUE.&quot; ;</p> <p>:imt = 1784 ;</p> <p>:jmt = 1719 ;</p> <p>:kmt = 46 ;</p> <p>:lmt = 3796 ;</p> <p>:key_computew = &quot;.TRUE.&quot; ;</p> <p>:w_surf_option = &quot;&quot; ;</p> <p>:key_partialsteps = &quot;.TRUE.&quot; ;</p> <p>:key_jfold = &quot;.FALSE.&quot; ;</p> <p>:pivot = &quot;T&quot; ;</p> <p>:key_periodic = &quot;.FALSE.&quot; ;</p> <p>:dir_mesh = &quot;./GRID&quot; ;</p> <p>:fn_mesh = &quot;1_mesh_mask.nc&quot; ;</p> <p>:nc_var_xx_tt = &quot;glamt&quot; ;</p> <p>:nc_var_xx_uu = &quot;glamu&quot; ;</p> <p>:nc_var_zz_ww = &quot;gdepw_0&quot; ;</p> <p>:nc_var_e2u = &quot;e2u&quot; ;</p> <p>:nc_var_e1v = &quot;e1v&quot; ;</p> <p>:nc_var_e1t = &quot;e1t&quot; ;</p> <p>:nc_var_e2t = &quot;e2t&quot; ;</p> <p>:nc_var_e3t = &quot;e3t&quot; ;</p> <p>:nc_var_tmask = &quot;tmask&quot; ;</p> <p>:nc_mask_val = 0. ;</p> <p>:c_dir_zo = &quot;./DATA&quot; ;</p> <p>:c_prefix_zo = &quot;V20_nest_5d_&quot; ;</p> <p>:ind0_zo = 1958 ;</p> <p>:indn_zo = 2009 ;</p> <p>:maxsize_zo = 4 ;</p> <p>:c_suffix_zo = &quot;_U.nc&quot; ;</p> <p>:nc_var_zo = &quot;vozocrtx&quot; ;</p> <p>:nc_var_eivu = &quot;NONE&quot; ;</p> <p>:nc_att_mask_zo = &quot;missing_value&quot; ;</p> <p>:c_dir_me = &quot;./DATA&quot; ;</p> <p>:c_prefix_me = &quot;V20_nest_5d_&quot; ;</p> <p>:ind0_me = 1958 ;</p> <p>:indn_me = 2009 ;</p> <p>:maxsize_me = 4 ;</p> <p>:c_suffix_me = &quot;_V.nc&quot; ;</p> <p>:nc_var_me = &quot;vomecrty&quot; ;</p> <p>:nc_var_eivv = &quot;NONE&quot; ;</p> <p>:nc_att_mask_me = &quot;missing_value&quot; ;</p> <p>:c_dir_te = &quot;./DATA&quot; ;</p> <p>:c_prefix_te = &quot;V20_nest_5d_&quot; ;</p> <p>:ind0_te = 1958 ;</p> <p>:indn_te = 2009 ;</p> <p>:maxsize_te = 4 ;</p> <p>:c_suffix_te = &quot;_T.nc&quot; ;</p> <p>:nc_var_te = &quot;votemper&quot; ;</p> <p>:nc_att_mask_te = &quot;missing_value&quot; ;</p> <p>:c_dir_sa = &quot;./DATA&quot; ;</p> <p>:c_prefix_sa = &quot;V20_nest_5d_&quot; ;</p> <p>:ind0_sa = 1958 ;</p> <p>:indn_sa = 2009 ;</p> <p>:maxsize_sa = 4 ;</p> <p>:c_suffix_sa = &quot;_T.nc&quot; ;</p> <p>:nc_var_sa = &quot;vosaline&quot; ;</p> <p>:nc_att_mask_sa = &quot;missing_value&quot; ;</p> <p>}</p> <p>&nbsp;</p>

ShareScore

40/100

Overall dataset sharing score

Score breakdown

These five areas show where the dataset supports — or may limit — practical reuse.

Stewardship
4
Harmonization
4
Access
20
Reuse readiness
8
Engagement
4