[yt-svn] commit/yt: 5 new changesets
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Wed Oct 1 11:58:30 PDT 2014
5 new commits in yt:
https://bitbucket.org/yt_analysis/yt/commits/99afc9823928/
Changeset: 99afc9823928
Branch: yt
User: ChrisMalone
Date: 2014-09-26 23:33:46+00:00
Summary: start working on cleaning up maestro fields
Affected #: 1 file
diff -r 4cf5c5369df9b012759ab979330d8e356d1b0e00 -r 99afc9823928130f3d0bc68231d6c8dc904c2f57 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,8 @@
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
@@ -175,32 +178,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)),
+ ("tfromp", ("K", [], "T(\\rho,p,X)")),
+ ("tfromh", ("K", [], "T(\\rho,h,X)")),
("Machnumber", ("", ["mach_number"], None)),
("S", ("1/s", [], None)),
("ad_excess", ("", [], "Adiabatic Excess")),
- ("deltaT", ("", [], None)),
- ("deltagamma", ("", [], None)),
- ("deltap", ("", [], None)),
- ("divw0", ("1/s", [], None)),
+ ("deltaT", ("", [], "\delta T")),
+ ("deltagamma", ("", [], "\Gamma_1^ - \bar \Gamma_1")),
+ ("deltap", ("", [], "\delta p")),
+ ("divw0", ("1/s", [], "\nabla 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", ("", [], "\delta 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 +217,43 @@
("rhopert", ("g/cm**3", [], "\\rho^\prime")),
("soundspeed", ("cm/s", ["sound_speed"], None)),
("sponge", ("", [], None)),
- ("tpert", ("K", [], None)),
+ ("tpert", ("K", [], "T - \bar 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 = "")
+ nice_name, tex_label = _nice_species_name(field)
+ print nice_name, tex_label
+ 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
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)
@@ -257,7 +267,20 @@
# 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")
+ nice_name, tex_label = _nice_species_name(field)
+ print nice_name, tex_label
+ display_name = r'\dot{\omega}\left[%s\right]' % tex_label
+ 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):
+ nice_name = None
+ tex_label = None
+ spec_match = spec_finder.search(field)
+ if spec_match is not None:
+ nice_name = ''.join(spec_match.groups())
+ tex_label = r"X\left(^{%s}%s\right)" % spec_match.groups()[::-1]
+ return nice_name, tex_label
https://bitbucket.org/yt_analysis/yt/commits/21ffeb487416/
Changeset: 21ffeb487416
Branch: yt
User: ChrisMalone
Date: 2014-09-29 16:22:22+00:00
Summary: pep8'ing and unification of code
Affected #: 1 file
diff -r 99afc9823928130f3d0bc68231d6c8dc904c2f57 -r 21ffeb48741615587061626bac06f8c3f6937dc8 yt/frontends/boxlib/fields.py
--- a/yt/frontends/boxlib/fields.py
+++ b/yt/frontends/boxlib/fields.py
@@ -28,6 +28,7 @@
spec_finder = re.compile(r'.*\((\D*)(\d*)\).*')
+
def _thermal_energy_density(field, data):
# What we've got here is UEINT:
# u here is velocity
@@ -38,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)),
@@ -94,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,
@@ -110,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):
@@ -128,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|")),
)
@@ -152,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.
@@ -171,6 +178,7 @@
weight = int(weight)
# Here we can, later, add number density.
+
class MaestroFieldInfo(FieldInfoContainer):
known_other_fields = (
@@ -183,11 +191,11 @@
("radial_velocity", ("cm/s", [], r"U\cdot e_r")),
("tfromp", ("K", [], "T(\\rho,p,X)")),
("tfromh", ("K", [], "T(\\rho,h,X)")),
- ("Machnumber", ("", ["mach_number"], None)),
+ ("Machnumber", ("", ["mach_number"], "Mach Number")),
("S", ("1/s", [], None)),
("ad_excess", ("", [], "Adiabatic Excess")),
("deltaT", ("", [], "\delta T")),
- ("deltagamma", ("", [], "\Gamma_1^ - \bar \Gamma_1")),
+ ("deltagamma", ("", [], "\Gamma_1 - \overline{\Gamma_1}")),
("deltap", ("", [], "\delta p")),
("divw0", ("1/s", [], "\nabla w_0")),
# Specific entropy
@@ -217,7 +225,7 @@
("rhopert", ("g/cm**3", [], "\\rho^\prime")),
("soundspeed", ("cm/s", ["sound_speed"], None)),
("sponge", ("", [], None)),
- ("tpert", ("K", [], "T - \bar T")),
+ ("tpert", ("K", [], "T - \overline{T}")),
# Again, base state -- so we can't compute ourselves.
("vort", ("1/s", ["vorticity_magnitude"], "|\nabla\times\tilde{U}|")),
# Base state
@@ -238,21 +246,20 @@
# Add X's and omegadots, units of 1/s
for _, field in self.ds.field_list:
if field.startswith("X("):
- # We have a fraction
+ # We have a mass fraction
nice_name, tex_label = _nice_species_name(field)
- print nice_name, tex_label
+ # 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="")
- def _create_density_func(field_name):
- def _func(field, data):
- return data[field_name] * data["gas", "density"]
- return _func
func = _create_density_func(("gas", "%s_fraction" % nice_name))
self.add_field(name=("gas", "%s_density" % nice_name),
function=func,
units="g/cm**3",
- display_name=r'\\rho%s' % tex_label)
+ 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
@@ -266,10 +273,10 @@
weight = int(weight)
# Here we can, later, add number density.
- if field.startswith("omegadot("):
+ elif field.startswith("omegadot("):
nice_name, tex_label = _nice_species_name(field)
- print nice_name, tex_label
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),
@@ -277,10 +284,19 @@
def _nice_species_name(field):
- nice_name = None
- tex_label = None
spec_match = spec_finder.search(field)
- if spec_match is not None:
- nice_name = ''.join(spec_match.groups())
- tex_label = r"X\left(^{%s}%s\right)" % spec_match.groups()[::-1]
+ 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
https://bitbucket.org/yt_analysis/yt/commits/fca451dc5c88/
Changeset: fca451dc5c88
Branch: yt
User: ChrisMalone
Date: 2014-09-29 16:30:17+00:00
Summary: merge
Affected #: 6 files
diff -r 21ffeb48741615587061626bac06f8c3f6937dc8 -r fca451dc5c88a22f4db6471d621dfeda77b38eab doc/install_script.sh
--- a/doc/install_script.sh
+++ b/doc/install_script.sh
@@ -986,8 +986,10 @@
if !( ( ${DEST_DIR}/bin/python2.7 -c "import readline" 2>&1 )>> ${LOG_FILE})
then
- echo "Installing pure-python readline"
- ( ${DEST_DIR}/bin/pip install readline 2>&1 ) 1>> ${LOG_FILE}
+ if !( ( ${DEST_DIR}/bin/python2.7 -c "import gnureadline" 2>&1 )>> ${LOG_FILE})
+ echo "Installing pure-python readline"
+ ( ${DEST_DIR}/bin/pip install gnureadline 2>&1 ) 1>> ${LOG_FILE}
+ fi
fi
if [ $INST_ENZO -eq 1 ]
diff -r 21ffeb48741615587061626bac06f8c3f6937dc8 -r fca451dc5c88a22f4db6471d621dfeda77b38eab doc/source/index.rst
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -44,6 +44,16 @@
<tr valign="top"><td width="25%"><p>
+ <a href="examining/index.html">Loading and Examining Data</a>
+ </p>
+ </td>
+ <td width="75%">
+ <p class="linkdescr">How to load and examine all dataset types in yt</p>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td width="25%">
+ <p><a href="yt3differences.html">yt 3.0</a></p></td>
@@ -84,16 +94,6 @@
<tr valign="top"><td width="25%"><p>
- <a href="examining/index.html">Examining Data</a>
- </p>
- </td>
- <td width="75%">
- <p class="linkdescr">Load data and directly access raw values for low-level analysis</p>
- </td>
- </tr>
- <tr valign="top">
- <td width="25%">
- <p><a href="developing/index.html">Developing in yt</a></p></td>
diff -r 21ffeb48741615587061626bac06f8c3f6937dc8 -r fca451dc5c88a22f4db6471d621dfeda77b38eab yt/data_objects/data_containers.py
--- a/yt/data_objects/data_containers.py
+++ b/yt/data_objects/data_containers.py
@@ -496,7 +496,8 @@
# really ugly check to ensure that this field really does exist somewhere,
# in some naming convention, before returning it as a possible field type
- if (ftype,fname) not in self.ds.field_list and \
+ if (ftype,fname) not in self.ds.field_info and \
+ (ftype,fname) not in self.ds.field_list and \
fname not in self.ds.field_list and \
(ftype,fname) not in self.ds.derived_field_list and \
fname not in self.ds.derived_field_list and \
diff -r 21ffeb48741615587061626bac06f8c3f6937dc8 -r fca451dc5c88a22f4db6471d621dfeda77b38eab yt/frontends/gdf/data_structures.py
--- a/yt/frontends/gdf/data_structures.py
+++ b/yt/frontends/gdf/data_structures.py
@@ -26,12 +26,20 @@
GridIndex
from yt.data_objects.static_output import \
Dataset
+from yt.utilities.exceptions import \
+ YTGDFUnknownGeometry
from yt.utilities.lib.misc_utilities import \
get_box_grids_level
-from yt.units.yt_array import \
- uconcatenate, YTArray
+from .fields import GDFFieldInfo
-from .fields import GDFFieldInfo
+
+GEOMETRY_TRANS = {
+ 0: "cartesian",
+ 1: "polar",
+ 2: "cylindrical",
+ 3: "spherical",
+}
+
class GDFGrid(AMRGridPatch):
_id_offset = 0
@@ -65,6 +73,7 @@
self.dds
self.dds = self.ds.arr(self.dds, "code_length")
+
class GDFHierarchy(GridIndex):
grid = GDFGrid
@@ -145,8 +154,9 @@
Gets back all the grids between a left edge and right edge
"""
eps = np.finfo(np.float64).eps
- grid_i = np.where(np.all((self.grid_right_edge - left_edge) > eps, axis=1) &
- np.all((right_edge - self.grid_left_edge) > eps, axis=1))
+ grid_i = np.where(
+ np.all((self.grid_right_edge - left_edge) > eps, axis=1) &
+ np.all((right_edge - self.grid_left_edge) > eps, axis=1))
return self.grids[grid_i], grid_i
@@ -162,7 +172,7 @@
_field_info_class = GDFFieldInfo
def __init__(self, filename, dataset_type='grid_data_format',
- storage_filename=None, geometry = 'cartesian'):
+ storage_filename=None, geometry=None):
self.geometry = geometry
self.fluid_types += ("gdf",)
Dataset.__init__(self, filename, dataset_type)
@@ -198,7 +208,7 @@
current_unit = h5f["/dataset_units/%s" % unit_name]
value = current_unit.value
unit = current_unit.attrs["unit"]
- setattr(self, unit_name, self.quan(value,unit))
+ setattr(self, unit_name, self.quan(value, unit))
else:
self.length_unit = self.quan(1.0, "cm")
self.mass_unit = self.quan(1.0, "g")
@@ -214,6 +224,12 @@
else:
self.data_software = "unknown"
sp = self._handle["/simulation_parameters"].attrs
+ if self.geometry is None:
+ geometry = just_one(sp.get("geometry", 0))
+ try:
+ self.geometry = GEOMETRY_TRANS[geometry]
+ except KeyError:
+ raise YTGDFUnknownGeometry(geometry)
self.parameters.update(sp)
self.domain_left_edge = sp["domain_left_edge"][:]
self.domain_right_edge = sp["domain_right_edge"][:]
diff -r 21ffeb48741615587061626bac06f8c3f6937dc8 -r fca451dc5c88a22f4db6471d621dfeda77b38eab yt/utilities/exceptions.py
--- a/yt/utilities/exceptions.py
+++ b/yt/utilities/exceptions.py
@@ -94,7 +94,7 @@
def __str__(self):
return ("The display name \"%s\" "
- "of the derived field %s "
+ "of the derived field %s "
"contains the following LaTeX parser errors:\n" ) \
% (self.display_name, self.field_name) + self.mathtext_error
@@ -106,7 +106,7 @@
def __str__(self):
return ("The unit display name \"%s\" "
- "of the derived field %s "
+ "of the derived field %s "
"contains the following LaTeX parser errors:\n" ) \
% (self.unit_name, self.field_name) + self.mathtext_error
@@ -116,7 +116,7 @@
def __str__(self):
return self.message
-
+
class MissingParameter(YTException):
def __init__(self, ds, parameter):
YTException.__init__(self, ds=ds)
@@ -425,3 +425,14 @@
def __str__(self):
return "A file already exists at %s and clobber=False." % self.filename
+
+
+class YTGDFUnknownGeometry(Exception):
+ def __init__(self, geometry):
+ self.geometry = geometry
+
+ def __str__(self):
+ return '''Unknown geometry %i. Please refer to GDF standard
+ for more information''' % self.geometry
+
+
diff -r 21ffeb48741615587061626bac06f8c3f6937dc8 -r fca451dc5c88a22f4db6471d621dfeda77b38eab yt/utilities/fits_image.py
--- a/yt/utilities/fits_image.py
+++ b/yt/utilities/fits_image.py
@@ -341,7 +341,7 @@
def __init__(self, ds, axis, fields, center="c", weight_field=None, **kwargs):
fields = ensure_list(fields)
axis = fix_axis(axis, ds)
- center = get_sanitized_center(center, ds)
+ center = ds.coordinates.sanitize_center(center, axis)
prj = ds.proj(fields[0], axis, weight_field=weight_field, **kwargs)
w, frb = construct_image(prj, center=center)
super(FITSProjection, self).__init__(frb, fields=fields, wcs=w)
https://bitbucket.org/yt_analysis/yt/commits/b7dd7a433980/
Changeset: b7dd7a433980
Branch: yt
User: ChrisMalone
Date: 2014-09-29 17:07:15+00:00
Summary: some more explicitness
Affected #: 1 file
diff -r fca451dc5c88a22f4db6471d621dfeda77b38eab -r b7dd7a433980d5284bf81a811c578f40f0352ddc yt/frontends/boxlib/fields.py
--- a/yt/frontends/boxlib/fields.py
+++ b/yt/frontends/boxlib/fields.py
@@ -194,13 +194,13 @@
("Machnumber", ("", ["mach_number"], "Mach Number")),
("S", ("1/s", [], None)),
("ad_excess", ("", [], "Adiabatic Excess")),
- ("deltaT", ("", [], "\delta T")),
+ ("deltaT", ("", [], "[T(\\rho,h,X) - T(\\rho,p,X)]/T(\\rho,h,X)")),
("deltagamma", ("", [], "\Gamma_1 - \overline{\Gamma_1}")),
- ("deltap", ("", [], "\delta p")),
- ("divw0", ("1/s", [], "\nabla w_0")),
+ ("deltap", ("", [], "[p(\\rho,h,X) - p_0] / p_0")),
+ ("divw0", ("1/s", [], "\nabla \cdot \mathbf{w}_0")),
# Specific entropy
("entropy", ("erg/(g*K)", ["entropy"], "s")),
- ("entropypert", ("", [], "\delta s")),
+ ("entropypert", ("", [], "[s - \overline{s}] / \overline{s}")),
("enucdot", ("erg/(g*s)", [], "\dot{\epsilon_{nuc}}")),
("Hext", ("erg/(g*s)", [], "H_{ext}")),
# Perturbational pressure grad
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