2015.02.16


In [1]:
# Standard setup block for running Python code
from __future__ import division, print_function
import os
if os.path.split(os.getcwd())[-1] == "Lab notebooks":
    os.chdir("../../")
    print("Moved to experiment root directory")
from Modules.processing import *
from Modules.plotting import *
plt.style.use("Config/plotstyle.mplstyle")
%matplotlib inline


Moved to experiment root directory

Daily checklist

  • Check tank depth and correct if necessary.
  • Home turbine axis.
  • Home tow axis.
  • Home y-axis.
  • Home z-axis.
  • Wipe any corrosion from turbine mounting frame.
  • Seed and mix tank until Vectrino SNR is approximately 12 dB.

Got to the lab about 1 PM.

Homed turbine, tow, y-, and z-axes.

Filled tank 1--2 mm to get to 2.44 m.

Mixed up seeding from surface with squeegee like yesterday.

2:05 PM -- Dummy tow at 1.0 m/s to mix tank.

2:07 PM -- Another dummy tow. Vectrino SNR looking good.

2:13 PM -- Resuming Wake-1.0-0.75. Confirmed y-position to be correctly scaled.

2:50 PM -- Finished Wake-1.0-0.75. At negative limits RPOS(z) = -0.0360169 and RPOS(y) = -1.526302.

Tried tuning S700 servo drive to use linear encoder as feedback, which did not help with belt resonance--only with final position accuracy, which is not an issue here.

6:26 PM -- Going to try to fill in some of the high TSR runs at 1.0 m/s. Re-homed turbine, tow, y- and z-axes.

Note there is a couple degrees of backlash at the upper turbine drive flange.

6:40 PM -- Did one high TSR run at 1.0 m/s. Lots of resonance with the belt up until about 25 seconds, giving maybe 6 seconds of good data. Going to try a shakedown run at 1.3 m/s to see if we can push the limits of the Re-dependence a bit.

6:51 PM -- Going to do a settling run at 1.3 m/s, since it looks like we can do Re-dependence runs there.

7:14 PM -- Continuing Perf-tsr_0 with runs at 1.3 m/s.

8:04 PM -- Finished Perf-tsr_0 and Perf-tsr_0-b. Re-dependence still looks good. Backing up data.

8:08 PM -- Starting Perf-0.6-b

8:59 PM -- Stopping for the night. Backing up data.


In [84]:
Section("Perf-0.6-b").process(nproc=1, nruns="new")

In [85]:
plot_perf_curves(preliminary=True)



In [66]:
plot_perf_re_dep(dual_xaxes=True, preliminary=True, errorbars=True, normalize_by=1.0)



In [2]:
Section("Wake-1.0-0.75").process(nproc=1, nruns="new")

In [10]:
plot_meancontquiv()
watermark()



In [39]:
# Calculating tare torque test matrix for experiment
def calc_rpm((tow_speed, tsr)):
    omega = tsr*tow_speed/R
    return omega/(2*np.pi)*60.0

lowest = (0.2, 1.0) # tow_speed, tsr
highest = (1.4, 4.0)

rpm_start = calc_rpm(lowest)
rpm_end = calc_rpm(highest)

steps = 25

rpms = np.linspace(rpm_start, rpm_end, steps)
revs = np.ones(len(rpms))*30.0
revs[0] = 4
revs[1] = 8
revs[2] = 12
revs[3] = 16
revs[4] = 20
revs[5] = 24
revs[-1] = 32

df = pd.DataFrame()

df["rpm"] = rpms
df.index.name = "run"
df["revs"] = revs
df.to_csv("Config/Test plan/Tare-torque.csv")
df["minutes"] = revs/rpms
df["samples"] = np.floor(df.minutes*60*2000)
df["samples_per_rev"] = df.samples/df.revs
print("Total time (minutes):", df.minutes.sum())
df


Total time (minutes): 16.6644519302
Out[39]:
rpm revs minutes samples samples_per_rev
run
0 3.553227 4 1.125737 135088 33772.000000
1 7.550607 8 1.059518 127142 15892.750000
2 11.547987 12 1.039142 124697 10391.416667
3 15.545367 16 1.029246 123509 7719.312500
4 19.542747 20 1.023398 122807 6140.350000
5 23.540126 24 1.019536 122344 5097.666667
6 27.537506 30 1.089423 130730 4357.666667
7 31.534886 30 0.951327 114159 3805.300000
8 35.532266 30 0.844303 101316 3377.200000
9 39.529646 30 0.758924 91070 3035.666667
10 43.527026 30 0.689227 82707 2756.900000
11 47.524406 30 0.631255 75750 2525.000000
12 51.521786 30 0.582278 69873 2329.100000
13 55.519166 30 0.540354 64842 2161.400000
14 59.516546 30 0.504062 60487 2016.233333
15 63.513926 30 0.472337 56680 1889.333333
16 67.511306 30 0.444370 53324 1777.466667
17 71.508686 30 0.419529 50343 1678.100000
18 75.506066 30 0.397319 47678 1589.266667
19 79.503446 30 0.377342 45281 1509.366667
20 83.500826 30 0.359278 43113 1437.100000
21 87.498206 30 0.342864 41143 1371.433333
22 91.495586 30 0.327885 39346 1311.533333
23 95.492966 30 0.314159 37699 1256.633333
24 99.490346 32 0.321639 38596 1206.125000

Predicting how much time is left


In [73]:
# Setting things up
setup_time_sec = 3600
n_setup_times = 4

# Seconds per tow at each speed
seconds = {0.6: 100 + 160,
           0.8: 90 + 200,
           1.0: 84 + 240,
           1.2: 80 + 300}

# Wake runs
runs_per_wake = 43
nwake = 26/43
wake_speed = 1.0

# Perf runs
runs_per_perf = 24

# Runs for strut torque and strut covers
strut_covers_runs = 22
strut_torque_runs = strut_covers_runs*2

# Tare drag and torque
tare_drag_runs = 14
tare_torque_runs = 30
tare_drag_dur = 200
tare_torque_dur = 120

total_time_sec = n_setup_times*setup_time_sec + runs_per_wake*nwake*seconds[wake_speed] \
               + strut_covers_runs*seconds[wake_speed] + strut_torque_runs*tare_torque_dur \
               + tare_drag_runs*tare_drag_dur + tare_torque_runs*tare_torque_dur
        
total_hours = total_time_sec/3600
hours_per_day = 10
total_days = total_hours/hours_per_day

print(total_hours, total_days)


11.5644444444 1.15644444444