mod_fermisurf_basic Module


Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: ROOT_ANY = 0
integer, public, parameter :: ROOT_REAL = 1
integer, public, parameter :: ROOT_IMAG = 2

Functions

public function get_cubesinfo_filename(nCub3, lintermediate) result(filename)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nCub3(3)
logical, intent(in) :: lintermediate

Return Value character(len=256)


Subroutines

public subroutine testpath(inc, lattice, cluster, tgmatrx)

Read more…

Arguments

Type IntentOptional Attributes Name
type(inc_TYPE), intent(in) :: inc
type(lattice_TYPE), intent(in) :: lattice
type(cluster_TYPE), intent(in) :: cluster
type(tgmatrx_TYPE), intent(inout) :: tgmatrx

public subroutine connect_eigw_in_substeps(inc, lattice, cluster, tgmatrx, nsteps, kends, connection, ksub, eigw, LVeig, RVeig)

Arguments

Type IntentOptional Attributes Name
type(inc_TYPE), intent(in) :: inc
type(lattice_TYPE), intent(in) :: lattice
type(cluster_TYPE), intent(in) :: cluster
type(tgmatrx_TYPE), intent(in) :: tgmatrx
integer, intent(in) :: nsteps
double precision, intent(in) :: kends(3,2)
integer, intent(out) :: connection(inc%almso,nsteps+1)
double precision, intent(out) :: ksub(3,nsteps+1)
double complex, intent(out) :: eigw(inc%almso,nsteps+1)
double complex, intent(out) :: LVeig(inc%almso,inc%almso,nsteps+1)
double complex, intent(out) :: RVeig(inc%almso,inc%almso,nsteps+1)

public subroutine connect_eigw_in_substeps_memopt(inc, lattice, cluster, tgmatrx, nsteps, kends, connection, ksub, eigw, LVeig, RVeig, nb_bands)

Arguments

Type IntentOptional Attributes Name
type(inc_TYPE), intent(in) :: inc
type(lattice_TYPE), intent(in) :: lattice
type(cluster_TYPE), intent(in) :: cluster
type(tgmatrx_TYPE), intent(in) :: tgmatrx
integer, intent(in) :: nsteps
double precision, intent(in) :: kends(3,2)
integer, intent(out) :: connection(inc%neig,nsteps+1)
double precision, intent(out) :: ksub(3,nsteps+1)
double complex, intent(out) :: eigw(inc%neig,nsteps+1)
double complex, intent(out) :: LVeig(inc%almso,inc%neig,nsteps+1)
double complex, intent(out) :: RVeig(inc%almso,inc%neig,nsteps+1)
integer, intent(out) :: nb_bands

public subroutine roots_along_edge(inc, lattice, cluster, tgmatrx, nsteps, kends, niterate, roottype, rooteps, nroot, lmroot, kroot, LVroot, RVroot, eigwroot, uio, eigwends)

Arguments

Type IntentOptional Attributes Name
type(inc_TYPE), intent(in) :: inc
type(lattice_TYPE), intent(in) :: lattice
type(cluster_TYPE), intent(in) :: cluster
type(tgmatrx_TYPE), intent(in) :: tgmatrx
integer, intent(in) :: nsteps
double precision, intent(in) :: kends(3,2)
integer, intent(in) :: niterate
integer, intent(in) :: roottype
double precision, intent(in) :: rooteps
integer, intent(out) :: nroot
integer, intent(out) :: lmroot(inc%nrootmax)
double precision, intent(out) :: kroot(3,inc%nrootmax)
double complex, intent(out) :: LVroot(inc%almso,inc%almso,inc%nrootmax)
double complex, intent(out) :: RVroot(inc%almso,inc%almso,inc%nrootmax)
double complex, intent(out) :: eigwroot(inc%almso,inc%nrootmax)
integer, intent(in) :: uio
double complex, intent(out), optional :: eigwends(2,inc%nrootmax)

public subroutine roots_along_edge_memopt(inc, lattice, cluster, tgmatrx, nsteps, kends, niterate, roottype, rooteps, nroot, lmroot, kroot, LVroot, RVroot, eigwroot, uio, eigwends)

Arguments

