[yt-users] creating sunrise files from RAMSES snapshot

Matthew Turk matthewturk at gmail.com
Mon Aug 22 04:02:19 PDT 2011


Hi Robert,

The cosmology_simulation flag was discussed on this mailing list about
a week ago; the error message arises because RAMSES does not state
explicitly whether it is in fact a cosmology simulation, so yt has to
guess based on the units.

The field you're running into is another particle field; as I noted
earlier, the particle reading for RAMSES is not currently working.  If
you turn off particle writing (write_particles = False in the call to
export_to_sunrise) and you have defined a "Temperature" field and a
"Metal_Density" field for RAMSES (which yt does not do, as it has too
many free parameters for the user) then it should execute to
completion.  (It does for me, with grossly incorrectly defined
Temperature and Metal_Density fields.)

To see which fields are available to define the "Temperature" and
"Metal_Density" fields, you can inspect pf.field_info, which shows all
of the existing fields.

I would be more than happy to start a discussion of how to get star
particles read in; my suspicion is that for the purposes of exporting
to sunrise a very quick pass could be made at reading, rather than an
involved load-on-demand scheme.  I can attempt to extend the reader
this week, if this is of interest.  We should discuss it on the
development list or IRC.

Chris Moody was one of the initial implementors of the Sunrise
exporter, for ART datasets; perhaps he can share a few of the tricks
and sticky points in using it?

-Matt

