-
Notifications
You must be signed in to change notification settings - Fork 3
/
installation.html
202 lines (171 loc) · 7.49 KB
/
installation.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
<!doctype html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>libMesh - A C++ Finite Element Library</title>
<meta name="author" content="libMesh development team">
<link rel="stylesheet" type="text/css" media="all" href="styles.css">
<link rel="stylesheet" type="text/css" media="all" href="doxygen_stylesheet.css">
</head>
<body>
<nav id="fixedbar">
<ul id="fixednav">
<li><a href="index.html">Home</a></li>
<li><a href="support.html">About Us</a></li>
<li><a href="publications.html">Publications</a></li>
<li><a href="https://github.com/libMesh/libmesh/graphs/contributors">Developers</a></li>
<li><a href="installation.html">Installation</a></li>
<li><a href="examples.html">Examples</a></li>
<li><a href="https://mooseframework.inl.gov/docs/doxygen/libmesh/index.html">Documentation</a></li>
</ul>
</nav>
<div id="w">
<header id="logo"><a href="index.html"><span id="logobg">SomeWebsiteLogo</span></a></header>
<nav id="navigation">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="support.html">About Us</a></li>
<li><a href="publications.html">Publications</a></li>
<li><a href="https://github.com/libMesh/libmesh/graphs/contributors">Developers</a></li>
<li><a href="installation.html">Installation</a></li>
<li><a href="examples.html">Examples</a></li>
<li><a href="https://mooseframework.inl.gov/docs/doxygen/libmesh/index.html">Documentation</a></li>
</ul>
</nav>
</div>
<div id="content">
<h1>Installation Instructions</h1>
<a id="getsoftware"></a><h2>Getting the Software</h2>
Please follow the instructions in the <a href="https://github.com/libMesh/libmesh">README file</a> to download/clone and install libMesh.
Note that the installation instructions may change over time, but the README file should always contain the most up-to-date information.
<a id="compilers"></a><h2>Compilers</h2>
<code>libMesh</code> requires a C++17 compliant compiler.
<br>
<a id="test"></a><h2>Testing the Library</h2>
<code>libMesh</code> Continuous Integration testing (example codes and unit tests) is
automatically performed on all PRs for members of the libMesh Project's "Associates" Team.
If you submit a PR, you will be invited to join this Team so that your PRs are tested automatically.
<br>
<h3>Running the Examples</h3>
<code>libMesh</code> includes a number of examples in the <code>examples</code>
directory. From the top-level directory you can build and run the example programs
by typing
<div class="fragment">
<pre>make check</pre>
</div>
<br>
Note that many of the the example programs create output in the <code>ExodusII</code> format,
since you can <a href="http://www.paraview.org">download Paraview</a>
for free, and it is a highly capable postprocessing tool. It is a simple matter to change the source
in the example to write a different formats, however.
<h3>Unit Tests</h3>
The repository contains a top-level <code>tests</code> directory
with a series of unit tests that can be used to validate a <code>libMesh</code>
installation. These unit tests require <a href="https://freedesktop.org/wiki/Software/cppunit/">CPPUnit</a>
to run properly. To run the unit test suite, from the <i>build</i> directory, simply do
<div class="fragment">
<pre>make -C tests check </pre>
</div>
<a id="external"></a><h2>External Software</h2>
<code>libMesh</code> has many features which are enabled via
integration with <a href="externalsoftware.html">various third-party
libraries</a>, a few of which are redistributed in our contrib
directory, others of which may be separately installed on your system.
The libMesh configure script attempts to autodetect these libraries
when possible. Some of the supported libraries have occasionally
changing (or even frequently changing) APIs. We attempt to provide a
range of backwards compatibility for old versions of third-party APIs.
<a id="link"></a><h2>Linking With Your Application</h2>
Since <code>libMesh</code> can be configured with many additional packages we recommend
including the <code>Make.common</code> file created in the top-level directory in the
<code>Makefile</code> of any application you want to use with the library. This will
properly set the <code>libmesh_INCLUDE</code> and <code>libmesh_LIBS</code> variables, which you can
append to with your own stuff.
<br>
For testing simple programs you may want to use the <code>libmesh-config</code> script
included in the <code>contrib/bin</code> directory instead of creating a <code>Makefile</code>.
This script may be used to determine the relevant compilation and linking flags
used by <code>libMesh</code>. For example, you could build the application <code>foo</code> from
<code>foo.C</code> like this:
<div class="fragment">
<pre> `libmesh-config --cxx` -o foo foo.C `libmesh-config --cxxflags --include --ldflags --libs`</pre>
</div>
<br>
<a id="windows"></a><h2>Building on Windows</h2>
<p>
The <code>libMesh</code> library can be built on Microsoft Windows using the
<a href="http://www.msys2.org/">msys2</a> software distribution and the
<a href="http://mingw-w64.org/">mingw-w64</a> compiler. There are, however, a few
specifics that need to be taken into account.
</p>
<p>
After installing msys2 you need to install the mingw-w64 C++ compiler. To check that
the installation was successfull, you can run
</p>
<div class="fragment">
<pre>g++ --version</pre>
</div>
<p>
in the msys2 shell.
</p>
<p>
When you checkout the current version of <code>libMesh</code> using Git on Windows
symlinks might not work. You can check whether your symlinks are set correctly by
inspecting whether the README file points to the README.md file. If this is not the
case, you should run the <code>contrib/bin/fix_windows_symlinks.sh</code> from within
the git repository using the msys2 shell. This script removes all symlinks and copies
the symlink targets to the corresponding places.
</p>
<p>
Not all <em>optional</em>
dependencies are available on Windows.
It is known that the following packages do not compile on Windows.
</p>
<ul>
<li>fparser, Function Parser for C++</li>
<li>METIS, Serial Graph Partitioning and Fill-reducing Matrix Ordering</li>
</ul>
<p>
Hence, these libraries need to be deactivated, using the corresponding flags.
For example by configuring <code>libMesh</code> with the following command.
</p>
<div class="fragment">
<pre>./configure --prefix=c:/libmesh \
--disable-metis \
--with-fparser=none</pre>
</div>
<p>
Then, the library can be built and installed using:
</p>
<div class="fragment">
<pre>make
make install</pre>
</div>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(window).on('scroll',function() {
var scrolltop = $(this).scrollTop();
if(scrolltop >= 215) {
$('#fixedbar').fadeIn(250);
}
else if(scrolltop <= 210) {
$('#fixedbar').fadeOut(250);
}
});
});
</script>
<!-- Google Analytics stuff -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-24978333-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</body>
</html>