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;
Ejemplo n.º 2
0
	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;