Data types documentation

Various technical topics such as parallelism and efficiency, netCDF problems, the Yambo code structure itself, are posted here.

Moderators: Davide Sangalli, andrea.ferretti, myrta gruning, andrea marini, Daniele Varsano, Conor Hogan, Nicola Spallanzani

Post Reply
AntimoMarrazzo
Posts: 20
Joined: Fri Jan 22, 2016 2:46 pm

Data types documentation

Post by AntimoMarrazzo » Mon Jan 25, 2016 10:17 am

Dear developers,

I would like to slightly modify the ypp post processing tool according to my needs, hence I need to know a little more about the data types of yambo. In particular I am interested in the data types "bz_samp" (found in mod_R_lattice.F) and "QP_t" (found in mod_QP.F), I attach the relevant code below:

Code: Select all

 type bz_samp
   integer           :: nibz,nbz
   integer,  pointer :: nstar(:)     => null()  ! n° of points in the star
   integer,  pointer :: star(:,:)    => null()  ! ik,ikstar --> is     is sends ik in ikstar
   integer,  pointer :: sstar(:,:)   => null()  ! ik_bz     --> ik,is  is sends ik in ikbz
   integer,  pointer :: s_table(:,:) => null()  ! ik,is     --> sym@k_bz  revers of sstar
   integer,  pointer :: k_table(:,:) => null()  ! ik,is     --> ik_bz     revers of sstar
   real(SP), pointer :: pt(:,:)      => null()
   real(SP), pointer :: ptbz(:,:)    => null()
   real(SP), pointer :: weights(:)   => null()
   character(6)      :: description
   character(1)      :: units
 end type bz_samp

 type QP_t
   !
   character(schlen)  :: description(max_qp_descs)
   integer,    pointer:: table(:,:) => null()
   real(SP)   ,pointer:: k(:,:)     => null()
   real(SP)   ,pointer:: wk(:)      => null()
   real(SP)   ,pointer:: E_bare(:)  => null()
   complex(SP),pointer:: E(:)       => null()
   complex(SP),pointer:: Z(:)       => null()
   integer  :: n_descs
   integer  :: nk
   integer  :: nb
   integer  :: n_states
   !
   ! Green Function and Self-Energy
   !
   integer            :: GreenF_n_steps
   complex(SP),pointer:: S_total(:,:)   => null()
   complex(SP),pointer:: GreenF(:,:)    => null()
   complex(SP),pointer:: GreenF_W(:,:)  => null()
   !
 end type QP_t
Would it be possible to have some more details about the meaning of each element? For QP_t it would be enough to know about the structure of 'k' and 'table'. I have read the documentation and done some 'reverse engineering', but still some aspects of the types are not completely clear to me.
Thank you :)
Antimo Marrazzo
SISSA
Trieste (Italy)

User avatar
Daniele Varsano
Posts: 3816
Joined: Tue Mar 17, 2009 2:23 pm
Contact:

Re: Data types documentation

Post by Daniele Varsano » Thu Jan 28, 2016 1:39 pm

Dear Antimo,
Can you be more precise on what are your needs and what exactly it is not clear to you?

Best,

Daniele
Dr. Daniele Varsano
S3-CNR Institute of Nanoscience and MaX Center, Italy
MaX - Materials design at the Exascale
http://www.nano.cnr.it
http://www.max-centre.eu/

AntimoMarrazzo
Posts: 20
Joined: Fri Jan 22, 2016 2:46 pm

Re: Data types documentation

Post by AntimoMarrazzo » Thu Jan 28, 2016 4:47 pm

Dear Daniele,

I need to unfold the QP energies on the full BZ (this is already done by ypp -w), but also in case the QP energies are computed on a subset (this is why I need to slightly modify ypp) of the k-points mesh given as input to yambo. A few specific variables I am interested in:
-qp%table(i,j), i stands for the qp index but j? qp%table(i,1) gives the band index but what does qp%table(i,3) stand for?
-I have not fully understood how k%nstar, k%sstar, k%star work. I think they allow to manage indeces (e.g. to go back and forth from the BZ to the IBZ) but still some more details would help me.

Thank you in advance for your help!
Antimo Marrazzo
SISSA
Trieste (Italy)

User avatar
Davide Sangalli
Posts: 614
Joined: Tue May 29, 2012 4:49 pm
Location: Via Salaria Km 29.3, CP 10, 00016, Monterotondo Stazione, Italy
Contact:

Re: Data types documentation

Post by Davide Sangalli » Fri Jan 29, 2016 3:35 pm

Dear Antonio,

=============================================================
the general way to use the QP_table is:
ib =QP_table(i_qp,1)
ik =QP_table(i_qp,3)
i_spin=spin(QP_table(i_qp,:)) (i_spin is basically the index 4)
Have a look to electrons_drivers.F.

The index 2 is used only when sometimes if the QP_table is associated to a transition.
I think otherwise it is not used.
ib =QP_table(i_qp,1)
ibp =QP_table(i_qp,2)
ik =QP_table(i_qp,3)
i_spin=spin(QP_table(i_qp,:)) (i_spin is basically the index 4)

=============================================================
Then for the type bz_samp, it is how the comment suggests.

star: given in input ik in the IBZ and the index in the star (ikstar=1,nk_in_star) --> output the symmetry index which yambo uses to relate the two points
(it is not the only possible symmetry, but the one used)

sstar: given in input ik_bz in the BZ --> output the corresponding ik in the IBZ and the symmetry is which relates it to ik_bz
(elements 1 (ik) and 2 (is) of the table)

k_table: given in input ik in the IBZ and a symmetry is--> gives the corresponding ik_bz in the BZ which is obtained applying the symmetry

s_table: given in input ik in the IBZ and a symmetry is --> gives the symmetry is_def which by defaults yambo use to build up WF(ik_bz) in the BZ.
(it is possible that one kpt can be reached by more than one symmetry, is and is_def)

Best,
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/

AntimoMarrazzo
Posts: 20
Joined: Fri Jan 22, 2016 2:46 pm

Re: Data types documentation

Post by AntimoMarrazzo » Mon Feb 08, 2016 5:22 pm

Dear Davide,

thanks a lot for the answer, it really helped me a lot!

Best,
Antimo Marrazzo
SISSA
Trieste (Italy)

Post Reply