The question:

Is it possible to drill a straight hole with hot water?

The Answer:

Yes!

86 total holes
57 analyzed holes

Max radial extent occurred on Hole 77 and is 4.82 meters.
Max bounding box area occurred on Hole 55 and is 13.19 square meters.

Geometry Plots Browserhere
Raw Drill Dataraw_data.tar.bz2
Processed Drill Dataprocessed_data.tar.bz2
Geometry Plotsplot_data.tar.bz2
Processing Scriptsscripts.tar.bz2
Drill Mechanical Drawingdrill_drawing.pdf
Drill Navpack Data SheetWatson SHR-360
Depth Pressure Sensor Data SheetParo Scientific Model 8cb4000-I ( 0 to 6000 psi )

Note: Twenty-nine holes where left out of the analysis either due to drill communication issues or that their data was not stored in an accessible database.

Analysis Details:

The IceCube drill telemetry includes a calibrated x/y tilt (two liquid pendulumns), a rotational orientation (fluxgate compass), and a pressure value ( Paroscientific 8CB4000 ).

Tilt Calibration:

The IceCube drill heads where regularly cycled through Madison, WI where their sensor calibrations where checked. The tilt values reported include the calibration offsets.

Rotational Orientation:

The drill's fluxgate compass returns the orientation to the South Magnetic Pole. A constant correction of 27.2 degrees was applied to make the reference greenwich instead of the magnetic pole ( note this offset remained constant throughout drilling, which is technically incorrect ).

Pressure To Depth Conversion:

K  = F * K0;
DEPTH = (C/(K*D))*(exp(-1*K*P0) - exp(-1*K*P))

 D  = density of water at 0C and 0PSI  = 0.99987 g/cm3
 C  = conversion factor PSI -> mH20    = 0.7030696 (for D=1.0000)
 K0 = compressibility of pure water    = 3.44557e-6 /PSI
 K  = compressibility of aerated water = K0*1.0975 = 3.78151e-6 /PSI
 P0 = Ambient Pressure [ PSI - meteorology office ]
 P  = Paro pressure reading [PSI]

Geometry Calculation:


        if heading>north_correction:
            corrected_heading = heading - north_correction
        else:
            corrected_heading = 360.0 + ( heading - north_correction )

        drill_theta = math.sqrt(math.pow(bank_angle, 2.0) + \
                                math.pow(elevation_angle, 2.0))

        if elevation_angle != 0:
            drill_phi = math.atan2(-1.0 * bank_angle, elevation_angle)
            sin_drill_phi = math.sin(drill_phi)
            cos_drill_phi = math.cos(drill_phi)

            rad_heading = math.radians(corrected_heading)
            cos_heading = math.cos(rad_heading)
            sin_heading = math.sin(rad_heading)
            
            space_phi = math.atan2(
                sin_heading + math.tan(drill_phi) * cos_heading,
                cos_heading - math.tan(drill_phi) * sin_heading)

            drill_dx = payout_diff * math.radians(drill_theta) * cos_drill_phi
            drill_dy = payout_diff * math.radians(drill_theta) * sin_drill_phi

            space_dx = drill_dx * cos_heading - \
                       drill_dy * sin_heading

            space_dy = drill_dx * sin_heading + \
                       drill_dy * cos_heading

            x_location = x_location + space_dx
            y_location = y_location + space_dy
            
            output_fd.write("%f\t%f\t%f\n" % ( payout, x_location, y_location))

Verification

The drill data as calculated above forms a portion of the official stage one geometry of the IceCube Detector. The final geometry has rather low resolution and cannot detect any variation from vertical in any of the analyzed holes. The latest dataset (04/14/11) is available here.