GameraUnitsManager

class PlasmaCalcs.hookups.mage.gamera.gamera_units.GameraUnitsManager(units='si', *, M=1, l=1, t=1, q=1, K=1, sic_quantities=None)

Bases: UnitsManager

UnitsManager for gamera; like UnitsManager but also defines extra systems:

‘R_earth’: 1 raw length unit is 1 Earth radius; all other base units == 1.
[might put more other systems here eventually!]

Methods

__call__(ustr[, units, convert_from, alt])

return quantity or conversion factor in the specified unit system. ustr: str physical constant or quantity (e.g. "c" for speed of light or "M" for mass units) units: UNSET, None, 'si', 'raw', or any key of self.systems. unit system to convert to. UNSET --> units = self.alts.get(alt, self.units). (Equivalent to None if alt is None) None --> use self.units. convert_from: 'si', 'raw', or any key of self.systems. unit system to convert from. Ignored if ustr is a quantity (e.g. "c") instead of conversion factor (e.g. "mass") alt: object (probably None or str) if units is UNSET, use units = self.alts.get(alt, self.units) otherwise, alt must be None. :return: a converted physical constant or a conversion factor.

CGS_UNITS_DEFAULT()

UnitsManager for cgs units.

calc_sic_factor(ustr)

Calculate conversion factor from raw units to SI units.

clear_sic()

clear self.sic.

get_sic_factor(ustr)

Get conversion factor from raw units to SI units.

get_system(key)

return self.systems[key], but raise clear error message if crash.

help()

prints a helpful message about using cls.

init_sic()

initialize self.sic from self.bases.

is_trivial()

returns whether self has only trivial conversion factors in it (all factors 1 or not provided).

populate_physical_constants_raw([quantities])

Calculate all the physical constants in raw units. :param quantities: None or iterable of strings calculate only these physical constants. if None, use self.PHYSICAL_CONSTANTS_SI.keys() :return: self.physical_constants_raw, after creating and filling it.

populate_sic([quantities, reset])

Calculate lots of conversion factors. :param quantities: None or iterable of strings calculate these conversion factors and put them in self.sic. e.g. "p", "momentum", "M u", "kg m s-1". if None, use self.SIC_QUANTITIES. :reset: bool, default False. if True, clear self.sic before calculating. :return: self.sic, after adding all the requested conversion factors.

string_to_si_bases(string_of_units)

convert string of any units to string of SI base units.

_base_unit_property(longname)

create property for base unit -- link to self.bases[ustr].

_init_from_bases()

initialize all other parts of self, using self.bases (and self._init_sic_quantities).

_repr_contents()

returns list of contents to include in repr(self).

_repr_show_factors()

returns dict of name and conversion factor to si, to include in repr(self).

_systems_default()

returns default value for self.systems

Attributes

BASES

K

Temperature_si = K * Temperature_raw

KNOWN

M

Mass_si = M * Mass_raw

PHYSICAL_CONSTANTS_SI

R_EARTH_SI

SIC_QUANTITIES

alts

dict of {key: units} for alternative objects' unit systems.

display_precision

known_systems

list of all systems known by self, including 'si' and 'raw'

l

Length_si = l * Length_raw

pcr

alias to physical_constants_raw

physical_constants_raw

dict of all the physical constants in raw units.

q

Charge_si = q * Charge_raw

si_bases

alias to string_to_si_bases

systems

dict of {name: UnitsManager} for other systems known by this instance.

t

Time_si = t * Time_raw

static CGS_UNITS_DEFAULT()

UnitsManager for cgs units. Default is UnitsManager(M=1e-3, l=1e2, t=1, q=None, K=1).

q=None is the default because electromagnetic cgs units are ambiguous,
there are multiple options for how to convert to si and the equations differ.
Feel free to set self.CGS_UNITS = a new UnitsManager with a known q,
if you have decided on a specific cgs system to remove relevant ambiguities.
property K

