Source code for muesr.utilities.muon

from muesr.core.parsers import *
from muesr.core.nprint  import nprint, nprintmsg
from muesr.core.ninput  import ninput

import numpy as np


        
[docs]def muon_set_frac(sample, arg = None): """ Set muon position in lattice coordinates. returns: None """ if sample._check_lattice(): try: if arg is None: pos=ninput('Muon position (frac coord): ', parse_vector) else: if isinstance(arg, np.ndarray) and ( arg.shape == (3,)): pos = arg else: pos = parse_vector(arg,3) except EOFError: nprint("Ok.") return False except TypeError: nprint("Cannot parse position.",'warn') return False if (not isinstance(arg, np.ndarray)): pos = np.array(pos) sample.add_muon(pos) return True else: #nprintmsg('NS') return False
[docs]def muon_find_equiv(sample, eps=1.e-3): """ Given the unit cell symmetry, finds the equivalent muon sites. Magnetic order is NOT considered :params: eps, number of decimal figures for comparison """ sample._check_sym() sample._check_muon() eqpoints = sample._sym.equivalent_sites(np.array(sample.muons), \ symprec=eps, \ onduplicates='warn')[0] sample._reset(muon=True) for p in eqpoints: sample.add_muon(np.array(p)) return True
[docs]def muon_reset(sample): """ Removes all previously set muon positions. returns: True """ sample._reset(muon=True) return True