You are on page 1of 174

CALIFORNIA STATE UNIVERSITY, NORTHRIDGE

AN ITERATIVE APPROACH TO

AUTOMATING DESIGN OPTIMIZATION

A thesis submitted in partial fulfillment of the requirements

For the degree of Masters of Science

In Mechanical Engineering

By

Barry Orr

December 2012
The thesis of Barry Orr is approved:

_____________________________________ _______________
Dr. Robert Ryan Date

_____________________________________ _______________
Professor Susan Beatty Date

_____________________________________ _______________
Dr. Stewart Prince, Chair Date

California State University, Northridge

ii
Table of Contents

Signature Page ........................................................................................................ ii

List of Figures ........................................................................................................ vi

Abstract .................................................................................................................. ix

Purpose of Study ..................................................................................................... 1

1. INTRODUCTION .............................................................................................. 3

1.1 Internal Combustion Engines ........................................................................ 3

1.2 Internal Combustion Engine Components .................................................... 7

1.3 Forces on Linkage ....................................................................................... 10

1.4 Balancing of a linkage .................................................................................11

1.5 Previous Work ..............................................................................................11

1.6 Software Utilization .................................................................................... 13

2. Automation & Design objectives ...................................................................... 17

2.1 Design Objectives ....................................................................................... 17

2.2 CAD Modeling and Analysis ...................................................................... 17

2.3 Macro .......................................................................................................... 22

3. Analysis ............................................................................................................. 24

3.2 Mass and Length of Components ............................................................... 26

iii
3.3 Center of Mass of Components................................................................... 26

3.4 Kinematic Analysis ..................................................................................... 27

3.5 Dynamic Force Analysis ............................................................................. 34

3.6 Balancing Analysis...................................................................................... 38

4. Initial Modeling & Setup For Study ................................................................. 42

4.1 Internal Combustion Engine Internals Modeling ........................................ 42

4.2 Assembling the Components....................................................................... 49

4.3 Motion Simulation Initial Setup.................................................................. 50

4.4 Excel Calculations vs SolidWorks Motion Analysis................................... 52

4.5 Motion Study Maximum Stress Determination .......................................... 64

4.6 Finite Element Analysis Setup .................................................................... 71

4.7 Design Study Setup ..................................................................................... 72

5. Running the Simulation .................................................................................... 74

5.1 Initial Conditions ........................................................................................ 74

5.2 Step 1 - Model Edit and Primary Balancing ............................................... 78

5.3 Step 2 - Run Motion Analysis ..................................................................... 89

5.4 Step 3 - Import Loads from Motion Study to Finite Element Analysis ...... 90

5.5 Step 4 - Running the FEA ........................................................................... 92

5.6 Step 5 - Optimization Through Design Study............................................. 93

iv
5.7 Step 6 - Pull Optimized Data ...................................................................... 96

6. Conclusions ....................................................................................................... 98

6.1 Scope & Limitations ................................................................................... 98

6.2 Overview ..................................................................................................... 98

6.3 Future Considerations ............................................................................... 106

References ........................................................................................................... 107

Appendices .......................................................................................................... 108

v
List of Figures

Figure 1 Internal Combustion Engine1 ____________________________________________________ 3

Figure 2- Idealized Four Stroke Cycle2 _____________________________________________________ 4

Figure 3 - PV Diagram of CAD Modeled Engine & Ricardo WAVE Data __________________________ 5

Figure 4 - Internal Engine Components3 ____________________________________________________ 7

Figure 5 - Crank-Slider Mechanism4 _______________________________________________________ 7

Figure 6 - Connecting Rod Sketch with Defined Parameters ___________________________________ 18

Figure 7 Flowchart of Programming Logic _______________________________________________ 24

Figure 8 Balance Thickness Increase via Automation _______________________________________ 26

Figure 9 - Position Analysis ____________________________________________________________ 28

Figure 10 - Velocity Analysis ___________________________________________________________ 30

Figure 11 - Acceleration Analysis ________________________________________________________ 32

Figure 12 - Free Body Diagrams for a Crank Slider Mechanism (Norton, 2009) ____________________ 34

Figure 13 - Single Plane Balancing of a Link in Rotation (Norton 2009) __________________________ 38

Figure 14 - Connecting Rod Model with Labeled Features _____________________________________ 42

Figure 15 Basic Block CAD Model _____________________________________________________ 44

Figure 16 Basic Piston CAD Model _____________________________________________________ 45

Figure 17 - Basic Wrist Pin CAD Model ___________________________________________________ 46

Figure 18 - Initially Balanced Basic Crank CAD Model _______________________________________ 47

Figure 19 - Basic Connecting Rod CAD Model _____________________________________________ 48

Figure 20 - Assembled Model in Cutaway, Colored View for Clarity _____________________________ 49

Figure 21 - Motion Analysis Initial Setup __________________________________________________ 51

Figure 22 - Piston xy Displacement from SolidWorks ________________________________________ 53

Figure 23 - Piston xy Displacement from Excel _____________________________________________ 53

Figure 24 - Piston Displacement Magnitude from SolidWorks __________________________________ 54

Figure 25 - Piston Displacement Magnitude from Excel_______________________________________ 54

Figure 26 - Piston xy Velocity from SolidWorks _____________________________________________ 55

Figure 27 - Piston xy Velocity from Excel _________________________________________________ 55

vi
Figure 28 - Piston Velocity Magnitude from SolidWorks ______________________________________ 56

Figure 29 - Piston Velocity Magnitude from Excel ___________________________________________ 56

Figure 30 - Piston xy Acceleration from SolidWorks _________________________________________ 57

Figure 31 - Piston xy Acceleration from Excel ______________________________________________ 57

Figure 32 - Piston Acceleration Magnitude from SolidWorks ___________________________________ 58

Figure 33 - Piston Acceleration Magnitude from Excel _______________________________________ 58

Figure 34 - Crank xy Displacement from SolidWorks ________________________________________ 59

Figure 35 - Crank xy Displacement from Excel _____________________________________________ 59

Figure 36 - Crank xy Velocity from SolidWorks _____________________________________________ 60

Figure 37 - Crank xy Velocity from Excel __________________________________________________ 60

Figure 38 - Crank xy Acceleration from SolidWorks _________________________________________ 61

Figure 39 - Crank xy Acceleration from Excel ______________________________________________ 61

Figure 40 - Crank Displacement Magnitude from SolidWorks __________________________________ 62

Figure 41 - Crank Velocity Magnitude from SolidWorks ______________________________________ 62

Figure 42 - Crank Acceleration Magnitude from SolidWorks ___________________________________ 62

Figure 43 - Data Point Array, Force vs Time, imported into SolidWorks __________________________ 64

Figure 44 - Motion Analysis Simulation Setup ______________________________________________ 66

Figure 45 - Connecting Rod Von Mises Stresss Graph ________________________________________ 67

Figure 46 - Importing Motion Loads ______________________________________________________ 68

Figure 47 - 1000 RPM, 8 Degree Increment Von Mises Stress History Graph. 720 o Total _____________ 69

Figure 48 - 1000 RPM, 1 Degree Increment Von Mises History Graph. 49 o Total Span _______________ 69

Figure 49 - 10000 RPM, 8 Degree Increment Von Mises Stress History Graph. 720o Total Span _______ 70

Figure 50 - 10000 RPM, 1 Degree Increment Von Mises History Graph. 49 o Total Span ______________ 70

Figure 51 - Design Optimization Study Setup _______________________________________________ 73

Figure 52 - Material Selection Drop-Down _________________________________________________ 77

Figure 53 - Shaking Forces: Iterations_____________________________________________________ 81

Figure 54 - Shaking Forces: Most Balanced Condition ________________________________________ 82

Figure 55 - Shaking Forces: Overbalanced Condition _________________________________________ 83

vii
Figure 56- Bill of Materials from SolidWorks Assembly ______________________________________ 86

Figure 57 - Engine Block Side by Side Comparison __________________________________________ 87

Figure 58 - Piston Side By Side Comparison _______________________________________________ 87

Figure 59 - Connecting Rod Side by Side Comparison ________________________________________ 88

Figure 60 - Crankshaft Side by Side Comparison ____________________________________________ 88

Figure 61 - Motion Analysis Results ______________________________________________________ 89

Figure 62 - Connecting Rod Model with Imported Motion Load Design Study _____________________ 91

Figure 63 Connecting Rod Finite Element Analysis Results __________________________________ 92

Figure 64 Connecting Rod Design Optimization Minimal Mass Configuration ____________________ 93

Figure 65 - Connecting Rod Design Optimization Maximum Mass Configuration __________________ 94

Figure 66 Connecting Rod Design Optimization Optimal Configuration ________________________ 95

Figure 67 Alterations to Connecting Rod Model Performed through Automation _________________ 101

Figure 68 Automated Balancing Shaking Force Graph Comparison ____________________________ 103

Figure 69 Initially Edited Connecting Rod Model vs Optimized Configuration __________________ 104

Table 1 - Macro Instructions & Macro Initialization Table _____________________________________ 74

Table 2- Sample Component File Paths ____________________________________________________ 75

Table 3 - Excel Sheet Input _____________________________________________________________ 76

Table 4 - SolidWorks Mass Properties Array Key ____________________________________________ 79

Table 5 - Input Table After Running First Macro ____________________________________________ 84

Table 6 - Output Table After Initial Macro _________________________________________________ 85

viii
Abstract

AN ITERATIVE APPROACH TO

AUTOMATINGDESIGN OPTIMIZATION

By

Barry Orr

Master of Science in Mechanical Engineering

Iterative design studies can often be lengthy, repetitive and tedious. This study

sets out to automate the process of alteration, analysis, and optimization of the computer

aided design of the basic elements of an internal combustion engine: the fourbar crank-

slider linkage.

The ultimate goal was to optimize the design of a connecting rod within an

engine. It was approached as if the designer wanted to see how a small alteration of a

major component would alter the stresses of the system and how to optimize the

connecting rod given this change. To accomplish this, a previously created fourbar crank-

slider SolidWorks model was altered through data entered into Excel and a full kinematic

analysis was performed to analyze the motion of the linkage. Afterwards, a previously

created SolidWorks motion study was run to find the stresses the linkage undergoes

during its full combustion cycle. From the motion analysis, a finite element analysis

(FEA) was then performed to determine how the connecting rod stands up to the stresses

it sees during normal operating conditions. With a preliminary FEA run, the designer can

ix
determine if the design is feasible and will handle the forces it will undergo. From the

FEA, a design study can be run to optimize various parameters of the connecting rod in

order to minimize the mass.

It will be shown through the course of this paper that the automation principles

used within could be easily expanded for a multitude of uses. The amount of time and

effort saved through the incorporation of automation will be apparent for even basic

applications.

x
Purpose of Study

The purpose of this study is to show that repetitive design processes are greatly

sped up through usage of the application programming interface (API). The API was

programmed using the Visual Basic for Applications (VBA) language which allowed

Excel and SolidWorks to communicate with one another, pass data back and forth, and

generally speed up repetitive or otherwise lengthy tasks. The API, utilized in this manner,

shows that a designer can change a nearly limitless number of properties of a 3D model

in SolidWorks through an easy to read Excel spreadsheet. The various properties of the

3D model can then be used in calculations performed within Excel that are automated

through additional use of the API. It will be easy to see upon completion of this project

that this methodology would be invaluable in a design process that involved multiple

iterations involving slight changes in geometry or a multitude of other scenarios

involving repetition in calculations or design alteration.

Demonstrated in this project are the methods used to alter a desired diameter,

length, thickness, or any other dimension of a SolidWorks model from a cell within

Excel, allowing for analysis of a model with dimension changes quickly and easily. The

process of changing the material a model is comprised of through Excel and pulling all

material properties back through the API in order to be used for calculations again in

Excel was utilized. The API was also programmed to also allow the population of a Bill

of Materials table within the SolidWorks assembly using data entered into the Excel

spreadsheet.

1
The API was utilized to demonstrate the running of a complicated kinematic

analysis of a fourbar crank-slider mechanism, incrementally overbalancing the crankshaft

to show how the shaking forces are modified through the alteration of the center of mass

of the crankshaft. By graphing each iteration of the counterbalancing, the designer can

visually see how the shaking forces are reacting to the balancing quickly and choose what

level of shaking force is acceptable for their design.

Running a previously initialized SolidWorks motion analysis using the desired

preset conditions will also be run through the Excel interface. With a few mouse clicks,

the designer can then export the maximum loads experienced in the linkages cycle to the

finite element analysis where the component can be tested for failure. With the imported

loads from the motion cycle, a far more accurate load scenario is possible than would be

with a standard finite element analysis.

Contained within the connecting rod model was a design study that allowed for

optimization of the connecting rod geometry. With the forces imported from the motion

analysis, the design study optimized the connecting rod geometry to reduce mass whilst

still meeting desired criteria. In Section 4.7, the steps to properly constrain the design

study to meet a desired factor of safety will be shown.

With the optimization in place, running the final step exported all remaining data,

giving the user a brief rundown on all the relevant alterations that occurred throughout

the automation process. With all the data in one centralized location the user will be able

to determine what changes were necessary and what should be done further in order to

proceed with the current design or what aspect of the design should be altered.

2
1. INTRODUCTION

1.1 Internal Combustion Engines

Figure 1 Internal Combustion Engine1

The internal combustion engine is a mechanical device in which the combustion

of a fuel together with an oxidizer occurs within a temporarily sealed chamber and is

converted to useable energy. Within this system, the expansion of the high-temperature

and pressure gases produced by combustion applies a pressure force to the piston

component of the engine & drives it over a distance, generating useful, mechanical

energy. Internal combustion engines are advantageous since they provide high power-to-

weight ratios and are therefore commonly used for mobile applications. The internal

combustion engine has a few different variations, with the most common on today's roads

being the four stroke engine which has one power stroke per two revolutions and was

considered for this study.

3
Figure 2- Idealized Four Stroke Cycle2

Figure 2 shows the basic strokes of an idealized four stroke internal combustion

engine, including the idealized Pressure vs. Volume chart, while Figure 3 shows the

diagram of the Pressure vs. Volume data of the CAD model in combination with a few

assumptions and the Ricardo WAVE data, the details of which will be explained further in

their relevant sections within this project. The figures both depict the cylinder pressure

vs. cylinder volume of a typical four stroke internal combustion engine as it goes through

one complete cycle, or two complete revolutions, as previously stated.

4
PV Diagram of Model
60

50

40
Pressure (bar)

30

20

10

0
-50 325 700 1075 1450 1825 2200
Volume (cm3)

Figure 3 - PV Diagram of CAD Modeled Engine & Ricardo WAVE Data

In the first stroke, or intake stroke, the intake valve is opened as the piston

moves down, drawing in the cool air-fuel mixture. This is demonstrated by the increase in

volume at a constant pressure shown in step 1 of the diagrams.

During the second, compression stroke, the piston moves upwards while the

valves are closed which compresses the air-fuel mixture. Step two in the graphs

demonstrates this with a decrease in volume and increase in pressure being evident.

The third power, or combustion, stroke entails a spark plug emitting a spark

which ignites the compressed air-fuel mixture. The resulting force of the explosion forces

the piston downwards, creating the power of the engine. This can be seen by a decrease in

pressure and increase in volume in step 3 of the graphs.

5
The final exhaust stroke sees the piston moving back up to the top position,

expelling the burnt air-fuel mixture out the open exhaust valve. The graphs depict this as

the opposite of the first stroke: a decrease in cylinder volume at a constant pressure.

With the completion of the fourth stroke, the piston is at the top of its stroke,

commonly known as top dead center, and can begin the entire intake-compression-

combustion-exhaust cycle over again and continue to generate useable power.

6
Figure 4 - Internal Engine Components3

1.2 Internal Combustion Engine Components

The fourbar crank-slider mechanism is the basis of the standard internal

combustion engine and a simple design that utilizes a few primary components in its

operation. While the exact geometry varies from engine to engine, the basic function of

each component remains the same.

Figure 5 - Crank-Slider Mechanism4

7
1.2.1 Cylinder Block

The cylinder block (also referred to as an engine block, or merely block) contains

the cylindrical combustion chamber in which the air/fuel mixture is ignited. Most blocks

contain multiple cylinders and are arranged in various orientations depending upon the

manufacturer and usage. It is the primary structure for the internal combustion engine

with the bolt-on upper portion of the block, called the cylinder head, containing the

cylinders and valves for airflow. The lower part forms the crankcase, which serves as a

support and cover for the crankshaft and camshaft by use of bearings.

1.2.2 Piston

The piston acts to seal the combustion chamber and is forced downward by the

expansion of the ignited air/fuel mixture. The piston is cylindrical in shape to allow a

snug fit inside the combustion chamber and is generally partially hollow to reduce

weight. It contains grooves around the perimeter near the sealed end of the piston to

allow rings to be placed in order to ensure an air tight fit since the piston also acts as a

moveable gas-tight plug that keeps the air/fuel mixture within the cylinder. The top

surface of the piston, or crown, is where the combustion force is exerted. The crown may

be flat, concave, convex or any other variety of shapes to promote turbulence, help

control combustion, or to allow clearance for intake and exhaust valves. The engine block

acts to restrain the pistons motion to purely translational.

The piston is commonly made of aluminum, since it is lightweight and a good

heat conductor. It transmits the force of combustion to the crankshaft via the connecting

rod which causes the crankshaft rotation.

8
1.2.3 Wrist Pin

The wrist pin is used to connect the piston to the connecting rod. It is generally

hollow and restrained through use of circlips. It needs to be designed sturdy enough to

handle the double shear forces it will see during the cycles, but as light as possible to

minimize rotating mass.

1.2.4 Crankshaft

The crankshaft is driven in pure rotation by the torque applied to it by the piston

via the connecting rod. The central shaft of the crankshaft does not move up and down; it

rotates about its precisely machined central shaft, known as bearing journals, on bearings.

The distance between the rotational axis and the cylindrical offset arm of the crankshaft,

or crank throw, which attaches to the connecting rod is a determining factor of the

engines displacement and as such can drastically change an engines behavior.

Most crankshafts also contain a built-in or bolt on counter weight that is used to

reduce the shaking forces (see Section 1.3) felt by the engine. The size and shape of the

crankshaft and its attached counterweight differ greatly from engine to engine.

1.2.5 Connecting Rod

The connecting rod is the link that transmits the translational motion of the piston

into rotary motion of the crankshaft. It is allowed freedom of rotation at both ends to

allow for the changing angle between the ends. The smaller end is connected to the wrist

pin with the larger end being mounted to the crankshaft. Because one side of the rod is in

pure translation and the other end is in pure rotation, the motion of the center of gravity

of the connecting rod is complex and difficult to graph or visualize without the aid of

software packages.

9
1.3 Forces on Linkage

The crank-slider mechanism within an internal combustion engine is subject to

many forces including rotational inertia, the gas force, and the friction between each

joint. For the purposes of this study only the gas force and inertial forces are considered,

as the friction force is deemed inconsequential enough to ignore. The forces will be

discussed at some length in Section 3.5.

The inertial forces of a fourbar linkage can be quite substantial, especially upon

the engine block. It is useful to find the effect of these dynamic forces upon the linkages

supporting structure as they cause vibrations which can be harmful to the ground

structure, the functionality of the mechanism, or in the case of an automotive internal

combustion engine, the passenger comfort. The only places where the crank-slider

mechanism can deliver forces to the ground are at the pivot point of the crankshaft (link 2

of Figure 5) and the piston (link 4 of Figure 5). As these forces cause the ground

structure to vibrate, they are referred to as Shaking Forces. It will be discussed in

Section 3.5 and demonstrated in Section 5.2.3 that these forces can be minimized or

otherwise adjusted through the act of balancing.

10
1.4 Balancing of a Linkage

The resultant inertial forces of a rotating mechanism causes vibrations of the

supporting frame which will create noise, wear, fatigue, and other such negative effects

and should be minimized. Counterweight balancing is the improving of a mechanisms

dynamic behavior through specific weight addition that will allow the mechanism to

rotate with less force on the base as will be shown in Section 5.2.3. As with all

engineering designs, the balancing of a fourbar linkage is a juggling act between the

reduction of shaking forces, the overall system mass, packaging constraints, and other

considerations.

1.5 Previous Work

1.5.1 Coursework at California State University, Northridge

While there are many classes that comprise an engineering degree at CSUN, the

ME415 Kinematics of Mechanisms and ME515 Dynamics of Machines classes offered

the base knowledge required for the development of this project. Taught by Dr. C.T. Lin

and Dr. Nhut Ho respectively, the kinematic studies and detailed analysis of engines and

the crank-slider mechanism contained information directly related to this study.

ME486AB Senior Design in Mechanical Engineering, taught by Dr. George Youssef,

became a crash course in engineering design and finite element analysis while ME630

Computer-Aided Design of Machinery, taught by Dr. Stewart Prince, taught advanced

machine design theory and integrated the use of automation in mechanical design through

SolidWorks.

11
1.5.2 Thesis Literature Reviewed

The following theses, each submitted as a requirement for a masters degree from

California State University, Northridge, were all used for various forms of guidance,

inspiration, or information. They were exceptionally helpful in the development of this

thesis.

Shaking Force Analysis of a Single-Cylinder Engine and a Vee-Twin Engine by

Al Noel Tanglao Sansolis. Submitted to California State University, Northridge June

2007

Design and Analysis of Connecting Rod for V8 Engine by Robin Piya.

Submitted to California State University, Northridge December 2007

Design and Load Analysis of a Connecting Rod by Krishna Aravind

Mamidanna. Submitted to California State University, Northridge December 2010

1.5.3 Textbook Literature Utilized

The textbooks required by Cal State Northridges ME 415/515 classes and

ME330/430/630 classes proved to be of tremendous benefit. Both by Robert L. Norton,

Kinematics and Dynamics of Machinery and Machine Design an Integrated

Approach contain massive amounts of valuable information for anyone interested in

machine design of all forms. The equations, figures, tables, and information are all laid

out in an easily understandable manner and this project could not have been completed

without them.

12
1.5.4 Various Other Information Sources

The SolidWorks API and Microsoft Excel VBA help files were invaluable sources

of information for the entirety of this project. While the SolidWorks API help still leaves

much to be desired and can be vague at times, there is still a wealth of information at a

designers disposal within it.

The Power Point notes utilized for the ME515 class by Dr. Nhut Ho were a quick

and easy reference guide that was referenced often during this project. It centralized

much of the relevant information required for this project and cut down on time spent

digging through the substantially larger aforementioned books written by Norton.

The ME630 class at CSUN served to be a fascinating source of inspiration above

