input_description -distribution {Quantum Espresso} -package PWscf -program pwcond.x {  

    toc {}

    intro {
	This program computes the transmittance of a system and/or its
	complex band structure. 
	It is controlled through the following variables 
	in the namelist inputcond.

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

	   &INPUTCOND
	     ...
	   /
    }

    namelist INPUTCOND {

	var outdir  -type CHARACTER {
	    info {
		temporary directory (as in PWscf)
	    }
	}

	var prefixt  -type CHARACTER {
	    info {
		prefix for the file (as in PWscf) containing all the
		regions (left lead + scatt. reg. + right lead)
	    }
	}

	var prefixl  -type CHARACTER {
	    info {
		prefix for the file containing only the	left lead
	    }
	}

	var prefixs  -type CHARACTER {
	    info {
		prefix for the file containing the scattering region
	    }
	}

	var prefixr  -type CHARACTER {
	    info {
		prefix for the file containing only the right lead
	    }
	}

	var tran_prefix  -type CHARACTER {
	    default { none }
            see { recover }
	    info {
		if tran_prefix is specified the program will save partial results
		of a transmission calculation (ikind .GE. 1) in a specific 
		directory (outdir/tran_prefix.cond_save)
	    }
	}

	var max_seconds -type REAL { 
	    default { 1.D+7, or 150 days, i.e. no time limit }
            see { tran_prefix }
	    info {
		jobs stops after max_seconds elapsed time (wallclock time). 
		It can be enabled only if tran_prefix is specified.
	    }	    
	}

	var recover   -type LOGICAL {
	    default { .FALSE. }
	    see { tran_prefix }
	    info {
		restarts a previously interrupted transmission calculation (only if 
		tran_prefix was specified). It can also be used to gather partial 
		results from a calculation that was split by using start_e,last_e 
		and/or start_k,last_k (see corresponding keywords).
	    }
	}

	var band_file  -type CHARACTER  {
	    info {
		file on which the complex bands are saved
	    }
	}

	var tran_file  -type CHARACTER  {
	    info {
		file where the transmission is written
	    }
	}

	var save_file  -type CHARACTER  {
	    info {
		file where the data necessary for PWCOND are written
		so that no prefix files of PW are longer needed
	    }
	}
	var fil_loc  -type  CHARACTER {
	    info {
		file on/from which the 2D eigenvalue problem data are
		saved/read
	    }
	}

	var lwrite_cond  -type LOGICAL {
	    info {
		if .t. save the data necessary for PWCOND in save_file
	    }
	}

        var loop_ek  -type LOGICAL {
            info {
                if .t. the energy loop is outside the k-point loop 
            }
        }

	var lread_cond  -type LOGICAL {
	    info {
		if .t. read the data necessary for PWCOND from save_file
	    }
	}

	var lwrite_loc  -type LOGICAL {
	    info {
		if .t. save 2D eigenvalue problem result in fil_loc
	    }
	}

	var lread_loc  -type LOGICAL {
	    info {
		if .t. read 2D eigenvalue problem result from fil_loc
	    }
	}

	var ikind  -type INTEGER {
	    info {
   	       The kind of conductance calculation:
   
                  ikind=0  - just complex band structure (CBS) calculation
   
                  ikind=1  - conductance calculation with identical 
                             left and right leads
   
                  ikind=2  - conductance calculation with different
		             left and right leads       
	    }
	}

	var iofspin  -type INTEGER {
	    info {
		spin index for which the calculations are performed
	    }
	}

        var tk_plot  -type INTEGER {
            info {
               if > 0, plot T(kx,ky) at each energy in the region [tk_plot x full BZ] 
            }
        }

	var llocal  -type  LOGICAL {
	    info {
		if .t. calculations are done with only local part of PP 
	    }
	}

	var bdl  -type REAL {
	    info {
		right boundary of the left lead (left one is supposed to be at 0) 
                (in units of lattice parameter "alat" defined in the scf run)
	    }
	}

	var bds  -type REAL {
	    info {
		right boundary of the scatt. reg. (left one is at 0 if prefixs
                is used and = bdl if prefixt is used) 
                (in units of lattice parameter "alat" defined in the scf run)
	    }
	}

	var bdr  -type REAL {
	    info {
		right boundary of the right lead (left one is at 0 if prefixr
		is used and = bds if prefixt is used) 
                (in units of lattice parameter "alat" defined in the scf run)
	    }
	}

	var nz1  -type INTEGER {
	    info {
		the number of subslabs in the slab (to calculate integrals)
	    }
	}

	var energy0  -type REAL {
	    info {
		initial energy 
	    }
	}

	var denergy  -type REAL {
	    info {
		energy step (if denergy=0.0 the energy is read from the list)
	    }
	}

	var nenergy  -type INTEGER {
	    info {
		number of energies 

		WARNING: the energy in input file is given in eV taken from Ef,
		         and denergy should be negative
	    }
	}

	var start_e  -type INTEGER {
	    default { 1 }            
	    see { last_e }            
	    info {
		if start_e > 1, the scattering problem is solved only for those 
                energies with index between start_e and last_e in the energy list.

		NOTE: start_e <= last_e and start_e <= nenergy must be satisfied
	    }
	}

	var last_e  -type INTEGER {
	    default { nenergy }            
	    see { start_e }            
	    info {
		index of the last energy to be computed. If last_e > nenergy, 
		then last_e will be automatically set to nenergy.
	    }
	}

	var start_k  -type INTEGER {
	    default { 1 }            
	    see { last_k }            
	    info {
		if start_k > 1, the scattering problem is solved only for those 
                k-points with index between start_k and last_k in the k-point list.
		In order to recover the full transmission (i.e. integrated over the 
		full Brillouin Zone) at the end, perform the partial runs specifying
		a value for tran_prefix (the restart directory), then put all the 
		partial transmission files 'transmission_k#_e#' inside a unique 
		restart directory and run pwcond.x with recover=.TRUE. (without 
		specifying any value for start_k and last_k).

		NOTE: start_k <= last_k must be satisfied and start_k must also
		   not be greater than the actual number of k-point in the list
		   (if you compute the grid automatically by specifying the grid 
		   size and shifts, you can use kpoints.x to check that number).
	    }
	}

	var last_k  -type INTEGER {
	    default { nenergy } 
	    see { start_k }            
	    info {
		index of the last k-point to be computed. If last_k is bigger than the
		actual number of points in the list, then it will be set to that number. 
	    }
	}

	var ecut2d -type  REAL {
	    info {
		2-D cutoff
	    }
	}
	var ewind  -type REAL { 
	    info {      
		the energy window for reduction of 2D plane wave basis set (in XY)
	    }
	}

	var epsproj  -type REAL {
	    info {
		accuracy of 2D basis set reduction
	    }
	}

	var orbj_in  -type REAL {
	    info {
		the initial orbital for projecting the transmission 
	    }
	}

	var orbj_fin  -type REAL {
	    info {
		the final orbital for projecting the transmission 
	    }
	}
    }

    card K_and_Energy_Points -nameless 1 {
	syntax {
	    line {
		var nkpts -type INTEGER {
		    info {
			Number of k_\perp points
		    }
		}
	    }
	    table k_points {
		rows -start 1 -end nkpts {
		    colgroup -type REAL {
			col kx
			col ky
			col weight
			info {
			    k-point coordinates and weights
			}
		    }
		}
	    }
	    line {
		var nenergy -type INTEGER {
		    info {
			number of energy points
		    }
		}
	    }
	}
    }
}




