[yt-svn] commit/yt: 2 new changesets
Bitbucket
commits-noreply at bitbucket.org
Thu Mar 29 13:01:57 PDT 2012
2 new commits in yt:
https://bitbucket.org/yt_analysis/yt/changeset/c54b31309d88/
changeset: c54b31309d88
branch: yt
user: MatthewTurk
date: 2012-03-29 22:01:33
summary: Adding a .params property to the TimeSeries objects, which will return the
following attributes:
refine_by
dimensionality
current_time
domain_dimensions
domain_left_edge
domain_right_edge
unique_identifier
current_redshift
cosmological_simulation
omega_matter
omega_lambda
hubble_constant
affected #: 1 file
diff -r 6b1e902e3e254030b8c41061c222c2b1a152cb9a -r c54b31309d880bb371cb0993bb32c8700648e421 yt/data_objects/time_series.py
--- a/yt/data_objects/time_series.py
+++ b/yt/data_objects/time_series.py
@@ -29,7 +29,7 @@
from yt.convenience import load
from .data_containers import data_object_registry
from .analyzer_objects import create_quantity_proxy, \
- analysis_task_registry
+ analysis_task_registry, AnalysisTask
from .derived_quantities import quantity_info
from yt.utilities.exceptions import YTException
@@ -51,11 +51,34 @@
def __contains__(self, key):
return key in analysis_task_registry
+def get_pf_prop(propname):
+ def _eval(params, pf):
+ return getattr(pf, propname)
+ cls = type(propname, (AnalysisTask,),
+ dict(eval = _eval, _params = tuple()))
+ return cls
+
+attrs = ("refine_by", "dimensionality", "current_time",
+ "domain_dimensions", "domain_left_edge",
+ "domain_right_edge", "unique_identifier",
+ "current_redshift", "cosmological_simulation",
+ "omega_matter", "omega_lambda", "hubble_constant")
+
+class TimeSeriesParametersContainer(object):
+ def __init__(self, data_object):
+ self.data_object = data_object
+
+ def __getattr__(self, attr):
+ if attr in attrs:
+ return self.data_object.eval(get_pf_prop(attr)())
+ raise AttributeError(attr)
+
class TimeSeriesData(object):
def __init__(self, outputs = None):
if outputs is None: outputs = []
self.outputs = outputs
self.tasks = AnalysisTaskProxy(self)
+ self.params = TimeSeriesParametersContainer(self)
for type_name in data_object_registry:
setattr(self, type_name, functools.partial(
TimeSeriesDataObject, self, type_name))
@@ -77,7 +100,6 @@
self.outputs.append(pf)
def eval(self, tasks, obj=None):
- if obj == None: obj = TimeSeriesDataObject(self, "all_data")
tasks = ensure_list(tasks)
return_values = []
for pf in self:
@@ -88,6 +110,8 @@
if style == 'pf':
arg = pf
elif style == 'data_object':
+ if obj == None:
+ obj = TimeSeriesDataObject(self, "all_data")
arg = obj.get(pf)
rv = task.eval(arg)
# We catch and store YT-originating exceptions
https://bitbucket.org/yt_analysis/yt/changeset/f9d3b8d60a61/
changeset: f9d3b8d60a61
branch: yt
user: MatthewTurk
date: 2012-03-29 22:01:48
summary: Merging
affected #: 2 files
diff -r c54b31309d880bb371cb0993bb32c8700648e421 -r f9d3b8d60a61f198d21df52f245e4831a4e7f3ca yt/frontends/flash/data_structures.py
--- a/yt/frontends/flash/data_structures.py
+++ b/yt/frontends/flash/data_structures.py
@@ -79,13 +79,6 @@
def _detect_fields(self):
ncomp = self._handle["/unknown names"].shape[0]
self.field_list = [s for s in self._handle["/unknown names"][:].flat]
- facevars = [s for s in self._handle
- if s.startswith(("fcx","fcy","fcz")) and s[-1].isdigit()]
- nfacevars = len(facevars)
- if (nfacevars > 0) :
- ncomp += nfacevars
- for facevar in facevars :
- self.field_list.append(facevar)
if ("/particle names" in self._handle) :
self.field_list += ["particle_" + s[0].strip() for s
in self._handle["/particle names"][:]]
@@ -106,14 +99,22 @@
f = self._handle # shortcut
pf = self.parameter_file # shortcut
- self.grid_left_edge[:] = f["/bounding box"][:,:,0]
- self.grid_right_edge[:] = f["/bounding box"][:,:,1]
+ # Initialize to the domain left / domain right
+ ND = self.parameter_file.dimensionality
+ DLE = self.parameter_file.domain_left_edge
+ DRE = self.parameter_file.domain_right_edge
+ for i in range(3):
+ self.grid_left_edge[:,i] = DLE[i]
+ self.grid_right_edge[:,i] = DRE[i]
+ # We only go up to ND for 2D datasets
+ self.grid_left_edge[:,:ND] = f["/bounding box"][:,:,0]
+ self.grid_right_edge[:,:ND] = f["/bounding box"][:,:,1]
# Move this to the parameter file
try:
- nxb = pf._find_parameter("integer", "nxb", True)
- nyb = pf._find_parameter("integer", "nyb", True)
- nzb = pf._find_parameter("integer", "nzb", True)
+ nxb = pf.parameters['nxb']
+ nyb = pf.parameters['nyb']
+ nzb = pf.parameters['nzb']
except KeyError:
nxb, nyb, nzb = [int(f["/simulation parameters"]['n%sb' % ax])
for ax in 'xyz']
@@ -232,7 +233,7 @@
self._setup_comoving_units()
if "pc_unitsbase" in self.parameters:
if self.parameters["pc_unitsbase"] == "CGS":
- self.setup_cgs_units()
+ self._setup_cgs_units()
else:
self._setup_nounits_units()
self.time_units['1'] = 1
@@ -332,16 +333,39 @@
# note the ordering here is important: runtime parameters should
# ovewrite scalars with the same name.
for ptype in ['scalars', 'runtime parameters']:
- for vtype in ['integer', 'real', 'logical','string']:
+ for vtype in ['integer', 'real', 'logical', 'string']:
hns.append("%s %s" % (vtype, ptype))
- for hn in hns:
- if hn not in self._handle:
- continue
- for varname, val in self._handle[hn]:
- vn = varname.strip()
- if vn in self.parameters and self.parameters[vn] != val:
- mylog.warning("{0} {1} overwrites a simulation scalar of the same name".format(hn[:-1],vn))
- self.parameters[vn] = val
+ if self._flash_version > 7:
+ for hn in hns:
+ if hn not in self._handle:
+ continue
+ for varname, val in zip(self._handle[hn][:,'name'],
+ self._handle[hn][:,'value']):
+ vn = varname.strip()
+ if hn.startswith("string") :
+ pval = val.strip()
+ else :
+ pval = val
+ if vn in self.parameters and self.parameters[vn] != pval:
+ mylog.warning("{0} {1} overwrites a simulation scalar of the same name".format(hn[:-1],vn))
+ self.parameters[vn] = pval
+ if self._flash_version == 7:
+ for hn in hns:
+ if hn not in self._handle:
+ continue
+ if hn is 'simulation parameters':
+ zipover = zip(self._handle[hn].dtype.names,self._handle[hn][0])
+ else:
+ zipover = zip(self._handle[hn][:,'name'],self._handle[hn][:,'value'])
+ for varname, val in zipover:
+ vn = varname.strip()
+ if hn.startswith("string") :
+ pval = val.strip()
+ else :
+ pval = val
+ if vn in self.parameters and self.parameters[vn] != pval:
+ mylog.warning("{0} {1} overwrites a simulation scalar of the same name".format(hn[:-1],vn))
+ self.parameters[vn] = pval
self.domain_left_edge = na.array(
[self.parameters["%smin" % ax] for ax in 'xyz']).astype("float64")
self.domain_right_edge = na.array(
diff -r c54b31309d880bb371cb0993bb32c8700648e421 -r f9d3b8d60a61f198d21df52f245e4831a4e7f3ca yt/frontends/flash/fields.py
--- a/yt/frontends/flash/fields.py
+++ b/yt/frontends/flash/fields.py
@@ -34,7 +34,8 @@
ValidateSpatial, \
ValidateGridType
import yt.data_objects.universal_fields
-
+from yt.utilities.physical_constants import \
+ kboltz
KnownFLASHFields = FieldInfoContainer()
add_flash_field = KnownFLASHFields.add_field
@@ -62,8 +63,6 @@
"y-velocity": "vely",
"z-velocity": "velz",
"Density": "dens",
- "TotalEnergy": "ener",
- "GasEnergy": "eint",
"Temperature": "temp",
"Pressure" : "pres",
"particle_position_x" : "particle_posx",
@@ -214,15 +213,43 @@
particle_type=True, convert_function=_convertParticleMassMsun,
particle_convert_function=_ParticleMassMsun)
-def _ThermalEnergy(fields,data):
- te = data["TotalEnergy"] - 0.5 * data["Density"] * (
- data["x-velocity"]**2.0 +
- data["y-velocity"]**2.0 +
- data["z-velocity"]**2.0 )
+def _ThermalEnergy(fields, data) :
try:
- te -= data['magp']
- except:
+ return data["eint"]
+ except:
pass
- return te
+ try:
+ return data["Pressure"] / (data.pf["Gamma"] - 1.0) / data["Density"]
+ except:
+ pass
+ if data.has_field_parameter("mu") :
+ mu = data.get_field_parameter("mu")
+ else:
+ mu = 0.6
+ return kboltz*data["Density"]*data["Temperature"]/(mu*mh) / (data.pf["Gamma"] - 1.0)
+
add_field("ThermalEnergy", function=_ThermalEnergy,
- units=r"\rm{ergs}/\rm{cm^3}")
+ units=r"\rm{ergs}/\rm{g}")
+
+def _TotalEnergy(fields, data) :
+ try:
+ etot = data["ener"]
+ except:
+ etot = data["ThermalEnergy"] + 0.5 * (
+ data["x-velocity"]**2.0 +
+ data["y-velocity"]**2.0 +
+ data["z-velocity"]**2.0)
+ try:
+ etot += data['magp']/data["Density"]
+ except:
+ pass
+ return etot
+
+add_field("TotalEnergy", function=_TotalEnergy,
+ units=r"\rm{ergs}/\rm{g}")
+
+def _GasEnergy(fields, data) :
+ return data["ThermalEnergy"]
+
+add_field("GasEnergy", function=_GasEnergy,
+ units=r"\rm{ergs}/\rm{g}")
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