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
Answer = 71.44 board feet

dia small = 28 in inches
L = 16 feet
Answer = 646 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/by-nc/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

 
int14Volume = function( sdia, length )
{
# Function to calculate the International 1/4"  Board Foot volume
# by David R. Larsen, Copyright November 2, 2012
# Creative Commons http://creativecommons.org/licenses/by-nc/3.0/us/
  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
# Creative Commons,  http://creativecommons.org/licenses/by-nc/3.0/us/


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.


Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial 3.0 United States License.

Author: Dr. David R. Larsen, Copyright 2012
Created: November 1, 2012
Last Updated: June 23, 2015