all else. Incorporating automation into engineering design was an interesting approach

that had not been seen elsewhere in the CSUN coursework. With the vast array of tools

and disciplines available at CSUN, any fledgling engineer can find something that piques

their interest

1.6 Software Utilization

1.6.1 Microsoft Excel

Excel is an incredibly powerful spreadsheet application by Microsoft that served

as the user interface of this project. The ease of organizing, labeling, inputting,

outputting, exporting, and sorting data within Excel using its built-in calculation tools,

graphing tools, and macro programming language (see Section 1.6.3) makes it a simple to

use and comprehensive software package for this project.

13
1.6.2 Windows API

Microsofts set of application programming interfaces is known as the Windows

API. While the API provides many different functions, the role of primary concern to this

project is the ability to allow applications to interact with one another by exporting data

between themselves automatically without further interaction from a user. With access to

the API, data is easily passed between the required programs and utilized to automate the

complicated and time consuming processes discussed throughout this report.

1.6.3 Visual Basic for Applications

Visual Basic for Applications is a programming language hosted within most

Microsoft Office applications. It allows the user to input and output data, build user-

defined functions, automate processes, and access the Windows API in order to allow

inter-software, automated communication.

14
1.6.4 SolidWorks

SolidWorks is a parametric based 3D computer-aided design (often referred to as

CAD) software package with an in-depth feature tree, substantial engineering analysis

tools, and the ability to be given commands using an API. As shown in this project, the

fourbar crank-slider model will be created, the motion and kinematics analyzed, and the

stresses calculated all within this one powerful software package.

The parametric approach to modeling allows features to be named and defined by

constraining values which can be easily edited and the entire model updated. This

approach allows, among other things, a models parameter to be called via the API by

name and modified to match the data collected from within Excel.

The finite element analysis (often referred to as FEA) capability of SolidWorks

is a phenomenal tool used to understand how a CAD modeled component will react to the

stresses that it will see under its normal operating conditions. The ability to quickly

determine a components Factor of Safety saves countless hours of hand calculations and

allows components or assemblies to be analyzed that would be otherwise nearly

impossible to evaluate by hand due to complicated geometry or other limiting factors.

Another tool utilized in this report is the motion study of an assembly. It allows

the individually modeled components of the crank-slider to be modeled, mated

appropriately, and the entire assembly rotated as it would within an engine. The assembly

was able to be rotated at a fixed rate, a gas force applied at the piston crown, and all

reaction forces were tabulated and studied as will be discussed at length in Section 4.5.

15
1.6.5 Ricardo WAVE

Ricardo WAVE is a 1D engine simulation software package from Ricardo

Software. It allows the user to build a simulated engine with nearly any configuration of

size, shape, pathway, or almost any other parameter of engine intake, combustion

chamber, valves, exhaust, etc. than can be altered on an engine. It allows for accurate

prediction and optimization of engine noise reduction, sound quality, drivetrain,

emissions, and temperatures among other variables.

Ricardo WAVE is used by major manufacturers worldwide and its usefulness is

far beyond the scope of this project. As such it was only briefly used for this study with

the aid of Dr. Stewart Prince. The cylinder pressure of a comparable size and shape

single-cylinder engine was gathered with respect to crankshaft angle as can be seen in

Section 4.5. This data was used to graph the PV diagram shown in Figure 3 and to graph

the shaking forces as will be discussed in Section 5.2.3.

16
2. Automation & Design objectives

2.1 Design Objectives

The primary goal of this project was to automate engineering calculations through

the use of the API and to omit as much human interaction as possible with a full

connecting rod finite element analysis design cycle. When calculation and design tasks

increase in complexity, length, or become repetitive in concept, the benefits of

automation become much more apparent.

A design engineer should remain cautious in the use of automation and execute a

sound engineering design and analysis procedure before utilizing such means, as

demonstrated within this project.

2.2 CAD Modeling and Analysis

The CAD models were created to be as simple and straightforward as possible.

They were modeled after the classic, basic shape of each component to allow the

automation and methodology to be the primary focus and to eliminate any extra difficulty

that would occur from more complicated geometries. They were designed to showcase

the two-way automation and calculation when SolidWorks and Excel work together

towards the goal of model alteration, calculations, analysis, and optimization.

17
The various features of each model were appropriately named for ease of

modification both manually and through the API. With each feature, sketch, and

dimension named within a model, the API can easily access the desired parameters by

name and make changes quickly, as demonstrated in the sketch of the basic dimensions of

the connecting rod shown in Figure 6.

Figure 6 - Connecting Rod Sketch with Defined Parameters

18
It was also desired that the model's material properties, including the material

itself, could be easily modified through the Excel interface. The selectable materials were

chosen primarily because each material has a distinct visual appearance within

SolidWorks so it can be easily seen that the material was actually altered on the model.

The user was allowed to select the desired material from Excel and alter the SolidWorks

model's material properties accordingly, after which the material properties were returned

to the Excel sheet to be used in calculations or wherever else desired.

All steps of this project including linkage balancing, linkage motion analysis, and

connecting rod FEA, are all steps that would be required in working towards the goal of

connecting rod optimization. Without fully understanding the motion of the linkage and

the inertial and gas forces, it would be impossible to have an even remotely optimized

design.

19
2.2.1 Balancing

Through the use of automation, the entire linkage system was balanced and

subsequently overbalanced to reduce the shaking forces to an acceptable level. A

crankshaft that was balanced about its center shaft was used initially. Through the

balancing of the crankshaft, the mechanism as a whole was desired to become more

stable and the shaking forces easily modified to suit the designers goals. The details of

the actual process are described in detail in Section 5.2.3 with the balancing analysis

described in Section 3.6.

2.2.2 Simulation

By using the SolidWorks motion analysis tools, the motion of the connecting rod

and the forces upon it were quickly and accurately analyzed. With the motion and forces

calculated, exporting this data to the connecting rod model allowed for a finite element

analysis with no additional setup.

The exported FEA study allows the performing of a check on the design to

confirm that it could withstand the rigors of its operation and if the system is

overdesigned. With the FEA study properly initialized through the motion analysis, a far

more accurate analysis was possible than would be probable otherwise. It will be shown

that any alteration of the basic design geometry can be quickly tested with the API and

SolidWorks simulation.

20
2.2.3 Design Optimization and Factor of Safety Requirement

A factor of safety describes a systems capability to withstand its expected loads.

A higher factor of safety indicates a system is capable of withstanding many times its

expected stresses, while a factor of safety under 1.0 indicates that the system will

structurally fail under normal operating conditions. For most designs, too high of a factor

of safety is undesirable as it implies over-engineering which increases weight and/or cost.

The desired factor of safety for all components was decided to be 2.5. The study

was set up so that value could be easily altered to allow for a stricter or more forgiving

factor of safety, depending upon the designers needs.

The connecting rod model will contain a design study that has been previously

created in SolidWorks with the intent of reducing the mass of the connecting rod. The

connecting rod will be the only component whose weight is optimized, but it will be

intuitively obvious that this process could be expanded to optimize any component

desired. The design study will run through iterations of the design based upon previously

created constraints and variables and determine which iteration of the model will

minimize the mass while still meeting the desired criteria by running numerous FEA

studies. The process will be explained at length in Section 5.6.

21
2.3 Macro

The macro will be designed so that the entire process of model alteration, material

change, overbalancing, shaking force graphing, motion study, FEA, and design

optimization can be performed with as little human interaction as possible. It was

intended that the macro be accomplished in as few lines as possible, to decrease

complexity. In order to achieve that goal, many sub-functions were created to perform

tasks that were repeated several times. The appendices will contain the entire VBA code

to show the details of how all of this was accomplished, but separate subfunctions were

created for the kinematic analysis, to edit a SolidWorks dimension or parameter, pull

mass properties, create a graph, and many other useful tasks.

It is also desired that the macro provide as much feedback and insight into what

processes it is actually performing as possible. It will attempt to graph or export as much

relevant data as deemed necessary to show that the API is indeed facilitating two-way

communication between the programs. The cost/kg output, for example, is clearly not

an accurate example of how much the part costs to make or even what the bulk material

would cost. There are a multitude of factors far beyond the scope of this paper that would

go into the actual cost of the component. The cost/kg is simply to show the

communication that occurs seamlessly with the API. The macro pulls the mass data from

SolidWorks, stores that data within a variable, calls a custom function within VBA, and

outputs the calculated approximate cost for the chosen material into the desired cell. The

Bill of Materials table within the full engine assembly is another example of data that

was created to show the endless possibilities of the API. It serves no real purpose in the

goal of optimization, but allows the user to see data entered into a spreadsheet within

22
Excel quickly placed into a table within a SolidWorks assembly that can be used to speed

up the creation of engineering drawings or tables later in the manufacturing process.

The programming of the API followed a basic path as shown in Figure 7. The full

details of what the API is doing and the reasoning behind it can be found in Section 5.2,

but it follows the simple looping structure found in the flowchart of Figure 7.

As of this writing, it is believed that the process of exporting a specific frame

from within a motion study into an FEA is not possible through the API. Similarly, it does

not appear that the design study is compatible with automation yet and no parameters

within the design study can be altered or initiated through the API.

23
Data Input

Open SolidWorks
& All Models

Edit Model Dimensions


& Pull Mass Data

Run Kinematic Analysis


& Graph
Shaking Forces

Check Linkage Balance


Status

Repull Mass Properties


of Crankshaft Balanced?

Yes
Increment Crankshaft Print Balanced
Balance Thickness Graph No

Overbalanced?

No

Print Overbalanced
Yes
Graph

Update Crank Model Output


Relevant Data

Figure 7 Flowchart of Programming Logic

24
3. Analysis

3.1 Constants, Variables, and Units

Ri Linkage Position Vector


ri Linkage Length
i Linkage angle
i Linkage angular velocity in radians per second
vi Linkage linear velocity
ai Linkage linear acceleration
Force exerted by linkage i on linkage j in the x direction
mi Linkage mass
Linkage i center of mass acceleration in x direction
Tij Torque exerted by linkage i on linkage j
Distance from linkage i pin to linkage js center of mass in
x direction
IGi Linkage i mass moment of inertia
i Linkage i angular acceleration
Force upon piston crown in the x direction
All equations, inputs, and outputs use the SI system of units where force,

displacement and mass are expressed in newtons, meters and kilograms respectively. This

becomes one of the limitations of the CAD softwares API, where it is only capable of

transmitting specific units and expects all input units to be of the same scale. It is an

easily overlooked aspect of the API and can drastically alter results, but once aware of the

issue it is easy enough to convert all input and output data into the required units using a

simple conversion factor for all relevant data.

25
3.2 Mass and Length of Components

The mass and length of each component was taken directly from the components

respective SolidWorks model upon initialization of the macro. With properly oriented and

defined CAD models, the mass and length data of a component is easily available for

export from SolidWorks. Section 5.2.1 will discuss at length the particulars of the actual

data collection.

3.3 Center of Mass of Components

The center of mass for the connecting rod and piston were unchanging for each

kinematic analysis balancing loop, so the center of mass value was initially pulled

directly from each 3D model and used accordingly.

Figure 8 Balance Thickness Increase via Automation

The center of mass of the crankshaft, however, obviously changes as the thickness

of the balance increases as shown in Figure 8. Therefore the center of mass of the crank

must be re-gathered every time a kinematic analysis is to be performed and was done

automatically utilizing the interconnectivity of the API, by pulling the SolidWorks data

for each iteration of Excels kinematic analysis.

26
3.4 Kinematic Analysis

The following three sections detail the equations used for describing the motion of

the fourbar crank-slider mechanism. In keeping consistent with the general nomenclature

for a fourbar crank-slider mechanism and with Figure 5, the crankshaft rotating at a

constant angular velocity is Link 2, the piston which travels in only the x direction (as

defined in Figure 9) is Link 4, the connecting rod is Link 3, and the engine block is Link

1.

While the kinematic analysis information is useful and interesting to know, the

primary purpose of the information is to allow us to determine the forces the linkage

undergoes in order to better balance the system for smoother, more reliable operation

through balancing. Section 5.2.3 will show how the kinematic information is used to this

extent with Section 3.6 discussing the balancing.

27
3.4.1 Position Analysis
y

R3 3
R2

x
R1

Figure 9 - Position Analysis
3
With each links number designation defined in Section 3.4 and the position

vectors of each component as shown in Figure 9, the vector loop equation is as follows:

2 = 1 + 3

Equation 1

When rewritten this becomes:

2 3 1 = 0

Equation 2

Replacing the position vectors with the complex number equivalents:

2 2 3 3 1 1 = 0

Equation 3

Substituting the Euler equivalents:

2 (2 + 2 ) 3 (3 + 3 ) 1 (1 + 1 ) = 0

Equation 4

28
Because of the chosen coordinate system 1 = 0, the real, x components

separated out become:

2 2 3 3 1 = 0

Equation 5

Also the imaginary, y components become:

2 2 3 3 = 0

Equation 6

Solving Equations 5 and 6 for r1 and 3, respectively, gives the solution for piston

position:

1 = 2 2 3 3

Equation 7

2 2
3 = 1 ( )
3

Equation 8

29
3.4.2 Velocity Analysis

3
+
R2 V2 R3 3
2
-

R1 V4 x

Figure 10 - Velocity Analysis

Differentiation of Equation 3 with respect to time and noting that r2, r3, and 1 are

constant and that



= gives:

2 2 2 3 3 3 1 = 0

Equation 9

Substitution of the Euler equivalent yields:

2 2 (2 + 2 ) 3 3 (3 + 3 ) 1 = 0

Equation 10

After simplification and separation into the real, x component and imaginary, y

components respectively:

2 2 2 + 3 3 3 1 = 0

Equation 11

2 2 2 3 3 3 = 0

Equation 12

30
The simultaneous solution of Equations 11 and 12 gives:

2 2
3 =
3 3 2

Equation 13

1 = 2 2 2 + 3 3 3 = 4

Equation 14

31
3.4.3 Acceleration Analysis

a2, tangential

3
a2 +
R3
R2 a2, normal
2
3
-

2
R1 a4
x

Figure 11 - Acceleration Analysis

Differentiating Equation 3 with respect to time a second time gives an expression

for acceleration:

(2 2 2 + 2 2 22 2 ) (3 3 3 + 2 3 32 3 ) 1 = 0

Equation 15

Substitution of the Euler Identity and simplification yields:

2 2 (2 + 2 ) 2 22 (2 + 2 ) 3 3 (3 + 3 ) + 3 32 (3 + 3 )

1 = 0

Equation 16

Again separating into the real, x, and imaginary, y, components:

2 2 2 2 22 2 + 3 3 3 + 3 32 3 1 = 0

Equation 17

2 2 2 2 22 2 3 3 3 + 3 32 3 = 0

Equation 18

32
Solving Equation 18 for 3 and substituting into Equation 17 to find 1 gives:

2 2 2 2 22 2 + 3 32 3
3 =
3 3

Equation 19

1 = 4 = 2 2 2 2 22 2 3 3 3 + 3 32 3 = 0

Equation 20

33
3.5 Dynamic Force Analysis

Figure 12 below shows the free-body diagrams for a basic fourbar crank-slider

linkage with an external force applied to the piston face, which would be the gas force for

the internal combustion engine.

Figure 12 - Free Body Diagrams for a Crank Slider Mechanism (Norton, 2009)

34
For Link 2, it can be seen that the force and torque balance equations are:

12 + 32 = 2 2

Equation 21

12 + 32 = 2 2

Equation 22

12 + (12 12 12 12 ) + (32 32 32 32 ) = 2 2

Equation 23

For Link 3, the equations are:

43 32 = 3 3

Equation 24

43 32 = 3 3

Equation 25

(43 43 43 43 ) (23 32 23 32 ) = 3 3

Equation 26

For Link 4, the equations are similar, but contain the external force of the gas

pressure on the crown of the piston:

14 43 + = 2 4

Equation 27

14 + 43 = 2 4

Equation 28

(14 14 14 14 ) (34 43 34 43 ) + ( ) = 4 4

Equation 29

35
Since it is known that the piston is in pure translation against the stationary Link

1, it can have no angular acceleration or angular velocity. Because the position vectors in

Equation 29 are all zero, the gas force, FP, acts at the center of mass. Therefore, the

torque equation for Link 4 is zero. Link 4 also has no y component of its linear

acceleration.

We also consider that the only force along the x axis between links 4 and 1 is the

friction force. We know that the friction force can be expressed as f = N, where is the

coefficient of friction, and the force normal to the x velocity in this case is F14y.

Considering the aforementioned:

4 = 0 4 = 0

14 = 14

Equation 30

Equations 27 - 29 simplify into:

14 43 + = 4 4

Equation 31

14 43 + = 0

Equation 32

36
With the given simplifications, we now have eight unknowns (F12x, F12y, F32x,

F32y, F43x, F43y, F14y, and T12), and eight equations (Equations 21-26, 31, and 32) which

can be assembled into the following matrix for solving:

12
1 0 1 0 0 0 0 0
0 1 0 1 0 0 0 0 12
12 12 32 32 0 0 0 1 32
0 0 1 0 1 0 0 0 32

0 0 0 1 0 1 0 0 43
0 0 32 23 43 43 0 0 43
0 0 0 0 1 0 0 14
[ 0 0 0 0 0 1 1 0] [ ]
12

2 2
2 2
2 2
3 3
= 3 3
3 3
4 4
[ ]

Equation 33

Solution of matrix Equation 33 plus Equation 30 will give the complete dynamic

force analysis of the fourbar crank- slider linkage system.

In order to fully understand how the linkage will function and to truly minimize

the inertial forces in the system, all of the forces are of importance. However, for the

scope of this project, the friction force will be omitted and the primary forces of concern

are the forces affecting the base link, or the shaking forces.

37
3.6 Balancing Analysis

Balancing a single rotating mass about a single plane, known as static

balancing, is a fairly straightforward process. It is simply a method of ensuring that all

inertial forces on the system are equal to zero. Figure 13 demonstrates the process and

results of static balancing a complicated shape. The center of mass of the unbalanced link

is determined, and the appropriate counterbalance mass is added at a specific radius and

angle in order to force the center of mass to be coincident with the center of rotation.

Figure 13 - Single Plane Balancing of a Link in Rotation (Norton 2009)

38
The example in Figure 13 is solved by first taking a snapshot of the linkage in

rotation and setting a coordinate system with the origin at the center of rotation of the

object. In order to satisfy the equilibrium equation, = 0, the counterbalance

mass mb needs to be placed so that the product of its mass and position, mbRb, will

counteract the inertial forces of the rest of the system.

Since the only forces acting on the system are the centrifugal forces acting away

from the center of rotation and with the coordinate system defined, resolving the

equilibrium equation into the proper segments for the system gives:

1 1 2 2 2 2 2 = 0

Equation 34

Because is in every term, it can be seen that the speed of rotation doesnt

change the actual balancing process, only the magnitude of the forces. Considering that

m1, m2, R1, and R2 are all known, cancelling the common 2 and solving for mbRb gives:

= 1 1 2 2

Equation 35

Resolving Equation 34 into the x and y components gives:

= 1 1 2 2

Equation 36

= 1 1 2 2

Equation 37

39
With the known values, the angle of the counterweight can be found with:


= ( )

Equation 38

Combining Equation 38 with Equations 36 and 37 gives:

1 1 2 2
= ( )
1 1 2 2

Equation 39

Finally, since the mass of the counterweight and its radius are not important

individually, only the product of the two being of concern, we have the final equation for

static balancing:

2
= ( )2 + ( )

Equation 40

Selection of the individual values of mb and Rb will be the choice of the designer

and will have to consider real world issues such as mass, cost, and packaging constraints.

40
A dynamic balancing is a similar process, but performed on multiple masses

rotating in different planes from one another, longitudinally down the axis of rotation.

The calculation contains the static balancing, but requires an additional step to ensure the

inertial forces in the additional plane, treated as a torque force, are also balanced. The

additional dynamic-balancing wont be addressed in this project, as it is irrelevant to the

chosen goals. But if an engineer were to perform a similar project or to continue this

research, the multiple-plane balancing would need to be addressed, especially when a

longer crankshaft is used to run multiple cylinders.

The balancing of an entire linkage system is far more complicated than the static

balancing or a two-plane balance scenario as it has many dynamic factors to consider,

such as shaking forces, shaking moments, or driving forces, and the optimization of one

parameter will come at the expense of another factor. For this study, it was decided that

for the balancing optimization, the shaking forces would be minimized in the direction of

the linear motion of the piston, or the x direction. That parameter was chosen to show that

with automation, flexibility is bounded only by the designers imagination. The balancing

could be optimized by a combination of multiple parameters, a single parameter, or

however else one sees fit.

As the balancing in this case is a matter of minimizing the shaking forces in a

single direction, there were no extra calculations required besides the already performed

force analysis. The API was designed to complete its balancing once the magnitude of x

direction shaking forces, as previously discussed, was as minimal as possible.

41
4. Initial Modeling & Setup For Study

4.1 Internal Combustion Engine Internals Modeling

For the purpose of this study, all components were designed with an overly

simplistic geometry to showcase the power of the API without getting bogged down with

complex 3D models. These methods can be extrapolated to far more complicated models

and the same type of model alteration, balance calculations, finite element analysis and

motion analysis could all be automated to function in a similar fashion.

Each component of the fourbar crank-slider mechanism had every one of its

parameters, sketches, dimensions, etc. aptly titled for easy identification both from within

the API and manually as shown previously in Figure 6 and in Figure 14 below.

Figure 14 - Connecting Rod Model with Labeled Features

42
The material selected for the default configuration of each of the various

components was AISI 1020 Steel. As previously mentioned, the material can be changed

through the API, but each components default configuration was 1020 steel.

43
Figure 15 Basic Block CAD Model

4.1.1 Block (Figure 15)

The block was modeled merely as a large chunk of metal containing a cylindrical

cutout to allow piston movement and cut in half to allow movement of the fourbar

linkage to be more easily seen. It is clearly in no way representative of an actual engine

block, but is merely a placeholder to show the cylinder wall.

44
Figure 16 Basic Piston CAD Model

4.1.2 Piston (Figure 16)

The piston was modeled as a simple cylinder, with extruded rings to represent the

piston rings, and a cylindrical, through cut to allow the wrist pin to be concentrically

mated to both the piston and connecting rod. The crown face was left flat, as the piston

crown design is a science that far overshadows this projects scope.

45
Figure 17 - Basic Wrist Pin CAD Model

4.1.3 Wrist Pin (Figure 17)

The wrist pin was modeled as a cylinder of the same diameter as the connecting

rod top eyelet inner diameter. It has no weight reduction cuts or circlip grooves or

