-
Notifications
You must be signed in to change notification settings - Fork 1
pw.x
&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.
The default calculation. Nothing is necessary besides what is detailed above.
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.