domain keywords

Unit cell descriptors

domain.bravaisLattice

Bravais lattice.

type: string

allowed: 'CUB','FCC','BCC','TET','BCT1','BCT2','ORC','ORCF1','ORCF2','ORCF3','ORCI','ORCC','HEX','RHL1','RHL2'

example: domain.bravaisLattice = 'BCT2'

domain.boundary

Determine the boundary conditions along each dimension. The wavefunctions are assumed to be periodic if domain.boundary == 1 and finite range otherwise (infinite square well boundary conditions). If domain.boundary is set to 0, the Poisson equation is solved with Dirichlet boundary conditions (homogeneous if domain.bvalx is not set). If domain.boundary is set to 1, the Poisson equation is solved with periodic boundary conditions. If domain.boundary is set to 2, the Poisson equation is solved with homogeneous von Neumann boundary conditions. This is tantamount to introducing a correcting dipole layer at the edge of the type-2 dimension. If domain.boundary is set to 3 along one dimension and 1 along the other two, the system is treated as open along the type-3 dimension. More precisely, the electrostatic potential is calculated on the lower and upper type-3 boundaries and the Poisson equation is solved using those boundary conditions. If in addition an external potential is added to the open boundary, then domain.boundary must be set to 4.

type: array

default: [1,1,1]

allowed: [0,1,2,3,4]

size: [1,3]

example: domain.boundary = [0 1 1]

domain.bvalx

This keyword determines the boundary values along the x-direction. It is meaningful only if Dirichlet boundary conditions are used, which is done by setting the domain.boundary keyword equal to 0. The first and second entries contain the values of the potential on the inferior and superior x-boundaries respectively. Each entry in the cell array can be one of the following. The value can be a scalar defining the value of the potential on the boundary (e.g. -1). The value can be a function of the reduce coordinates u and v (e.g. @(u,v) sin(u).*cos(v-0.5).^2). The value can string that is the name of a file which contains a (1*ny*nz) array defining the value of the potential on the boundary. RESCU will not verify whether the boundary values satisfy symmetries. You should thus turn off symmetry or leave it at your own risk.

type: cell array

example: domain.bvalx = {0 'bx1.mat'}

domain.bvaly

This keyword determines the boundary values along the y-direction. It is meaningful only if Dirichlet boundary conditions are used, which is done by setting the domain.boundary keyword equal to 0. The first and second entries contain the values of the potential on the inferior and superior y-boundaries respectively. Each entry in the cell array can be one of the following. The value can be a scalar defining the value of the potential on the boundary (e.g. -1). The value can be a function of the reduce coordinates u and v (e.g. @(u,v) sin(u).*cos(v-0.5).^2). The value can string that is the name of a file which contains a (nx*1*nz) array defining the value of the potential on the boundary. RESCU will not verify whether the boundary values satisfy symmetries. You should thus turn off symmetry or leave it at your own risk.

type: cell array

example: domain.bvaly = {0 'by1.mat'}

domain.bvalz

This keyword determines the boundary values along the z-direction. It is meaningful only if Dirichlet boundary conditions are used, which is done by setting the domain.boundary keyword equal to 0. The first and second entries contain the values of the potential on the inferior and superior z-boundaries respectively. Each entry in the cell array can be one of the following. The value can be a scalar defining the value of the potential on the boundary (e.g. -1). The value can be a function of the reduce coordinates u and v (e.g. @(u,v) sin(u).*cos(v-0.5).^2). The value can string that is the name of a file which contains a (nx*ny*1) array defining the value of the potential on the boundary. RESCU will not verify whether the boundary values satisfy symmetries. You should thus turn off symmetry or leave it at your own risk.

type: cell array

example: domain.bvalz = {0 'bz1.mat'}

domain.cgridn

Number of grid points used to represent the basis functions (wavefunctions); must be an integer.

type: array

size: [1,3]

example: domain.cgridn = [35 35 35]

domain.fgridn

Number of grid points used to represent the local potential, the non-local potential projectors and the density. In atomic orbital calculations it is equal to domain.cgridn. It must be an integer.

type: array

default: domain.cgridn

size: [1,3]

example: domain.fgridn = [71 71 71]

domain.fourierInit

Determine whether to initialize densities and potentials from their Fourier coefficients.

type: scalar

default: false

example: domain.fourierInit = true

domain.highres

Determine the number of points on the fine grid (domain.fgridn); domain.highres is a lower bound, the resolution ends up being a bit higher in general since domain.fgridn must be an integer; if domain.fgridn is also defined, it has precedence. If it is set to a negative integer, the fine grid’s number of points will be the coarse grid’s number of points times the correponsing number. For example, if domain.cgridn = [20 20 20] and domain.highres = -2, then domain.fgridn will end up being [40 40 40].

type: scalar

example: domain.highres = 0.25

domain.latvec

Lattice vectors. The matrix must contain three row-vectors.

type: array

size: [3,3]

example: domain.latvec = 10.25*[[0.0 0.5 0.5];[0.5 0.0 0.5];[0.5 0.5 0.0]]

domain.lowres

Determine the number of points on the coarse grid (domain.cgridn); domain.lowres is a lower bound, the resolution ends up being a bit higher in general since domain.cgridn must be an integer; if domain.cgridn is also defined, it has precedence.

type: scalar

example: domain.lowres = 0.5

domain.primLatvec

Lattice vectors of the primitive cell used for band unfolding.

type: array

size: [3,3]

example: domain.primLatvec = 10.25*[[0.0 0.5 0.5];[0.5 0.0 0.5];[0.5 0.5 0.0]]

domain.vnlReal

If domain.vnlReal = false, RESCU willl use the plane wave representation of the non-local pseudopotential projectors and the real space representation otherwise. The plane wave representation may improve translational invariance.

type: scalar

default: true

allowed: true,false

example: domain.vnlReal = true