Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

spin symmetry operations, called spin_sop in yambo, are not a group (just half of the SU(2) group) #103

Open
sangallidavide opened this issue Jun 24, 2024 · 38 comments
Assignees

Comments

@sangallidavide
Copy link
Member

sangallidavide commented Jun 24, 2024

Applying in sequence two spin_sop operations gives a different result w.r.t. applying the spin_sop operation extracted from sop_tab, e.g. the table which constructs the map of composed symmetry operations.

The table is based on O(3) symmetry operation, e.g. SO(3) x Inv (with Inv the inversion, either spatial-inversion or time-reversal), which constitute a closed group. However it cannot be used in the in spin space SU(2) x Trev.

Even without SOC, the operation does not work. Inded the relation between SU(2) and SO(3) is defined up to a factor 2. For a rotation of 360 degree the spin gets a factor -1

@sangallidavide sangallidavide changed the title spin symmetry operations, called spin_sop in yambo, are not a group in presence of time_reversal spin symmetry operations, called spin_sop in yambo, are not a group Jun 24, 2024
@sangallidavide
Copy link
Member Author

sangallidavide commented Jun 24, 2024

Commit a3133b8 for fixing WF_phase_matrices is related to this

@sangallidavide
Copy link
Member Author

Issue https://github.com/yambo-code/yambo-devel/issues/544 is connected to this.

All points in the code where sop_tab is used needs to be checked in presence of SOC

@andreamarini
Copy link
Member

Hi. I cannot get where the problem is. Can you please provide some notes with the math? THX.

@sangallidavide
Copy link
Member Author

Sakurai, p.159 - 167

@palful
Copy link
Member

palful commented Jun 24, 2024

I confirm that by applying the two spin_sop operations separately, instead of once using sop_tab, we finally obtain gauge-invariant exc-ph couplings in the spinorial case. See pictures below (agreement with Stanford Nano Lett. + independent Luxembourg code):

NEW_EXC_tests_2-3
NEW_EXC_tests_0-1

@sangallidavide
Copy link
Member Author

Great. That's really a milestone. We have been working on controlling the phases of el-ph matrix elements and constructing proper exc-ph matrix elements for so long!

Now we are the first able of doing so on top of simulations taking advantage of symmetry operations. Thank a lot to the help from @muralidhar-nalabothula and the Luxembourg group. It's time to produce nice results.

@andreamarini
Copy link
Member

Sakurai, p.159 - 167

Which one? Jun John wrote several books ;)

Thanks

@sangallidavide
Copy link
Member Author

For me Sakurai means "Modern Quantum Mechanics".

In the pages you will se the details of the mapping SO(3) -> SU(2), e.g. how to get a spin symmetry operation, given a spatial symmetry operation. Formally there is an isomorphism also written in the literature SO(3) ~ SU(2)/Z2. These notes are also useful: https://www.pas.rochester.edu/assets/pdf/undergraduate/su-2s_double_covering_of_so-3.pdf

In practice a rotation by theta in real space, becomes a rotation by theta/2 in spin space.
Imagine you have a system with only 2 symmetries and SOC:
S1= identity
S2= 180° degree rotation around z-axis
Both with associated real space operations, O1 and O2, and spin space operations, U1 and U2

The sop_table in real space would be would be very simple: O1xO1=O2xO2=O1, O1xO2=O2xO1=O2.
Suppose you want to compute the state psi'= S2 x S2 psi.
Without the spin part, and according to the sop_table: \psi'= O2xO2 \psi = O1 \psi = \psi

However you cannot use the sop_table for spin space operations. Indeed the rotation by 180° becomes a rotation by 90° in spin space. Then U2xU2 is different from the identity and rotates the spin in the xy plane by 180°

@andreamarini
Copy link
Member

