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