Temperature_si = K * Temperature_raw

property M

Mass_si = M * Mass_raw

__call__(ustr, units=UNSET, convert_from='raw', *, alt=None)

return quantity or conversion factor in the specified unit system. ustr: str

physical constant or quantity (e.g. “c” for speed of light or “M” for mass units)

units: UNSET, None, ‘si’, ‘raw’, or any key of self.systems.

unit system to convert to. UNSET –> units = self.alts.get(alt, self.units). (Equivalent to None if alt is None) None –> use self.units.

convert_from: ‘si’, ‘raw’, or any key of self.systems.

unit system to convert from. Ignored if ustr is a quantity (e.g. “c”) instead of conversion factor (e.g. “mass”)

alt: object (probably None or str)

if units is UNSET, use units = self.alts.get(alt, self.units) otherwise, alt must be None.

Returns:

a converted physical constant or a conversion factor

_base_unit_property(longname)

create property for base unit – link to self.bases[ustr]. re-initialize self if changed.

_init_from_bases()

initialize all other parts of self, using self.bases (and self._init_sic_quantities).

_repr_contents()

returns list of contents to include in repr(self).

_repr_show_factors()

returns dict of name and conversion factor to si, to include in repr(self).

Here, include l, t, M, and q. Also include K if it is not 1.
_systems_default()

returns default value for self.systems

property alts

dict of {key: units} for alternative objects’ unit systems.

e.g. CoordsUnitsHaver might set alts[‘coords’] = ‘si’ to indicate coords always in si.
calc_sic_factor(ustr)

Calculate conversion factor from raw units to SI units. Also save result in self.sic for future use. :param ustr: string of units (e.g. “m-3”) :return: conversion factor from raw units to SI units

clear_sic()

clear self.sic. delete self.sic, then do self.init_sic()

get_sic_factor(ustr)

Get conversion factor from raw units to SI units. If not already calculated, calculate it first. :param ustr: string of units (e.g. “m-3”) :return: conversion factor from raw units to SI units

if None, raise UnitsUnknownError instead.

get_system(key)

return self.systems[key], but raise clear error message if crash.

classmethod help()

prints a helpful message about using cls.

init_sic()

initialize self.sic from self.bases.

is_trivial()

returns whether self has only trivial conversion factors in it (all factors 1 or not provided).

property known_systems

list of all systems known by self, including ‘si’ and ‘raw’

Equivalent: [‘si’] + list(self.systems) + ‘raw’
property l

Length_si = l * Length_raw

property pcr

alias to physical_constants_raw

property physical_constants_raw

dict of all the physical constants in raw units.

populate_physical_constants_raw(quantities=None)

Calculate all the physical constants in raw units. :param quantities: None or iterable of strings

calculate only these physical constants. if None, use self.PHYSICAL_CONSTANTS_SI.keys()

Returns:

self.physical_constants_raw, after creating and filling it.

populate_sic(quantities=None, *, reset=False)

Calculate lots of conversion factors. :param quantities: None or iterable of strings

calculate these conversion factors and put them in self.sic. e.g. “p”, “momentum”, “M u”, “kg m s-1”. if None, use self.SIC_QUANTITIES.

Reset:

bool, default False. if True, clear self.sic before calculating.

Returns:

self.sic, after adding all the requested conversion factors.

property q

Charge_si = q * Charge_raw

property si_bases

alias to string_to_si_bases

string_to_si_bases(string_of_units)

convert string of any units to string of SI base units.

property systems

dict of {name: UnitsManager} for other systems known by this instance.

For example, might put {‘R_E’: UnitsManager(l=R_earth_si)},
then self.u(‘l’, ‘R_E’, ‘si’) converts lengths to earth radii.
(R_earth_si must be provided, you might provide 6.3781e6 for example).
By default, this is just {‘cgs’: self.CGS_UNITS_DEFAULT()},
but subclasses and instances might add more.
property t

Time_si = t * Time_raw