PageSourceSearch

https://www.cdsimpson.net/

html cdsimpson.net collected 2026-10-06 22:48:03 UTC 111,495 bytes, 1,935 lines download raw bytes

1<!DOCTYPE html>
2<html class='v2' dir='ltr' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'>
3<head>
4<link href='https://www.blogger.com/static/v1/widgets/2872013778-css_bundle_v2.css' rel='stylesheet' type='text/css'/>
5<script src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript">
6	</script>
6
7<meta content='width=1100' name='viewport'/>
8<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
9<meta content='blogger' name='generator'/>
10<link href='https://www.cdsimpson.net/favicon.ico' rel='icon' type='image/x-icon'/>
11<link href='https://www.cdsimpson.net/' rel='canonical'/>
12<link rel="alternate" type="application/atom+xml" title="Christopher Simpson - Atom" href="https://www.cdsimpson.net/feeds/posts/default" />
13<link rel="alternate" type="application/rss+xml" title="Christopher Simpson - RSS" href="https://www.cdsimpson.net/feeds/posts/default?alt=rss" />
14<link rel="service.post" type="application/atom+xml" title="Christopher Simpson - Atom" href="https://www.blogger.com/feeds/1308139960516080412/posts/default" />
15<link rel="me" href="https://www.blogger.com/profile/14768438682715700162" />
16<!--Can't find substitution for tag [blog.ieCssRetrofitLinks]-->
17<meta content='https://www.cdsimpson.net/' property='og:url'/>
18<meta content='Christopher Simpson' property='og:title'/>
19<meta content='' property='og:description'/>
20<title>Christopher Simpson</title>
21<style type='text/css'>@font-face{font-family:'Cantarell';font-style:normal;font-weight:400;font-display:swap;src:url(//fonts.gstatic.com/s/cantarell/v18/B50NF7ZDq37KMUvlO015gqJrLK8.woff2)format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;}@font-face{font-family:'Cantarell';font-style:normal;font-weight:400;font-display:swap;src:url(//fonts.gstatic.com/s/cantarell/v18/B50NF7ZDq37KMUvlO015jKJr.woff2)format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}@font-face{font-family:'Play';font-style:normal;font-weight:400;font-display:swap;src:url(//fonts.gstatic.com/s/play/v21/6aez4K2oVqwIvtg2H68T.woff2)format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;}@font-face{font-family:'Play';font-style:normal;font-weight:400;font-display:swap;src:url(//fonts.gstatic.com/s/play/v21/6aez4K2oVqwIvtE2H68T.woff2)format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}@font-face{font-family:'Play';font-style:normal;font-weight:400;font-display:swap;src:url(//fonts.gstatic.com/s/play/v21/6aez4K2oVqwIvtY2H68T.woff2)format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;}@font-face{font-family:'Play';font-style:normal;font-weight:400;font-display:swap;src:url(//fonts.gstatic.com/s/play/v21/6aez4K2oVqwIvto2H68T.woff2)format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;}@font-face{font-family:'Play';font-style:normal;font-weight:400;font-display:swap;src:url(//fonts.gstatic.com/s/play/v21/6aez4K2oVqwIvts2H68T.woff2)format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;}@font-face{font-family:'Play';font-style:normal;font-weight:400;font-display:swap;src:url(//fonts.gstatic.com/s/play/v21/6aez4K2oVqwIvtU2Hw.woff2)format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}@font-face{font-family:'Play';font-style:normal;font-weight:700;font-display:swap;src:url(//fonts.gstatic.com/s/play/v21/6ae84K2oVqwItm4TCp0y2knT.woff2)format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;}@font-face{font-family:'Play';font-style:normal;font-weight:700;font-display:swap;src:url(//fonts.gstatic.com/s/play/v21/6ae84K2oVqwItm4TCpQy2knT.woff2)format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}@font-face{font-family:'Play';font-style:normal;font-weight:700;font-display:swap;
21src:url(//fonts.gstatic.com/s/play/v21/6ae84K2oVqwItm4TCpMy2knT.woff2)format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;}@font-face{font-family:'Play';font-style:normal;font-weight:700;font-display:swap;src:url(//fonts.gstatic.com/s/play/v21/6ae84K2oVqwItm4TCp8y2knT.woff2)format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;}@font-face{font-family:'Play';font-style:normal;font-weight:700;font-display:swap;src:url(//fonts.gstatic.com/s/play/v21/6ae84K2oVqwItm4TCp4y2knT.woff2)format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;}@font-face{font-family:'Play';font-style:normal;font-weight:700;font-display:swap;src:url(//fonts.gstatic.com/s/play/v21/6ae84K2oVqwItm4TCpAy2g.woff2)format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}</style>
22<style id='page-skin-1' type='text/css'><!--
23/*
24-----------------------------------------------
25Blogger Template Style
26Name:     Awesome Inc.
27Designer: Tina Chen
28URL:      tinachen.org
29----------------------------------------------- */
30/* Variable definitions
31====================
32<Variable name="keycolor" description="Main Color" type="color" default="#ffffff"/>
33<Group description="Page" selector="body">
34<Variable name="body.font" description="Font" type="font"
35default="normal normal 13px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
36<Variable name="body.background.color" description="Background Color" type="color" default="#000000"/>
37<Variable name="body.text.color" description="Text Color" type="color" default="#ffffff"/>
38</Group>
39<Group description="Links" selector=".main-inner">
40<Variable name="link.color" description="Link Color" type="color" default="#888888"/>
41<Variable name="link.visited.color" description="Visited Color" type="color" default="#444444"/>
42<Variable name="link.hover.color" description="Hover Color" type="color" default="#cccccc"/>
43</Group>
44<Group description="Blog Title" selector=".header h1">
45<Variable name="header.font" description="Title Font" type="font"
46default="normal bold 40px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
47<Variable name="header.text.color" description="Title Color" type="color" default="#000000" />
48<Variable name="header.background.color" description="Header Background" type="color" default="transparent" />
49</Group>
50<Group description="Blog Description" selector=".header .description">
51<Variable name="description.font" description="Font" type="font"
52default="normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
53<Variable name="description.text.color" description="Text Color" type="color"
54default="#000000" />
55</Group>
56<Group description="Tabs Text" selector=".tabs-inner .widget li a">
57<Variable name="tabs.font" description="Font" type="font"
58default="normal bold 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
59<Variable name="tabs.text.color" description="Text Color" type="color" default="#000000"/>
60<Variable name="tabs.selected.text.color" description="Selected Color" type="color" default="#dcdcdc"/>
61</Group>
62<Group description="Tabs Background" selector=".tabs-outer .PageList">
63<Variable name="tabs.background.color" description="Background Color" type="color" default="#141414"/>
64<Variable name="tabs.selected.background.color" description="Selected Color" type="color" default="#444444"/>
65<Variable name="tabs.border.color" description="Border Color" type="color" default="#000000"/>
66</Group>
67<Group description="Date Header" selector=".main-inner .widget h2.date-header, .main-inner .widget h2.date-header span">
68<Variable name="date.font" description="Font" type="font"
69default="normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
70<Variable name="date.text.color" description="Text Color" type="color" default="#666666"/>
71<Variable name="date.border.color" description="Border Color" type="color" default="#000000"/>
72</Group>
73<Group description="Post Title" selector="h3.post-title, h4, h3.post-title a">
74<Variable name="post.title.font" description="Font" type="font"
75default="normal bold 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
76<Variable name="post.title.text.color" description="Text Color" type="color" default="#000000"/>
77</Group>
78<Group description="Post Background" selector=".post">
79<Variable name="post.background.color" description="Background Color" type="color" default="#fcf2f2" />
80<Variable name="post.border.color" description="Border Color" type="color" default="#000000" />
81<Variable name="post.border.bevel.color" description="Bevel Color" type="color" default="#000000"/>
82</Group>
83<Group description="Gadget Title" selector="h2">
84<Variable name="widget.title.font" description="Font" type="font"
85default="normal bold 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
86<Variable name="widget.title.text.color" description="Text Color" type="color" default="#000000"/>
87</Group>
88<Group description="Gadget Text" selector=".sidebar .widget">
89<Variable name="widget.font" description="Font" type="font"
90default="normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
91<Variable name="widget.text.color" description="Text Color" type="color" default="#000000"/>
92<Variable name="widget.alternate.text.color" description="Alternate Color" type="color" default="#666666"/>
93</Group>
94<Group description="Gadget Links" selector=".sidebar .widget">
95<Variable name="widget.link.color" description="Link Color" type="color" default="#0a74f6"/>
96<Variable name="widget.link.visited.color" description="Visited Color" type="color" default="#0153b6"/>
97<Variable name="widget.link.hover.color" description="Hover Color" type="color" default="#cc0000"/>
98</Group>
99<Group description="Gadget Background" selector=".sidebar .widget">
100<Variable name="widget.background.color" description="Background Color" type="color" default="#141414"/>
101<Variable name="widget.border.color" description="Border Color" type="color" default="#222222"/>
102<Variable name="widget.border.bevel.color" description="Bevel Color" type="color" default="#000000"/>
103</Group>
104<Group description="Sidebar Background" selector=".column-left-inner .column-right-inner">
105<Variable name="widget.outer.background.color" description="Background Color" type="color" default="transparent" />
106</Group>
107<Group description="Images" selector=".main-inner">
108<Variable name="image.background.color" description="Background Color" type="color" default="transparent"/>
109<Variable name="image.border.color" description="Border Color" type="color" default="transparent"/>
110</Group>
111<Group description="Feed" selector=".blog-feeds">
112<Variable name="feed.text.color" description="Text Color" type="color" default="#000000"/>
113</Group>
114<Group description="Feed Links" selector=".blog-feeds">
115<Variable name="feed.link.color" description="Link Color" type="color" default="#0a74f6"/>
116<Variable name="feed.link.visited.color" description="Visited Color" type="color" default="#0153b6"/>
117<Variable name="feed.link.hover.color" description="Hover Color" type="color" default="#cc0000"/>
118</Group>
119<Group description="Pager" selector=".blog-pager">
120<Variable name="pager.background.color" description="Background Color" type="color" default="#fcf2f2" />
121</Group>
122<Group description="Footer" selector=".footer-outer">
123<Variable name="footer.background.color" description="Background Color" type="color" default="#fcf2f2" />
124<Variable name="footer.text.color" description="Text Color" type="color" default="#000000" />
125</Group>
126<Variable name="title.shadow.spread" description="Title Shadow" type="length" default="-1px" min="-1px" max="100px"/>
127<Variable name="body.background" description="Body Background" type="background"
128color="#000000"
129default="$(color) none repeat scroll top left"/>
130<Variable name="body.background.gradient.cap" description="Body Gradient Cap" type="url"
131default="none"/>
132<Variable name="body.background.size" description="Body Background Size" type="string" default="auto"/>
133<Variable name="tabs.background.gradient" description="Tabs Background Gradient" type="url"
134default="none"/>
135<Variable name="header.background.gradient" description="Header Background Gradient" type="url" default="none" />
136<Variable name="header.padding.top" description="Header Top Padding" type="length" default="22px" min="0" max="100px"/>
137<Variable name="header.margin.top" description="Header Top Margin" type="length" default="0" min="0" max="100px"/>
138<Variable name="header.margin.bottom" description="Header Bottom Margin" type="length" default="0" min="0" max="100px"/>
139<Variable name="widget.padding.top" description="Widget Padding Top" type="length" default="8px" min="0" max="20px"/>
140<Variable name="widget.padding.side" description="Widget Padding Side" type="length" default="15px" min="0" max="100px"/>
141<Variable name="widget.outer.margin.top" description="Widget Top Margin" type="length" default="0" min="0" max="100px"/>
142<Variable name="widget.outer.background.gradient" description="Gradient" type="url" default="none" />
143<Variable name="widget.border.radius" description="Gadget Border Radius" type="length" default="0" min="0" max="100px"/>
144<Variable name="outer.shadow.spread" description="Outer Shadow Size" type="length" default="0" min="0" max="100px"/>
145<Variable name="date.header.border.radius.top" description="Date Header Border Radius Top" type="length" default="0" min="0" max="100px"/>
146<Variable name="date.header.position" description="Date Header Position" type="length" default="15px" min="0" max="100px"/>
147<Variable name="date.space" description="Date Space" type="length" default="30px" min="0" max="100px"/>
148<Variable name="date.position" description="Date Float" type="string" default="static" />
149<Variable name="date.padding.bottom" description="Date Padding Bottom" type="length" default="0" min="0" max="100px"/>
150<Variable name="date.border.size" description="Date Border Size" type="length" default="0" min="0" max="10px"/>
151<Variable name="date.background" description="Date Background" type="background" color="transparent"
152default="$(color) none no-repeat scroll top left" />
153<Variable name="date.first.border.radius.top" description="Date First top radius" type="length" default="5px" min="0" max="100px"/>
154<Variable name="date.last.space.bottom" description="Date Last Space Bottom" type="length"
155default="20px" min="0" max="100px"/>
156<Variable name="date.last.border.radius.bottom" description="Date Last bottom radius" type="length" default="5px" min="0" max="100px"/>
157<Variable name="post.first.padding.top" description="First Post Padding Top" type="length" default="0" min="0" max="100px"/>
158<Variable name="image.shadow.spread" description="Image Shadow Size" type="length" default="0" min="0" max="100px"/>
159<Variable name="image.border.radius" description="Image Border Radius" type="length" default="0" min="0" max="100px"/>
160<Variable name="separator.outdent" description="Separator Outdent" type="length" default="15px" min="0" max="100px"/>
161<Variable name="title.separator.border.size" description="Widget Title Border Size" type="length" default="1px" min="0" max="10px"/>
162<Variable name="list.separator.border.size" description="List Separator Border Size" type="length" default="1px" min="0" max="10px"/>
163<Variable name="shadow.spread" description="Shadow Size" type="length" default="0" min="0" max="100px"/>
164<Variable name="startSide" description="Side where text starts in blog language" type="automatic" default="left"/>
165<Variable name="endSide" description="Side where text ends in blog language" type="automatic" default="right"/>
166<Variable name="date.side" description="Side where date header is placed" type="string" default="right"/>
167<Variable name="pager.border.radius.top" description="Pager Border Top Radius" type="length" default="5px" min="0" max="100px"/>
168<Variable name="pager.space.top" description="Pager Top Space" type="length" default="1em" min="0" max="20em"/>
169<Variable name="footer.background.gradient" description="Background Gradient" type="url" default="none" />
170<Variable name="mobile.background.size" description="Mobile Backgroun
170d Size" type="string"
171default="auto"/>
172<Variable name="mobile.background.overlay" description="Mobile Background Overlay" type="string"
173default="transparent none repeat scroll top left"/>
174<Variable name="mobile.button.color" description="Mobile Button Color" type="color" default="#ffffff" />
175*/
176/* Content
177----------------------------------------------- */
178body {
179font: normal normal 14px Cantarell;
180color: #000000;
181background: #000000 url(https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_sScTeVY554wn5bbST_njoSL7OamRS6-E9n-fLMBh4YstXibhontjj0qL-VBqBsVD1AvhYS4kPrS0YjRHo_DZUgUw=s0-d) repeat-y fixed center center;
182}
183html body .content-outer {
184min-width: 0;
185max-width: 100%;
186width: 100%;
187}
188a:link {
189text-decoration: none;
190color: #0a74f6;
191}
192a:visited {
193text-decoration: none;
194color: #0153b6;
195}
196a:hover {
197text-decoration: underline;
198color: #cc0000;
199}
200.body-fauxcolumn-outer .cap-top {
201position: absolute;
202z-index: 1;
203height: 276px;
204width: 100%;
205background: transparent $(.gradient.cap) repeat-x scroll top left;
206_background-image: none;
207}
208/* Columns
209----------------------------------------------- */
210.content-inner {
211padding: 0;
212}
213.header-inner .section {
214margin: 0 16px;
215}
216.tabs-inner .section {
217margin: 0 16px;
218}
219.main-inner {
220padding-top: 30px;
221}
222.main-inner .column-center-inner,
223.main-inner .column-left-inner,
224.main-inner .column-right-inner {
225padding: 0 5px;
226}
227*+html body .main-inner .column-center-inner {
228margin-top: -30px;
229}
230#layout .main-inner .column-center-inner {
231margin-top: 0;
232}
233/* Header
234----------------------------------------------- */
235.header-outer {
236margin: 0 0 0 0;
237background: #000000 none repeat scroll 0 0;
238}
239.Header h1 {
240font: normal normal 50px Play;
241color: #cc0000;
242text-shadow: 0 0 -1px #000000;
243}
244.Header h1 a {
245color: #cc0000;
246}
247.Header .description {
248font: normal normal 20px Play;
249color: #0a74f6;
250}
251.header-inner .Header .titlewrapper,
252.header-inner .Header .descriptionwrapper {
253padding-left: 0;
254padding-right: 0;
255margin-bottom: 0;
256}
257.header-inner .Header .titlewrapper {
258padding-top: 22px;
259}
260/* Tabs
261----------------------------------------------- */
262.tabs-outer {
263overflow: hidden;
264position: relative;
265background: #0153b6 url(//www.blogblog.com/1kt/awesomeinc/tabs_gradient_light.png) repeat scroll 0 0;
266}
267#layout .tabs-outer {
268overflow: visible;
269}
270.tabs-cap-top, .tabs-cap-bottom {
271position: absolute;
272width: 100%;
273border-top: 1px solid #013d85;
274}
275.tabs-cap-bottom {
276bottom: 0;
277}
278.tabs-inner .widget li a {
279display: inline-block;
280margin: 0;
281padding: .6em 1.5em;
282font: normal normal 14px Play;
283color: #dcdcdc;
284border-top: 1px solid #013d85;
285border-bottom: 1px solid #013d85;
286border-left: 1px solid #013d85;
287height: 16px;
288line-height: 16px;
289}
290.tabs-inner .widget li:last-child a {
291border-right: 1px solid #013d85;
292}
293.tabs-inner .widget li.selected a, .tabs-inner .widget li a:hover {
294background: #cc0000 url(//www.blogblog.com/1kt/awesomeinc/tabs_gradient_light.png) repeat-x scroll 0 -100px;
295color: #ffffff;
296}
297/* Headings
298----------------------------------------------- */
299h2 {
300font: normal bold 14px Play;
301color: #000000;
302}
303/* Widgets
304----------------------------------------------- */
305.main-inner .section {
306margin: 0 27px;
307padding: 0;
308}
309.main-inner .column-left-outer,
310.main-inner .column-right-outer {
311margin-top: 0;
312}
313#layout .main-inner .column-left-outer,
314#layout .main-inner .column-right-outer {
315margin-top: 0;
316}
317.main-inner .column-left-inner,
318.main-inner .column-right-inner {
319background: rgba(0, 0, 0, 0) none repeat 0 0;
320-moz-box-shadow: 0 0 0 rgba(0, 0, 0, .2);
321-webkit-box-shadow: 0 0 0 rgba(0, 0, 0, .2);
322-goog-ms-box-shadow: 0 0 0 rgba(0, 0, 0, .2);
323box-shadow: 0 0 0 rgba(0, 0, 0, .2);
324-moz-border-radius: 5px;
325-webkit-border-radius: 5px;
326-goog-ms-border-radius: 5px;
327border-radius: 5px;
328}
329#layout .main-inner .column-left-inner,
330#layout .main-inner .column-right-inner {
331margin-top: 0;
332}
333.sidebar .widget {
334font: normal normal 14px Play;
335color: #000000;
336}
337.sidebar .widget a:link {
338color: #0a74f6;
339}
340.sidebar .widget a:visited {
341color: #013d85;
342}
343.sidebar .widget a:hover {
344color: #d52a33;
345}
346.sidebar .widget h2 {
347text-shadow: 0 0 -1px #000000;
348}
349.main-inner .widget {
350background-color: #fcf2f2;
351border: 1px solid #000000;
352padding: 0 15px 15px;
353margin: 20px -16px;
354-moz-box-shadow: 0 0 20px rgba(0, 0, 0, .2);
355-webkit-box-shadow: 0 0 20px rgba(0, 0, 0, .2);
356-goog-ms-box-shadow: 0 0 20px rgba(0, 0, 0, .2);
357box-shadow: 0 0 20px rgba(0, 0, 0, .2);
358-moz-border-radius: 5px;
359-webkit-border-radius: 5px;
360-goog-ms-border-radius: 5px;
361border-radius: 5px;
362}
363.main-inner .widget h2 {
364margin: 0 -0;
365padding: .6em 0 .5em;
366border-bottom: 1px solid #000000;
367}
368.footer-inner .widget h2 {
369padding: 0 0 .4em;
370border-bottom: 1px solid #000000;
371}
372.main-inner .widget h2 + div, .footer-inner .widget h2 + div {
373border-top: 1px solid #000000;
374padding-top: 8px;
375}
376.main-inner .widget .widget-content {
377margin: 0 -0;
378padding: 7px 0 0;
379}
380.main-inner .widget ul, .main-inner .widget #ArchiveList ul.flat {
381margin: -8px -15px 0;
382padding: 0;
383list-style: none;
384}
385.main-inner .widget #ArchiveList {
386margin: -8px 0 0;
387}
388.main-inner .widget ul li, .main-inner .widget #ArchiveList ul.flat li {
389padding: .5em 15px;
390text-indent: 0;
391color: #666666;
392border-top: 0 solid #000000;
393border-bottom: 1px solid #000000;
394}
395.main-inner .widget #ArchiveList ul li {
396padding-top: .25em;
397padding-bottom: .25em;
398}
399.main-inner .widget ul li:first-child, .main-inner .widget #ArchiveList ul.flat li:first-child {
400border-top: none;
401}
402.main-inner .widget ul li:last-child, .main-inner .widget #ArchiveList ul.flat li:last-child {
403border-bottom: none;
404}
405.post-body {
406position: relative;
407}
408.main-inner .widget .post-body ul {
409padding: 0 2.5em;
410margin: .5em 0;
411list-style: disc;
412}
413.main-inner .widget .post-body ul li {
414padding: 0.25em 0;
415margin-bottom: .25em;
416color: #000000;
417border: none;
418}
419.footer-inner .widget ul {
420padding: 0;
421list-style: none;
422}
423.widget .zippy {
424color: #666666;
425}
426/* Posts
427----------------------------------------------- */
428body .main-inner .Blog {
429padding: 0;
430margin-bottom: 1em;
431background-color: transparent;
432border: none;
433-moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
434-webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
435-goog-ms-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
436box-shadow: 0 0 0 rgba(0, 0, 0, 0);
437}
438.main-inner .section:last-child .Blog:last-child {
439padding: 0;
440margin-bottom: 1em;
441}
442.main-inner .widget h2.date-header {
443margin: 0 -15px 1px;
444padding: 0 0 0 0;
445font: normal normal 14px Play;
446color: #cc0000;
447background: transparent none no-repeat scroll top left;
448border-top: 0 solid #3e93fa;
449border-bottom: 1px solid #000000;
450-moz-border-radius-topleft: 0;
451-moz-border-radius-topright: 0;
452-webkit-border-top-left-radius: 0;
453-webkit-border-top-right-radius: 0;
454border-top-left-radius: 0;
455border-top-right-radius: 0;
456position: static;
457bottom: 100%;
458right: 15px;
459text-shadow: 0 0 -1px #000000;
460}
461.main-inner .widget h2.date-header span {
462font: normal normal 14px Play;
463display: block;
464padding: .5em 15px;
465border-left: 0 solid #3e93fa;
466border-right: 0 solid #3e93fa;
467}
468.date-outer {
469position: relative;
470margin: 30px 0 20px;
471padding: 0 15px;
472background-color: #fcf2f2;
473border: 1px solid #000000;
474-moz-box-shadow: 0 0 20px rgba(0, 0, 0, .2);
475-webkit-box-shadow: 0 0 20px rgba(0, 0, 0, .2);
476-goog-ms-box-shadow: 0 0 20px rgba(0, 0, 0, .2);
477box-shadow: 0 0 20px rgba(0, 0, 0, .2);
478-moz-border-radius: 5px;
479-webkit-border-radius: 5px;
480-goog-ms-border-radius: 5px;
481border-radius: 5px;
482}
483.date-outer:first-child {
484margin-top: 0;
485}
486.date-outer:last-child {
487margin-bottom: 20px;
488-moz-border-radius-bottomleft: 5px;
489-moz-border-radius-bottomright: 5px;
490-webkit-border-bottom-left-radius: 5px;
491-webkit-border-bottom-right-radius: 5px;
492-goog-ms-border-bottom-left-radius: 5px;
493-goog-ms-border-bottom-right-radius: 5px;
494border-bottom-left-radius: 5px;
495border-bottom-right-radius: 5px;
496}
497.date-posts {
498margin: 0 -0;
499padding: 0 0;
500clear: both;
501}
502.post-outer, .inline-ad {
503border-top: 1px solid #000000;
504margin: 0 -0;
505padding: 15px 0;
506}
507.post-outer {
508padding-bottom: 10px;
509}
510.post-outer:first-child {
511padding-top: 0;
512border-top: none;
513}
514.post-outer:last-child, .inline-ad:last-child {
515border-bottom: none;
516}
517.post-body {
518position: relative;
519}
520.post-body img {
521padding: 8px;
522background: #ffffff;
523border: 1px solid #cccccc;
524-moz-box-shadow: 0 0 20px rgba(0, 0, 0, .2);
525-webkit-box-shadow: 0 0 20px rgba(0, 0, 0, .2);
526box-shadow: 0 0 20px rgba(0, 0, 0, .2);
527-moz-border-radius: 5px;
528-webkit-border-radius: 5px;
529border-radius: 5px;
530}
531h3.post-title, h4 {
532font: normal normal 22px Play;
533color: #0a74f6;
534}
535h3.post-title a {
536font: normal normal 22px Play;
537color: #0a74f6;
538}
539h3.post-title a:hover {
540color: #cc0000;
541text-decoration: underline;
542}
543.post-header {
544margin: 0 0 1em;
545}
546.post-body {
547line-height: 1.4;
548}
549.post-outer h2 {
550color: #000000;
551}
552.post-footer {
553margin: 1.5em 0 0;
554}
555#blog-pager {
556padding: 15px;
557font-size: 120%;
558background-color: #fcf2f2;
559border: 1px solid #000000;
560-moz-box-shadow: 0 0 20px rgba(0, 0, 0, .2);
561-webkit-box-shadow: 0 0 20px rgba(0, 0, 0, .2);
562-goog-ms-box-shadow: 0 0 20px rgba(0, 0, 0, .2);
563box-shadow: 0 0 20px rgba(0, 0, 0, .2);
564-moz-border-radius: 5px;
565-webkit-border-radius: 5px;
566-goog-ms-border-radius: 5px;
567border-radius: 5px;
568-moz-border-radius-topleft: 5px;
569-moz-border-radius-topright: 5px;
570-webkit-border-top-left-radius: 5px;
571-webkit-border-top-right-radius: 5px;
572-goog-ms-border-top-left-radius: 5px;
573-goog-ms-border-top-right-radius: 5px;
574border-top-left-radius: 5px;
575border-top-right-radius-topright: 5px;
576margin-top: 1em;
577}
578.blog-feeds, .post-feeds {
579margin: 1em 0;
580text-align: center;
581color: #cccccc;
582}
583.blog-feeds a, .post-feeds a {
584color: #3e93fa;
585}
586.blog-feeds a:visited, .post-feeds a:visited {
587color: #0153b6;
588}
589.blog-feeds a:hover, .post-feeds a:hover {
590color: #cc0000;
591}
592.post-outer .comments {
593margin-top: 2em;
594}
595/* Comments
596----------------------------------------------- */
597.comments .comments-content .icon.blog-author {
598background-repeat: no-repeat;
599background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sLFwMeCjjhcOMAAAD+SURBVDjLtZSvTgNBEIe/WRRnm3U8RC1neQdsm1zSBIU9VVF1FkUguQQsD9ITmD7ECZIJSE4OZo9stoVjC/zc7ky+zH9hXwVwDpTAWWLrgS3QAe8AZgaAJI5zYAmc8r0G4AHYHQKVwII8PZrZFsBFkeRCABYiMh9BRUhnSkPTNCtVXYXURi1FpBDgArj8QU1eVXUzfnjv7yP7kwu1mYrkWlU33vs1QNu2qU8pwN0UpKoqokjWwCztrMuBhEhmh8bD5UDqur75asbcX0BGUB9/HAMB+r32hznJgXy2v0sGLBcyAJ1EK3LFcbo1s91JeLwAbwGYu7TP/3ZGfnXYPgAVNngtqatUNgAAAABJRU5ErkJggg==);
600}
601.comments .comments-content .loadmore a {
602border-top: 1px solid #013d85;
603border-bottom: 1px solid #013d85;
604}
605.comments .continue {
606border-top: 2px solid #013d85;
607}
608/* Footer
609----------------------------------------------- */
610.footer-outer {
611margin: -20px 0 -1px;
612padding: 20px 0 0;
613color: #3e93fa;
614overflow: hidden;
615}
616.footer-fauxborder-left {
617border-top: 1px solid #000000;
618background: #000000 none repeat scroll 0 0;
619-moz-box-shadow: 0 0 20px rgba(0, 0, 0, .2);
620-webkit-box-shadow: 0 0 20px rgba(0, 0, 0, .2);
621-goog-ms-box-shadow: 0 0 20px rgba(0, 0, 0, .2);
622box-shadow: 0 0 20px rgba(0, 0, 0, .2);
623margin: 0 -20px;
624}
625/* Mobile
626----------------------------------------------- */
627body.mobile {
628background-size: auto;
629}
630.mobile .body-fauxcolumn-outer {
631background: transparent none repeat scroll top left;
632}
633*+html body.mobile .main-inner .column-center-inner {
634margin-top: 0;
635}
636.mobile .main-inner .widget {
637padding: 0 0 15px;
638}
639.mobile .main-inner .widget h2 + div,
640.mobile .footer-inner .widget h2 + div {
641border-top: none;
642padding-top: 0;
643}
644.mobile .footer-inner .widget h2 {
645padding: 0.5em 0;
646border-bottom: none;
647}
648.mobile .main-inner .widget .widget-content {
649margin: 0;
650padding: 7px 0 0;
651}
652.mobile .main-inner .widget ul,
653.mobile .main-inner .widget #ArchiveList ul.flat {
654margin: 0 -15px 0;
655}
656.mobile .main-inner .widget h2.date-header {
657right: 0;
658}
659.mobile .date-header span {
660padding: 0.4em 0;
661}
662.mobile .date-outer:first-child {
663margin-bottom: 0;
664border: 1px solid #000000;
665-moz-border-radius-topleft: 5px;
666-moz-border-radius-topright: 5px;
667-webkit-border-top-left-radius: 5px;
668-webkit-border-top-right-radius: 5px;
669-goog-ms-border-top-left-radius: 5px;
670-goog-ms-border-top-right-radius: 5px;
671border-top-left-radius: 5px;
672border-top-right-radius: 5px;
673}
674.mobile .date-outer {
675border-color: #000000;
676border-width: 0 1px 1px;
677}
678.mobile .date-outer:last-child {
679margin-bottom: 0;
680}
681.mobile .main-inner {
682padding: 0;
683}
684.mobile .header-inner .section {
685margin: 0;
686}
687.mobile .post-outer, .mobile .inline-ad {
688padding: 5px 0;
689}
690.mobile .tabs-inner .section {
691margin: 0 10px;
692}
693.mobile .main-inner .widget h2 {
694margin: 0;
695padding: 0;
696}
697.mobile .main-inner .widget h2.date-header span {
698padding: 0;
699}
700.mobile .main-inner .widget .widget-content {
701margin: 0;
702padding: 7px 0 0;
703}
704.mobile #blog-pager {
705border: 1px solid transparent;
706background: #000000 none repeat scroll 0 0;
707}
708.mobile .main-inner .column-left-inner,
709.mobile .main-inner .column-right-inner {
710background: rgba(0, 0, 0, 0) none repeat 0 0;
711-moz-box-shadow: none;
712-webkit-box-shadow: none;
713-goog-ms-box-shadow: none;
714box-shadow: none;
715}
716.mobile .date-posts {
717margin: 0;
718padding: 0;
719}
720.mobile .footer-fauxborder-left {
721margin: 0;
722border-top: inherit;
723}
724.mobile .main-inner .section:last-child .Blog:last-child {
725margin-bottom: 0;
726}
727.mobile-index-contents {
728color: #000000;
729}
730.mobile .mobile-link-button {
731background: #0a74f6 url(//www.blogblog.com/1kt/awesomeinc/tabs_gradient_light.png) repeat scroll 0 0;
732}
733.mobile-link-button a:link, .mobile-link-button a:visited {
734color: #3e93fa;
735}
736.mobile .tabs-inner .PageList .widget-content {
737background: transparent;
738border-top: 1px solid;
739border-color: #013d85;
740color: #dcdcdc;
741}
742.mobile .tabs-inner .PageList .widget-content .pagelist-arrow {
743border-left: 1px solid #013d85;
744}
745html, body {
746background: url('https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_sScTeVY554wn5bbST_njoSL7OamRS6-E9n-fLMBh4YstXibhontjj0qL-VBqBsVD1AvhYS4kPrS0YjRHo_DZUgUw=s0-d') no-repeat center center fixed;
747-webkit-background-size: cover;
748-moz-background-size: cover;
749-o-background-size: cover;
750background-size: cover;
751}
752--></style>
753<style id='template-skin-1' type='text/css'><!--
754body {
755min-width: 1024px;
756}
757.content-outer, .content-fauxcolumn-outer, .region-inner {
758min-width: 1024px;
759max-width: 1024px;
760_width: 1024px;
761}
762.main-inner .columns {
763padding-left: 0;
764padding-right: 280px;
765}
766.main-inner .fauxcolumn-center-outer {
767left: 0;
768right: 280px;
769/* IE6 does not respect left and right together */
770_width: expression(this.parentNode.offsetWidth -
771parseInt("0") -
772parseInt("280px") + 'px');
773}
774.main-inner .fauxcolumn-left-outer {
775width: 0;
776}
777.main-inner .fauxcolumn-right-outer {
778width: 280px;
779}
780.main-inner .column-left-outer {
781width: 0;
782right: 100%;
783margin-left: -0;
784}
785.main-inner .column-right-outer {
786width: 280px;
787margin-right: -280px;
788}
789#layout {
790min-width: 0;
791}
792#layout .content-outer {
793min-width: 0;
794width: 800px;
795}
796#layout .region-inner {
797min-width: 0;
798width: auto;
799}
800--></style>
801<script type='text/javascript'>
vendor: 374 bytes, lines 801-806
801
802        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
803        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
804        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
805        })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
806        ga('create', '
806UA-56017853-1
vendor: 31 bytes, lines 806-807
806', 'auto', 'blogger');
807        
807ga('blogger.send', 'pageview');
808      </script>
808
809<link href='https://www.blogger.com/dyncss/1308139960516080412/authorization.css?zx=9b7e354c-ab11-4aaa-bad5-db75f62b1de8' media='none' onload='if(media!=&#39;all&#39;)media=&#39;all&#39;' rel='stylesheet'/><noscript><link href='https://www.blogger.com/dyncss/1308139960516080412/authorization.css?zx=9b7e354c-ab11-4aaa-bad5-db75f62b1de8' rel='stylesheet'/></noscript>
810<meta name='google-adsense-platform-account' content='ca-host-pub-1556223355139109'/>
811<meta name='google-adsense-platform-domain' content='blogspot.com'/>
812
813</head>
814<body class='loading'>
815<div class='navbar no-items section' id='navbar'>
816</div>
817<div itemscope='itemscope' itemtype='http://schema.org/Blog' style='display: none;'>
818<meta content='Christopher Simpson' itemprop='name'/>
819</div>
820<div class='body-fauxcolumns'>
821<div class='fauxcolumn-outer body-fauxcolumn-outer'>
822<div class='cap-top'>
823<div class='cap-left'></div>
824<div class='cap-right'></div>
825</div>
826<div class='fauxborder-left'>
827<div class='fauxborder-right'></div>
828<div class='fauxcolumn-inner'>
829</div>
830</div>
831<div class='cap-bottom'>
832<div class='cap-left'></div>
833<div class='cap-right'></div>
834</div>
835</div>
836</div>
837<div class='content'>
838<div class='content-fauxcolumns'>
839<div class='fauxcolumn-outer content-fauxcolumn-outer'>
840<div class='cap-top'>
841<div class='cap-left'></div>
842<div class='cap-right'></div>
843</div>
844<div class='fauxborder-left'>
845<div class='fauxborder-right'></div>
846<div class='fauxcolumn-inner'>
847</div>
848</div>
849<div class='cap-bottom'>
850<div class='cap-left'></div>
851<div class='cap-right'></div>
852</div>
853</div>
854</div>
855<div class='content-outer'>
856<div class='content-cap-top cap-top'>
857<div class='cap-left'></div>
858<div class='cap-right'></div>
859</div>
860<div class='fauxborder-left content-fauxborder-left'>
861<div class='fauxborder-right content-fauxborder-right'></div>
862<div class='content-inner'>
863<header>
864<div class='header-outer'>
865<div class='header-cap-top cap-top'>
866<div class='cap-left'></div>
867<div class='cap-right'></div>
868</div>
869<div class='fauxborder-left header-fauxborder-left'>
870<div class='fauxborder-right header-fauxborder-right'></div>
871<div class='region-inner header-inner'>
872<div class='header section' id='header'><div class='widget Header' data-version='1' id='Header1'>
873<div id='header-inner'>
874<div class='titlewrapper'>
875<h1 class='title'>
876Christopher Simpson
877</h1>
878</div>
879<div class='descriptionwrapper'>
880<p class='description'><span>
881</span></p>
882</div>
883</div>
884</div></div>
885</div>
886</div>
887<div class='header-cap-bottom cap-bottom'>
888<div class='cap-left'></div>
889<div class='cap-right'></div>
890</div>
891</div>
892</header>
893<div class='tabs-outer'>
894<div class='tabs-cap-top cap-top'>
895<div class='cap-left'></div>
896<div class='cap-right'></div>
897</div>
898<div class='fauxborder-left tabs-fauxborder-left'>
899<div class='fauxborder-right tabs-fauxborder-right'></div>
900<div class='region-inner tabs-inner'>
901<div class='tabs section' id='crosscol'><div class='widget PageList' data-version='1' id='PageList1'>
902<div class='widget-content'>
903<ul>
904<li class='selected'>
905<a href='https://www.cdsimpson.net/'>Home</a>
906</li>
907<li>
908<a href='https://www.cdsimpson.net/p/about-me_16.html'>About Me</a>
909</li>
910<li>
911<a href='https://www.cdsimpson.net/p/publications.html'>Publications</a>
912</li>
913</ul>
914<div class='clear'></div>
915</div>
916</div></div>
917<div class='tabs no-items section' id='crosscol-overflow'></div>
918</div>
919</div>
920<div class='tabs-cap-bottom cap-bottom'>
921<div class='cap-left'></div>
922<div class='cap-right'></div>
923</div>
924</div>
925<div class='main-outer'>
926<div class='main-cap-top cap-top'>
927<div class='cap-left'></div>
928<div class='cap-right'></div>
929</div>
930<div class='fauxborder-left main-fauxborder-left'>
931<div class='fauxborder-right main-fauxborder-right'></div>
932<div class='region-inner main-inner'>
933<div class='columns fauxcolumns'>
934<div class='fauxcolumn-outer fauxcolumn-center-outer'>
935<div class='cap-top'>
936<div class='cap-left'></div>
937<div class='cap-right'></div>
938</div>
939<div class='fauxborder-left'>
940<div class='fauxborder-right'></div>
941<div class='fauxcolumn-inner'>
942</div>
943</div>
944<div class='cap-bottom'>
945<div class='cap-left'></div>
946<div class='cap-right'></div>
947</div>
948</div>
949<div class='fauxcolumn-outer fauxcolumn-left-outer'>
950<div class='cap-top'>
951<div class='cap-left'></div>
952<div class='cap-right'></div>
953</div>
954<div class='fauxborder-left'>
955<div class='fauxborder-right'></div>
956<div class='fauxcolumn-inner'>
957</div>
958</div>
959<div class='cap-bottom'>
960<div class='cap-left'></div>
961<div class='cap-right'></div>
962</div>
963</div>
964<div class='fauxcolumn-outer fauxcolumn-right-outer'>
965<div class='cap-top'>
966<div class='cap-left'></div>
967<div class='cap-right'></div>
968</div>
969<div class='fauxborder-left'>
970<div class='fauxborder-right'></div>
971<div class='fauxcolumn-inner'>
972</div>
973</div>
974<div class='cap-bottom'>
975<div class='cap-left'></div>
976<div class='cap-right'></div>
977</div>
978</div>
979<!-- corrects IE6 width calculation -->
980<div class='columns-inner'>
981<div class='column-center-outer'>
982<div class='column-center-inner'>
983<div class='main section' id='main'><div class='widget Blog' data-version='1' id='Blog1'>
984<div class='blog-posts hfeed'>
985
986          <div class="date-outer">
987        
988<h2 class='date-header'><span>Wednesday, January 9, 2019</span></h2>
989
990          <div class="date-posts">
991        
992<div class='post-outer'>
993<div class='post hentry' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
994<meta content='1308139960516080412' itemprop='blogId'/>
995<meta content='2852563940983097353' itemprop='postId'/>
996<a name='2852563940983097353'></a>
997<h3 class='post-title entry-title' itemprop='name'>
998<a href='https://www.cdsimpson.net/2019/01/teensy-trouble.html'>Teensy Trouble</a>
999</h3>
1000<div class='post-header'>
1001<div class='post-header-line-1'></div>
1002</div>
1003<div class='post-body entry-content' id='post-body-2852563940983097353' itemprop='description articleBody'>
1004In my Ph.D. studies, I have been doing a fair amount of embedded programming. My favorite microcontroller by far has been the aptly-named <a href="http://www.pjrc.com/teensy">Teensy</a>. These microcontrollers have some serious hardware at a very reasonable price. They are also incredibly easy to program due to the fact that they can be programmed with arduino code. I could go on and on about why I like them, but today I foun
1004d a relatively minor issue that caused me a lot of trouble.<br />
1005<br />
1006The Teensy 3.6 has many pins capable of reading analog voltages. The two pins I decided to use for my project are pins 32 (A13) and 35 (A16). I implemented the functionality using <code>analogRead(13)</code>&nbsp; and <code>analogRead(16)</code>, respectively. Interestingly, A13 worked as expected, but A16 did not.&nbsp; Instead, it behaved like a floating pin, and even shorting that pin to ground had no impact on the reading (this should have been a clue, actually). It wasn't just A16, either. All analog pins numbered A14 or higher were not working, while all numbered A13 or lower were working as expected.<br />
1007<br />
1008After much frustration and much investigation, I found the answer. Since <code>analogRead()</code> can accept either analog pin numbers or actual pin numbers as its argument, numbers over 14 are ambiguous to the code, so it assumes the argument is the actual pin number. To avoid this, you can either use the actual pin number or use the analog pin number preceded by "A" (i.e. A14, A15, etc.). This works because those are just macros to the actual pin numbers. In my case, using <code>analogRead(A16)</code> solved the problem.
1009<div style='clear: both;'></div>
1010</div>
1011<div class='post-footer'>
1012<div class='post-footer-line post-footer-line-1'><span class='post-author vcard'>
1013Posted by
1014<span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'>
1015<meta content='https://www.blogger.com/profile/14768438682715700162' itemprop='url'/>
1016<a class='g-profile' href='https://www.blogger.com/profile/14768438682715700162' rel='author' title='author profile'>
1017<span itemprop='name'>Christopher</span>
1018</a>
1019</span>
1020</span>
1021<span class='post-timestamp'>
1022at
1023<meta content='https://www.cdsimpson.net/2019/01/teensy-trouble.html' itemprop='url'/>
1024<a class='timestamp-link' href='https://www.cdsimpson.net/2019/01/teensy-trouble.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2019-01-09T23:50:00-06:00'>11:50&#8239;PM</abbr></a>
1025</span>
1026<span class='post-comment-link'>
1027<a class='comment-link' href='https://www.cdsimpson.net/2019/01/teensy-trouble.html#comment-form' onclick=''>
1028No comments:
1029  </a>
1030</span>
1031<span class='post-icons'>
1032<span class='item-control blog-admin pid-1675439343'>
1033<a href='https://www.blogger.com/post-edit.g?blogID=1308139960516080412&postID=2852563940983097353&from=pencil' title='Edit Post'>
1034<img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/>
1035</a>
1036</span>
1037</span>
1038<div class='post-share-buttons goog-inline-block'>
1039<a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=2852563940983097353&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=2852563940983097353&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=2852563940983097353&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=2852563940983097353&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=2852563940983097353&target=pinterest' target='_blank' title='Share to Pinterest'><span class='share-button-link-text'>
1039Share to Pinterest</span></a>
1040</div>
1041</div>
1042<div class='post-footer-line post-footer-line-2'><span class='post-labels'>
1043Labels:
1044<a href='https://www.cdsimpson.net/search/label/Embedded%20Programming' rel='tag'>Embedded Programming</a>,
1045<a href='https://www.cdsimpson.net/search/label/Hardware' rel='tag'>Hardware</a>,
1046<a href='https://www.cdsimpson.net/search/label/Software%20Bug' rel='tag'>Software Bug</a>,
1047<a href='https://www.cdsimpson.net/search/label/Teensy' rel='tag'>Teensy</a>
1048</span>
1049</div>
1050<div class='post-footer-line post-footer-line-3'><span class='post-location'>
1051</span>
1052</div>
1053</div>
1054</div>
1055</div>
1056
1057          </div></div>
1058        
1059
1060          <div class="date-outer">
1061        
1062<h2 class='date-header'><span>Tuesday, September 27, 2016</span></h2>
1063
1064          <div class="date-posts">
1065        
1066<div class='post-outer'>
1067<div class='post hentry' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
1068<meta content='1308139960516080412' itemprop='blogId'/>
1069<meta content='3801926258972527719' itemprop='postId'/>
1070<a name='3801926258972527719'></a>
1071<h3 class='post-title entry-title' itemprop='name'>
1072<a href='https://www.cdsimpson.net/2016/09/predicting-control-surface-hinge.html'>Predicting Control Surface Hinge Moments using Computational Fluid Dynamics</a>
1073</h3>
1074<div class='post-header'>
1075<div class='post-header-line-1'></div>
1076</div>
1077<div class='post-body entry-content' id='post-body-3801926258972527719' itemprop='description articleBody'>
1078My Master's thesis has finally been published! You can view my thesis <a href="https://drive.google.com/file/d/0B_OtEk0gkL6XMFZ5TjlxeHlCcTg/view?usp=sharing&amp;resourcekey=0-HFcBUQN2HgbP4D5Y2MPmIA">here</a> (faster)&nbsp;or on <a href="http://purl.lib.ua.edu/149910">The University of Alabama Electronic Theses and Dissertations database</a>.&nbsp;I started this research&nbsp;with absolutely no CFD experience. I am quite proud of the fact that I&nbsp;was able to&nbsp;learn enough that I am now considered by many to be an expert. When I look&nbsp;at how far&nbsp;I have come&nbsp;in&nbsp;the last three years, it&nbsp;truly amazes me. I never thought&nbsp;I&nbsp;would learn&nbsp;so much.<br />
1079<br />
1080Thanks to everyone who supported me while I worked on this research, and thanks for your continued support as I continue in my studies.
1081<div style='clear: both;'></div>
1082</div>
1083<div class='post-footer'>
1084<div class='post-footer-line post-footer-line-1'><span class='post-author vcard'>
1085Posted by
1086<span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'>
1087<meta content='https://www.blogger.com/profile/14768438682715700162' itemprop='url'/>
1088<a class='g-profile' href='https://www.blogger.com/profile/14768438682715700162' rel='author' title='author profile'>
1089<span itemprop='name'>Christopher</span>
1090</a>
1091</span>
1092</span>
1093<span class='post-timestamp'>
1094at
1095<meta content='https://www.cdsimpson.net/2016/09/predicting-control-surface-hinge.html' itemprop='url'/>
1096<a class='timestamp-link' href='https://www.cdsimpson.net/2016/09/predicting-control-surface-hinge.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2016-09-27T09:26:00-05:00'>9:26&#8239;AM</abbr></a>
1097</span>
1098<span class='post-comment-link'>
1099<a class='comment-link' href='https://www.cdsimpson.net/2016/09/predicting-control-surface-hinge.html#comment-form' onclick=''>
1100No comments:
1101  </a>
1102</span>
1103<span class='post-icons'>
1104<span class='item-control blog-admin pid-1675439343'>
1105<a href='https://www.blogger.com/post-edit.g?blogID=1308139960516080412&postID=3801926258972527719&from=pencil' title='Edit Post'>
1106<img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/>
1107</a>
1108</span>
1109</span>
1110<div class='post-share-buttons goog-inline-block'>
1111<a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=3801926258972527719&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=3801926258972527719&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=3801926258972527719&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=3801926258972527719&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=3801926258972527719&target=pinterest' target='_blank' title='Share to P
1111interest'><span class='share-button-link-text'>Share to Pinterest</span></a>
1112</div>
1113</div>
1114<div class='post-footer-line post-footer-line-2'><span class='post-labels'>
1115</span>
1116</div>
1117<div class='post-footer-line post-footer-line-3'><span class='post-location'>
1118</span>
1119</div>
1120</div>
1121</div>
1122</div>
1123
1124          </div></div>
1125        
1126
1127          <div class="date-outer">
1128        
1129<h2 class='date-header'><span>Saturday, September 3, 2016</span></h2>
1130
1131          <div class="date-posts">
1132        
1133<div class='post-outer'>
1134<div class='post hentry' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
1135<meta content='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ4pIQbIP-qMiPD7LGjcJjRaX-SFTpnO96l7Znhv6v2NmujzPiHNi7dI2S8QQ7kopFdjTAuXnvLThZV1SIkJSaVfQle2mgGFJlgw9HBoaavXhbaJfxQutYndmHuZ7tcCRsxXianFNTn-Kw/s640/20160903_113851.jpg' itemprop='image_url'/>
1136<meta content='1308139960516080412' itemprop='blogId'/>
1137<meta content='3688002695770534309' itemprop='postId'/>
1138<a name='3688002695770534309'></a>
1139<h3 class='post-title entry-title' itemprop='name'>
1140<a href='https://www.cdsimpson.net/2016/09/rebuilding-three-channel-aircraft.html'>Rebuilding a Three-Channel Aircraft (Dionysus)</a>
1141</h3>
1142<div class='post-header'>
1143<div class='post-header-line-1'></div>
1144</div>
1145<div class='post-body entry-content' id='post-body-3688002695770534309' itemprop='description articleBody'>
1146When I was a kid, I had a 3-channel Cub-like RC airplane. While in storage, the aircraft suffered some rather severe hangar ras
1146h. The damage was the result of the unexpected compression load applied to the fuselage due to poor visibility conditions. In other words, I stepped on the plane because it was dark.<br />
1147<br />
1148<h2>
1149Bringing It Back From The Dead</h2>
1150After I recently "retired" another aircraft when the wing incidence started varying mid-flight, I decided it was time to rebuild the old . The fuselage had been collapsed into itself, so I still had most of the broken pieces after all the years. This made reconstruction a great deal easier. Using copious amounts of wood glue and CA, and just a couple pieces of new balsa, the aircraft was ready for a new skin.<br />
1151<br />
1152I opted to replace all of the skin because the old skin would no longer adhere to the balsa. I removed the existing skin and gave the airframe a new skin of Ultracote Lite (transparent yellow). I found that it is easy to work with, it adheres well, and it gives a very nice finish. The "Lite" version is substantially thinner than the normal stuff.<br />
1153<br />
1154<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
1155<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ4pIQbIP-qMiPD7LGjcJjRaX-SFTpnO96l7Znhv6v2NmujzPiHNi7dI2S8QQ7kopFdjTAuXnvLThZV1SIkJSaVfQle2mgGFJlgw9HBoaavXhbaJfxQutYndmHuZ7tcCRsxXianFNTn-Kw/s1600/20160903_113851.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ4pIQbIP-qMiPD7LGjcJjRaX-SFTpnO96l7Znhv6v2NmujzPiHNi7dI2S8QQ7kopFdjTAuXnvLThZV1SIkJSaVfQle2mgGFJlgw9HBoaavXhbaJfxQutYndmHuZ7tcCRsxXianFNTn-Kw/s640/20160903_113851.jpg" width="640" /></a></td></tr>
1156<tr><td class="tr-caption" style="text-align: center;">The completed repair of the fuselage damage.</td></tr>
1157</tbody></table>
1158<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
1159<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyHTDZyhmWfUj_SUs-L2Smlk8FgSpIEby3QttE0wkmlBbyeNbW3bfQwjLC7OzF_BYWfCYNWNZSncC966RpjtJxqI-d6ZLP1jaT57BvWqgT_hwgPbJhpeneqsfoC5DN794M20_-u42_nlua/s1600/20160903_114248.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyHTDZyhmWfUj_SUs-L2Smlk8FgSpIEby3QttE0wkmlBbyeNbW3bfQwjLC7OzF_BYWfCYNWNZSncC966RpjtJxqI-d6ZLP1jaT57BvWqgT_hwgPbJhpeneqsfoC5DN794M20_-u42_nlua/s640/20160903_114248.jpg" width="640" /></a></td></tr>
1160<tr><td class="tr-caption" style="text-align: center;">This spot on the wing had also been damaged. The broken piece was glued back in place.</td></tr>
1161</tbody></table>
1162<br />
1163<br />
1164In addition to structural repairs, I decided that it was a good time to modernize the components. Gone are the 72 MHz receiver, brushed motor, gearbox, ESC, and NiMh (NiCd?) battery. I now have a Spektrum 2.4 GHz receiver, brushless motor and ESC, and a 3s LiPo battery.<br />
1165<br />
1166<div class="separator" style="clear: both; text-align: center;">
1167<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG8lfYQkVMq4RWuKPJ_wC2cryga1xIO19mAE-BE7LhqnLNkN12XYfjrTUK_DbceI7bSyKD2R6WpF76rZgYCKObfdzWIVOaUg4WRG7kd_xXSt7G6QTmQ0DVVI61Ex5qZlawPcTGAdJPNT77/s1600/20160903_113930.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG8lfYQkVMq4RWuKPJ_wC2cryga1xIO19mAE-BE7LhqnLNkN12XYfjrTUK_DbceI7bSyKD2R6WpF76rZgYCKObfdzWIVOaUg4WRG7kd_xXSt7G6QTmQ0DVVI61Ex5qZlawPcTGAdJPNT77/s400/20160903_113930.jpg" width="225" /></a></div>
1168<br />
1169<br />
1170I fabricated a motor mount to convert the aircraft from a brushed inrunner motor to a brushless outrunner. The entire motor mount assembly is attached to the airframe using a couple of cable ties through existing holes, so I can easily remove it if needed. &nbsp;
1170With this motor, the aircraft has much more power than it needs. The thrust-to-weight ratio is about 2, so it can climb vertically.<br />
1171<br />
1172<div class="separator" style="clear: both; text-align: center;">
1173<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirzkazLDcCGIvRs_OsKRr186j6_hT6CcVqirp7SBkcMKGyi8Lw4N0qOqG0xAcKmUZI9fJhBwrVHJTqlIJC6bDL0R_ZVYJ0DSY5uOGPSD_9WKKIHp_Wgg8ckccA4YUCknB2wwBlK45ICA2T/s1600/20160903_113955.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirzkazLDcCGIvRs_OsKRr186j6_hT6CcVqirp7SBkcMKGyi8Lw4N0qOqG0xAcKmUZI9fJhBwrVHJTqlIJC6bDL0R_ZVYJ0DSY5uOGPSD_9WKKIHp_Wgg8ckccA4YUCknB2wwBlK45ICA2T/s320/20160903_113955.jpg" width="180" /></a></div>
1174<br />
1175<div class="separator" style="clear: both; text-align: center;">
1176<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3zfulIvVYlNl4ioAZ6tJQToZOFgEHWPjjlzSeVXN7CO-WLwGaI6HoE8SfN3QQAfFbq1ObM9nNukbcbqV_So5NCHPiqq16cQxf9JKSV0XtMYlo-cvLzP7cMzpGP-0Fe5_zudelRUpB4UgV/s1600/20160903_114007.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3zfulIvVYlNl4ioAZ6tJQToZOFgEHWPjjlzSeVXN7CO-WLwGaI6HoE8SfN3QQAfFbq1ObM9nNukbcbqV_So5NCHPiqq16cQxf9JKSV0XtMYlo-cvLzP7cMzpGP-0Fe5_zudelRUpB4UgV/s320/20160903_114007.jpg" width="320" /></a></div>
1177<div class="separator" style="clear: both; text-align: center;">
1178</div>
1179<br />
1180<br />
1181<br />
1182I also added a Mobius ActionCam to record video of my flights. I mounted the camera on the bottom of the fuselage, directly at the center of gravity. A piece of 1/8-inch birch plywood on the inside of the fuselage acts as a reinforcement plate, distributing the load to the balsa fuselage. The camera mount simply bolts onto the fuselage. You can see some footage recorded with this camera below and on my YouTube channel.<br />
1183<br />
1184<div class="separator" style="clear: both; text-align: center;">
1185<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjORrKcn9Wa65Qmv03fms13CQ2fFHcPbssiNKIbeRYxx1Q1QHcHILofs90Akh-HlwC8p80kwybMFfZIkSpUO0aFgWQtupTQh6UueyRpB_I9ckYcui7ImOIboIyySptxW5rJmqozqD7ePJW6/s1600/20160903_114052.jpg" imageanchor="1"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjORrKcn9Wa65Qmv03fms13CQ2fFHcPbssiNKIbeRYxx1Q1QHcHILofs90Akh-HlwC8p80kwybMFfZIkSpUO0aFgWQtupTQh6UueyRpB_I9ckYcui7ImOIboIyySptxW5rJmqozqD7ePJW6/s320/20160903_114052.jpg" width="180" /></a></div>
1186<br />
1187<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
1188<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMuvDBltv32twvr5WP4f5AoXZxTL9keekJAtfXQJLsnv_8eel7Tca72OxGUYJj8syuiFMfSb728XwePUuIvnap7WzkJHiygmNgYt5IIyQ6DcJ-YwlHSqISqPs_k-8CR3r5BqOmRkh0uFZD/s1600/20160903_114129.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMuvDBltv32twvr5WP4f5AoXZxTL9keekJAtfXQJLsnv_8eel7Tca72OxGUYJj8syuiFMfSb728XwePUuIvnap7WzkJHiygmNgYt5IIyQ6DcJ-YwlHSqISqPs_k-8CR3r5BqOmRkh0uFZD/s320/20160903_114129.jpg" width="320" /></a></td></tr>
1189<tr><td class="tr-caption" style="text-align: center;">You can see the reinforcement plate for the camera at the bottom of the fuselage.</td></tr>
1190</tbody></table>
1191<br />
1192<br />
1193The total weight of the aircraft with battery and camera installed is 1 lb 15 oz. Because I used parts that I already had lying around, the total cost of the rebuild was about $5 plus my time. Overall, I am pleased with the quality of the rebuild.<br />
1194<br />
1195<h2>
1196Test Flight Footage and Observations</h2>
1197<div>
1198Of course, the point of undertaking this repair was to get the aircraft flying again. So early one morning, I took it to the soccer field for a test flight. It turns out that 8:00 AM is a good time to fly for a number of reasons. Not only is it the most convenient time for me, but also the soccer fields are not in use, the weather is usually calm, and the lighting is perfect for filming to the west.</div>
1199<div>
1200<br /></div>
1201<div class="separator" style="clear: both; text-align: center;">
1202<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/b0bSux1TyWI/0.jpg" src="https://www.youtube.com/embed/b0bSux1TyWI?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
1203<div>
1204<br /></div>
1205<div>
1206<br /></div>
1207<div>
1208The aircraft itself performs very well. Since the aircraft has no ailerons, it relies on the dihedral of the wing to produce a rolling moment with rudder deflection. I mapped the rudder to the aileron channel on my transmitter.&nbsp;The dynamic roll response is surprisingly fast.&nbsp;Truth be told, I only notice the lack of ailerons during slow flight.</div>
1209<div>
1210<br /></div>
1211<div>
1212With the salvaged parts I had on hand, the aircraft has much more power than 
1212it needs. I estimate the thrust-to-weight ratio to be about 2, so it can climb vertically with no problem. The recorded flight lasted 10 minutes, and the&nbsp;3S&nbsp;2200 mAh battery was still at 11.8 V at the end of the flight.</div>
1213<div>
1214<br /></div>
1215<div>
1216Having successfully resurrected the aircraft, it is only appropriate to give it a suitable name. I like to name things after mythological entities, and I think&nbsp;Dionysus fits pretty well given the story. I just hope I don't have to change the name to Osiris down the road.</div>
1217<div>
1218<br /></div>
1219<div style='clear: both;'></div>
1220</div>
1221<div class='post-footer'>
1222<div class='post-footer-line post-footer-line-1'><span class='post-author vcard'>
1223Posted by
1224<span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'>
1225<meta content='https://www.blogger.com/profile/14768438682715700162' itemprop='url'/>
1226<a class='g-profile' href='https://www.blogger.com/profile/14768438682715700162' rel='author' title='author profile'>
1227<span itemprop='name'>Christopher</span>
1228</a>
1229</span>
1230</span>
1231<span class='post-timestamp'>
1232at
1233<meta content='https://www.cdsimpson.net/2016/09/rebuilding-three-channel-aircraft.html' itemprop='url'/>
1234<a class='timestamp-link' href='https://www.cdsimpson.net/2016/09/rebuilding-three-channel-aircraft.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2016-09-03T18:03:00-05:00'>6:03&#8239;PM</abbr></a>
1235</span>
1236<span class='post-comment-link'>
1237<a class='comment-link' href='https://www.cdsimpson.net/2016/09/rebuilding-three-channel-aircraft.html#comment-form' onclick=''>
12382 comments:
1239  </a>
1240</span>
1241<span class='post-icons'>
1242<span class='item-control blog-admin pid-1675439343'>
1243<a href='https://www.blogger.com/post-edit.g?blogID=1308139960516080412&postID=3688002695770534309&from=pencil' title='Edit Post'>
1244<img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/>
1245</a>
1246</span>
1247</span>
1248<div class='post-share-buttons goog-inline-block'>
1249<a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=3688002695770534309&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=3688002695770534309&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=3688002695770534309&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=3688002695770534309&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=3688002695770534309&target=pinterest' target='_blank' title='Share to Pinterest'><span class='share-button-link-text'>Share to Pinterest</span></a>
1250</div>
1251</div>
1252<div class='post-footer-line post-footer-line-2'><span class='post-labels'>
1253</span>
1254</div>
1255<div class='post-footer-line post-footer-line-3'><span class='post-location'>
1256</span>
1257</div>
1258</div>
1259</div>
1260</div>
1261
1262          </div></div>
1263        
1264
1265          <div class="date-outer">
1266        
1267<h2 class='date-header'><span>Thursday, April 30, 2015</span></h2>
1268
1269          <div class="date-posts">
1270        
1271<div class='post-outer'>
1272<div class='post hentry' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
1273<meta content='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXzqYy99jVHdqz-PtpKChW3OGrPxhRdmlaH-S1iXxodLXd67GyuqPLDTMQtVDX0rY0f7nPMWwFV4LNfGsyQmuCUpV6fywaT_L-1Z2V5LCf4WtPt1nOjfvtrFUpFZT4hQReQfXp_uaWYwDX/s1600/blasius.png' itemprop='image_url'/>
1274<meta content='1308139960516080412' itemprop='blogId'/>
1275<meta content='5738881285201456467' itemprop='postId'/>
1276<a name='5738881285201456467'></a>
1277<h3 class='post-title entry-title' itemprop='name'>
1278<a href='https://www.cdsimpson.net/2015/04/temporal-and-spatial-stability-analysis.html'>Temporal and Spatial Stability Analysis of the Orr-Sommerfeld Equation</a>
1279</h3>
1280<div class='post-header'>
1281<div class='post-header-line-1'></div>
1282</div>
1283<div class='post-body entry-content' id='post-body-5738881285201456467' itemprop='description articleBody'>
1284This is the second and final part of the stability analysis of the Orr-Sommerfeld Equation. In my <a href="http://www.cdsimpson.net/2015/04/derivation-of-orr-sommerfeld-equation.html">previous post</a>, I went through the derivation and nondimensionalization of the Orr-Sommerfeld Equation. In this part, I show how to perform the temporal and spatial stability analyses.<br />
1285<br />
1286<h2>
1287Blasius Velocity Profile</h2>
1288A 2-D Blasius boundary layer can be expressed as<br />
1289$$\bar{U}=f'\left(\eta\right)\tag{1}\label{blasius}$$<br />
1290where<br />
1291$$\begin{align}\eta=y\sqrt{\frac{U_{\infty}}{2\nu x}}\\f'''+ff''&amp;=0\\f(0)=f'(0)&amp;=0\\f'(\infty)&amp;=1\end{align}$$<br />
1292This is a nonlinear ordinary differential equation that is most easily solved using a shooting method. In a shooting method, the boundary value problem is made into an initial value problem, whereby an initial guess of one parameter is iteratively updated until the opposite boundary conditions are met. In the present case, the unknown boun
1292dary condition is \(f''(0)\) , so it is iteratively adjusted until \(|f'(10)-1|\leq10^{-6}\). The present case uses a fourth-order Runge-Kutta method of integration. The initial condition The transformation of the Blasius velocity profile from \(\eta\) to \(\xi\) is performed by determining the distance from the wall, \(\delta\), where the stream-wise velocity is \(99.9\%\) of the free-stream velocity.<br />
1293$$\begin{align}\bar{U}\left(\xi\right)&amp;=\bar{U}\left(\frac{\eta}{\delta}\right)\\\bar{U}''\left(\xi\right)&amp;=\frac{1}{\delta^{2}}\bar{U}''\left(\frac{\eta}{\delta}\right)\end{align}\tag{2}\label{transform}$$<br />
1294The figure below shows the Blasius velocity profile and its derivatives.<br />
1295<br />
1296<div class="separator" style="clear: both; text-align: center;">
1297<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXzqYy99jVHdqz-PtpKChW3OGrPxhRdmlaH-S1iXxodLXd67GyuqPLDTMQtVDX0rY0f7nPMWwFV4LNfGsyQmuCUpV6fywaT_L-1Z2V5LCf4WtPt1nOjfvtrFUpFZT4hQReQfXp_uaWYwDX/s1600/blasius.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="351" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXzqYy99jVHdqz-PtpKChW3OGrPxhRdmlaH-S1iXxodLXd67GyuqPLDTMQtVDX0rY0f7nPMWwFV4LNfGsyQmuCUpV6fywaT_L-1Z2V5LCf4WtPt1nOjfvtrFUpFZT4hQReQfXp_uaWYwDX/s1600/blasius.png" width="520" /></a></div>
1298<br />
1299<h2>
1300Temporal Stability</h2>
1301<div>
1302<div>
1303The Orr-Sommerfeld equation can be analyzed for temporal stability by assuming that \(\bar{\alpha}\) is real. This enables us to rearrange the non-dimensional Orr-Sommerfeld equation as follows.</div>
1304</div>
1305<div>
1306$$\left(-\bar{U}\bar{\alpha}^{2}-U''+\frac{i\bar{\alpha}^{3}}{Re_{\delta}}\right)\bar{\phi}+\left(\bar{U}-\frac{2i\bar{\alpha}}{Re_{\delta}}\right)\bar{\phi}''+\left(\frac{i}{\bar{\alpha}Re_{\delta}}\right)\bar{\phi}''''=\bar{c}\left(\bar{\phi}''-\bar{\alpha}^{2}\bar{\phi}\right)\tag{3}\label{realalpha}$$</div>
1307<div>
1308<div>
1309If we discretize this equation using a finite difference approximation for \(\bar{\phi}''\) and \(\bar{\phi}''''\), we get an equation of the form</div>
1310</div>
1311<div>
1312$$A\Phi=\tilde{c}B\Phi\tag{4}\label{eigmatrixform}$$</div>
1313<div>
1314<div>
1315where \(\Phi\) is a vector containing values \(\bar{\phi}_{i}\) at discrete locations. This is nothing more than an eigenvalue problem, where \(\tilde{c}\) is a diagonal matrix of eigenvalues for the discrete system. The present calculations use a second order central differencing scheme to approximate the second and fourth derivative terms.</div>
1316</div>
1317<div>
1318$$\begin{align}\bar{\phi}_{i}''&amp;\approx\frac{\bar{\phi}_{i-1}-2\bar{\phi}_{i}+\bar{\phi}_{i+1}}{h^{2}}\\\bar{\phi}_{i}''''&amp;\approx\frac{\bar{\phi}_{i-2}-4\bar{\phi}_{i-1}+6\bar{\phi}_{i}-4\bar{\phi}_{i+1}+\bar{\phi}_{i+2}}{h^{4}}\end{align}\tag{5}\label{eqfindiff}$$</div>
1319<div>
1320<div>
1321At the boundaries, \(\bar{\phi}=0\), so the first and last columns of \(A\) and \(B\) are removed. However, \(\bar{\phi}'=0\) also at the boundaries. Fortunately, using a backward difference method at the boundary gives \(\bar{\phi}_{-1}\approx\bar{\phi}_{0}\), so the \(\bar{\phi}_{i-2}\) term can be omitted from the \(\bar{\phi}''''\) approximation just inside the wall boundary. Similarly, the \(\bar{\phi}_{i+2}\) term can be omitted just inside the free-stream boundary.</div>
1322</div>
1323<div>
1324<div>
1325The finite difference approximations in Equation \ref{eqfindiff} gives a pentadiagonal \(A\) and tridiagonal \(B\).</div>
1326</div>
1327<div>
1328<div>
1329$$\begin{align}A&amp;=\frac{1}{h^{4}}\left[\begin{array}{ccccc}a_{11} &amp; a_{21} &amp; a_{3} &amp; &nbsp;&amp; 0\\a_{21} &amp; \ddots &amp; \ddots &amp; \ddots\\a_{3} &amp; \ddots &amp; \ddots &amp; \ddots &amp; a_{3}\\ &amp; \ddots &amp; \ddots &amp; \ddots &amp; a_{2n}\\0 &amp; &nbsp;&amp; a_{3} &amp; a_{2n} &amp; a_{1n}\end{array}\right]\\B&amp;=\frac{1}{h^{2}}\left[\begin{array}{cccc}b_{1} &amp; b_{2} &amp; &nbsp;&amp; 0\\b_{2} &amp; \ddots &amp; \ddots\\ &amp; \ddots &amp; \ddots &amp; b_{2}\\0 &amp; &nbsp;&amp; b_{2} &amp; b_{1}\end{array}\right]\end{align}\tag{6}\label{fdmatrix}$$</div>
1330</div>
1331<div>
1332where</div>
1333<div>
1334$$\begin{align}a_{1i}&amp;=h^{4}\left(-\bar{U}_{i}\bar{\alpha}^{3}-\bar{U}_{i}''\bar{\alpha}+\frac{i\bar{\alpha}}{Re_{\delta}}\right)-2h^{2}\left(\bar{U}_{i}\bar{\alpha}-\frac{2i\bar{\alpha}}{Re_{\delta}}\right)+6\left(\frac{i}{Re_{\delta}}\right)\\a_{2i}&amp;=h^{2}\left(\bar{U}_{i}\bar{\alpha}-\frac{2i\bar{\alpha}}{Re_{\delta}}\right)-4\left(\frac{i}{Re_{\delta}}\right)\\a_{3}&amp;=\frac{i}{Re_{\delta}}\\b_{1}&amp;=-h^{2}\bar{\alpha}^{3}-\bar{\alpha}\\b_{2}&amp;=\bar{\alpha}\end{align}\tag{7}\label{fdmatrixcoef}$$</div>
1335<div>
1336<div>
1337The coefficients in \(A\) depend on the velocity profile, which varies with the distance from the wall. However, \(B\) is constant for a given \(\bar{\alpha}\). In addition, \(B\) is guaranteed to be real and symmetric, and is thus guaranteed to be invertible. We can thus left multiply Equation \ref{eigmatrixform} by \(B^{-1}\) and rewrite the equation as follows.</div>
1338</div>
1339<div>
1340$$B^{-1}A\Phi=B^{-1}\tilde{c}B\Phi\tag{8}\label{newmatform}$$</div>
1341<div>
1342<div>
1343It is clear that the eigenvalues of \(B^{-1}A\) are the eigenvalues in \(\tilde{c}\). Matlab's <span style="font-family: Courier New, Courier, monospace;">eig</span> function was used to solve for the eigenvalues for each combination of \(\bar{\alpha}\) and \(Re\). The following figure shows the eigenvalues of the discrete system using one value of \(\bar{\alpha}\) and \(Re\). Each combination of \(\bar{\alpha}\) and \(Re\) gives a unique set of eigenvalues similar to these.<br />
1344<br /></div>
1345</div>
1346<div class="separator" style="clear: both; text-align: center;">
1347<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoYS8S5ySDjILnf-KEpoqEgkPCHV-YZgK9CzS-m1ZhJ0Cs1epO9DESe3FWgoFIwcTG_Y
13470LHczbCGZ8w-L3LcvjaO9y0JS1wxGG72NkRFeKs_QhKQmgCN3rUcG7N0mZKDmph9ef3tcaJ6WB/s1600/temporal_eigenvalues_example.png"><img border="0" height="351" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoYS8S5ySDjILnf-KEpoqEgkPCHV-YZgK9CzS-m1ZhJ0Cs1epO9DESe3FWgoFIwcTG_Y0LHczbCGZ8w-L3LcvjaO9y0JS1wxGG72NkRFeKs_QhKQmgCN3rUcG7N0mZKDmph9ef3tcaJ6WB/s1600/temporal_eigenvalues_example.png" width="520" /></a></div>
1348<div>
1349<br />
1350Because this is a stability analysis, we only care about the most unstable eigenvalue. The governing equation is related to \(e^{i\alpha(x-\left(c_{r}+ic_{i}\right)t)}\). If \(\alpha\) is real, then any instabilities must come from an eigenvalue with a positive imaginary component. For this reason, the interesting eigenvalue is the eigenvalue with the maximum imaginary component. This analysis was done over a range of \(\bar{\alpha}\) and \(Re\), and the most unstable eigenvalue was stored for each combination. Matlab's <span style="font-family: Courier New, Courier, monospace;">contour</span> function was then used to plot the contours shown in the following figure.<br />
1351<br />
1352<div class="separator" style="clear: both; text-align: center;">
1353<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA3lvtI3-S69hEb-g9XeGhmjcbv4GChuCG7__Yg4VaUxYXlpZJXRvDLembtZkARscC3EbNlL5Yvsx6yZwOkZV7sYONYShxHro147aqPT0CcxcLQFuI7jDH0ECBODvbcFDxpkzxUB9-VcLW/s1600/temporal_stability.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="351" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA3lvtI3-S69hEb-g9XeGhmjcbv4GChuCG7__Yg4VaUxYXlpZJXRvDLembtZkARscC3EbNlL5Yvsx6yZwOkZV7sYONYShxHro147aqPT0CcxcLQFuI7jDH0ECBODvbcFDxpkzxUB9-VcLW/s1600/temporal_stability.png" width="520" /></a></div>
1354<br />
1355It is important to note that the contours shown here differ from those found by Wazzan in [7] because the Orr-Sommerfeld equation has been nondimensionalized in a different manner. The present case used the boundary layer thickness \(\delta\), while Wazzan used displacement thickness \(\delta^{*}\).<br />
1356<br />
1357<h2>
1358Spatial Stability</h2>
1359</div>
1360<div>
1361<div>
1362The temporal stability analysis is performed assuming that \(\bar{\alpha}\) is real. In the spatial stability analysis, we assume that \(\omega\) is real. It is possible to derive a polynomial eigenvalue problem for the eigenvalues \(\bar{\alpha}\), but solving the polynomial eigenvalue problem presented some challenges. Namely, at least one of the coefficient matrices was singular.</div>
1363</div>
1364<div>
1365<br /></div>
1366<div class="separator" style="clear: both; text-align: center;">
1367<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDdBR9tdahYxIxU0JAETt8uZ34jFihme4SHSKi2oUJGNWRtJ77IpyK-nWz9aaXaMoGoL0Pkw4KJcJt3RSmerFp2y7JS23PxJQK0nfp8oGHnREEROOMghN2I62av-3g-YYgtEs75baDb5P1/s1600/spatial_map.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDdBR9tdahYxIxU0JAETt8uZ34jFihme4SHSKi2oUJGNWRtJ77IpyK-nWz9aaXaMoGoL0Pkw4KJcJt3RSmerFp2y7JS23PxJQK0nfp8oGHnREEROOMghN2I62av-3g-YYgtEs75baDb5P1/s1600/spatial_map.png" width="520" /></a></div>
1368<div>
1369<br />
1370To circumvent this challenge, a mapping method has been used to give a relation between a complex \(\bar{\alpha}\) and a complex \(\omega\). In the present case, we hold \(\bar{\alpha}_{i}\) at a specific value and vary \(\bar{\alpha}_{r}\). For each \(\bar{\alpha}_{r}\), the discrete eigenvalue problem is solved for \(\omega\), and the most unstable eigenvalue is kept as before. By varying \(\bar{\alpha}_{r}\) with \(\bar{\alpha}_{i}\), a curve of \(\omega\) values can be plotted in the complex plane, as shown in the figure above. We then determine if there is an \(\bar{\alpha}_{r}\) that gives \(\omega_{i}=0\) and store any locations that satisfy this condition. This process is repeated for a range of \(Re\) for all interesting \(\bar{\alpha}_{i}\) values. The results of this process are shown in the figure below.<br />
1371<br />
1372<div class="separator" style="clear: both; text-align: center;">
1373<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKFVVka8xQmSUOn1ZVpnw-tUUGWOTPpiW73OBPN9TDKmTwkFz6C7A0Z_Uj4LvKQru1bfRadisHSELDsUU5-WkZQUH48YdRkQJaSLB4GGHVMJUZBmf7czXRI1OUhOpV1iFGc4uFUwmBBDtX/s1600/spatial_stability.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="351" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKFVVka8xQmSUOn1ZVpnw-tUUGWOTPpiW73OBPN9TDKmTwkFz6C7A0Z_Uj4LvKQru1bfRadisHSELDsUU5-WkZQUH48YdRkQJaSLB4GGHVMJUZBmf7czXRI1OUhOpV1iFGc4uFUwmBBDtX/s1600/spatial_stability.png" width="520" /></a></div>
1374<br />
1375<h2>
1376Discussion</h2>
1377</div>
1378<div>
1379<div>
1380This report is not the first on this topic, and the results do match fairly well with the references. Once the discretization was properly arranged, the eigenvalue computation was trivial using Matlab's built-in functions. Some factors added complexity to the project. The temporal stability curves are sensitive to the discretization step size and the number of \(Re\) and \(\bar{\alpha}\) values used. However, the spatial stability curves were far more sensitive.&nbsp;</div>
1381<div>
1382<br /></div>
1383<div>
1384It turns out that an insufficient number of \(\bar{\alpha}_{r}\) values will give bad resolution in the complex \(\omega\) plane, periodically overestimating the zero locations. This caused some oscillations at larger values of \(Re\). Additionally, a large number of Reynold's Number steps were required to ensure that the each of the desired contours were visible.Compounding the issue was the fact that an extra variable effectively raised computation time by nearly an order of magnitude.<br />
1385<br /></div>
1386</div>
1387<h2>
1388References</h2>
1389<div>
1390<ol>
1391<li>
1391J. D. Anderson. <i>Fundamentals of Aerodynamics</i>. Aeronautical and Aerospace&nbsp;Engineering Series. McGraw Hill, 4th edition, 2007.</li>
1392<li>M. J. Maghrebi. Orr Sommerfeld Solver using Mapped  Finite Di fference&nbsp;scheme for plane wake fl ow. <i>Journal of Aerospace Science and Technology</i>, 2(4):55-63, December 2005</li>
1393<li>P. J. J. Moeleker. Linear Temporal Stability Analysis. Technical report, Delft University of Technology, 1998. Series 01: Aerodynamics 07.</li>
1394<li>B. S. Ng and W. H. Reid. Simple Asymptotics for the Temporal Spectrum of an Orr-Sommerfeld Problem. <i>Applied Mathematics Letters</i>, 13:51-55, 2000.</li>
1395<li>S. A. Orszag. Accurate Solution of the Orr-Sommerfeld Stability Equation. Technical report, Massachusetts Institute of Technology, May 1971.</li>
1396<li>T. Patel. Stability Properties of Self-propelled Wakes. Master's Thesis, University of California, San Diego, 2012.</li>
1397<li>A. R. Wazzan, T. T. Okamura, and A. M. O. Smith. Spatial and Temporal Stability Charts for the Falkner-Skan Boundary-layer Profiles. Technical report, Douglas Aircraft Company, 1968.</li>
1398<li>F. M. White. <i>Viscous Fluid Flow</i>. McGraw-Hill Series in Mechanical Engineering. McGraw Hill, 2nd edition, 1991.</li>
1399</ol>
1400<div>
1401<br /></div>
1402<h2>
1403Matlab Codes</h2>
1404</div>
1405<div>
1406These are the Matlab files needed to perform this analysis. Please feel free to use them as you will, but please give me credit. A link to my blog is always appreciated.</div>
1407<div>
1408Main Stability Analysis Code:&nbsp;<a href="https://drive.google.com/file/d/0B_OtEk0gkL6XS1N6NU9XNks2OFU/view?usp=sharing&amp;resourcekey=0-1T334E5Ann7OwIz-ZwbFiw">cs_orr_sommerfeld_stability.m</a><br />
1409Fourth Order Runge-Kutta Routine:&nbsp;<a href="https://drive.google.com/file/d/0B_OtEk0gkL6XYkthSjRSX1NFdFE/view?usp=sharing&amp;resourcekey=0-_RX9ZF52ST_BNOOGDzJXVw">cs_rk4.m</a></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div>
1410<div class="separator" style="clear: both; text-align: center;">
1411</div>
1412<div style='clear: both;'></div>
1413</div>
1414<div class='post-footer'>
1415<div class='post-footer-line post-footer-line-1'><span class='post-author vcard'>
1416Posted by
1417<span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'>
1418<meta content='https://www.blogger.com/profile/14768438682715700162' itemprop='url'/>
1419<a class='g-profile' href='https://www.blogger.com/profile/14768438682715700162' rel='author' title='author profile'>
1420<span itemprop='name'>Christopher</span>
1421</a>
1422</span>
1423</span>
1424<span class='post-timestamp'>
1425at
1426<meta content='https://www.cdsimpson.net/2015/04/temporal-and-spatial-stability-analysis.html' itemprop='url'/>
1427<a class='timestamp-link' href='https://www.cdsimpson.net/2015/04/temporal-and-spatial-stability-analysis.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2015-04-30T00:17:00-05:00'>12:17&#8239;AM</abbr></a>
1428</span>
1429<span class='post-comment-link'>
1430<a class='comment-link' href='https://www.cdsimpson.net/2015/04/temporal-and-spatial-stability-analysis.html#comment-form' onclick=''>
143113 comments:
1432  </a>
1433</span>
1434<span class='post-icons'>
1435<span class='item-control blog-admin pid-1675439343'>
1436<a href='https://www.blogger.com/post-edit.g?blogID=1308139960516080412&postID=5738881285201456467&from=pencil' title='Edit Post'>
1437<img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/>
1438</a>
1439</span>
1440</span>
1441<div class='post-share-buttons goog-inline-block'>
1442<a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=5738881285201456467&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=5738881285201456467&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=5738881285201456467&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=5738881285201456467&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=5738881285201456467&target=pinterest' target='_blank' title='Share to P
1442interest'><span class='share-button-link-text'>Share to Pinterest</span></a>
1443</div>
1444</div>
1445<div class='post-footer-line post-footer-line-2'><span class='post-labels'>
1446</span>
1447</div>
1448<div class='post-footer-line post-footer-line-3'><span class='post-location'>
1449</span>
1450</div>
1451</div>
1452</div>
1453</div>
1454
1455          </div></div>
1456        
1457
1458          <div class="date-outer">
1459        
1460<h2 class='date-header'><span>Friday, April 3, 2015</span></h2>
1461
1462          <div class="date-posts">
1463        
1464<div class='post-outer'>
1465<div class='post hentry' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
1466<meta content='1308139960516080412' itemprop='blogId'/>
1467<meta content='2086199257535490192' itemprop='postId'/>
1468<a name='2086199257535490192'></a>
1469<h3 class='post-title entry-title' itemprop='name'>
1470<a href='https://www.cdsimpson.net/2015/04/derivation-of-orr-sommerfeld-equation.html'>Derivation and Nondimensionalization of the Orr-Sommerfeld Equation</a>
1471</h3>
1472<div class='post-header'>
1473<div class='post-header-line-1'></div>
1474</div>
1475<div class='post-body entry-content' id='post-body-2086199257535490192' itemprop='description articleBody'>
1476The Orr-Sommerfeld equation is a famous equation that can give some insight into the stability of the velocity profile of a fluid flow.&nbsp;This is one of two parts on the derivation and stability analysis of the Orr-Sommerfeld equation. In this post, I derive the Orr-Sommerfeld equation starting from the 2-D Navier-Stokes equations. I then show how it can be nondimensionalized. It may look like a lot of math at first glance, but it is all relatively simple.<br />
1477<br />
1478<h2>
1479Derivation</h2>
1480<div>
1481The 2-D Navier-Stokes equations are given as follows:<br />
1482$$\begin{align}<br />
1483\nabla\vec{V}&amp;=0\\<br />
1484\rho\frac{D\vec{V}}{Dt}&amp;=-\nabla p+\mu\nabla^{2}\vec{V}<br />
1485\end{align}$$</div>
1486<div>
1487Letting \(V_{x}=U+u'\), \(V_{y}=V+v'\), and \(p=P+p'\) and performing a small disturbance analysis gives the small perturbation version of the Navier-Stokes Equations<br />
1488$$\begin{align}\frac{\partial u'}{\partial x}+\frac{\partial v'}{\partial y}&amp;=0\\<br />
1489\frac{\partial u'}{\partial t}+U\frac{\partial u'}{\partial x}+V\frac{\partial u'}{\partial y}+u'\frac{\partial U}{\partial x}+v'\frac{\partial U}{\partial y}&amp;=-\frac{1}{\rho}\frac{\partial p'}{\partial x}+\frac{\mu}{\rho}\left(\frac{\partial^{2}u'}{\partial x^{2}}+\frac{\partial^{2}u'}{\partial y^{2}}
1489\right)\\<br />
1490\frac{\partial v'}{\partial t}+U\frac{\partial v'}{\partial x}+V\frac{\partial v'}{\partial y}+u'\frac{\partial V}{\partial x}+v'\frac{\partial V}{\partial y}&amp;=-\frac{1}{\rho}\frac{\partial p'}{\partial y}+\frac{\mu}{\rho}\left(\frac{\partial^{2}v'}{\partial x^{2}}+\frac{\partial^{2}v'}{\partial y^{2}}\right)<br />
1491\end{align}\tag{1}$$</div>
1492<div>
1493Assuming parallel flow, where \(U\approx U(y)\) and \(V\approx0\), we can simplify this to the the following form of the Navier-Stokes equations.</div>
1494<div>
1495$$\begin{align}\frac{\partial u'}{\partial x}+\frac{\partial v'}{\partial y}&amp;=0\\\frac{\partial u'}{\partial t}+U\frac{\partial u'}{\partial x}+v'\frac{\partial U}{\partial y}&amp;=-\frac{1}{\rho}\frac{\partial p'}{\partial x}+\frac{\mu}{\rho}\left(\frac{\partial^{2}u'}{\partial x^{2}}+\frac{\partial^{2}u'}{\partial y^{2}}\right)\\\frac{\partial v'}{\partial t}+U\frac{\partial v'}{\partial x}&amp;=-\frac{1}{\rho}\frac{\partial p'}{\partial y}+\frac{\mu}{\rho}\left(\frac{\partial^{2}v'}{\partial x^{2}}+\frac{\partial^{2}v'}{\partial y^{2}}
1495\right)\end{align}\label{simp_NS}\tag{2}$$</div>
1496<div>
1497In this analysis, disturbances are assumed to be Tollmien-Schlichting waves, with the general form as follows.</div>
1498<div>
1499$$\begin{align}\psi&amp;=\phi(y)e^{i(\alpha x-\omega t)}\\u'&amp;=\frac{\partial\psi}{\partial y}=\frac{\partial\phi}{\partial y}e^{i(\alpha x-\omega t)}\\v'&amp;=-\frac{\partial\psi}{\partial x}=-i\alpha\phi e^{i(\alpha x-\omega t)}\end{align}\tag{3}$$</div>
1500<div>
1501The temporal and spatial derivatives are then calculated as follows.</div>
1502<div>
1503$$\begin{align}\frac{\partial u'}{\partial t}&amp;=-i\omega\frac{\partial\phi}{\partial y}e^{i(\alpha x-\omega t)}\\\frac{\partial u'}{\partial x}&amp;=i\alpha\frac{\partial\phi}{\partial y}e^{i(\alpha x-\omega t)}\\\frac{\partial^{2}u'}{\partial x^{2}}&amp;=-\alpha^{2}\frac{\partial\phi}{\partial y}e^{i(\alpha x-\omega t)}\\\frac{\partial u'}{\partial y}&amp;=\frac{\partial^{2}\phi}{\partial y^{2}}e^{i(\alpha x-\omega t)}\\\frac{\partial^{2}u'}{\partial y^{2}}&amp;=\frac{\partial^{3}\phi}{\partial y^{3}}e^{i(\alpha x-\omega t)}\\\frac{\partial v'}{\partial t}&amp;=-\alpha\omega\phi e^{i(\alpha x-\omega t)}\\\frac{\partial v'}{\partial x}&amp;=\alpha^{2}\phi e^{i(\alpha x-\omega t)}\\\frac{\partial^{2}v'}{\partial x^{2}}&amp;=i\alpha^{3}\phi e^{i(\alpha x-\omega t)}\\\frac{\partial v'}{\partial y}&amp;=-i\alpha\frac{\partial\phi}{\partial y}e^{i(\alpha x-\omega t)}\\\frac{\partial^{2}v'}{\partial y^{2}}
1503&amp;=-i\alpha\frac{\partial^{2}\phi}{\partial y^{2}}e^{i(\alpha x-\omega t)}\end{align}\tag{4}$$</div>
1504<div>
1505We can then substitute each of these derivatives into Equation \(\ref{simp_NS}\) and we get the following relations.</div>
1506<div>
1507$$\begin{align}e^{i(\alpha x-\omega t)}\left[i\alpha\frac{\partial\phi}{\partial y}-i\alpha\frac{\partial\phi}{\partial y}\right]&amp;=0\\-\rho e^{i(\alpha x-\omega t)}\left[-i\omega\frac{\partial\phi}{\partial y}+i\alpha U\frac{\partial\phi}{\partial y}+-i\alpha\phi\frac{\partial U}{\partial y}-\frac{\mu}{\rho}\left(-\alpha^{2}\frac{\partial\phi}{\partial y}+\frac{\partial^{3}\phi}{\partial y^{3}}\right)\right]&amp;=\frac{\partial p'}{\partial x}\\-\rho e^{i(\alpha x-\omega t)}\left[-\alpha\omega\phi+U\alpha^{2}\phi-\frac{\mu}{\rho}\left(i\alpha^{3}\phi-i\alpha\frac{\partial^{2}\phi}{\partial y^{2}}\right)\right]&amp;=\frac{\partial p'}{\partial y}\end{align}$$</div>
1508<div>
1509To eliminate the pressure fluctuation term, differentiate the x- and y-momentum equations by \(y\) and \(x\), respectively.<br />
1510$$\begin{align}\frac{1}{-\rho e^{i(\alpha x-\omega t)}}\frac{\partial^{2}p'}{\partial x\partial y}&amp;=-i\omega\frac{\partial^{2}\phi}{\partial y^{2}}
1510+i\alpha\frac{\partial U}{\partial y}\frac{\partial\phi}{\partial y}+i\alpha U\frac{\partial^{2}\phi}{\partial y^{2}}-i\alpha\frac{\partial\phi}{\partial y}\frac{\partial U}{\partial y}\\&amp;\quad-i\alpha\phi\frac{\partial^{2}U}{\partial y^{2}}+\frac{\mu}{\rho}\left(\alpha^{2}\frac{\partial^{2}\phi}{\partial y^{2}}-\frac{\partial^{4}\phi}{\partial y^{4}}\right)\\\frac{1}{-i\alpha\rho e^{i(\alpha x-\omega t)}}\frac{\partial^{2}p'}{\partial x\partial y}&amp;=-\alpha\omega\phi+U\alpha^{2}\phi+\frac{\mu}{\rho}\left(-i\alpha^{3}\phi+i\alpha\frac{\partial^{2}\phi}{\partial y^{2}}\right)\end{align}\tag{5}$$<br />
1511Equating the two momentum equations gives<br />
1512$$-i\omega\frac{\partial^{2}\phi}{\partial y^{2}}+i\alpha U\frac{\partial^{2}\phi}{\partial y^{2}}-i\alpha\phi\frac{\partial^{2}U}{\partial y^{2}}+\frac{\mu}{\rho}\left(2\alpha^{2}\frac{\partial^{2}\phi}{\partial y^{2}}-\frac{\partial^{4}\phi}{\partial y^{4}}-\alpha^{4}\phi\right)+i\alpha^{2}\omega\phi-iU\alpha^{3}\phi=0$$<br />
1513This simplifies to the Orr-Sommerfeld Equation.<br />
1514$$\left(U-\frac{\omega}{\alpha}\right)\left(\frac{\partial^{2}\phi}{\partial y^{2}}
1514-\alpha^{2}\phi\right)-\phi\frac{\partial^{2}U}{\partial y^{2}}+\frac{i\nu}{\alpha}\left(\frac{\partial^{4}\phi}{\partial y^{4}}-2\alpha^{2}\frac{\partial^{2}\phi}{\partial y^{2}}+\alpha^{4}\phi\right)=0\label{orrsommerfeld}\tag{6}$$<br />
1515<h2>
1516Nondimensionalization</h2>
1517</div>
1518<div>
1519The Orr-Sommerfeld equation is nondimensionalized using the following nondimensional parameters,</div>
1520<div>
1521$$\bar{U}=\frac{U}{U_{\infty}}\quad\xi=\frac{y}{\delta}\quad\bar{\phi}=\frac{\phi}{U_{\infty}\delta}\quad\bar{c}=\frac{c}{U_{\infty}}\quad\bar{\alpha}=\alpha\delta\quad&nbsp;Re_{\delta}=\frac{U_{\infty}\delta}{\nu}\tag{7}$$</div>
1522<div>
1523where \(c=\frac{\omega}{\alpha}\) and \(\delta\) is the boundary layer thickness. Substituting these into Equation \(\ref{orrsommerfeld}\) gives</div>
1524<div>
1525$$\begin{align}0&amp;=\left(\bar{U}U_{\infty}-\bar{c}U_{\infty}\right)\left(\frac{1}{\delta^{2}}\frac{\partial^{2}}{\partial\xi^{2}}\left(\bar{\phi}U_{\infty}\delta\right)-\left(\frac{\bar{\alpha}}{\delta}\right)^{2}\left(\bar{\phi}U_{\infty}\delta\right)\right)-\frac{\bar{\phi}U_{\infty}\delta}{\delta^{2}}\frac{\partial^{2}}{\partial\xi^{2}}\left(\bar{U}U_{\infty}\right)\\&amp;\quad+\frac{i\nu\delta}{\bar{\alpha}}\left(\frac{1}{\delta^{4}}\frac{\partial^{4}}{\partial\xi^{4}}\left(\bar{\phi}U_{\infty}\delta\right)-\frac{2\bar{\alpha}^{2}}{\delta^{4}}\frac{\partial^{2}}{\partial\xi^{2}}\left(\bar{\phi}U_{\infty}\delta\right)+\frac{\bar{\alpha}^{4}}{\delta^{4}}\left(\bar{\phi}U_{\infty}\delta\right)\right)\end{align}\tag{8}$$</div>
1526<div>
1527Applying the chain rule for each partial derivative gives</div>
1528<div>
1529$$\begin{align}0&amp;=U_{\infty}\left(\bar{U}-\bar{c}\right)\left(\frac{U_{\infty}}{\delta}\frac{\partial^{2}\bar{\phi}}{\partial\xi^{2}}-\frac{\bar{\alpha}^{2}U_{\infty}}{\delta}\bar{\phi}\right)-\frac{U_{\infty}^{2}}{\delta}\frac{\partial^{2}\bar{U}}{\partial\xi^{2}}\bar{\phi}\\&amp;\quad+\frac{i\nu\delta}{\bar{\alpha}}\left(\frac{U_{\infty}}{\delta^{3}}\frac{\partial^{4}\bar{\phi}}{\partial\xi^{4}}-\frac{2\bar{\alpha}^{2}U_{\infty}}{\delta^{3}}\frac{\partial^{2}\bar{\phi}}{\partial\xi^{2}}+\frac{\bar{\alpha}^{4}U_{\infty}}{\delta^{3}}\bar{\phi}\right)\end{align}\tag{9}$$</div>
1530<div>
1531<div>
1532Finally, factor out \(\frac{U_{\infty}^{2}}{\delta}\) and substitute for \(Re_{\delta}\) to get</div>
1533</div>
1534<div>
1535$$\left(\bar{U}-\bar{c}\right)\left(\frac{\partial^{2}\bar{\phi}}{\partial\xi^{2}}-\bar{\alpha}\bar{\phi}\right)-\frac{\partial^{2}\bar{U}}{\partial\xi^{2}}\bar{\phi}+\frac{i}{\bar{\alpha}Re_{\delta}}\left(\frac{\partial^{4}\bar{\phi}}{\partial\xi^{4}}-2\bar{\alpha}^{2}\frac{\partial^{2}\bar{\phi}}{\partial\xi^{2}}+\bar{\alpha}^{4}\bar{\phi}\right)=0\tag{10}$$</div>
1536<div>
1537<div>
1538For convenience, derivatives with respect to the station coordinate \(\xi\) are hereafter denoted with prime notation. This gives the final nondimensional form of the Orr-Sommerfeld equation:</div>
1539</div>
1540<div>
1541$$\left(\bar{U}-\bar{c}\right)\left(\bar{\phi}''-\bar{\alpha}\bar{\phi}\right)-\bar{U}''\bar{\phi}+\frac{i}{\bar{\alpha}Re_{\delta}}\left(\bar{\phi}''''-2\bar{\alpha}^{2}\bar{\phi}''+\bar{\alpha}^{4}\bar{\phi}\right)=0\tag{11}$$</div>
1542<div>
1543<br /></div>
1544<div style='clear: both;'></div>
1545</div>
1546<div class='post-footer'>
1547<div class='post-footer-line post-footer-line-1'><span class='post-author vcard'>
1548Posted by
1549<span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'>
1550<meta content='https://www.blogger.com/profile/14768438682715700162' itemprop='url'/>
1551<a class='g-profile' href='https://www.blogger.com/profile/14768438682715700162' rel='author' title='author profile'>
1552<span itemprop='name'>Christopher</span>
1553</a>
1554</span>
1555</span>
1556<span class='post-timestamp'>
1557at
1558<meta content='https://www.cdsimpson.net/2015/04/derivation-of-orr-sommerfeld-equation.html' itemprop='url'/>
1559<a class='timestamp-link' href='https://www.cdsimpson.net/2015/04/derivation-of-orr-sommerfeld-equation.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2015-04-03T22:19:00-05:00'>10:19&#8239;PM</abbr></a>
1560</span>
1561<span class='post-comment-link'>
1562<a class='comment-link' href='https://www.cdsimpson.net/2015/04/derivation-of-orr-sommerfeld-equation.html#comment-form' onclick=''>
156318 comments:
1564  </a>
1565</span>
1566<span class='post-icons'>
1567<span class='item-control blog-admin pid-1675439343'>
1568<a href='https://www.blogger.com/post-edit.g?blogID=1308139960516080412&postID=2086199257535490192&from=pencil' title='Edit Post'>
1569<img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/>
1570</a>
1571</span>
1572</span>
1573<div class='post-share-buttons goog-inline-block'>
1574<a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=2086199257535490192&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=2086199257535490192&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=2086199257535490192&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=2086199257535490192&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=1308139960516080412&postID=2086199257535490192&target=pinterest' target='_blank' title='Share to P
1574interest'><span class='share-button-link-text'>Share to Pinterest</span></a>
1575</div>
1576</div>
1577<div class='post-footer-line post-footer-line-2'><span class='post-labels'>
1578</span>
1579</div>
1580<div class='post-footer-line post-footer-line-3'><span class='post-location'>
1581</span>
1582</div>
1583</div>
1584</div>
1585</div>
1586
1587        </div></div>
1588      
1589</div>
1590<div class='blog-pager' id='blog-pager'>
1591<span id='blog-pager-older-link'>
1592<a class='blog-pager-older-link' href='https://www.cdsimpson.net/search?updated-max=2015-04-03T22:19:00-05:00&max-results=5' id='Blog1_blog-pager-older-link' title='Older Posts'>Older Posts</a>
1593</span>
1594<a class='home-link' href='https://www.cdsimpson.net/'>Home</a>
1595</div>
1596<div class='clear'></div>
1597<div class='blog-feeds'>
1598<div class='feed-links'>
1599Subscribe to:
1600<a class='feed-link' href='https://www.cdsimpson.net/feeds/posts/default' target='_blank' type='application/atom+xml'>Posts (Atom)</a>
1601</div>
1602</div>
1603</div></div>
1604</div>
1605</div>
1606<div class='column-left-outer'>
1607<div class='column-left-inner'>
1608<aside>
1609</aside>
1610</div>
1611</div>
1612<div class='column-right-outer'>
1613<div class='column-right-inner'>
1614<aside>
1615<div class='sidebar section' id='sidebar-right-1'><div class='widget BlogSearch' data-version='1' id='BlogSearch1'>
1616<h2 class='title'>Search This Blog</h2>
1617<div class='widget-content'>
1618<div id='BlogSearch1_form'>
1619<form action='https://www.cdsimpson.net/search' class='gsc-search-box' target='_top'>
1620<table cellpadding='0' cellspacing='0' class='gsc-search-box'>
1621<tbody>
1622<tr>
1623<td class='gsc-input'>
1624<input autocomplete='off' class='gsc-input' name='q' size='10' title='search' type='text' value=''/>
1625</td>
1626<td class='gsc-search-button'>
1627<input class='gsc-search-button' title='search' type='submit' value='Search'/>
1628</td>
1629</tr>
1630</tbody>
1631</table>
1632</form>
1633</div>
1634</div>
1635<div class='clear'></div>
1636</div><div class='widget Label' data-version='1' id='Label1'>
1637<h2>Topics</h2>
1638<div class='widget-content list-label-widget-content'>
1639<ul>
1640<li>
1641<a dir='ltr' href='https://www.cdsimpson.net/search/label/CFD'>CFD</a>
1642</li>
1643<li>
1644<a dir='ltr' href='https://www.cdsimpson.net/search/label/Embedded%20Programming'>Embedded Programming</a>
1645</li>
1646<li>
1647<a dir='ltr' href='https://www.cdsimpson.net/search/label/Hardware'>Hardware</a>
1648</li>
1649<li>
1650<a dir='ltr' href='https://www.cdsimpson.net/search/label/Numerical%20Methods'>Numerical Methods</a>
1651</li>
1652<li>
1653<a dir='ltr' href='https://www.cdsimpson.net/search/label/Software%20Bug'>Software Bug</a>
1654</li>
1655<li>
1656<a dir='ltr' href='https://www.cdsimpson.net/search/label/Teensy'>Teensy</a>
1657</li>
1658</ul>
1659<div class='clear'></div>
1660</div>
1661</div><div class='widget BlogArchive' data-version='1' id='BlogArchive1'>
1662<h2>Blog Archive</h2>
1663<div class='widget-content'>
1664<div id='ArchiveList'>
1665<div id='BlogArchive1_ArchiveList'>
1666<ul class='hierarchy'>
1667<li class='archivedate expanded'>
1668<a class='toggle' href='javascript:void(0)'>
1669<span class='zippy toggle-open'>
1670
1671        &#9660;&#160;
1672      
1673</span>
1674</a>
1675<a class='post-count-link' href='https://www.cdsimpson.net/2019/'>
16762019
1677</a>
1678<span class='post-count' dir='ltr'>(1)</span>
1679<ul class='hierarchy'>
1680<li class='archivedate expanded'>
1681<a class='toggle' href='javascript:void(0)'>
1682<span class='zippy toggle-open'>
1683
1684        &#9660;&#160;
1685      
1686</span>
1687</a>
1688<a class='post-count-link' href='https://www.cdsimpson.net/2019/01/'>
1689January
1690</a>
1691<span class='post-count' dir='ltr'>(1)</span>
1692<ul class='posts'>
1693<li><a href='https://www.cdsimpson.net/2019/01/teensy-trouble.html'>Teensy Trouble</a></li>
1694</ul>
1695</li>
1696</ul>
1697</li>
1698</ul>
1699<ul class='hierarchy'>
1700<li class='archivedate collapsed'>
1701<a class='toggle' href='javascript:void(0)'>
1702<span class='zippy'>
1703
1704        &#9658;&#160;
1705      
1706</span>
1707</a>
1708<a class='post-count-link' href='https://www.cdsimpson.net/2016/'>
17092016
1710</a>
1711<span class='post-count' dir='ltr'>(2)</span>
1712<ul class='hierarchy'>
1713<li class='archivedate collapsed'>
1714<a class='toggle' href='javascript:void(0)'>
1715<span class='zippy'>
1716
1717        &#9658;&#160;
1718      
1719</span>
1720</a>
1721<a class='post-count-link' href='https://www.cdsimpson.net/2016/09/'>
1722September
1723</a>
1724<span class='post-count' dir='ltr'>(2)</span>
1725</li>
1726</ul>
1727</li>
1728</ul>
1729<ul class='hierarchy'>
1730<li class='archivedate collapsed'>
1731<a class='toggle' href='javascript:void(0)'>
1732<span class='zippy'>
1733
1734        &#9658;&#160;
1735      
1736</span>
1737</a>
1738<a class='post-count-link' href='https://www.cdsimpson.net/2015/'>
17392015
1740</a>
1741<span class='post-count' dir='ltr'>(3)</span>
1742<ul class='hierarchy'>
1743<li class='archivedate collapsed'>
1744<a class='toggle' href='javascript:void(0)'>
1745<span class='zippy'>
1746
1747        &#9658;&#160;
1748      
1749</span>
1750</a>
1751<a class='post-count-link' href='https://www.cdsimpson.net/2015/04/'>
1752April
1753</a>
1754<span class='post-count' dir='ltr'>(2)</span>
1755</li>
1756</ul>
1757<ul class='hierarchy'>
1758<li class='archivedate collapsed'>
1759<a class='toggle' href='javascript:void(0)'>
1760<span class='zippy'>
1761
1762        &#9658;&#160;
1763      
1764</span>
1765</a>
1766<a class='post-count-link' href='https://www.cdsimpson.net/2015/02/'>
1767February
1768</a>
1769<span class='post-count' dir='ltr'>(1)</span>
1770</li>
1771</ul>
1772</li>
1773</ul>
1774<ul class='hierarchy'>
1775<li class='archivedate collapsed'>
1776<a class='toggle' href='javascript:void(0)'>
1777<span class='zippy'>
1778
1779        &#9658;&#160;
1780      
1781</span>
1782</a>
1783<a class='post-count-link' href='https://www.cdsimpson.net/2014/'>
17842014
1785</a>
1786<span class='post-count' dir='ltr'>(1)</span>
1787<ul class='hierarchy'>
1788<li class='archivedate collapsed'>
1789<a class='toggle' href='javascript:void(0)'>
1790<span class='zippy'>
1791
1792        &#9658;&#160;
1793      
1794</span>
1795</a>
1796<a class='post-count-link' href='https://www.cdsimpson.net/2014/10/'>
1797October
1798</a>
1799<span class='post-count' dir='ltr'>(1)</span>
1800</li>
1801</ul>
1802</li>
1803</ul>
1804</div>
1805</div>
1806<div class='clear'></div>
1807</div>
1808</div><div class='widget ContactForm' data-version='1' id='ContactForm1'>
1809<h2 class='title'>Contact Me</h2>
1810<div class='contact-form-widget'>
1811<div class='form'>
1812<form name='contact-form'>
1813<p></p>
1814Name
1815<br/>
1816<input class='contact-form-name' id='ContactForm1_contact-form-name' name='name' size='30' type='text' value=''/>
1817<p></p>
1818Email
1819<span style='font-weight: bolder;'>*</span>
1820<br/>
1821<input class='contact-form-email' id='ContactForm1_contact-form-email' name='email' size='30' type='text' value=''/>
1822<p></p>
1823Message
1824<span style='font-weight: bolder;'>*</span>
1825<br/>
1826<textarea class='contact-form-email-message' cols='25' id='ContactForm1_contact-form-email-message' name='email-message' rows='5'></textarea>
1827<p></p>
1828<input class='contact-form-button contact-form-button-submit' id='ContactForm1_contact-form-submit' type='button' value='Send'/>
1829<p></p>
1830<div style='text-align: center; max-width: 222px; width: 100%'>
1831<p class='contact-form-error-message' id='ContactForm1_contact-form-error-message'></p>
1832<p class='contact-form-success-message' id='ContactForm1_contact-form-success-message'></p>
1833</div>
1834</form>
1835</div>
1836</div>
1837<div class='clear'></div>
1838</div><div class='widget Profile' data-version='1' id='Profile1'>
1839<h2>About Me</h2>
1840<div class='widget-content'>
1841<dl class='profile-datablock'>
1842<dt class='profile-data'>
1843<a class='profile-name-link g-profile' href='https://www.blogger.com/profile/14768438682715700162' rel='author' style='background-image: url(//www.blogger.com/img/logo-16.png);'>
1844Christopher
1845</a>
1846</dt>
1847<dd class='profile-textblock'>I am currently a graduate student at the University of Alabama. I am earning a Master's Degree in Aerospace Engineering and Mechanics. My interests include CFD, numerical methods, and really anything that relates to aircraft.</dd>
1848</dl>
1849<a class='profile-link' href='https://www.blogger.com/profile/14768438682715700162' rel='author'>View my complete profile</a>
1850<div class='clear'></div>
1851</div>
1852</div></div>
1853</aside>
1854</div>
1855</div>
1856</div>
1857<div style='clear: both'></div>
1858<!-- columns -->
1859</div>
1860<!-- main -->
1861</div>
1862</div>
1863<div class='main-cap-bottom cap-bottom'>
1864<div class='cap-left'></div>
1865<div class='cap-right'></div>
1866</div>
1867</div>
1868<footer>
1869<div class='footer-outer'>
1870<div class='footer-cap-top cap-top'>
1871<div class='cap-left'></div>
1872<div class='cap-right'></div>
1873</div>
1874<div class='fauxborder-left footer-fauxborder-left'>
1875<div class='fauxborder-right footer-fauxborder-right'></div>
1876<div class='region-inner footer-inner'>
1877<div class='foot no-items section' id='footer-1'></div>
1878<table border='0' cellpadding='0' cellspacing='0' class='section-columns columns-2'>
1879<tbody>
1880<tr>
1881<td class='first columns-cell'>
1882<div class='foot no-items section' id='footer-2-1'></div>
1883</td>
1884<td class='columns-cell'>
1885<div class='foot no-items section' id='footer-2-2'></div>
1886</td>
1887</tr>
1888</tbody>
1889</table>
1890<!-- outside of the include in order to lock Attribution widget -->
1891<div class='foot section' id='footer-3'><div class='widget Attribution' data-version='1' id='Attribution1'>
1892<div class='widget-content' style='text-align: center;'>
1893Copyright &#169; 2015 Christopher Simpson. Powered by <a href='https://www.blogger.com' target='_blank'>Blogger</a>.
1894</div>
1895<div class='clear'></div>
1896</div></div>
1897</div>
1898</div>
1899<div class='footer-cap-bottom cap-bottom'>
1900<div class='cap-left'></div>
1901<div class='cap-right'></div>
1902</div>
1903</div>
1904</footer>
1905<!-- content -->
1906</div>
1907</div>
1908<div class='content-cap-bottom cap-bottom'>
1909<div class='cap-left'></div>
1910<div class='cap-right'></div>
1911</div>
1912</div>
1913</div>
1914<script type='text/javascript'>
1915    window.setTimeout(function() {
1916        document.body.className = document.body.className.replace('loading', '');
1917      }, 10);
1918  </script>
1918
1919
1920<script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/3805468264-widgets.js"></script>
vendor: 1 bytes, line 1920
1920
1921<script type='text/javascript'>
1922window['__wavt'] = 'AAPvtVmSLKcX5RNh5iutEsnEMnQS:1791326883530';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d1308139960516080412','//www.cdsimpson.net/','1308139960516080412');
1923_WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '1308139960516080412', 'title': 'Christopher Simpson', 'url': 'https://www.cdsimpson.net/', 'canonicalUrl': 'https://www.cdsimpson.net/', 'homepageUrl': 'https://www.cdsimpson.net/', 'searchUrl': 'https://www.cdsimpson.net/search', 'canonicalHomepageUrl': 'https://www.cdsimpson.net/', 'blogspotFaviconUrl': 'https://www.cdsimpson.net/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': true, 'httpsEnabled': true, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': 'UA-56017853-1', 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Christopher Simpson - Atom\x22 href\x3d\x22https://www.cdsimpson.net/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22Christopher Simpson - RSS\x22 href\x3d\x22https://www.cdsimpson.net/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Christopher Simpson - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/1308139960516080412/posts/default\x22 /\x3e\n', 'meTag': '\x3clink rel\x3d\x22me\x22 href\x3d\x22https://www.blogger.com/profile/14768438682715700162\x22 /\x3e\n', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': false, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/b2a6de932ca0c9e5', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}
1923, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': 'Read more', 'pageType': 'index', 'pageName': '', 'pageTitle': 'Christopher Simpson'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'Custom', 'isResponsive': false, 'isAlternateRendering': false, 'isCustom': true}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'Christopher Simpson', 'description': '', 'url': 'https://www.cdsimpson.net/', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': true, 'isArchive': false, 'isLabelSearch': false}}]);
1924_WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull'));
1925_WidgetManager._RegisterWidget('_PageListView', new _WidgetInfo('PageList1', 'crosscol', document.getElementById('PageList1'), {'title': '', 'links': [{'isCurrentPage': true, 'href': 'https://www.cdsimpson.net/', 'title': 'Home'}, {'isCurrentPage': false, 'href': 'https://www.cdsimpson.net/p/about-me_16.html', 'id': '3323781442705108991', 'title': 'About Me'}, {'isCurrentPage': false, 'href': 'https://www.cdsimpson.net/p/publications.html', 'id': '8862449634648283406', 'title': 'Publications'}], 'mobile': false, 'showPlaceholder': true, 'hasCurrentPage': true}, 'displayModeFull'));
1926_WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'lightboxEnabled': true, 'lightboxModuleUrl': 'https://www.blogger.com/static/v1/jsbin/523436852-lbx.js', 'lightboxCssUrl': 'https://www.blogger.com/static/v1/v-css/828616780-lightbox_bundle.css'}, 'displayModeFull'));
1927_WidgetManager._RegisterWidget('_BlogSearchView', new _WidgetInfo('BlogSearch1', 'sidebar-right-1', document.getElementById('BlogSearch1'), {}, 'displayModeFull'));
1928_WidgetManager._RegisterWidget('_LabelView', new _WidgetInfo('Label1', 'sidebar-right-1', document.getElementById('Label1'), {}, 'displayModeFull'));
1929_WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar-right-1', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull'));
1930_WidgetManager._RegisterWidget('_ContactFormView', new _WidgetInfo('ContactForm1', 'sidebar-right-1', document.getElementById('ContactForm1'), {'contactFormMessageSendingMsg': 'Sending...', 'contactFormMessageSentMsg': 'Your message has been sent.', 'contactFormMessageNotSentMsg': 'Message could not be sent. Please try again later.', 'contactFormInvalidEmailMsg': 'A val
1930id email address is required.', 'contactFormEmptyMessageMsg': 'Message field cannot be empty.', 'title': 'Contact Me', 'blogId': '1308139960516080412', 'contactFormNameMsg': 'Name', 'contactFormEmailMsg': 'Email', 'contactFormMessageMsg': 'Message', 'contactFormSendMsg': 'Send', 'contactFormToken': 'AAPvtVnCW5ajwIiO5W3zuYfpEU-t:1791326883564', 'submitUrl': 'https://www.blogger.com/contact-form'}, 'displayModeFull'));
1931_WidgetManager._RegisterWidget('_ProfileView', new _WidgetInfo('Profile1', 'sidebar-right-1', document.getElementById('Profile1'), {}, 'displayModeFull'));
1932_WidgetManager._RegisterWidget('_AttributionView', new _WidgetInfo('Attribution1', 'footer-3', document.getElementById('Attribution1'), {}, 'displayModeFull'));
1933</script>
1933
1934</body>
1935</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.