tracking atom positions
Matthew said:
As it is now, if you want to describe your unknown structure as a distorted version of the one for which FEFF was run, you have to enter formulas for distances by hand. For instance, suppose you're doing a substitutional dopant and you want to use Artemis to fit the displacement of the impurity off-site and the dilation/contraction of the first-neighbor shell. As it is now, you have to do the algebra yourself to compute all the distances in terms of the distortion parameters. It would be really nice if there were some syntax for describing the alteration of atom positions, from which Artemis would automatically compute the displacements. This might have to be a new class of parameters. Such a computation would cover the MS paths as well. What it would still NOT do is account for the effect of leg-to-leg angles on MS paths (deviation from focusing/backscatter), but it would be a step. I realize that this would be a big job to implement in a nice way that wouldn't break everything that came before, but it would be super useful and make the IFEFFIT team (yet again) heros to the community
It's nice to start a new thread when you start a new thread, so I'm starting a new thread. :) I understand exactly what you are asking for. In short, you would like to be able to parameterize atom positions, possibly even crystallographic parameters, and have those propagated through to the math expressions for delta_R for the paths. In fact, Demeter has some of what's needed already built in. There are two things needed to implement that with the way things currently work. 1. The pathfinder needs to remember the all the scattering geometries that contribute to a degenerate set of paths so that a parameterization has the possibility of breaking degeneracies. 2. In the case of using crystal data, Atoms needs to remember the symmetry operations that were done to place each atom in the cluster. This would allow Demeter to propagate a change in a crystal parameter through to delta_R. #1 already exists in Demeter. #2 is something I worked on in the past, but never got working to my satisfaction. The point is that most of #2 is in there, but commented out. That is, it's reasonably close. As you suggest, the hard part is presenting this to the user. I have actually been thinking about this problem lately and am interested in getting back to it. I have another big feff-interface improvement to work on first (an idea for dealing with Feff calculations over multiple, inequivalent sites in a user-friendly and user-efficient way), but I'll think about it. I should mention that Shelly has implemented something like this before for use with Matt's ancient feffit program. You might be able to get her to chime in.... B -- Bruce Ravel ------------------------------------ bravel@bnl.gov National Institute of Standards and Technology Synchrotron Science Group at NSLS --- Beamlines U7A, X24A, X23A2 Building 535A Upton NY, 11973 Homepage: http://xafs.org/BruceRavel Software: https://github.com/bruceravel
Funny, I thought I did start a new thread... YES! Management of inequivalent sites would be very nice indeed! As it is now, you have to manually make multiple FEFF files, keeping track of the stoichiometry, and setting up multiple FEFF calculations, keeping track yourself of what parameters should be in common. The common thread here is a tighter integration of the structure description (ATOMS, feff.inp) with the FEFF calculation and fitting. Good catch about the degeneracy; I hadn't thought of that, but you're right. I wonder if it would make sense to put in a kludge which, for small enough breaking of the degeneracy, pretends that they're still degenerate but adjusts ss accordingly. I guess the S02 and dr would also get small adjusts because the nearer atoms would be slightly over-represented compared to the farther ones. This kludge would shorten the path list, making it less confusing, and also perhaps save computation time. There would have to be an alarm set for when k*(distance splitting) is too big to allow this approximation. An intermediate case would bring in C3 and C4, in a fixed relation to the distortion parameters. All of this adjusting would, prefereably, be 'behind the scenes', invisible to the user unless he asks to see it. As you show, you need crystal-symmetry operations. In some cases, the cluster being simulated is not derived from a crystal structure, but is instead a molecule or hypothetical structure. At first sight, this might seem to imply a need for two kinds of structures, crystalline and non-crystalline. However, a P1 space group and 100A lattice parameter should take care of the description of non-crystalline clusters. That's how I've used Diamond to display clusters. Another complication is that the distortion you want to implement will often reduce the local symmetry. Thus, maybe it's best after all to work at the feff.inp level, requiring the user to parameterize the movement of each atom. Thus, in octahedral example I gave, if the central atom is at 000 and the neighbors at (r,0,0),(-r,0,0),(0,r,0),(0,-r,0),(0,0,r),(0,0,-r), then the displacements might be (for a 100 distortion), (xoff,0,0) for the central atom and (dr,0,0),(-dr,0,0),(0,dr,0),(0,-dr,0),(0,0,dr),(0,0,-dr) for the neighbors, in a first model. The next model might have the lower symmetry of the site reflected in the neighbor motions: (dr+xoff*fp,0,0),(-dr+xoff*fm,0,0),(0,dr,0),(0,-dr,0),(0,0,dr),(0,0,-dr) with fp,fm being the fraction of the motion of the central atom communicated to the atoms "in front of" and "behind" it. Now, integrating this with the inequivalent-site manager could be a bit tricky. There would have to be some way to make sure that the scattering atoms that were actually the same for the multiple FEFFs get the same motions - or not. If you have a deterministic structure, where every unit cell is the same or there's only one unit cell, such as in a cluster, then you need to do that correspondence. On the other hand, imagine something like a doped spinel. The dopant goes in either the octahedral or tetrahedral site, causing lattice distortion in its near-neighbor shells either way. If it's dilute, then the two FEFF runs correspond to a single substituent in the octahedral site, with distortion around that site, and a single tetrahedral substituent with distortion around the tetrahedral site. These are different patterns of stom movement. Hmmm. The more I think about this, the more complicated it gets to deal with it in general. It's beginning to seem like one needs a new scripting or graphical language for describing this stuff. That argument suggests that it will be necessary to back off and start with some practical subset which is sophisticated enough to handle a useful fraction of problems but simple enough for some busy person to write and the rest of us to learn and use. A danger is that the tool becomes like Photoshop or Word - filled with features 99% of which go unused by 99% of us. When us 99%ers need a 1% feature, we don't even know it exists or how to use it. As Deep Thought put it, "Tricky"! mam On 8/7/2013 2:12 PM, Bruce Ravel wrote:
Matthew said:
As it is now, if you want to describe your unknown structure as a distorted version of the one for which FEFF was run, you have to enter formulas for distances by hand. For instance, suppose you're doing a substitutional dopant and you want to use Artemis to fit the displacement of the impurity off-site and the dilation/contraction of the first-neighbor shell. As it is now, you have to do the algebra yourself to compute all the distances in terms of the distortion parameters. It would be really nice if there were some syntax for describing the alteration of atom positions, from which Artemis would automatically compute the displacements. This might have to be a new class of parameters. Such a computation would cover the MS paths as well. What it would still NOT do is account for the effect of leg-to-leg angles on MS paths (deviation from focusing/backscatter), but it would be a step. I realize that this would be a big job to implement in a nice way that wouldn't break everything that came before, but it would be super useful and make the IFEFFIT team (yet again) heros to the community
It's nice to start a new thread when you start a new thread, so I'm starting a new thread. :)
I understand exactly what you are asking for. In short, you would like to be able to parameterize atom positions, possibly even crystallographic parameters, and have those propagated through to the math expressions for delta_R for the paths.
In fact, Demeter has some of what's needed already built in. There are two things needed to implement that with the way things currently work.
1. The pathfinder needs to remember the all the scattering geometries that contribute to a degenerate set of paths so that a parameterization has the possibility of breaking degeneracies.
2. In the case of using crystal data, Atoms needs to remember the symmetry operations that were done to place each atom in the cluster. This would allow Demeter to propagate a change in a crystal parameter through to delta_R.
#1 already exists in Demeter. #2 is something I worked on in the past, but never got working to my satisfaction. The point is that most of #2 is in there, but commented out. That is, it's reasonably close.
As you suggest, the hard part is presenting this to the user. I have actually been thinking about this problem lately and am interested in getting back to it. I have another big feff-interface improvement to work on first (an idea for dealing with Feff calculations over multiple, inequivalent sites in a user-friendly and user-efficient way), but I'll think about it.
I should mention that Shelly has implemented something like this before for use with Matt's ancient feffit program. You might be able to get her to chime in....
B
Hi Matthew,
On Wed, Aug 7, 2013 at 5:10 PM, Matthew Marcus
Funny, I thought I did start a new thread...
YES! Management of inequivalent sites would be very nice indeed! As it is now, you have to manually make multiple FEFF files, keeping track of the stoichiometry, and setting up multiple FEFF calculations, keeping track yourself of what parameters should be in common. The common thread here is a tighter integration of the structure description (ATOMS, feff.inp) with the FEFF calculation and fitting.
Good catch about the degeneracy; I hadn't thought of that, but you're right. I wonder if it would make sense to put in a kludge which, for small enough breaking of the degeneracy, pretends that they're still degenerate but adjusts ss accordingly. I guess the S02 and dr would also get small adjusts because the nearer atoms would be slightly over-represented compared to the farther ones. This kludge would shorten the path list, making it less confusing, and also perhaps save computation time. There would have to be an alarm set for when k*(distance splitting) is too big to allow this approximation. An intermediate case would bring in C3 and C4, in a fixed relation to the distortion parameters. All of this adjusting would, prefereably, be 'behind the scenes', invisible to the user unless he asks to see it.
It might be possible to re-cast the Sum in the EXAFS Equation to be a sum over atom positions around a central atom, each of which has "Atom Parameters" of E0, S02, x, y, z, sigma_x, sigma_y, and sigma_z. That would require accounting for each atom in the cluster (no degeneracy), and would still have incomplete accounting of disorder for MS paths (but we really have that now anyway). It would also require a fair amount of work on Feff (and some on Larch/Feffit). Probably the best approach (and useful for other reasons) would be to allow calculations of XAFS contributions from Paths of arbitrary geometry to happen "inside the fitting loop". But with that approach, one could set up and model distortions in crystals much more easily than currently be done. Again, I think the analysis side would not be that hard. Now that Feff8.5 for EXAFS has been released as Free Software (as of June 2013), it's worth thinking about doing this and how to do it well. This would make a great project for a grad student or post-doc, and allow for a nice series of papers. I think it would be greatly appreciated by many people modeling EXAFS in crystals. I think it could be done and would be happy to help.... Any one interested? --Matt
I hadn't heard, nor did Kevin mention, that any part of feff8.5 was freeware. Nice! mam On 8/7/2013 9:08 PM, Matt Newville wrote:
Hi Matthew,
On Wed, Aug 7, 2013 at 5:10 PM, Matthew Marcus
wrote: Funny, I thought I did start a new thread...
YES! Management of inequivalent sites would be very nice indeed! As it is now, you have to manually make multiple FEFF files, keeping track of the stoichiometry, and setting up multiple FEFF calculations, keeping track yourself of what parameters should be in common. The common thread here is a tighter integration of the structure description (ATOMS, feff.inp) with the FEFF calculation and fitting.
Good catch about the degeneracy; I hadn't thought of that, but you're right. I wonder if it would make sense to put in a kludge which, for small enough breaking of the degeneracy, pretends that they're still degenerate but adjusts ss accordingly. I guess the S02 and dr would also get small adjusts because the nearer atoms would be slightly over-represented compared to the farther ones. This kludge would shorten the path list, making it less confusing, and also perhaps save computation time. There would have to be an alarm set for when k*(distance splitting) is too big to allow this approximation. An intermediate case would bring in C3 and C4, in a fixed relation to the distortion parameters. All of this adjusting would, prefereably, be 'behind the scenes', invisible to the user unless he asks to see it.
It might be possible to re-cast the Sum in the EXAFS Equation to be a sum over atom positions around a central atom, each of which has "Atom Parameters" of E0, S02, x, y, z, sigma_x, sigma_y, and sigma_z.
That would require accounting for each atom in the cluster (no degeneracy), and would still have incomplete accounting of disorder for MS paths (but we really have that now anyway). It would also require a fair amount of work on Feff (and some on Larch/Feffit). Probably the best approach (and useful for other reasons) would be to allow calculations of XAFS contributions from Paths of arbitrary geometry to happen "inside the fitting loop".
But with that approach, one could set up and model distortions in crystals much more easily than currently be done. Again, I think the analysis side would not be that hard. Now that Feff8.5 for EXAFS has been released as Free Software (as of June 2013), it's worth thinking about doing this and how to do it well.
This would make a great project for a grad student or post-doc, and allow for a nice series of papers. I think it would be greatly appreciated by many people modeling EXAFS in crystals. I think it could be done and would be happy to help.... Any one interested?
--Matt _______________________________________________ Ifeffit mailing list Ifeffit@millenia.cars.aps.anl.gov http://millenia.cars.aps.anl.gov/mailman/listinfo/ifeffit
On Aug 7, 2013 4:13 PM, "Bruce Ravel"
Matthew said:
As it is now, if you want to describe your unknown structure as a distorted version of the one for which FEFF was run, you have to enter formulas for distances by hand. For instance, suppose you're doing a substitutional dopant and you want to use Artemis to fit the displacement of the impurity off-site and the dilation/contraction of the first-neighbor shell. As it is now, you have to do the algebra yourself to compute all the distances in terms of the distortion parameters. It would be really nice if there were some syntax for describing the alteration of atom positions, from which Artemis would automatically compute the displacements. This might have to be a new class of parameters. Such a computation would cover the MS paths as well. What it would still NOT do is account for the effect of leg-to-leg angles on MS paths (deviation from focusing/backscatter), but it would be a step. I realize that this would be a big job to implement in a nice way that wouldn't break everything that came before, but it would be super useful and make the IFEFFIT team (yet again) heros to the community
It's nice to start a new thread when you start a new thread, so I'm starting a new thread. :)
I understand exactly what you are asking for. In short, you would like to be able to parameterize atom positions, possibly even crystallographic parameters, and have those propagated through to the math expressions for delta_R for the paths.
In fact, Demeter has some of what's needed already built in. There are two things needed to implement that with the way things currently work.
1. The pathfinder needs to remember the all the scattering geometries that contribute to a degenerate set of paths so that a parameterization has the possibility of breaking degeneracies.
2. In the case of using crystal data, Atoms needs to remember the symmetry operations that were done to place each atom in the cluster. This would allow Demeter to propagate a change in a crystal parameter through to delta_R.
#1 already exists in Demeter. #2 is something I worked on in the past, but never got working to my satisfaction. The point is that most of #2 is in there, but commented out. That is, it's reasonably close.
As you suggest, the hard part is presenting this to the user. I have actually been thinking about this problem lately and am interested in getting back to it. I have another big feff-interface improvement to work on first (an idea for dealing with Feff calculations over multiple, inequivalent sites in a user-friendly and user-efficient way), but I'll think about it.
I should mention that Shelly has implemented something like this before for use with Matt's ancient feffit program. You might be able to get her to chime in....
Sdk: Hi. I do have a program that does a decent job of automatically figuring out delr in terms of the unit cell parameters. It is an approximation since it doesnt keep track of the symmetry. It works through the p1 symmetry. I've often thought about getting it into artemis but it is a bit involved. ill send you the program if your interested. Shelly
participants (4)
-
Bruce Ravel
-
Matt Newville
-
Matthew Marcus
-
Shelly Kelly