This file is indexed.

/usr/share/xcrysden/Tcl/fs/genFSInit.tcl is in xcrysden-data 1.5.60-1build3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#############################################################################
# Author:                                                                   #
# ------                                                                    #
#  Anton Kokalj                                  Email: Tone.Kokalj@ijs.si  #
#  Department of Physical and Organic Chemistry  Phone: x 386 1 477 3523    #
#  Jozef Stefan Institute                          Fax: x 386 1 477 3811    #
#  Jamova 39, SI-1000 Ljubljana                                             #
#  SLOVENIA                                                                 #
#                                                                           #
# Source: $XCRYSDEN_TOPDIR/Tcl/genFSInit.tcl
# ------                                                                    #
# Copyright (c) 1996-2003 by Anton Kokalj                                   #
#############################################################################

proc genFSInit {file} {

    #
    # logo window
    #
    if { [winfo exists .title] } { 
	destroy .title 
    }
    XCRYSDEN_Logo $file

    #
    # read the BXSF file
    #
    set spin [FS_readBXSF $file]

    #
    # select bands for Fermi surface plotting ...
    #
    FS_bandSelect $spin

    #
    # render Fermi surface ...
    #
    FS_GoFermi $spin
}

proc FS_readBXSF {file} {
    global wn fs xcMisc system

    set file [gunzipXSF $file]

    #
    # lets read (band)XSF file; xc_readband return info structure which look
    # like:
    #
    # 1 { grid_index 3D grid_ident grid_nband 1 {subgrid0_ident}}
    set spin {}
    
    #
    # we must construct normal XSF file out of BXSF file and
    # run fsReadBXSF program to construct lattice vectors and Brillouin zone
    #
    if { [catch {exec $system(BINDIR)/fsReadBXSF $file \
		     $system(SCRDIR)/bxsf2xsf.xsf}] } {
	tk_dialog [WidgetName] ERROR "ERROR: an error occured while executing fsReadBXSF program" error 0 OK
	exit
    }
    xc_readXSF $system(SCRDIR)/bxsf2xsf.xsf

    #
    # now read the BXSF file
    #
    set fs(titlefile) $file
    set sinfo [xc_readbandXSF $file]

    if { $sinfo == "" } {
	ErrorDialog "error reading the BXSF file: $file"
	return -code return
    }

    # parse $sinfo
    set slist [lindex $sinfo 1]
    set fs($spin,nbands)        [lindex $slist 3]
    set fs($spin,grid_index)    [lindex $slist 0]
    set fs($spin,grid_subindex) [expr [lindex $slist 4] - 1]
 
    if { ! [info exists fs(Efermi)] } {
	# read the Fermi level from BXSF file if it exists,
	# otherwise set it to zero
	set fs(Efermi) [_FSGetFermiEnergy $file]
    }
    
    #
    # 1. set MIN & MAX values of the band-grids
    # 2. write a band-widths file
    #
    set fs($spin,bandwidthfile) [file join $system(SCRDIR) band_widths.dat]
    set  bwID  [open $fs($spin,bandwidthfile) w]
    puts $bwID $fs($spin,nbands)

    for {set i 1} {$i <= $fs($spin,nbands)} {incr i} {

	
	
	set fs($spin,$i,band_selected) 1
	set fs($spin,$i,minE)     [xc_gridvalue min $fs($spin,grid_index) [expr $i - 1]]
	set fs($spin,$i,maxE)     [xc_gridvalue max $fs($spin,grid_index) [expr $i - 1]]
	set fs($spin,$i,isolevel) $fs(Efermi)    
	
	putsFlush stderr "Reading band: $i    Min-value: $fs($spin,$i,minE)   Max-value: $fs($spin,$i,maxE)"
	puts $bwID [format "%3d    %13.6e %13.6e"  $i $fs($spin,$i,minE) $fs($spin,$i,maxE)]
    }
    close $bwID

    return $spin
}

proc _FSGetFermiEnergy {file} {

    putsFlush stderr "Querying for fermi energy ..."

    set fID [open $file r]
    while { 1 } {
	set line [gets $fID]
	#putsFlush stderr "Line: $line"

	if { [string match -nocase *FERMI*ENERGY* $line] } {
	    set fermi [lindex $line end]
	    break
	}
	if { [eof $fID] } {
	    set fermi     0.0
	    break
	}
    }
    close $fID

    putsFlush stderr "   FERMI ENERGY set to $fermi"
    if { ! [string is double $fermi] } {
	set fermi 0.0
    }
    return $fermi
}