Dear Chris
> * In general, what is of interest is a collection (100s to 10,000s,
> or more... ) of particles, rather than an one individual particle.
> Thus, it is more likely that the user might ask:
>
> "where are all the particles at time T?"
> than:
> "How did particle X travel over time?"
>
> * particles can have many associated attributes (properties, etc)
> that change over time.
>
> * many models create and destroy particles as the model runs
I agree, this is a case for a ragged array, with two unlimited dimensions,
logically speaking. However such a thing can be accommodated in the new
discrete geometry conventions
http://www.unidata.ucar.edu/staff/caron/public/CFch9-may10.pdf
This describes two ragged array representations, which are intended for this
purpose. Only one netCDF unlimited dimension is used; the two logical axes are
combined into one netCDF axis.
I have not thought about this in detail, but I suspect it could look something
like this:
int row_size(time) ;
row_size:long_name = "number of particles for this time";
row_size:sample_dimension = "obs" ;
double time(obs) ;
time:standard_name = "time";
time:units = "days since 1970-01-01 00:00:00" ;
int particle(obs)
particle:long_name="particle number";
float quantity(obs) ;
quantity:long_name="one of the physical properties of the particle"
quantity:coordinates = "lat lon alt particle" ;
which associates a 3D position lat,lon,alt and a particle identifier with
each observation i.e. datum. obs is the unlimited dimension. If there is also
invariant information for each particle, a large enough particle dimension
would also be needed and various auxiliary coord vars of this dimension.
I think this is like the trajectory feature type, but with an additional
indirection via the particle identifier to link the observations with invariant
information on particles.
Cheers
Jonathan
Received on Fri Dec 02 2011 - 02:37:32 GMT