[yt-svn] commit/yt-3.0: 3 new changesets

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Tue Jul 16 06:15:55 PDT 2013


3 new commits in yt-3.0:

https://bitbucket.org/yt_analysis/yt-3.0/commits/404d3931dde3/
Changeset:   404d3931dde3
Branch:      yt-3.0
User:        MatthewTurk
Date:        2013-07-15 23:29:07
Summary:     Two minor ARTIO fixes to add comoving and /h units, and to get the right
particle mass.
Affected #:  2 files

diff -r 44637ca2b97b0a33b3986163ed4f1bfa7d3a3cbf -r 404d3931dde33bbdaf3ccad960ac358bf9d3c228 yt/frontends/artio/_artio_caller.pyx
--- a/yt/frontends/artio/_artio_caller.pyx
+++ b/yt/frontends/artio/_artio_caller.pyx
@@ -341,7 +341,7 @@
                             if selected_mass[ispec] :
                                 count = len(data[selected_mass[ispec]])
                                 data[selected_mass[ispec]].resize(count+1)
-                                data[selected_mass[ispec]][count] = self.parameters["particle_species_mass"][0]
+                                data[selected_mass[ispec]][count] = self.parameters["particle_species_mass"][ispec]
                         
                     status = artio_particle_read_species_end( self.handle )
                     check_artio_status(status)

diff -r 44637ca2b97b0a33b3986163ed4f1bfa7d3a3cbf -r 404d3931dde33bbdaf3ccad960ac358bf9d3c228 yt/frontends/artio/data_structures.py
--- a/yt/frontends/artio/data_structures.py
+++ b/yt/frontends/artio/data_structures.py
@@ -288,6 +288,15 @@
         for unit in mpc_conversion.keys():
             self.units[unit] = self.parameters['unit_l']\
                 * mpc_conversion[unit] / mpc_conversion["cm"]
+        if self.cosmological_simulation:
+            for unit in mpc_conversion:
+                self.units["%sh" % unit] = self.units[unit] * \
+                    self.hubble_constant
+                self.units["%shcm" % unit] = \
+                    (self.units["%sh" % unit] /
+                        (1 + self.current_redshift))
+                self.units["%scm" % unit] = \
+                    self.units[unit] / (1 + self.current_redshift)
 
         for unit in sec_conversion.keys():
             self.time_units[unit] = self.parameters['unit_t']\


https://bitbucket.org/yt_analysis/yt-3.0/commits/535bc0ec69f8/
Changeset:   535bc0ec69f8
Branch:      yt-3.0
User:        MatthewTurk
Date:        2013-07-15 23:56:46
Summary:     Adding particle fields to ARTIO.

Note that this adds deposition fields, which do not currently work as ARTIO
does not have an implemented .deposit() function.

This also includes a manual cast to 64 bits for particle_mass specifically, as
this is required for in-place operations that require values greater than
3.4e38 to be expressed; for instance, this could be a direct conversion from
on-disk particle masses to grams when the particle masses are greater than
about 171,000 Msun.
Affected #:  2 files

diff -r 404d3931dde33bbdaf3ccad960ac358bf9d3c228 -r 535bc0ec69f8960161f86ebfab85e2ebb484bcc2 yt/frontends/artio/fields.py
--- a/yt/frontends/artio/fields.py
+++ b/yt/frontends/artio/fields.py
@@ -34,6 +34,9 @@
     ValidateSpatial, \
     ValidateGridType
 import yt.data_objects.universal_fields
+from yt.data_objects.particle_fields import \
+    particle_deposition_functions, \
+    particle_vector_functions
 import numpy as np
 
 KnownARTIOFields = FieldInfoContainer()
@@ -247,51 +250,20 @@
     pf = "particle_velocity_%s" % ax
     add_artio_field(pf, function=NullFunc,
                     particle_type=True)
-add_artio_field("particle_mass", function=NullFunc, particle_type=True)
-add_artio_field("particle_index", function=NullFunc, particle_type=True)
 
 for ax in 'xyz':
     pf = "particle_position_%s" % ax
     add_artio_field(pf, function=NullFunc,
                     particle_type=True)
 
