# absorption.inp

##########################################
# OPTIONS FOR BOTH ABSORPTION AND INTEQP #
##########################################

# Number of occupied bands on fine (interpolated) k-point grid
number_val_bands_fine 3
# Number of occupied bands on coarse (input) k-point grid
number_val_bands_coarse 3

# Number of unoccupied bands on fine (interpolated) k-point grid
number_cond_bands_fine 3
# Number of unoccupied bands on coarse (input) k-point grid
number_cond_bands_coarse 3

# In metallic systems, PARATEC often outputs incorrect occupation
# levels in wavefunctions.  Use this to override these values.
# lowest_occupied_band should be 1 unless you have some very
# exotic situation. 
#lowest_occupied_band vmin
#highest_occupied_band vmax

# Specify the Fermi level (in eV), if you want implicit doping
# Note that value refers to energies AFTER scissor shift or eqp corrections.
# If the Fermi level is moved, then you must use both or neither
# of eqp_corrections and eqp_co_corrections, or no interpolation.
# NOTE: If you are using inteqp.x to interpolate eqp_co.dat into a eqp.dat
# file that will be later used in absorption.x, shift the Fermi level only
# in absorption.x, but not in inteqp.x.
#fermi_level 0.0

# The Fermi level is treated as an absolute value
# or relative to that found from the mean field (default)
#fermi_level_absolute
#fermi_level_relative

# Scissors operator (linear fit of the quasiparticle
# energy corrections) for the bands in WFN_fi and WFNq_fi.
# e_cor = e_in + es + edel * (e_in - e0)
# Defaults below. evs, ev0, ecs, ec0 are in eV
#evs     0.0
#ev0     0.0
#evdel   0.0
#ecs     0.0
#ec0     0.0
#ecdel   0.0
# or
#cvfit   0.0 0.0 0.0 0.0 0.0 0.0

# These flags define whether to use symmetries to unfold
# the Brillouin zone or not in files WFN_fi (unshifted fine
# grid), WFNq_fi (shifted fine grid), WFN_co (coarse grid).
# Warning, the default is always not to unfold!

# If your unshifted fine grid is reduced (most cases),
# you will want to use symmetries here! 
#no_symmetries_fine_grid
#use_symmetries_fine_grid

# If your shifted fine grid is reduced (most cases),
# you will want to use symmetries here! Note that
# if you use symmetries in the unshifted grid you will 
# need to generate the shifted grid using the same
# procedure as generating the shifted grid for an 
# epsilon calculation. i.e. use gw_shift in paratec
# and a non-zero small q-shift in kgrid.inp
#no_symmetries_shifted_grid
#use_symmetries_shifted_grid

# If you calculated the coarse grid on a reduced q-grid,
# you should use symmetries here!
#no_symmetries_coarse_grid
#use_symmetries_coarse_grid

# Regular grid used to calculate qpt_averages.
# Default is the kgrid in the WFN_fi file.
# It matters only if you want to perform minicell averages.
#regular_grid n1 n2 n3

# How to calculate optical transition probabilities.
# No default for absorption, one must be specified.
# For inteqp, default is momentum.
# For momentum and JDOS, only WFN_fi is used.
# For velocity, the valence bands come from WFNq_fi. 
use_velocity
#use_momentum
# For Haydock there is also a third option to calculate
# Joint density of states. Diagonalization computes this for free.
#use_dos

# Communication through MPI or DISK
# comm_mpi is usually much faster and preferable but if you have only
# a few CPUs you might not have enough memory to hold wavefunctions
# comm_disk results in temporary INT_* files being created and it
# may be faster for a small unit cell and a lot of k-points.
# The default is comm_mpi
# *** Code often crashes in genwf_co with comm_disk when run on ***
# *** a large number of processors because all instances are trying to ***
# *** read coarse grid wavefunctions simultaneously from a single INT file ***
comm_mpi
#comm_disk

# EXPERIMENTAL FEATURES FOR TESTING PURPOSES ONLY (ABSORPTION AND INTEQP)
# 'unfolded BZ' is from the kpoints in the WFN file
# 'full BZ' is generated from the kgrid parameters in the WFN file
# See comments in Common/checkbz.f90 for more details
# Replace unfolded BZ with full BZ
#fullbz_replace
# Write unfolded BZ and full BZ to files
#fullbz_write

# Flag to read k-points from the 'kpoints' file.
# The default is to read k-points from the wfn file.
#read_kpoints

# This is needed only with read_kpoints and if you selected velocity operator above.
# This should match the shift between WFN_fi and WFNq_fi.
q_shift s1 s2 s3

# The requested number of valence or conduction bands cannot break degenerate subspace.
# Use the following keyword to suppress this check.
# Note that you must still provide one more band in
# wavefunction file in order to assess degeneracy.
# For inteqp, only the coarse grid is checked.
#degeneracy_check_override

#####################################
# OPTIONS ONLY FOR ABSORPTION BELOW #
#####################################

# Whether to do a diagonalization (with ScaLAPACK or LAPACK) or
# an iterative solution (via Haydock Recursion).
# diagonalization is default

diagonalization
#haydock

# What screening is present? (default = semiconductor)
screening_semiconductor
#screening_metal
#screening_graphene
#  this is for a system with linear DOS at the Fermi level

# Compute only the lowest neig eigenvalues/eigenvectors.
# The default is to calculate all nv*nc*nk of them.
# Only for diagonalization, not for haydock.
#number_eigenvalues neig

# If using Haydock specify the number of iterations
#number_iterations 500

# Set this to use eigenvalues in eqp.dat and eqp_q.dat
# If not set, these files will be ignored.
#eqp_corrections

# Set this to use eigenvalues in eqp_co.dat
# These quasiparticle corrections will be interpolated to
# the shifted and unshifted fine grids and written to eqp.dat,
# eqp_q.dat, and bandstructure.dat. If not set, this file will be ignored.
#eqp_co_corrections

# RECOMMENDED fast FFTW truncation schemes
# The Coulomb Interaction is cutoff on the edges of
# the Wigner-Seitz Cell in the non-periodic directions
# Periodic directions are a1,a2 for slabs and a3 for wires

#cell_box_truncation
#cell_wire_truncation
#cell_slab_truncation

# Analytic, but non Wigner-Seitz cell, truncation

#spherical_truncation

# For Spherical Truncation
#coulomb_truncation_radius   10.00

# Cutoff energy for averaging the Coulomb Interaction
# in the Mini Brillouin Zones around the Gamma-point 
# without Truncation or for Cell Wire or Cell Slab Truncation. 
# The value is in Rydbergs, the default is 10^{-12}
#cell_average_cutoff 1.0d-12

# This is needed if you selected momentum operator above.
# This vector will be normalized in the code.
#polarization p1 p2 p3

# If we have already calculated the optical matrix elements, 
# do we read them from file to save time?
#read_vmtxel

# Read 'eps2_moments' generated during previous run (Haydock only)
#read_eps2_moments

# Reduce cost of calculation if we've already computed
# the eigensolutions.  This reads the eigenvalues and
# transition matrix elements from the file 'eigenvalues.dat'
#read_eigenvalues

# If we only want the non-interacting spectra (i.e. no electron-
# hole interaction, RPA).  Only WFN_fi and WFNq_fi are needed as inputs.
# With the 'read_eigenvalues' flag, both absorption_eh.dat and 
# absorption_noeh.dat will be created.
#noeh_only

# If already calculated, read the interpolation matrices dvv
# and dcc from file dtmat.
#read_dtmat

# Numerical broadening width and type for generating absorption spectrum.
# Haydock only does Lorentzian. epsilon_1 is always Lorentzian.
# The width is controlled by energy_resolution.
energy_resolution 0.1
# epsilon_2 with diagonalization is Gaussian by default. You can also choose Lorentzian.
#lorentzian_broadening
gaussian_broadening

# The Gaussian and Voigt options are only available for epsilon_2 with diagonalization.
# Voigt becomes Lorentzian at sigma -> 0 and Gaussian at gamma = 0.
# Note that the parametrization of Voigt function diverges at sigma = 0.
#voigt_broadening
#energy_resolution_sigma 0.1
#energy_resolution_gamma 0.01

# This specifies what kind of epsilon we read.
# Default is to read epsmat and eps0mat, but if
# this flag is present we read file epsdiag.dat instead.
# epsdiag.dat contains only the diagonal part of eps(0)mat
# which is all that is needed by absorption. It is always created
# by an absorption run for use in future runs, to save time reading.
#read_epsdiag

# Determines output of eigenvectors (eigenvectors)
# eig = 0 : do not write eigenvectors (default)
# eig < 0 : write all eigenvectors
# eig > 0 : write eig eigenvectors
#write_eigenvectors eig

# Flag the type of kernel to calculate:
# spin_triplet: direct kernel only (no exchange).
#  WARNING: triplet transition matrix elements would be exactly for electric-dipole transitions,
#  so we give instead the spin part of magnetic-dipole interaction.
# spin_singlet (default): direct + exchange. appropriate for spin-polarized too.
# local_fields: local-fields + RPA (exchange only)
# Note that triplet kernel only applies to a spin-unpolarized system;
# for a spin-polarized system, the solutions naturally include both singlets and triplets
# (or other multiplicities for a magnetic system).
#spin_triplet
#spin_singlet
#local_fields

# Write the bare Coulomb potential V(q+G) to file
#write_vcoul

# If your two grids are the same, use this flag to skip interpolation and
# reduce the time/memory you need. DO NOT use this if you have a different
# fine grid from the coarse grid, as for velocity operator.
# Then you should use eqp_corrections with eqp.dat (and eqp_q.dat).
#skip_interpolation

# The new interpolation algorithm is based on the Delaunay tessellation of the
# k-points. This guarantees that the interpolant is a continuous function, and
# that we are always interpolating, and never extrapolating. (default)
#delaunay_interpolation
# You can also use the previous interpolation method, which might give
# interpolants that are not continuous.
#greedy_interpolation

# Read from traditional simple binary format for bsedmat/bsexmat instead of HDF5 file format.
# Relevant only if code is compiled with HDF5 support.
#dont_use_hdf5

# EXPERIMENTAL FEATURES FOR TESTING PURPOSES ONLY (ABSORPTION ONLY)

# Average the head of W in addition to the head of V using a model
# for the inverse dielectric matrix. This is done for insulators for
# all truncation schemes. The W average is limited only to the first
# minibz even if cell_average_cutoff != 0. Currently it is always done
# regardless whether average_w is included in the input file or not.
#average_w

# Multiply kernel by arbitrary factor. Default is 1.0 of course.
kernel_scaling 1.0