On Sun, Aug 21, 2011 at 8:23 PM, Robert Feldmann <feldmann at fnal.gov> wrote:
> Hi Matt,
>
> Thanks for looking into it. Yet, the 2.2dev version still fails.
>
> First, there is an issue when I load the RAMSES snapshot.
>
>>>> pf=load("output_00105/info_00105.txt")
> output_00105/amr_00105.out00001
> yt : [INFO     ] 2011-08-21 19:15:20,777 Parameters: current_time              = -1.23236270587e+17
> yt : [INFO     ] 2011-08-21 19:15:20,777 Parameters: domain_dimensions         = [2 2 2]
> yt : [INFO     ] 2011-08-21 19:15:20,778 Parameters: domain_left_edge          = [ 0.  0.  0.]
> yt : [INFO     ] 2011-08-21 19:15:20,778 Parameters: domain_right_edge         = [ 1.  1.  1.]
> yt : [ERROR    ] 2011-08-21 19:15:20,778 Missing cosmological_simulation in parameter file definition!
>
> Yet, despite this error message it does seem to read the RAMSES snapshot. These are the available fields
>
> pf.__class__                      pf.__repr__                       pf._setup_nounits_units           pf.has_key
> pf.__delattr__                    pf.__setattr__                    pf.basename                       pf.hierarchy
> pf.__dict__                       pf.__sizeof__                     pf.conversion_factors             pf.keys
> pf.__doc__                        pf.__str__                        pf.current_time                   pf.parameter_filename
> pf.__format__                     pf.__subclasshook__               pf.data_style                     pf.parameters
> pf.__getattribute__               pf.__weakref__                    pf.dimensionality                 pf.print_key_parameters
> pf.__getitem__                    pf._fieldinfo_class               pf.directory                      pf.ramses_tree
> pf.__hash__                       pf._handle                        pf.domain_dimensions              pf.refine_by
> pf.__init__                       pf._hash                          pf.domain_left_edge               pf.storage_filename
> pf.__iter__                       pf._hierarchy_class               pf.domain_right_edge              pf.time_units
> pf.__metaclass__                  pf._instantiated                  pf.field_info                     pf.unique_identifier
> pf.__module__                     pf._instantiated_hierarchy        pf.file_style                     pf.units
> pf.__new__                        pf._is_valid                      pf.fullpath
> pf.__reduce__                     pf._parse_parameter_file          pf.get_smallest_appropriate_unit
> pf.__reduce_ex__                  pf._set_units                     pf.h
>
> Then when I try to export it, I still get an error.
>
>>>> from yt.analysis_modules.sunrise_export import sunrise_exporter
>>>> sunrise_exporter.export_to_sunrise(pf,"analysis/yt/HYDRO_L2_18_GF_epsstar0d1")
> yt : [INFO     ] 2011-08-21 19:16:38,412 Re-gridding level 0: 1 octree grids
> Re-gridding 100% |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| Time: 00:00:00
> ...
> yt : [INFO     ] 2011-08-21 19:16:44,489 Final grid count: 303
> yt : [INFO     ] 2011-08-21 19:16:44,534 Re-gridding level 16: 59069 octree grids
> Re-gridding 100% |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| Time: 00:00:00
> 472552
> yt : [INFO     ] 2011-08-21 19:16:44,680 Final grid count: 153
> int32
> yt : [INFO     ] 2011-08-21 19:16:45,227 Getting field particle_type from 3250
> yt : [INFO     ] 2011-08-21 19:16:45,433 Getting field particle_position_x from 3250
> yt : [INFO     ] 2011-08-21 19:16:45,647 Getting field particle_position_y from 3250
> yt : [INFO     ] 2011-08-21 19:16:45,858 Getting field particle_position_z from 3250
> yt : [INFO     ] 2011-08-21 19:16:46,085 Getting field particle_velocity_x from 3250
> yt : [INFO     ] 2011-08-21 19:16:46,304 Getting field particle_velocity_y from 3250
> yt : [INFO     ] 2011-08-21 19:16:46,523 Getting field particle_velocity_z from 3250
> ERROR: An unexpected error occurred while tokenizing input
> The following traceback may be corrupted or invalid
> The error message is: ('EOF in multi-line statement', (1340, 0))
>
> ERROR: An unexpected error occurred while tokenizing input
> The following traceback may be corrupted or invalid
> The error message is: ('EOF in multi-line statement', (54, 0))
>
> ---------------------------------------------------------------------------
> NeedsDataField                            Traceback (most recent call last)
>
> /d/scratch39/feldmann/local/yt_dev/yt-x86_64/src/yt-hg/scripts/iyt in <module>()
> ----> 1
>      2
>      3
>      4
>      5
>
> /d/scratch39/feldmann/local/yt_dev/yt-x86_64/src/yt-hg/yt/analysis_modules/sunrise_export/sunrise_exporter.pyc in export_to_sunrise(pf, fn, write_particles, subregion_bounds, particle_mass, particle_pos, particle_age, particle_metal)
>    110         # Velocity is cm/s, we want it to be kpc/yr
>
>    111         vel *= (pf["kpc"]/pf["cm"]) / (365*24*3400.)
> --> 112         age = pf["years"] * (pf.current_time - reg["creation_time"][pi])
>    113         creation_time = reg["creation_time"][pi] * pf["years"]
>    114
>
> /d/scratch39/feldmann/local/yt_dev/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.pyc in __getitem__(self, key)
>    285             if key not in self.fields:
>    286                 self.fields.append(key)
> --> 287             self.get_data(key)
>    288         return self.data[key]
>    289
>
> /d/scratch39/feldmann/local/yt_dev/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.pyc in get_data(self, fields, in_grids, force_particle_read)
>   2289                 continue
>   2290             if field not in self.hierarchy.field_list and not in_grids:
> -> 2291                 if self._generate_field(field):
>   2292                     continue # True means we already assigned it
>   2293             # There are a lot of 'ands' here, but I think they are all
>
> /d/scratch39/feldmann/local/yt_dev/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.pyc in _generate_field(self, field)
>   2356             except NeedsGridType, ngt_exception:
>   2357                 # We leave this to be implementation-specific
>
> -> 2358                 self._generate_field_in_grids(field, ngt_exception.ghost_zones)
>   2359                 return False
>   2360             else:
>
> /d/scratch39/feldmann/local/yt_dev/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.pyc in _generate_field_in_grids(self, field, num_ghost_zones)
>   2366     def _generate_field_in_grids(self, field, num_ghost_zones=0):
>   2367         for grid in self._grids:
> -> 2368             self.__touch_grid_field(grid, field)
>   2369
>   2370     @restore_grid_state
>
> /d/scratch39/feldmann/local/yt_dev/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.pyc in save_state(self, grid, field)
>     72         old_keys = grid.data.keys()
>     73         grid.field_parameters = self.field_parameters
> ---> 74         tr = func(self, grid, field)
>     75         grid.field_parameters = old_params
>     76         grid.data = dict( [(k, grid.data[k]) for k in old_keys] )
>
> /d/scratch39/feldmann/local/yt_dev/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.pyc in __touch_grid_field(self, grid, field)
>   2370     @restore_grid_state
>   2371     def __touch_grid_field(self, grid, field):
> -> 2372         grid[field]
>   2373
>   2374     def _is_fully_enclosed(self, grid):
>
> /d/scratch39/feldmann/local/yt_dev/yt-x86_64/src/yt-hg/yt/data_objects/grid_patch.pyc in __getitem__(self, key)
>    147         """
>    148         if not self.data.has_key(key):
> --> 149             self.get_data(key)
>    150         return self.data[key]
>    151
>
> /d/scratch39/feldmann/local/yt_dev/yt-x86_64/src/yt-hg/yt/data_objects/grid_patch.pyc in get_data(self, field)
>    190                     else: raise
>    191             else:
> --> 192                 self._generate_field(field)
>    193         return self.data[field]
>    194
>
> /d/scratch39/feldmann/local/yt_dev/yt-x86_64/src/yt-hg/yt/data_objects/grid_patch.pyc in _generate_field(self, field)
>    125             # First we check the validator
>
>    126             try:
> --> 127                 self.pf.field_info[field].check_available(self)
>    128             except NeedsGridType, ngt_exception:
>    129                 # This is only going to be raised if n_gz > 0
>
>
> /d/scratch39/feldmann/local/yt_dev/yt-x86_64/src/yt-hg/yt/data_objects/field_info_container.pyc in check_available(self, data)
>    277         """
>    278         for validator in self.validators:
> --> 279             validator(data)
>    280         # If we don't get an exception, we're good to go
>
>    281         return True
>
> /d/scratch39/feldmann/local/yt_dev/yt-x86_64/src/yt-hg/yt/data_objects/field_info_container.pyc in __call__(self, data)
>    375                 doesnt_have.append(f)
>    376         if len(doesnt_have) > 0:
> --> 377             raise NeedsDataField(doesnt_have)
>    378         return True
>    379
>
> NeedsDataField: (['creation_time'])
>
> Best
> -R
>
> On Aug 21, 2011, at 9:24 AM, Matthew Turk wrote:
>
>>> I've fixed the bug you have reported, but in the unstable (2.2-dev)
>>> version, which also includes a large number of performance
>>> improvements for the RAMSES code.  (We hope to have a 2.2 release this
>>> week.)  There seem to be a few lingering bugs with the RAMSES reader
>>> which I am going to work on tomorrow; it seems that something I did
>>> recently broke the reader.
>>
>> Apologies for the rapid self-reply, but I believe I have identified
>> and fixed the main issue I was seeing with the RAMSES reader, and as
>> of changeset hash 677ae185471f (in the "development" branch) it should
>> actually be performing up to specification, and I was able to project
>> and slice data successfully.  Tomorrow I will dive deeper and ensure
>> that the second-tier tests are working up to specification.
>>
>> RAMSES tests will be added to the automated test runner tomorrow
>> morning, to be run on a daily basis, to ensure such a regression does
>> not happen again.  As always, please let us know if you run into
>> problems.
>>
>> Best,
>>
>> Matt
>
> --
> Robert Feldmann
> Theoretical Astrophysics Group
>
> Fermi National Accelerator Laboratory
> Mail Stop 209,
> Box 500
> Batavia, IL 60510,
> U.S.A
>
> E-mail: feldmann at fnal.gov
> Phone: +1 (630) 840-8433
> Fax: +1 (630) 840-8231
>
> _______________________________________________
> 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