[yt-dev] [continued] RAMSES units bug in yt-3.0

Sam Geen samgeen at astro.ox.ac.uk
Tue May 13 05:59:34 PDT 2014


I'll try to hunt down and upload a sample dataset shortly.

On 13/05/2014 14:52, Matthew Turk wrote:
> On Tue, May 13, 2014 at 8:48 AM, Sam Geen <samgeen at astro.ox.ac.uk> wrote:
>> Ah, very good, thanks for the link to that old PR! I was worried I was going
>> crazy... in any case, whichever is the easiest way to make the
>> position/length units consistent.
> I change the particle positions in the ingestion phase, so at no point
> should they appear incorrect.  I'd really like to figure out the
> boxlen != 1.0 ...
>
>> By the way, I took a quick look at reading the grav_ files recently,
>> although the output seems kind of strange, so I haven't issued a PR yet
>> until I understand what it's doing (plus I still don't 100% understand the
>> units). I suspect it might be reading in the wrong order or something. It
>> also complicates the code, so it might be worth refactoring a bit to make a
>> universal "AMR-like" data_structures/io interface for the files called
>> hydro_, grav_, rt_, etc, rather than what I did which was to scatter a bunch
>> of conditionals into the existing functions.
> That could be -- I think there was some discussion that they might
> also include ghost zones?
>
> I've also run some checks on cosmology runs.  Here's what I've found.
> With no changes to the current tip of yt-3.0, I have run this script:
>
> --
> ds = yt.load("output_00010/info_00010.txt")
> dd = ds.all_data()
>
> # Let's find the total mass
> pmass = dd["particle_mass"].sum().in_units("Msun")
> cmass = dd["cell_mass"].sum().in_units("Msun")
> rho = ds.cosmology.critical_density(ds.current_redshift)
> crit_mass = (rho * dd["cell_volume"]).sum().in_units("Msun")
> print pmass
> print cmass
> print pmass / (pmass + cmass)
> print ((pmass + cmass) / crit_mass)
> --
>
> The results are good.  I get roughly 0.84 for pmass / (pmass + cmass),
> and I get 0.998 for the final check, which seems within the parameters
> of the simulation.  So the cosmological units should be correct, and
> more to the point, they match up with what I'm expecting having read
> over the code carefully.
>
> So it looks to me like there is in fact a boxlen missing, but that as
> it stands, the particle and density units are correct for boxlen =
> 1.0.  Nick's message is worrisome because the factor isn't exactly 1e3
> between his max density.  I have a boxlen != 1.0 dataset, but I have
> no reference values to compare it again.  Any chance there's one with
> *reference* results for total mass in particles, total mass in gas,
> etc?
>
> -Matt
>
>>
>> On 13/05/2014 14:21, Matthew Turk wrote:
>>> Hi Sam,
>>>
>>> So, here's an old pull request I found:
>>>
>>>
>>> http://hg.yt-project.org/yt-3.0/pull-request/62/adding-boxlen-to-ramses-units-for-mass-and
>>>
>>> and then there's the units.f90 from RAMSES itself:
>>>
>>>
>>> https://bitbucket.org/rteyssie/ramses/src/81ab29b8a405e7ccf6bf30fd67582b4edacddd6e/trunk/ramses/amr/units.f90?at=master
>>>
>>> I'm going to take care of this, update the PR, and ping you both.
>>> (And maybe we should move to yt-dev? :)
>>>
>>> -Matt
>>>
>>> On Tue, May 13, 2014 at 8:17 AM, Sam Geen <samgeen at astro.ox.ac.uk> wrote:
>>>> Huh, that difference in the max density is very strange. I can't think
>>>> why
>>>> you'd have that difference; it's not an obvious multiple.
>>>>
>>>> Actually, I'm looking at the code and it's possible that the particle
>>>> positions are scaled from 0 to boxlen and the grid positions from 0 to 1,
>>>> though I'd need to open up the raw values in a RAMSES file to confirm
>>>> this.
>>>> If this is true, I suppose one "fix" could be to hard-multiply the cell
>>>> sizes by pf["boxlen"] when you load them so that the length units are
>>>> consistent for all data. I *think* that the older version of yt-3.0 gave
>>>> correct answers, though, so that should at least be a way to calibrate
>>>> the
>>>> new version.
>>>>
>>>>
>>>> On 13/05/2014 14:01, nick moeckel wrote:
>>>>
>>>> I had a chance to test out an older and a newer version of yt-3 on a
>>>> small
>>>> dataset that has boxlen=10. This seems to confirm a boxlen**3 factor
>>>> somewhere, although there's a further difference in the max density.
>>>>
>>>> more recent version (hg id -i gives f4838a2165c0):
>>>>
>>>> after dd = ds.all_data():
>>>>
>>>> In [11]: dd.quantities.extrema('density')
>>>>
>>>> Out[11]: (2.00739832795e-28 g/cm**3, 4.54771338163e-24 g/cm**3)
>>>>
>>>>
>>>> older version (hg id -i gives 3e8b733c9ee9):
>>>>
>>>> after dd = ds.h.all_data():
>>>>
>>>> In [10]: dd.quantities.extrema('Density')
>>>>
>>>> Out[10]: [(2.0073983279492632e-25, 4.0079147772594363e-21)]
>>>>
>>>>
>>>>
>>>> On Fri, May 9, 2014 at 5:50 PM, Sam Geen <samgeen at astro.ox.ac.uk> wrote:
>>>>> Yep, that looks like it should work. I'll try to run it on some particle
>>>>> data when I get the time, but like I said I'm 99% sure the mass units
>>>>> should
>>>>> be identical for both grid hydro and particle data.
>>>>>
>>>>>
>>>>> On 09/05/14 17:46, Matthew Turk wrote:
>>>>>> Hi Sam,
>>>>>>
>>>>>> Okay, I've looked over a bit, and I think the correct change would be:
>>>>>>
>>>>>> mass_unit = rho_u * length_unit**3.
>>>>>>
>>>>>> That should include the correct length unit, and I think will reduce
>>>>>> "density" back to the "unit_d" that's in the parameter file.  If this
>>>>>> looks okay to you, I will push it, but I really do want to make sure
>>>>>> the particle masses are correct.  Can Nick or Romain provide a bit of
>>>>>> guidance here?
>>>>>>
>>>>>> -Matt
>>>>>>
>>>>>> On Fri, May 9, 2014 at 11:25 AM, Sam Geen <samgeen at astro.ox.ac.uk>
>>>>>> wrote:
>>>>>>> OK, interesting. In theory RAMSES should have identical units for both
>>>>>>> particles and gas. I can hunt down a run with particles to test if you
>>>>>>> like.
>>>>>>>
>>>>>>> Thanks!
>>>>>>> Sam
>>>>>>>
>>>>>>>
>>>>>>> On 09/05/14 17:22, Matthew Turk wrote:
>>>>>>>> Hi Sam,
>>>>>>>>
>>>>>>>> On reflection, I think this might be related to getting the
>>>>>>>> *particle*
>>>>>>>> masses correct.  I will take a look at it as soon as I can.
>>>>>>>>
>>>>>>>> -Matt
>>>>>>>>
>>>>>>>> On Fri, May 9, 2014 at 11:00 AM, Sam Geen <samgeen at astro.ox.ac.uk>
>>>>>>>> wrote:
>>>>>>>>> Hmm, that looks like it should be "mass_unit = rho_u *
>>>>>>>>> length_unit**3"
>>>>>>>>> in
>>>>>>>>> line 492. You're right that it mentions the boxlength issue, though.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 09/05/14 16:50, Matthew Turk wrote:
>>>>>>>>>> Hi Sam,
>>>>>>>>>>
>>>>>>>>>> Okay, sounds good.  Looking at how code unit attributes are set up:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> https://bitbucket.org/yt_analysis/yt/src/a14a150c7c81850df81346162bdaff271e77eb50/yt/frontends/ramses/data_structures.py?at=yt-3.0#cl-482
>>>>>>>>>>
>>>>>>>>>> suggests to me that length_unit takes into account boxlen, and
>>>>>>>>>> mass_unit does not.  The comments have some indication why this
>>>>>>>>>> might
>>>>>>>>>> be.
>>>>>>>>>>
>>>>>>>>>> -Matt
>>>>>>>>>>
>>>>>>>>>> On Fri, May 9, 2014 at 10:46 AM, Sam Geen <samgeen at astro.ox.ac.uk>
>>>>>>>>>> wrote:
>>>>>>>>>>> Yep; both this and dd["density"] give cgs values that are too
>>>>>>>>>>> small
>>>>>>>>>>> by
>>>>>>>>>>> roughly a factor of boxlen**3.
>>>>>>>>>>>
>>>>>>>>>>> One other thing I need to try is to make sure I'm using the very
>>>>>>>>>>> latest
>>>>>>>>>>> version of YT; I've been playing around with the Ramses frontend
>>>>>>>>>>> so
>>>>>>>>>>> it's
>>>>>>>>>>> possible my version is somehow out of sync. Will let you know if
>>>>>>>>>>> this
>>>>>>>>>>> fixes
>>>>>>>>>>> things.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 09/05/14 16:42, Matthew Turk wrote:
>>>>>>>>>>>> Hi Sam,
>>>>>>>>>>>>
>>>>>>>>>>>> Can you verify the units are in fact incorrect in *cgs*?
>>>>>>>>>>>> Something
>>>>>>>>>>>> like this would work:
>>>>>>>>>>>>
>>>>>>>>>>>> ds = load(...)
>>>>>>>>>>>> dd = ds.all_data()
>>>>>>>>>>>> print dd.quantities.total_quantitiy("cell_mass").in_cgs()
>>>>>>>>>>>>
>>>>>>>>>>>> Your second message makes me wonder if there's just a slipup in
>>>>>>>>>>>> how
>>>>>>>>>>>> the units are returned.
>>>>>>>>>>>>
>>>>>>>>>>>> -Matt
>>>>>>>>>>>>
>>>>>>>>>>>> On Fri, May 9, 2014 at 10:37 AM, Sam Geen
>>>>>>>>>>>> <samgeen at astro.ox.ac.uk>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> Sorry for the spam; a second bug I've seen is that the density
>>>>>>>>>>>>> and
>>>>>>>>>>>>> pressure
>>>>>>>>>>>>> unit labels on figures appears to be broken; it seems to print a
>>>>>>>>>>>>> latex-mangled code names for the units rather than the cgs name
>>>>>>>>>>>>> of
>>>>>>>>>>>>> the
>>>>>>>>>>>>> units; see attached example. Temperature is fine.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 09/05/14 16:28, Sam Geen wrote:
>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Just to say that in the latest version of yt-3.0 (i.e. since
>>>>>>>>>>>>>> various
>>>>>>>>>>>>>> fields were renamed or re-implemented), I've found a bug in the
>>>>>>>>>>>>>> implementation of "cell_mass", which is giving results that are
>>>>>>>>>>>>>> too
>>>>>>>>>>>>>> low
>>>>>>>>>>>>>> in
>>>>>>>>>>>>>> my runs; I believe the issue is that it's missing a factor of
>>>>>>>>>>>>>> pf["boxlen"]**3 (which is of course only a problem if boxlen is
>>>>>>>>>>>>>> not
>>>>>>>>>>>>>> 1).
>>>>>>>>>>>>>> The
>>>>>>>>>>>>>> previous "CellMass_Msun" worked fine. If I get time I might
>>>>>>>>>>>>>> take
>>>>>>>>>>>>>> a
>>>>>>>>>>>>>> look
>>>>>>>>>>>>>> and
>>>>>>>>>>>>>> issue a pull request, but otherwise I'm just flagging this in
>>>>>>>>>>>>>> case
>>>>>>>>>>>>>> someone
>>>>>>>>>>>>>> else runs into problems; you can just manually multiply the
>>>>>>>>>>>>>> result
>>>>>>>>>>>>>> by
>>>>>>>>>>>>>> pf["boxlen"]**3 until it's fixed.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Cheers,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Sam
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>> 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
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> 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
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> 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-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




More information about the yt-dev mailing list