
Yes -- although that behavior was also true in 2.x, to my recollection.
It definitely was, I did it a bunch-- I didn't understand the results I was getting, so I didn't publish them yet. Now I think I do, and was hoping to resume that work, so I'm definitely hoping to be able to get particles from clumps soon.
However, in 3.0, we *can* do this with a little bit of development, so
If you point me at some source, I'm happy to get started on that. All my particles are massless, so the deposited mass isn't enough. Thanks!
I think on the whole it's a net win. With the work Doug Rudd did on composable objects, we should be able to supply one object as a base_source to another and then select particles that reside inside the cells that are selected, using bbox selection based on cells.
All of that being said, I'd say just use the deposited mass from particles. It'll give you exactly the same result and will work with clumps. This was not available in 2.x, and now is in 3.x.
Also, what I was alluding to in a previous email is that there's an internal "state" affiliated with an object -- "GenerationInProgress" -- which can sometimes, if an error is not correctly caught, be propagated up to the top. I think this is what's happening. Without it getting reset internally, it breaks the object.
-Matt
My understanding is that in yt-3.0 we cannot get particles from clumps. Is that true?
On Thu, Dec 18, 2014 at 9:36 AM, David Collins <dcollins4096@gmail.com> wrote:
I believe what's going on is that the object gets stuck in a mid-state of generating data and is locked. This is something that is not supposed to happen, but we should be able to fail more gracefully.
Is it stuck because it's hard to get particles directly from the clump?
For now, a workaround would be to avoid using the total_mass derived quantity and instead do something like this:
clump = ... total_mass = clump.quantity.total_quantity('cell_mass') clump['density'] clump['cell_mass']
The curious disappearing data can be seen here:
>>> leaf_clumps[0]['density'] YTArray([ 94330.76550569, 111095.42419888, 111000.87780872, 158489.47273191, 114487.69237444, 129849.08390983, 95651.97426045, 95462.47824957, 104785.15137116, 149758.92528478, 122558.83598019, 91829.8174425 , 97015.49553846, 118157.84068288]) g/cm**3 >>> leaf_clumps[0]['cell_mass'] YTArray([ 0.00070282, 0.00082773, 0.00082702, 0.00118084,
0.000853
, 0.00096745, 0.00071266, 0.00071125, 0.00078071, 0.00111579, 0.00091313, 0.00068419, 0.00072282, 0.00088034]) g >>> leaf_clumps[0].quantities.total_quantity('cell_mass') 0.0118797558199 g >>> leaf_clumps[0].quantities.total_mass() Traceback (most recent call last): File "<stdin>", line 1, in <module> File
"/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py",
line 193, in __call__ rv = super(TotalMass, self).__call__(fields) File
"/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py",
line 160, in __call__ rv = super(TotalQuantity, self).__call__(fields) File
"/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py",
line 56, in __call__ sto.result = self.process_chunk(ds, *args, **kwargs) File
"/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py",
line 166, in process_chunk for field in fields] File
"/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/data_containers.py",
line 248, in __getitem__ self.get_data(f) File
"/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/selection_data_containers.py",
line 749, in get_data raise YTMixedCutRegion(self.conditionals, field) yt.utilities.exceptions.YTMixedCutRegion: Can't mix
On Thu, Dec 18, 2014 at 8:57 AM, Britton Smith <brittonsmith@gmail.com> wrote: particle/discrete
and fluid/mesh conditions or quantities. Field: ('all', 'particle_mass') and Conditions specified: obj['contours_72e8d63701e04d13bfec60cada79b7ad'] == 1 >>> leaf_clumps[0].quantities.total_quantity('cell_mass') 0.0 g >>> leaf_clumps[0]['cell_mass'] YTArray([], dtype=float64) g
The code to make the clumps
ds = yt.load(setname) val, loc = ds.find_max('density') width = (0.05,'code_length') sphere = ds.sphere(loc,width) master_clump = Clump(sphere,"density") c_min = sphere["gas", "density"].min() c_max = sphere["gas", "density"].max() step = 2.0 find_clumps(master_clump, c_min, c_max, step) leaf_clumps = get_lowest_clumps(master_clump)
> > I'll give that a shot in the morning and report back. > > > Thanks! > d. > >> >> >>> >>> >>> If I instead try quantities.total_mass(), I get an odd error. >>> >>> leaf_clumps[22].quantities.total_mass() >>> Traceback (most recent call last): >>> File "<stdin>", line 1, in <module> >>> File >>> >>> "/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py", >>> line 193, in __call__ >>> rv = super(TotalMass, self).__call__(fields) >>> File >>> >>> "/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py", >>> line 160, in __call__ >>> rv = super(TotalQuantity, self).__call__(fields) >>> File >>> >>> "/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py", >>> line 56, in __call__ >>> sto.result = self.process_chunk(ds, *args, **kwargs) >>> File >>> >>> "/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py", >>> line 166, in process_chunk >>> for field in fields] >>> File >>> >>> "/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/data_containers.py", >>> line 248, in __getitem__ >>> self.get_data(f) >>> File >>> >>> "/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/selection_data_containers.py", >>> line 749, in get_data >>> raise YTMixedCutRegion(self.conditionals, field) >>> yt.utilities.exceptions.YTMixedCutRegion: Can't mix >>> particle/discrete >>> and fluid/mesh conditions or >>> quantities. Field: ('all', 'particle_mass') and >>> Conditions specified: >>> obj['contours_8d0408a91fc34e2bbe9eb838d48de46e'] == 1 >> >> >> This is happening because, as the error indicates, you can't combine >> mesh and particle quantities in a cut_region (like a clump is). The >> total_mass() quantity returns the total mass in particles and gas, >> so that's >> what's triggering the error. I bet this would work if you asked for >> the >> total gas mass only. Of course, that would only work if >> clump['cell_mass'] >> returned something sensible. >> >>> >>> >>> >>> >>> I build the clumps in the following manner. I don't have any >>> validators by design. Plotting the clumps with >>> annotate_clumps(leaf_clumps) >>> gives reasonable results. >>> >>> ds = yt.load(setname) >>> loc = ds.arr([ 0.03613281, 0.79589844, 0.03027344], >>> 'code_length') >>> width = (0.05,'code_length') >>> sphere = ds.sphere(loc,width) >>> master_clump = Clump(sphere,"density") >>> use_particles=False, use_thermal_energy=False) >>> c_min = sphere["gas", "density"].min() >>> c_max = sphere["gas", "density"].max() >>> step = 2.0 >>> find_clumps(master_clump, c_min, c_max, step) >>> leaf_clumps = get_lowest_clumps(master_clump) >>> >>> Thanks a ton! >>> d. >>> >>> -- >>> -- Sent from a computer. >>> >>> _______________________________________________ >>> yt-users mailing list >>> yt-users@lists.spacepope.org >>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org >>> >> >> _______________________________________________ >> yt-users mailing list >> yt-users@lists.spacepope.org >> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org >> > > > -- > -- Sent from a computer.
-- -- Sent from a computer. _______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
_______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
_______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
-- -- Sent from a computer.
_______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
_______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
_______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
-- -- Sent from a computer. _______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org