Skip to content
mathias-driesse edited this page Aug 12, 2020 · 3 revisions

By card


&CONTROL
    ...
/
&SYSTEM
    ...
/
&ELECTRONS
    ...
/
&IONS
    ...
/
&CELL
    ...
/

These cards are set up with the bare minimum to run Quantum ESPRESSO with. Currently, there is no support for a cuds version of the other parameters, so these have to be specified manually when running the simulation.


ATOMIC_SPECIES
 X  Mass_X  PseudoPot_X
 Y  Mass_Y  PseudoPot_Y
 Z  Mass_Z  PseudoPot_Z

Not optional. Each atom in the unit cell, their mass, and their pseudopotential file. Structure is as follows:

- Cuds object:
  type: qe.Simulation
   |_Relationship qe.HAS_PART:
     -  qe.Element cuds object named <Si>:
     .   |_Relationship qe.HAS_PART:
     .     -  qe.Atom cuds object:
     .     .  (already printed)
     .     -  qe.Mass cuds object:
     .     .  value: 28.085
     .     .  unit: amu
     .     -  qe.PSEUDOPOTENTIAL cuds object named <Si.pbe-n-kjpaw_psl.1.0.0.UPF>:

ATOMIC_POSITIONS { alat | bohr | crystal | angstrom | crystal_sg }
  X 0.0  0.0  0.0  {if_pos(1) if_pos(2) if_pos(3)}
  Y 0.5  0.0  0.0
  Z 0.0  0.2  0.2

alat: atomic positions are in cartesian coordinates, in units of the lattice parameter (either celldm(1) or A).

bohr: atomic positions are in cartesian coordinate, in atomic units (i.e. Bohr radii)

angstrom: atomic positions are in cartesian coordinates, in Angstrom

crystal: atomic positions are in crystal coordinates, i.e. in relative coordinates of the primitive lattice vectors as defined either in card CELL_PARAMETERS or via the ibrav + celldm / a,b,c... variables

crystal_sg: atomic positions are in crystal coordinates, i.e. in relative coordinates of the primitive lattice. This option differs from the previous one because in this case only the symmetry inequivalent atoms are given. The variable space_group must indicate the space group number used to find the symmetry equivalent atoms. The other variables that control this option are uniqueb, origin_choice, and rhombohedral.

if_pos determines whether that coordinate is free to move or not, with 0 signifying that coordinate cannot change, and 1 that the coordinate is variable. Only relevant in molecular dynamics or structural optimization calculations. With crystal_sg atomic coordinates the constraints are copied in all equivalent atoms.

Here's what it looks like in cuds:

- Cuds object:
  type: qe.Simulation
   |_Relationship qe.HAS_PART:
     -  qe.Cell cuds object:
     .   |_Relationship qe.HAS_PART:
     .     -  qe.Atom cuds object:
     .     .   |_Relationship qe.HAS_PART:
     .     .     -  qe.Position cuds object:
     .     .        unit: alat
     .     .        vector: [0. 0. 0.]

Don't forget that each qe.Atom object has to be related with qe.Element, as seen previously.


K_POINTS { tpiba | automatic | crystal | gamma | tpiba_b | crystal_b | tpiba_c | crystal_c }
if (gamma)
   nothing to read
if (automatic)
   nk1, nk2, nk3, k1, k2, k3
if (not automatic)
   nks
   xk_x, xk_y, xk_z,  wk
if (tpipa_b or crystal_b in a 'bands' calculation) see Doc/brillouin_zones.pdf

tpiba: read k-points in cartesian coordinates, in units of 2 pi/a (default)

automatic: automatically generated uniform grid of k-points, i.e, generates ( nk1, nk2, nk3 ) grid with ( sk1, sk2, sk3 ) offset. nk1, nk2, nk3 as in Monkhorst-Pack grids k1, k2, k3 must be 0 ( no offset ) or 1 ( grid displaced by half a grid step in the corresponding direction ) BEWARE: only grids having the full symmetry of the crystal work with tetrahedra. Some grids with offset may not work.

crystal: read k-points in crystal coordinates, i.e. in relative coordinates of the reciprocal lattice vectors

gamma: use k = 0 (no need to list k-point specifications after card) In this case wavefunctions can be chosen as real, and specialized subroutines optimized for calculations at the gamma point are used (memory and cpu requirements are reduced by approximately one half).

