def run_bulk(self, t, special_input=None): # run name runname="%s, ni=%f, T=%f" % (self.material, self.ni, t) self.write_log("##############################################\n") self.write_log("### euorun: %s\n" % runname) self.write_log("##############################################\n") # run command runcmd=self.mpicmd + " -np %i " % self.np runcmd+=self.sp.get_runcmd_bulk(self.material, self.ni, t) # add additional parameter runcmd+=self.iteration_parameter # add output runoutput=self.output + self.idb.get_temp_output(t) runcmd+=" -o %s/" % runoutput runexists=self.run_exists(runcmd, runoutput, check_database=self.check_database) if not runexists: # add special input folder if special_input!=None: runcmd+=" -i %s" % (special_input) # search self.input folder for suitable input folders and add it else: if self.inputFlag: runcmd=database.add_input(runcmd, download_path=self.output+"/download/", path=self.input, source=self.source, input_system_name=self.input_system_name) # run job j=job.job(runname, self.log, self.email, [runcmd], logappend=True, verbose=self.verbose, mailcmd=self.mailcmd) j.run() # update database if self.updatedbFlag and not runexists: self.write_log("* Update bulk database\n") updatecmd="bulk_remote.py %s" % runoutput #subprocess.call(updatecmd, shell=True) j=job.job("update remote bulk database", self.log, self.email, [updatecmd], logappend=True, verbose=False, mailcmd=self.mailcmd) j.run() self.write_log("\n")
def run_isolated(self, t, special_input=None): # run name runname = "%s, N=%i, ni=%f, T=%f" % (self.material, self.N, self.ni, t) self.write_log("##############################################\n") self.write_log("### euorun: %s\n" % runname) self.write_log("##############################################\n") # run command runcmd = self.mpicmd + " -np %i " % self.np runcmd += self.sp.get_runcmd_isolated(self.material, self.N, self.ni, t) # add additional parameter runcmd += self.iteration_parameter # add output runoutput = self.output + self.idb.get_temp_output(t) runcmd += " -o %s/" % runoutput # check if run exists before downloading possible input runexists = self.run_exists(runcmd, runoutput, check_database=self.check_database) # run job if not runexists: # add special input folder if special_input != None: runcmd += " -i %s" % (special_input) # search self.input folder for suitable input folders and add it else: if self.inputFlag: runcmd = database.add_input( runcmd, download_path=self.output + "/download/", path=self.input, source=self.source, input_system_name=self.input_system_name) j = job.job(runname, self.log, self.email, [runcmd], logappend=True, verbose=self.verbose, mailcmd=self.mailcmd) j.run() # update database if self.updatedbFlag and not runexists: self.write_log("* Update isolated database\n") updatecmd = "isolated_remote.py %s" % runoutput #subprocess.call(updatecmd, shell=True) j = job.job("update remote isolated database", self.log, self.email, [updatecmd], logappend=True, verbose=False, mailcmd=self.mailcmd) j.run() self.write_log("\n")
def run_hetero(self, t, special_input=None): # run name runname = "%s, N=%i, M=%i, ni=%f, ncr=%f, dW=%f, T=%f" % ( self.material, self.N, self.M, self.ni, self.ncr, self.dW, t) self.write_log("##############################################\n") self.write_log("### euorun: %s\n" % runname) self.write_log("##############################################\n") # run command runcmd = self.mpicmd + " -np %i " % self.np runcmd += self.sp.get_runcmd_hetero(self.material, self.N, self.M, self.ni, self.ncr, self.dW, t) # add additional parameter runcmd += self.iteration_parameter # add output runoutput = self.output + self.hdb.get_temp_output(t) runcmd += " -o %s/" % runoutput #print "check", runcmd # check if run not already exist runexists = self.run_exists(runcmd, runoutput, check_database=self.check_database) if not runexists: # add special input folder if special_input != None: runcmd += " -i %s" % (special_input) # search self.input folder and/or remote database for suitable input folders and add it else: if self.inputFlag: runcmd = database.add_input( runcmd, download_path=self.output + "/download/", path=self.input, source=self.source, input_system_name=self.input_system_name) if self.isoDeltaFlag: ###################################################################################### ####### add energy shift values for the isolated system constituents ################# ###################################################################################### # check is values of energy shifts in the isolated system already exist #print "check isodeltas:", database.get_isodelta_info(runcmd) self.write_log( "* Check isolated deltas: %s, %s, %s, %s, %s, %s, %s, %s\n" % (database.get_isodelta_info(runcmd)[:-1])) (exists_left, material_left, N_left, nc_left, exists_right, material_right, N_right, nc_right, temp) = database.get_isodelta_info(runcmd) # if not start isolated runs if not exists_left or not exists_right: if not exists_left: # get name runname_left = "%s, N=%i, ni=%f, T=%f" % ( material_left, N_left, nc_left, t) self.write_log("* Isolated run necessary: %s\n" % runname_left) # get run command runcmd_left = self.mpicmd + " -np %i " % self.np runcmd_left += self.sp.get_runcmd_isolated( material_left, N_left, nc_left, t) # add default additional parameter for iteration runcmd_left += self.get_default_iteration_parameter( material_left) # add output output_left = self.idb.get_output( material_left, N_left, nc_left) runoutput_left = output_left + self.idb.get_temp_output( t) runcmd_left += " -o " + runoutput_left # run left system if not self.run_exists(runcmd_left, runoutput_left): # add input if existent runcmd_left = database.add_input( runcmd_left, download_path=output_left + "/download/", path=output_left, source=self.source) j = job.job(runname_left, self.log, self.email, [runcmd_left], logappend=True, verbose=self.verbose, mailcmd=self.mailcmd) j.run() # update database self.write_log("* Update isolated database\n") #print "update isolated db" updatecmd_left = "isolated_remote.py %s" % output_left #subprocess.call(updatecmd_left, shell=True) j = job.job("update remote isolated database", self.log, self.email, [updatecmd_left], logappend=True, verbose=False, mailcmd=self.mailcmd) j.run() if not exists_right: # get name runname_right = "%s, N=%i, ni=%f, T=%f" % ( material_right, N_right, nc_right, t) self.write_log("* Isolated run necessary: %s\n" % runname_right) # get run command runcmd_right = self.mpicmd + " -np %i " % self.np runcmd_right += self.sp.get_runcmd_isolated( material_right, N_right, nc_right, t) # add default additional parameter for iteration runcmd_right += self.get_default_iteration_parameter( material_right) # add output output_right = self.idb.get_output( material_right, N_right, nc_right) runoutput_right = output_right + self.idb.get_temp_output( t) runcmd_right += " -o " + runoutput_right # run right system if not self.run_exists(runcmd_right, runoutput_right): # add input if existent runcmd_right = database.add_input( runcmd_right, download_path=output_right + "/download/", path=output_right, source=self.source) j = job.job(runname_right, self.log, self.email, [runcmd_right], logappend=True, verbose=self.verbose, mailcmd=self.mailcmd) j.run() # update database #print "update isolated db" self.write_log("* Update isolated database\n") updatecmd_right = "isolated_remote.py %s" % output_right #subprocess.call(updatecmd_right, shell=True) j = job.job("update remote isolated database", self.log, self.email, [updatecmd_right], logappend=True, verbose=False, mailcmd=self.mailcmd) j.run() # add isodeltas runcmd = database.add_isodeltas(runcmd) # run heterostructure job #print "run", runcmd j = job.job(runname, self.log, self.email, [runcmd], logappend=True, verbose=self.verbose, mailcmd=self.mailcmd) j.run() # update database if self.updatedbFlag and not runexists: self.write_log("* Update heterostructure database\n") #print "update heterostructure db" updatecmd = "heterostructure_remote.py %s" % runoutput #subprocess.call(updatecmd, shell=True) j = job.job("update remote heterostructure database", self.log, self.email, [updatecmd], logappend=True, verbose=False, mailcmd=self.mailcmd) j.run() self.write_log("\n")
def run_hetero(self, t, special_input=None): # run name runname="%s, N=%i, M=%i, ni=%f, ncr=%f, dW=%f, T=%f" % (self.material, self.N, self.M, self.ni, self.ncr, self.dW, t) self.write_log("##############################################\n") self.write_log("### euorun: %s\n" % runname) self.write_log("##############################################\n") # run command runcmd=self.mpicmd + " -np %i " % self.np runcmd+=self.sp.get_runcmd_hetero(self.material, self.N, self.M, self.ni, self.ncr, self.dW, t) # add additional parameter runcmd+=self.iteration_parameter # add output runoutput=self.output + self.hdb.get_temp_output(t) runcmd+=" -o %s/" % runoutput #print "check", runcmd # check if run not already exist runexists=self.run_exists(runcmd, runoutput, check_database=self.check_database) if not runexists: # add special input folder if special_input!=None: runcmd+=" -i %s" % (special_input) # search self.input folder and/or remote database for suitable input folders and add it else: if self.inputFlag: runcmd=database.add_input(runcmd, download_path=self.output+"/download/", path=self.input, source=self.source, input_system_name=self.input_system_name) if self.isoDeltaFlag: ###################################################################################### ####### add energy shift values for the isolated system constituents ################# ###################################################################################### # check is values of energy shifts in the isolated system already exist #print "check isodeltas:", database.get_isodelta_info(runcmd) self.write_log("* Check isolated deltas: %s, %s, %s, %s, %s, %s, %s, %s\n" % (database.get_isodelta_info(runcmd)[:-1])) (exists_left, material_left, N_left, nc_left, exists_right, material_right, N_right, nc_right, temp)=database.get_isodelta_info(runcmd) # if not start isolated runs if not exists_left or not exists_right: if not exists_left: # get name runname_left="%s, N=%i, ni=%f, T=%f" % (material_left, N_left, nc_left, t) self.write_log("* Isolated run necessary: %s\n" % runname_left) # get run command runcmd_left=self.mpicmd + " -np %i " % self.np runcmd_left+=self.sp.get_runcmd_isolated(material_left, N_left, nc_left, t) # add default additional parameter for iteration runcmd_left+=self.get_default_iteration_parameter(material_left) # add output output_left=self.idb.get_output(material_left, N_left, nc_left) runoutput_left=output_left + self.idb.get_temp_output(t) runcmd_left+=" -o " + runoutput_left # run left system if not self.run_exists(runcmd_left, runoutput_left): # add input if existent runcmd_left=database.add_input(runcmd_left, download_path=output_left+"/download/", path=output_left, source=self.source) j=job.job(runname_left, self.log, self.email, [runcmd_left], logappend=True, verbose=self.verbose, mailcmd=self.mailcmd) j.run() # update database self.write_log("* Update isolated database\n") #print "update isolated db" updatecmd_left="isolated_remote.py %s" % output_left #subprocess.call(updatecmd_left, shell=True) j=job.job("update remote isolated database" , self.log, self.email, [updatecmd_left], logappend=True, verbose=False, mailcmd=self.mailcmd) j.run() if not exists_right: # get name runname_right="%s, N=%i, ni=%f, T=%f" % (material_right, N_right, nc_right, t) self.write_log("* Isolated run necessary: %s\n" % runname_right) # get run command runcmd_right=self.mpicmd + " -np %i " % self.np runcmd_right+=self.sp.get_runcmd_isolated(material_right, N_right, nc_right, t) # add default additional parameter for iteration runcmd_right+=self.get_default_iteration_parameter(material_right) # add output output_right=self.idb.get_output(material_right, N_right, nc_right) runoutput_right=output_right + self.idb.get_temp_output(t) runcmd_right+=" -o " + runoutput_right # run right system if not self.run_exists(runcmd_right, runoutput_right): # add input if existent runcmd_right=database.add_input(runcmd_right, download_path=output_right+"/download/", path=output_right, source=self.source) j=job.job(runname_right, self.log, self.email, [runcmd_right], logappend=True, verbose=self.verbose, mailcmd=self.mailcmd) j.run() # update database #print "update isolated db" self.write_log("* Update isolated database\n") updatecmd_right="isolated_remote.py %s" % output_right #subprocess.call(updatecmd_right, shell=True) j=job.job("update remote isolated database" , self.log, self.email, [updatecmd_right], logappend=True, verbose=False, mailcmd=self.mailcmd) j.run() # add isodeltas runcmd=database.add_isodeltas(runcmd) # run heterostructure job #print "run", runcmd j=job.job(runname, self.log, self.email, [runcmd], logappend=True, verbose=self.verbose, mailcmd=self.mailcmd) j.run() # update database if self.updatedbFlag and not runexists: self.write_log("* Update heterostructure database\n") #print "update heterostructure db" updatecmd="heterostructure_remote.py %s" % runoutput #subprocess.call(updatecmd, shell=True) j=job.job("update remote heterostructure database", self.log, self.email, [updatecmd], logappend=True, verbose=False, mailcmd=self.mailcmd) j.run() self.write_log("\n")