Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _set_code_unit_attributes(self):
setdefaultattr(self, 'length_unit', self.quan(1.0, "cm"))
setdefaultattr(self, 'mass_unit', self.quan(1.0, "g"))
setdefaultattr(self, 'time_unit', self.quan(1.0, "s"))
setdefaultattr(self, 'velocity_unit', self.quan(1.0, "cm/s"))
else:
mass_unit = (unit_base["UnitMass_in_g"], "g/h")
else:
# Sane default
mass_unit = (1.0, "1e10*Msun/h")
mass_unit = _fix_unit_ordering(mass_unit)
setdefaultattr(self, 'mass_unit', self.quan(mass_unit[0], mass_unit[1]))
if "time" in unit_base:
time_unit = unit_base["time"]
elif "UnitTime_in_s" in unit_base:
time_unit = (unit_base["UnitTime_in_s"], "s")
else:
tu = (self.length_unit / self.velocity_unit).to("yr/h")
time_unit = (tu.d, tu.units)
setdefaultattr(self, 'time_unit', self.quan(time_unit[0], time_unit[1]))
magnetic_unit = np.sqrt(4*np.pi * mass_unit /
(time_unit**2 * length_unit))
pressure_unit = density_unit * (length_unit / time_unit)**2
# TODO:
# Generalize the temperature field to account for ionization
# For now assume an atomic ideal gas with cosmic abundances (x_H = 0.76)
mean_molecular_weight_factor = _X**-1
setdefaultattr(self, 'density_unit', self.quan(density_unit, 'g/cm**3'))
setdefaultattr(self, 'magnetic_unit', self.quan(magnetic_unit, "gauss"))
setdefaultattr(self, 'pressure_unit',
self.quan(pressure_unit, 'dyne/cm**2'))
setdefaultattr(self, 'time_unit', self.quan(time_unit, "s"))
setdefaultattr(self, 'mass_unit', self.quan(mass_unit, "g"))
setdefaultattr(self, 'velocity_unit',
self.quan(length_unit, 'cm') / self.time_unit)
temperature_unit = (
self.velocity_unit**2*mp*mean_molecular_weight_factor/kb)
setdefaultattr(self, 'temperature_unit', temperature_unit.in_units('K'))
# Only the length unit get scales by a factor of boxlen
setdefaultattr(self, 'length_unit',
self.quan(length_unit * boxlen, "cm"))
# calculating derived units (except velocity and temperature, done below)
mass_unit = density_unit * length_unit**3
magnetic_unit = np.sqrt(4*np.pi * mass_unit /
(time_unit**2 * length_unit))
pressure_unit = density_unit * (length_unit / time_unit)**2
# TODO:
# Generalize the temperature field to account for ionization
# For now assume an atomic ideal gas with cosmic abundances (x_H = 0.76)
mean_molecular_weight_factor = _X**-1
setdefaultattr(self, 'density_unit', self.quan(density_unit, 'g/cm**3'))
setdefaultattr(self, 'magnetic_unit', self.quan(magnetic_unit, "gauss"))
setdefaultattr(self, 'pressure_unit',
self.quan(pressure_unit, 'dyne/cm**2'))
setdefaultattr(self, 'time_unit', self.quan(time_unit, "s"))
setdefaultattr(self, 'mass_unit', self.quan(mass_unit, "g"))
setdefaultattr(self, 'velocity_unit',
self.quan(length_unit, 'cm') / self.time_unit)
temperature_unit = (
self.velocity_unit**2*mp*mean_molecular_weight_factor/kb)
setdefaultattr(self, 'temperature_unit', temperature_unit.in_units('K'))
# Only the length unit get scales by a factor of boxlen
setdefaultattr(self, 'length_unit',
self.quan(length_unit * boxlen, "cm"))
def _set_code_unit_attributes(self):
"""Handle conversion between different physical units and the code units.
Every dataset in openPMD can have different code <-> physical scaling.
The individual factor is obtained by multiplying with "unitSI" reading getting data from disk.
"""
setdefaultattr(self, "length_unit", self.quan(1.0, "m"))
setdefaultattr(self, "mass_unit", self.quan(1.0, "kg"))
setdefaultattr(self, "time_unit", self.quan(1.0, "s"))
setdefaultattr(self, "velocity_unit", self.quan(1.0, "m/s"))
setdefaultattr(self, "magnetic_unit", self.quan(1.0, "T"))
density_unit = self.parameters['unit_d']
time_unit = self.parameters['unit_t']
# calculating derived units (except velocity and temperature, done below)
mass_unit = density_unit * length_unit**3
magnetic_unit = np.sqrt(4*np.pi * mass_unit /
(time_unit**2 * length_unit))
pressure_unit = density_unit * (length_unit / time_unit)**2
# TODO:
# Generalize the temperature field to account for ionization
# For now assume an atomic ideal gas with cosmic abundances (x_H = 0.76)
mean_molecular_weight_factor = _X**-1
setdefaultattr(self, 'density_unit', self.quan(density_unit, 'g/cm**3'))
setdefaultattr(self, 'magnetic_unit', self.quan(magnetic_unit, "gauss"))
setdefaultattr(self, 'pressure_unit',
self.quan(pressure_unit, 'dyne/cm**2'))
setdefaultattr(self, 'time_unit', self.quan(time_unit, "s"))
setdefaultattr(self, 'mass_unit', self.quan(mass_unit, "g"))
setdefaultattr(self, 'velocity_unit',
self.quan(length_unit, 'cm') / self.time_unit)
temperature_unit = (
self.velocity_unit**2*mp*mean_molecular_weight_factor/kb)
setdefaultattr(self, 'temperature_unit', temperature_unit.in_units('K'))
# Only the length unit get scales by a factor of boxlen
setdefaultattr(self, 'length_unit',
self.quan(length_unit * boxlen, "cm"))
def _set_code_unit_attributes(self):
"""Handle conversion between different physical units and the code units.
Every dataset in openPMD can have different code <-> physical scaling.
The individual factor is obtained by multiplying with "unitSI" reading getting data from disk.
"""
setdefaultattr(self, "length_unit", self.quan(1.0, "m"))
setdefaultattr(self, "mass_unit", self.quan(1.0, "kg"))
setdefaultattr(self, "time_unit", self.quan(1.0, "s"))
setdefaultattr(self, "velocity_unit", self.quan(1.0, "m/s"))
setdefaultattr(self, "magnetic_unit", self.quan(1.0, "T"))
def _set_code_unit_attributes(self):
setdefaultattr(self, 'length_unit', self.quan(1.0, 'kpccm/h'))
setdefaultattr(self, 'mass_unit', self.quan(1.0, 'Msun/h'))
setdefaultattr(self, 'time_unit', self.quan(1.0, 's'))
setdefaultattr(self, 'velocity_unit', self.quan(1.0, 'km/s'))
elif us == "none":
b_factor = np.sqrt(4*np.pi)
else:
raise RuntimeError("Runtime parameter unitsystem with "
"value %s is unrecognized" % self['unitsystem'])
else:
b_factor = 1.
if self.cosmological_simulation == 1:
length_factor = 1.0 / (1.0 + self.current_redshift)
temperature_factor = 1.0 / (1.0 + self.current_redshift)**2
else:
length_factor = 1.0
temperature_factor = 1.0
setdefaultattr(self, 'magnetic_unit', self.quan(b_factor, "gauss"))
setdefaultattr(self, 'length_unit', self.quan(length_factor, "cm"))
setdefaultattr(self, 'mass_unit', self.quan(1.0, "g"))
setdefaultattr(self, 'time_unit', self.quan(1.0, "s"))
setdefaultattr(self, 'velocity_unit', self.quan(1.0, "cm/s"))
setdefaultattr(
self, 'temperature_unit', self.quan(temperature_factor, "K"))
pressure_unit = ((2.0 + 3.0 * He_abundance) * numberdensity_unit * kb_cgs * temperature_unit).in_cgs()
velocity_unit = (np.sqrt(pressure_unit / density_unit)).in_cgs()
else:
# velocity is not zero if either time was given OR velocity was given
pressure_unit = (density_unit * velocity_unit ** 2).in_cgs()
temperature_unit = (pressure_unit / ((2.0 + 3.0 * He_abundance) * numberdensity_unit * kb_cgs)).in_cgs()
# 4. calculations for magnetic unit and time
time_unit = getattr(self, 'time_unit', length_unit / velocity_unit) # if time given use it, else calculate
magnetic_unit = (np.sqrt(4 * np.pi * pressure_unit)).to('gauss')
setdefaultattr(self, 'mass_unit', mass_unit)
setdefaultattr(self, 'density_unit', density_unit)
setdefaultattr(self, 'numberdensity_unit', numberdensity_unit)
setdefaultattr(self, 'length_unit', length_unit)
setdefaultattr(self, 'velocity_unit', velocity_unit)
setdefaultattr(self, 'time_unit', time_unit)
setdefaultattr(self, 'temperature_unit', temperature_unit)
setdefaultattr(self, 'pressure_unit', pressure_unit)
setdefaultattr(self, 'magnetic_unit', magnetic_unit)