I am a little bit lost :( Sorry.

The fact that spatial rotations correspond to spin rotations with half the angle is a known fact in QM.

But early in this issue you mention Trev and INV.

Trev is a different story and it is discussed at page 273 of the Sakurai book.

Spatial INV I don't remember how to treat in the spin space. Do you have notes about this?

Moreover, did we write notes when the spinorial extension of Yambo was coded? I am not among the authors of the routines that use spin_sop so I don't have any written note.

I do believe that we should have always the math connected to the specific piece of code. Me included, of course. Maybe it was me that did this mistake. But it looks pretty bad to me :( Something that we could have easily avoided being more careful with the math and discussing the physics beyond that specific extension.

@muralidhar-nalabothula
Copy link
Contributor

Hello Davide,

Spacial inversion does nothing to the spinors (angular momentum does not change with parity). Moreover all spacial symmetries (including inversion) form a group. So it should be perfectly fine with replacing two symmetry operations (including inversion) with one. The issue should be only with the time reversal and in this case, you will loose the information when to apply the time reversal when you combine two symmetries. I am not sure what is the issue with the inversion symmetry.

Best regards,
Murali

@sangallidavide
Copy link
Member Author

Thanks Murali. Yeah, inversion symmetry is fine, and leaves spin invariant.

For replacing "2 operations with 1" .. it depends on what you mean.
If it means: taking the two SU(2) matrices and multiplying them together, I agree that one can do that, just being careful with t-rev.

What we were doing in yambo, however, was to construct the group table of the space group (using real space operations only). This does not work when combined with SOC. See above example where S2 is rotation of 180°, and I want to apply it twice. The group table in real space tells me O2xO2= identity (only other symmetry in the group for the example). However, in spin space, the product U2xU2 goes out of SU(2)/Z2 which is not a group indeed.

We should generate an extended group table for the whole SU(2), e.g. doubling the total number of symmetry operations, and use it.

For now, in the building of the phase matrices (what you call Dmat), we avoid using the group table, and we apply the two syms one after the other to the WFs. Doing so the exc-ph matrix elements are perfectly symmetric also in presence of SOC.

@sangallidavide sangallidavide changed the title spin symmetry operations, called spin_sop in yambo, are not a group spin symmetry operations, called spin_sop in yambo, are not a group (just half of the SU(2) group) Jun 25, 2024
@andreamarini
Copy link
Member

Let's take the D4 group . It is composed by 8 symmetries. Simple. What are the corresponding spin symmetries?

@andreamarini
Copy link
Member

Let's forget spin_sop.

We have a group of spatial (+ eventually inversion) symmetries. Let's ignore the Trev for the moment.

From Sakurai book (Eng edition) I read the paragraph below.

This would mean we need to define a set of 2x2 matrices which translate a spatial rotation in a spin rotation given by Eq. 3.91.

image

The spatial inversion is discussed at page 165 and we should use Eq. 3.83

image

@sangallidavide
Copy link
Member Author

Let's take the D4 group . It is composed by 8 symmetries. Simple. What are the corresponding spin symmetries?

This becomes the double point group with 16 symmetry operations in the link below.

Listed below. First 8 symmetries with their connected symmetries in spin space (derived as in Sakurai).
Next 8 symmetries (9 to 16) are just the same with a -1 in spin space.
https://www.cryst.ehu.es/cgi-bin/cryst/programs/representations_out.pl?tipogrupo=dbg&pointspace=point&num=89&super=12&symbol=422

@andreamarini
Copy link
Member

Let's take the D4 group . It is composed by 8 symmetries. Simple. What are the corresponding spin symmetries?

This becomes the double point group with 16 symmetry operations in the link below.

Listed below. First 8 symmetries with their connected symmetries in spin space (derived as in Sakurai). Next 8 symmetries (9 to 16) are just the same with a -1 in spin space. https://www.cryst.ehu.es/cgi-bin/cryst/programs/representations_out.pl?tipogrupo=dbg&pointspace=point&num=89&super=12&symbol=422

Are you sure? Is this consistent with the definition of Sakurai?

@andreamarini
Copy link
Member

andreamarini commented Jun 25, 2024

What I understand is that (based on the math I got from Sakurai) we should build an array of 2x2 matrices with dimension n_sym and use 3.91 and 3.83 above to define each matrix depending if it contains or not spatial inversion.

@sangallidavide
Copy link
Member Author

First 8 symmetries with their connected symmetries in spin space (derived as in Sakurai)

This is the part consistent with Sakurai. Which gives the first half of SU(2), e.g. SU(2)/Z2.
In case of D4 the first 8 symmetries of the link

Next 8 symmetries (9 to 16) are just the same with a -1 in spin space. https://www.cryst.ehu.es/cgi-bin/cryst/programs/representations_out.pl?tipogrupo=dbg&pointspace=point&num=89&super=12&symbol=422

Then there are the other 8 syms. Check the spatial part, it is identical between 1 and 9, 2 and 10, 3 and 11, etc ...

@andreamarini
Copy link
Member

andreamarini commented Jun 26, 2024

Attached the 5 pages of Sakurai on the representation of spin simmetries corresponding to a real-space rotation written in terms of Euler angles.

On the basis of these pages I do think we should use 3.83 and 3.91.

Thus we need to rewrite the carthesian rotations in euler representations and associate to each real-space symmetry operation a spin one.

output.pdf

If you have alternatives definitions please provide notes and/or references.

Thx

@sangallidavide
Copy link
Member Author

We do that here:

https://github.com/yambo-code/yambo/blob/master/src/setup/build_spin_sop.F

just, this is only half of the story.

Again, for the example of the D4 group that you propose, with that we obtain the first 8 symmetries in soc space.
The other half, if we want to use group properties, is to double the symmetries and obtain the other 8.

@andreamarini
Copy link
Member

Ok. Then is easy. From \alpha, \beta etc one writes the spin 2x2 matrices.

Regarding the doubling of the symmetries I don't get where you get this from mathematically. Please provide notes and/or references.

Thx

@muralidhar-nalabothula
Copy link
Contributor

Dear Andrea,

The group that Davide is referring to is commonly known as the "double group". You can find the details in any standard group theory books such as from Mildred Dresselhaus (chapter 14) (like here), Group theory and electronic energy bands in solids by Cornwell (Chapter 8), or the one from C. J. Bradley and A. P. Cracknell.

Best regards,
Murali

@andreamarini
Copy link
Member

Dear Murali, can you extract the pages relevant to the discussion? The Dresselhaus book is almost 600 pages.

In addition what we need to understand is: given a certain group of symmetries of the lattice how do we rotate the spinorial wave-function? I think it is a simple question. Besides this we can talk about isomorphic groups, reducible representations and all the other mathematical aspects but for what regards Yambo we just need to rotate spinorial Bloch states.

The best is to produce some notes. I could do it myself but I am in the middle of too much math in these days.

@palful
Copy link
Member

palful commented Jun 26, 2024

  • Dresselhaus (Group theory in condesed matter physics): Chapter 14 p. 337
  • Bradley and Cracknell (The mathematical theory of symmetry in solids): Chapter 6 p. 418
  • Kim (Group theoretical methods): Chapter 10 p. 224

@muralidhar-nalabothula : besides this issue of rotations in spin space, perhaps it could be useful to the discussion if you want to share some of your notes about properly performing symmetry rotations in general for physical quantities. I feel that this spinorial discussion is only a footnote of the real work that was done by you in fixing how yambo treats rotations... I have the impression that the proper calculation of the electronic representations - double group or not - coded by @sangallidavide as WF_phases in yambo, could be useful to the code beyond symmetry analysis and exciton-phonon applications

@andreamarini
Copy link
Member

I totally agree, it would be great if @muralidhar-nalabothula could share the notes.

@palful what is this WF_phases about? In yambo I coded the phases to calculate the excitonic matrix elements using symmetries. Are those you are referring to? But those phases have little to do with the theory of symmetries.

@andreamarini
Copy link
Member

  • Dresselhaus (Group theory in condesed matter physics): Chapter 14 p. 337
  • Bradley and Cracknell (The mathematical theory of symmetry in solids): Chapter 6 p. 418
  • Kim (Group theoretical methods): Chapter 10 p. 224

Any chance to share the pdf? ;)

@andreamarini
Copy link
Member

BTW, do we agree that the few pages of Sakurai solve definitively the problem?

We can of course define a larger group in the spin basis. But this should not enter as there will be a 1-1 correspondence between spatial and spin symmetries. Therefore if a product of spatial symmetry is still a spatial symmetry this is reflected in a closed operation also in the spin space.

At least this is what I understand now from the (simple) discussion presented in the book of Sakuray.

Dunno if the references above lead to a different conclusion.

@muralidhar-nalabothula
Copy link
Contributor

muralidhar-nalabothula commented Jun 26, 2024

Dear Andrea,

I will share the notes privately in the coming days (because we are still working on it). All the references lead to the same conclusion. You are right, the group representation also have to accommodate the rotation in the spin space and must obey to the product rule. We do not really need these double point groups as this is simply a convention that people use to accommodate the missing representations for electrons due to half spin.

Best regards,
Murali
1

2 Screenshot 2024-06-26 at 11 31 12 AM Screenshot 2024-06-26 at 11 31 21 AM

@andreamarini
Copy link
Member

@muralidhar-nalabothula thanks so much for sharing these pages.

I totally agree with you and with the fact that we don't need the double group.

Looking forward to your notes. Do you discuss in the notes when the use of the double group is necessary? This aspect triggers me, indeed ;)

