[Yt-svn] yt-commit r1701 - trunk/yt/extensions
britton at wrangler.dreamhost.com
britton at wrangler.dreamhost.com
Sun Apr 25 20:37:53 PDT 2010
Author: britton
Date: Sun Apr 25 20:37:53 2010
New Revision: 1701
URL: http://yt.enzotools.org/changeset/1701
Log:
Merging changes from hg.
Modified:
trunk/yt/extensions/EnzoSimulation.py
Modified: trunk/yt/extensions/EnzoSimulation.py
==============================================================================
--- trunk/yt/extensions/EnzoSimulation.py (original)
+++ trunk/yt/extensions/EnzoSimulation.py Sun Apr 25 20:37:53 2010
@@ -1,5 +1,6 @@
-import yt.lagos as lagos
from yt.logger import lagosLogger as mylog
+import yt.lagos as lagos
+import yt.funcs as funcs
import numpy as na
import os
@@ -59,18 +60,19 @@
# Check for sufficient starting/ending parameters.
if self.InitialTime is None and self.InitialRedshift is None:
if self.enzoParameters['ComovingCoordinates'] and \
- self.enzoParameters.has_key('CosmologyInitialRedshift'):
+ 'CosmologyInitialRedshift' in self.enzoParameters:
self.InitialRedshift = self.enzoParameters['CosmologyInitialRedshift']
- elif self.enzoParameters.has_key('InitialTime'):
+ elif 'InitialTime' in self.enzoParameters:
self.InitialTime = self.enzoParameters['InitialTime']
else:
mylog.error("Couldn't find parameter for initial time or redshift from parameter file.")
return None
+
if self.FinalTime is None and self.FinalRedshift is None:
if self.enzoParameters['ComovingCoordinates'] and \
- self.enzoParameters.has_key('CosmologyFinalRedshift'):
+ 'CosmologyFinalRedshift' in self.enzoParameters:
self.FinalRedshift = self.enzoParameters['CosmologyFinalRedshift']
- elif self.enzoParameters.has_key('StopTime'):
+ elif 'StopTime' in self.enzoParameters:
self.FinalTime = self.enzoParameters['StopTime']
else:
mylog.error("Couldn't find parameter for final time or redshift from parameter file.")
@@ -99,9 +101,9 @@
# Get initial time of simulation.
if self.enzoParameters['ComovingCoordinates'] and \
- self.enzoParameters.has_key('CosmologyInitialRedshift'):
+ 'CosmologyInitialRedshift' in self.enzoParameters:
self.SimulationInitialTime = self.enzo_cosmology.InitialTime / self.enzo_cosmology.TimeUnits
- elif self.enzoParameters.has_key('InitialTime'):
+ elif 'InitialTime' in self.enzoParameters:
self.SimulationInitialTime = self.enzoParameters['InitialTime']
else:
self.SimulationInitialTime = 0.0
@@ -150,6 +152,8 @@
# Calculate times for redshift dumps.
if self.enzoParameters['ComovingCoordinates'] and self.get_redshift_outputs:
self._CalculateRedshiftDumpTimes()
+ else:
+ self.redshiftOutputs = []
if self.get_time_outputs and self.get_redshift_outputs:
self.allOutputs = self.redshiftOutputs + self.timeOutputs
@@ -181,13 +185,14 @@
if q == len(self.allOutputs) - 1:
end_index = q
+ for q in range(len(self.allOutputs)):
if self.links and start_index is not None:
- if q == start_index:
+ if q <= start_index:
self.allOutputs[q]['previous'] = None
else:
self.allOutputs[q]['previous'] = self.allOutputs[q-1]
- if q == end_index:
+ if q >= end_index:
self.allOutputs[q]['next'] = None
else:
self.allOutputs[q]['next'] = self.allOutputs[q+1]
@@ -267,6 +272,7 @@
if rounded - z < 0:
rounded += na.power(10.0,(-1.0*decimals))
z = rounded
+
deltaz_max = deltaz_forward(self.cosmology, z, self.enzoParameters['CosmologyComovingBoxSize'])
outputs.append({'redshift': z, 'deltazMax': deltaz_max})
z -= deltaz_max
@@ -363,8 +369,49 @@
mylog.info("create_cosmology_splice: Used %d data dumps to get from z = %f to %f." %
(len(cosmology_splice),initial_redshift,final_redshift))
+ self.allOutputs.sort(key=lambda obj: obj['time'])
return cosmology_splice
+ def get_data_by_redshift(self, redshifts, tolerance=None):
+ """
+ : param redshifts: a list of redshifts.
+ : tolerance: if not None, do not return a dataset unless the redshift is within the tolerance value.
+ Get datasets for a list of redshifts.
+ """
+
+ redshifts = funcs.ensure_list(redshifts)
+ my_datasets = []
+ for redshift in redshifts:
+ self.allOutputs.sort(key=lambda obj:na.fabs(redshift - obj['redshift']))
+ if (tolerance is None or na.abs(redshift - self.allOutputs[0]['redshift']) <= tolerance) \
+ and self.allOutputs[0] not in my_datasets:
+ my_datasets.append(self.allOutputs[0])
+ else:
+ mylog.error("No dataset added for z = %f." % redshift)
+
+ self.allOutputs.sort(key=lambda obj: obj['time'])
+ return my_datasets
+
+ def get_data_by_time(self, times, tolerance=None):
+ """
+ : param redshifts: a list of times.
+ : tolerance: if not None, do not return a dataset unless the redshift is within the tolerance value.
+ Get datasets for a list of times.
+ """
+
+ times = funcs.ensure_list(times)
+ my_datasets = []
+ for my_time in times:
+ self.allOutputs.sort(key=lambda obj:na.fabs(my_time - obj['time']))
+ if (tolerance is None or na.abs(my_time - self.allOutputs[0]['time']) <= tolerance) \
+ and self.allOutputs[0] not in my_datasets:
+ my_datasets.append(self.allOutputs[0])
+ else:
+ mylog.error("No dataset added for z = %f." % my_time)
+
+ self.allOutputs.sort(key=lambda obj: obj['time'])
+ return my_datasets
+
def _calculate_deltaz_max(self):
"Calculate delta z that corresponds to full box length going from z to (z - delta z)."
More information about the yt-svn
mailing list