anything of that nature as it was modeled merely to show the connection of the piston to

the connecting rod.

46
Figure 18 - Initially Balanced Basic Crank CAD Model

4.1.4 Crankshaft (Figure 18)

The crankshaft was modeled with two goals in mind. The first was that the

balance thickness could be easily increased through the API to allow the automated

balancing of the fourbar linkage. The second was to ensure that the diameter of the

cylinder that is offset from the center shaft, known as the crank pin, could be altered

through data input to the Excel sheet. The crank model was initially perfectly balanced

about the center of the primary shaft.

The actual design of the crankshaft may or may not be realistically functional, but

it theoretically functions the same and the methods can be applied to a more functional

and aesthetically pleasing model.

47
Figure 19 - Basic Connecting Rod CAD Model

4.1.5 Connecting Rod (Figure 19)

The connecting rod was designed with a slightly more complicated geometry in

order to show the functionality of the design study set up within the SolidWorks model. It

was intended to have features that are overdesigned to show the drastic changes the

design study can perform. It was also designed to show how one can alter desired

dimensions of the SolidWorks model from inside of Excel using the API. The bottom

eyelet is designed to be altered to match the crankshaft pin diameter.

48
Figure 20 - Assembled Model in Cutaway, Colored View for Clarity

4.2 Assembling the Components

All the components were assembled and mated within a SolidWorks assembly to

ensure that it functions properly as a true fourbar crank-slider, including allowing

complete 360o rotation of the crankshaft without binding or otherwise functioning

improperly.

Again, the emphasis of this project is on the automation of an iterative design

process and its associated tasks, not the design of the components themselves. As such,

the assembly may or may not be fully functional in this configuration as a real life design,

but the methodologies and preparation used are applicable to any similar study.

49
4.3 Motion Simulation Initial Setup

Since the main area of concern was the optimization of the connecting rod, and

therefore its static analysis, of primary interest was the gas force exerted upon the piston

crown, the inertial forces of the linkage, and how they affect the connecting rod. The

motion analysis was designed to function realistically and rotate about the crankshaft

center shaft with the gas force applied to the piston. It ran over the full 720o of motion

that a four stroke internal combustion engine would go through during one cycle (as

shown in Figure 2) which is 0.12 seconds with the arbitrarily chosen constant crankshaft

rotation of 1000 RPM. The motion analysis setup is shown in Figure 21.

50
Figure 21 - Motion Analysis Initial Setup

51
4.4 Excel Calculations vs. SolidWorks Motion Analysis

In order to prove that the SolidWorks model matched a real world scenario, the

graphs of all relevant motion of both the piston and crankshaft ends of the connecting rod

were graphed within SolidWorks and compared to calculations from Excel. For all xy

graphs, the x direction data is colored in red with the y direction data colored in blue on

both the SolidWorks and the Excel graphs. For each graph, 0 degrees is considered to be

when the piston is at its furthest point from the center of the crankshafts rotation, also

known as top dead center. The boundaries of all graphs were also made to match in

order to easily compare the corresponding data from each software package.

Once graphed, all graphs were approached analytically to ensure that they made

sense and that the graphs from both SolidWorks and Excel did indeed line up.

52
4.4.1 Piston xy Displacement Graphs

The piston graphs showed a smooth reciprocating motion along the x axis as

would be expected from a crank-slider with a constant drive speed. It also showed no

motion perpendicular to the piston, which is again what would be expected from a piston

constrained within an engine block.

325

260
Linear Displacement (mm)

195

130

65

-65
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 22 - Piston xy Displacement from SolidWorks

325

260
Displacement (mm)

195

130

65

-65
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 23 - Piston xy Displacement from Excel

53
4.4.2 Piston Displacement Magnitude Graphs

Due to the definition of the piston displacement being entirely in the positive x

direction with no influence from the y direction, the magnitude graph was identical to the

x displacement graph as can be seen.

325
Displacement Magnitude (mm)

260

195

130

65

0
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 24 - Piston Displacement Magnitude from SolidWorks

325

260
Displacement (mm)

195

130

65

0
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 25 - Piston Displacement Magnitude from Excel

54
4.4.3 Piston xy Velocity Graphs

The piston velocity graphs were not as easily visualized prior to graphing as some

of the others were, but made sense once seen. The momentary pause of the pistons x

motion, the reciprocating motion with a slight tilt to the graph, and zero y direction

displacement dictating zero y velocity were all in-line with expectations.

9000

6000
Linear Velocity (mm/sec)

3000

-3000

-6000

-9000
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 26 - Piston xy Velocity from SolidWorks

9000

6000
Velocity (mm/s)

3000

-3000

-6000

-9000
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 27 - Piston xy Velocity from Excel

55
4.4.4 Piston Velocity Magnitude Graphs

The slight tilt to the graph shape could be more easily seen in the velocity

magnitude graph. Since again there are zero y values for this graph, it was an absolute

value graph of the xy velocity.

9000
Velocity Magnitude (mm/sec)

7500

6000

4500

3000

1500

0
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 28 - Piston Velocity Magnitude from SolidWorks

9000

7500
Velocity (mm/s)

6000

4500

3000

1500

0
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 29 - Piston Velocity Magnitude from Excel

56
4.4.5 Piston xy Acceleration Graphs

The piston acceleration graph was the most unexpected in shape although the

large negative acceleration at top dead center, a lower acceleration magnitude near

bottom center, and zero y acceleration all were to be expected from a crank-slider of this

geometry.

6.5e+05
Linear Acceleration (mm/sec**2)

4.2e+05

1.9e+05

-4.4e+04

-2.8e+05

-5.1e+05

-7.4e+05

-9.7e+05

-1.2e+06
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 30 - Piston xy Acceleration from SolidWorks

6.4E+05
4.1E+05
Acceleration (mm/s^2)

1.8E+05
-5.0E+04
-2.8E+05
-5.1E+05
-7.4E+05
-9.7E+05
-1.2E+06
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 31 - Piston xy Acceleration from Excel

57
4.4.6 Piston Acceleration Magnitude Graphs

Again this graph was just the absolute value of the xy graph but showed more

clearly the large difference in acceleration between top and bottom centers.

1250000

1000000

750000

500000

250000

0
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 32 - Piston Acceleration Magnitude from SolidWorks

1250000
Acceleration (mm/s^2)

1000000

750000

500000

250000

0
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 33 - Piston Acceleration Magnitude from Excel

58
4.4.7 Crank Pin xy Displacement Graph

The graph showing the displacement of the crank was exactly as would be

expected from a point rotating at a constant angular velocity with smooth sine waves for

the xy linear displacements.

90

60
Linear Displacement (mm)

30

-30

-60

-90
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 34 - Crank xy Displacement from SolidWorks

90

60
Displacement (mm)

30

-30

-60

-90
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 35 - Crank xy Displacement from Excel

59
4.4.8 Crank Pin xy Velocity Graphs

The crank xy velocity graph was intuitively obvious: smooth sine waves for xy

velocity with identical frequencies to the displacement graphs but increased amplitude.

9000
Linear Velocity1 (mm/sec)

6000

3000

-3000

-6000

-9000
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 36 - Crank xy Velocity from SolidWorks

9000

6000
Velocity (mm/s)

3000

-3000

-6000

-9000
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 37 - Crank xy Velocity from Excel

60
4.4.9 Crank Pin xy Acceleration Graphs

As was the case with the previous graphs marking its motion, the xy acceleration

graph of the crank pin was easily visualized prior to the actual graphing. Smooth waves

of identical frequency but increased amplitude as compared to the previous graphs.

900000

600000

300000

-300000

-600000

-900000
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 38 - Crank xy Acceleration from SolidWorks

900000
Acceleration (mm/s^2)

600000

300000

-300000

-600000

-900000
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 39 - Crank xy Acceleration from Excel

61
4.4.10 Crank Pin Displacement, Velocity, and Acceleration Magnitude Graphs

The displacement, velocity, and acceleration magnitude graphs for the crank pin

were predictably unexciting as was expected from a constant radius point in pure rotation.

The magnitude of each graphs were simply a horizontal line of an appropriate value for

the respective scenario.

90
Displacement Magnitude(mm)

85

80

75

70
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 40 - Crank Displacement Magnitude from SolidWorks


8500
Velocity Magnitude (mm/sec)

8400

8300

8200

8100

8000
0 45 90 135 180 225 270 315 360 405 450 495 540 585 630 675 720
Degrees

Figure 41 - Crank Velocity Magnitude from SolidWorks

Figure 42 - Crank Acceleration Magnitude from SolidWorks

62
As seen in the preceding graphs, the motion analysis from SolidWorks and Excel

match up perfectly in each pair, granting validity to the SolidWorks motion analysis data

and its further usage in the stress analysis.

63
4.5 Motion Study Maximum Stress Determination

The gas force felt upon the piston crown was imported from a Ricardo Wave

model of an engine similar in size and displacement, and was imported into SolidWorks

motion analysis as a data point array (see Figure 43) as a .csv file of gas pressure force in

newtons vs time in seconds. (See Appendix S for the complete Excel data imported to

SolidWorks).

Figure 43 - Data Point Array, Force vs Time, imported into SolidWorks

64
Once the motion simulation was setup, it needed to be determined at what point

the connecting rod was under maximum stress in order to properly find the highest loads

the system will see. This proved to be more of a daunting task than originally anticipated

and required the most computing power and time of all other tasks performed, so it was

broken into smaller steps. To get a general idea of where the stresses were highest,

stresses at every 8o of crankshaft rotation were analyzed to keep computation time low.

SolidWorks calculates its motion analysis values in individual snapshots. How often it

takes these snapshots is determined by telling the motion analysis how many frames

per second to analyze. To get the number of frames per second necessary for the selected

degree increment, Equation 41 was used with the 750 frames/second result entered into

the simulation properties afterwards.

1 1
1000 360 = 750
8 60

Equation 41

65
With the information entered up to this point, a thorough kinetic analysis can be

run and the data gathered, graphed, or used in whatever capacity one might use linkage

kinetic data (See Section 4.4 for the SolidWorks graphs). However, as previously stated,

the primary goal was a stress analysis of the connecting rod and not the kinetic

breakdown, therefore the motion analysis requires an additional simulation setup to

perform a proper FEA stress analysis. The setup only required the proper component (the

connecting rod, in this case) to be selected, between what time to perform the analysis,

and a mesh size be selected in order to be ready, as shown in Figure 44.

Figure 44 - Motion Analysis Simulation Setup

66
With the motion study simulation setup added, the analysis was run and the

maximum Von Mises stresses out of all scenarios were found within the connecting rod

and graphed as shown in Figure 45. Being that the specific frame at which the connecting

rod sees its maximum stresses was the primary concern, an additional step had to be

taken.

Figure 45 - Connecting Rod Von Mises Stresss Graph

67
From this point, the Import Motion Loads command from within SolidWorks was

used to export the data from each scenario to the more extensive FEA simulation. As can

be seen in Figure 46, the 91 scenarios created in the motion analysis simulation were

exported to the model of the connecting rod.

Figure 46 - Importing Motion Loads


After importing the motion loads, upon opening the connecting rod model, a

newly created design study was created. After running that study, a graph could be

created using the Define Design History Graph function that showed the maximum Von

Mises stresses for each scenario in an easy to read graph. As can be seen in Figure 47, the

maximum stresses for this system would be found somewhere within the first 7 or so

frames, correlating to the first ~55 degrees of rotation. With that knowledge, another

motion study simulation was set up to analyze only approximately the first 50 degrees of

rotation. The importing motion loads and history graph creation steps were repeated,

generating the data shown in Figure 48.

68
Figure 47 - 1000 RPM, 8 Degree Increment Von Mises Stress History Graph. 720o Total

Maximum Value

Figure 48 - 1000 RPM, 1 Degree Increment Von Mises History Graph. 49o Total Span

69
It was assumed that the gas force would be a much more substantial factor in the

stress analysis than the inertial forces would be. In order to validate that assumption,

motion study simulations were created at 10,000 RPM with the frames per second set to

capture data at the same degree increments as the 1,000 RPM studies. Figure 479 details

the eight degree snapshots over the full 720o degrees, while Figure 50 shows the first few

degrees of rotation at a one degree increment.

Figure 49 - 10000 RPM, 8 Degree Increment Von Mises Stress History Graph. 720o
Total Span

Figure 50 - 10000 RPM, 1 Degree Increment Von Mises History Graph. 49o Total Span

70
As Figures 47-50 show, the gas force did, in fact, have a much larger impact on

the overall stresses than the inertial forces do. There is certainly a noticeable increase in

the stresses with the 10,000 RPM study, especially where the gas force is very low, but

the peak stress was similar in both cases, even with the irregularities in the 10,000 RPM

case.

Having run a thorough analysis of the connecting rod motion and forces, it was

hypothesized with a degree of certainty that the maximum stresses would be seen when

the crankshaft is at roughly a 16 degree angle. With that information, the instructions

were written on the Excel sheet for which frame to import the motion loads from and the

setup involving the motion analysis section was complete. The motion analysis was left

in a state of 6000 Frames per Minute, 1000 RPM, with the gas force placed upon the

piston crown, and the simulation was setup to capture the necessary data.

4.6 Finite Element Analysis Setup

Once the individual motion load scenario has been imported into the connecting

rod model, the model contains an FEA analysis with the loads, fixtures, and anything else

necessary to run the FEA already in place and is ready to be run. As such, no additional

setup is required by the user and the study can be initialized through the API macro

button on the Excel sheet.

71
4.7 Design Study Setup

The design study was desired to produce a lightweight connecting rod while still

maintaining a target factor of safety. As with most other aspects of this project, the

simplicity of the design study was intended to highlight the functionality of the steps used

in this workflow and make apparent that similar processes could be used for more

complex designs.

With the simplicity goal in mind, the design study was arranged to alter only a

couple parameters. The inner diameter of the bottom eyelet was already altered through

the Excel sheet so it seemed fitting to change the outer diameter later in the same study;

so the bottom eyelet outer diameter was the first variable chosen. The weight relief cut

down the center of the connecting rod was the second parameter chosen for optimization.

The depth of the cut was set to be altered from a minimum value on each side to

completely cut through the connecting rod.

Figure 51 shows the setup for the design optimization study. The Relief Depth

and Bottom Outer Diameter were both altered from a specified minimum and maximum

value with a step size all declared. The variables were altered in a number of different

scenarios ( in this instance 35 ) with the intent of minimizing mass, but the configuration

must still have a maximum stress constraint. The Maximum Von Mises Stress value must

be entered by the user based upon the desired factor of safety and the material chosen for

the connecting rod; the Excel sheet provides the numbers to enter into the design study.

The user merely has to enter the number provided by Excel into the proper cell, ensure

the Von Mises stress condition is pointing to the proper FEA scenario and hit Run.

72
Figure 51 - Design Optimization Study Setup

73
5. Running the Simulation

5.1 Initial Conditions

The Excel sheet contains a small table as shown in Table 1 that includes all the

instructions the user needs to follow in order to properly run the macro. The Step 1, Step

2, Step 4, and Step 6 cells are all virtual buttons that could be pressed to initiate the

applicable macro for that step. The 324 value within Step 5 was automated to be

updated based upon the yield strength for the material that the user selected for the

connecting rod divided by the aforementioned Factor of Safety. The 324 was the

automated result of the titanium selected for the connecting rod divided by 2.5.

Input Setup Fill Out Model Names & File Paths, Fill Blue Cells

Step 1 Open parts, edit materials, initial crank overbalancing

Step 2 Run Motion Analysis

Step 3 Manually Import Motion Loads at Frame 16

Step 4 Mesh Models and Run Simulations

Enter the value 324 in the cell for Von Mises constraint,
Step 5
point Design Study to imported FEA & run study

Step 6 Re-run Simulation to pull optimized data

Table 1 - Macro Instructions & Macro Initialization Table

74
To begin the automation process, the Excel sheet contains a table which must

define the file paths for each component of the assembly. The paths have to be input

correctly in order for the API to call, alter, and read the appropriate models as shown in

Table 2.

File Path to Parts Folder: C:\Thesis Files\Components

Name of Piston Model: Piston Final.sldprt

Name of Connecting Rod Model: Conrod Final.sldprt

Name of Crankshaft Model: Crankshaft Final.sldprt

Name of Block Model: Block.sldprt

Name of Assembly: Engine Final.sldasm

Table 2- Sample Component File Paths

75
Table 3 shows the rest of the Excel sheet input data used for the purpose of this

report upon opening of the Excel file. The cells that require user input are highlighted in

blue. The remaining, non-blue cells contain data that will be output by the macro or other

subfunctions. The data shown in Table 3 is the sample data used to demonstrate the

programmings functionality throughout the course of this project.

INPUT DATA
Component Crank Pin Diam. 0.045 m
Description Block Reference -
Part No. 3003 -

Block Material Cast Iron -


Yield Strength 275.742 MPa
Initial Mass kg
Cost / kg $0.00 usd
Description Crank Rev3 -
Part No. 111 -

Crank Material 4340 Steel -


Yield Strength 470 MPa
Initial Mass kg
Cost / kg $0.00 usd
Description Piston Basic -
Part No. 933* -

Piston Material 6061 Aluminum -


Yield Strength 275 MPa
Initial Mass kg
Cost / kg $0.00 usd
Description Connecting Rod V4 -
Part No. 222334 -

Connecting Rod Material Titanium -


Yield Strength 810 MPa
Initial Mass kg
Cost / kg $0.00 usd

Table 3 - Excel Sheet Input

76
The current layout first asks the designer to enter the diameter of the crank pin,

where the crankshaft connects to the connecting rod. This determines both the diameter

of the crank pin and the diameter of the lower eyelet of the connecting rod, as they mate

together at those points.

The Excel input sheet also asks for the same 3 parameters to be specified for the

piston, crankshaft, connecting rod, and engine block. The first parameter is the

description of the part. This input is used to populate the Bill of Materials table that is

located within the assembly (see Section 5.2.5). The second parameter is the part number,

which also populates the Bill of Materials table. The third input parameter required by the

user is the actual material that the component is to be made from. For this exercise, the

material was chosen from a predetermined list that was selected from a drop-down menu

as shown in Figure 52.

Figure 52 - Material Selection Drop-Down

Some of the material selections may not be feasible for a certain component, but

again, this study is just designed to show the power and versatility of the API with only a

small consideration for a practical connecting rod design. Each material has a distinct

color and weight associated with it within SolidWorks so it was easy to see Excel

changing the material properties of each component through the API.

77
With the selection of the material, the Yield Strength and Cost/kg was

automatically updated through a function to reflect the estimated cost and strength of the

selected material. The Initial Mass section of the input was populated once the initial

balancing macro was run.

5.2 Step 1 - Model Edit and Primary Balancing

With the initial paths and input properly set, the macro was then run to open the

models, edit the geometry and material properties, and run the initial overbalancing of the

crankshaft. For the complete code, see Appendix A.

5.2.1 Data Collection

The API begins by storing all relevant data entered into the Excel table into aptly

titled variables for later usage. It also pulls the location of the model files and stores them

into separate variables for each component. In the documented setup, for example (See

Table 1), it stores the file path for the piston, C:\Thesis Files\Components\Piston

Final.sldprt in a variable entitled pistonPath.

78
5.2.2 Model Opening and Mass Property Collection

The macro then opens up the assembly and reads the mass properties from the

model. SolidWorks returns the mass properties of a model in an array, with the properties

being stored with the array index as shown in Table 4. Depending upon the model and the

variables needed for each one, the mass properties are assigned to more identifiable

variables for later use.

GetMassProperties(i)
0 Center of Mass X
1 Center of Mass Y
2 Center of Mass Z
3 Volume
4 Area
5 Mass
6 Moment XX
7 Moment YY
8 Moment ZZ
9 Moment XY
10 Moment ZX
11 Moment YZ
12 Accuracy

Table 4 - SolidWorks Mass Properties Array Key

It then continues to open up each model individually and alter the models

material to match what was selected on the Excel sheet and pulls the mass properties of

each model. At the connecting rod and crank models it alters the dimensions of the

bottom eyelet and crank pin, respectively, to match the value entered on the Excel sheet.

After the API has run through every component of the assembly, all of the models are

opened within SolidWorks, the material of each component has been altered to match the

79
Excel data, all the necessary mass and length properties of the models are stored in

relevant variables, and the entire assembly has been rebuilt to match the updated models.

5.2.3 Iterative Balancing of Crankshaft

The iterative balancing of the crankshaft was the bulk of the programming and

was a series of calculations that takes an enormous amount of time to repeat for the full

360o of rotation for a single iteration of the crankshaft model, let alone the entire

sequence performed for 2mm increments of the crankshaft balance thickness up to a

maximum overbalanced condition. The full 720o of rotation that a four stroke engine goes

through during one cycle is of no consequence to the balancing sequence, as one cannot

make any changes to a systems geometry that will balance external forces. For that

reason, any external forces that act upon the system (in this case, the gas force) do not

matter so only a 360o rotation is analyzed.

The process begins by setting up some initial conditions that the loop needs to

operate properly then pulls the current center of mass, the mass, and the mass moment of

inertia of the crank for the following kinematic equations. It then sends all necessary data

to a separate function to perform the entire kinetic analysis of the linkage and returns the

shaking forces felt by the system in both the x and y directions in array form to be

graphed. It also returns the maximum shaking force in the x direction in a separate

variable for purposes of loop termination.

80
Shaking Forces (N)
2500

2000

1500

1000
Shaking Forces Along Y Axis

500

-500

-1000

-1500

-2000

-2500
-4000 -3000 -2000 -1000 0 1000 2000 3000 4000
Shaking Forces Along X Axis

Figure 53 - Shaking Forces: Iterations

Upon completion of the first kinetic analysis iteration, a graph is created of the

shaking forces felt by the system in a full 360o rotation. Once the graph is done, it returns

to the beginning of the loop and increases the thickness of the crankshafts

counterbalance by a predetermined amount (for this study, an increment of 2mm was

used), pulls the new mass data from the altered crankshaft model, and reruns the entire

kinetic analysis again with the new data. With another kinetic analysis performed, it

returns the new data in an array and graphs it on the previously existing chart for

comparison. Figure 53 shows the chart that illustrates the shaking forces for each

crankshaft iteration.

81
Shaking Forces (N): Most Balanced
100

80

60
Shaking Forces Along Y Axis

40

20

-20

-40

-60

-80

-100
-3000 -2000 -1000 0 1000 2000 3000
Shaking Forces Along X Axis

Figure 54 - Shaking Forces: Most Balanced Condition

The macro then continues to step through the balancing process incrementally and

