def write_my_displacement_file(self, xdatdict, mydir="", fname="XDATCAR"): """Write a displacement file. Args: xdatdict <dict>: Dictionary of XDATCAR (see read_my_xdatcar) mydir <str>: Directory in which to write. Use ingredient directory if null. fname <str>: filename (default DYNMAT) """ if mydir == "": mydir = self.keywords['name'] xdatwrite=MASTFile() xdatwrite.data=list() xdatwrite.data.append(xdatdict['descline']) if not (xdatdict['scale'] == ""): xdatwrite.data.append(xdatdict['scale']) xdatwrite.data.append(xdatdict['latta']) xdatwrite.data.append(xdatdict['lattb']) xdatwrite.data.append(xdatdict['lattc']) xdatwrite.data.append(xdatdict['specline']) xdatwrite.data.append(xdatdict['numline']) if not (xdatdict['type'] == ""): xdatwrite.data.append(xdatdict['type']) configlist = xdatdict['configs'].keys() configlist.sort() for cfg in configlist: xdatwrite.data.append("Konfig=%1i\n" % cfg) xdatwrite.data.extend(xdatdict['configs'][cfg]) xdatwrite.to_file(os.path.join(mydir, fname))
def write_my_dynamical_matrix_file(self, dyndict, mydir="", fname="DYNMAT"): """Write a dynamical matrix file based on a dictionary. Args: dyndict <dict>: Dictionary of dynmat (see read_my_dynmat) mydir <str>: Directory in which to write; use ingredient directory if null fname <str>: filename (default DYNMAT) """ if mydir == "": mydir = self.keywords['name'] dynwrite=MASTFile() dynwrite.data=list() firstline=str(dyndict['numspec']) + " " + str(dyndict['numatoms']) + " " + str(dyndict['numdisp']) + "\n" dynwrite.data.append(firstline) dynwrite.data.append(dyndict['massline']) atomlist=dyndict['atoms'].keys() atomlist.sort() for atom in atomlist: displist = dyndict['atoms'][atom].keys() displist.sort() for disp in displist: thirdline = str(atom) + " " + str(disp) + " " + dyndict['atoms'][atom][disp]['displine'] + "\n" dynwrite.data.append(thirdline) for line in dyndict['atoms'][atom][disp]['dynmat']: dynwrite.data.append(line) dynwrite.to_file(os.path.join(mydir, fname))
def write_my_dynmat_without_disp_or_mass(self, dyndict, mydir="", fname="DYNMAT"): """Write a dynamical matrix file without the displacement indicators 1, 2, 3 and without the masses line, and with first line having only the total number of displacements, for PHON. Args: dyndict <dict>: Dictionary of dynmat (see read_my_dynmat) mydir <str>: Directory in which to write; use ingredient directory if null fname <str>: filename (default DYNMAT) """ if mydir == "": mydir = self.keywords['name'] dynwrite=MASTFile() dynwrite.data=list() firstline=str(dyndict['numdisp']) + "\n" dynwrite.data.append(firstline) atomlist=dyndict['atoms'].keys() atomlist.sort() for atom in atomlist: displist = dyndict['atoms'][atom].keys() displist.sort() for disp in displist: thirdline = str(atom) + " " + dyndict['atoms'][atom][disp]['displine'] + "\n" dynwrite.data.append(thirdline) for line in dyndict['atoms'][atom][disp]['dynmat']: dynwrite.data.append(line) dynwrite.to_file(os.path.join(mydir, fname))
def create_input_files(self, datasets_dict): """Create independently looped input files. Args: datasets_dict <dict of list> Returns: createdfiles <list of str>: list of newly-created file names Creates an input file for each entry. """ ifname = self.keywords['inputfile'] dirstem = os.path.dirname(ifname) basename = os.path.basename(ifname).split('.')[0] createdfiles = list() if dirstem == "": dirstem = os.getcwd() dkeys = datasets_dict.keys() dkeys.sort() dct = 1 for didx in dkeys: newfile = MASTFile() newfile.data = list(datasets_dict[didx]) newname = "%s/loop_%s_%s.inp" % (dirstem, basename, str(dct).zfill(2)) newfile.to_file(newname) #createdfiles.append(os.path.basename(newname)) createdfiles.append(newname) dct = dct + 1 return createdfiles
def create_input_files(self, datasets_dict): """Create independently looped input files. Args: datasets_dict <dict of list> Returns: createdfiles <list of str>: list of newly-created file names Creates an input file for each entry. """ ifname = self.keywords['inputfile'] dirstem = os.path.dirname(ifname) basename = os.path.basename(ifname).split('.')[0] createdfiles=list() if dirstem == "": dirstem = os.getcwd() dkeys = datasets_dict.keys() dkeys.sort() dct=1 for didx in dkeys: newfile = MASTFile() newfile.data = list(datasets_dict[didx]) newname="%s/loop_%s_%s.inp" % (dirstem, basename, str(dct).zfill(2)) newfile.to_file(newname) #createdfiles.append(os.path.basename(newname)) createdfiles.append(newname) dct=dct+1 return createdfiles
def clear_submission_list(): """Clear all entries from the submission list at $MAST_CONTROL/submitlist """ submitlist=os.path.join(mast_control, "submitlist") if not os.path.isfile(submitlist): print "No submission list at %s" % submitlist return submitfile=MASTFile(submitlist) submitfile.data=list() submitfile.data.append("\n") submitfile.to_file(submitlist)
def clear_submission_list(): """Clear all entries from the submission list at $MAST_CONTROL/submitlist """ submitlist = os.path.join(mast_control, "submitlist") if not os.path.isfile(submitlist): print "No submission list at %s" % submitlist return submitfile = MASTFile(submitlist) submitfile.data = list() submitfile.data.append("\n") submitfile.to_file(submitlist)
def write_script(self, dirname="", fname=""): """Write the python input script, created from the *.inp input file. Args: dirname <str>: directory in which to write fname <str>: filename to write Returns: filename <str>: Full file name of the input script created. """ mylines = self.print_input_options() if dirname == "": dirname = os.getcwd() if fname == "": fname = 'input.py' filename = os.path.join(dirname, fname) inputpy = MASTFile() inputpy.data = mylines inputpy.to_file(filename) return filename
def write_submit_script(keywords): """This script example is built on the following ingredient keywords, and may require significant customization. mast_processors mast_ppn mast_queue mast_nodes mast_exec mast_walltime mast_memory """ import os #set defaults name = os.path.basename(keywords['name']) try: mast_processors = str(keywords['program_keys']['mast_processors']) except KeyError: mast_processors = "8" try: mast_ppn = str(keywords['program_keys']['mast_ppn']) except KeyError: mast_ppn = "8" try: mast_queue = str(keywords['program_keys']['mast_queue']) except KeyError: mast_queue = 'default' try: mast_nodes = str(keywords['program_keys']['mast_nodes']) except KeyError: mast_nodes = "1" try: mast_exec = str(keywords['program_keys']['mast_exec']) except KeyError: mast_exec = "mpiexec vasp" try: mast_walltime = str( keywords['program_keys']['mast_walltime']) + ":00:00" except KeyError: mast_walltime = "24:00:00" try: mast_memory = str(keywords['program_keys']['mast_memory']) except KeyError: mast_memory = "1000" #create submission script newkey = dict() newkey['mast_memory'] = mast_memory newkey['mast_exec'] = mast_exec newkey['mast_walltime'] = mast_walltime newkey['mast_queue'] = mast_queue newkey['mast_ppn'] = mast_ppn newkey['mast_nodes'] = mast_nodes newkey['mast_processors'] = mast_processors newkey['mast_name'] = name my_template = MASTFile("%s/submit/platforms/%s/submit_template.sh" % (mast_install, mast_platform)) newdata = list() for myline in my_template.data: for mykey in newkey.keys(): querykey = "?" + mykey + "?" if querykey in myline: myline = myline.replace(querykey, newkey[mykey]) newdata.append(myline) filled_template = MASTFile() filled_template.data = list(newdata) filled_template.to_file("%s/submit.sh" % keywords['name']) #use full path here return
def write_submit_script(keywords): """This script example is built on the following ingredient keywords, and may require significant customization. mast_processors mast_ppn mast_queue mast_nodes mast_exec mast_walltime mast_memory """ import os #set defaults name = os.path.basename(keywords['name']) try: mast_processors = str(keywords['program_keys']['mast_processors']) except KeyError: mast_processors = "8" try: mast_ppn = str(keywords['program_keys']['mast_ppn']) except KeyError: mast_ppn = "8" try: mast_queue = str(keywords['program_keys']['mast_queue']) except KeyError: mast_queue = 'default' try: mast_nodes = str(keywords['program_keys']['mast_nodes']) except KeyError: mast_nodes = "1" try: mast_exec = str(keywords['program_keys']['mast_exec']) except KeyError: mast_exec = "mpiexec vasp" try: mast_walltime = str(keywords['program_keys']['mast_walltime']) + ":00:00" except KeyError: mast_walltime = "24:00:00" try: mast_memory = str(keywords['program_keys']['mast_memory']) except KeyError: mast_memory = "1000" #create submission script newkey = dict() newkey['mast_memory'] = mast_memory newkey['mast_exec'] = mast_exec newkey['mast_walltime'] = mast_walltime newkey['mast_queue'] = mast_queue newkey['mast_ppn'] = mast_ppn newkey['mast_nodes'] = mast_nodes newkey['mast_processors'] = mast_processors newkey['mast_name'] = name my_template = MASTFile("%s/submit/platforms/%s/submit_template.sh" % (mast_install, mast_platform)) newdata = list() for myline in my_template.data: for mykey in newkey.keys(): querykey = "?" + mykey + "?" if querykey in myline: myline = myline.replace(querykey, newkey[mykey]) newdata.append(myline) filled_template = MASTFile() filled_template.data = list(newdata) filled_template.to_file("%s/submit.sh" % keywords['name']) #use full path here return