Type IntentOptional Attributes Name
type(inc_TYPE), intent(in) :: inc
type(lattice_TYPE), intent(in) :: lattice
type(cluster_TYPE), intent(in) :: cluster
type(tgmatrx_TYPE), intent(in) :: tgmatrx
integer, intent(in) :: nsteps
double precision, intent(in) :: kends(3,2)
integer, intent(in) :: niterate
integer, intent(in) :: roottype
double precision, intent(in) :: rooteps
integer, intent(out) :: nroot
integer, intent(out) :: lmroot(inc%nrootmax)
double precision, intent(out) :: kroot(3,inc%nrootmax)
double complex, intent(out) :: LVroot(inc%almso,inc%neig,inc%nrootmax)
double complex, intent(out) :: RVroot(inc%almso,inc%neig,inc%nrootmax)
double complex, intent(out) :: eigwroot(inc%neig,inc%nrootmax)
integer, intent(in) :: uio
double complex, intent(out), optional :: eigwends(2,inc%nrootmax)

public subroutine find_roots_any_eigw(almso, nsteps, connection, eigw, roottype, rooteps, anyroot)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: almso
integer, intent(in) :: nsteps
integer, intent(in) :: connection(almso,nsteps+1)
double complex, intent(in) :: eigw(almso,nsteps+1)
integer, intent(in) :: roottype
double precision, intent(in) :: rooteps
logical, intent(out) :: anyroot

public subroutine find_roots_any_eigw_memopt(neig, reig, nb_bands, nsteps, connection, eigw, roottype, rooteps, anyroot)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: neig
double precision, intent(in) :: reig
integer, intent(in) :: nb_bands
integer, intent(in) :: nsteps
integer, intent(in) :: connection(neig,nsteps+1)
double complex, intent(in) :: eigw(neig,nsteps+1)
integer, intent(in) :: roottype
double precision, intent(in) :: rooteps
logical, intent(out) :: anyroot

private subroutine find_roots_lm_eigw(almso, nsteps, connection, eigw, roottype, rooteps, lm1, root_interval)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: almso
integer, intent(in) :: nsteps
integer, intent(in) :: connection(almso,nsteps+1)
double complex, intent(in) :: eigw(almso,nsteps+1)
integer, intent(in) :: roottype
double precision, intent(in) :: rooteps
integer, intent(in) :: lm1
integer, intent(out) :: root_interval

private subroutine find_roots_lm_eigw_memopt(neig, reig, nsteps, connection, eigw, roottype, rooteps, lm1, root_interval)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: neig
double precision, intent(in) :: reig
integer, intent(in) :: nsteps
integer, intent(in) :: connection(neig,nsteps+1)
double complex, intent(in) :: eigw(neig,nsteps+1)
integer, intent(in) :: roottype
double precision, intent(in) :: rooteps
integer, intent(in) :: lm1
integer, intent(out) :: root_interval

public subroutine compare_two_eigv_in_substeps(inc, lattice, cluster, tgmatrx, nsteps, kends, lm_in, LV1all, RV2ref, eigw2ref, match)

Arguments

Type IntentOptional Attributes Name
type(inc_TYPE), intent(in) :: inc
type(lattice_TYPE), intent(in) :: lattice
type(cluster_TYPE), intent(in) :: cluster
type(tgmatrx_TYPE), intent(in) :: tgmatrx
integer, intent(in) :: nsteps
double precision, intent(in) :: kends(3,2)
integer, intent(in) :: lm_in
double complex, intent(in) :: LV1all(inc%almso,inc%almso)
double complex, intent(in) :: RV2ref(inc%almso)
double complex, intent(in) :: eigw2ref
logical, intent(out) :: match

public subroutine compare_two_eigv_in_substeps_memopt(inc, lattice, cluster, tgmatrx, nsteps, kends, lm_in, LV1all, RV2ref, eigw2ref, match)

Arguments

Type IntentOptional Attributes Name
type(inc_TYPE), intent(in) :: inc
type(lattice_TYPE), intent(in) :: lattice
type(cluster_TYPE), intent(in) :: cluster
type(tgmatrx_TYPE), intent(in) :: tgmatrx
integer, intent(in) :: nsteps
double precision, intent(in) :: kends(3,2)
integer, intent(in) :: lm_in
double complex, intent(in) :: LV1all(inc%almso,inc%neig)
double complex, intent(in) :: RV2ref(inc%almso)
double complex, intent(in) :: eigw2ref
logical, intent(out) :: match

public subroutine unroll_ixyz(ixyz, nCub3, ii3)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ixyz
integer, intent(in) :: nCub3(3)
integer, intent(out) :: ii3(3)

