-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathautomata_8cpp_source.html
334 lines (332 loc) · 45.9 KB
/
automata_8cpp_source.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>MFEM: miniapps/toys/automata.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script><script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-small.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">MFEM
 <span id="projectnumber">v4.2.0</span>
</div>
<div id="projectbrief">Finite element discretization library</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>File Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_91a531bd2464e2c6fce2455e0d45f88f.html">miniapps</a></li><li class="navelem"><a class="el" href="dir_8e906c64e1ee5a247047b297fc36fb45.html">toys</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">automata.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="automata_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Copyright (c) 2010-2020, Lawrence Livermore National Security, LLC. Produced</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// at the Lawrence Livermore National Laboratory. All Rights reserved. See files</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// LICENSE and NOTICE for details. LLNL-CODE-806117.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// This file is part of the MFEM library. For more information and source code</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// availability visit https://mfem.org.</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">//</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// MFEM is free software; you can redistribute it and/or modify it under the</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// terms of the BSD-3 license. We welcome feedback and contributions, see file</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// CONTRIBUTING.md for details.</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">//</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// ----------------------------------------------------</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// Automata Miniapp: Model of simple cellular automata</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// ----------------------------------------------------</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">//</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// This miniapp implements a one dimensional elementary cellular automata</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// as described in: mathworld.wolfram.com/ElementaryCellularAutomaton.html</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">//</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// This miniapp shows a completely unnecessary use of the finite element</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// method to simply display binary data (but it's fun to play with).</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// Compile with: make automata</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">//</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// Sample runs: automata</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// automata -r 110 -ns 32</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// automata -r 30 -ns 96</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="mfem_8hpp.html">mfem.hpp</a>"</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <algorithm></span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <fstream></span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <iostream></span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <bitset></span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <vector></span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">using namespace </span>std;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">using namespace </span>mfem;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keywordtype">void</span> <a class="code" href="automata_8cpp.html#ae7768e8ab55012190dbf03b488f30b4d">PrintRule</a>(bitset<8> & r);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keywordtype">void</span> <a class="code" href="automata_8cpp.html#ad61a548e526ee36f4ef069a2e51673f2">ApplyRule</a>(vector<bool> * <a class="code" href="lissajous_8cpp.html#a1510a66dacf9cf3586de5fc89ae2a073">b</a>[], bitset<8> & r, <span class="keywordtype">int</span> ns, <span class="keywordtype">int</span> s);</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keywordtype">void</span> <a class="code" href="automata_8cpp.html#a09d01ce0e4bfe00bb0cf0283f2a02b0b">ProjectStep</a>(<span class="keyword">const</span> vector<bool> & <a class="code" href="lissajous_8cpp.html#a1510a66dacf9cf3586de5fc89ae2a073">b</a>, <a class="code" href="classmfem_1_1GridFunction.html">GridFunction</a> & x, <span class="keywordtype">int</span> ns, <span class="keywordtype">int</span> s);</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="automata_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97"> 42</a></span> <span class="keywordtype">int</span> <a class="code" href="examples_2ex1_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// 1. Parse command-line options.</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">int</span> ns = 16;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">int</span> r = 90;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">bool</span> visualization = 1;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="classmfem_1_1OptionsParser.html">OptionsParser</a> args(argc, argv);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  args.<a class="code" href="classmfem_1_1OptionsParser.html#a89d9b7f6e802eee842a4405279ec49f8">AddOption</a>(&ns, <span class="stringliteral">"-ns"</span>, <span class="stringliteral">"--num-steps"</span>,</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="stringliteral">"Number of steps of the 1D cellular automaton."</span>);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  args.<a class="code" href="classmfem_1_1OptionsParser.html#a89d9b7f6e802eee842a4405279ec49f8">AddOption</a>(&r, <span class="stringliteral">"-r"</span>, <span class="stringliteral">"--rule"</span>,</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="stringliteral">"Elementary cellular automaton rule [0-255]."</span>);</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  args.<a class="code" href="classmfem_1_1OptionsParser.html#a89d9b7f6e802eee842a4405279ec49f8">AddOption</a>(&visualization, <span class="stringliteral">"-vis"</span>, <span class="stringliteral">"--visualization"</span>, <span class="stringliteral">"-no-vis"</span>,</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="stringliteral">"--no-visualization"</span>,</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="stringliteral">"Enable or disable GLVis visualization."</span>);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  args.<a class="code" href="classmfem_1_1OptionsParser.html#a40c1d9865e6d5f27331951c94ca34b9c">Parse</a>();</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span> (!args.<a class="code" href="classmfem_1_1OptionsParser.html#aaa9687aac8aa3a1fc78534191ada68a3">Good</a>())</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  args.<a class="code" href="classmfem_1_1OptionsParser.html#a39c517420a3718e49674f49188a59e34">PrintUsage</a>(cout);</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> 1;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  args.<a class="code" href="classmfem_1_1OptionsParser.html#a8aa607c1f15b1385489ebaf588b7ffa1">PrintOptions</a>(cout);</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// 2. Build a rectangular mesh of quadrilateral elements nearly twice</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// as wide as it is high.</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classmfem_1_1Mesh.html">Mesh</a> *mesh = <span class="keyword">new</span> <a class="code" href="classmfem_1_1Mesh.html">Mesh</a>(2 * ns - 1, ns, Element::QUADRILATERAL,</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  0, 2 * ns - 1, ns, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// 3. Define a finite element space on the mesh. Here we use discontinuous</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Lagrange finite elements of order zero i.e. piecewise constant basis</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// functions.</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="classmfem_1_1FiniteElementCollection.html">FiniteElementCollection</a> *fec = <span class="keyword">new</span> <a class="code" href="classmfem_1_1L2__FECollection.html">L2_FECollection</a>(0, 2);</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="classmfem_1_1FiniteElementSpace.html">FiniteElementSpace</a> *fespace = <span class="keyword">new</span> <a class="code" href="classmfem_1_1FiniteElementSpace.html">FiniteElementSpace</a>(mesh, fec);</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// 4. Initialize a pair of bit arrays to store two rows in the evolution</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// of our cellular automaton.</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">int</span> len = 2 * ns - 1;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  vector<bool> * vbp[2];</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  vector<bool> vb0(len);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  vector<bool> vb1(len);</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  vbp[0] = &vb0;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  vbp[1] = &vb1;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i<len; i++)</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  {</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  vb0[i] = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  vb1[i] = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  vb0[ns-1] = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// 5. Define the vector x as a finite element grid function corresponding</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// to fespace which will be used to visualize the cellular automata.</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// Initialize x with initial condition of zero, which indicates a</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">// "white" or "off" cell in our automaton.</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="classmfem_1_1GridFunction.html">GridFunction</a> x(fespace);</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  x = 0.0;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">// 6. Open a socket to GLVis to visualize the automaton.</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="classmfem_1_1socketstream.html">socketstream</a> sol_sock;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span> (visualization)</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">char</span> <a class="code" href="minimal-surface_8cpp.html#a2e0cdf1a7a04e13f9e1929d04f6abd4a">vishost</a>[] = <span class="stringliteral">"localhost"</span>;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">int</span> <a class="code" href="minimal-surface_8cpp.html#a39e4e7c4b54ea995afe2087b803ffe19">visport</a> = 19916;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  sol_sock.<a class="code" href="classmfem_1_1socketstream.html#abc1177f0269cc00d00d8210b65ea13d4">open</a>(vishost, visport);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// 7. Create the rule as a bitset and display it for the user</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  bitset<8> rbs = r;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="automata_8cpp.html#ae7768e8ab55012190dbf03b488f30b4d">PrintRule</a>(rbs);</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// Transfer the current row of the automaton to the vector x.</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="automata_8cpp.html#a09d01ce0e4bfe00bb0cf0283f2a02b0b">ProjectStep</a>(*vbp[0], x, ns, 0);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="comment">// 8. Apply the rule iteratively</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  cout << endl << <span class="stringliteral">"Applying rule..."</span> << flush;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> s=1; s<ns; s++)</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// Compute the next row from the current row</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="automata_8cpp.html#ad61a548e526ee36f4ef069a2e51673f2">ApplyRule</a>(vbp, rbs, ns, s);</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// Transfer the new row of the automaton to the vector x.</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="automata_8cpp.html#a09d01ce0e4bfe00bb0cf0283f2a02b0b">ProjectStep</a>(*vbp[1], x, ns, s);</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// Swap bit arrays</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  std::swap(vbp[0], vbp[1]);</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// 9. Send the solution by socket to a GLVis server.</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span> (visualization)</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  sol_sock << <span class="stringliteral">"solution\n"</span> << *mesh << x << flush;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  {</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">static</span> <span class="keywordtype">int</span> once = 1;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span> (once)</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  sol_sock << <span class="stringliteral">"keys Ajl\n"</span>;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  sol_sock << <span class="stringliteral">"view 0 180\n"</span>;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  sol_sock << <span class="stringliteral">"zoom 2.2\n"</span>;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  sol_sock << <span class="stringliteral">"palette 24\n"</span>;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  once = 0;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  cout << <span class="stringliteral">"done."</span> << endl;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// 10. Save the mesh and the final state of the automaton. This output can be</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// viewed later using GLVis: "glvis -m automata.mesh -g automata.gf".</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  ofstream mesh_ofs(<span class="stringliteral">"automata.mesh"</span>);</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  mesh_ofs.precision(8);</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  mesh-><a class="code" href="classmfem_1_1Mesh.html#a08d26101d5339389adaa278627b41364">Print</a>(mesh_ofs);</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  ofstream sol_ofs(<span class="stringliteral">"automata.gf"</span>);</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  sol_ofs.precision(8);</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  x.<a class="code" href="classmfem_1_1GridFunction.html#a1c8c408d76f0cf1ffec3d1ae37151ec9">Save</a>(sol_ofs);</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// 11. Free the used memory.</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keyword">delete</span> fespace;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keyword">delete</span> fec;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">delete</span> mesh;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> }</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div>
<div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="automata_8cpp.html#a789ac8b913ca6298fd70402cc7dbd219"> 166</a></span> <span class="keywordtype">bool</span> <a class="code" href="automata_8cpp.html#a789ac8b913ca6298fd70402cc7dbd219">Rule</a>(bitset<8> & r, <span class="keywordtype">bool</span> b0, <span class="keywordtype">bool</span> b1, <span class="keywordtype">bool</span> b2)</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> {</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">return</span> r[(b0 ? 1 : 0) + (b1 ? 2 : 0) + (b2 ? 4 : 0)];</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> }</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div>
<div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="automata_8cpp.html#ae7768e8ab55012190dbf03b488f30b4d"> 171</a></span> <span class="keywordtype">void</span> <a class="code" href="automata_8cpp.html#ae7768e8ab55012190dbf03b488f30b4d">PrintRule</a>(bitset<8> & r)</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> {</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  cout << endl << <span class="stringliteral">"Rule:"</span> << endl;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=7; i>=0; i--)</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  cout << <span class="stringliteral">" "</span> << i/4 << (i/2)%2 << i%2;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  cout << endl;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=7; i>=0; i--)</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  cout << <span class="stringliteral">" "</span> << <a class="code" href="automata_8cpp.html#a789ac8b913ca6298fd70402cc7dbd219">Rule</a>(r,i%2,(i/2)%2,i/4) << <span class="stringliteral">" "</span>;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  cout << endl;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> }</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div>
<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="automata_8cpp.html#ad61a548e526ee36f4ef069a2e51673f2"> 186</a></span> <span class="keywordtype">void</span> <a class="code" href="automata_8cpp.html#ad61a548e526ee36f4ef069a2e51673f2">ApplyRule</a>(vector<bool> * <a class="code" href="lissajous_8cpp.html#a1510a66dacf9cf3586de5fc89ae2a073">b</a>[], bitset<8> & r, <span class="keywordtype">int</span> ns, <span class="keywordtype">int</span> s)</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> {</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i<2*ns-1; i++)</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordtype">int</span> i0 = (i + 2 * ns - 2) % (2 * ns - 1);</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordtype">int</span> i2 = (i + 1) % (2 * ns - 1);</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  (*b[1])[i] = <a class="code" href="automata_8cpp.html#a789ac8b913ca6298fd70402cc7dbd219">Rule</a>(r, (*b[0])[i0], (*b[0])[i], (*b[0])[i2]);</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> }</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div>
<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="automata_8cpp.html#a09d01ce0e4bfe00bb0cf0283f2a02b0b"> 196</a></span> <span class="keywordtype">void</span> <a class="code" href="automata_8cpp.html#a09d01ce0e4bfe00bb0cf0283f2a02b0b">ProjectStep</a>(<span class="keyword">const</span> vector<bool> & <a class="code" href="lissajous_8cpp.html#a1510a66dacf9cf3586de5fc89ae2a073">b</a>, <a class="code" href="classmfem_1_1GridFunction.html">GridFunction</a> & x, <span class="keywordtype">int</span> ns, <span class="keywordtype">int</span> s)</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> {</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i<2*ns-1; i++)</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  x[s*(2*ns-1)+i] = (<span class="keywordtype">double</span>)b[i];</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> }</div>
<div class="ttc" id="classmfem_1_1Mesh_html_a08d26101d5339389adaa278627b41364"><div class="ttname"><a href="classmfem_1_1Mesh.html#a08d26101d5339389adaa278627b41364">mfem::Mesh::Print</a></div><div class="ttdeci">virtual void Print(std::ostream &out=mfem::out) const </div><div class="ttdef"><b>Definition:</b> <a href="mesh_8hpp_source.html#l01234">mesh.hpp:1234</a></div></div>
<div class="ttc" id="classmfem_1_1Mesh_html"><div class="ttname"><a href="classmfem_1_1Mesh.html">mfem::Mesh</a></div><div class="ttdef"><b>Definition:</b> <a href="mesh_8hpp_source.html#l00052">mesh.hpp:52</a></div></div>
<div class="ttc" id="classmfem_1_1GridFunction_html"><div class="ttname"><a href="classmfem_1_1GridFunction.html">mfem::GridFunction</a></div><div class="ttdoc">Class for grid function - Vector with associated FE space. </div><div class="ttdef"><b>Definition:</b> <a href="gridfunc_8hpp_source.html#l00030">gridfunc.hpp:30</a></div></div>
<div class="ttc" id="examples_2ex1_8cpp_html_a0ddf1224851353fc92bfbff6f499fa97"><div class="ttname"><a href="examples_2ex1_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a></div><div class="ttdeci">int main(int argc, char *argv[])</div><div class="ttdef"><b>Definition:</b> <a href="examples_2ex1_8cpp_source.html#l00066">ex1.cpp:66</a></div></div>
<div class="ttc" id="classmfem_1_1GridFunction_html_a1c8c408d76f0cf1ffec3d1ae37151ec9"><div class="ttname"><a href="classmfem_1_1GridFunction.html#a1c8c408d76f0cf1ffec3d1ae37151ec9">mfem::GridFunction::Save</a></div><div class="ttdeci">virtual void Save(std::ostream &out) const </div><div class="ttdoc">Save the GridFunction to an output stream. </div><div class="ttdef"><b>Definition:</b> <a href="gridfunc_8cpp_source.html#l03417">gridfunc.cpp:3417</a></div></div>
<div class="ttc" id="classmfem_1_1OptionsParser_html_a40c1d9865e6d5f27331951c94ca34b9c"><div class="ttname"><a href="classmfem_1_1OptionsParser.html#a40c1d9865e6d5f27331951c94ca34b9c">mfem::OptionsParser::Parse</a></div><div class="ttdeci">void Parse()</div><div class="ttdoc">Parse the command-line options. Note that this function expects all the options provided through the ...</div><div class="ttdef"><b>Definition:</b> <a href="optparser_8cpp_source.html#l00150">optparser.cpp:150</a></div></div>
<div class="ttc" id="minimal-surface_8cpp_html_a2e0cdf1a7a04e13f9e1929d04f6abd4a"><div class="ttname"><a href="minimal-surface_8cpp.html#a2e0cdf1a7a04e13f9e1929d04f6abd4a">vishost</a></div><div class="ttdeci">constexpr char vishost[]</div><div class="ttdef"><b>Definition:</b> <a href="minimal-surface_8cpp_source.html#l00084">minimal-surface.cpp:84</a></div></div>
<div class="ttc" id="lissajous_8cpp_html_a1510a66dacf9cf3586de5fc89ae2a073"><div class="ttname"><a href="lissajous_8cpp.html#a1510a66dacf9cf3586de5fc89ae2a073">b</a></div><div class="ttdeci">double b</div><div class="ttdef"><b>Definition:</b> <a href="lissajous_8cpp_source.html#l00042">lissajous.cpp:42</a></div></div>
<div class="ttc" id="minimal-surface_8cpp_html_a39e4e7c4b54ea995afe2087b803ffe19"><div class="ttname"><a href="minimal-surface_8cpp.html#a39e4e7c4b54ea995afe2087b803ffe19">visport</a></div><div class="ttdeci">constexpr int visport</div><div class="ttdef"><b>Definition:</b> <a href="minimal-surface_8cpp_source.html#l00083">minimal-surface.cpp:83</a></div></div>
<div class="ttc" id="automata_8cpp_html_ae7768e8ab55012190dbf03b488f30b4d"><div class="ttname"><a href="automata_8cpp.html#ae7768e8ab55012190dbf03b488f30b4d">PrintRule</a></div><div class="ttdeci">void PrintRule(bitset< 8 > &r)</div><div class="ttdef"><b>Definition:</b> <a href="automata_8cpp_source.html#l00171">automata.cpp:171</a></div></div>
<div class="ttc" id="classmfem_1_1OptionsParser_html_a39c517420a3718e49674f49188a59e34"><div class="ttname"><a href="classmfem_1_1OptionsParser.html#a39c517420a3718e49674f49188a59e34">mfem::OptionsParser::PrintUsage</a></div><div class="ttdeci">void PrintUsage(std::ostream &out) const </div><div class="ttdoc">Print the usage message. </div><div class="ttdef"><b>Definition:</b> <a href="optparser_8cpp_source.html#l00434">optparser.cpp:434</a></div></div>
<div class="ttc" id="classmfem_1_1socketstream_html"><div class="ttname"><a href="classmfem_1_1socketstream.html">mfem::socketstream</a></div><div class="ttdef"><b>Definition:</b> <a href="socketstream_8hpp_source.html#l00210">socketstream.hpp:210</a></div></div>
<div class="ttc" id="classmfem_1_1OptionsParser_html"><div class="ttname"><a href="classmfem_1_1OptionsParser.html">mfem::OptionsParser</a></div><div class="ttdef"><b>Definition:</b> <a href="optparser_8hpp_source.html#l00031">optparser.hpp:31</a></div></div>
<div class="ttc" id="mfem_8hpp_html"><div class="ttname"><a href="mfem_8hpp.html">mfem.hpp</a></div></div>
<div class="ttc" id="classmfem_1_1FiniteElementSpace_html"><div class="ttname"><a href="classmfem_1_1FiniteElementSpace.html">mfem::FiniteElementSpace</a></div><div class="ttdoc">Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...</div><div class="ttdef"><b>Definition:</b> <a href="fespace_8hpp_source.html#l00087">fespace.hpp:87</a></div></div>
<div class="ttc" id="classmfem_1_1FiniteElementCollection_html"><div class="ttname"><a href="classmfem_1_1FiniteElementCollection.html">mfem::FiniteElementCollection</a></div><div class="ttdoc">Collection of finite elements from the same family in multiple dimensions. This class is used to matc...</div><div class="ttdef"><b>Definition:</b> <a href="fe__coll_8hpp_source.html#l00026">fe_coll.hpp:26</a></div></div>
<div class="ttc" id="classmfem_1_1OptionsParser_html_a89d9b7f6e802eee842a4405279ec49f8"><div class="ttname"><a href="classmfem_1_1OptionsParser.html#a89d9b7f6e802eee842a4405279ec49f8">mfem::OptionsParser::AddOption</a></div><div class="ttdeci">void AddOption(bool *var, const char *enable_short_name, const char *enable_long_name, const char *disable_short_name, const char *disable_long_name, const char *description, bool required=false)</div><div class="ttdoc">Add a boolean option and set &#39;var&#39; to receive the value. Enable/disable tags are used to set the bool...</div><div class="ttdef"><b>Definition:</b> <a href="optparser_8hpp_source.html#l00082">optparser.hpp:82</a></div></div>
<div class="ttc" id="automata_8cpp_html_ad61a548e526ee36f4ef069a2e51673f2"><div class="ttname"><a href="automata_8cpp.html#ad61a548e526ee36f4ef069a2e51673f2">ApplyRule</a></div><div class="ttdeci">void ApplyRule(vector< bool > *b[], bitset< 8 > &r, int ns, int s)</div><div class="ttdef"><b>Definition:</b> <a href="automata_8cpp_source.html#l00186">automata.cpp:186</a></div></div>
<div class="ttc" id="automata_8cpp_html_a09d01ce0e4bfe00bb0cf0283f2a02b0b"><div class="ttname"><a href="automata_8cpp.html#a09d01ce0e4bfe00bb0cf0283f2a02b0b">ProjectStep</a></div><div class="ttdeci">void ProjectStep(const vector< bool > &b, GridFunction &x, int ns, int s)</div><div class="ttdef"><b>Definition:</b> <a href="automata_8cpp_source.html#l00196">automata.cpp:196</a></div></div>
<div class="ttc" id="classmfem_1_1OptionsParser_html_a8aa607c1f15b1385489ebaf588b7ffa1"><div class="ttname"><a href="classmfem_1_1OptionsParser.html#a8aa607c1f15b1385489ebaf588b7ffa1">mfem::OptionsParser::PrintOptions</a></div><div class="ttdeci">void PrintOptions(std::ostream &out) const </div><div class="ttdoc">Print the options. </div><div class="ttdef"><b>Definition:</b> <a href="optparser_8cpp_source.html#l00304">optparser.cpp:304</a></div></div>
<div class="ttc" id="automata_8cpp_html_a789ac8b913ca6298fd70402cc7dbd219"><div class="ttname"><a href="automata_8cpp.html#a789ac8b913ca6298fd70402cc7dbd219">Rule</a></div><div class="ttdeci">bool Rule(bitset< 8 > &r, bool b0, bool b1, bool b2)</div><div class="ttdef"><b>Definition:</b> <a href="automata_8cpp_source.html#l00166">automata.cpp:166</a></div></div>
<div class="ttc" id="classmfem_1_1socketstream_html_abc1177f0269cc00d00d8210b65ea13d4"><div class="ttname"><a href="classmfem_1_1socketstream.html#abc1177f0269cc00d00d8210b65ea13d4">mfem::socketstream::open</a></div><div class="ttdeci">int open(const char hostname[], int port)</div><div class="ttdoc">Open the socket stream on &#39;port&#39; at &#39;hostname&#39;. </div><div class="ttdef"><b>Definition:</b> <a href="socketstream_8cpp_source.html#l01008">socketstream.cpp:1008</a></div></div>
<div class="ttc" id="classmfem_1_1L2__FECollection_html"><div class="ttname"><a href="classmfem_1_1L2__FECollection.html">mfem::L2_FECollection</a></div><div class="ttdoc">Arbitrary order &quot;L2-conforming&quot; discontinuous finite elements. </div><div class="ttdef"><b>Definition:</b> <a href="fe__coll_8hpp_source.html#l00221">fe_coll.hpp:221</a></div></div>
<div class="ttc" id="classmfem_1_1OptionsParser_html_aaa9687aac8aa3a1fc78534191ada68a3"><div class="ttname"><a href="classmfem_1_1OptionsParser.html#aaa9687aac8aa3a1fc78534191ada68a3">mfem::OptionsParser::Good</a></div><div class="ttdeci">bool Good() const </div><div class="ttdoc">Return true if the command line options were parsed successfully. </div><div class="ttdef"><b>Definition:</b> <a href="optparser_8hpp_source.html#l00145">optparser.hpp:145</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 30 2020 15:48:02 for MFEM by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>