ABINIT/m_melemts [ Modules ]

This module defines an object used as database to store matrix
elements of several potentials and operators between two Bloch states.
These values are used in the GW part of abinit to evaluate QP energies
using the perturbative approach.

* This module is supposed to be used only in the GW part to facilitate
further developments. The object might change in the future. Thus
contact Matteo Giantomassi if you wish to use this piece of code
for your developments. In particular we might decide to switch
to ragged arrays Mels(nkibz,nsppol*nspinor**2)%data
* Routines tagged with "@type_name" are tightly connected to the definition of the data type.
Tightly connected means that the proper functioning of the implementation relies on the
assumption that the tagged procedure is consistent with the type declaration.
Every time a developer changes the structure "type_name" adding new entries, he/she has to make sure
that all the tightly connected routines are changed accordingly to accommodate the modification of the data type.
Typical examples of tightly connected routines are creation, destruction or reset methods.

m_melemts/melements_zero [ Functions ]

Set matrix elements connecting states with different irreducible representation to zero.

INPUTS

irrep_tab=Array used to select the entries that have to be set to zero.
irrep_tab(ib,ik,is)=gives the index of the irreducible representation associated to state (ib,ik,is).
[aname]=The name of the array to be symmetrized, by default
all calculated arrays are filled.

SIDE EFFECTS

Mels= All arrays elements connecting states belonging to different irreps are set to zero.

m_melemts/melflags_t [ Types ]

Container for the flags defining the status of the corresponding
pointer defined in the type melements_t. Possible values are:
* 0 if the correspondending array is not allocated.
* 1 if allocated but not yet calculated.
* 2 if allocated and calculated