def combine(this, simulation1, simulation2): path = this.path; simNumber = len(this.splitted) - 1; length1 = this.stateNumbers[simulation1]; lastSim1 = this.simulations[simulation1]; splitted1 = this.splitted[simulation1]; length2 = this.stateNumbers[simulation2]; lastSim2 = this.simulations[simulation2]; splitted2 = this.splitted[simulation2]; if(splitted1): mdf.combine(lastSim1, length1, states = "last"); #end if(splitted2): mdf.combine(lastSim2, length2, states = "last"); #end loadfile1 = lastSim1 + "/%05d/combined.xyz"%length1; loadfile2 = lastSim2 + "/%05d/combined.xyz"%length2; newPath = path + "/" + str(simNumber + 1) + "_combined"; #Creating new directories and data if(not os.path.exists(newPath + "/init")): os.makedirs(newPath + "/init"); #end datafilename = newPath + "/init/data.dat" datafile = open(datafilename, 'w'); datafile.write(str(this.p[0]) + " " + str(this.p[1]) + " " + str(this.p[2]) + "\n"); datafile.write(str(this.s[0]) + " " + str(this.s[1]) + " " + str(this.s[2]) + "\n"); datafile.write("0\n0\n"); #Number of particles lastDatafile = open(lastSim1 + "/init/data.dat"); lines = [l for l in lastDatafile]; N1 = int(lines[4]); lastDatafile.close(); lastDatafile = open(lastSim2 + "/init/data.dat"); lines = [l for l in lastDatafile]; N2 = int(lines[4]); lastDatafile.close(); datafile.write(str(N1 + N2) + "\n"); datafile.close(); #Creating directory to hold xyz files directory = newPath + "/00000"; this.resetRun(directory); os.makedirs(directory); savefile = directory + "/combined.xyz"; markFile1 = lastSim1 + "/init/mark.dat"; markFile2 = lastSim2 + "/init/mark.dat"; markFileSave = newPath + "/init/mark.dat"; mdm.combine(loadfile1, loadfile2, savefile, markFile1, markFile2, markFileSave); mdf.split(newPath, this.p, this.s, source = newPath + "/00000/combined.xyz"); this.simulations.append(newPath); this.stateNumbers.append(0); this.splitted.append(True); return simNumber + 1;
def combine(this, simulation1, simulation2): path = this.path; simNumber = len(this.splitted) - 1; length1 = this.stateNumbers[simulation1]; lastSim1 = this.simulations[simulation1]; splitted1 = this.splitted[simulation1]; length2 = this.stateNumbers[simulation2]; lastSim2 = this.simulations[simulation2]; splitted2 = this.splitted[simulation2]; if(splitted1): mdf.combine(lastSim1, length1, states = "last"); #end if(splitted2): mdf.combine(lastSim2, length2, states = "last"); #end newPath = path + "/" + str(simNumber + 1) + "_combined"; #Creating new directories and data this.resetRun(newPath); os.makedirs(newPath + "/init"); #Creating datafile datafilename = newPath + "/init/data.dat" datafile = open(datafilename, 'w'); datafile.write(str(this.p[0]) + " " + str(this.p[1]) + " " + str(this.p[2]) + "\n"); datafile.write(str(this.s[0]) + " " + str(this.s[1]) + " " + str(this.s[2]) + "\n"); datafile.write("0\n0\n"); #Number of particles lastDatafile = open(lastSim1 + "/init/data.dat"); lines = [l for l in lastDatafile]; N1 = int(lines[4]); lastDatafile.close(); lastDatafile = open(lastSim2 + "/init/data.dat"); lines = [l for l in lastDatafile]; N2 = int(lines[4]); lastDatafile.close(); datafile.write(str(N1 + N2) + "\n"); datafile.close(); #Combining files and splitting xyz file mdm.combine(lastSim1, lastSim2, newPath); mdf.split(newPath, this.p, this.s, source = newPath + "/00000/combined.xyz"); this.simulations.append(newPath); this.stateNumbers.append(0); this.splitted.append(True); return simNumber + 1;