def _parse_parameter_file(self):
self.unique_identifier = \
int(os.stat(self.parameter_filename)[stat.ST_CTIME])
# code-specific parameters
for t in self._handle['Info']:
info_category = self._handle['Info'][t]
for v in info_category.dtype.names: self.parameters[v] = info_category[v]
# shortcut for self.parameters
parameters = self.parameters
# reset 'Model' to be more readable
if parameters['Model'] == 1:
parameters['Model'] = 'Hydro'
elif parameters['Model'] == 2:
parameters['Model'] = 'MHD'
elif parameters['Model'] == 3:
parameters['Model'] = 'ELBDM'
else:
parameters['Model'] = 'Unknown'
# simulation time and domain
self.current_time = parameters['Time'][0]
self.dimensionality = 3 # always 3D
self.domain_left_edge = np.array([0.,0.,0.], dtype='float64')
self.domain_right_edge = parameters['BoxSize'].astype('float64')
self.domain_dimensions = parameters['NX0'].astype('int64')
# periodicity
periodic = parameters['Opt__BC_Flu'][0] == 0
self.periodicity = (periodic,periodic,periodic)
# cosmological parameters
if parameters['Comoving']:
self.cosmological_simulation = 1
self.current_redshift = 1.0/self.current_time - 1.0
self.omega_matter = parameters['OmegaM0']
self.omega_lambda = 1.0 - self.omega_matter
# default to 0.7 for old data format
self.hubble_constant = parameters.get('Hubble0', 0.7)
else:
self.cosmological_simulation = 0
self.current_redshift = 0.0
self.omega_matter = 0.0
self.omega_lambda = 0.0
self.hubble_constant = 0.0
# make aliases to some frequently used variables
if parameters['Model'] == 'Hydro' or parameters['Model'] == 'MHD':
self.gamma = parameters["Gamma"]
# default to 0.6 for old data format
self.mu = parameters.get('MolecularWeight', 0.6)
# old data format (version < 2210) does not contain any information of code units
self.parameters.setdefault('Opt__Unit', 0)
评论列表
文章目录