[yt-users] Projection issue
Britton Smith
brittonsmith at gmail.com
Thu Apr 4 07:32:50 PDT 2013
Hi Elizabeth,
The problem with calculating the mass from a projection of the mass field
is that you need to divide each projection pixel by the total path length
that cell has been projected. With AMR, this is trickier because cells
with more refined child cells won't be used in the projection, so for each
value in proj you don't know the total path. This does work with unigrid
data, so for example, this will give the right total mass:
(proj['CellMassMsun'] / proj['pdx']).sum() / pf.units['cm'] / 2
However, the following will work:
((2 * pf.units['cm'] * proj['pdx'])**2 * proj['Density']).sum() / 1.989e33
since the Density projection gives the column density.
I'm not sure what's going on with the fixed_res_proj.
Britton
On Thu, Apr 4, 2013 at 7:58 AM, Elizabeth Tasker <
tasker at astro1.sci.hokudai.ac.jp> wrote:
> Hello,
>
> I have 2 problems, but possibly I only need the solution to one :)
>
> (1) If I calculate the total mass in a simulation via the projection:
>
> projection = pf.h.proj(2, 'CellMass')
> sum(projection["CellMass"]/projection["pdx"]/2.0/3.08568025e18)
>
> (i.e. sum(sum(m_i*dl)/dl) )
>
> I get: 1.4855032022312827e+43
>
> However, if I just sum it directly:
>
> dd = pf.h.all_data()
> sum(dd["CellMass"])
>
> I get: 6.3279045575257765e+42
>
> I was expecting those two numbers to be approximately the same. Why are
> they very different? Have I misunderstood the value of pdx? I think it
> should be equal to half the integration step.
>
> (2) The second problem occurred when I tried to fix this by using a fixed
> resolution projection (in case a variable dl was the issue).
>
> I tried:
>
> proj = pf.h.fixed_res_proj(2, 0, [0, 0, 0], [128,128,128])
>
> (My root grid is 128^3)
>
> but I get:
>
> ValueError Traceback (most recent call last)
> /home/tasker/yt-new/src/yt-hg/scripts/iyt in <module>()
> ----> 1 proj = pf.h.fixed_res_proj(2, 0, [0, 0, 0], [128,128,128])
>
> /home/tasker/yt-new/src/yt-hg/yt/data_objects/data_containers.pyc in
> __init__(self, axis, level, left_edge, dims, fields, pf, **kwargs)
> 2460 self.domain_width = np.rint((self.pf.domain_right_edge -
> 2461
> self.pf.domain_left_edge)/self.dds).astype('int64')
> -> 2462 self._refresh_data()
> 2463
> 2464 def _get_list_of_grids(self):
>
> /home/tasker/yt-new/src/yt-hg/yt/data_objects/data_containers.pyc in
> _refresh_data(self)
> 318 """
> 319 self.clear_data()
> --> 320 self.get_data()
> 321
> 322 def keys(self):
>
> /home/tasker/yt-new/src/yt-hg/yt/data_objects/data_containers.pyc in
> get_data(self, fields)
> 2494 Iterates over the list of fields and generates/reads them
> all.
> 2495 """
> -> 2496 self._get_list_of_grids()
> 2497 if not self.has_key('pdx'):
> 2498 self._generate_coords()
>
> /home/tasker/yt-new/src/yt-hg/yt/data_objects/data_containers.pyc in
> _get_list_of_grids(self)
> 2470 else:
> 2471 grids,ind = self.pf.hierarchy.get_box_grids(
> -> 2472 self.left_edge, self.right_edge)
> 2473 level_ind = (self.pf.hierarchy.grid_levels.ravel()[ind] <=
> self.level)
> 2474 sort_ind =
> np.argsort(self.pf.h.grid_levels.ravel()[ind][level_ind])
>
> /home/tasker/yt-new/src/yt-hg/yt/data_objects/object_finding_mixin.pyc in
> get_box_grids(self, left_edge, right_edge)
> 201 eps = np.finfo(np.float64).eps
> 202 grid_i = np.where((np.all((self.grid_right_edge -
> left_edge) > eps, axis=1)
> --> 203 & np.all((right_edge -
> self.grid_left_edge) > eps, axis=1)) == True)
> 204
> 205 return self.grids[grid_i], grid_i
>
> ValueError: operands could not be broadcast together with shapes (3,3)
> (7100,3)
>
>
> What did I do wrong?
>
> Thank you!
>
> Elizabeth
>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.spacepope.org/pipermail/yt-users-spacepope.org/attachments/20130404/78af9a0a/attachment.htm>
More information about the yt-users
mailing list