Dear all,
is there any way to be able to visualize spin density distribution of excitonic wave function using yambo
as shown in this paper : Phys. Rev. B 77, 184408 (2008) ???
Bests
Martin
spin density
Moderators: Davide Sangalli, andrea.ferretti, myrta gruning, andrea marini, Daniele Varsano
-
- Posts: 149
- Joined: Tue Apr 08, 2014 6:05 am
spin density
Martin Spenke, PhD Student
Theoretisch-Physikalisches Institut
Universität Hamburg, Germany
Theoretisch-Physikalisches Institut
Universität Hamburg, Germany
- Davide Sangalli
- Posts: 641
- Joined: Tue May 29, 2012 4:49 pm
- Location: Via Salaria Km 29.3, CP 10, 00016, Monterotondo Stazione, Italy
- Contact:
Re: spin density
Dear Martin,
it is not coded in yambo but (if I understood what the did) I think you can acheive this result easely.
Just open the file ypp/exciton_driver.F
And around the line 432 you can insert: if(i_spin==2) cycle
after the line : i_spin= spin(BS_eh_table(neh,:))
Then recompile ypp and run ypp -e w
In this case you would plot the "spin up" contribution to the excitonic wf.
If you need the "spin down" part just use: if(i_spin==1) cycle
It should work both for collinear and non-collinear spin. Hope it helps.
Best,
Davide
it is not coded in yambo but (if I understood what the did) I think you can acheive this result easely.
Just open the file ypp/exciton_driver.F
And around the line 432 you can insert: if(i_spin==2) cycle
after the line : i_spin= spin(BS_eh_table(neh,:))
Then recompile ypp and run ypp -e w
In this case you would plot the "spin up" contribution to the excitonic wf.
If you need the "spin down" part just use: if(i_spin==1) cycle
It should work both for collinear and non-collinear spin. Hope it helps.
Best,
Davide
Davide Sangalli, PhD
CNR-ISM, Division of Ultrafast Processes in Materials (FLASHit) and MaX Centre
https://sites.google.com/view/davidesangalli
http://www.max-centre.eu/
CNR-ISM, Division of Ultrafast Processes in Materials (FLASHit) and MaX Centre
https://sites.google.com/view/davidesangalli
http://www.max-centre.eu/
-
- Posts: 149
- Joined: Tue Apr 08, 2014 6:05 am
Re: spin density
Dear Davide,
many thanks.
Just to be sure :
i_spin= spin(BS_eh_table(neh,:)) is for me at line : 392
So is this modification now correct : ?
Bests
Martin
many thanks.
Just to be sure :
i_spin= spin(BS_eh_table(neh,:)) is for me at line : 392
So is this modification now correct : ?
Code: Select all
do neh = 1,BS_H_dim
!
ikbz = BS_eh_table(neh,1)
iv = BS_eh_table(neh,2)
ic = BS_eh_table(neh,3)
i_spin= spin(BS_eh_table(neh,:))
if(i_spin==2) cycle
!
ikibz = Xk%sstar(ikbz,1)
is = Xk%sstar(ikbz,2)
!
k_dot_r = dot_product(r_eh,Xk%ptbz(ikbz,:)/alat(:))*2.*pi
!
WF1_ir=WF_symm(rindex(ir),(/iv,ikibz,is,i_spin/))
WF2_ir=WF_symm(rindex(ir),(/ic,ikibz,is,i_spin/))
!
wf_vc(neh) = conjg(WF1_ir(1))*WF2_ir(1)
if(n_spinor==2) wf_vc(neh) = wf_vc(neh) + conjg(WF1_ir(2))*WF2_ir(2)
!
wf_vc(neh) = wf_vc(neh)*exp(cI*k_dot_r)
!
enddo !Matrix elements
Martin
Last edited by martinspenke on Mon Aug 25, 2014 11:08 am, edited 1 time in total.
Martin Spenke, PhD Student
Theoretisch-Physikalisches Institut
Universität Hamburg, Germany
Theoretisch-Physikalisches Institut
Universität Hamburg, Germany
- Davide Sangalli
- Posts: 641
- Joined: Tue May 29, 2012 4:49 pm
- Location: Via Salaria Km 29.3, CP 10, 00016, Monterotondo Stazione, Italy
- Contact:
Re: spin density
Yes. D.
Davide Sangalli, PhD
CNR-ISM, Division of Ultrafast Processes in Materials (FLASHit) and MaX Centre
https://sites.google.com/view/davidesangalli
http://www.max-centre.eu/
CNR-ISM, Division of Ultrafast Processes in Materials (FLASHit) and MaX Centre
https://sites.google.com/view/davidesangalli
http://www.max-centre.eu/
-
- Posts: 149
- Joined: Tue Apr 08, 2014 6:05 am
Re: spin density
Dear Davide,
If i want to plot the spin density difference (rho_up - rho_down) , would be this modification correct : ?
Bests
Martin
If i want to plot the spin density difference (rho_up - rho_down) , would be this modification correct : ?
Code: Select all
do neh = 1,BS_H_dim
!
ikbz = BS_eh_table(neh,1)
iv = BS_eh_table(neh,2)
ic = BS_eh_table(neh,3)
i_spin= spin(BS_eh_table(neh,:))
if(i_spin==2) cycle ! UP
!
ikibz = Xk%sstar(ikbz,1)
is = Xk%sstar(ikbz,2)
!
k_dot_r = dot_product(r_eh,Xk%ptbz(ikbz,:)/alat(:))*2.*pi
!
WF1_ir=WF_symm(rindex(ir),(/iv,ikibz,is,i_spin/))
WF2_ir=WF_symm(rindex(ir),(/ic,ikibz,is,i_spin/))
!
wf_vc(neh)_up = conjg(WF1_ir(1))*WF2_ir(1)
if(i_spin==1) cycle ! DOWN ----------------------------------------------------------------------------------------------
!
ikibz = Xk%sstar(ikbz,1)
is = Xk%sstar(ikbz,2)
!
k_dot_r = dot_product(r_eh,Xk%ptbz(ikbz,:)/alat(:))*2.*pi
!
WF3_ir=WF_symm(rindex(ir),(/iv,ikibz,is,i_spin/))
WF4_ir=WF_symm(rindex(ir),(/ic,ikibz,is,i_spin/))
!
wf_vc(neh)_down = conjg(WF3_ir(1))*WF4_ir(1)
if(n_spinor==2) wf_vc(neh) = (wf_vc(neh)_up - wf_vc(neh)_down) + conjg(WF1_ir(2))*(WF2_ir(2)) - conjg(WF3_ir(2))*(WF4_ir(2))
!
wf_vc(neh) = wf_vc(neh)*exp(cI*k_dot_r)
!
enddo !Matrix elements
Martin
Martin Spenke, PhD Student
Theoretisch-Physikalisches Institut
Universität Hamburg, Germany
Theoretisch-Physikalisches Institut
Universität Hamburg, Germany
- Davide Sangalli
- Posts: 641
- Joined: Tue May 29, 2012 4:49 pm
- Location: Via Salaria Km 29.3, CP 10, 00016, Monterotondo Stazione, Italy
- Contact:
Re: spin density
Dear Martin,
I'm not sure I understood what you mean.
Here we are making a plot of the square modulus of the excitonic wave--function.
If you want to plot the differnce I guess you should define a wf_vc_up(neh) and a wf_vc_dw(neh). Something like that
and then
Davide
P.S.: keep in mind that all this works for the collinear case. If you are considering the non-collinear case it would be different ...
I'm not sure I understood what you mean.
Here we are making a plot of the square modulus of the excitonic wave--function.
If you want to plot the differnce I guess you should define a wf_vc_up(neh) and a wf_vc_dw(neh). Something like that
Code: Select all
if(i_spin==1) wf_vc_up(neh) = wf_vc(neh)*exp(cI*k_dot_r)
if(i_spin==2) wf_vc_dw(neh) = wf_vc(neh)*exp(cI*k_dot_r)
Code: Select all
wf_up = V_dot_V(BS_H_dim,BS_mat(1,i_l),wf_vc_up)
wf_dw = V_dot_V(BS_H_dim,BS_mat(1,i_l),wf_vc_dw)
!
v2plot(ir) = v2plot(ir)+abs(wf_up)**2.- abs(wf_dw)**2.
P.S.: keep in mind that all this works for the collinear case. If you are considering the non-collinear case it would be different ...
Davide Sangalli, PhD
CNR-ISM, Division of Ultrafast Processes in Materials (FLASHit) and MaX Centre
https://sites.google.com/view/davidesangalli
http://www.max-centre.eu/
CNR-ISM, Division of Ultrafast Processes in Materials (FLASHit) and MaX Centre
https://sites.google.com/view/davidesangalli
http://www.max-centre.eu/