Пример #1
0
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)
Пример #2
0
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)