Question

I'm trying to represent a hole being drilled using a web based application and I'm having difficulties. I'm in control of the inputs and various variables but unsure of how best to approach the issue.

The simulation currently has these values, they're for test purposes only.

Radius of drill bit= 15 
inches Length of drill = 1000ft 
RPM of drill = 100

The stratigraphic layers have their own properties, and in this instance have:

Name = bla 
Depth = 100ft (models start and finish of each layer - here, 0 to 100ft down)
Permeability = 10 (currently unsure how best to model)

I don't know at the moment how to model the pressure being applied to the drill but a constant can be used if need be.

I thought I'd be able to calculate the volume of the drillbit and then apply a percentage of sorts that would represent the strength of the material so as to slow the progress of the drill.

In it's simplest form I'm trying to figure out how best to represent a hole being drilled and then calculate the area of the hole as it's being drilled.

Here's my test code:

The time variable is passed in my the way of a JavaScript Date() object. I'm hoping on using the Date object to represent the actual amount that may be drilled real time.

The test case of the canvas that is modelling it is 800px deep with a well depth of 20000ft = 25ft per pixel. I'm still trying to make sense of the output and correct it, it's a slow process. Below is the rudimentary test code.

//    aggregate function:
//    depth(t) = (a * RPM - b * density) * t
function depthOverTime(time, density, a, b){
    var aa = (a * RPM - b * density) * time;
    //(1 * 50 - 1 * 20) * 60
    //(50 - 20) * 60
    //30 * 60
    //1800
    console.log("DOT: " + roundTo2(aa)+"ft^3" + "T: " +time);
    return aa;
}

function volumeExcavated(t){

    var rad = 15 * 0.083333;
    dot = depthOverTime(t,20,1,1);
    var a = Math.PI * Math.pow(rad, 2) * dot;
    console.log("VEOT: " + roundTo2(a)+"ft^3");
    return a;
}

This is a sample of the console log: http://pastebin.com/UW1M73jY

Was it helpful?

Solution

As a real world simulation, this isn't nearly enough information to come up with a code description. So, assuming this is a purely fictional exercise, as a simple simulation the hole you're drilling is always going to have the drill's penetrated volume, with the drill's speed of penetration determined by the substrate's density (ignoring a million real world material properties). The RPM value determines how much substrate gets scraped per time unit, so density slows your penetration down, RPM speeds your penetration up, and if we assume the drill is indestructible, that's pretty much all we need to know.

The volume excavated is equal to the drill's volume, ignoring its groove. Keep things simple and assume a cylindrical drill, and the volume is simply πr²h, where h is the penetrated depth, and r is (obviously) the drill radius.

Start with an aggregate function:

depth(t) = (a * RPM - b * density) * t

we don't know a or b, but we do know what they represent: a is the pressure behind our drill, and b is an unknown constant that balances our function. The first step is to normalise this function with respects to the various units (RPM is per minute, t is most likely in seconds, for instance), after which we can start figuring out what a and b should concretely be (also note that we can normalise this function by fixing either a or b to 1, and setting the remaining free variable to whatever is necessary to balance the equation with respect to the reality we're simulating)

Once we have our depth-over-time function, we're pretty much done, as the volume excavated is simply

volume(t) = π * r² * depth(t)

or, if you're a student of physics and prefer the common quadratic expression:

volume(t) = τ/2 * r² * depth(t)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top