def convertFile(angle, n_nodes, n_levels, num_samples, visc, speed, T): ############################################################# # Creating names and output place ############################################################# FNULL = open(os.devnull, 'w') mshFileName = "r" + n_levels + "a" + str(angle) + "n" + n_nodes + ".msh" fileNameWithoutExtension = os.path.splitext(mshFileName)[0] xmlFileName = fileNameWithoutExtension + ".xml" currentFolderLocation = "/home/ubuntu/molnProject/" + fileNameWithoutExtension + "/" mshFileLocation = "/home/ubuntu/molnProject/" + fileNameWithoutExtension + "/msh/" ############################################################# # Remove folder if exists ############################################################# content = sorted(os.listdir("/home/ubuntu/molnProject/")) if fileNameWithoutExtension in content: print "Folder exists!!! Remove!!" os.system("sudo rm -rf " + fileNameWithoutExtension + "*") ############################################################# # Create layout for task ############################################################# print "Started to process file: " + str(mshFileName) print "Copying and creating files and directorys" subprocess.check_call(["mkdir", fileNameWithoutExtension]) subprocess.check_call(['chmod', '-R', '777', fileNameWithoutExtension]) subprocess.check_call(["cp", "-a", "run.sh", fileNameWithoutExtension]) subprocess.check_call(["cp", "-a", "naca2gmsh_geo.py", fileNameWithoutExtension]) subprocess.check_call(["cp", "-a", "airfoil", fileNameWithoutExtension]) subprocess.check_call(["mkdir", "msh"], cwd=fileNameWithoutExtension+"/") subprocess.check_call(["mkdir", "geo"], cwd=fileNameWithoutExtension+"/") subprocess.check_call(['chmod', '-R', '777', fileNameWithoutExtension+"/msh"]) ############################################################# # Running run.sh ############################################################# print "Running run.sh..." subprocess.check_call( ["sudo", "./run.sh", str(angle), str(angle), "1", n_nodes, n_levels], cwd=fileNameWithoutExtension+"/") ############################################################# # Running dolfin-convert ############################################################# print "Running dolfin-convert..." #subprocess.check_call(["sudo","dolfin-convert", "msh/"+mshFileName, xmlFileName], cwd=fileNameWithoutExtension+"/", stdout=FNULL, stderr=subprocess.STDOUT) gmsh2xml(mshFileLocation + mshFileName, currentFolderLocation + xmlFileName) ############################################################# # Run airfoil on file ############################################################# print "Running airfoil..." num = str(num_samples) visc_s = str(visc) speed_s = str(speed) T_s = str(T) subprocess.check_call( ["sudo","./airfoil", num, visc_s, speed_s, T_s, xmlFileName], cwd=fileNameWithoutExtension+"/", stdout=FNULL, stderr=subprocess.STDOUT) ############################################################# # Extracting information from frag_ligt.m ############################################################# print "Getting drag_ligt.m to lists" resultLists = readFile("/home/ubuntu/molnProject/" +fileNameWithoutExtension+"/results/drag_ligt.m") pictureName = fileNameWithoutExtension + "Num" + num + "Visc" + visc_s + "Speed" + speed_s + "T" + T_s + ".png" dbName = fileNameWithoutExtension + "Num" + num + "Visc" + visc_s + "Speed" + speed_s + "T" + T_s ############################################################# # Ploting the values and puting them in container ############################################################# print "Plot the values" plot_file(pictureName, resultLists) pictureFile = open(pictureName, "r") print "Sending png to container" object_id = conn.put_object(bucket_name, pictureName, pictureFile) os.system("sudo rm -rf " + fileNameWithoutExtension + "*") FNULL.close() return (dbName)
def runsh(): angle_start=request.form['angle_start'] angle_stop=request.form['angle_stop'] n_angles=request.form['n_angles'] n_nodes=request.form['n_nodes'] n_levels=request.form['n_levels'] num_samples=request.form['num_samples'] visc=request.form['visc'] speed=request.form['speed'] T=request.form['T'] print 1, "- - - - - - - - Run start - - - - - - - -" ########################### ##### Check if exists ##### ########################### #anglediff=$((($angle_stop-$angle_start)/$n_angles)) anglediff = (int(angle_stop) - int(angle_start)) / int(n_angles) angles = [] for i in range(0, int(n_angles)): print 1, i angle = 0 angle = (int(angle_start) + anglediff * i) if in_db("r" + n_levels + "a" + str(angle) + "n" + n_nodes + "N" + num_samples + "v" + visc + "s" + speed + "T" + T + ".msh") == False : print "Ja en vinkel!" angles.append(angle) if len(angles) != 0: print "Nu skickas allt ivag :)" response = group(convertFile.s(angle, n_nodes, n_levels, num_samples, visc, speed, T) for angle in angles) result = response.apply_async() result.get() ######################## ##### Create *.msh ##### ######################## #time_1 = time.time() #subprocess.call(["./run.sh", angle_start, angle_stop, n_angles, n_nodes, n_levels]) #time_2 = time.time() #print 2, time_2 - time_1 ############################################# ##### Convert *.msh to *.xml + lite mer ##### ############################################# #appLocation = app.root_path #fileLocation = appLocation + "/msh/" #content = sorted(os.listdir(fileLocation)) #response = group(convertFile.s(fileName, open(fileLocation+fileName, "r").read()) for fileName in content) #result = response.apply_async() #result.get() #time_3 = time.time() #print 3, time_3 - time_2 for t in result.get(): (fileNamePlot, data) = t plot_file(fileNamePlot, data) to_db(fileNamePlot, "") os.system("rm -rf msh/*") os.system("rm -rf geo/*") os.system("mv *.png pictures/") #subprocess.call(["mv", "*.png", "pictures/"]) return render_template('site/runsh.html', angle_start=angle_start, angle_stop=angle_stop, n_angles=n_angles, n_nodes=n_nodes, n_levels=n_levels)