repeat the aforementioned steps for every instance. Once it gets to the balance thickness

where the shaking forces in the y-direction were as minimal as possible, it creates a new

graph, in addition to adding the data to the existing graph, and labels it accordingly as

shown in Figure 54.

82
Shaking Forces(N) - Overbalanced
2500

2000

1500
Shaking Forces Along Y Axis

1000

500

0
0 200 400 600 800 1000 1200 1400 1600 1800 2000
-500

-1000

-1500

-2000

-2500
Shaking Forces Along Y Axis

Figure 55 - Shaking Forces: Overbalanced Condition

After the most-balanced condition, the macro continues to over-balance the

crankshaft, in order to minimize the forces in the x-direction. It performs a few more

iterations until it gets to a point where the shaking forces increase and inflates the

shaking forces graph. At the inflated state, the counterbalance increase loop terminates,

and the macro graphs the previous iteration of the balance thickness, or the most over-

balanced case as shown in Figure 55. It then also edits the crankshaft model to have the

counterbalance thickness match the value from the over-balanced state, saves the model,

and pulls the optimized mass properties.

Figure 68 in Section 6.2 shows a more concise comparison of the various

balancing graphs.

83
5.2.4 Data Output

To finish off the initial macro, the program then outputs all relevant data to the

Excel sheet such as initial mass, balanced mass, overbalanced mass and the relative

counterbalance thickness, center of mass of parts, and the basic cost of each component.

With the initial macro completed, the Input Table now looks like Table 5 and more relevant

data has been output to the additional Output Table as seen in Table 6.

INPUT DATA
PRIMARY Geometry Crank Pin Diam. 0.045 m
Description Block Reference -
Part No. 3003 -
Block Material Cast Iron -
Yield Strength 275.742 MPa
Initial Mass 124.131 kg
Cost $124.13 usd
Description Crank Rev3 -
Part No. 111 -
Crank Material 4340 Steel -
Yield Strength 470 MPa
Initial Mass 15.460 kg
PART
Cost $27.83 usd
PROPERTIES Description Piston Basic -
Part No. 933* -
Piston Material 6061 Aluminum -
Yield Strength 275 MPa
Initial Mass 1.801 kg
Cost $5.31 usd
Description Connecting rod V4 -
Part No. 222334 -
Connecting
Material Titanium -
Rod Yield Strength 810 MPa
Initial Mass 1.918 kg
Cost $47.94 usd

Table 5 - Input Table After Running First Macro

84
OUTPUT DATA
OBJECTIVE 1: Initial Materials and Balanced Conrod 154.096 kg
After Shaking Force Reduction & Mat 143.223 kg
Assembly Mass at
After Conrod Optimization
Change -
Various Stages
Percent Change -
OBJECTIVE 2: Connecting Base Configuration -

Rod After Optimization -


Minimum FOS
OBJECTIVE 3: Connecting Base Configuration MPa

Rod After Optimization MPa


Maximum
OBJECTIVE 4: Balance Balanced 10.92 mm
Stresses Von Mises
Overbalanced 32.92 mm
Overbalancing Thickness
Pct Change 301% -
Mass 15.083 kg
OBJECTIVE 5:
Crank CG (from shaft center) -0.0194 m
Return Jzz 0.0669 kg*m2
Optimized Mass Connecting Mass kg

Properties CG (from crank pin m


Rod
Jzz kg*m2
center)
Initial $ 27.83 usd
Crank
Edited/Overbalanced $ 27.15 usd
Connecting Initial $ 47.94 usd

OBJECTIVE 6: Rod Edited/Optimized $ 0.00 usd


Piston Edited $ 5.31 usd
Material Cost
Block Edited $ 124.13 usd
Initial $ 205.21 usd
TOTAL Edited/Optimized $ 156.59 usd
Pct Change 26.39% -

Table 6 - Output Table After Initial Macro

85
5.2.5 Bill of Materials

The first macro then pulls the part number, part name, part description, material

selection, cost, and weight of each component as entered or calculated in the Excel sheet

and enters it into the Bill of Materials table within the assembly model. The Bill of

Materials, as previously stated, was just another way of demonstrating the two-way

communication the API provides. Figure 56 shows the Bill of Materials as it was

populated by the information entered into Excel by the API.

Figure 56- Bill of Materials from SolidWorks Assembly

86
5.2.6 Model Alteration Comparison

Figures 57-60 are a brief side-by-side comparison of the changes made by the API

after the initial macro is done. Most changes are fairly uneventful, as they are merely a

material change, but the change in the size of the crank pin, connecting rod bottom eyelet,

and crankshaft balance thickness are apparent with the comparisons.

Figure 57 - Engine Block Side by Side Comparison

Figure 58 - Piston Side By Side Comparison

87
Figure 59 - Connecting Rod Side by Side Comparison

Figure 60 - Crankshaft Side by Side Comparison

88
5.3 Step 2 - Run Motion Analysis

After the initial macro has finished running, the second button the user is asked to

press runs the motion analysis that was set up earlier. It rebuilds the assembly to ensure

that it is up to date with the previous component material changes, crankshaft balancing,

crankpin / connecting rod eyelet size change and then calculates the motion study results.

With the motion analysis having been fully computed, SolidWorks returns a graph of the

maximum stresses encountered as shown in Figure 61.

Figure 61 - Motion Analysis Results

89
5.4 Step 3 - Import Loads from Motion Study to Finite Element Analysis

The determination and importation of the maximum stress felt by the connecting

rod into the finite element analysis was desired to be automated, but after a good amount

of research it was determined that the functionality has yet to be implemented into the

API at the time of this writing. As such, it had to be done manually.

After the lengthy maximum stress frame process detailed previously in Section

4.5, it was discovered that the connecting rod was at its maximum stress when the

crankshaft is at 16o of rotation, which corresponds to the 16th frame of the motion study

in the current setup. With that being the case, the Excel sheet instructs the user to import

the motion loads for the 16th frame. With the motion loads imported, the design study for

the connecting rod is now defined as shown in Figure 62. As shown, the design study

contains all the relevant forces, constraints, and all other variables necessary to

implement a proper finite element analysis and as such can be activated with the click of

a button, as will be demonstrated in the next section.

90
Figure 62 - Connecting Rod Model with Imported Motion Load Design Study

91
5.5 Step 4 - Running the FEA

To begin the automated FEA portion of the macro, the macro initially pulls the

yield strength of the material designated for the connecting rod as specified by the

MatYield subfunction that was created and can be viewed in Appendix F. It then runs the

FEA study that was created by the previous importation of the motion loads and pulls the

maximum stress found from the FEA model, storing it in a variable within the API. With

the maximum stress calculated and being careful to ensure the proper units are used, the

API can then easily output the factor of safety and the maximum stress value to the Excel

sheet. Figure 63 below shows the FEA study fully completed and returning the stress

analysis for the default configuration of the connecting rod.

Figure 63 Connecting Rod Finite Element Analysis Results

92
5.6 Step 5 - Optimization through Design Study

As was previously shown in the design study variable view table of Figure 51, the

intent of the optimization was to alter the relief depth and bottom eyelet outer diameter in

order to minimize mass while still maintaining a target factor of safety.

As can be seen in Figure 64, the first ten scenarios of the design study failed to

meet the stress criteria and thus, were highlighted in red; the outer diameter proved to be

too small. Figure 64 also shows the scenario in which the component mass was the

smallest value, but since it did not meet the constraint previously established, it was not

considered the optimal configuration.

Figure 64 Connecting Rod Design Optimization Minimal Mass Configuration

93
Figure 65 shows the other end of the mass spectrum for the selected set of

scenarios. Scenario 31 exceeded the desired stress criteria, but since the mass was higher

than other arrangements, this scenario was also not chosen by SolidWorks as the optimal

configuration.

Figure 65 - Connecting Rod Design Optimization Maximum Mass Configuration

94
Figure 66 shows the scenario in which the mass was minimized but also met the

stress requirement as found by the FEA. Thus SolidWorks returned Scenario 15 as the

optimal configuration for these requirements.

Figure 66 Connecting Rod Design Optimization Optimal Configuration

95
5.7 Step 6 - Pull Optimized Data

With the connecting rod mass optimized, the final button reruns the FEA and pulls

all the mass data for the updated model configuration. With step 6 completed the final

Output Data table was filled as shown in Table 7

96
OUTPUT DATA

Initial Materials and Balanced Conrod 152.811 kg


OBJECTIVE 1:
Assembly Mass After Shaking Force Reduction & Mat Change 143.223 kg
at Various After Conrod Optimization 141.073 kg
Stages
Percent Change 7.68%
OBJECTIVE 2: Base Configuration 5.783 -
Minimum FOS Connecting Rod
Validation After Optimization 2.650 -
OBJECTIVE 3: Base Configuration 140.064 MPa
Connecting Rod
Maximum
Von Mises After Optimization 305.595 MPa
Stresses
Balanced 10.92 mm
OBJECTIVE 4: Balance
Overbalanced 32.92 mm
Overbalancing Thickness
Pct Change 301% -

Mass 15.083 kg

Crank CG (from shaft center) -0.0194 m


OBJECTIVE 5:
Return Jzz 0.0669 kg*m2
Optimized Mass 0.900 kg
Mass Properties
Connecting Rod CG (from crank pin center) 0.103 m

Jzz 0.0081 kg*m2

Initial $ 27.83 usd


Crank
Optimized $ 27.15 usd

Initial $ 47.94 usd


Connecting Rod
Optimized $ 22.52 usd
OBJECTIVE 6:
Piston Edited $ 5.31 usd
Material Cost
Block Edited $ 124.13 usd

Initial $ 205.21 usd

TOTAL Optimized $ 179.11 usd

Pct Change 12.82% -

Table 7 Output Data table after completion of Step 6

97
6. Conclusions

6.1 Scope & Limitations

For this particular setup and programming structure, the automation was limited

to predefined parameters and dimensions within the models that were called by their

specific names. The material selection for components was also limited to six preselected

materials for simplicity.

Further expansion of the study incorporating PowerPoint and Matlab usage were

considered, but were omitted as they were deemed unnecessary, especially since Matlab

offered no additional functionality that was not already accessible via Excel and the VBA

environment. Fatigue analysis was also considered but was omitted primarily due to no

API support at the time of this writing. For a design intended for production a fatigue

analysis would be mandatory, but as the primary focus of this study was integrating

automation, the lack of automations support deterred its usage.

6.2 Overview

Through the course of this study, it was shown that automation can greatly speed

up repetitive design tasks and allow the user a great deal of flexibility in analyzing and

altering complicated CAD models and assemblies. Although this project was fairly

simple and straightforward in nature, it serves to explore the possibilities of how

powerful a tool the API can truly become.

98
In Section 1, the basic elements that need to be understood in order to

comprehend, let alone begin designing, an internal combustion engine fourbar crank-

slider mechanism were introduced to allow the reader to better understand the ideas

incorporated within the project. It also discussed the educational and software tools that

were necessary to perform the study, even though the breadth of each class, book, thesis,

and program was merely grazed.

Section 2 discussed the goals and ideas that were used as the foundation for this

project. It discussed the thought processes behind the simplistic geometry of each

component, how the balancing and simulation would be used, and the programming logic

that would perform the bulk of the tasks.

Section 3 detailed the equations that were used to perform the kinetic analysis of

the linkage and allowed the shaking forces felt by the system to be minimized or

otherwise altered. The ideas behind shaking force minimization and balancing were also

discussed and shown how they applied to the project.

99
Within Section 4, the CAD models were detailed, dimensioned, and assembled

into a full fourbar system that performed as realistically as possible. It was shown that

with proper labeling, organization, and logic, accessing and altering various dimensions,

parameters, or features of a CAD model within SolidWorks is easily achieved. Within

Section 4, results from the kinematic equations were compared to the SolidWorks data

and found to be identical, thus proving the methods used and validating both forms of

analysis. The steps in producing a usable motion analysis, finite element analysis, and

optimizing design study were also detailed. Minus the determination of the maximum

stress frame, most elements on the SolidWorks side of the setup were completed with

minimal effort. The maximum stress frame, however, required many steps and a great

deal of time spent on waiting for computations to be completed. But once the initial setup

was performed, very little is needed to be done for future design studies.

The specifics involved in running the actual programming were contained in

Section 5. The functionality of the macros was discussed at length within. The discussion

detailed how a user would go about running the current setup, how it would behave, and

what the results would be. The graphing of the kinematic analysis results for each

iteration of the crankshaft balance thickness would be a very time consuming process if

done by hand or even with a moderate amount of setup in an Excel spreadsheet. With the

aid of the API programming, the full analysis data is output in moments. The amount of

data accessible by a macro is vast and for the scope of this project, only the shaking

forces were desired.

100
The ease with which one can alter SolidWorks models from within the Excel

environment with the appropriate programming and preparation is quite impressive. With

the simple filling of a cell within the Excel spreadsheet and the click of a button, the 3D

model within an entirely separate program was altered as shown in Figure 67. It could

have been used to alter any and every dimension the programmer desired on the

connecting rod or any other model.

Figure 67 Alterations to Connecting Rod Model Performed through Automation

101
As was previously shown, the balancing segment of the macro turned out to be an

impressive tool, both visually and functionally. Seeing the SolidWorks model of the

crankshaft be altered, then the shaking forces be graphed based upon the data pulled from

the SolidWorks model was interesting and informative to witness. It also served to be the

most compelling example of the usefulness of using the API to intertwine multiple

programs for one goal.

Figure 68 below shows the 3 most important iterations of the automated

balancing procedure all on the same graph for easier comparison. The initial condition

shows a large span of shaking forces in both directions. As the balance thickness

increases, the shaking forces decrease in all directions until it reaches a minimum value

shown by the balanced condition below. Upon further increase to the balance thickness,

the forces decreased along the x axis but inversely increased along the y axis up to the

overbalanced condition. Further balancing only increased the shaking forces in both

directions.

102
Shaking Force Data (N): Overview
2400
2000
1600
1200
Shaking Forces Along Y Axis

800
400
0 Initial Condition
-400 Balanced Condition

-800 Overbalanced Condition

-1200
-1600
-2000
-2400
-4000-3000-2000-1000 0 1000 2000 3000 4000 5000
Shaking Forces Along X Axis

Figure 68 Automated Balancing Shaking Force Graph Comparison

The balancing automation clearly shows how necessary balancing is to the

functionality & health of a linkage. Without any attention to balancing, the shaking of the

system would make its usage far more limited.

103
With the balancing performed, the model updated to reflect the changes, and the

motion study calculated and exported, the FEA analysis is far more accurate than would

be possible through alternative methods. The loading and fixturing performed by the

Import Motion Loads tool within the motion study also saves work for the designer and

eliminates additional human error. The entire process of a motion analysis, importing

loads, running simulations, running the design study, and pulling data was all performed

with the one-click running of three macros and a few manual mouse clicks and data entry.

With just those few steps, the connecting rod model was altered from the default

configuration to the optimized model as shown in Figure 69.

Figure 69 Initially Edited Connecting Rod Model vs Optimized Configuration

104
With the optimization process, the mass of the connecting rod was reduced by

50%. If a similar study were to be performed on each component of the assembly, the

designer could still theoretically maintain the desired integrity throughout the assembly

but substantially reduce the overall mass. As it stands with even these small changes, the

entire assembly mass was reduced by nearly 8%. Of course there are far more variables

that must be considered for such a system including manufacturing cost, thermal and

fluid elements, fatigue stresses, raw material availability, and so forth, but the feasibility

of each aspect can be determined by the designer and the macro altered to suit any

number of needs.

105
6.3 Future Considerations

The possibilities of work of this nature are truly endless as the only limitations

existing are those set by designer creativity. If this project were to be continued by myself

or another party, there are many avenues that could be pursued in order to expand the

current limitations. An attempt to automate every step that is currently only possible

through manual alteration would be a prudent first move. With a proper SolidWorks

license, it is possible to work with the company that sold the license to add additional

functionality to the existing API.

A thorough fatigue analysis would also be a useful tool for a system that

undergoes repetitive motion, such as the internal combustion engine, if real world

production were the intent. The fatigue aspects of design and finite element analysis were

initially considered, but as there was no way to access any element of it through the API,

it was omitted as it added no real contribution to the intended goals of this study.

Another useful tool that should be built in to the programming, especially if it

were to be distributed to other individuals, would be error checking. Of course this adds

no additional functionality and wasnt programmed in, but it would be invaluable to

allow the API to tell users what they were doing wrong if a failure occurred at any point

during the automation process.

106
The possibility of altering every parameter and dimension of every model through

the Excel interface was an idea that was considered and would be an interesting

challenge. Creation of a dropdown menu that allowed the user to select the component

that then populated an array of cells with the names of each parameter, thoroughly error

checked all data to ensure feasibility, and built the model from the ground up using purely

Excel data would be a fascinating project.

A project of this nature could easily be continued, expanded, and improved far

beyond the scratching of the surface that was performed here. If the methods and

practices introduced here were fully utilized to perform analyses and alterations of well-

crafted CAD models and assemblies, optimized models could be manufactured with an

unprecedented level of confidence in the dependability and sustainability of the finished

product.

107
References

Norton, Robert L. (2009). Kinematics and Dynamics of Machinery. New York, New

York: McGraw-Hill

Norton, Robert L. (2011). Machine Design, an Integrated Approach. Upper Saddle River,

New Jersey: Pearson Education, Inc.

1
[1930 Ford Model A Hot Rod Engine]. Retrieved August 20, 2012 from

http://thehotrods.net/wp-content/uploads/2010/02/02.02.10-1930-ford-model-a-hot-rod-

engine.jpg

2
[Four Stroke Cycle] Retrieved July 6, 2012 from

http://encyclozine.com/Science/Physics/Thermodynamics/tpecp55.gif

3
[Internal Combustion Engine] Retrieved May 13, 2012 from

http://www.substech.com/dokuwiki/lib/exe/fetch.php?cache=cache&media=internal_com

bustion_engine.png

4
[Crank Slider Mechanism] Retrieved August 18, 2012 from

http://media.web.britannica.com/eb-media/90/4190-004-4DAAB8E9.gif

108
Appendix A - Initial Setup and Balancing Subroutine

Public Sub initialSetup()

'Sub to open parts, edit materials, overbalance crank initially

'All based upon initial conrod design & selected materials in excel

Set swApp = CreateObject("SldWorks.Application")

pi = 3.14159

Sheets("Final Sheet").Activate

'Pull Input Data

myTime = FormatDateTime(TimeValue(Now), 4)

myTime = Hour(FormatDateTime(TimeValue(Now), 4)) & ";" &

Minute(FormatDateTime(TimeValue(Now), 4))

Range("E5").Select

crankPinDia = ActiveCell.Value

rpm = 1000

w2 = rpm * 2 * pi / 60

blockMat = ActiveCell.Offset(3, 0).Value

crankMat = ActiveCell.Offset(9, 0).Value

pistonMat = ActiveCell.Offset(15, 0).Value

conrodMat = ActiveCell.Offset(21, 0).Value

'Establish Model File Paths

Range("J38").Select

partPath = ActiveCell.Value

pistonName = ActiveCell.Offset(1, 0).Value

pistonPath = partPath & "\" & pistonName

conrodName = ActiveCell.Offset(2, 0).Value

109
conrodPath = partPath & "\" & conrodName

crankName = ActiveCell.Offset(3, 0).Value

crankPath = partPath & "\" & crankName

blockName = ActiveCell.Offset(4, 0).Value

blockPath = partPath & "\" & blockName

assemblyName = ActiveCell.Offset(5, 0).Value

assemblyPath = partPath & "\" & assemblyName

'*****Initial Assembly Mass before material change, at default parameters

Set swModel = swApp.OpenDoc6(assemblyPath, 2, 0, "", longstatus, longwarnings)

swApp.ActivateDoc2 assemblyName, False, longstatus

Set swModelExt = swModel.Extension

Set swSelMgr = swModel.SelectionManager

AssMassP = swModelExt.GetMassProperties(1, nStatus)

mAss = AssMassP(5)

'**********Piston Nonsense

Set swModel = swApp.OpenDoc6(pistonPath, 1, 0, "", longstatus, longwarnings)

swApp.ActivateDoc2 pistonName, False, longstatus

Set swModelExt = swModel.Extension

Set swSelMgr = swModel.SelectionManager

Call changeMat(pistonMat, swModel)

'Pull Piston Mass Properties

L4MassP = swModelExt.GetMassProperties(1, nStatus)

m4 = L4MassP(5)

'**********END PISTON

110
'**********Connecting Rod Nonsense

Set swModel = swApp.OpenDoc6(conrodPath, 1, 0, "", longstatus, longwarnings)

swApp.ActivateDoc2 conrodName, False, longstatus

Set swModelExt = swModel.Extension

Set swSelMgr = swModel.SelectionManager

Call changeMat(conrodMat, swModel)

Call editDim("Dia_Cpin@Con Rod Sketch@Conrod Final.SLDPRT", "Dia_Cpin@Con Rod Sketch",

crankPinDia, swModel, swModelExt)

'Pull Conn Rod Mass & CG

R3F = getDim("Con Rod Length@Con Rod Sketch", swModel, swModelExt, swSelMgr)

R3 = R3F(0)

L3MassP = swModelExt.GetMassProperties(1, nStatus)

m3 = L3MassP(5)

r3cg = L3MassP(1)

J3 = L3MassP(8)

'**********End Connecting Rod

'**********Crankshaft Nonsense

Set swModel = swApp.OpenDoc6(crankPath, 1, 0, "", longstatus, longwarnings)

swApp.ActivateDoc2 crankName, False, longstatus

Set swModelExt = swModel.Extension

Set swSelMgr = swModel.SelectionManager

Call changeMat(crankMat, swModel)

'Pull Crank Mass, Density, & Dimensions

111
Call editDim("Dia_Cpin@Pin Sketch@Crankshaft Final.SLDPRT", "Dia_Cpin@Pin Sketch",

crankPinDia, swModel, swModelExt)

R2 = getDim("Crank_Length@Pin Sketch", swModel, swModelExt, swSelMgr)

L2MassP = swModelExt.GetMassProperties(1, nStatus)

m2 = L2MassP(5)

J2 = L2MassP(8)

'**********End Crankshaft

'**********Block Nonsense

Set swModel = swApp.OpenDoc6(blockPath, 1, 0, "", longstatus, longwarnings)

swApp.ActivateDoc2 blockName, False, longstatus

Set swModelExt = swModel.Extension

Set swSelMgr = swModel.SelectionManager

Call changeMat(blockMat, swModel)

'Pull Block Mass Properties

