Challenge

Week 6 - Data analysis

Aim:

 

Data visualizer

  • Your script should take column numbers as the input and plot the respective columns as separate images.
  • Each file should be saved by the name of the column.
  • The plot labels should be extracted from the file. If, I request for a plot between column 1 (crank angle) and column 8(volume), then the label information should automatically be extracted and must appear as labels in the plots. THIS SHOULD NOT BE DONE MANUALLY.

Compatability check

  • You code should exit gracefully, if a non-compatible file is provided as an input. It should say something like "File not recognized. Please provide a valid CONVERGE output file".

Basic performance calculation

  • Calculate the area under the P-V diagram. P is in column 2 and V is in column 8.
  • Calculate the power output of this engine. Assume that RPM is 1500
  • This engine consumed 20 micro grams of fuel (per 1 stroke cycle). Calculate its specific fuel consumption.

 

Python code for Data analysis:

 """
#import module
import matplotlib.pyplot as plt

#basic initialisation
line_count = 1
crank = []
pressure = []

# File parsing starts here
for line in open('engine_data.out'):
if '#' not in line:
crank.append(float(line.split()[0]))
pressure.append(float(line.split()[1]))

line_count = line_count+1

#figure
plt.plot(crank, pressure, linewidth=3)
plt.xlabel('crank')
plt.ylabel('pressure')
plt.show()

Compatability check:

import math
import matplotlib.pyplot as plt
import numpy as np
from scipy.integrate import simps

#Compatibility check

open('engine_data.out')


# Creating an empty array to store the values of Volume and pressure respectively
Volume = []
pressure = []

line_count = 1
for line in open('engine_data.out'):
if '#' not in line:
Volume.append(float(line.split()[7]))
pressure.append(float(line.split()[1]))
line_count = line_count + 1

 

#plotting p-v diagram
plt.plot(Volume, pressure, linewidth = 2, color = 'b')
plt.xlabel('Volume')
plt.ylabel('pressure')
plt.title("p-v diagram of engine")
plt.show()

Output:

Python code for power output for the engine:

 

import math
import matplotlib.pyplot as plt
import numpy as np
from scipy.integrate import simps

#Compatibility check

open('engine_data.out')


# Creating an empty array to store the values of Volume and pressure respectively
Volume = []
pressure = []

line_count = 1
for line in open('engine_data.out'):
if '#' not in line:
Volume.append(float(line.split()[7]))
pressure.append(float(line.split()[1]))
line_count = line_count + 1


#plotting p-v diagram
plt.plot(Volume, pressure, linewidth = 2, color = 'b')
plt.xlabel('Volume')
plt.ylabel('pressure')
plt.title("p-v diagram of engine")
plt.show()

 

# Inputs
# Speed of an Engine
rpm = 1500
rps = 1500/60
stroke_cycle = rps/2
# Fuel consumption in micrograms per 1 stroke cycle
fuel_consumption = 20
# Engine specifications
# Number of cylinder
n = 1
# 4 stroke engine
# Calculation of power output and Specific fuel consumption
power_output = n*stroke_cycle/(1000)
print('power output from engine : ' + str(power_output) + 'KW')
SFC = (fuel_consumption*pow(10,-6)*stroke_cycle*3600)/(power_output*1000)
print('Specific Fuel consumption, SFC = ' + str(SFC) + ' (kg/hr)/KW')
print('t')

Result:

power output from engine : 0.0125KW

Specific Fuel consumption, SFC = 0.07200000000000001 (kg/hr)/KWt

 

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.