@andreamarini
Copy link
Member

It looks to me that this HUGE mistake affects ALL spinorial calculations of Yambo. Thus the code produces questionable results whenever there are spinors and symmetries.

Can you confirm?

@muralidhar-nalabothula
Copy link
Contributor

muralidhar-nalabothula commented Jun 27, 2024

Do you discuss in the notes when the use of the double group is necessary? This aspect triggers me, indeed ;)

No, the idea of a double group is something I never use as I simply like to label the representations with total angular momenta and parities.

Maybe I can explain what YAMBO does (@sangallidavide, correct me if there is something a bit different YAMBO does).

For simplicity, let's take the rotations. The unitary operator for rotation $R$ is defined as:
$$U(R) = e^{-i \mathbf{J} \cdot \hat{\mathbf{n}}},$$
where $\mathbf{J}$ is the total angular momentum operator. Writing $\mathbf{J} = \mathbf{L} + \mathbf{S}$ and employing the commutation relation $[\mathbf{L}, \mathbf{S}] = 0$, we can write the rotation operator as:
$$U(R) = e^{-i \mathbf{S} \cdot \hat{\mathbf{n}} } e^{-i \mathbf{L} \cdot \hat{\mathbf{n}}}.$$

For electrons, the operator $\mathbf{S}$ is known (in Pauli matrices). From this, we can write the rotation operator $e^{-i \mathbf{S} \cdot \hat{\mathbf{n}}}$ as $2\times2$ unitary matrices as shown in Sakurai. The rotation operator $e^{-i \mathbf{L} \cdot \hat{\mathbf{n}}}$ acts in the physical space and will simply rotate the coordinates, i.e., $\mathbf{x} \rightarrow R \mathbf{x}$.

