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

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Wed Oct 1 11:58:31 PDT 2014


1 new commit in yt:

https://bitbucket.org/yt_analysis/yt/commits/05de9b2f84be/
Changeset:   05de9b2f84be
Branch:      yt
User:        MatthewTurk
Date:        2014-10-01 18:58:21+00:00
Summary:     Merged in ChrisMalone/yt (pull request #1226)

Maestro/Castro field cleanup
Affected #:  1 file

diff -r 7c48b53f10cb25b0b2aa820706f5f54ec292e9ae -r 05de9b2f84be6cc8b933f0af75ac211a57a44d7d yt/frontends/boxlib/fields.py
--- a/yt/frontends/boxlib/fields.py
+++ b/yt/frontends/boxlib/fields.py
@@ -15,6 +15,7 @@
 
 import numpy as np
 import string
+import re
 
 from yt.utilities.physical_constants import \
     mh, boltzmann_constant_cgs, amu_cgs
@@ -25,6 +26,9 @@
 mom_units = "code_mass / (code_time * code_length**2)"
 eden_units = "code_mass / (code_time**2 * code_length)" # erg / cm^3
 
+spec_finder = re.compile(r'.*\((\D*)(\d*)\).*')
+
+
 def _thermal_energy_density(field, data):
     # What we've got here is UEINT:
     # u here is velocity
@@ -35,18 +39,21 @@
                + data["momentum_z"]**2) / data["density"]
     return data["eden"] - ke
 
+
 def _thermal_energy(field, data):
     # This is little e, so we take thermal_energy_density and divide by density
     return data["thermal_energy_density"] / data["density"]
 
-def _temperature(field,data):
+
+def _temperature(field, data):
     mu = data.ds.parameters["mu"]
     gamma = data.ds.parameters["gamma"]
-    tr  = data["thermal_energy_density"] / data["density"]
+    tr = data["thermal_energy_density"] / data["density"]
     tr *= mu * amu_cgs / boltzmann_constant_cgs
     tr *= (gamma - 1.0)
     return tr
 
+
 class BoxlibFieldInfo(FieldInfoContainer):
     known_other_fields = (
         ("density", (rho_units, ["density"], None)),
@@ -91,11 +98,11 @@
         if any(f[1] == "xmom" for f in self.field_list):
             self.setup_momentum_to_velocity()
         self.add_field(("gas", "thermal_energy"),
-                       function = _thermal_energy,
-                       units = "erg/g")
+                       function=_thermal_energy,
+                       units="erg/g")
         self.add_field(("gas", "thermal_energy_density"),
-                       function = _thermal_energy_density,
-                       units = "erg/cm**3")
+                       function=_thermal_energy_density,
+                       units="erg/cm**3")
         if ("gas", "temperature") not in self.field_aliases:
             self.add_field(("gas", "temperature"),
                            function=_temperature,
@@ -107,8 +114,9 @@
                 return data["%smom" % axis]/data["density"]
         for ax in 'xyz':
             self.add_field(("gas", "velocity_%s" % ax),
-                           function = _get_vel(ax),
-                           units = "cm/s")
+                           function=_get_vel(ax),
+                           units="cm/s")
+
 
 class CastroFieldInfo(FieldInfoContainer):
 
@@ -125,22 +133,27 @@
         # internal energy density (not just thermal)
         ("rho_e", ("erg/cm**3", [], r"\rho e")),
         ("Temp", ("K", ["temperature"], r"T")),
-        ("grav_x", ("cm/s**2", [], r"g\cdot e_x")),
-        ("grav_y", ("cm/s**2", [], r"g\cdot e_y")),
-        ("grav_z", ("cm/s**2", [], r"g\cdot e_z")),
+        ("grav_x", ("cm/s**2", [],
+                    r"\left(\mathbf{g} \cdot \mathbf{e}\right)_x")),
+        ("grav_y", ("cm/s**2", [],
+                    r"\left(\mathbf{g} \cdot \mathbf{e}\right)_y")),
+        ("grav_z", ("cm/s**2", [],
+                    r"\left(\mathbf{g} \cdot \mathbf{e}\right)_z")),
         ("pressure", ("dyne/cm**2", [], r"p")),
-        ("kineng", ("erg/cm**3", [], r"\frac{1}{2}\rho|U|**2")),
-        ("soundspeed", ("cm/s", ["sound_speed"], None)),
-        ("Machnumber", ("", ["mach_number"], None)),
+        ("kineng", ("erg/cm**3", [], r"\frac{1}{2}\rho|\mathbf{U}|**2")),
+        ("soundspeed", ("cm/s", ["sound_speed"], "Sound Speed")),
+        ("Machnumber", ("", ["mach_number"], "Mach Number")),
         ("entropy", ("erg/(g*K)", ["entropy"], r"s")),
-        ("magvort", ("1/s", ["vorticity_magnitude"], r"|\nabla \times U|")),
-        ("divu", ("1/s", [], r"\nabla \cdot U")),
+        ("magvort", ("1/s", ["vorticity_magnitude"],
+                     r"|\nabla \times \mathbf{U}|")),
+        ("divu", ("1/s", [], r"\nabla \cdot \mathbf{U}")),
         ("eint_E", ("erg/g", [], r"e(E,U)")),
         ("eint_e", ("erg/g", [], r"e")),
