def __init__(self, mu=None, phi=None, reference_uvw=[0., 0., 1.]): super(PolarAzimuthal, self).__init__(reference_uvw) if mu is not None: self.mu = mu else: self.mu = Uniform(-1., 1.) if phi is not None: self.phi = phi else: self.phi = Uniform(0., 2*pi)
def __init__(self, mu=None, phi=None, reference_uvw=[0., 0., 1.]): super(PolarAzimuthal, self).__init__(reference_uvw) if mu is not None: self.mu = mu else: self.mu = Uniform(-1., 1.) if phi is not None: self.phi = phi else: self.phi = Uniform(0., 2 * pi)
class PolarAzimuthal(UnitSphere): """Angular distribution represented by polar and azimuthal angles This distribution allows one to specify the distribution of the cosine of the polar angle and the azimuthal angle independently of once another. Parameters ---------- mu : openmc.stats.Univariate Distribution of the cosine of the polar angle phi : openmc.stats.Univariate Distribution of the azimuthal angle in radians reference_uvw : Iterable of float Direction from which polar angle is measured. Defaults to the positive z-direction. Attributes ---------- mu : openmc.stats.Univariate Distribution of the cosine of the polar angle phi : openmc.stats.Univariate Distribution of the azimuthal angle in radians """ def __init__(self, mu=None, phi=None, reference_uvw=[0., 0., 1.]): super(PolarAzimuthal, self).__init__(reference_uvw) if mu is not None: self.mu = mu else: self.mu = Uniform(-1., 1.) if phi is not None: self.phi = phi else: self.phi = Uniform(0., 2*pi) @property def mu(self): return self._mu @property def phi(self): return self._phi @mu.setter def mu(self, mu): cv.check_type('cosine of polar angle', mu, Univariate) self._mu = mu @phi.setter def phi(self, phi): cv.check_type('azimuthal angle', phi, Univariate) self._phi = phi def to_xml(self): element = ET.Element('angle') element.set("type", "mu-phi") if self.reference_uvw is not None: element.set("reference_uvw", ' '.join(map(str, self.reference_uvw))) element.append(self.mu.to_xml('mu')) element.append(self.phi.to_xml('phi')) return element
class PolarAzimuthal(UnitSphere): """Angular distribution represented by polar and azimuthal angles This distribution allows one to specify the distribution of the cosine of the polar angle and the azimuthal angle independently of one another. The polar angle is measured relative to the reference angle. Parameters ---------- mu : openmc.stats.Univariate Distribution of the cosine of the polar angle phi : openmc.stats.Univariate Distribution of the azimuthal angle in radians reference_uvw : Iterable of float Direction from which polar angle is measured. Defaults to the positive z-direction. Attributes ---------- mu : openmc.stats.Univariate Distribution of the cosine of the polar angle phi : openmc.stats.Univariate Distribution of the azimuthal angle in radians """ def __init__(self, mu=None, phi=None, reference_uvw=[0., 0., 1.]): super(PolarAzimuthal, self).__init__(reference_uvw) if mu is not None: self.mu = mu else: self.mu = Uniform(-1., 1.) if phi is not None: self.phi = phi else: self.phi = Uniform(0., 2 * pi) @property def mu(self): return self._mu @property def phi(self): return self._phi @mu.setter def mu(self, mu): cv.check_type('cosine of polar angle', mu, Univariate) self._mu = mu @phi.setter def phi(self, phi): cv.check_type('azimuthal angle', phi, Univariate) self._phi = phi def to_xml_element(self): """Return XML representation of the angular distribution Returns ------- element : xml.etree.ElementTree.Element XML element containing angular distribution data """ element = ET.Element('angle') element.set("type", "mu-phi") if self.reference_uvw is not None: element.set("reference_uvw", ' '.join(map(str, self.reference_uvw))) element.append(self.mu.to_xml_element('mu')) element.append(self.phi.to_xml_element('phi')) return element