tpiba_b: Used for band-structure plots. See Doc/brillouin_zones.pdf for usage of BZ labels; otherwise, k-points are in units of 2 pi/a. nks points specify nks-1 lines in reciprocal space. Every couple of points identifies the initial and final point of a line. pw.x generates N intermediate points of the line where N is the weight of the first point.

crystal_b: As tpiba_b, but k-points are in crystal coordinates. See Doc/brillouin_zones.pdf for usage of BZ labels.

tpiba_c: Used for band-structure contour plots. k-points are in units of 2 pi/a. nks must be 3. 3 k-points k_0, k_1, and k_2 specify a rectangle in reciprocal space of vertices k_0, k_1, k_2, k_1 + k_2 - k_0: k_0 + \alpha (k_1-k_0)+ \beta (k_2-k_0) with 0 <\alpha,\beta < 1. The code produces a uniform mesh n1 x n2 k points in this rectangle. n1 and n2 are the weights of k_1 and k_2. The weight of k_0 is not used.

crystal_c: As tpiba_c, but k-points are in crystal coordinates.

If tpiba OR crystal OR tpiba_b OR crystal_b OR tpiba_c OR crystal_c: specify the number of k points, and add all the k points to the simulation with a vector (specifying their position) and their weight/value as following:

- Cuds object:
  type: qe.Simulation
   |_Relationship qe.HAS_PART:
     -  qe.K_POINTS cuds object:
     .  vector6: [7. 7. 7. 0. 0. 0.]
     .  unit: automatic

or alternatively

     -  qe.K_POINT cuds object:
     .  value: 3
     .  vector: [0. 0. 0.]
     .  unit: tpiba
     -  qe.K_POINT cuds object:
     .  value: 1
     .  vector: [1. 0. 0.5]
     .  unit: tpiba

All k points in the simulation will be counted and added, so only ones you wish to be calculated. Make sure that all of them are in the same units.

If automatic: include a vector6 QE.K_POINTS, where the first three elements are the grid and the second three are the offset.

If gamma: do nothing. Quantum Espresso will simply evaluate at the gamma point.


[ OCCUPATIONS
   f_inp1(1)  f_inp1(2)  f_inp1(3) ... f_inp1(10)
   f_inp1(11) f_inp1(12) ... f_inp1(nbnd)
 [ f_inp2(1)  f_inp2(2)  f_inp2(3) ... f_inp2(10)
   f_inp2(11) f_inp2(12) ... f_inp2(nbnd) ] ]

It is unlikely that this feature will be implemented, as there is insufficient documentation online to implement it in this wrapper.


CELL_PARAMETERS { alat | bohr | angstrom }
   v1(1) v1(2) v1(3) ... 1st lattice vector
   v2(1) v2(2) v2(3) ... 2nd lattice vector
   v3(1) v3(2) v3(3) ... 3rd lattice vector

This is only in case self.params["SYSTEM]["ibrav] == 0
Otherwise, symmetries and space groups will be used (still to be implemented)

bohr / angstrom: lattice vectors in bohr-radii / angstrom.

alat (default): lattice vectors in units of the lattice parameter (either celldm(1) or A).

How this looks in cuds:

- Cuds object:
  type: qe.Simulation
   |_Relationship qe.HAS_PART:
     -  qe.Cell cuds object:
     .   |_Relationship qe.HAS_PART:
           -  qe.CellParams cuds object:
           .  unit: alat
           .  tensor2: [[0.5 0.5 0.]
                        [0.5 0. 0.5]
                        [0. 0.5 0.5]]

[ CONSTRAINTS
   nconstr  { constr_tol }
   constr_type(.)   constr(1,.)   constr(2,.) [ constr(3,.)   constr(4,.) ] { constr_target(.) } ]

Unimplemented as of yet.


[ ATOMIC_FORCES
   label_1 Fx(1) Fy(1) Fz(1)
   .....
   label_n Fx(n) Fy(n) Fz(n) ]

Unimplemented as of yet.

calculation = 'scf'

The default calculation. Nothing is necessary besides what is detailed above.

calculation = 'bands'`

For this, you need to specify nbnd in SYSTEM **kwargs. Manual K_POINTs are also a good idea, such as crystal_b. The value represents how many points along the path are calculated.

Clone this wiki locally