burdickjp

volume delta calculator for piston engines

Jan 20th, 2016
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.63 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. volume delta calculator for piston engines
  4. Created on Wed Jan 20 08:36:47 2016
  5.  
  6. @author: Jeffrey.Burdick
  7. """
  8.  
  9. from math import pi, cos, sin, radians, sqrt
  10. import numpy as np
  11. import pandas as pd
  12.  
  13. def positionPiston(radiusCrank, angleCrank, lengthRod ):
  14.     return radiusCrank - lengthRod + radiusCrank *cos(angleCrank) + sqrt(lengthRod**2 - radiusCrank**2 *(sin(angleCrank))**2)
  15.  
  16. def volumeCylinder( area, length ):
  17.     return area * length
  18.    
  19. def areaCircle( radius ):
  20.     return pi * radius**2
  21.    
  22. def radiusCylinder( volume, length ):
  23.     return sqrt( volume/(length * pi) )
  24.  
  25. lengthStroke = [ 65.8, 75, 79 ]
  26. heightDeck = 201
  27. heightPiston = 31.07 #not correct, but doesn't matter
  28. boreLargest = 99.5
  29. volumeTarget = volumeCylinder(
  30.     area = areaCircle( radius = boreLargest/2 ),
  31.     length = lengthStroke[0]
  32.     )
  33.  
  34. lengthRod = [ heightDeck - heightPiston - i/2 for i in lengthStroke ]
  35. boreCylinder = [ 2* radiusCylinder( volume = volumeTarget, length = i ) for i in lengthStroke ]
  36.  
  37. dataList = [ [
  38.     volumeCylinder(
  39.         area = areaCircle( boreCylinder[i] /2),
  40.         length = positionPiston(
  41.             radiusCrank = lengthStroke[i] /2,
  42.             angleCrank = radians(j),
  43.             lengthRod = lengthRod[i]
  44.             )
  45.         )
  46.     for j in range(180) ] for i in range(len(lengthStroke)) ]
  47.  
  48. dataFrame = pd.DataFrame( { 'ej15': dataList[0], 'ej18': dataList[1], 'ej25': dataList[2] } )
  49. dataFrame['ej15Delta'] = dataFrame['ej15'].diff()
  50. dataFrame['ej18Delta'] = dataFrame['ej18'].diff()
  51. dataFrame['ej25Delta'] = dataFrame['ej25'].diff()
  52. dataFrame.to_csv('pistonMotionData.csv')
Add Comment
Please, Sign In to add comment