-        ("magvel", ("cm/s", ["velocity_magnitude"], r"|U|")),
-        ("radvel", ("cm/s", [], r"U\cdot e_r")),
-        ("magmom", ("g*cm/s", ["momentum_magnitude"], r"|\rho U|")),
-        ("maggrav", ("cm/s**2", [], r"|g|")),
+        ("magvel", ("cm/s", ["velocity_magnitude"], r"|\mathbf{U}|")),
+        ("radvel", ("cm/s", [],
+                    r"\left(\mathbf{U} \cdot \mathbf{e}\right)_r")),
+        ("magmom", ("g*cm/s", ["momentum_magnitude"], r"|\rho \mathbf{U}|")),
+        ("maggrav", ("cm/s**2", [], r"|\mathbf{g}|")),
         ("phiGrav", ("erg/g", [], r"|\Phi|")),
     )
 
@@ -149,15 +162,12 @@
         for _, field in self.ds.field_list:
             if field.startswith("X("):
                 # We have a fraction
-                nice_name = field[2:-1]
-                self.alias(("gas", "%s_fraction" % nice_name), ("boxlib", field),
-                           units = "")
-                def _create_density_func(field_name):
-                    def _func(field, data):
-                        return data[field_name] * data["gas", "density"]
-                    return _func
+                nice_name, tex_label = _nice_species_name(field)
+                self.alias(("gas", "%s_fraction" % nice_name),
+                           ("boxlib", field),
+                           units="")
                 func = _create_density_func(("gas", "%s_fraction" % nice_name))
-                self.add_field(name = ("gas", "%s_density" % nice_name),
+                self.add_field(name=("gas", "%s_density" % nice_name),
                                function = func,
                                units = "g/cm**3")
                 # We know this will either have one letter, or two.
@@ -168,6 +178,7 @@
                 weight = int(weight)
                 # Here we can, later, add number density.
 
+
 class MaestroFieldInfo(FieldInfoContainer):
 
     known_other_fields = (
@@ -175,32 +186,35 @@
         ("x_vel", ("cm/s", ["velocity_x"], r"\tilde{u}")),
         ("y_vel", ("cm/s", ["velocity_y"], r"\tilde{v}")),
         ("z_vel", ("cm/s", ["velocity_z"], r"\tilde{w}")),
-        ("magvel", ("cm/s", ["velocity_magnitude"], r"|\tilde{U} + w_0 e_r|")),
+        ("magvel", ("cm/s", ["velocity_magnitude"],
+                    r"|\tilde{\mathbf{U}} + w_0 \mathbf{e}_r|")),
         ("radial_velocity", ("cm/s", [], r"U\cdot e_r")),
-        ("tfromp", ("K", [], None)),
-        ("tfromh", ("K", [], None)),
-        ("Machnumber", ("", ["mach_number"], None)),
+        ("tfromp", ("K", [], "T(\\rho,p,X)")),
+        ("tfromh", ("K", [], "T(\\rho,h,X)")),
+        ("Machnumber", ("", ["mach_number"], "Mach Number")),
         ("S", ("1/s", [], None)),
         ("ad_excess", ("", [], "Adiabatic Excess")),
-        ("deltaT", ("", [], None)),
-        ("deltagamma", ("", [], None)),
-        ("deltap", ("", [], None)),
-        ("divw0", ("1/s", [], None)),
+        ("deltaT", ("", [], "[T(\\rho,h,X) - T(\\rho,p,X)]/T(\\rho,h,X)")),
+        ("deltagamma", ("", [], "\Gamma_1 - \overline{\Gamma_1}")),
+        ("deltap", ("", [], "[p(\\rho,h,X) - p_0] / p_0")),
+        ("divw0", ("1/s", [], "\nabla \cdot \mathbf{w}_0")),
         # Specific entropy
-        ("entropy", ("erg/(g*K)", ["entropy"], None)),
-        ("entropypert", ("", [], None)),
-        ("enucdot", ("erg/(g*s)", [], None)),
-        ("gpi_x", ("dyne/cm**3", [], None)), # Perturbational pressure grad
-        ("gpi_y", ("dyne/cm**3", [], None)),
-        ("gpi_z", ("dyne/cm**3", [], None)),
-        ("h", ("erg/g", [], "Specific Enthalpy")),
-        ("h0", ("erg/g", [], "Base State Specific Enthalpy")),
+        ("entropy", ("erg/(g*K)", ["entropy"], "s")),
+        ("entropypert", ("", [], "[s - \overline{s}] / \overline{s}")),
+        ("enucdot", ("erg/(g*s)", [], "\dot{\epsilon_{nuc}}")),
+        ("Hext", ("erg/(g*s)", [], "H_{ext}")),
+        # Perturbational pressure grad
+        ("gpi_x", ("dyne/cm**3", [], "\left(\nabla\pi\right)_x")),
+        ("gpi_y", ("dyne/cm**3", [], "\left(\nabla\pi\right)_y")),
+        ("gpi_z", ("dyne/cm**3", [], "\left(\nabla\pi\right)_z")),
+        ("h", ("erg/g", [], "h")),
+        ("h0", ("erg/g", [], "h_0")),
         # Momentum cannot be computed because we need to include base and
         # full state.
         ("momentum", ("g*cm/s", ["momentum_magnitude"], None)),
         ("p0", ("erg/cm**3", [], "p_0")),
         ("p0pluspi", ("erg/cm**3", [], "p_0 + \pi")),
-        ("pi", ("erg/cm**3", [], None)),
+        ("pi", ("erg/cm**3", [], "\pi")),
         ("pioverp0", ("", [], "\pi/p_0")),
         # Base state density
         ("rho0", ("g/cm**3", [], "\\rho_0")),
@@ -211,39 +225,42 @@
         ("rhopert", ("g/cm**3", [], "\\rho^\prime")),
         ("soundspeed", ("cm/s", ["sound_speed"], None)),
         ("sponge", ("", [], None)),
-        ("tpert", ("K", [], None)),
+        ("tpert", ("K", [], "T - \overline{T}")),
         # Again, base state -- so we can't compute ourselves.
-        ("vort", ("1/s", ["vorticity_magnitude"], None)),
+        ("vort", ("1/s", ["vorticity_magnitude"], "|\nabla\times\tilde{U}|")),
         # Base state
-        ("w0_x", ("cm/s", [], None)),
-        ("w0_y", ("cm/s", [], None)),
-        ("w0_z", ("cm/s", [], None)),
+        ("w0_x", ("cm/s", [], "(w_0)_x")),
+        ("w0_y", ("cm/s", [], "(w_0)_y")),
+        ("w0_z", ("cm/s", [], "(w_0)_z")),
     )
 
     def setup_fluid_fields(self):
         # pick the correct temperature field
         if self.ds.parameters["use_tfromp"]:
             self.alias(("gas", "temperature"), ("boxlib", "tfromp"),
-                       units = "K")
+                       units="K")
         else:
             self.alias(("gas", "temperature"), ("boxlib", "tfromh"),
-                       units = "K")
+                       units="K")
 
         # Add X's and omegadots, units of 1/s
         for _, field in self.ds.field_list:
             if field.startswith("X("):