Putting it all together, the application of the rotation operator on a spinor wavefunction can be written as:
$$U(R) \psi_\sigma(r) = e^{-i \mathbf{S} \cdot \hat{\mathbf{n}} } e^{-i \mathbf{L} \cdot \hat{\mathbf{n}}} \psi_\sigma(r) = e^{-i \mathbf{S} \cdot \hat{\mathbf{n}} } \psi_\sigma(R^{-1}r) = U_{\text{spin}}^{\sigma,\sigma'}(R) \psi_\sigma(R^{-1}r),$$
where $U_{\text{spin}}(R)$ is the 2x2 unitary matrix that rotates the spin space, as given in Sakurai.

In YAMBO, $U_{\text{spin}}(R)$ is coded and is applied to the spinor dimension. As you already know, $\psi_\sigma(R^{-1}r)$ is obtained by rotating the G vectors of the $\psi_\sigma(r)$ wavefunction. Hopefully this clarifies your confusion.

Clearly, we do not need anything regarding the double group. We can simply label the states with the total angular momentum (now they will be half-integers) along the rotation axis and use parity for reflections and inversions. The standard point group tables are defined for integer spins, so there will be missing representations in case of electrons, In order to accommodate the missing representations for half-integer $J$'s, people came up idea of double point group.

@andreamarini
Copy link
Member

andreamarini commented Jun 27, 2024

Dear @muralidhar-nalabothula. I agree with you. Only a minor question regarding the inversion. From Sakurai it looks to me that if

$$U^{\sigma,\sigma'}_{spin}(R)=\begin{pmatrix} a & b \\ -b^* & a^* \end{pmatrix}$$

then it follows

$$U^{\sigma,\sigma'}_{spin}(IR)=\begin{pmatrix} a^* & -b \\ b & a \end{pmatrix}$$

Do you agree?

Regarding Yambo I had a quick look at the code proposed in this issue and I cannot really understand what the code is doing.

Wouldn't be enough just to ammend (eventually) spin_sop and apply the 2x2 operation along with the spatial at each point where the electronic WF are used? Something like

$$\vec{\psi}_{n R\vec{k}}(\vec{r})=U_{spin}(R)\vec{\psi}_{n \vec{k}}(R^{-1}\vec{r})$$

where the $\vec{\psi}$ is the 2 dimensional spinor

@andreamarini
Copy link
Member

andreamarini commented Jun 27, 2024

Clearly, we do not need anything regarding the double group. We can simply label the states with the total angular momentum (now they will be half-integers) along the rotation axis and use parity for reflections and inversions. The standard point group tables are defined for integer spins, so there will be missing representations in case of electrons, In order to accommodate the missing representations for half-integer
𝐽
's, people came up idea of double point group.

Why do you talk of angular momentum? In solids, at difference with atoms, $l$ is not a good quantum number.

@muralidhar-nalabothula
Copy link
Contributor

muralidhar-nalabothula commented Jun 27, 2024

What you write is not correct IMO, inversion will not effect the angular momentum, so the spinors are unaffected in case of inversion. Could you please point where you noticed this in Sakurai?

Wouldn't be enough just to ammend (eventually) spin_sop and apply the 2x2 operation along with the spatial at each point where the electronic WF are used? Something like

Yes, I would like to do in this way too, but I guess it it matter of taste or maybe there are other factors that made them to do this way.

Why do you talk of angular momentum? In solids, at difference with atoms, is not a good quantum number.

When R is a symmetry i.e U(R) commutes with the Hamiltonian, the total angular momentum along the axis of rotation is conversed and is a well defined quantity. I agree, $l$ is not a good quantum number but component of $J$ along the axis of rotation is.

@andreamarini
Copy link
Member

What you write is not correct IMO, inversion will not effect the angular momentum, so the spinors are unaffected in case of inversion. Could you please point where you noticed this in Sakurai?

Eq. 3.83 (see output.pdf I attached to a previous comment).

Let me know why you think it is not correct. Thx.

When R is a symmetry i.e U(R) commutes with the Hamiltonian, the total angular momentum along the axis of rotation is conversed and is a well defined quantity. I agree, l is not a good quantum number but component of J along the axis of rotation is.

I am sorry but this paragraph is not clear to me. Can you point to a specific page/note of a reference?

@sangallidavide
Copy link
Member Author

It looks to me that this HUGE mistake affects ALL spinorial calculations of Yambo. Thus the code produces questionable results whenever there are spinors and symmetries.

Can you confirm?

The only parts of the code affected are ones where sop_tab is used with spinors:

  • standard BSE implementation. However, there is another bug there, and sop_tab is avoided in the new "direct" implementation which fixes such bug: https://github.com/yambo-code/yambo-devel/issues/544 (to re-check q=0 runs, but so far all runs with "standard" vs "direct" implementation always gave the same results)
  • elph databases expansion. That part already suffers from issues with random phases and this will add extra random phases. The new implementation done with Fulvio and Murali fixes this.
  • ELPH_sigma_c. It seems again related to operations with elph databases

In practice, I do not know if there is any yambo simulation at present that is affected by this issue.

@andreamarini
Copy link
Member

andreamarini commented Jun 27, 2024

I am still lost.

The problem with the definition of the spin rotations was solved with the proper definition of the $\sigma_x$ matrix in the issue #50. It remains to prove that the formulation in terms of Euler and Tayt/Bryan convention are equivalent (see #104).

Still, that issue affects, theoretically, ALL spin rotations in the code and, thus, all results in the spinorial basis.

Indeed we should also try GW, HF and more to see if issue https://github.com/yambo-code/yambo-devel/issues/544 is or not restricted only to BSE.

Said this and on the basis of the @muralidhar-nalabothula confirmation that the double spin group is not needed I don't understand anymore what is the current issue about.

@andreamarini
Copy link
Member

andreamarini commented Jun 27, 2024

  • elph databases expansion. That part already suffers from issues with random phases and this will add extra random phases. The new implementation done with Fulvio and Murali fixes this.
  • ELPH_sigma_c. It seems again related to operations with elph databases

I only partially agree about this. In all cases where the e-p matrix elements enter squared ($\Sigma_{Fan}$ and $\Pi$) the phases do not appear. They appear when those m.e. are applied to the BSE where non-diagonal sandwiches are needed.

Another case where phases can appear are in the case of degenerate electronic levels. But as those are summed it holds the same argument used to support the case of dipoles, for example.

@sangallidavide
Copy link
Member Author

I am still lost.

The problem with the definition of the spin rotations was solved with the proper definition of the σx matrix in the issue #50. It remains to prove that the formulation in terms of Euler and Tayt/Bryan convention are equivalent (see #104).

Issue #50 did not affect the results. Before and after nothing changed.
For #104 I do not see where is the issue.

Still, that issue affects, theoretically, ALL spin rotations in the code and, thus, all results in the spinorial basis.

Indeed we should also try GW, HF and more to see if issue yambo-code/yambo-devel#544 is or not restricted only to BSE.

Issue #544 is specific of BSE.

Said this and on the basis of the @muralidhar-nalabothula confirmation that the double spin group is not needed I don't understand anymore what is the current issue about.

The present issue is not related to spin_sop (these are fine), just to the use of sop_table, e.g. considering spin_sop as if they were a group. As the title say.

I propose let's slow down a bit and take some time to study and understand the point.
I opened this issue less than 3 days ago, and it already contain almost 50 messages.

Also because, as said, there is nothing not working in yambo at the moment. The issue we had was with the phases of exciton wave-functions and elph matrix elements.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants