In the first program exercise (hpv), every time you wanted to evaluate a [velocity,power]
coordinate point you had to invoke the program. It would be much
more convenient to obtain and display a sequence of [velocity,
power] points over an entire range of values. This should be done
using an indexed loop. In this exercise there are two modifications
to be done to the main function module only of program hpvroot.cpp.
None of the functions invoked by the main function should be modified.
1. You will need to separate your program into two files, the
program file hpvloop.cpp and the header file hpvloop.h. In order to see how this is done, we have taken our
pendulum case study
example gfun.cpp from the week3
directory, and separated it into a program file gfun1.cpp and a header file gfun1.h.
2. The program will invoke the real function find_power over a range
of values in a for loop. The paradigm for this exercise
is the program sin.cpp in the week6
directory, in which we display two columns of n coordinate points
using a for loop. Subsequently the coast-down velocity
is evaluated, as in the previous exercise.
Update: 10/5/2007 - as mentioned in class I realise that we have had a basic flaw in the constructor of our class Hpvehicle. Invoking any method of the class should not be dependent on external functions, in this case get_wind() and get_slope(). Thus the constructor needs to initialise all private and public variables of the class, as well as display their values. The modified constructor should thus initialise the wind velocity and slope to zero, and these can be subsequently modified in the main function by calls to functions get_wind() and get_slope().
Thus a typical execution of the program will lead to the following output:
evaluate power vs velocity as a function of wind and slope
hpv initialised as follows:
mass (hpv + rider): 92[kg]
cda (coeff.drag*area): 0.4[sq.m]
cr (coeff.rolling resist): 0.005
local conditions initialised as follws:
gravity acceleration: 9.807[m/s/s]
air density: 1.18[kg/cu.m]
wind velocity: 0[mph]
slope: 0
-----------------------------------------------------
enter wind velocity [mph] - positive for headwind
-1
value entered is -1[mph]
enter slope (height/distance) - positive for uphill
-0.02
value entered is -0.02
new local conditions:
wind velocity = -1[mph]
slope = -0.02
enter low and high velocity bounds [mph]
1 25
values entered are [1,25] [mph]
enter the number of points to evaluate
13
number of points is 13
velocity (mph) power (W)
1.000 -6.015
3.000 -17.796
5.000 -28.417
7.000 -36.884
9.000 -42.201
11.000 -43.374
13.000 -39.409
15.000 -29.311
17.000 -12.086
19.000 13.261
21.000 47.724
23.000 92.298
25.000 147.977
evaluate coastdown velocity
enter required accuracy in coastdown velocity [mph]
0.1
required accuracy is 0.100[mph]
coastdown velocity is 18.016[mph]
|
As in previous exercises notice that the various items of data entry to this program are written in Italics script. In order to enable this program to be graded, this sequence of data entry should be strictly adhered to.
Both the source code file hpvloop.cpp and the header file hpvloop.h should be in your home directory by 10.00 a.m. of the due date.