input_description -distribution {Quantum Espresso} -package turboTDDFPT -program turbo_lanczos.x {

    toc {}

    intro {
    	  Input data format: { } = optional, [ ] = it depends.

	  All quantities whose dimensions are not explicitly specified are in
	  RYDBERG ATOMIC UNITS

	  BEWARE: TABS, DOS <CR><LF> CHARACTERS ARE POTENTIAL SOURCES OF TROUBLE

          Comment lines in namelists can be introduced by a "!", exactly as in 
          fortran code. Comments lines in ``cards'' can be introduced by 
          either a "!" or a "#" character in the first position of a line.

	  Structure of the input data:
	  ===============================================================================

	  &lr_input
	    ...
	  /

	  &lr_control
	    ...
	  /	    

	  [ &lr_post
	    ...
	   / ]

    }

    namelist lr_input {

	label { This namelist is always needed ! }

	var prefix -type CHARACTER { 
	    default { 'pwscf' }
	    info {
		Sets the prefix for generated and read files. The files 
		generated by the ground state pw.x run should have this 
		same prefix.
	    }
	}

	var outdir -type CHARACTER { 
	    default { './' }
	    info {
		The directory that contains the run critical files, which 
		include the files generated by ground state pw.x run.
	    }
	}

	var wfcdir -type CHARACTER { 
	    default { './' }
	    info {
		The directory that contains the run critical files, which 
		include the files generated by ground state pw.x run.
	    }
	}
	
	var restart -type LOGICAL {
	    default {.false.}
	    info {
		When set to .true., turbo_lanczos.x will attempt to restart 
		from a previous interrupted calculation. (see @ref restart_step 
		variable).

		Beware, if set to .false. turbo_lanczos.x will OVERWRITE any
		previous runs.
	    }
	}

	var restart_step -type INTEGER {
	    default {itermax}
	    info {
		The code writes restart files every restart_step iterations.
		Restart files are automatically written at the end of 
		itermax Lanczos steps.
	    }
	}

	var lr_verbosity -type INTEGER {
	    default {1}
	    info {
		This integer variable controls the amount of information 
		written to standard output.
	    }
	}

	var disk_io -type CHARACTER {
	    default { 'default' }
	    info {
    		Fine control of disk usage. Currently only 'reduced' is 
		supported where no restart files are written, apart from 
		the 'default' mode.
	    }
	}
    }
    namelist lr_control {
	var itermax -type INTEGER {
	    default {500}
	    info {
		Number of Lanczos iterations to be performed.
		}
	}
	
	var ipol -type INTEGER {
	    default {1}
	    info {
		An integer variable that determines which element of the 
		dynamical polarizability will be computed: 
		1 -> alpha_xx(omega), 2 -> alpha_yy(omega), and 
		3 -> alpha_zz(omega). When set to 4, three Lanczos chains 
		are sequentially performed and the full polarizability 
		tensor and the absorption coefficient are computed.
		}
	}

	var n_ipol -type INTEGER {
	    default {
	    	    1 if ipol < 4;
		    3 if ipol=4
		    }
	    info {
	    	Determines the number of zeta coefficients to be calculated
		for a given polarization direction.
		}
	}		
	
	var ltammd -type LOGICAL {
	    default {.false.}
	    info {
		When set to .true. the Tamm-Dancoff approximation is used 
		in constructing the Liouvillian.
		}
	}

	var no_hxc -type LOGICAL {
	    default {.false.}
	    info {
		When set to .true. the change in the internal field 
		(Hartree and exchange-correlation) is ignored in the 
		calculation, resulting in the independent electron 
		approximation.
		}
	}

        var lrpa -type LOGICAL {
            default {.false.}
            info {
                When set to .true. the Random Phase Approximation
                is used (no exchange and correlation).
                }
        }

        var scissor -type REAL {
            default {0.0}
            info {
                Scissor shift (in Rydberg units).
                }
        }
 
	var charge_response -type INTEGER {
	    default {0}
	    info {
		When set to 1, the code computes the response of the charge 
		density and writes it into a file format determined by the 
		variable plot type. Setting charge response to 1 makes the 
		presence of the card lr post mandatory.
		}
	}
        var pseudo_hermitian -type LOGICAL {
            default {.true.}
            info {
                When set to .true. the pseudo-Hermitian Lanczos 
                algorithm is used. When set to .false. the
                non-Hermitian Lanczos biorthogonalization algorithm
                is used (which is two times slower).
                }
        }
        var d0psi_rs -type LOGICAL {
            default {.false.}
            info {
                When set to .true. the dipole is computed in the
                real space. When set to .false. the dipole is
                computed in the reciprocal space by computing [H,r].
                Note, currently the commutator does not contain
                a contribution for hybrids [V_EXX,r]. See also
                the variable lshift_d0psi.
                Important: Treatment of the dipole in the real space
                is allowed only if the system is finite.  
                }
        }
        var lshift_d0psi -type LOGICAL {
            default {.true.}
            info {
                This variable is used only when @ref d0psi_rs = .true.
                a) If a molecule is placed in the corner of the 
                supercell, there is a discontinuity problem for the
                position operator r, which is not periodic. By setting
                lshift_d0psi=.true. the discontinuity problem is
                solved by shifting the position operator r such that
                it is continuous and well defined.
                b) If a molecule is placed in the center of the supercell,
                there is no discontinuity problem for the position operator r,
                and thus you can set lshift_d0psi=.false. But if you still
                set it to .true., this will not harm, because the position
                operator will basically remain as it is, since it is always
                centered wrt the center of the molecule.   
                }
        }
    

    }			
    namelist lr_post {
    	var omeg -type REAL {
	    default {0.0}
	    info {
	    	The response of the charge density is calculated for this 
		transition energy (in Rydberg units)
		}
	}

	var epsil -type REAL {
	    default {0.02}
	    info {
	    	The broadening/damping term (in Rydberg units).
		}
	}

	var beta_gamma_z_prefix -type CHARACTER {
	    default {'pwscf'}
	    info {
		The prefix of the file where the beta gamma zeta coefficients 
		from the first calculation can be set manually using this 
		parameter. The file outdir/beta gamma z prefix.beta gamma z.x 
		(where x=1-3) must exist.
		}
	}

	var w_T_npol -type INTEGER {
	    default {1}
	    info {
		Number of polarization directions considered in the previous
		calculation. It must be set to 3 if in the previous calculation
		 ipol=4, it must be set to 1 otherwise.
		 }
	}

	var plot_type -type INTEGER {
	    default {1}
	    info {
	    	An integer variable that determines the format of the file 
		containing the charge density response. 1: A file containing
		the x y z grid coordinates and the corre- sponding value of
		the density is produced 2: The density response is written 
		in Xcrysden format 3: The density response is written in 
		the gaussian cube format.
		}
	}
}
}				
