[yt-users] non-converted fields?

Matthew Turk matthewturk at gmail.com
Thu Mar 28 13:29:13 PDT 2013


On Thu, Mar 28, 2013 at 4:18 PM, David Collins
<dcollins at physics.ucsd.edu> wrote:
> I tried Nathan's suggestion, but I'm still getting fields in CGS.  I
> did the following, and just ran it in a script (not messing with the
> plugins for now).  Is there anything else I need to do?  What I think
> is happening is that in D2, data['Density'] is already converted to
> cgs when it gets returned by D2.  Is there an easy way to get the
> density conversion function that's getting used, so I can have the
> converter return the inverse?  I added the ValidateGridType in order
> to try to force it to be read before the convert, that didn't work.
>
> def D2(field,data):
>     return data['Density']
> def no_convert(data):
>     return 1
> add_field('D2',function=D2,convert_function=no_convert,
> validators=[ValidateGridType()])
>
>
>> Nathan's suggestion is a good one, as well.  In principle I don't know
>> why the conversion_factors option to the Enzo Static Output wouldn't
>> work for this as well.
>
> I dropped this method a while ago when other yt things started to
> break.

Break how?

>  I was doing something like this, but when I do it other things
> like "load" stop working. Even just creating this class, not actually
> doing anything with it, causes load to fail silently.

I suspect that what's happening is that it's probably reporting via
the log (loglevel of error) that too many _is_valid routines
succeeded, so it could not distinguish.

Everything for Enzo is mediated by two functions:

parse_parameter_file, which indirectly modifies conversion_factors
when it stumbles across a Units entry in the parameter file (as long
as it's not TemperatureUnits).  This is overriden by
conversion_override.  However, note that this occurs *before* parsing
the datalabels, which looks like an error to me, as that will then
subsequently override conversion_factors again.

Following this, _set_units is called.  This will determine it's
cosmological, and if so, call _setup_comoving_units.  If the parameter
LengthUnit is in the parameter file it calls _setup_getunits_units.
If neither of those two things happens, it calls setup_nounits_units.
This sets everything to 1.0, except for the length/time conversions,
where everything is set to 1.0 cm == 1.0 in code units and 1.0 s ==
1.0 in code units.

So my guess is your dataset has a #CGSConversionFactor for Density.

>
> class EnzoStaticOutputMHD(EnzoStaticOutput):
>     def __init__(self,*args,**kwargs):
>         Conversion=2.5e-9/4.32e-7
>         EnzoStaticOutput.__init__(self,*args,conversion_override={
>
> 'MagneticField_C_1': Conversion,
>
> 'MagneticField_C_2':  Conversion,
>
> 'MagneticField_C_3':  Conversion,
>
> 'MagneticField_F_1':  Conversion,
>
> 'MagneticField_F_3':  Conversion,
>
> 'MagneticField_F_2':  Conversion},
>                                      **kwargs)
>
>
>
>>
>> If we had your subclass or some type of test incorporated into yt, we
>> would be able to verify that this functionality that you rely on
>> continues to work.  It can be difficult to anticipate all use cases
>> for the code, but this seems like one that could be valuable.
>>
>> On Thu, Mar 28, 2013 at 3:21 PM, Nathan Goldbaum <nathan12343 at gmail.com> wrote:
>>> Hi David,
>>>
>>> Another option would be to temporarily define a new field that has a null or
>>> trivial conversion function.
>>>
>>> This field could live in your ~/.yt/my_plugins.py file so no need to touch
>>> the yt codebase.
>>>
>>> -Nathan
>>>
>>> On Mar 28, 2013, at 12:18 PM, David Collins <dcollins4096 at gmail.com> wrote:
>>>
>>> That reads a single grid from the hierarchy?  Can I get yt to do projections
>>> and whatnot in those units?
>>>
>>> Previously I had subclassed EnzoStaticOutput with customized conversion
>>> factors.  It's a bit outdated.
>>>
>>> Thanks!
>>> d.
>>>
>>>
>>> On Thu, Mar 28, 2013 at 1:09 PM, Matthew Turk <matthewturk at gmail.com> wrote:
>>>>
>>>> On Thu, Mar 28, 2013 at 3:07 PM, David Collins <dcollins4096 at gmail.com>
>>>> wrote:
>>>> >
>>>> > Hi!
>>>> >
>>>> > Is there a way to get yt to not convert data to CGS?  I'm doing some
>>>> > debugging, and its easier to see the code units.
>>>>
>>>> Read the data directly.
>>>>
>>>> pf.h.io._read_data_set(grid, field)
>>>>
>>>> >
>>>> > I had a work around for this a while ago, but there has been a bunch of
>>>> > code
>>>> > development since then.
>>>>
>>>> What was your old way?
>>>>
>>>> >
>>>> > Thanks!
>>>> > d.
>>>> >
>>>> > _______________________________________________
>>>> > yt-users mailing list
>>>> > yt-users at lists.spacepope.org
>>>> > http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>> >
>>>> _______________________________________________
>>>> yt-users mailing list
>>>> yt-users at lists.spacepope.org
>>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>
>>>
>>> _______________________________________________
>>> yt-users mailing list
>>> yt-users at lists.spacepope.org
>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>
>>>
>>>
>>> _______________________________________________
>>> yt-users mailing list
>>> yt-users at lists.spacepope.org
>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>
>> _______________________________________________
>> yt-users mailing list
>> yt-users at lists.spacepope.org
>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>
>
>
> --
> Sent from my computer.
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org



More information about the yt-users mailing list