-
-def ParticleMass(field, data):
-    return data['particle_mass']
-
-
-def _convertParticleMass(field, data):
-    return data.convert('particle_mass')
-add_field("ParticleMass",
-          function=ParticleMass,
+def _convertParticleMass(data):
+    return np.float64(data.convert('particle_mass'))
+add_field("particle_mass",
+          function=NullFunc,
           convert_function=_convertParticleMass,
           units=r"\rm{g}",
           particle_type=True)
-
-
-def ParticleMassMsunAll(field, data):
-    return data['all', 'particle_mass'] * \
-        data.pf.conversion_factors['particle_mass_msun']
-add_field(('all', "ParticleMassMsun"),
-          function=ParticleMassMsunAll,
-          units=r"\rm{M\odot}", particle_type=True)
-
-
-def ParticleMassMsunStars(field, data):
-    return data['stars', 'particle_mass'] * \
-        data.pf.conversion_factors['particle_mass_msun']
-add_field(('stars', "ParticleMassMsun"),
-          function=ParticleMassMsunStars,
-          units=r"\rm{M\odot}", particle_type=True)
-
-
-def ParticleMassMsunNbody(field, data):
-    return data['nbody', 'particle_mass'] * \
-        data.pf.conversion_factors['particle_mass_msun']
-add_field(('nbody', "ParticleMassMsun"),
-          function=ParticleMassMsunNbody,
-          units=r"\rm{M\odot}", particle_type=True)
-
+add_artio_field("particle_index", function=NullFunc, particle_type=True)
 
 #add_artio_field("creation_time", function=NullFunc, particle_type=True)
 def _particle_age(field, data):
@@ -303,6 +275,15 @@
 add_field(("stars","particle_age"), function=_particle_age, units=r"\rm{s}",
           particle_type=True)
 
+# We can now set up particle vector and particle deposition fields.
+
+for ptype in ("all", "nbody", "stars"):
+    particle_vector_functions(ptype,
+        ["particle_position_%s" % ax for ax in 'xyz'],
+        ["particle_velocity_%s" % ax for ax in 'xyz'],
+        ARTIOFieldInfo)
+    particle_deposition_functions(ptype, "Coordinates", "particle_mass",
+        ARTIOFieldInfo)
 
 def mass_dm(field, data):
     tr = np.ones(data.ActiveDimensions, dtype='float32')

diff -r 404d3931dde33bbdaf3ccad960ac358bf9d3c228 -r 535bc0ec69f8960161f86ebfab85e2ebb484bcc2 yt/frontends/artio/io.py
--- a/yt/frontends/artio/io.py
+++ b/yt/frontends/artio/io.py
@@ -49,4 +49,7 @@
         for onechunk in chunks:
             for artchunk in onechunk.objs:
                 artchunk.fill_particles(tr, fields)
+        for ftype, fname in tr.keys():
+            if fname == "particle_mass":
+                tr[ftype, fname] = tr[ftype, fname].astype("float64")
         return tr


https://bitbucket.org/yt_analysis/yt-3.0/commits/f4e40fbbadc2/
Changeset:   f4e40fbbadc2
Branch:      yt-3.0
User:        MatthewTurk
Date:        2013-07-16 15:15:50
Summary:     Merged in MatthewTurk/yt-3.0 (pull request #65)

Minor fixes for ARTIO for AGORA
Affected #:  4 files

diff -r 9eaa5e6f93fff270c80ae725f510d586567351c0 -r f4e40fbbadc2438a75b629d03300526f3763a7f2 yt/frontends/artio/_artio_caller.pyx
--- a/yt/frontends/artio/_artio_caller.pyx
+++ b/yt/frontends/artio/_artio_caller.pyx
@@ -341,7 +341,7 @@
                             if selected_mass[ispec] :
                                 count = len(data[selected_mass[ispec]])
                                 data[selected_mass[ispec]].resize(count+1)
-                                data[selected_mass[ispec]][count] = self.parameters["particle_species_mass"][0]
+                                data[selected_mass[ispec]][count] = self.parameters["particle_species_mass"][ispec]
                         
                     status = artio_particle_read_species_end( self.handle )
                     check_artio_status(status)

diff -r 9eaa5e6f93fff270c80ae725f510d586567351c0 -r f4e40fbbadc2438a75b629d03300526f3763a7f2 yt/frontends/artio/data_structures.py
--- a/yt/frontends/artio/data_structures.py
+++ b/yt/frontends/artio/data_structures.py
@@ -288,6 +288,15 @@
         for unit in mpc_conversion.keys():
             self.units[unit] = self.parameters['unit_l']\
                 * mpc_conversion[unit] / mpc_conversion["cm"]
+        if self.cosmological_simulation:
+            for unit in mpc_conversion:
+                self.units["%sh" % unit] = self.units[unit] * \
+                    self.hubble_constant
+                self.units["%shcm" % unit] = \
+                    (self.units["%sh" % unit] /
+                        (1 + self.current_redshift))
+                self.units["%scm" % unit] = \
+                    self.units[unit] / (1 + self.current_redshift)
 
         for unit in sec_conversion.keys():
             self.time_units[unit] = self.parameters['unit_t']\

diff -r 9eaa5e6f93fff270c80ae725f510d586567351c0 -r f4e40fbbadc2438a75b629d03300526f3763a7f2 yt/frontends/artio/fields.py
--- a/yt/frontends/artio/fields.py
+++ b/yt/frontends/artio/fields.py
@@ -34,6 +34,9 @@
     ValidateSpatial, \
     ValidateGridType
 import yt.data_objects.universal_fields
+from yt.data_objects.particle_fields import \
+    particle_deposition_functions, \
+    particle_vector_functions
 import numpy as np
 
 KnownARTIOFields = FieldInfoContainer()
@@ -247,51 +250,20 @@
     pf = "particle_velocity_%s" % ax
     add_artio_field(pf, function=NullFunc,
                     particle_type=True)
-add_artio_field("particle_mass", function=NullFunc, particle_type=True)
-add_artio_field("particle_index", function=NullFunc, particle_type=True)
 
 for ax in 'xyz':
     pf = "particle_position_%s" % ax
     add_artio_field(pf, function=NullFunc,
                     particle_type=True)
 
-
-def ParticleMass(field, data):
-    return data['particle_mass']
-
-
-def _convertParticleMass(field, data):
-    return data.convert('particle_mass')
-add_field("ParticleMass",
-          function=ParticleMass,
+def _convertParticleMass(data):
+    return np.float64(data.convert('particle_mass'))
+add_field("particle_mass",
+          function=NullFunc,
           convert_function=_convertParticleMass,
           units=r"\rm{g}",
           particle_type=True)
-
-
-def ParticleMassMsunAll(field, data):
-    return data['all', 'particle_mass'] * \
-        data.pf.conversion_factors['particle_mass_msun']
-add_field(('all', "ParticleMassMsun"),
-          function=ParticleMassMsunAll,
-          units=r"\rm{M\odot}", particle_type=True)
-
-
-def ParticleMassMsunStars(field, data):
-    return data['stars', 'particle_mass'] * \
-        data.pf.conversion_factors['particle_mass_msun']
-add_field(('stars', "ParticleMassMsun"),
-          function=ParticleMassMsunStars,
-          units=r"\rm{M\odot}", particle_type=True)
-
-
-def ParticleMassMsunNbody(field, data):
-    return data['nbody', 'particle_mass'] * \
-        data.pf.conversion_factors['particle_mass_msun']
-add_field(('nbody', "ParticleMassMsun"),
-          function=ParticleMassMsunNbody,
-          units=r"\rm{M\odot}", particle_type=True)
-
+add_artio_field("particle_index", function=NullFunc, particle_type=True)
 
 #add_artio_field("creation_time", function=NullFunc, particle_type=True)
 def _particle_age(field, data):
@@ -303,6 +275,15 @@
 add_field(("stars","particle_age"), function=_particle_age, units=r"\rm{s}",
           particle_type=True)
 
+# We can now set up particle vector and particle deposition fields.
+
+for ptype in ("all", "nbody", "stars"):
+    particle_vector_functions(ptype,
+        ["particle_position_%s" % ax for ax in 'xyz'],
+        ["particle_velocity_%s" % ax for ax in 'xyz'],
+        ARTIOFieldInfo)
+    particle_deposition_functions(ptype, "Coordinates", "particle_mass",
+        ARTIOFieldInfo)
 
 def mass_dm(field, data):
     tr = np.ones(data.ActiveDimensions, dtype='float32')

diff -r 9eaa5e6f93fff270c80ae725f510d586567351c0 -r f4e40fbbadc2438a75b629d03300526f3763a7f2 yt/frontends/artio/io.py
--- a/yt/frontends/artio/io.py
+++ b/yt/frontends/artio/io.py
@@ -49,4 +49,7 @@
         for onechunk in chunks:
             for artchunk in onechunk.objs:
                 artchunk.fill_particles(tr, fields)
+        for ftype, fname in tr.keys():
+            if fname == "particle_mass":
+                tr[ftype, fname] = tr[ftype, fname].astype("float64")
         return tr

Repository URL: https://bitbucket.org/yt_analysis/yt-3.0/

--

This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.



More information about the yt-svn mailing list