L1MassP = swModelExt.GetMassProperties(1, nStatus)

m1 = L1MassP(5)

'**********END BLOCK

'Initial Loop conditions for everything to work properly

balanceThick = 0.00892

z=0

sfxMIN(0) = -10000000

sfxMAX(0) = 10000000

maxResultant = 0

swApp.ActivateDoc2 crankName, False, longstatus

112
Set swModel = swApp.ActiveDoc

Set swModelExt = swModel.Extension

didOnce = False

'Do Loop to iteratively balance crankshaft

Do

balanceThick = balanceThick + 0.002

z=z+1

r2cg = (0.12 - calcCG(crankPinDia, balanceThick, pi))

'Regrab Crank Mass Properties since they change every loop

Call editParam("D1@Balance@" & crankName, "D1@Balance", balanceThick, swModel,

swModelExt)

L2MassP = swModelExt.GetMassProperties(1, nStatus)

m2 = L2MassP(5)

J2 = L2MassP(8)

Call kinematics(sfx, sfy, sfxMINI, sfxMAXI, m2, m3, R2, R3, w2, z, r2cg, r3cg, J2, J3, m4, sfyMINI,

sfyMAXI, pistonXPos, pistonYPos, pistonXVel, pistonXAcc)

sfyMIN(z) = sfyMINI

sfyMAX(z) = sfyMAXI

If z = 1 Then

chartName = "Shaking Force Data - " & myTime

Call charto(chartName, sfx, sfy, 4000, "N", balanceThick) 'Create balancing iteration graph

Else

chartName = "Shaking Force Data - " & myTime

Call addDataSeries("Shaking Force Data - " & myTime, z, sfx, sfy, balanceThick) ' Add Series to

existing graph

113
End If

'Loop to graph most balanced condition of crank. Clunky but only reliable way I can think of

If (sfyMAX(z) > sfyMAX(z - 1) And didOnce = False And z <> 1) Then

didOnce = True

balanceThick = balanceThick - 0.002

z=z-1

r2cg = (0.12 - calcCG(crankPinDia, balanceThick, pi))

Call kinematics(sfx, sfy, sfxMINI, sfxMAXI, m2, m3, R2, R3, w2, z, r2cg, r3cg, J2, J3, m4,

sfyMINI, sfyMAXI, pistonXPos, pistonYPos, pistonXVel, pistonXAcc)

chartName = "Balanced - " & myTime

Call charto(chartName, sfx, sfy, 4000, "N", balanceThick)

balanceThick = balanceThick + 0.002

z=z+1

End If

Loop Until (sfx(1) > sfx(180)) 'At this point, we want the previous balance thickness

'Graph Shaking Force At OverBalanced Thickness

balanceThick = balanceThick - 0.002

z=z-1

r2cg = (0.12 - calcCG(crankPinDia, balanceThick, pi))

Call kinematics(sfx, sfy, sfxMINI, sfxMAXI, m2, m3, R2, R3, w2, z, r2cg, r3cg, J2, J3, m4, sfyMINI,

sfyMAXI, pistonXPos, pistonYPos, pistonXVel, pistonXAcc)

chartName = "Overbalanced - " & myTime

Call charto(chartName, sfx, sfy, 1000, "N", balanceThick)

'Edit crank model, save as optimized model, & pull Optimized Mass Props

swApp.ActivateDoc2 crankName, False, longstatus

Set swModel = swApp.ActiveDoc

114
Set swModelExt = swModel.Extension

Call editParam("D1@Balance@" & crankName, "D1@Balance", balanceThick, swModel, swModelExt)

'longstatus = swModel.SaveAs3("M:\Storage Drive\2009-2010 FSAE\Engine\Barry Orr\ME 630

Project\Engine Assembly\Crankshaft Optimized.SLDPRT", 0, 2)

L2MassP = swModelExt.GetMassProperties(1, nStatus)

m2Opt = L2MassP(5)

J2Opt = L2MassP(8)

swApp.ActivateDoc2 assemblyName, False, longstatus

Set swModel = swApp.ActiveDoc

Set swModelExt = swModel.Extension

Set swSelMgr = swModel.SelectionManager

boolstatus = swModel.EditRebuild3()

AssMassP = swModelExt.GetMassProperties(1, nStatus) 'pullMassP()

mAss2 = AssMassP(5)

'Output Data

Sheets("Final Sheet").Activate

Range("E10").Select

ActiveCell.Value = m1

ActiveCell.Offset(6, 0).Value = m2

ActiveCell.Offset(12, 0).Value = m4

ActiveCell.Offset(18, 0).Value = m3

Range("L5").Select

ActiveCell.Value = mAss

ActiveCell.Offset(1, 0) = mAss2

115
Range("L18").Select

ActiveCell.Value = balanceThick * 1000

ActiveCell.Offset(2, 0) = m2Opt

ActiveCell.Offset(3, 0) = r2cg

ActiveCell.Offset(4, 0) = J2Opt

'**********Assembly Nonsense

Set swModel = swApp.OpenDoc6(assemblyPath, 2, 0, "", longstatus, longwarnings)

swApp.ActivateDoc2 assemblyName, False, longstatus

Set swModelExt = swModel.Extension

Set swSelMgr = swModel.SelectionManager

'BoM Setup

' Part No |Name |Descrip |Material |Cost |Weight

' bom1(1,0) |Block(1,1) | bom5 | bom6 | bom7 | bom8

' bom2 |Crank | bom9(2,2) | bom10 | bom11 | bom12

' bom3(3,0) |Piston | bom13 | bom14 (3,3) | bom15 | bom16

' bom4 |ConRod | bom17 | bom18 | bom19(4,4)| bom20

boolstatus = swModelExt.SelectByID2("DetailItem1@Annotations", "ANNOTATIONTABLES", 0, 0, 0,

False, 0, Nothing, 0)

Set myTable = swSelMgr.GetSelectedObject5(1)

Range("E6").Select

myTable.Text(1, 2) = ActiveCell.Value

myTable.Text(1, 0) = ActiveCell.Offset(1, 0).Value

myTable.Text(1, 3) = ActiveCell.Offset(2, 0).Value

myTable.Text(1, 5) = Round(ActiveCell.Offset(4, 0).Value, 3)

myTable.Text(1, 4) = "$" & Round(ActiveCell.Offset(5, 0).Value, 2)

'-----------------------------------------

116
myTable.Text(2, 2) = ActiveCell.Offset(6, 0).Value

myTable.Text(2, 0) = ActiveCell.Offset(7, 0).Value

myTable.Text(2, 3) = ActiveCell.Offset(8, 0).Value

myTable.Text(2, 5) = Round(ActiveCell.Offset(10, 0).Value, 3)

myTable.Text(2, 4) = "$" & Round(ActiveCell.Offset(11, 0).Value, 2)

'-----------------------------------------

myTable.Text(3, 2) = ActiveCell.Offset(12, 0).Value

myTable.Text(3, 0) = ActiveCell.Offset(13, 0).Value

myTable.Text(3, 3) = ActiveCell.Offset(14, 0).Value

myTable.Text(3, 5) = Round(ActiveCell.Offset(16, 0).Value, 3)

myTable.Text(3, 4) = "$" & Round(ActiveCell.Offset(17, 0).Value, 2)

'-----------------------------------------

myTable.Text(4, 2) = ActiveCell.Offset(18, 0).Value

myTable.Text(4, 0) = ActiveCell.Offset(19, 0).Value

myTable.Text(4, 3) = ActiveCell.Offset(20, 0).Value

myTable.Text(4, 5) = Round(ActiveCell.Offset(22, 0).Value, 3)

myTable.Text(4, 4) = "$" & Round(ActiveCell.Offset(23, 0).Value, 2)

'********** END ASSEMBLY

Call xlGraphing(pistonXPos, pistonYPos, pistonXVel, pistonXAcc)

End Sub

117
Appendix B - Subroutine to Run Motion Analysis

Sub runMotion()

'Run the existing motion study

Set swApp = CreateObject("SldWorks.Application")

swApp.ActivateDoc2 assemblyName, False, longstatus

Set swModel = swApp.ActiveDoc

Set swModelExt = swModel.Extension

Set swSelMgr = swModel.SelectionManager

boolstatus = swModel.EditRebuild3()

Set motionStudyMgr = swModelExt.GetMotionStudyManager()

Set myMotionStudy = motionStudyMgr.GetMotionStudy("Motion Analysis")

boolstatus = myMotionStudy.Calculate()

End Sub

118
Appendix C - Subroutine to Run Simulation

Sub runSims()

Dim el As Double

Dim tl As Double

Dim L2Sy, L3Sy As Double

Dim errCode As Long

Dim crankStress, conrodStress As Variant

Set swApp = CreateObject("SldWorks.Application")

Sheets("Final Sheet").Activate

Range("E15").Select

L2Sy = ActiveCell.Value

L3Sy = ActiveCell.Offset(12, 0).Value * 1000000

swApp.ActivateDoc2 conrodName, False, longstatus

Set swModel = swApp.ActiveDoc

Set swModelExt = swModel.Extension

Set swSelMgr = swModel.SelectionManager

Set CWObject = swApp.GetAddInObject("CosmosWorks.CosmosWorks")

Set COSMOSWORKS = CWObject.COSMOSWORKS

Set ActDoc = COSMOSWORKS.ActiveDoc()

Set StudyMngr = ActDoc.StudyManager()

Set Study = StudyMngr.GetStudy(0)

Set CwMesh = Study.Mesh

'If CwMesh Is Nothing Then ErrorMsg swApp, "No mesh object.", False

CwMesh.Quality = 1

Call CwMesh.GetDefaultElementSizeAndTolerance(0, el, tl)

119
errCode = Study.CreateMesh(0, el, tl)

'If errCode <> 0 Then ErrorMsg swApp, "Mesh failed.", True

'Run analysis

errCode = Study.RunAnalysis

'If errCode <> 0 Then ErrorMsg swApp, "Analysis failed.", True

Set CWResult = Study.Results

'If CWResult Is Nothing Then ErrorMsg swApp, "No result object.", False

'stress=CWResult.ActivatePlot(

conrodStress = CWResult.GetMinMaxStress(9, 0, 1, Nothing, 0, errCode)

Range("L9").Select

'ActiveCell.Value = L2Sy / crankStress(3)

ActiveCell.Offset(1, 0) = L3Sy / conrodStress(3)

'ActiveCell.Offset(3, 0) = crankStress(3) / 1000000

ActiveCell.Offset(4, 0) = conrodStress(3) / 1000000

End Sub

120
Appendix D - Subroutine to Open Solidworks Models

Sub openParts()

Set swApp = CreateObject("SldWorks.Application")

Set swModel = swApp.OpenDoc6("M:\Storage Drive\2009-2010 FSAE\Engine\Barry Orr\ME

630 Project\Engine Assembly\New Piston.SLDPRT", 1, 0, "", longstatus, longwarnings)

Set swModel = swApp.OpenDoc6("M:\Storage Drive\2009-2010 FSAE\Engine\Barry Orr\ME

630 Project\Engine Assembly\New Crankshaft.SLDPRT", 1, 0, "", longstatus, longwarnings)

Set swModel = swApp.OpenDoc6("M:\Storage Drive\2009-2010 FSAE\Engine\Barry Orr\ME

630 Project\Engine Assembly\Con Rod2.SLDPRT", 1, 0, "", longstatus, longwarnings)

Set swModel = swApp.OpenDoc6("M:\Storage Drive\2009-2010 FSAE\Engine\Barry Orr\ME

630 Project\Engine.SLDASM", 2, 0, "", longstatus, longwarnings)

End Sub

121
Appendix E - Function to Assign a Cost per Kilogram for Material Selection

Function matCost(mName)

'Fucntion to retrun material cost per kg based upon material selected

'$ per kg

Dim c1020, c4340, cDucFe, cCastFe, c6061, cTi As Double

c1020 = 3#

c4340 = 1.8

cDucFe = 1.2

cCastFe = 1#

c6061 = 2.95

cTi = 25#

If mName = "1020 Steel" Then

matCost = c1020

End If

If mName = "4340 Steel" Then

matCost = c4340

End If

If mName = "Ductile Iron" Then

matCost = cDucFe

End If

If mName = "Cast Iron" Then

matCost = cCastFe

End If

If mName = "6061 Aluminum" Then

matCost = c6061

End If

122
If mName = "Titanium" Then

matCost = cTi

End If

End Function

123
Appendix F - Function to Return Material Strength Based Upon Material Selection

Function matYield(mName)

'Fucntion to return material yield strength in MPa

If mName = "1020 Steel" Then

matYield = 351.571

End If

If mName = "4340 Steel" Then

matYield = 470

End If

If mName = "Ductile Iron" Then

matYield = 551.485

End If

If mName = "Cast Iron" Then

matYield = 275.742

End If

If mName = "6061 Aluminum" Then

matYield = 275

End If

If mName = "Titanium" Then

matYield = 810

End If

End Function

124
Appendix G - Subroutine to Generate Charts

Sub charto(chartName, x, y, L, YUnit, sName)

'Generate chart with selected data

Charts.Add

With ActiveChart

.Location Where:=xlLocationAsNewSheet, name:=chartName

Do Until .SeriesCollection.count = 0

.SeriesCollection(1).Delete

Loop

.ChartType = xlXYScatterLinesNoMarkers

.SeriesCollection.NewSeries

With .SeriesCollection(1)

.name = sName

.Values = y

.XValues = x

End With

'.Axes(xlCategory).MaximumScale = (L)

.ChartTitle.Text = chartName

.ApplyLayout (6)

.Legend.Select

Selection.Delete

.Axes(xlCategory).AxisTitle.Select

Selection.Format.TextFrame2.TextRange.Characters.Text = "Shaking Force"

.Axes(xlValue).AxisTitle.Select

Selection.Format.TextFrame2.TextRange.Characters.Text = YUnit

End With

End Sub

125
Appendix H - Subroutine To Calculate Linkage Kinematics

Public Sub kinematics(sfx, sfy, sfxMINI, sfxMAXI, m2, m3, R2, R3, w2, z, r2cg, r3cg, J2, J3,

pistonMass, sfyMINI, sfyMAXI)

pi = 3.14159

'sfyMAXI = -100000

'********** Kinematic Equations

alpha2 = 0

sfyMAXI = -1000

For i = 1 To 360

ang2(i) = i

t2(i) = ang2(i) / w2

theta2(i) = i * pi / 180

theta3(i) = WorksheetFunction.Asin(-R2(0) * Sin(theta2(i)) / R3)

RA(i) = R2(0) * Cos(theta2(i)) + R3 * Cos(theta3(i))

w3(i) = -R2(0) * w2 * Cos(theta2(i)) / (R3 * Cos(theta3(i)))

VA(i) = -R2(0) * w2 * Sin(theta2(i)) - R3 * w3(i) * Sin(theta3(i))

alpha3(i) = (R2(0) * w2 ^ 2 * Sin(theta2(i)) + R3 * w3(i) ^ 2 * Sin(theta3(i))) / (R3 *

Cos(theta3(i)))

aPiston(i) = -(w2 ^ 2 * R2(0) * Cos(theta2(i)) + w3(i) ^ 2 * R3 * Cos(theta3(i)) + R3 *

alpha3(i) * Sin(theta3(i)))

tempo(i) = aPiston(i) * 1000

r2cgx(i) = r2cg * Cos(theta2(i))

r2cgy(i) = r2cg * Sin(theta2(i))

v2cgx(i) = -w2 * r2cg * Sin(theta2(i))

v2cgy(i) = w2 * r2cg * Cos(theta2(i))

a2cgx(i) = -w2 ^ 2 * r2cg * Cos(theta2(i))

a2cgy(i) = -w2 ^ 2 * r2cg * Sin(theta2(i))

126
r3cgx(i) = r3cg * Cos(theta3(i)) + R2(0) * Cos(theta2(i))

r3cgy(i) = r3cg * Sin(theta3(i)) + R2(0) * Sin(theta2(i))

v3cgx(i) = -w2 * R2(0) * Sin(theta2(i)) - w3(i) * r3cg * Sin(theta3(i))

v3cgy(i) = w2 * R2(0) * Cos(theta2(i)) + w3(i) * r3cg * Cos(theta3(i))

a3cgx(i) = -(w2 ^ 2 * R2(0) * Cos(theta2(i)) + w3(i) ^ 2 * r3cg * Cos(theta3(i)) + r3cg *

alpha3(i) * Sin(theta3(i)))

a3cgy(i) = -w2 ^ 2 * R2(0) * Sin(theta2(i)) - w3(i) ^ 2 * r3cg * Sin(theta3(i)) + r3cg *

alpha3(i) * Cos(theta3(i))

For j = 1 To 8

For k = 1 To 8

rmatrix(j, k) = 0

Next k

Next j

rmatrix(1, 1) = 1

rmatrix(1, 3) = -1

rmatrix(2, 2) = 1

rmatrix(2, 4) = -1

rmatrix(3, 3) = R2(0) * Sin(theta2(i))

rmatrix(3, 4) = -R2(0) * Cos(theta2(i))

rmatrix(3, 8) = 1

rmatrix(4, 3) = 1

rmatrix(4, 5) = -1

rmatrix(5, 4) = 1

rmatrix(5, 6) = -1

rmatrix(6, 5) = R3 * Sin(theta3(i))

127
rmatrix(6, 6) = -R3 * Cos(theta3(i))

rmatrix(7, 5) = 1

rmatrix(8, 6) = 1

rmatrix(8, 7) = 1

bmatrix(1) = m2 * a2cgx(i)

bmatrix(2) = m2 * a2cgy(i)

bmatrix(3) = J2 * alpha2 + r2cgx(i) * m2 * a2cgy(i) - r2cgy(i) * m2 * a2cgx(i)

bmatrix(4) = m3 * a3cgx(i)

bmatrix(5) = m3 * a3cgy(i)

bmatrix(6) = J3 * alpha3(i) + r3cgx(i) * m3 * a3cgy(i) - r3cgy(i) * m3 * a3cgx(i)

bmatrix(7) = pistonMass * aPiston(i) + 1000 'gasforce(i)

bmatrix(8) = 0

fmatrix = WorksheetFunction.MMult(WorksheetFunction.MInverse(rmatrix),

WorksheetFunction.Transpose(bmatrix))

For j = 1 To 8

force(i, j) = fmatrix(j, 1)

Next j

sfx(i) = force(i, 1)

sfy(i) = force(i, 2) + force(i, 7)

'If Sqr(sfx(i) ^ 2 + sfy(i) ^ 2) > maxRe Then

' maxRe = Sqr(sfx(i) ^ 2 + sfy(i) ^ 2): End If

'If sfx(i) < sfx(i - 1) Then

128
' sfxMINI = sfx(i): End If

'If sfx(i) > sfx(i - 1) Then

' sfxMAXI = sfx(i): End If

'If sfy(i) < sfy(i - 1) Then

' sfyMINI = sfy(i): End If

If sfy(i) > sfyMAXI Then

sfyMAXI = sfy(i): End If

pistonXPos(i) = R2(0) * Cos(theta2(i)) + R3 * Cos(theta3(i))

pistonYPos(i) = R2(0) * Sin(theta2(i)) + R3 * Sin(theta3(i))

pistonXVel(i) = VA(i)

pistonXAcc(i) = aPiston(i)

Next i

End Sub

129
Appendix I - Subroutine to Add a Data Series to an Existing Chart

Sub addDataSeries(cName, i, sfx, sfy, balanceThick)

Sheets(cName).Select

ActiveChart.SeriesCollection.NewSeries

ActiveChart.SeriesCollection(i).name = balanceThick

ActiveChart.SeriesCollection(i).XValues = sfx

ActiveChart.SeriesCollection(i).Values = sfy

End Sub

130
Appendix J - Subroutine to Edit a Models Dimensions Value

Sub editDim(name, dimen, newValue, swModel, swModelExt)

'Function to alter dimension value

swModel.ClearSelection2 True

boolstatus = swModelExt.SelectByID2(name, "DIMENSION", 0, 0, 0, True, 0, Nothing, 0)

Set myDim = swModel.Parameter(dimen)

myDim.SystemValue = newValue

boolstatus = swModel.EditRebuild3()

End Sub

131
Appendix K - Subroutine to Edit a Models Features Value

Sub editParam(name, dimen, newValue, swModel, swModelExt)

'Function to alter feature value

swModel.ClearSelection2 True

boolstatus = swModelExt.SelectByID2(name, "BODYFEATURE", 0, 0, 0, True, 0, Nothing, 0)

Set myDim = swModel.Parameter(dimen)

myDim.SystemValue = newValue

boolstatus = swModel.EditRebuild3()

End Sub

132
Appendix L - Function to Return the Value of a Models Feature

Function getExtr(name, dimen, swModel, swModelExt)

'Function to get value of feature

swModel.ClearSelection2 True

boolstatus = swModelExt.SelectByID2(name, "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)

Set swDim = swModel.Parameter(dimen)

getExtr = swDim.GetSystemValue3(swThisConfiguration, Default)

End Function

133
Appendix M - Function to Return the Value of a Models Dimension

Function getDim(x As String, swModel, swModelExt, swSelMgr)

'Function to get a dimension's value

swModel.ClearSelection2 True

boolstatus = swModelExt.SelectByID2(x, "DIMENSION", 0, 0, 0, True, 0, Nothing, 0)

Set swDispDim = swSelMgr.GetSelectedObject5(1)

Set swDim = swDispDim.GetDimension

getDim = swDim.GetSystemValue3(swThisConfiguration, Default)

End Function

134
Appendix N - Subroutine to Change a Models Material

Sub changeMat(mName, swModel)

If mName = "1020 Steel" Then

swModel.SetMaterialPropertyName2 "Default", "C:/Program Files/SolidWorks

Corp/SolidWorks/lang/english/sldmaterials/SolidWorks Materials.sldmat", "AISI 1020"

End If

If mName = "4340 Steel" Then

swModel.SetMaterialPropertyName2 "Default", "C:/Program Files/SolidWorks

Corp/SolidWorks/lang/english/sldmaterials/SolidWorks Materials.sldmat", "AISI 4340 Steel, annealed"

End If

If mName = "Ductile Iron" Then

swModel.SetMaterialPropertyName2 "Default", "C:/Program Files/SolidWorks

Corp/SolidWorks/lang/english/sldmaterials/SolidWorks Materials.sldmat", "Ductile Iron"

End If

If mName = "Cast Iron" Then

swModel.SetMaterialPropertyName2 "Default", "C:/Program Files/SolidWorks

Corp/SolidWorks/lang/english/sldmaterials/SolidWorks Materials.sldmat", "Malleable Cast Iron"

End If

If mName = "6061 Aluminum" Then

swModel.SetMaterialPropertyName2 "Default", "C:/Program Files/SolidWorks

Corp/SolidWorks/lang/english/sldmaterials/SolidWorks Materials.sldmat", "6061-T6 (SS)"

End If

If mName = "Titanium" Then

swModel.SetMaterialPropertyName2 "Default", "C:/Program Files/SolidWorks

Corp/SolidWorks/lang/english/sldmaterials/SolidWorks Materials.sldmat", "Titanium Ti-8Mn, Annealed"

End If

End Sub

135
Appendix O Function to Calculate Center of Mass

Function calcCG(crankPinDia, balanceThick, pi)

Dim CrankFixedV, CrankPinV, balanceV, crankPinCG, balanceCG, num, den As Double

'********** Calculate Crank CG

CrankFixedV = (192000 + 50265.4825 + 282743.3) / 1000 ^ 3

CrankPinV = pi / 4 * 0.025 * crankPinDia ^ 2

balanceV = pi / 8 * balanceThick * 0.175 ^ 2

'CG's from Top of Piece

crankPinCG = 0.04

balanceCG = ((4 / 3) * (0.0875 / pi)) + 0.16

'CG*V Fixed CG*V of Base+Shaft = 54286486.62

num = (54286486.62 / 1000 ^ 4) + (crankPinCG * CrankPinV) + (balanceCG * balanceV)

den = CrankFixedV + CrankPinV + balanceV

calcCG = num / den

'********** END

End Function

136
Appendix P Subroutine to Calculate Various Kinematic Data for Graphing

Sub xlGraphing(pistonXPos, pistonYPos, pistonXVel, pistonXAcc)

For i = 1 To 360

graphAngle(i) = i

graphAngle(i + 360) = i + 360

radianAngle = i * pi / 180

pistonXPos(i) = pistonXPos(i) * 1000

Call pop361Plus(i, pistonXPos)

Call pop361Plus(i, pistonYPos)

pistonMagPos(i) = Sqr(pistonXPos(i) ^ 2 + pistonYPos(i) ^ 2)

Call pop361Plus(i, pistonMagPos)

crankXPos(i) = (0.08 * Cos(radianAngle)) * 1000

Call pop361Plus(i, crankXPos)

crankYPos(i) = (0.08 * Sin(radianAngle)) * 1000

Call pop361Plus(i, crankYPos)

crankMagPos(i) = Sqr(crankXPos(i) ^ 2 + crankYPos(i) ^ 2)

Call pop361Plus(i, crankMagPos)

pistonXVel(i) = pistonXVel(i) * 1000

Call pop361Plus(i, pistonXVel)

pistonYVel(i) = 0

Call pop361Plus(i, pistonYVel)

pistonMagVel(i) = Sqr(pistonXVel(i) ^ 2 + pistonYVel(i) ^ 2)

137
Call pop361Plus(i, pistonMagVel)

crankXVel(i) = (0.08 * -1000 * (2 * pi / 60) * Cos(radianAngle)) * 1000

Call pop361Plus(i, crankXVel)

crankYVel(i) = (0.08 * -1000 * (2 * pi / 60) * Sin(radianAngle)) * 1000

Call pop361Plus(i, crankYVel)

crankMagVel(i) = Sqr(crankXVel(i) ^ 2 + crankYVel(i) ^ 2)

Call pop361Plus(i, crankMagVel)

pistonXAcc(i) = pistonXAcc(i) * 1000

Call pop361Plus(i, pistonXAcc)

pistonYAcc(i) = 0

Call pop361Plus(i, pistonYAcc)

pistonMagAcc(i) = Sqr(pistonXAcc(i) ^ 2 + pistonYAcc(i) ^ 2)

Call pop361Plus(i, pistonMagAcc)

crankXAcc(i) = (crankMagVel(i) ^ 2 / 80) * -Cos(radianAngle)

Call pop361Plus(i, crankXAcc)

crankYAcc(i) = (crankMagVel(i) ^ 2 / 80) * Sin(radianAngle)

Call pop361Plus(i, crankYAcc)

crankMagAcc(i) = Sqr(crankXAcc(i) ^ 2 + crankYAcc(i) ^ 2)

Call pop361Plus(i, crankMagAcc)

Next i

'chartName = "Piston xy Displacement"

'Call charto2(chartName, graphAngle, pistonXPos, 720, "Displacement (mm)", "Piston X

Displacement", "Degrees")

138
'Call addDataSeries(chartName, 2, graphAngle, pistonYPos, "Piston Y Displacement") ' Add

Series to existing graph

'Call charto2("Piston Displacement Magnitude", graphAngle, pistonMagPos, 720,

"Displacement (mm)", "Piston Displacement", "Degrees")

'chartName = "Piston xy Velocity"

'Call charto2(chartName, graphAngle, pistonXVel, 720, "Velocity (mm/s)", "Piston X

Velocity", "Degrees")

'Call addDataSeries(chartName, 2, graphAngle, pistonYVel, "Piston Y Velocity") ' Add Series

to existing graph

'Call charto2("Piston Velocity Magnitude", graphAngle, pistonMagVel, 720, "Velocity (mm/s)",

"Piston Velocity", "Degrees")

'chartName = "Piston xy Acceleration"

'Call charto2(chartName, graphAngle, pistonXAcc, 720, "Acceleration (mm/s^2)", "Piston X

Aceleration", "Degrees")

'Call addDataSeries(chartName, 2, graphAngle, pistonYAcc, "Piston Y Piston Aceleration") '

Add Series to existing graph

'Call charto2("Piston Acceleration Magnitude", graphAngle, pistonMagAcc, 720, "Acceleration

(mm/s^2)", "Piston Acceleration", "Degrees")

'chartName = "Crank xy Displacement"

'Call charto2(chartName, graphAngle, crankXPos, 720, "Displacement (mm)", "Crank X

Displacement", "Degrees")

'Call addDataSeries(chartName, 2, graphAngle, crankYPos, "Crank Y Displacement")

'Call charto2("Crank Displacement Magnitude", graphAngle, crankMagPos, 720,

"Displacement (mm)", "Crank Displacement", "Degrees")

139
'chartName = "Crank xy Velocity"

'Call charto2(chartName, graphAngle, crankXVel, 720, "Velocity (mm/s)", "Crank X Velocity",

"Degrees")

'Call addDataSeries(chartName, 2, graphAngle, crankYVel, "Crank Y Velocity")

'Call charto2("Crank Velocity Magnitude", graphAngle, crankMagVel, 720, "Velocity (mm/s)",

"Crank Velocity", "Degrees")

'chartName = "Crank xy Acceleration"

'Call charto2(chartName, graphAngle, crankXAcc, 720, "Acceleration (mm/s^2)", "Crank X

Acceleration", "Degrees")

'Call addDataSeries(chartName, 2, graphAngle, crankYAcc, "Crank Y Acceleration")

'Call charto2("Crank Acceleration Magnitude", graphAngle, crankMagAcc, 720, "Acceleration

(mm/s^2)", "Crank Acceleration", "Degrees")

End Sub

Sub pop361Plus(i, x)

x(i + 360) = x(i)

End Sub

140
Appendix Q Initial Declarations for the Main_Code Module

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim swFeature As SldWorks.Feature

Dim swFeature2 As SldWorks.Feature

Dim swSubfeature As SldWorks.Feature

Dim swSkManager As SldWorks.SketchManager

Dim swModelExt As SldWorks.ModelDocExtension

Dim swSkSegment As SldWorks.SketchSegment

Dim swFeatureManager As SldWorks.FeatureManager

Dim swSketch As SldWorks.Sketch

Dim swDispDim As SldWorks.DisplayDimension

Dim swDim As SldWorks.Dimension

Dim COSMOSWORKS, swSelMgr, motionStudyMgr, myMotionStudy, myDim,

myTable As Object

Dim CWObject As CosmosWorksLib.CwAddincallback

Dim ActDoc As CosmosWorksLib.CWModelDoc

Dim StudyMngr As CosmosWorksLib.CWStudyManager

Dim Study As CosmosWorksLib.CWStudy

Dim SolidMgr As CosmosWorksLib.CWSolidManager

Dim SolidComponent As CosmosWorksLib.CWSolidComponent

Dim SolidBody As CosmosWorksLib.CWSolidBody

Dim CwMesh As CosmosWorksLib.CwMesh

141
Dim CWResult As CosmosWorksLib.CWResults

Dim name, ErrorMsg As String

Dim didOnce, boolstatus, boolexp As Boolean

'Dim Part As Object

Dim longstatus As Long, longwarnings As Long, nStatus As Long

Dim vMassProp As Variant

Dim xlApp As Excel.Application

Dim xlWB As Excel.Workbook

Dim xlSheet As Excel.Worksheet

Dim mAssO2, m2Opt, J2Opt, mAss, mAss2, mAssO, m1, m4, pi, m2, crankDens,

crankPinDia, crankShaftDia, conrodInFillets, crankPinLength, crankShaftLength,

crankPinVol, crankShaftVol, nonBalanceMass, BalanceMass, R2, R3 As Double

Dim sum, sum2, conrodBotOD, conrodTopOD, conrodLength, conrodOutFillets,

conrodNeckThick, m3, rpm, w2, r2cg, r3cg, alpha2, J2, J3 As Double

Dim ang2(1 To 360), RA(1 To 360), tempo(1 To 360), t2(1 To 360), theta3(1 To

360), theta2(1 To 360), VA(1 To 360), w3(1 To 360), alpha3(1 To 360), aPiston(1 To 360)

Dim rmatrix(1 To 8, 1 To 8), bmatrix(1 To 8), r2cgx(1 To 360), r2cgy(1 To 360),

v2cgx(1 To 360), v2cgy(1 To 360), a2cgx(1 To 360), a2cgy(1 To 360), r3cgx(1 To 360),

r3cgy(1 To 360), v3cgx(1 To 360), v3cgy(1 To 360), a3cgx(1 To 360), a3cgy(1 To 360)

142
Dim force(1 To 360, 1 To 8), sfx(0 To 360), sfy(0 To 360), sfyMIN(0 To 10000),

sfyMAX(0 To 10000), sfxMIN(0 To 10000), sfxMAX(0 To 10000) 'SFL(1 To 1000),

SFR(1 To 1000)

Dim sfyMINI, sfyMAXI, sfxMINI, sfxMAXI, maxRe, maxResultant, crankCG,

CrankFixedV, CrankPinV, balanceV, balanceThick, num, den, crankPinCG, balanceCG

As Double

'New dims

Dim pistonXPos(1 To 720), pistonYPos(1 To 720), graphAngle(1 To 720),

pistonXVel(1 To 720), pistonXAcc(1 To 720), pistonYAcc(1 To 720) As Double

Dim i, j, k, z As Integer

Dim myTime, AssMassP, AssMass2P, fmatrix, L1MassP, L2MassP, L2MassPOpt,

L3MassP, L4MassP, R3F As Variant

Dim chartName, partPath, pistonName, pistonPath, conrodName, conrodPath,

crankName, crankPath, blockName, blockPath, assemblyName, assemblyPath, blockMat,

crankMat, pistonMat, conrodMat As String

143
Appendix R Initial Declarations for the side_funcs Module

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim swFeature As SldWorks.Feature

Dim swFeature2 As SldWorks.Feature

Dim swSubfeature As SldWorks.Feature

Dim swSkManager As SldWorks.SketchManager

Dim swModelExt As SldWorks.ModelDocExtension

Dim swSkSegment As SldWorks.SketchSegment

Dim swFeatureManager As SldWorks.FeatureManager

Dim swSketch As SldWorks.Sketch

Dim swDispDim As SldWorks.DisplayDimension

Dim swDim As SldWorks.Dimension

Dim myDim As Object

'New ones for learning

Dim swDocConfigurations

Dim massProperties

Dim swDocPath As String

Dim swAssy As SldWorks.AssemblyDoc

Dim swSelMgr As SldWorks.SelectionMgr

Dim swComp As SldWorks.Component2

Dim nStatus As Long

Dim vMassProp As Variant

Dim UserPref As Integer

144
Dim UserPrefOption As Integer

Dim sSpecConfigNameArr(0) As String

Dim vSpecConfigNameArr As Variant

Dim swMotionMgr As SwMotionStudy.MotionStudyManager

Dim swMotionStudy1 As SwMotionStudy.MotionStudy

Dim swResults As SwMotionStudy.MotionStudyResults

Dim swMotionStudyProps As SwMotionStudy.MotionStudyProperties

Dim swPhysicalSimProps As SwMotionStudy.PhysicalSimulationMotionStudyProperties

Dim vMotionFeatures As Variant

Dim m2Opt, J2Opt, mAss, mAss2, mAssO, m1, m4, pi, m2, crankDens, crankPinDia,

crankShaftDia, conrodInFillets, crankPinLength, crankShaftLength, crankPinVol, crankShaftVol,

nonBalanceMass, BalanceMass, R2, R3 As Double

Dim sum, sum2, conrodBotOD, conrodTopOD, conrodLength, conrodOutFillets,

conrodNeckThick, m3, rpm, w2, r2cg, r3cg, alpha2, J2, J3 As Double

Dim ang2(1 To 360), RA(1 To 360), tempo(1 To 360), t2(1 To 360), theta3(1 To 360), theta2(1 To

360), VA(1 To 360), w3(1 To 360), alpha3(1 To 360), aPiston(1 To 360)

Dim rmatrix(1 To 8, 1 To 8), bmatrix(1 To 8), r2cgx(1 To 360), r2cgy(1 To 360), v2cgx(1 To 360),

v2cgy(1 To 360), a2cgx(1 To 360), a2cgy(1 To 360), r3cgx(1 To 360), r3cgy(1 To 360), v3cgx(1 To 360),

v3cgy(1 To 360), a3cgx(1 To 360), a3cgy(1 To 360)

Dim force(1 To 360, 1 To 8), sfx(0 To 360), sfy(0 To 360), sfxMIN(0 To 10000), sfxMAX(0 To

10000) 'SFL(1 To 1000), SFR(1 To 1000)

Dim sfyMINI, sfyMAXI, sfxMINI, sfxMAXI, maxRe, maxResultant, crankCG, CrankFixedV,

CrankPinV, balanceV, balanceThick, num, den, crankPinCG, balanceCG As Double

'New Ones

145
Dim radianAngle, graphAngle(1 To 720), crankXPos(1 To 720), crankYPos(1 To 720),

pistonXVel(1 To 720), pistonYVel(1 To 720), crankXVel(1 To 720), crankYVel(1 To 720), pistonXAcc(1 To

720), pistonYAcc(1 To 720), crankXAcc(1 To 720), crankYAcc(1 To 720) As Double

Dim pistonMagPos(1 To 720), crankMagPos(1 To 720), pistonMagVel(1 To 720), crankMagVel(1

To 720), pistonMagAcc(1 To 720), crankMagAcc(1 To 720) As Double

Dim chartName As String

Dim i, j, k, z As Integer

Dim AssMassP, AssMass2P, fmatrix, L1MassP, L2MassP, L3MassP, L4MassP, R3F As Variant

Dim blockMat, crankMat, pistonMat, conrodMat As String

Dim name As String

Dim boolexp As Boolean

Dim Part As Object

Dim boolstatus As Boolean

Dim longstatus As Long, longwarnings As Long

Dim xlApp As Excel.Application

Dim xlWB As Excel.Workbook

Dim xlSheet As Excel.Worksheet

146
Appendix S - Raw Ricardo Wave Data

The following data was imported directly from a Ricardo Wave simulation for a

similarly sized single cylinder engine. There are a multitude of variables that one can

utilize with the Wave software, but the only ones relevant to this project were the cylinder

pressure vs crank angle data points.

Crank JUNC: Crank JUNC: Crank JUNC: Crank JUNC:


Angle CYL1 Angle CYL1 Angle CYL1 Angle CYL1
Deg bar deg bar deg bar deg bar
-180.00 0.978 -0.123 41.002 179.753 3.685 359.630 1.087
-179.27 0.981 0.599 42.299 180.476 3.655 360.352 1.082
-178.55 0.984 1.321 43.585 181.198 3.625 361.075 1.075
-177.83 0.987 2.044 44.847 181.921 3.595 361.797 1.067
-177.11 0.990 2.766 46.087 182.643 3.565 362.520 1.057
-176.38 0.993 3.489 47.283 183.365 3.536 363.242 1.046
-175.66 0.996 4.211 48.440 184.088 3.506 363.964 1.034
-174.94 0.999 4.933 49.544 184.810 3.478 364.687 1.020
-174.22 1.001 5.656 50.594 185.532 3.449 365.409 1.006
-173.49 1.004 6.378 51.581 186.255 3.421 366.132 0.991
-172.77 1.007 7.101 52.499 186.977 3.393 366.854 0.976
-172.05 1.010 7.823 53.341 187.700 3.365 367.576 0.961
-171.33 1.014 8.545 54.105 188.422 3.338 368.299 0.946
-170.60 1.017 9.268 54.490 189.144 3.311 369.021 0.932
-169.88 1.020 9.990 55.371 189.867 3.284 369.744 0.920
-169.16 1.023 10.713 55.871 190.589 3.258 370.466 0.908
-168.44 1.026 11.435 56.273 191.312 3.232 371.188 0.898
-167.71 1.029 12.157 56.587 192.034 3.206 371.911 0.888
-166.99 1.033 12.880 56.808 192.756 3.181 372.633 0.879
-166.27 1.036 13.602 56.931 193.479 3.156 373.355 0.870
-165.55 1.039 14.325 56.970 194.201 3.131 374.078 0.861
-164.83 1.043 15.047 56.925 194.924 3.106 374.800 0.853
-164.10 1.046 15.769 56.782 195.646 3.082 375.523 0.846
-163.38 1.050 16.492 56.557 196.368 3.058 376.245 0.838
-162.66 1.053 17.214 56.263 197.091 3.035 376.967 0.831
-161.94 1.057 17.937 55.897 197.813 3.012 377.690 0.825
-161.21 1.061 18.659 55.450 198.536 2.989 378.412 0.819
-160.49 1.064 19.381 54.945 199.258 2.966 379.135 0.813

147
-159.77 1.068 20.104 54.387 199.980 2.944 379.857 0.808
-159.05 1.072 20.826 53.779 200.703 2.922 380.579 0.803
-158.32 1.076 21.549 53.127 201.425 2.900 381.302 0.798
-157.60 1.080 22.271 52.432 202.148 2.879 382.024 0.794
-156.88 1.084 22.993 51.690 202.870 2.858 382.747 0.790
-156.16 1.088 23.716 50.911 203.592 2.837 383.469 0.785
-155.43 1.092 24.438 50.060 204.315 2.816 384.191 0.781
-154.41 1.096 25.161 49.187 205.037 2.796 384.914 0.777
-153.99 1.100 25.883 48.295 205.760 2.776 385.636 0.773
-153.27 1.105 26.605 47.390 206.482 2.756 386.359 0.769
-152.54 1.109 27.328 46.485 207.204 2.737 387.081 0.765
-151.82 1.113 28.050 45.577 207.927 2.717 387.803 0.762
-151.10 1.118 28.773 44.652 208.649 2.698 388.526 0.758
-150.38 1.122 29.495 43.729 209.372 2.680 389.248 0.754
-149.65 1.127 30.217 42.810 210.094 2.661 389.971 0.751
-148.93 1.131 30.940 41.897 210.816 2.643 390.693 0.748
-148.21 1.136 31.662 40.975 211.539 2.625 391.415 0.745
-147.49 1.141 32.384 40.076 212.261 2.608 392.138 0.743
-146.77 1.146 33.107 39.187 212.984 2.590 392.860 0.740
-146.04 1.151 33.829 38.312 213.706 2.573 393.583 0.738
-145.32 1.155 34.552 37.452 214.428 2.556 394.305 0.736
-144.60 1.160 35.274 36.608 215.151 2.539 395.027 0.734
-143.88 1.166 35.996 35.781 215.873 2.523 395.750 0.732
-143.15 1.171 36.719 34.972 216.596 2.507 396.472 0.730
-142.43 1.176 37.441 34.182 217.318 2.491 397.195 0.728
-141.71 1.181 38.164 33.410 218.040 2.475 397.917 0.727
-140.99 1.187 38.886 32.656 218.763 2.459 398.639 0.726
-140.26 1.192 39.608 31.922 219.485 2.444 399.362 0.724
-139.54 1.197 40.331 31.206 220.207 2.429 400.084 0.723
-138.82 1.203 41.053 30.509 220.930 2.414 400.807 0.722
-138.10 1.208 41.776 29.825 221.652 2.399 401.529 0.721
-137.37 1.214 42.498 29.157 222.375 2.385 402.251 0.721
-136.65 1.220 43.220 28.507 223.097 2.370 402.974 0.720
-135.93 1.225 43.943 27.876 223.819 2.356 403.696 0.720
-135.21 1.231 44.665 27.263 224.542 2.342 404.419 0.720
-134.48 1.237 45.388 26.671 225.264 2.329 405.141 0.720
-133.76 1.243 46.110 26.094 225.987 2.315 405.863 0.720
-133.04 1.249 46.832 25.534 226.709 2.302 406.586 0.721
-132.32 1.256 47.555 24.990 227.431 2.289 407.308 0.721
-131.59 1.263 48.277 24.463 228.154 2.276 408.031 0.722
-130.87 1.269 49.000 23.951 228.876 2.263 408.753 0.723
-130.15 1.276 49.722 23.453 229.599 2.251 409.475 0.724
-129.43 1.283 50.444 22.965 230.321 2.239 410.198 0.725

148
-128.71 1.291 51.167 22.490 231.043 2.226 410.920 0.726
-127.98 1.298 51.889 22.029 231.766 2.215 411.642 0.727
-127.26 1.306 52.612 21.582 232.488 2.203 412.365 0.728
-126.54 1.314 53.334 21.149 233.211 2.191 413.087 0.729
-125.82 1.323 54.056 20.728 233.933 2.180 413.810 0.731
-125.09 1.331 54.479 20.321 234.655 2.169 414.532 0.732
-124.37 1.340 55.501 19.926 235.378 2.158 415.254 0.734
-123.65 1.348 56.224 19.542 236.100 2.147 415.977 0.735
-122.93 1.358 56.946 19.170 236.823 2.136 416.699 0.736
-122.20 1.367 57.668 18.809 237.545 2.126 417.422 0.738
-121.48 1.376 58.391 18.459 238.267 2.115 418.144 0.739
-120.76 1.386 59.113 18.119 238.990 2.105 418.866 0.741
-120.04 1.396 59.836 17.785 239.712 2.095 419.589 0.743
-119.31 1.406 60.558 17.459 240.435 2.085 420.311 0.744
-118.59 1.416 61.280 17.143 241.157 2.076 421.034 0.746
-117.87 1.427 62.003 16.836 241.879 2.066 421.756 0.747
-117.15 1.438 62.725 16.538 242.602 2.057 422.478 0.749
-116.42 1.449 63.448 16.248 243.324 2.048 423.201 0.750
-115.70 1.460 64.170 15.967 244.047 2.038 423.923 0.752
-114.98 1.471 64.892 15.693 244.469 2.030 424.646 0.753
-114.26 1.483 65.615 15.428 245.491 2.021 425.368 0.755
-113.54 1.495 66.337 15.169 246.214 2.012 426.090 0.756
-112.82 1.508 67.059 14.918 246.936 2.004 426.813 0.758
-112.10 1.521 67.782 14.674 247.659 1.995 427.535 0.759
-111.37 1.534 68.504 14.437 248.381 1.987 428.258 0.760
-110.65 1.547 69.227 14.206 249.103 1.979 428.980 0.762
-109.92 1.560 69.949 13.981 249.826 1.971 429.702 0.763
-109.21 1.574 70.671 13.761 250.548 1.963 430.425 0.764
-108.48 1.588 71.394 13.546 251.271 1.956 431.147 0.765
-107.76 1.602 72.116 13.336 251.993 1.948 431.870 0.766
-107.04 1.617 72.839 13.131 252.715 1.941 432.592 0.767
-106.32 1.632 73.561 12.932 253.438 1.933 433.314 0.768
-105.59 1.647 74.283 12.739 254.160 1.926 434.037 0.769
-104.87 1.663 75.006 12.550 254.883 1.919 434.459 0.769
-104.15 1.679 75.728 12.367 255.605 1.912 435.482 0.770
-103.43 1.695 76.451 12.188 256.327 1.905 436.204 0.771
-102.70 1.712 77.173 12.014 257.050 1.898 436.926 0.771
-101.98 1.729 77.895 11.845 257.772 1.892 437.649 0.772
-101.26 1.747 78.618 11.680 258.494 1.885 438.371 0.772
-100.54 1.765 79.340 11.519 259.217 1.879 439.094 0.772
-99.814 1.784 80.063 11.362 259.939 1.872 439.816 0.773
-99.092 1.803 80.785 11.210 260.662 1.866 440.538 0.773
-98.369 1.822 81.507 11.061 261.384 1.860 441.261 0.773

149
-97.647 1.842 82.230 10.916 262.106 1.854 441.983 0.773
-96.924 1.862 82.952 10.774 262.829 1.848 442.706 0.774
-96.202 1.883 83.675 10.636 263.551 1.842 443.428 0.774
-95.480 1.904 84.397 10.499 264.274 1.837 444.150 0.774
-94.457 1.926 85.119 10.367 264.996 1.831 444.873 0.774
-94.035 1.949 85.842 10.237 265.718 1.826 445.595 0.774
-93.312 1.972 86.564 10.110 266.441 1.820 446.318 0.774
-92.590 1.995 87.287 9.987 267.163 1.815 447.040 0.774
-91.868 2.019 88.009 9.867 267.886 1.809 447.762 0.775
-91.145 2.044 88.731 9.749 268.608 1.804 448.485 0.775
-90.423 2.069 89.454 9.635 269.330 1.799 449.207 0.775
-89.700 2.095 90.176 9.523 270.053 1.794 449.930 0.775
-88.978 2.122 90.899 9.414 270.775 1.789 450.652 0.775
-88.256 2.149 91.621 9.308 271.498 1.784 451.374 0.775
-87.533 2.178 92.343 9.204 272.220 1.779 452.097 0.776
-86.811 2.206 93.066 9.102 272.942 1.774 452.819 0.776
-86.088 2.236 93.788 9.003 273.665 1.770 453.541 0.776
-85.366 2.266 94.511 8.907 274.387 1.765 454.264 0.776
-84.644 2.297 95.233 8.812 275.110 1.760 454.986 0.776
-83.921 2.329 95.955 8.720 275.832 1.756 455.709 0.777
-83.199 2.362 96.678 8.630 276.554 1.751 456.431 0.777
-82.477 2.396 97.400 8.542 277.277 1.747 457.153 0.777
-81.754 2.430 98.123 8.456 277.999 1.742 457.876 0.778
-81.032 2.466 98.845 8.372 278.722 1.738 458.598 0.778
-80.309 2.502 99.567 8.290 279.444 1.733 459.321 0.778
-79.587 2.539 100.290 8.210 280.166 1.729 460.043 0.779
-78.865 2.578 101.012 8.130 280.889 1.725 460.765 0.779
-78.142 2.617 101.735 8.053 281.611 1.720 461.488 0.780
-77.420 2.658 102.457 7.977 282.334 1.716 462.210 0.780
-76.697 2.700 103.179 7.903 283.056 1.712 462.933 0.780
-75.975 2.742 103.902 7.831 283.778 1.708 463.655 0.781
-75.253 2.786 104.624 7.760 284.501 1.703 464.377 0.781
-74.530 2.832 105.346 7.691 285.223 1.699 465.100 0.782
-73.808 2.878 106.069 7.621 285.946 1.695 465.822 0.783
-73.085 2.926 106.791 7.553 286.668 1.691 466.545 0.783
-72.363 2.975 107.514 7.487 287.390 1.687 467.267 0.784
-71.641 3.026 108.236 7.422 288.113 1.683 467.989 0.784
-70.918 3.078 108.958 7.358 288.835 1.678 468.712 0.785
-70.196 3.132 109.681 7.296 289.558 1.674 469.434 0.786
-69.473 3.187 110.403 7.235 290.280 1.670 470.157 0.786
-68.751 3.243 111.126 7.175 291.002 1.666 470.879 0.787
-68.029 3.301 111.848 7.117 291.725 1.661 471.601 0.788
-67.306 3.361 112.570 7.060 292.447 1.657 472.324 0.788

150
-66.584 3.422 113.293 7.005 293.169 1.653 473.046 0.789
-65.861 3.485 114.015 6.950 293.892 1.648 473.769 0.790
-65.139 3.550 114.438 6.897 294.614 1.644 474.491 0.791
-64.417 3.617 115.460 6.844 295.337 1.639 475.213 0.791
-63.694 3.685 116.182 6.793 296.059 1.635 475.936 0.792
-62.972 3.756 116.905 6.743 296.781 1.630 476.658 0.793
-62.249 3.829 117.627 6.694 297.504 1.625 477.381 0.794
-61.527 3.904 118.350 6.646 298.226 1.621 478.103 0.795
-60.805 3.982 119.072 6.598 298.949 1.616 478.825 0.796
-60.082 4.062 119.794 6.551 299.671 1.611 479.548 0.797
-59.360 4.144 120.517 6.505 300.393 1.606 480.270 0.798
-58.637 4.229 121.239 6.460 301.116 1.601 480.992 0.799
-57.915 4.317 121.962 6.416 301.838 1.595 481.715 0.800
-57.193 4.407 122.684 6.372 302.561 1.590 482.437 0.802
-56.470 4.500 123.406 6.329 303.283 1.584 483.160 0.803
-55.748 4.596 124.129 6.287 304.005 1.579 483.882 0.804
-55.025 4.695 124.851 6.246 304.428 1.573 484.604 0.805
-54.303 4.497 125.574 6.206 305.450 1.567 485.327 0.807
-53.581 4.902 126.296 6.166 306.173 1.561 486.049 0.808
-52.858 5.011 127.018 6.127 306.895 1.555 486.772 0.810
-52.136 5.123 127.741 6.088 307.617 1.548 487.494 0.811
-51.413 5.239 128.463 6.049 308.340 1.542 488.216 0.813
-50.691 5.359 129.186 6.011 309.062 1.535 488.939 0.814
-49.969 5.482 129.908 5.974 309.785 1.528 489.661 0.816
-49.246 5.609 130.630 5.937 310.507 1.521 490.384 0.818
-48.524 5.741 131.353 5.901 311.229 1.514 491.106 0.819
-47.801 5.876 132.075 5.865 311.952 1.506 491.828 0.821
-47.079 6.016 132.798 5.830 312.674 1.499 492.551 0.823
-46.357 6.160 133.520 5.795 313.397 1.491 493.273 0.824
-45.634 6.309 134.242 5.760 314.119 1.483 493.996 0.826
-44.912 6.463 134.965 5.726 314.841 1.474 494.418 0.828
-44.190 6.622 135.687 5.692 315.564 1.466 495.440 0.830
-43.467 6.786 136.410 5.658 316.286 1.457 496.163 0.832
-42.745 6.954 137.132 5.624 317.009 1.448 496.885 0.833
-42.022 7.127 137.854 5.590 317.731 1.439 497.608 0.835
-41.300 7.305 138.577 5.556 318.453 1.429 498.330 0.837
-40.578 7.488 139.299 5.523 319.176 1.420 499.052 0.839
-39.855 7.678 140.022 5.489 319.898 1.410 499.775 0.841
-39.133 7.873 140.744 5.455 320.621 1.401 500.497 0.843
-38.410 8.074 141.466 5.422 321.343 1.391 501.220 0.845
-37.688 8.282 142.189 5.388 322.065 1.381 501.942 0.847
-36.966 8.496 142.911 5.355 322.788 1.371 502.664 0.849
-36.243 8.717 143.633 5.322 323.510 1.361 503.387 0.851

151
-35.521 8.944 144.356 5.288 324.233 1.350 504.109 0.853
-34.498 9.178 145.078 5.255 324.955 1.340 504.832 0.855
-34.076 9.419 145.801 5.221 325.677 1.329 505.554 0.857
-33.354 9.666 146.523 5.188 326.400 1.319 506.276 0.859
-32.631 9.921 147.245 5.154 327.122 1.308 506.999 0.861
-31.909 10.183 147.968 5.121 327.845 1.297 507.721 0.863
-31.186 10.452 148.690 5.088 328.567 1.286 508.444 0.865
-30.464 10.729 149.413 5.054 329.289 1.275 509.166 0.868
-29.742 11.013 150.135 5.021 330.012 1.264 509.888 0.870
-29.019 11.304 150.857 4.988 330.734 1.253 510.611 0.872
-28.297 11.602 151.580 4.955 331.457 1.242 511.333 0.874
-27.574 11.907 152.302 4.922 332.179 1.231 512.056 0.876
-26.852 12.219 153.025 4.889 332.901 1.219 512.778 0.879
-26.130 12.537 153.747 4.856 333.624 1.208 513.500 0.881
-25.407 12.863 154.469 4.824 334.346 1.197 514.223 0.883
-24.685 13.194 155.192 4.491 335.068 1.185 514.945 0.885
-23.962 13.530 155.914 4.458 335.791 1.174 515.668 0.888
-23.240 13.875 156.637 4.426 336.513 1.162 516.390 0.890
-22.518 14.231 157.359 4.693 337.236 1.151 517.112 0.893
-21.795 14.600 158.081 4.660 337.958 1.140 517.835 0.895
-21.073 14.985 158.804 4.627 338.680 1.129 518.557 0.897
-20.350 15.388 159.526 4.594 339.403 1.119 519.280 0.900
-19.628 15.812 160.249 4.561 340.125 1.110 520.002 0.902
-18.906 16.259 160.971 4.528 340.848 1.100 520.724 0.905
-18.183 16.734 161.693 4.495 341.570 1.091 521.447 0.907
-17.461 17.238 162.416 4.462 342.292 1.083 522.169 0.910
-16.738 17.775 163.138 4.429 343.015 1.075 522.891 0.913
-16.016 18.348 163.861 4.395 343.737 1.068 523.614 0.915
-15.294 18.959 164.583 4.362 344.460 1.062 524.336 0.918
-14.571 19.602 165.305 4.329 345.182 1.058 525.059 0.921
-13.849 20.285 166.028 4.296 345.904 1.054 525.781 0.923
-13.126 21.012 166.750 4.263 346.627 1.052 526.503 0.926
-12.404 21.788 167.473 4.230 347.349 1.051 527.226 0.929
-11.682 22.612 168.195 4.197 348.072 1.052 527.948 0.932
-10.959 23.484 168.917 4.164 348.794 1.054 528.671 0.934
-10.237 24.390 169.640 4.131 349.516 1.057 529.393 0.937
-9.514 25.348 170.362 4.098 350.239 1.061 530.115 0.940
-8.792 26.357 171.085 4.066 350.961 1.066 530.838 0.943
-8.070 27.409 171.807 4.033 351.684 1.071 531.560 0.945
-7.347 28.496 172.529 4.000 352.406 1.076 532.283 0.948
-6.625 29.629 173.252 3.968 353.128 1.081 533.005 0.951
-5.903 30.801 173.974 3.936 353.851 1.085 533.727 0.954
-5.180 32.001 174.697 3.904 354.573 1.088 534.450 0.957

152
-4.458 33.236 175.419 3.872 355.296 1.091 535.172 0.960
-3.735 34.497 176.141 3.840 356.018 1.093 535.895 0.962
-3.013 35.774 176.864 3.809 356.740 1.094 536.617 0.965
-2.291 37.075 177.586 3.778 357.463 1.094 537.339 0.968
-1.568 38.380 178.309 3.746 358.185 1.093 538.062 0.971
-0.846 39.692 179.031 3.716 358.908 1.090 538.784 0.974
539.507 0.976

153
Appendix T - Ricardo Wave Data Edited for Solidworks

After interpolating the raw data to obtain values at every whole degree value,

multiplying the value in bar units by 100 gives a pressure value in kPa. Multiplying that

value by the area of the piston crown gives a force value at each degree in Newton units

which SolidWorks expects. The data was also rearranged to go from 0o to 720o, as

opposed to the -180o to 540o as was imported from Ricardo Wave.

0 46623.79 180 4156.053 360 1226.053 540 1106.541


1 48647.59 181 4108.698 361 1216.591 541 1106.541
2 50635.8 182 4061.847 362 1203.455 542 1110.999
3 52561.85 183 4015.575 363 1187.146 543 1115.477
4 54403.65 184 3969.801 364 1168.157 544 1119.979
5 56143.66 185 3924.608 365 1146.655 545 1124.514
6 57753.77 186 3880.063 366 1123.747 546 1129.082
7 59232.06 187 3836.204 367 1100.044 547 1133.7
8 60540.59 188 3793.156 368 1076.779 548 1138.367
9 61680.22 189 3750.789 369 1055.008 549 1143.09
10 62632.52 190 3709.171 370 1035.66 550 1147.885
11 63371.21 191 3668.213 371 1018.459 551 1152.75
12 63922.2 192 3627.76 372 1003.015 552 1157.7
13 64272.74 193 3588.029 373 988.5654 553 1162.743
14 64413.35 194 3548.946 374 975.0116 554 1167.88
15 64385.92 195 3510.538 375 962.5081 555 1173.133
16 64138.9 196 3472.879 376 950.8938 556 1178.482
17 63732.24 197 3435.867 377 940.0684 557 1183.939
18 63174.65 198 3399.558 378 930.2308 558 1189.506
19 62443.96 199 3363.897 379 921.0255 559 1195.171
20 61601.94 200 3328.844 380 912.7234 560 1200.95
21 60646.91 201 3294.502 381 905.2127 561 1206.837
22 59595.15 202 3260.743 382 898.2622 562 1212.829
23 58453.54 203 3227.619 383 891.5459 563 1218.942
24 57201.88 204 3195.144 384 884.7537 564 1225.16
25 55849.96 205 3163.238 385 878.21 565 1231.497
26 54455.96 206 3131.986 386 871.9751 566 1237.951
27 53038.96 207 3101.293 387 866.0137 567 1244.515
28 51618.68 208 3071.169 388 860.3264 568 1251.212
29 50172.46 209 3041.661 389 854.6735 569 1258.026
30 48730.53 210 3012.676 390 849.3482 570 1264.968

154
31 47298.27 211 2984.279 391 844.6137 571 1272.045
32 45867.12 212 2956.422 392 840.3497 572 1279.243
33 44468.89 213 2929.07 393 836.5645 573 1286.585
34 43100.66 214 2902.313 394 833.2112 574 1294.054
35 41765.57 215 2876.047 395 830.1412 575 1301.65
36 40463.71 216 2850.32 396 827.0152 576 1309.396
37 39206.06 217 2825.074 397 824.2726 577 1317.278
38 37984.54 218 2800.221 398 821.9357 578 1325.32
39 36803.08 219 2775.881 399 819.9467 579 1333.52
40 35664.56 220 2751.987 400 818.1292 580 1341.865
41 34564.2 221 2728.545 401 816.6084 581 1350.382
42 33497.62 222 2705.592 402 815.4662 582 1358.973
43 32465.59 223 2683.056 403 814.7364 583 1367.586
44 31472.42 224 2660.992 404 814.5127 584 1376.29
45 30524.16 225 2639.368 405 814.6116 585 1385.161
46 29611.85 226 2618.161 406 814.8601 586 1394.317
47 28736.1 227 2597.471 407 815.4909 587 1403.78
48 27896.43 228 2577.185 408 816.4564 588 1413.569
49 27088.66 229 2557.338 409 817.7575 589 1423.752
50 26313.29 230 2537.932 410 819.277 590 1434.286
51 25560.18 231 2518.912 411 820.9843 591 1445.233
52 24836.99 232 2500.339 412 822.8541 592 1456.605
53 24145.53 233 2482.151 413 824.8386 593 1468.385
54 23480.8 234 2464.33 414 826.9317 594 1480.688
55 22845.92 235 2446.905 415 829.1053 595 1493.448
56 22236.34 236 2429.829 416 831.3421 596 1506.664
57 21650.85 237 2413.144 417 833.6402 597 1520.333
58 21091.2 238 2396.822 418 835.9788 598 1534.411
59 20552.55 239 2380.837 419 838.3552 599 1548.981
60 20030.96 240 2365.244 420 840.7617 600 1563.999
61 19527.64 241 2349.97 421 843.1844 601 1579.386
62 19042.88 242 2335.042 422 845.6013 602 1595.25
63 18579.63 243 2320.462 423 847.9998 603 1611.591
64 18133.26 244 2306.187 424 850.3981 604 1628.485
65 17704.35 245 2292.264 425 852.7697 605 1645.939
66 17292.85 246 2278.642 426 855.0997 606 1663.922
67 16896 247 2265.321 427 857.3592 607 1682.565
68 16515.54 248 2252.327 428 859.5302 608 1701.781
69 16149.07 249 2239.605 429 861.5975 609 1721.627
70 15795.48 250 2227.188 430 863.4825 610 1742.152
71 15453.2 251 2215.053 431 865.1596 611 1763.273
72 15120.76 252 2203.178 432 866.6845 612 1784.766
73 14801.13 253 2191.562 433 868.0734 613 1806.878

155
74 14493.38 254 2180.172 434 869.3408 614 1829.666
75 14196.08 255 2169.047 435 870.4493 615 1853.269
76 13910.86 256 2158.19 436 871.4283 616 1877.581
77 13635.22 257 2147.565 437 872.2724 617 1902.715
78 13369.46 258 2137.203 438 872.9777 618 1928.688
79 13113.64 259 2127.068 439 873.574 619 1955.452
80 12866.18 260 2117.156 440 874.0595 620 1983.205
81 12628.11 261 2107.482 441 874.4547 621 2011.833
82 12398.1 262 2098.011 442 874.7778 622 2041.41
83 12175.55 263 2088.765 443 875.0374 623 2072.04
84 11959.68 264 2079.727 444 875.2616 624 2103.626
85 11749.41 265 2070.876 445 875.4633 625 2136.364
86 11546.61 266 2062.245 446 875.6553 626 2170.192
87 11350.77 267 2053.784 447 875.8508 627 2205.119
88 11161.07 268 2045.504 448 876.0607 628 2241.377
89 10978.47 269 2037.398 449 876.2863 629 2278.797
90 10801.53 270 2029.435 450 876.5314 630 2317.564
91 10630.43 271 2021.632 451 876.8041 631 2357.721
92 10465.27 272 2013.96 452 877.0972 632 2399.188
93 10305.12 273 2006.413 453 877.4175 633 2442.293
94 10150.7 274 1998.993 454 877.7665 634 2486.848
95 10001.15 275 1991.677 455 878.1456 635 2532.988
96 9856.218 276 1984.464 456 878.566 636 2580.903
97 9716.363 277 1977.342 457 879.0246 637 2630.432
98 9580.641 278 1970.304 458 879.5295 638 2681.911
99 9449.343 279 1963.373 459 880.0813 639 2735.249
100 9321.632 280 1956.526 460 880.674 640 2790.46
101 9196.826 281 1949.761 461 881.3146 641 2847.947
102 9076.254 282 1943.077 462 881.9975 642 2907.439
103 8959.205 283 1936.455 463 882.7236 643 2969.251
104 8845.8 284 1929.897 464 883.4967 644 3033.519
105 8735.901 285 1923.383 465 884.3094 645 3100.037
106 8627.003 286 1916.88 466 885.1651 646 3169.387
107 8520.846 287 1910.366 467 886.0596 647 3241.275
108 8417.821 288 1903.832 468 886.9907 648 3315.981
109 8317.77 289 1897.266 469 887.9678 649 3393.904
110 8221.018 290 1890.66 470 888.9813 650 3474.686
111 8127.027 291 1884.006 471 890.036 651 3558.923
112 8035.97 292 1877.279 472 891.1353 652 3646.311
113 7947.679 293 1870.478 473 892.2778 653 3736.466
114 7861.807 294 1863.579 474 893.4774 654 3830.383
115 7778.743 295 1856.56 475 894.7336 655 3927.83
116 7697.849 296 1849.424 476 896.0528 656 4029.388

