[yt-users] Error in TotalMass in RAMSES
Matthew Turk
matthewturk at gmail.com
Mon Feb 3 07:28:25 PST 2014
Hi Sam,
On Mon, Feb 3, 2014 at 8:34 AM, Sam Geen <samgeen at astro.ox.ac.uk> wrote:
> Hi,
>
> I'm trying to find the total energy (kinetic and thermal) in grid cells in a
> gas-only simulation in RAMSES. I was playing with the functions in the
> documentation when I ran into an error "YTCouldNotGenerateField: Could field
> '('all', 'particle_mass')' in info_00014 could not be generated." (full log
> below)
>
> I'm unsure if this is a problem with the RAMSES frontend throwing an error
> if there are no particles present, or something else (e.g. whether it's not
> supposed to work with gas-only simulations). I'm sure there's probably a
> better way to achieve what I was trying to do, but I thought I'd post this
> up here in case it's a bug.
Hmm, it should definitely more gracefully handle that, but I think off
hand it looks like it's just forcing particle discovery. I'd say you
should be able to do:
dd.quantities["TotalQuantity"]("CellMassMsun")
to get the total mass in the simulation instead.
>
> Incidentally - would it be a problem if the RAMSES accepted "output_XXXXX"
> rather than just "output_XXXXX/info_XXXXX.txt"? The latter is more
> cumbersome, but I suppose the former might cause problems if another code
> also uses the format "output_XXXXX".
I suspect this wouldn't be a problem at all -- the changes would have
to happen two places:
* is_valid in RAMSESStaticOutput should check if isdir and if
os.path.exists(os.path.join(fn, "info_whatever.txt")) where it
computes the whatever from the path
* __init__ in same should guess similarly and update the argument
-Matt
>
> Cheers,
>
> Sam
>
> ---
> (c.f.
> http://yt-project.org/docs/dev/analyzing/objects.html#processing-objects-derived-quantities)
> In [18]: dd.quantities["TotalMass"]()
> yt : [DEBUG ] 2014-02-03 12:42:12,067 Filling Density with 174760
> (2.287e-02 9.034e+01) (174760 zones)
> ---------------------------------------------------------------------------
> YTCouldNotGenerateField Traceback (most recent call last)
> <ipython-input-18-7ea9fe75efad> in <module>()
> ----> 1 dd.quantities["TotalMass"]()
>
> /home/samgeen/Programming/yt/yt/yt/data_objects/derived_quantities.pyc in
> __call__(self, *args, **kwargs)
> 63 chunks = self._data_source.chunks([], chunking_style="io")
> 64 for ds in parallel_objects(chunks, -1):
> ---> 65 rv = self.func(ds, *args, **kwargs)
> 66 if not iterable(rv): rv = (rv,)
> 67 for i in range(self.n_ret): retvals[i].append(rv[i])
>
> /home/samgeen/Programming/yt/yt/yt/data_objects/derived_quantities.pyc in
> _TotalMass(data)
> 119 cell_mass = 0.0
> 120 try:
> --> 121 particle_mass = _TotalQuantity(data,["ParticleMassMsun"])
> 122 except KeyError:
> 123 particle_mass = 0.0
>
> /home/samgeen/Programming/yt/yt/yt/data_objects/derived_quantities.pyc in
> _TotalQuantity(data, fields)
> 697 totals = []
> 698 for field in fields:
> --> 699 if data[field].size < 1:
> 700 totals.append(np.zeros(1,dtype=prec_accum[data[field].dtype])[0])
> 701 continue
>
> /home/samgeen/Programming/yt/yt/yt/data_objects/data_containers.pyc in
> __getitem__(self, key)
> 189 return self.field_data[f]
> 190 else:
> --> 191 self.get_data(f)
> 192 # Note that this is less succinct so that we can account for
> the case
> 193 # when there are, for example, no elements in the object.
>
> /home/samgeen/Programming/yt/yt/yt/data_objects/data_containers.pyc in
> get_data(self, fields)
> 580 self.field_data.update(read_particles)
> 581 fields_to_generate += gen_fluids + gen_particles
> --> 582 self._generate_fields(fields_to_generate)
> 583
> 584 def _generate_fields(self, fields_to_generate):
>
> /home/samgeen/Programming/yt/yt/yt/data_objects/data_containers.pyc in
> _generate_fields(self, fields_to_generate)
> 596 if field in self.field_data: continue
> 597 try:
> --> 598 self.field_data[field] =
> self._generate_field(field)
> 599 except GenerationInProgress as gip:
> 600 for f in gip.fields:
>
> /home/samgeen/Programming/yt/yt/yt/data_objects/data_containers.pyc in
> _generate_field(self, field)
> 221 tr = self._generate_fluid_field(field)
> 222 if tr is None:
> --> 223 raise YTCouldNotGenerateField(field, self.pf)
> 224 return tr
> 225
>
> YTCouldNotGenerateField: Could field '('all', 'particle_mass')' in
> info_00014 could not be generated.
>
>
> _______________________________________________
> 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