[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