-                # We have a fraction
-                nice_name = field[2:-1]
-                self.alias(("gas", "%s_fraction" % nice_name), ("boxlib", field),
-                           units = "")
-                def _create_density_func(field_name):
-                    def _func(field, data):
-                        return data[field_name] * data["gas", "density"]
-                    return _func
+                # We have a mass fraction
+                nice_name, tex_label = _nice_species_name(field)
+                # Overwrite field to use nicer tex_label display_name
+                self.add_output_field(("boxlib", field),
+                                      units="",
+                                      display_name=tex_label)
+                self.alias(("gas", "%s_fraction" % nice_name),
+                           ("boxlib", field),
+                           units="")
                 func = _create_density_func(("gas", "%s_fraction" % nice_name))
-                self.add_field(name = ("gas", "%s_density" % nice_name),
-                               function = func,
-                               units = "g/cm**3")
+                self.add_field(name=("gas", "%s_density" % nice_name),
+                               function=func,
+                               units="g/cm**3",
+                               display_name=r'\rho %s' % tex_label)
+
                 # Most of the time our species will be of the form
                 # element name + atomic weight (e.g. C12), but
                 # sometimes we make up descriptive names (e.g. ash)
@@ -256,8 +273,30 @@
                     weight = int(weight)
 
                 # Here we can, later, add number density.
-            if field.startswith("omegadot("):
-                nice_name = field[9:-1]
-                self.add_output_field(("boxlib", field), units = "1/s")
+            elif field.startswith("omegadot("):
+                nice_name, tex_label = _nice_species_name(field)
+                display_name = r'\dot{\omega}\left[%s\right]' % tex_label
+                # Overwrite field to use nicer tex_label'ed display_name
+                self.add_output_field(("boxlib", field), units="1/s",
+                                      display_name=display_name)
                 self.alias(("gas", "%s_creation_rate" % nice_name),
-                           ("boxlib", field), units = "1/s")
+                           ("boxlib", field), units="1/s")
+
+
+def _nice_species_name(field):
+    spec_match = spec_finder.search(field)
+    nice_name = ''.join(spec_match.groups())
+    # if the species field is a descriptive name, then the match
+    # on the integer will be blank
+    # modify the tex string in this case to remove spurious tex spacing
+    lab = r"X\left(^{%s}%s\right)"
+    if spec_match.groups()[-1] == "":
+        lab = r"X\left(%s%s\right)"
+    tex_label = lab % spec_match.groups()[::-1]
+    return nice_name, tex_label
+
+
+def _create_density_func(field_name):
+    def _func(field, data):
+        return data[field_name] * data["gas", "density"]
+    return _func

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