To do list - ajsteele/mmcalc GitHub Wiki
Features which would be nice in future version of MµCalc include…
- implement variablemu-np.py as a menu item
Big changes
- create new Bayesian dipole menu, moving the histogram function to there (Do we want a way to make certain moments variable? Could allow people to type letters/expressions into the moment size box and then iterate over various possible values...)
Bugs
- Throughout the program and output files, the frequency of oscillations in muon spectra is referred to as 'omega'. In fact, it should be 'nu', as it's the frequency in Hz, not rad/s. A supervised find/replace should probably fix this.
- On the visualisation menu, if an incorrect field filename is chosen and you turn on 'draw field', it doesn't check and then, if auto-redraw is on, you can never re-enter that menu to change it without a crash!
- If you've got the length unit set as angstroms, you can't open the dipole field menu due to a unicode error on certain systems (currently only shown on Ubuntu Linux running Python 2.5.x). I've no idea why this is, since other unicode characters elsewhere do not exhibit this bug, and I can't reproduce it in the Python console. The current hacky workaround is a unicode off switch in the config.py file...
- If calculating dipole fields before specifying magnetic properties, the lack of magnetic atoms results in an inelegant crash
- If calculating dipole field with an unspecified r_sphere, currently crashes inelegantly rather than explaining the problem patiently.
Under the bonnet
- Ewald summation. Useful references include:
- Andrew Steele’s thesis, Appendix A: Ewald summation
- Choosing Ewald summation parameters
- Ewald summation and reaction field methods for potentials with atomic charges, dipoles, and polarizabilities, Nymand & Linse, 2000, which gives an explicit expression for dipole fields, but in quite tricky notation.
- Point multipoles in the Ewald summation (revisited) by William Smith
- Add 'define origin' feature to make the centre of the sphere/cube at a position other than 000 in the unit cell?
- The magnetic unit cell sizing function needs modifying to understand complex ms and incommensurate ks.
get_length_unit()
should do so without input, and return an error (lang.red+'length unit not defined'+lang.reset) if there's no unit defined.- The program could be significantly sped up in cases where the volume isolated by constraints is very small if the position-generating algorithm were refined. Currently, it generates random points throughout the unit cell and whittles away those which don't satisfy the muon site constraints, but this results in a huge amount of unnecessary calculation for small volumes. However, it's important to take care to make sure any smart algorithm for generating random points in, eg, spherical shells actually distributes the sites uniformly in space.
- is it worth changing all instances of strings for display output to unicode (ie preceding the quote mark with a u)?
User interface
- Remove the need to hit return on every input on any other missing OSes?
- Allow queuing of sessions to queue up dipole field calculations to do?
- Or write some kind of scripting functionality where variable moments etc can be used?
- CIF export
- Make space group restrict angles/lengths you can enter
- Add sanity check for charge neutrality when generating unit cell
- make convergence test results saveable
- make vcrystal size more generalised: non-integers, units other than lattice parameters, etc
- make the 'use vcrystal file' option disable other options it makes irrelevant
- other kinds of muon site constraints?
- if you ask to enter the name of a dipole field file and change your mind, there's no way to cancel. Blank currently allows you to enter the default, previous name, which is handy but annoying too...
Visualisation
- Allow user to define origin
- Display by charge
- Hide non-magnetic/uncharged atoms
- Show a colour bar when stuff is coloured by frequency etc
- Show atom colours key?
- Colour by label
- Would it be worth the visual window automatically closing before doing dipole field calculations? It does slow them down. Does the window closing forget its contents, or could it simply be reincarnated afterwards? (see http://comments.gmane.org/gmane.comp.python.visualpython.user/3436 for more info)
- A 'bizarre cuts' menu, allowing sections of space to be systematically sliced off
- Bonds between atoms with the same name (eg C to C, or B1 to B1) are currently drawn twice.
- Add possible a,b,c arrows to the drawing