Source code for lambda_in

#!/usr/bin/env python
#"""Writen by Niraj K. Nepal, Ph.D."""
"""Module to write lambda.in files for calculating superconducting properties"""
import os
import sys
import glob

[docs] def lambda_in(compound,maxfreq,qgauss,smearing,mustar): """ Create lambda.in file for lambda.x. Parameters: - compound (str): Name of the compound. - maxfreq (str): Maximum phonon frequency + 5 THz. - qgauss (str): Smearing for q-mesh integration. - smearing (str): Smearing type. - mustar (str): Coulomb potential. Returns: None Example: >>> lambda_in('SiO2', '30', '0.01', 'gauss', '0.13') Suppose elph.out file available. If calculation is performed in multiple times, elph.out (latest), elph.out1 (first), elph.out2 (second),.... files available """ # Get a list of elph.out files and sort them to ensure consistent order elph_files = sorted(glob.glob("elph.out*")) first_elph = elph_files.pop(0) elph_files.append(first_elph) # Create elph_list.txt containing the number of q points for each elph.out file if os.path.isfile("touch_list.txt"): os.system("rm touch_list.txt") os.system("touch elph_list.txt") for i,_ in enumerate(elph_files): os.system("grep 'Number of q in the star' {}".format(elph_files[i]) + ">> elph_list.txt") # Read compound dynamical matrix and elph list with open("{}.dyn0".format(compound), "r") as read_dyn: dyn0 = read_dyn.readlines() with open("elph_list.txt", "r") as read_elph_list: elph_list = read_elph_list.readlines() elph_list = elph_list[::2] dyn0 = dyn0[2:] # Write lambda.in file with open("lambda.in", "w") as write_lambda: write_lambda.write(str(maxfreq) + " " + str(qgauss) + " " + smearing + "\n") nqsym = len(elph_list) write_lambda.write(str(nqsym) + "\n") for i in range(nqsym): qvec = dyn0[i].split("\n")[0] qweight = int(elph_list[i].split("\n")[0].split("=")[-1].split(" ")[-1]) write_lambda.write(qvec + " " + str(qweight) + "\n") for i in range(nqsym): write_lambda.write("elph_dir/elph.inp_lambda.{}".format(i+1) + "\n") write_lambda.write(str(mustar)+"\n")
[docs] def main(): """ Execute the main functionality. This function is the main entry point for executing the functionality to create the lambda.in file for lambda.x based on the provided command-line arguments. Parameters: None Returns: None """ compound = sys.argv[1] maxfreq = sys.argv[2] qgauss = sys.argv[3] smearing = sys.argv[4] mustar = sys.argv[5] lambda_in(compound,maxfreq,qgauss,smearing,mustar) os.system("rm elph_list.txt")
if __name__ == "__main__": main()