[yt-users] Particles in volume rendering

Matthew Turk matthewturk at gmail.com
Mon Aug 2 11:19:45 PDT 2010


Hi Charles,

I think if you set the alpha and the color values to 1.0, it should be
completely opaque.  Without seeing your transfer function definition I
can't be completely sure, however.  If you look at
yt/_amr_utils/VolumeIntegrator.pyx in the FIT_get_values you'll see
some comments about how the transfer function works...

-Matt

On Mon, Aug 2, 2010 at 10:45 AM, Charles Hansen
<chansen at astro.berkeley.edu> wrote:
> Orion particles aren't in yt properly yet to my knowledge, but anyone using
> them has their own particle readers by this point.  I've just started adding
> the particles to the density field by hand lately (code below).  They look
> blocky and their size depends on the cell width, but the bigger problem is
> that the particles still aren't visible unless I am extremely careful with
> the color scheme of the contours.  Even if alpha is set to 1, any given
> contour is mostly transparent.  Is there a way to tell the renderer that
> some particular cell (where a sink particle is) is completely opaque?
>
> Charles
>
> def _partden(field, data):
>      starlist = particles.readParticles(data.pf)     #not part of yt
>                    x = data["x"]
>                     y = data["y"]
>                       z = data["z"]
>                         partm = 0
>                           if starlist != None:
>                                dx = data["dx"]
>                                 dy = data["dy"]
>                                   dz = data["dz"]
>                                     for i in range(0, len(starlist)):
>                                           dxp = abs(x-starlist[i]['x'][0])
>                                            dyp = abs(y-starlist[i]['x'][1])
>                                              dzp =
> abs(z-starlist[i]['x'][2])
>
>           mass = starlist[i]['m']*(dxp < dx/2)*(dyp < dy/2)*(dzp < dz/2)
>            partm = partm + mass
>      partden = partm/data["CellVolume"]
>        return partden
>       add_field("partden", function=_partden)
> def _dentot(field, data):
>       return (data["density"]+data["partden"])
>     add_field("dentot", function=_dentot)
>
> Stella Offner wrote:
>>
>> Thanks, Matt and Stephen! The issue here is that I only have a small
>> number of stars (< 100), so calculating a particle density would probably
>> cause problems.
>>
>> It might be possible to use what you suggest below if I don't start with a
>> blank field filled with zeros (I also will likely plot in log space). I will
>> play around with some of these things and let you know if I find something
>> useful...
>> Stella
>>
>>>
>>>
>>> The main is to define a new field that translates particles to density.
>>> This
>>> example picks out star particles; it should be easy to remove this if you
>>> like
>>> by eliminating the 'sel' stuff below.
>>>
>>> import yt.lagos.UniversalFields as uf
>>>
>>> def _pdensity_pyx(field, data):
>>>   blank = na.zeros(data.ActiveDimensions, dtype='float32')
>>>   if data.NumberOfParticles == 0: return blank
>>>   uf.CICDeposit_3(data["particle_position_x"].astype(na.float64),
>>>                data["particle_position_y"].astype(na.float64),
>>>                data["particle_position_z"].astype(na.float64),
>>>                data["particle_mass"].astype(na.float32),
>>>                na.int64(data["particle_mass"].size),
>>>                blank, na.array(data.LeftEdge).astype(na.float64),
>>>                na.array(data.ActiveDimensions).astype(na.int32),
>>>                na.float64(data['dx']))
>>>   return blank
>>>
>>> add_field("particle_density_pyx", function=_pdensity_pyx,
>>>         validators=[uf.ValidateSpatial(0)],
>>> convert_function=uf._convertDensity,
>>>         display_name=r"\mathrm{Particle\ Density})")
>>>
>>> Then you can use the field "particle_density_pyx" as you would "Density".
>>> The
>>> one thing to worry about in the case of stars, is there can be cells with
>>> no
>>> stars in them, which creates problems if you're doing the volume
>>> rendering in
>>> log space. Let me know if you have problems!
>>>
>>
>> _______________________________________________
>> 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
>



More information about the yt-users mailing list