## Doyle Boardfoot Log Volume

This is one of the most widely use and well as one of the oldest log rules. The rule was developed by Edward Doyle in 1825. The rule states: "Deduct 4 inches from the diameter of the log, D, in inches, for slabing, square one-quarter of the remainder, and multiply by the length of the log, L, in feet." This is equivalent to squaring the log into a cant and calculating the board feet in the cant. Doyle assumed 25 % reduction for kerf and shrinkage. The rule can be stated as:

$$V = \frac{(D-4)^2 L}{12}(1.0 - 0.25)$$ $$V = \left(\frac{D-4}{4}\right)^2 L$$

where $V$ is the volume in board feet, $D$ is the small end diameter of the log, and $L$ is the log length. Known issues include:

1. The formula is very simple.
2. The rule works best for logs between 26 and 36 inches in diameter.
3. Larger logs produce underruns.
4. Smaller logs produce overruns.
5. ### Example

Imperial Units
dia small = 10 in inches
L = 16 feet

dia small = 28 in inches
L = 16 feet

Board feet is a imperial units only system.

### Code

#### Visual Basic

 
Function bfLogVolume(sdia As Single, length As Single, Optional voltype As String = "int") As Double
' Function to calculate the Doyle, scribner and International board foot volume of a log
' sdia is in inches and length is in feet
' by David R. Larsen, Copyright October 9, 2012

If (voltype = "doyle") Then
bfLogVolume = ((sdia - 4) / 4) ^ 2 * length
ElseIf (voltype = "scribner") Then
bfLogVolume = (0.79 * sdia ^ 2 - 2# * sdia - 4#) * (length / 16#)
ElseIf (voltype = "int") Then
If (length = 4#) Then
bfLogVolume = 0.22 * sdia ^ 2 - 0.71 * sdia
ElseIf (length = 8#) Then
bfLogVolume = 0.44 * sdia ^ 2 - 1.2 * sdia - 0.3
ElseIf (length = 12#) Then
bfLogVolume = 0.66 * sdia ^ 2 - 1.47 * sdia - 0.79
ElseIf (length = 16#) Then
bfLogVolume = 0.88 * sdia ^ 2 - 1.56 * sdia - 1.36
ElseIf (length = 20#) Then
bfLogVolume = 1.1 * sdia ^ 2 - 1.35 * sdia - 1.9
ElseIf (length = 24#) Then
bfLogVolume = 1.1 * sdia ^ 2 - 1.35 * sdia - 1.9 + 0.22 * sdia ^ 2 - 0.71 * sdia
ElseIf (length = 28#) Then
bfLogVolume = 1.1 * sdia ^ 2 - 1.35 * sdia - 1.9 +  0.44 * sdia ^ 2 - 1.2 * sdia - 0.3
ElseIf (length = 32#) Then
bfLogVolume = 1.1 * sdia ^ 2 - 1.35 * sdia - 1.9 + 0.66 * sdia ^ 2 - 1.47 * sdia - 0.79
ElseIf (length = 36#) Then
bfLogVolume = (0.88 * sdia ^ 2 - 1.56 * sdia - 1.36) * 2
ElseIf (length = 40#) Then
bfLogVolume = (1.1 * sdia ^ 2 - 1.35 * sdia - 1.9 ) * 2
Else
bfLogVolume = 0
MsgBox ("Unknown log length, options are: 4, 8, 12, 16, 20")
End If

Else
bfLogVolume = 0
MsgBox ("Unknown voltype, options are: doyle, scribner, or int")
End If

End Function


Excel® Visual Basic Code

#### R Statistical Package Code

 
doyle = function( sdia, length )
{
# Function to calculate the Doyle Board Foot volume
# by David R. Larsen, Copyright November 2, 2012

doyle = ((sdia - 4) / 4 )^2 * length
doyle
}


R Statistical Package Code

#### Python Code

 
#!/usr/local/bin/python
# Function to calculate the Doyle Board foot volume
# from small end diameter and log length
# by David R. Larsen, October 11, 2012

def doyle( sdia, length):
value = (( sdia - 4.0) / 4.0 )**2 * length
return value

print "doyle =", doyle(sdia=10,length=16)
print "doyle =", doyle(sdia=28,length=16)

Python Code

Note the python files has a extra "txt" at the end to allow the files to be viewed in a web browser.