tdep-developers / tdep

The Temperature Dependent Effective Potentials (TDEP) code
MIT License
59 stars 22 forks source link

Symmetry Implementation Question #67

Open ejmeitz opened 5 months ago

ejmeitz commented 5 months ago

I have a question regarding the documentation of the implementation of the symmetry operations. This does not really belong here but I cannot think of another place to ask.

The docs have the image pasted below.

The second equation makes sense to me. If we have a symmetry operation that does not affect the point (i.e. it maps back to the same point) then we can write a system of equations using all the invariant operations to reduce the number of IFC in a block. The combination with the permutation constraint is where I have some confusion. It seems to me that the part about an invariant symmetry operation is referring to within a force constant block (i.e. a 3x3 for second order); however, the permutation symmetries only exist when talking about the entire IFC matrix (i.e. 3N x 3N). Basically we have $\Phi{ij}^{\alpha\beta} = \Phi{ji}^{\beta\alpha}$ but we cannot say a priori if $\Phi{ij}^{\alpha\beta} = \Phi{ij}^{\beta\alpha}$. Am I misinterpreting what is meant by transposition symmetry?

image

mjv500 commented 5 months ago

Hi,

Transposition is performed on both space index and atom, and yes you need the full matrix to impose it.

Same for rotation symops: in general you send an atom onto another one, not necessarily a translation-identical one.

The last equation is more subtle, that you can just add the constraints instead of making a big rectangular matrix A. Either it's a typo or it exploits the fact that the SxS and T matrices respect each other's constraints (symmetries can't break permutation and vice versa).

M.

On Tue, May 28, 2024, 03:24 Ethan Meitz @.***> wrote:

I have a question regarding the documentation of the implementation of the symmetry operations. This does not really belong here but I cannot think of another place to ask.

The docs have the image pasted below.

The second equation makes sense to me. If we have a symmetry operation that does not affect the point (i.e. it maps back to the same point) then we can write a system of equations using all the invariant operations to reduce the number of IFC in a block. The combination with the permutation constraint is where I have some confusion. It seems to me that the part about an invariant symmetry operation is referring to within a force constant block (i.e. a 3x3 for second order); however, the permutation symmetries only exist when talking about the entire IFC matrix (i.e. 3N x 3N). Basically we have $\Phi{ij}^{\alpha\beta} = \Phi{ji}^{\beta\alpha}$ but we cannot say a priori if $\Phi{ij}^{\alpha\beta} = \Phi{ij}^{\beta\alpha}$. Am I misinterpreting what is meant by transposition symmetry?

image.png (view on web) https://github.com/tdep-developers/tdep/assets/54505069/6ad6eaaf-ede4-49a0-a22c-e4dceaa70aaa

— Reply to this email directly, view it on GitHub https://github.com/tdep-developers/tdep/issues/67, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABWOT367RBFNYUB5DCRCOFTZEPMDRAVCNFSM6AAAAABIL6SVQ6VHI2DSMVQWIX3LMV43ASLTON2WKOZSGMYTSOJVHA3TEMA . You are receiving this because you are subscribed to this thread.Message ID: @.***>

flokno commented 5 months ago

Hi both,

it confused me a while that the constraints are added together. My explanation why it works is that symmetry matrices are basically a sort of unitary transformation that leave the norm invariant. This point is important. Only in that case the constraints can be added up and the total constraint will fulfill all individual constraints as well. Side note: Hiphive imposes the constraints one after another (no summing up). But at some point we checked that it gives the same solution as their sum.

ejmeitz commented 5 months ago

Ok makes sense.

So you can have a symmetry operation which maps a pair (i,j) onto (S(i), S(j)) in which case you have a constraint on 2 3x3 tensors. But if S maps (i,j) to (i,j) then you have constraints on just 1 tensor. The later case is easy to code, but the former requires a bigger algorithm I think. Is TDEP internally building a table of distance shells for each atom in the primitive cell and finding the associated symmetry operation for each shell? Based on log files it does but that is never mentioned in the docs or the paper.

flokno commented 5 months ago

Yes it does that. Basically you first reduce the pairs in the sense "which pair ij gets mapped on another pair ij' when using a symmetry". Then you will work only with the irreducible pairs because you know how to construct all the others from it (apply respective symmetry operation). Then you additionally reduce the 3x3 matrix per irreducible pair in the above sense. I agree the docs are not really clear on this

ejmeitz commented 5 months ago

Thanks, I think I can figure out how to code it now. For what its worth I've read the papers for all the phonon codes and its not very clear in any of them.

Also was the forcemap part of TDEP removed or is it just an undocumented keyword now? Might be useful to help me debug my code, but the final reduced IFC should hopefully be enough.

flokno commented 5 months ago

@ejmeitz I think the forcemap mechanism is currently broken, unfortunately