156
117 7619.097 297 1842.129 477 897.4483 657 4135.224
118 7542.522 298 1834.676 478 898.915 658 4245.104
119 7467.79 299 1827.055 479 900.4708 659 4360.072
120 7394.845 300 1819.225 480 902.1166 660 4479.778
121 7323.235 301 1811.198 481 903.8551 661 4604.584
122 7253.474 302 1802.931 482 905.7024 662 4735.05
123 7185.714 303 1794.413 483 907.6412 663 4870.664
124 7119.571 304 1785.642 484 909.6799 664 5012.48
125 7055.164 305 1776.487 485 911.8185 665 5160.324
126 6992.187 306 1767.034 486 914.0425 666 5314.194
127 6930.295 307 1757.242 487 916.3598 667 5475.492
128 6869.643 308 1747.114 488 918.7518 668 5643.248
129 6810.006 309 1736.653 489 921.2111 669 5819.04
130 6751.431 310 1725.801 490 923.7426 670 6002.888
131 6694.034 311 1714.581 491 926.3254 671 6194.2
132 6637.565 312 1702.973 492 928.96 672 6394.831
133 6582.123 313 1690.887 493 931.6419 673 6603.829
134 6527.604 314 1678.359 494 934.3673 674 6821.861
135 6473.921 315 1665.324 495 937.1463 675 7050.287
136 6420.809 316 1651.773 496 939.9736 676 7288.594
137 6367.736 317 1637.739 497 942.8578 677 7538.341
138 6314.77 318 1623.243 498 945.7977 678 7797.749
139 6261.931 319 1608.509 499 948.7835 679 8066.358
140 6209.212 320 1593.521 500 951.818 680 8347.767
141 6156.625 321 1578.248 501 954.8919 681 8640.4
142 6104.138 322 1562.719 502 958.0015 682 8945.81
143 6051.756 323 1546.901 503 961.1482 683 9265.323
144 5999.496 324 1530.836 504 964.3228 684 9597.841
145 5947.127 325 1514.545 505 967.5246 685 9945.576
146 5894.649 326 1497.996 506 970.7539 686 10306.79
147 5842.276 327 1481.215 507 974.0092 687 10682.25
148 5790.036 328 1464.18 508 977.3005 688 11073.61
149 5737.953 329 1447.01 509 980.625 689 11479.31
150 5685.995 330 1429.767 510 983.9932 690 11902.28
151 5634.186 331 1412.407 511 987.4077 691 12340.61
152 5582.517 332 1394.922 512 990.8659 692 12793.39
153 5530.976 333 1377.294 513 994.379 693 13263.2
154 5479.606 334 1359.477 514 997.9438 694 13746.96
155 5428.384 335 1341.572 515 1001.564 695 14245.73
156 5377.208 336 1323.576 516 1005.251 696 14758.97
157 5325.931 337 1305.54 517 1008.998 697 15283.07
158 5274.538 338 1288.202 518 1012.8 698 15826.64
159 5223.006 339 1272.279 519 1016.66 699 16394.46

157
160 5171.357 340 1256.847 520 1020.576 700 16993.93
161 5119.604 341 1242.088 521 1024.56 701 17636.31
162 5067.762 342 1228.356 522 1028.599 702 18323.35
163 5015.869 343 1215.931 523 1032.696 703 19070.61
164 4963.935 344 1205.621 524 1036.846 704 19883.54
165 4911.983 345 1197.429 525 1041.04 705 20766.64
166 4860.107 346 1191.851 526 1045.279 706 21738.28
167 4808.392 347 1189.309 527 1049.553 707 22780.61
168 4756.824 348 1189.523 528 1053.857 708 23918.45
169 4705.291 349 1192.842 529 1058.188 709 25163.49
170 4653.753 350 1198.837 530 1062.537 710 26504.88
171 4602.433 351 1206.341 531 1066.902 711 27940.54
172 4551.394 352 1214.176 532 1071.278 712 29481.4
173 4500.627 353 1221.41 533 1075.661 713 31118.1
174 4450.132 354 1227.374 534 1080.05 714 32845.01
175 4400.015 355 1232.292 535 1084.444 715 34656.92
176 4350.303 356 1236.081 536 1088.845 716 36541.39
177 4301.049 357 1237.486 537 1093.254 717 38493.25
178 4252.257 358 1236.483 538 1097.672 718 40486.43
179 4203.888 359 1232.7 539 1102.101 719 42525.53
720 44574.88

158
Appendix U - PV Data

The following data is the edited version of the data from Appendix S, used to

obtain a proper Pressure vs Volume graph for the system. The data for both the degree

and bar values were directly from the data, but the volume was calculated from the

SolidWorks model for each degree of rotation with a minimum volume assumed and

added to the volume value.

Deg. Vol. Pres. Deg. Vol. Pres. Deg. Vol. Pres.


(cm3) (bar) (cm3) (bar) (cm3) (bar)
0 0.18 41.22 240 1738.07 2.09 480 1738.07 0.80
1 0.40 43.01 241 1724.91 2.08 481 1751.02 0.80
2 1.06 44.47 242 1711.54 2.06 482 1763.74 0.80
3 2.15 46.47 243 1697.94 2.05 483 1776.24 0.80
4 3.69 48.10 244 1684.13 2.04 484 1788.52 0.80
5 5.65 49.64 245 1670.11 2.03 485 1800.57 0.81
6 8.06 51.06 246 1655.87 2.01 486 1812.41 0.81
7 10.90 52.37 247 1641.42 2.00 487 1824.01 0.81
8 14.17 53.53 248 1626.77 1.99 488 1835.40 0.81
9 17.88 54.54 249 1611.91 1.98 489 1846.56 0.81
10 22.01 55.38 250 1596.84 1.97 490 1857.50 0.82
11 26.57 56.03 251 1581.57 1.96 491 1868.21 0.82
12 31.56 56.52 252 1566.10 1.95 492 1878.70 0.82
13 36.96 56.83 253 1550.43 1.94 493 1888.96 0.82
14 42.79 56.95 254 1534.57 1.93 494 1899.00 0.83
15 49.03 56.93 255 1518.52 1.92 495 1908.81 0.83
16 55.69 56.71 256 1502.28 1.91 496 1918.40 0.83
17 62.76 56.35 257 1485.85 1.90 497 1927.77 0.83
18 70.23 55.86 258 1469.24 1.89 498 1936.91 0.84
19 78.11 55.21 259 1452.46 1.88 499 1945.82 0.84
20 86.38 54.47 260 1435.50 1.87 500 1954.51 0.84
21 95.05 53.62 261 1418.36 1.86 501 1962.98 0.84
22 104.11 52.69 262 1401.06 1.86 502 1971.23 0.85
23 113.55 51.68 263 1383.60 1.85 503 1979.25 0.85
24 123.38 50.58 264 1365.98 1.84 504 1987.05 0.85
25 133.58 49.38 265 1348.20 1.83 505 1994.63 0.86
26 144.15 48.15 266 1330.28 1.82 506 2001.98 0.86
27 155.08 46.90 267 1312.21 1.82 507 2009.12 0.86
28 166.37 45.64 268 1294.00 1.81 508 2016.03 0.86
29 178.02 44.36 269 1275.66 1.80 509 2022.73 0.87

159
30 190.01 43.09 270 1257.19 1.79 510 2029.21 0.87
31 202.35 41.82 271 1238.60 1.79 511 2035.46 0.87
32 215.02 40.55 272 1219.88 1.78 512 2041.50 0.88
33 228.02 39.32 273 1201.06 1.77 513 2047.33 0.88
34 241.34 38.11 274 1182.14 1.77 514 2052.93 0.88
35 254.98 36.93 275 1163.11 1.76 515 2058.32 0.89
36 268.93 35.78 276 1143.99 1.75 516 2063.49 0.89
37 283.17 34.66 277 1124.48 1.75 517 2068.44 0.89
38 297.71 33.58 278 1105.50 1.74 518 2073.19 0.90
39 312.54 32.54 279 1086.14 1.74 519 2077.71 0.90
40 327.65 31.53 280 1066.72 1.73 520 2082.02 0.90
41 343.03 30.56 281 1047.23 1.72 521 2086.12 0.91
42 358.68 29.62 282 1027.70 1.72 522 2090.01 0.91
43 374.58 28.71 283 1008.12 1.71 523 2093.68 0.91
44 390.73 27.83 284 988.51 1.71 524 2097.14 0.92
45 407.12 26.99 285 968.86 1.70 525 2100.39 0.92
46 423.74 26.18 286 949.20 1.69 526 2103.42 0.92
47 440.59 25.41 287 929.52 1.69 527 2106.25 0.93
48 457.66 24.67 288 909.84 1.68 528 2108.86 0.93
49 474.93 23.95 289 890.16 1.68 529 2111.27 0.94
50 492.40 23.27 290 870.49 1.67 530 2113.46 0.94
51 510.06 22.60 291 850.83 1.67 531 2115.45 0.94
52 527.91 21.96 292 831.21 1.66 532 2117.22 0.95
53 545.93 21.35 293 811.62 1.65 533 2118.79 0.95
54 564.12 20.76 294 792.08 1.65 534 2120.14 0.95
55 582.46 20.20 295 772.59 1.64 535 2121.29 0.96
56 600.95 19.66 296 753.15 1.64 536 2122.23 0.96
57 619.58 19.14 297 733.79 1.63 537 2122.96 0.97
58 638.34 18.65 298 714.51 1.62 538 2123.48 0.97
59 657.22 18.17 299 695.32 1.62 539 2123.79 0.97
60 676.22 17.71 300 676.22 1.61 540 2123.90 0.98
61 695.32 17.27 301 657.22 1.60 541 2123.79 0.98
62 714.51 16.84 302 638.34 1.59 542 2123.48 0.98
63 733.79 16.43 303 619.58 1.59 543 2122.96 0.99
64 753.15 16.03 304 600.95 1.58 544 2122.23 0.99
65 772.59 15.65 305 582.46 1.57 545 2121.29 0.99
66 792.08 15.29 306 564.12 1.56 546 2120.14 1.00
67 811.62 14.94 307 545.93 1.55 547 2118.79 1.00
68 831.21 14.60 308 527.91 1.54 548 2117.22 1.01
69 850.83 14.28 309 510.06 1.54 549 2115.45 1.01
70 870.49 13.97 310 492.40 1.53 550 2113.46 1.01
71 890.16 13.66 311 474.93 1.52 551 2111.27 1.02
72 909.84 13.37 312 457.66 1.51 552 2108.86 1.02

160
73 929.52 13.09 313 440.59 1.50 553 2106.25 1.03
74 949.20 12.81 314 423.74 1.48 554 2103.42 1.03
75 968.86 12.55 315 407.12 1.47 555 2100.39 1.04
76 988.51 12.30 316 390.73 1.46 556 2097.14 1.04
77 1008.12 12.06 317 374.58 1.45 557 2093.68 1.05
78 1027.70 11.82 318 358.68 1.44 558 2090.01 1.05
79 1047.23 11.59 319 343.03 1.42 559 2086.12 1.06
80 1066.72 11.38 320 327.65 1.41 560 2082.02 1.06
81 1086.14 11.17 321 312.54 1.40 561 2077.71 1.07
82 1105.50 10.96 322 297.71 1.38 562 2073.19 1.07
83 1124.48 10.77 323 283.17 1.37 563 2068.44 1.08
84 1143.99 10.57 324 268.93 1.35 564 2063.49 1.08
85 1163.11 10.39 325 254.98 1.34 565 2058.32 1.09
86 1182.14 10.21 326 241.34 1.32 566 2052.93 1.09
87 1201.06 10.04 327 228.02 1.31 567 2047.33 1.10
88 1219.88 9.87 328 215.02 1.29 568 2041.50 1.11
89 1238.60 9.71 329 202.35 1.28 569 2035.46 1.11
90 1257.19 9.55 330 190.01 1.26 570 2029.21 1.12
91 1275.66 9.40 331 178.02 1.25 571 2022.73 1.12
92 1294.00 9.25 332 166.37 1.23 572 2016.03 1.13
93 1312.21 9.11 333 155.08 1.22 573 2009.12 1.14
94 1330.28 8.97 334 144.15 1.20 574 2001.98 1.14
95 1348.20 8.84 335 133.58 1.19 575 1994.63 1.15
96 1365.98 8.71 336 123.38 1.17 576 1987.05 1.16
97 1383.60 8.59 337 113.55 1.15 577 1979.25 1.16
98 1401.06 8.47 338 104.11 1.14 578 1971.23 1.17
99 1418.36 8.35 339 95.05 1.12 579 1962.98 1.18
100 1435.50 8.24 340 86.38 1.11 580 1954.51 1.19
101 1452.46 8.13 341 78.11 1.10 581 1945.82 1.19
102 1469.24 8.02 342 70.23 1.09 582 1936.91 1.20
103 1485.85 7.92 343 62.76 1.08 583 1927.77 1.21
104 1502.28 7.82 344 55.69 1.07 584 1918.40 1.22
105 1518.52 7.72 345 49.03 1.06 585 1908.81 1.22
106 1534.57 7.63 346 42.79 1.05 586 1899.00 1.23
107 1550.43 7.53 347 36.96 1.05 587 1888.96 1.24
108 1566.10 7.44 348 31.56 1.05 588 1878.70 1.25
109 1581.57 7.35 349 26.57 1.05 589 1868.21 1.26
110 1596.84 7.27 350 22.01 1.06 590 1857.50 1.27
111 1611.91 7.19 351 17.88 1.07 591 1846.56 1.28
112 1626.77 7.11 352 14.17 1.07 592 1835.40 1.29
113 1641.42 7.03 353 10.90 1.08 593 1824.01 1.30
114 1655.87 6.95 354 8.06 1.09 594 1812.41 1.31
115 1670.11 6.88 355 5.65 1.09 595 1800.57 1.32

161
116 1684.13 6.81 356 3.69 1.09 596 1788.52 1.33
117 1697.94 6.74 357 2.15 1.09 597 1776.24 1.34
118 1711.54 6.67 358 1.06 1.09 598 1763.74 1.36
119 1724.91 6.60 359 0.40 1.09 599 1751.02 1.37
120 1738.07 6.54 360 0.18 1.08 600 1738.07 1.38
121 1751.02 6.48 361 0.40 1.08 601 1724.91 1.40
122 1763.74 6.41 362 1.06 1.06 602 1711.54 1.41
123 1776.24 6.35 363 2.15 1.05 603 1697.94 1.42
124 1788.52 6.29 364 3.69 1.03 604 1684.13 1.44
125 1800.57 6.24 365 5.65 1.01 605 1670.11 1.46
126 1812.41 6.18 366 8.06 0.99 606 1655.87 1.47
127 1824.01 6.13 367 10.90 0.97 607 1641.42 1.49
128 1835.40 6.07 368 14.17 0.95 608 1626.77 1.50
129 1846.56 6.02 369 17.88 0.93 609 1611.91 1.52
130 1857.50 5.97 370 22.01 0.92 610 1596.84 1.54
131 1868.21 5.92 371 26.57 0.90 611 1581.57 1.56
132 1878.70 5.87 372 31.56 0.89 612 1566.10 1.58
133 1888.96 5.82 373 36.96 0.87 613 1550.43 1.60
134 1899.00 5.77 374 42.79 0.86 614 1534.57 1.62
135 1908.81 5.72 375 49.03 0.85 615 1518.52 1.64
136 1918.40 5.68 376 55.69 0.84 616 1502.28 1.66
137 1927.77 5.63 377 62.76 0.83 617 1485.85 1.68
138 1936.91 5.58 378 70.23 0.82 618 1469.24 1.71
139 1945.82 5.54 379 78.11 0.81 619 1452.46 1.73
140 1954.51 5.49 380 86.38 0.81 620 1435.50 1.75
141 1962.98 5.44 381 95.05 0.80 621 1418.36 1.78
142 1971.23 5.40 382 104.11 0.79 622 1401.06 1.80
143 1979.25 5.35 383 113.55 0.79 623 1383.60 1.83
144 1987.05 5.30 384 123.38 0.78 624 1365.98 1.86
145 1994.63 5.26 385 133.58 0.78 625 1348.20 1.89
146 2001.98 5.21 386 144.15 0.77 626 1330.28 1.92
147 2009.12 5.17 387 155.08 0.77 627 1312.21 1.95
148 2016.03 5.12 388 166.37 0.76 628 1294.00 1.98
149 2022.73 5.07 389 178.02 0.76 629 1275.66 2.01
150 2029.21 5.03 390 190.01 0.75 630 1257.19 2.05
151 2035.46 4.98 391 202.35 0.75 631 1238.60 2.08
152 2041.50 4.94 392 215.02 0.74 632 1219.88 2.12
153 2047.33 4.89 393 228.02 0.74 633 1201.06 2.16
154 2052.93 4.84 394 241.34 0.74 634 1182.14 2.20
155 2058.32 4.80 395 254.98 0.73 635 1163.11 2.24
156 2063.49 4.45 396 268.93 0.73 636 1143.99 2.28
157 2068.44 4.41 397 283.17 0.73 637 1124.48 2.33
158 2073.19 4.66 398 297.71 0.73 638 1105.50 2.37

162
159 2077.71 4.62 399 312.54 0.72 639 1086.14 2.42
160 2082.02 4.57 400 327.65 0.72 640 1066.72 2.47
161 2086.12 4.53 401 343.03 0.72 641 1047.23 2.52
162 2090.01 4.48 402 358.68 0.72 642 1027.70 2.57
163 2093.68 4.43 403 374.58 0.72 643 1008.12 2.63
164 2097.14 4.39 404 390.73 0.72 644 988.51 2.68
165 2100.39 4.34 405 407.12 0.72 645 968.86 2.74
166 2103.42 4.30 406 423.74 0.72 646 949.20 2.80
167 2106.25 4.25 407 440.59 0.72 647 929.52 2.87
168 2108.86 4.21 408 457.66 0.72 648 909.84 2.93
169 2111.27 4.16 409 474.93 0.72 649 890.16 3.00
170 2113.46 4.11 410 492.40 0.72 650 870.49 3.07
171 2115.45 4.07 411 510.06 0.73 651 850.83 3.15
172 2117.22 4.02 412 527.91 0.73 652 831.21 3.22
173 2118.79 3.98 413 545.93 0.73 653 811.62 3.30
174 2120.14 3.93 414 564.12 0.73 654 792.08 3.39
175 2121.29 3.89 415 582.46 0.73 655 772.59 3.47
176 2122.23 3.85 416 600.95 0.74 656 753.15 3.56
177 2122.96 3.80 417 619.58 0.74 657 733.79 3.66
178 2123.48 3.76 418 638.34 0.74 658 714.51 3.75
179 2123.79 3.72 419 657.22 0.74 659 695.32 3.86
180 2123.90 3.67 420 676.22 0.74 660 676.22 3.96
181 2123.79 3.63 421 695.32 0.75 661 657.22 4.07
182 2123.48 3.59 422 714.51 0.75 662 638.34 4.19
183 2122.96 3.55 423 733.79 0.75 663 619.58 4.31
184 2122.23 3.51 424 753.15 0.75 664 600.95 4.43
185 2121.29 3.47 425 772.59 0.75 665 582.46 4.56
186 2120.14 3.43 426 792.08 0.76 666 564.12 4.40
187 2118.79 3.39 427 811.62 0.76 667 545.93 4.84
188 2117.22 3.35 428 831.21 0.76 668 527.91 4.99
189 2115.45 3.32 429 850.83 0.76 669 510.06 5.15
190 2113.46 3.28 430 870.49 0.76 670 492.40 5.31
191 2111.27 3.24 431 890.16 0.76 671 474.93 5.48
192 2108.86 3.21 432 909.84 0.77 672 457.66 5.65
193 2106.25 3.17 433 929.52 0.77 673 440.59 5.84
194 2103.42 3.14 434 949.20 0.77 674 423.74 6.03
195 2100.39 3.10 435 968.86 0.77 675 407.12 6.23
196 2097.14 3.07 436 988.51 0.77 676 390.73 6.44
197 2093.68 3.04 437 1008.12 0.77 677 374.58 6.67
198 2090.01 3.01 438 1027.70 0.77 678 358.68 6.89
199 2086.12 2.97 439 1047.23 0.77 679 343.03 7.13
200 2082.02 2.94 440 1066.72 0.77 680 327.65 7.38
201 2077.71 2.91 441 1086.14 0.77 681 312.54 7.64

163
202 2073.19 2.88 442 1105.50 0.77 682 297.71 7.91
203 2068.44 2.85 443 1124.48 0.77 683 283.17 8.19
204 2063.49 2.83 444 1143.99 0.77 684 268.93 8.49
205 2058.32 2.80 445 1163.11 0.77 685 254.98 8.79
206 2052.93 2.77 446 1182.14 0.77 686 241.34 9.11
207 2047.33 2.74 447 1201.06 0.77 687 228.02 9.44
208 2041.50 2.72 448 1219.88 0.77 688 215.02 9.79
209 2035.46 2.69 449 1238.60 0.77 689 202.35 10.15
210 2029.21 2.66 450 1257.19 0.78 690 190.01 10.52
211 2022.73 2.64 451 1275.66 0.78 691 178.02 10.91
212 2016.03 2.61 452 1294.00 0.78 692 166.37 11.31
213 2009.12 2.59 453 1312.21 0.78 693 155.08 11.73
214 2001.98 2.57 454 1330.28 0.78 694 144.15 12.15
215 1994.63 2.54 455 1348.20 0.78 695 133.58 12.60
216 1987.05 2.52 456 1365.98 0.78 696 123.38 13.05
217 1979.25 2.50 457 1383.60 0.78 697 113.55 13.51
218 1971.23 2.48 458 1401.06 0.78 698 104.11 13.99
219 1962.98 2.45 459 1418.36 0.78 699 95.05 14.50
220 1954.51 2.43 460 1435.50 0.78 700 86.38 15.03
221 1945.82 2.41 461 1452.46 0.78 701 78.11 15.59
222 1936.91 2.39 462 1469.24 0.78 702 70.23 16.20
223 1927.77 2.37 463 1485.85 0.78 703 62.76 16.86
224 1918.40 2.35 464 1502.28 0.78 704 55.69 17.58
225 1908.81 2.33 465 1518.52 0.78 705 49.03 18.36
226 1899.00 2.31 466 1534.57 0.78 706 42.79 19.22
227 1888.96 2.30 467 1550.43 0.78 707 36.96 20.14
228 1878.70 2.28 468 1566.10 0.78 708 31.56 21.15
229 1868.21 2.26 469 1581.57 0.79 709 26.57 22.25
230 1857.50 2.24 470 1596.84 0.79 710 22.01 23.43
231 1846.56 2.23 471 1611.91 0.79 711 17.88 24.40
232 1835.40 2.21 472 1626.77 0.79 712 14.17 26.07
233 1824.01 2.19 473 1641.42 0.79 713 10.90 27.51
234 1812.41 2.18 474 1655.87 0.79 714 8.06 29.04
235 1800.57 2.16 475 1670.11 0.79 715 5.65 30.64
236 1788.52 2.15 476 1684.13 0.79 716 3.69 32.31
237 1776.24 2.13 477 1697.94 0.79 717 2.15 34.03
238 1763.74 2.12 478 1711.54 0.79 718 1.06 35.80
239 1751.02 2.11 479 1724.91 0.80 719 0.40 37.60
720 0.18 39.41

164

You might also like