[yt-svn] commit/yt: MatthewTurk: Merged in karraki/yt (pull request #1438)

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Thu Jul 23 09:12:45 PDT 2015


1 new commit in yt:

https://bitbucket.org/yt_analysis/yt/commits/fcc7f7abfff1/
Changeset:   fcc7f7abfff1
Branch:      yt
User:        MatthewTurk
Date:        2015-07-23 16:12:33+00:00
Summary:     Merged in karraki/yt (pull request #1438)

[NEW] NMSU-ART tests
Affected #:  4 files

diff -r 610e1c392d21d529b1fcb2ed88c98f50f67bcde0 -r fcc7f7abfff1f2d6c0598bc54b421121ab4d029b yt/frontends/art/data_structures.py
--- a/yt/frontends/art/data_structures.py
+++ b/yt/frontends/art/data_structures.py
@@ -255,7 +255,6 @@
         self.velocity_unit = self.quan(velocity, "cm/s")
         self.time_unit = self.length_unit / self.velocity_unit
 
-
     def _parse_parameter_file(self):
         """
         Get the various simulation parameters & constants.

diff -r 610e1c392d21d529b1fcb2ed88c98f50f67bcde0 -r fcc7f7abfff1f2d6c0598bc54b421121ab4d029b yt/frontends/art/fields.py
--- a/yt/frontends/art/fields.py
+++ b/yt/frontends/art/fields.py
@@ -60,3 +60,75 @@
         ("particle_metallicity1", ("", [], None)),
         ("particle_metallicity2", ("", [], None)),
     )
+
+    def setup_fluid_fields(self):
+        def _temperature(field, data):
+            r0 = data.ds.parameters['boxh'] / data.ds.parameters['ng']
+            tr = data.ds.quan(3.03e5 * r0**2, 'K/code_velocity**2')
+            tr *= data.ds.parameters['wmu'] * data.ds.parameters['Om0']
+            tr *= (data.ds.parameters['gamma'] - 1.)
+            tr /= data.ds.parameters['aexpn']**2
+            return  tr * data['art', 'GasEnergy'] / data['art', 'Density']
+        self.add_field(('gas', 'temperature'),
+                       function=_temperature, 
+                       units='K')
+
+        def _get_vel(axis):
+            def velocity(field, data):
+                return (data[('gas','momentum_%s' % axis)] /
+                        data[('gas','density')])
+            return velocity
+        for ax in 'xyz':
+            self.add_field(('gas','velocity_%s' % ax),
+                           function = _get_vel(ax),
+                           units='cm/s')
+
+        def _momentum_magnitude(field, data):
+            tr = (data['gas','momentum_x']**2 +
+                  data['gas','momentum_y']**2 +
+                  data['gas','momentum_z']**2)**0.5
+            tr *= data['index','cell_volume'].in_units('cm**3')
+            return tr
+        self.add_field(('gas', 'momentum_magnitude'),
+                       function=_momentum_magnitude,
+                       units='g*cm/s')
+
+        def _velocity_magnitude(field, data):
+            tr = data['gas','momentum_magnitude']
+            tr /= data['gas','cell_mass']
+            return tr
+        self.add_field(('gas', 'velocity_magnitude'),
+                       function=_velocity_magnitude,
+                       units='cm/s')
+
+        def _metal_density(field, data):
+            tr = data['gas','metal_ia_density']
+            tr += data['gas','metal_ii_density']
+            return tr
+        self.add_field(('gas','metal_density'),
+                       function=_metal_density,
+                       units='g/cm**3')
+
+        def _metal_mass_fraction(field, data):
+            tr = data['gas','metal_density']
+            tr /= data['gas','density']
+            return tr
+        self.add_field(('gas', 'metal_mass_fraction'),
+                       function=_metal_mass_fraction,
+                       units='')
+
+        def _H_mass_fraction(field, data):
+            tr = (1. - data.ds.parameters['Y_p'] - 
+                  data['gas', 'metal_mass_fraction'])
+            return tr
+        self.add_field(('gas', 'H_mass_fraction'),
+                       function=_H_mass_fraction,
+                       units='')
+
+        def _metallicity(field, data):
+            tr = data['gas','metal_mass_fraction']
+            tr /= data['gas','H_mass_fraction']
+            return tr
+        self.add_field(('gas', 'metallicity'),
+                       function=_metallicity,
+                       units='')

diff -r 610e1c392d21d529b1fcb2ed88c98f50f67bcde0 -r fcc7f7abfff1f2d6c0598bc54b421121ab4d029b yt/frontends/art/io.py
--- a/yt/frontends/art/io.py
+++ b/yt/frontends/art/io.py
@@ -133,7 +133,7 @@
                 tr[field] = rp([ax])[0]/dd - off
             if fname.startswith("particle_velocity_%s" % ax):
                 tr[field], = rp(['v'+ax])
-        if fname == "particle_mass":
+        if fname.startswith("particle_mass"):
             a = 0
             data = np.zeros(npa, dtype='f8')
             for ptb, size, m in zip(pbool, sizes, self.ws):
@@ -170,7 +170,7 @@
             tr[field] = temp
             del data
         # We check again, after it's been filled
-        if fname == "particle_mass":
+        if fname.startswith("particle_mass"):
             # We now divide by NGrid in order to make this match up.  Note that
             # this means that even when requested in *code units*, we are
             # giving them as modified by the ng value.  This only works for
@@ -239,7 +239,7 @@
                 tr[field] = rp([ax])[0]/dd - off
             if fname.startswith("particle_velocity_%s" % ax):
                 tr[field], = rp(['v'+ax])
-        if fname == "particle_mass":
+        if fname.startswith("particle_mass"):
             a = 0
             data = np.zeros(npa, dtype='f8')
             for ptb, size, m in zip(pbool, sizes, self.ws):
@@ -269,7 +269,7 @@
             tr[field] = temp
             del data
         # We check again, after it's been filled
-        if fname == "particle_mass":
+        if fname.startswith("particle_mass"):
             # We now divide by NGrid in order to make this match up.  Note that
             # this means that even when requested in *code units*, we are
             # giving them as modified by the ng value.  This only works for
@@ -482,7 +482,8 @@
     data = {}
     with open(file, 'rb') as fh:
         for dtype, variables in star_struct:
-            found = field in variables or field == variables
+            found = (isinstance(variables, tuple) and field in variables) or \
+                field == variables
             if found:
                 data[field] = read_vector(fh, dtype[1], dtype[0])
             else:

diff -r 610e1c392d21d529b1fcb2ed88c98f50f67bcde0 -r fcc7f7abfff1f2d6c0598bc54b421121ab4d029b yt/frontends/art/tests/test_outputs.py
--- a/yt/frontends/art/tests/test_outputs.py
+++ b/yt/frontends/art/tests/test_outputs.py
@@ -46,6 +46,49 @@
                         dobj_name)
 
 
+    ad = ds.all_data()
+    # 'Ana' variable values output from the ART Fortran 'ANA' analysis code
+    AnaNStars = 6255
+    yield assert_equal, ad[('stars','particle_type')].size, AnaNStars
+    yield assert_equal, ad[('specie4', 'particle_type')].size, AnaNStars
+    AnaNDM = 2833405
+    yield assert_equal, ad[('darkmatter','particle_type')].size, AnaNDM
+    yield assert_equal, ad[('specie0', 'particle_type')].size + \
+        ad[('specie1', 'particle_type')].size + \
+        ad[('specie2', 'particle_type')].size + \
+        ad[('specie3', 'particle_type')].size, AnaNDM
+
+    AnaBoxSize = yt.units.yt_array.YTQuantity(7.1442196564,'Mpc')
+    AnaVolume = yt.units.yt_array.YTQuantity(364.640074656,'Mpc**3')
+    Volume = 1
+    for i in ds.domain_width.in_units('Mpc'):
+        yield assert_almost_equal, i, AnaBoxSize
+        Volume *= i
+    yield assert_almost_equal, Volume, AnaVolume
+
+    AnaNCells = 4087490
+    yield assert_equal, len(ad[('index','cell_volume')]), AnaNCells
+
+    AnaTotDMMass = yt.units.yt_array.YTQuantity(1.01191786811e+14,'Msun')
+    yield assert_almost_equal, ad[('darkmatter','particle_mass')].sum()\
+        .in_units('Msun'), AnaTotDMMass
+
+    AnaTotStarMass = yt.units.yt_array.YTQuantity(1776251.,'Msun')
+    yield assert_almost_equal, ad[('stars','particle_mass')].sum()\
+        .in_units('Msun'), AnaTotStarMass
+
+    AnaTotStarMassInitial = yt.units.yt_array.YTQuantity(2422854.,'Msun')
+    yield assert_almost_equal, ad[('stars','particle_mass_initial')].sum()\
+        .in_units('Msun'), AnaTotStarMass
+
+    AnaTotGasMass = yt.units.yt_array.YTQuantity(1.781994e+13,'Msun')
+    yield assert_almost_equal, ad[('gas','cell_mass')].sum()\
+        .in_units('Msun'), AnaTotGasMass
+
+    AnaTotTemp = yt.units.yt_array.YTQuantity(1.5019e11, 'K') #just leaves
+    yield assert_equal, ad[('gas','temperature')].sum(), AnaTotTemp
+
+
 @requires_file(d9p)
 def test_ARTDataset():
     assert isinstance(data_dir_load(d9p), ARTDataset)

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

--

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