mod_fermisurf_3D Module


Variables

Type Visibility Attributes Name Initial
integer, private, save :: tetcorners(4,6) = -1
integer, private, save :: tetdiags(2,4) = -1
integer, private, save :: cubedges(2,19) = -1
integer, private, save :: tetedges(6,6) = -1
integer, private, parameter :: nkpmax = 512

Functions

private function get_tedges(tcorners) result(tedges)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: tcorners(4)

Return Value integer, (6)

private function get_edgeindex(icorner1, icorner2)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: icorner1
integer, intent(in) :: icorner2

Return Value integer

private function area_triangle(kpoints)

Arguments

Type IntentOptional Attributes Name
double precision, intent(in) :: kpoints(3,3)

Return Value doubleprecision


Subroutines

public subroutine find_fermisurface_3D(inc, lattice, cluster, tgmatrx, symmetries, nCub3, nFSiter, nROOTiter, nstepsconnect, nCut_iter, roottype, rooteps, lrefine, nrefinenew, nkpts_int, kpoints_int, areas_int)

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
type(symmetries_TYPE), intent(in) :: symmetries
integer, intent(inout) :: nCub3(3)
integer, intent(in) :: nFSiter
integer, intent(in) :: nROOTiter
integer, intent(in) :: nstepsconnect(:)
integer, intent(in) :: nCut_iter(:)
integer, intent(in) :: roottype(:)
double precision, intent(in) :: rooteps(:)
integer, intent(in) :: lrefine
integer, intent(in) :: nrefinenew
integer, intent(out) :: nkpts_int
double precision, intent(out), allocatable :: kpoints_int(:,:)
double precision, intent(out), allocatable :: areas_int(:)

private subroutine find_intesection_triangles(inc, lattice, cluster, tgmatrx, symmetries, nCub3, bounds, nmarked, imarked, nsteps, niter, roottype, rooteps, nfaces, nvec, dscal, npoints_vis_tot, npoints_int_tot, kpoints_vis_all, kpoints_int_all, areas_int_all, vis2int_all)

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
type(symmetries_TYPE), intent(in) :: symmetries
integer, intent(in) :: nCub3(3)
double precision, intent(in) :: bounds(3,2)
integer, intent(in) :: nmarked
integer, intent(in) :: imarked(nmarked)
integer, intent(in) :: nsteps
integer, intent(in) :: niter
integer, intent(in) :: roottype
double precision, intent(in) :: rooteps
integer, intent(in) :: nfaces
double precision, intent(in) :: nvec(3,nfaces)
double precision, intent(in) :: dscal(nfaces)
integer, intent(out) :: npoints_vis_tot
integer, intent(out) :: npoints_int_tot
double precision, intent(out), allocatable :: kpoints_vis_all(:,:)
double precision, intent(out), allocatable :: kpoints_int_all(:,:)
double precision, intent(out), allocatable :: areas_int_all(:)
integer, intent(out), allocatable :: vis2int_all(:)

private subroutine cut_and_update_cubes(ncut, nCub3, nmarked, imarked)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ncut
integer, intent(inout) :: nCub3(3)
integer, intent(inout) :: nmarked
integer, intent(inout), allocatable :: imarked(:)

private subroutine mark_cubes_FScrossold(inc, lattice, cluster, tgmatrx, nCub3, nsteps, 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
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(:)

private subroutine mark_cubes_in_IBZ(nCub3, nfaces, nvec, dscal, bounds, nmarked, imarked)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nCub3(3)
integer, intent(in) :: nfaces
double precision, intent(in) :: nvec(3,nfaces)
double precision, intent(in) :: dscal(nfaces)
double precision, intent(in) :: bounds(3,2)
integer, intent(inout) :: nmarked
integer, intent(inout), allocatable :: imarked(:)

private subroutine cubes2VTK(filename, nCub3, nmarked, imarked, bounds)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: filename
integer, intent(in) :: nCub3(3)
integer, intent(in) :: nmarked
integer, intent(in) :: imarked(nmarked)
double precision, intent(in) :: bounds(3,2)

private subroutine init_cube2tetralines()

Arguments

None

private subroutine read_cubesrefine(nCub3, nmarked, imarked)

Arguments

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

private subroutine split_triangle(ktriangle, eigw_triangle, kstore, eigw_store, kcounter, nfaces, nvec, dscal)

Arguments

Type IntentOptional Attributes Name
double precision, intent(in) :: ktriangle(3,3)
double complex, intent(in) :: eigw_triangle(3)
double precision, intent(inout) :: kstore(3,nkpmax)
double complex, intent(inout) :: eigw_store(nkpmax)
integer, intent(inout) :: kcounter
integer, intent(in) :: nfaces
double precision, intent(in) :: nvec(3,nfaces)
double precision, intent(in) :: dscal(nfaces)