import sys import os import argparse from folder_convention import parse_folder_for_metadata from cosy_output import CosyOutput parser = argparse.ArgumentParser(description='Write the two columns for the velocity data: z,v/c') parser.add_argument('screen_file', type=str, help='The path screen.txt are stored.', default=None) args = parser.parse_args() print "z,v/c"; with open(args.list_of_directories) as f: for line in f: line = line.rstrip() output =[] folder_metadata = parse_folder_for_metadata(line) output.append(folder_metadata["total_electrons"]) cosy_output = CosyOutput() cosy_output.injectScreenFile(os.path.join(line,"2-Cosy/screen.txt")) row_numbers = cosy_output.returnRowNumbersWithKeyValuePair("time",120e-12,comparison = 'gt') if row_numbers == []: continue output.append(str(100 * int(cosy_output.returnTableValue("number macroparticles",row_numbers[0])))) output.append(folder_metadata["applied_field"]) print ",".join(output)
while in_loop is True: output = [] sum_covariance_matrix = MyEditableCovarianceMatrix() mean_phase_volume=Phase6DVolume(mass=mass_of_macroparticle) with open(args.list_of_directories) as f: initialized = False for directory in f: directory = directory.rstrip() if not initialized: cosy_output = CosyOutput() cosy_output.injectFile(os.path.join(directory,"screen.txt")) row_numbers = cosy_output.getRowNumbersWithKeyValuePair("step number",step,comparison = 'eq') if row_numbers == []: in_loop = False break time = float(cosy_output.returnTableValue("time",row_numbers[0])) output.append(time) initialized = True phase_volume = Phase6DVolume() for filename in os.listdir(directory): if filename.startswith(str(step)+"-x-") and filename.endswith(".txt"): phase_volume.injectFile(os.path.join(directory,filename),mass=mass_of_macroparticle) sum_covariance_matrix.cov_matrix += phase_volume.getCovarianceMatrix().cov_matrix x_mean = Cartesian3DVector(x=scaling_factor_for_x_mean*phase_volume.getMean(["x"]),y=scaling_factor_for_x_mean*phase_volume.getMean(["y"]),z=scaling_factor_for_x_mean*phase_volume.getMean(["z"])) #print x_mean p_mean = Cartesian3DVector(x=scaling_factor_for_p_mean*phase_volume.getMean(["px"]),y=scaling_factor_for_p_mean*phase_volume.getMean(["py"]),z=phase_volume.getMean(["pz"])) #print p_mean mean_phase_volume.addParticle(mean_phase_volume.mass,x=x_mean,p=p_mean) sum_covariance_matrix.cov_matrix = sum_covariance_matrix.cov_matrix/len(mean_phase_volume) #sum_covariance_matrix.printCovarianceMatrix() det_cov_matrix = sum_covariance_matrix.getSubDeterminant()
args = parser.parse_args() mass_of_electron = constants.physical_constants["electron mass energy equivalent in MeV"][0] mass_of_macroparticle = args.number_of_electrons_per_macroparticle * mass_of_electron print "Ne,ex,ez,Fa" with open(args.list_of_directories) as f: for line in f: line = line.rstrip() output = [] folder_metadata = parse_folder_for_metadata(line) cosy_output = CosyOutput() cosy_output.injectFile(os.path.join(line, "2-Cosy/screen.txt")) row_numbers = cosy_output.getRowNumbersWithKeyValuePair("time", 120e-12, comparison="gt") if row_numbers == []: continue step = int(cosy_output.returnTableValue("step number", row_numbers[0])) number_of_macroparticles = int(cosy_output.returnTableValue("number macroparticles", row_numbers[0])) number_of_electrons = number_of_macroparticles * args.number_of_electrons_per_macroparticle files = [] for filename in os.listdir(os.path.join(line, "2-Cosy")): if filename.startswith(str(step) + "-x"): files.append(os.path.join(line, "2-Cosy/" + filename)) simulation_output = SimulationOutput() for path in files: simulation_output.injectFile(path) simulation_output.convertCoordinatesToBetterUnits(mass_of_macroparticle) simulation_output = simulation_output.boostCoordinates("z") ex = simulation_output.calcEmittance("x") / args.number_of_electrons_per_macroparticle ez = simulation_output.calcEmittance("z") / args.number_of_electrons_per_macroparticle if ex == 0 or ez == 0: continue
parser.add_argument('-r','--run_template', dest="run_template", type=str, help='The template with the qsub script.',default="/mnt/home/zerbe/src/tem_simulations/2-Cosy/run_120ps.template") parser.add_argument('-f','--positive_hole_files_dir', dest="pos_dir", type=str, help='The directory where the files are stored describing the positive hole geometry.',default="/mnt/home/zerbe/src/tem_simulations/2-Cosy/Files") parser.add_argument('-b','--bin_file', dest="bin_file", type=str, help='The path to the cosy binary.',default="/mnt/home/zerbe/src/tem_simulations/2-Cosy/cosy.bin") args = parser.parse_args() parameter_set_list = ParameterSetList() parameter_set_list.injectParametersFromCsv(args.filepath) for parameter_set in parameter_set_list.list: parameter_set.createMainOutputPath(args.working_dir) parameter_set.createStepnamePath("Cosy") #Idenfity step number to begin from. screen_file = os.path.join(parameter_set.returnStepnamePath("Cosy"),"screen.txt") cosy_output = CosyOutput() cosy_output.injectScreenFile(screen_file) last_step = cosy_output.returnTableValue("step number") parameter_set.step_to_continue_from = int((floor(float(last_step)/float(10))-1)*10) #Create output dir continue_dir = os.path.join(parameter_set.returnStepnamePath("Cosy"),"continue_from_" + str(parameter_set.step_to_continue_from)) if not os.path.exists(continue_dir) or not os.path.isdir(continue_dir): os.mkdir(continue_dir) #Grab the correct step's files for new initial conditions file. parameter_set.initial_conditions_file = os.path.join(continue_dir,"InitCondition_from_" + str(parameter_set.step_to_continue_from) + ".txt") make_continuing_initial_condition_file(parameter_set.returnStepnamePath("Cosy"),parameter_set.step_to_continue_from, parameter_set.initial_conditions_file) #Edit existing PE-setup.txt file. relevant_row_numbers = cosy_output.returnRowNumbersWithKeyValuePair("step number",str(parameter_set.step_to_continue_from)) parameter_set.time_to_continue_from = cosy_output.returnTableValue("time",row_number=relevant_row_numbers[0]) parameter_set.total_particles_generated = cosy_output.returnTableValue("number macroparticles",row_number=relevant_row_numbers[0])