In the previous sections we dealt with calculations at a single temperature. Sometimes you want properties as a function of temperature. In some folder
I prepared some input for ScF3
Or something else.
Make them plot in all three folders.
Point out that you should only run extractforceconstants once.
Plot all three.
For some reason you realise that you where not interested in the phonon dispersions at x,y,or z K, for reasons unknown you want to determine the dispersions at XX K instead. The naive way would be to do a new calculation at that temperature, but that takes a lot of time. It's better to interpolate.
Interpolating the frequencies themselves could be done, but it's not great. Empirically, I have found out that if you interpolate the forceconstants instead, you will have better luck.
This is a little involved, so we will break it into steps.
Provided you followed the instructions and have run extract forceconstants in all three directories, you might have noted that there are files called outfile.phi_secondorder
. As described, these are a list of the irreducible forceconstants. Copy this to an infile
cp outfile.phi_secondorder infile.phi_secondorder
And run
./extract_forceconstants -r
Note that this runs much faster: by invoking the -r
flag, it will read the values from file. Now, edit infile.phi_secondorder
and change some random value to 100, run
./extract_forceconstants -r phonon_dispersion_relations gnuplot outfile.dispersion_relations.gnuplot
The dispersions will probably look really strange. The point of this exercise was to understand how to modify an irreducible component and get a new outfile.forceconstant
out.
Since we know how to translate irreducible components to forceconstants, all we need to to is interpolate each irreducible component separately, translate to forceconstants, and calculate dispersions. This way you can get the dispersions at any temperature in the interval.
I like to use matlab for this step, but it should be just as easy in python or some other scripting language. I will not go into details, since I assume you know how to interpolate things. You should construct a script that
outfile.phi_secondorder
outfile.phi_secondorder
, create an interpolation that can evaluate that value at any temperature. A second order polynomial works great.infile.phi_secondorder
with the interpolated values and run extract_forceconstants -r
. This gives you a forceconstant at this temperature.phonon_dispersion_relations
with the new forceconstant, and store outfile.dispersion_relations
somewhere.If successful, it should look something like this:
Some picture
Or alternatively, just tracking the TO mode at gamma:
Some other picture.