[yt-dev] ARTIO time mapping
Nathan Goldbaum
nathan12343 at gmail.com
Sun Aug 10 11:18:32 PDT 2014
On Sun, Aug 10, 2014 at 11:08 AM, Douglas Harvey Rudd <drudd at uchicago.edu>
wrote:
> Thanks Nathan!
>
> The simplest thing to do is force a conversion to seconds when reading
> the data in, so the mapping to any other unit is always linear (and there's
> effectively no artio code_time). The downside to this approach is it's not
> possible to obtain the on-disk values, which could be of some practical
> use. I suppose I could list BIRTH_TIME as being dimensionless, to prevent
> yt from naively converting from code_time and producing incorrect results.
> Thoughts?
>
Mandating dimensionless units for that field is probably the simplest thing
to do that won't subtly produce incorrect results.
The yt "universal field" is creation_time, so you could override that field
definition in the artio frontend and make the mapping from "dimensionless"
BIRTH_TIME to creation_time in seconds there. You may want to add a note to
the place where you do this explaining why you had to do it this way.
>
> Douglas Rudd
> Scientific Computing Consultant
> Research Computing Center
> drudd at uchicago.edu
>
>
>
> On Aug 8, 2014, at 6:50 PM, Nathan Goldbaum <nathan12343 at gmail.com>
> wrote:
>
>
>
>
> On Fri, Aug 8, 2014 at 4:44 PM, Douglas Harvey Rudd <drudd at uchicago.edu>
> wrote:
>
>> Hi all,
>>
>> I've been asked by someone who is using yt to analyze ARTIO data (yes!
>> they exist!). They're interested in the distribution of star particle
>> creation times (BIRTH_TIME in the internal code nomenclature). There is
>> code to do a conversion to age that seems to have been borrowed from the
>> ART frontend, but it's incomplete and incorrect for z > 0, so I'm porting
>> over the c code that we use internally in ART(IO). That's all fine and
>> good, but there's still a residual issue with code_units that I don't quite
>> understand and hoping someone can quickly point me in the right direction.
>>
>> ARTIO defines an attribute time_unit, which is stored in the ARTIO
>> fileset and is the correct code_time -> seconds unit conversion **at the
>> redshift of the snapshot**. The mapping from code time to physical time is
>> non-linear, however, so a code unit defined at a different redshift cannot
>> be simply converted to physical time in cgs using this number (which looks
>> like what happens now).
>
>
>> Is there an easy way to override code_unit -> cgs (and other) unit
>> mappings when it's a non-linear function? I can obviously create
>> pre-converted versions of these fields (creation_time and particle_age both
>> defined in seconds), but that doesn't prevent someone from loading
>> ("STAR","BIRTH_TIME") and asking yt to convert it from code units to cgs,
>> and getting the wrong answer:
>>
>>
> Not right now, no. There is only one conversion for time units -
> whatever is associated with that dataset.
>
> Said another way, all elements of a YTArray must have identical units
> and conversion factors since all elements of the array share the same unit
> metadata. We haven't had to deal with different elements of the same
> dataset having different units yet.
>
> You could add this nonlinear conversion factor either to the i/o
> routine, so it is corrected inline as you read this data in, or override
> the creation_time field. I'm not sure which approach makes the most sense
> for your application.
>
>
>> i.e.
>> yt.load("artio dataset").all_data()[("STAR","BIRTH_TIME")].in_cgs()
>> gives nonsensical values.
>>
>>
>> Douglas Rudd
>> Scientific Computing Consultant
>> Research Computing Center
>> drudd at uchicago.edu
>>
>>
>>
>> _______________________________________________
>> yt-dev mailing list
>> yt-dev at lists.spacepope.org
>> http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org
>>
>
> _______________________________________________
> yt-dev mailing list
> yt-dev at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org
>
>
>
> _______________________________________________
> yt-dev mailing list
> yt-dev at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.spacepope.org/pipermail/yt-dev-spacepope.org/attachments/20140810/07c33701/attachment.html>
More information about the yt-dev
mailing list