How to add vibrational contribution in the CE?

Dear ICET Developers,

I would like to fit a CE on harmonic vibrational energies on different composition. Is this possible already, or should I tweak ICET somehow to make it work?

Thanks a lot for any feedback,

Kind regards

Yes this should be possible, how to do it probably depends exactly what you mean. Maybe you can clarify a bit more exactly what data you have and what you want to do?

A cluster expansion can learn the energy E(\sigma) as a function of structure \sigma.
If you have the harmonic vibrational free energy (at a fixed temperature) for multiple structures you can in the same manner learn F_{vib}(\sigma).

Thanks a lot for the reply!

Currently, as you stated, I was planning to generate x configurations relaxing them to obtain the total energies E(\sigma). For each of them I would compute the harmonic free energies F_{vib}(\sigma).

As then I would like to perform some Monte Carlo simulation, actually one has F_{vib}(\sigma) \equiv F_{vib}(\sigma, T) . It follows in principle that:

  1. I should fit a CE at each T.
  2. The energies in the transition probabilities for the MC become E \rightarrow \mathcal{F}(T)=E_{el} + F_{vib}(T).

I am currently referring to this paper (DOI: 10.1103/PhysRevB.77.094121).

So, in practice point (1) can be easily done, I would just need to fit enough CE at the temperatures of interest (for the MC).
But related to point (2): how to do a simulated annealing, as the free energy is also changing depending on T?

Thanks again for your time.

Yes, doing it this way should be straightforward I think.

For simulated annealing I am not sure how one would do this since the calculator does not have knowledge about the temperature.
One way could be to implement this type of calculator yourself, e.g. parametrize the ECIs with respect to temperature.

Alternatively you could run your annealing by running small constant temperature simulations in sequence, e.g. run 100 steps at T=300, then 100 steps at T=299 etc.
This would be much easier and you could do it without needing to implement anything new, and I would guess that this is very similar to running a normal annealing simulation.