[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