## International 1/4" board foot Log Volume

One of the most accurate mathematical log rules was proposed by J. F. Clark (1906). The log rule was developed for 4 foot sections of a log. It assumes a 1/8 inch kerf and a 1/16 inch shrinkage. Clark suggested a 1/2 inch taper per 4-foot section of log and so came up with the following formulas:

$$V_{4'log} = 0.22 D^2 - 0.71 D$$ $$V_{8'log} = 0.44 D^2 - 1.20 D - 0.30$$ $$V_{12'log} = 0.66 D^2 - 1.47 D - 0.79$$ $$V_{16'log} = 0.88 D^2 - 1.52 D - 1.36$$ $$V_{20'log} = 1.10 D^2 - 1.35 D - 1.90$$

Clark suggest that logs larger that 20 feet be measured as multiples of one of these log lengths.

### 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

 
int14Volume = function( sdia, length )
{
# Function to calculate the International 1/4"  Board Foot volume
# by David R. Larsen, Copyright November 2, 2012
if( length == 4 ){
int14Volume = 0.22 * sdia^2 - 0.71 * sdia
}else if( length == 8 ){
int14Volume = 0.44 * sdia^2 - 1.20 * sdia - 0.30
}else if( length == 12 ){
int14Volume = 0.66 * sdia^2 - 1.47 * sdia - 0.79
}else if( length == 16 ){
int14Volume = 0.88 * sdia^2 - 1.52 * sdia - 1.36
}else if( length == 20 ){
int14Volume = 1.10 * sdia^2 - 1.35 * sdia - 1.90
}else if( length == 24 ){
int14Volume = 1.10 * sdia^2 - 1.35 * sdia - 1.90 + 0.22 * sdia^2 - 0.71 * sdia
}else if( length == 28 ){
int14Volume = 1.10 * sdia^2 - 1.35 * sdia - 1.90 + 0.44 * sdia^2 - 1.20 * sdia - 0.30
}else if( length == 32 ){
int14Volume = 1.10 * sdia^2 - 1.35 * sdia - 1.90 + 0.66 * sdia^2 - 1.47 * sdia - 0.79
}else if( length == 36 ){
int14Volume = 1.10 * sdia^2 - 1.35 * sdia - 1.90 + 0.88 * sdia^2 - 1.52 * sdia - 1.36
}else if( length == 40 ){
int14Volume = (1.10 * sdia^2 - 1.35 * sdia - 1.90) * 2
}
int14Volume
}  
R Statistical Package Code

#### Python Code

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

def int14Volume( sdia, length):
if( length == 4 ):
value = 0.22 * sdia**2 - 0.71 * sdia
elif( length == 8 ):
value = 0.44 * sdia**2 - 1.20 * sdia - 0.30
elif( length == 12 ):
value = 0.66 * sdia**2 - 1.47 * sdia - 0.79
elif( length == 16 ):
value = 0.88 * sdia**2 - 1.52 * sdia - 1.36
elif( length == 20 ):
value = 1.10 * sdia**2 - 1.35 * sdia - 1.90
elif( length == 24 ):
value = 1.10 * sdia**2 - 1.35 * sdia - 1.90 + 0.22 * sdia**2 - 0.71 * sdia
elif( length == 28 ):
value = 1.10 * sdia**2 - 1.35 * sdia - 1.90 + 0.44 * sdia**2 - 1.20 * sdia - 0.30
elif( length == 32 ):
value = 1.10 * sdia**2 - 1.35 * sdia - 1.90 + 0.66 * sdia**2 - 1.47 * sdia - 0.79
elif( length == 36 ):
value = 1.10 * sdia**2 - 1.35 * sdia - 1.90 + 0.88 * sdia**2 - 1.52 * sdia - 1.36
elif( length == 40 ):
value = (1.10 * sdia**2 - 1.35 * sdia - 1.90) * 2
return value

print "International 1/4 volume =", int14Volume(sdia=10,length=16)
print "International 1/4 volume =", int14Volume(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.

### Reference

Clark, J. F. 1906. Measurement of Sawlogs.Forestry Quart. 4:79-93.