public subroutine save_cubesfile(nCub3, nmarked, imarked, lintermediate)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nCub3(3)
integer, intent(in) :: nmarked
integer, intent(in) :: imarked(nmarked)
logical, intent(in), optional :: lintermediate

public subroutine read_cubesfile(nCub3, nmarked, imarked, nCub3_intermediate)

Arguments

Type IntentOptional Attributes Name
integer, intent(out) :: nCub3(3)
integer, intent(out) :: nmarked
integer, intent(out), allocatable :: imarked(:)
integer, intent(in), optional :: nCub3_intermediate(3)

public subroutine mark_cubes_FScross(inc, lattice, cluster, tgmatrx, nCub3, nsteps, nverts, nedges, diag_ids, bounds, roottype, rooteps, nmarked, imarked)

Arguments

Type IntentOptional Attributes Name
type(inc_TYPE), intent(in) :: inc
type(lattice_TYPE), intent(in) :: lattice
type(cluster_TYPE), intent(in) :: cluster
type(tgmatrx_TYPE), intent(in) :: tgmatrx
integer, intent(in) :: nCub3(3)
integer, intent(in) :: nsteps
integer, intent(in) :: nverts
integer, intent(in) :: nedges
integer, intent(in) :: diag_ids(2,nedges)
double precision, intent(in) :: bounds(3,2)
integer, intent(in) :: roottype
double precision, intent(in) :: rooteps
integer, intent(inout) :: nmarked
integer, intent(inout), allocatable :: imarked(:)

public subroutine mark_cubes_FScross_memopt(inc, lattice, cluster, tgmatrx, nCub3, nsteps, nverts, nedges, diag_ids, bounds, roottype, rooteps, nmarked, imarked)

Arguments

Type IntentOptional Attributes Name
type(inc_TYPE), intent(in) :: inc
type(lattice_TYPE), intent(in) :: lattice
type(cluster_TYPE), intent(in) :: cluster
type(tgmatrx_TYPE), intent(in) :: tgmatrx
integer, intent(in) :: nCub3(3)
integer, intent(in) :: nsteps
integer, intent(in) :: nverts
integer, intent(in) :: nedges
integer, intent(in) :: diag_ids(2,nedges)
double precision, intent(in) :: bounds(3,2)
integer, intent(in) :: roottype
double precision, intent(in) :: rooteps
integer, intent(inout) :: nmarked
integer, intent(inout), allocatable :: imarked(:)

public subroutine generate_cubevertices(nCub3, cubeid, bounds, kverts)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nCub3(3)
integer, intent(in) :: cubeid
double precision, intent(in) :: bounds(3,2)
double precision, intent(out) :: kverts(3,8)

public subroutine generate_squarevertices(nCub3, cubeid, bounds, kverts)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nCub3(3)
integer, intent(in) :: cubeid
double precision, intent(in) :: bounds(3,2)
double precision, intent(out) :: kverts(3,4)

public subroutine save_kpointsfile_vis(nkpts, nkpts_irr, kpoints, nsym, isym, kpt2irr, irr2kpt, vis2int, filenamein)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nkpts
integer, intent(in) :: nkpts_irr
double precision, intent(in) :: kpoints(3,nkpts)
integer, intent(in) :: nsym
integer, intent(in) :: isym(nsym)
integer, intent(in) :: kpt2irr(nkpts)
integer, intent(in) :: irr2kpt(nkpts_irr)
integer, intent(in), optional :: vis2int(nkpts)
character(len=*), intent(in), optional :: filenamein

public subroutine save_kpointsfile_int(nkpts, kpoints, areas, nsym, isym, filenamein)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nkpts
double precision, intent(in) :: kpoints(3,nkpts)
double precision, intent(in) :: areas(nkpts)
integer, intent(in) :: nsym
integer, intent(in) :: isym(nsym)
character(len=*), intent(in), optional :: filenamein

public subroutine find_kpoints_irredset(bounds, nkpts, kpoints, nkpts_irr, kpt2irr, irr2kpt)

Arguments

Type IntentOptional Attributes Name
double precision, intent(in) :: bounds(3,2)
integer, intent(in) :: nkpts
double precision, intent(in) :: kpoints(3,nkpts)
integer, intent(out) :: nkpts_irr
integer, intent(out), allocatable :: kpt2irr(:)
integer, intent(out), allocatable :: irr2kpt(:)