-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathqmd.html
More file actions
222 lines (199 loc) · 6.67 KB
/
qmd.html
File metadata and controls
222 lines (199 loc) · 6.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Forestry Functions</title>
<link rel="Shortcut Icon" href="http://oak.snr.missouri.edu/sylvan/images/sylview-icon.ico">
<link rel="stylesheet" type="text/css" href="css/style.css" />
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}
});
</script>
<script type="text/javascript" asyn
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML">
</script>
</head>
<body>
<p></p>
<center>
<table border="0" width="90%">
<tbody>
<tr>
<td>
<table border="0">
<tbody>
<tr>
<td width="90%" align="left">
<div id="header" algin="left" class="bgcol" >
<h1 align="left" width="90%" style="margin-left:45px; color:white; font-size:38 ">Forest Functions, <small> Computer code to help foresters</small></h1></div>
<br/>
<h2>Quadratic Mean Diameter</h2>
<p>Quadratic Mean Diameter ($D_q$) is the diameter of the tree of average per tree basal area. This becomes a convenient in that we often have basal are per acre and trees per acre but not the diameters of all the trees.</p>
<p>In imperial units:</p>
<center>
<font size="5">
$$D_q = \sqrt{ \frac{\frac{ba}{tpa}}{0.005454154}}$$
</font>
</center>
<p>
where: $D_q$ is the Quadratic Mean Diameter in inches, $ba$ is the basal area in square feet per acre, $tpa$ is the trees per acre, and 0.005454154 is a constant.
</p>
<p>In metric units:</p>
<center>
<font size="5">
$$D_q = \sqrt{ \frac{\frac{ba}{tpha}}{0.00007854}}$$
</font>
</center>
<p>
where: $D_q$ is the Quadratic Mean Diameter in centimeters, $ba$ is the basal area square meters per hectare, $tpha$ is the trees per hectare, and 0.00007854 is a constant.
</p>
<h3>Example</h3>
<p>
<dl>
<dt><b>Imperial units</b></dt>
<dd> ba = 80 ft<sup>2</sup>/ac</dd>
<dd> tpa = 200</dd>
<dd> unittype = "imperial"</dd>
<dd> Answer = 8.56 in </dd>
</dl>
</p>
<p>
<dl>
<dt><b>Metric units</b></dt>
<dd> ba = 18.3 m<sup>2</sup>/ha</dd>
<dd> tpha = 494.1</dd>
<dd> unittype = "metric"</dd>
<dd> Answer = 21.7 cm </dd>
</dl>
</p>
<h3>Code</h3>
<p>
<h4> Visual Basic</h4>
<div style="background-color:lightgrey;border:1px solid black;padding 10px">
<pre > <code>
Function qmd(ba As Single, tpa As Single, Optional unittype As String = "imperial") As Double
' Function to calculate quadratic mean diameter from basal area per acre and trees per acre
' by David R. Larsen, Copyright October 9, 2012
' Creative Commons http://creativecommons.org/licenses/by-nc/3.0/us/
If (unittype = "imperial") Then
qmd = Math.Sqr((ba / tpa) / 0.005454154)
ElseIf (unittype = "metric") Then
qmd = Math.Sqr((ba / tpa) / 0.00007854)
Else
qmd = 0#
MsgBox ("Unknown unit type, options are: imperial or metic")
End If
End Function
</code></pre></div>
</div>
<a href="https://github.com/LarsenDR/forfuncVBS/blob/master/VBS/qmd.vbs">Excel® Visual Basic Code</a><br/>
</p>
<p>
<h4> R Statistical Package Code</h4>
<div style="background-color:lightgrey;border:1px solid black;padding 10px">
<pre> <code>
qmd = function( ba, tpa, unittype="imperial" )
{
# Function to calculate the quadratic mean diameter from basal area and tree per acre
# by David R. Larsen, Copyright October 9, 2012
# Creative Commons http://creativecommons.org/licenses/by-nc/3.0/us/
if (unittype == "imperial"){
qmd = sqrt((ba / tpa) / 0.005454154)
}else if (unitype == "metric"){
qmd = sqrt((ba / tpa) / 0.00007854)
}else{
qmd = 0
}
qmd
}
</code></pre>
</div>
<a href="https://github.com/LarsenDR/forfuncR/blob/master/R/qmd.R">R Statistical Package Code</a><br/>
</p>
<p>
<h4> Python Code</h4>
<div style="background-color:lightgrey;border:1px solid black;padding 10px">
<pre> <code>
#!/usr/local/bin/python
# Function to calculate the quadratic mean diameter
# from basal area and tree per acre
# by David R. Larsen, October 11, 2012
# Creative Commons, http://creativecommons.org/licenses/by-nc/3.0/us/
import math
def qmd( ba, tpa, unittype="imperial"):
if( unittype == "imperial" ):
value = math.sqrt( (ba/tpa)/0.005454154 )
return value
elif( unittype == "metric"):
value = math.sqrt( (ba/tpa)/0.00007854 )
return value
else:
print "Unknown unittype, options are imperial or metric"
return
print "qmd =", qmd(80.0, 200.0)
print "qmd =", qmd(80.0, 200.0, "imperial")
print "qmd =", qmd(18.3, 494.1, "metric")
print "qmd =", qmd(1.0, 1.0, "cunits")</code></pre>
</div>
<a href="https://github.com/LarsenDR/forfuncPython/blob/master/python/qmd.py">Python Code</a>
</p>
<p>
Note the python file has a extra "txt" at the end to allow the files to be viewed in a web browser.
</p>
<p>
<h4> Go Code</h4>
<div style="background-color:lightgrey;border:1px solid black;padding 10px">
<pre> <code>
// Function to calculate the quadratic mean diameter
// from basal area and tree per acre
// by David R. Larsen, August 15, 2013
// Creative Commons, http://creativecommons.org/licenses/by-nc/3.0/us/
package main
import (
"fmt"
"math"
)
// Function to calculate a quadratic mean
func Qmd( ba float64, tpa float64, unittype string) float64 {
if unittype == "imperial" {
return math.Sqrt( (ba/tpa)/0.005454154 )
}else if unittype == "metric" {
return math.Sqrt( (ba/tpa)/0.00007854 )
}
return 0.0
}
func main() {
fmt.Println("qmd =", Qmd(80.0, 200.0, "imperial") )
fmt.Println("qmd =", Qmd(18.3, 494.1, "metric") )
fmt.Println("qmd =", Qmd(80.0, 200.0, "cunits") )
}
</code></pre>
</div>
<a href="https://github.com/LarsenDR/forfuncGo/blob/master/qmd.go">Go Code</a>
</p>
<p>
Note the go file has a extra "txt" at the end to allow the files to be viewed in a web browser.
</p>
</td>
</tr>
</tbody>
</table>
</center>
<hr class="full" />
<div align="right">
<small>
<a rel="license" href="http://creativecommons.org/licenses/by-nc/3.0/us/"><img alt="Creative Commons License" style="border-width:0" src="img/by-sa.png" /></a><br />This <span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type">work</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc/3.0/us/">Creative Commons Attribution-Noncommercial 3.0 United States License</a>.
<br/>
<br/>
Author: Dr. David R. Larsen, Copyright 2012<br/>
Created: October 9, 2012<br/>
Last Updated: August 19, 2017</small>
</div>
</td>
</tr>
</tbody>
</table>
</body>
</html>