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 onequarter 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{(D4)^2 L}{12}(1.0  0.25) $$
$$ V = \left(\frac{D4}{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:
 The formula is very simple.
 The rule works best for logs between 26 and 36 inches in diameter.
 Larger logs produce underruns.
 Smaller logs produce overruns.
Example
 Imperial Units
 dia small = 10 in inches
 L = 16 feet
 Answer = 36 board feet
 dia small = 28 in inches
 L = 16 feet
 Answer = 576 board 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
' Creative Commons http://creativecommons.org/licenses/bync/3.0/us/
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
# Creative Commons http://creativecommons.org/licenses/bync/3.0/us/
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
# Creative Commons, http://creativecommons.org/licenses/bync/3.0/us/
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.
