forked from cssr-tools/pycopm
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstallation.html
More file actions
274 lines (246 loc) · 16.5 KB
/
installation.html
File metadata and controls
274 lines (246 loc) · 16.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
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
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Installation — pycopm documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="author" title="About these documents" href="about.html" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Configuration file" href="configuration_file.html" />
<link rel="prev" title="Theory" href="theory.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #aaaaaa" >
<a href="index.html">
<img src="_static/logo.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="theory.html">Theory</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Installation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#python-package">Python package</a></li>
<li class="toctree-l2"><a class="reference internal" href="#opm-flow">OPM Flow</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#binary-packages">Binary packages</a></li>
<li class="toctree-l3"><a class="reference internal" href="#source-build-in-linux-windows">Source build in Linux/Windows</a></li>
<li class="toctree-l3"><a class="reference internal" href="#brew-formula-for-macos">Brew formula for macOS</a></li>
<li class="toctree-l3"><a class="reference internal" href="#source-build-in-macos">Source build in macOS</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="configuration_file.html">Configuration file</a></li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
<li class="toctree-l1"><a class="reference internal" href="api.html">pycopm Python API</a></li>
<li class="toctree-l1"><a class="reference internal" href="output_folder.html">Output folder</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="related.html">Related</a></li>
<li class="toctree-l1"><a class="reference internal" href="about.html">About pycopm</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #aaaaaa" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">pycopm</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">Installation</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/installation.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="installation">
<h1>Installation<a class="headerlink" href="#installation" title="Link to this heading"></a></h1>
<p>The following steps work installing the dependencies in Ubuntu via apt-get or in macOS using <a class="reference external" href="https://brew.sh">brew</a> or <a class="reference external" href="https://www.macports.org">macports</a>.
While using package managers such as Anaconda, Miniforge, or Mamba might work, these are not tested.
The supported Python versions are 3.11 to 3.13. We will update the documentation when Python3.14 is supported
(e.g., the ert Python package is not yet available via pip install in Python 3.14).</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>In Ubuntu, one also needs to install freeglut3-dev:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>freeglut3-dev
</pre></div>
</div>
</div>
<section id="python-package">
<span id="vpycopm"></span><h2>Python package<a class="headerlink" href="#python-package" title="Link to this heading"></a></h2>
<p>To install the <strong>pycopm</strong> executable from the development version:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>pip<span class="w"> </span>install<span class="w"> </span>git+https://github.com/cssr-tools/pycopm.git
</pre></div>
</div>
<p>If you are interested in a specific version (e.g., v2025.04) or in modifying the source code, then you can clone the repository and
install the Python requirements in a virtual environment with the following commands:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp"># </span>Clone<span class="w"> </span>the<span class="w"> </span>repo
<span class="go">git clone https://github.com/cssr-tools/pycopm.git</span>
<span class="gp"># </span>Get<span class="w"> </span>inside<span class="w"> </span>the<span class="w"> </span>folder
<span class="go">cd pycopm</span>
<span class="gp"># </span>For<span class="w"> </span>a<span class="w"> </span>specific<span class="w"> </span>version<span class="w"> </span><span class="o">(</span>e.g.,<span class="w"> </span>v2025.04<span class="o">)</span>,<span class="w"> </span>or<span class="w"> </span>skip<span class="w"> </span>this<span class="w"> </span>step<span class="w"> </span><span class="o">(</span>i.e.,<span class="w"> </span>edge<span class="w"> </span>version<span class="o">)</span>
<span class="go">git checkout v2025.04</span>
<span class="gp"># </span>Create<span class="w"> </span>virtual<span class="w"> </span>environment<span class="w"> </span><span class="o">(</span>to<span class="w"> </span>specific<span class="w"> </span>Python,<span class="w"> </span>python3.12<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>vpycopm<span class="o">)</span>
<span class="go">python3 -m venv vpycopm</span>
<span class="gp"># </span>Activate<span class="w"> </span>virtual<span class="w"> </span>environment
<span class="go">source vpycopm/bin/activate</span>
<span class="gp"># </span>Upgrade<span class="w"> </span>pip,<span class="w"> </span>setuptools,<span class="w"> </span>and<span class="w"> </span>wheel
<span class="go">pip install --upgrade pip setuptools wheel</span>
<span class="gp"># </span>Install<span class="w"> </span>the<span class="w"> </span>pycopm<span class="w"> </span>package
<span class="go">pip install -e .</span>
<span class="gp"># </span>For<span class="w"> </span>contributions/testing/linting,<span class="w"> </span>install<span class="w"> </span>the<span class="w"> </span>dev-requirements
<span class="go">pip install -r dev-requirements.txt</span>
</pre></div>
</div>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p>Typing <strong>git tag -l</strong> writes all available specific versions.</p>
</div>
</section>
<section id="opm-flow">
<span id="opmflow"></span><h2>OPM Flow<a class="headerlink" href="#opm-flow" title="Link to this heading"></a></h2>
<p>You also need to install:</p>
<ul class="simple">
<li><p>OPM Flow (<a class="reference external" href="https://opm-project.org">https://opm-project.org</a>, Release 2025.10 or current master branches)</p></li>
</ul>
<section id="binary-packages">
<h3>Binary packages<a class="headerlink" href="#binary-packages" title="Link to this heading"></a></h3>
<p>See the <a class="reference external" href="https://opm-project.org/?page_id=36">downloading and installing</a> OPM Flow online documentation for
instructions to install the binary packages in Ubuntu and Red Hat Enterprise Linux, and for other platforms which are
supported either via source builds or through running a virtual machine.</p>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p>See the <a class="reference external" href="https://github.com/cssr-tools/pycopm/blob/main/.github/workflows/ci_pycopm_ubuntu.yml">ci_pycopm_ubuntu.yml</a> script
for installation of OPM Flow (binary packages) and the pycopm package in Ubuntu.</p>
</div>
</section>
<section id="source-build-in-linux-windows">
<h3>Source build in Linux/Windows<a class="headerlink" href="#source-build-in-linux-windows" title="Link to this heading"></a></h3>
<p>If you are a Linux user (including the Windows subsystem for Linux, see <a class="reference external" href="https://learn.microsoft.com/en-us/windows/python/web-frameworks">this link</a>
for a nice tutorial for setting Python environments in WSL), then you could try to build Flow (after installing the <a class="reference external" href="https://opm-project.org/?page_id=239">prerequisites</a>) from the master branches with mpi support by running
in the terminal the following lines (which in turn should build flow in the folder ./build/opm-simulators/bin/flow):</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">CURRENT_DIRECTORY="$PWD"</span>
<span class="go">mkdir build</span>
<span class="go">for repo in common grid simulators</span>
<span class="go">do git clone https://github.com/OPM/opm-$repo.git</span>
<span class="go"> mkdir build/opm-$repo</span>
<span class="go"> cd build/opm-$repo</span>
<span class="go"> cmake -DUSE_MPI=1 -DWITH_NDEBUG=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$CURRENT_DIRECTORY/build/opm-common;$CURRENT_DIRECTORY/build/opm-grid" $CURRENT_DIRECTORY/opm-$repo</span>
<span class="go"> if [[ $repo == simulators ]]; then</span>
<span class="go"> make -j5 flow</span>
<span class="go"> else</span>
<span class="go"> make -j5 opm$repo</span>
<span class="go"> fi</span>
<span class="go"> cd ../..</span>
<span class="go">done</span>
</pre></div>
</div>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p>You can create a .sh file (e.g., build_opm_mpi.sh), copy the previous lines, and run in the terminal <strong>source build_opm_mpi.sh</strong></p>
</div>
</section>
<section id="brew-formula-for-macos">
<span id="macos"></span><h3>Brew formula for macOS<a class="headerlink" href="#brew-formula-for-macos" title="Link to this heading"></a></h3>
<p>For macOS, there are no available binary packages, so OPM Flow needs to be built from source. Recently, a formula to build flow using brew has
been added in <a class="reference external" href="https://github.com/cssr-tools/homebrew-opm">https://github.com/cssr-tools/homebrew-opm</a>.
Then, you can try to install flow (v2025.10) by simply typing:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">brew install cssr-tools/opm/opm-simulators</span>
</pre></div>
</div>
<p>You can check if the installation of OPM Flow succeded by typing in the terminal <strong>flow --help</strong>.</p>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p>See the actions in the <a class="reference external" href="https://github.com/cssr-tools/homebrew-opm/actions">cssr-tools/homebrew-opm</a> repository.</p>
</div>
</section>
<section id="source-build-in-macos">
<h3>Source build in macOS<a class="headerlink" href="#source-build-in-macos" title="Link to this heading"></a></h3>
<p>If you would like to build the latest OPM Flow from the master branch, then you can first install the prerequisites using brew:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">brew install cjson boost openblas suite-sparse python@3.13 cmake</span>
</pre></div>
</div>
<p>In addition, it is recommended to uprade and update your macOS to the latest available versions (the following steps have
worked for macOS Tahoe 26.2.0 with Apple clang version 17.0.0). After the prerequisites are installed, then building OPM Flow
can be achieved with the following bash lines:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">CURRENT_DIRECTORY="$PWD"</span>
<span class="go">for module in common geometry grid istl</span>
<span class="go">do git clone https://gitlab.dune-project.org/core/dune-$module.git</span>
<span class="go"> cd dune-$module && git checkout v2.10.0 && cd ..</span>
<span class="go"> ./dune-common/bin/dunecontrol --only=dune-$module cmake -DCMAKE_DISABLE_FIND_PACKAGE_MPI=1</span>
<span class="go"> ./dune-common/bin/dunecontrol --only=dune-$module make -j5</span>
<span class="go">done</span>
<span class="go">mkdir build</span>
<span class="go">for repo in common grid simulators</span>
<span class="go">do git clone https://github.com/OPM/opm-$repo.git</span>
<span class="go"> mkdir build/opm-$repo && cd build/opm-$repo</span>
<span class="go"> cmake -DUSE_MPI=0 -DWITH_NDEBUG=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$CURRENT_DIRECTORY/dune-common/build-cmake;$CURRENT_DIRECTORY/dune-grid/build-cmake;$CURRENT_DIRECTORY/dune-geometry/build-cmake;$CURRENT_DIRECTORY/dune-istl/build-cmake;$CURRENT_DIRECTORY/build/opm-common;$CURRENT_DIRECTORY/build/opm-grid" $CURRENT_DIRECTORY/opm-$repo</span>
<span class="go"> if [[ $repo == simulators ]]; then</span>
<span class="go"> make -j5 flow</span>
<span class="go"> else</span>
<span class="go"> make -j5 opm$repo</span>
<span class="go"> fi</span>
<span class="go"> cd ../..</span>
<span class="go">done</span>
<span class="go">echo "export PATH=\$PATH:$CURRENT_DIRECTORY/build/opm-simulators/bin" >> ~/.zprofile</span>
<span class="go">source ~/.zprofile</span>
</pre></div>
</div>
<p>This builds OPM Flow, and it exports the path to the flow executable.</p>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p>See <a class="reference external" href="https://github.com/daavid00/OPM-Flow_macOS">this repository</a> dedicated to build OPM Flow from source in the latest macOS (GitHub actions), and tested with <strong>pycopm</strong>.
If you still face problems, raise an issue in the GitHub repository, or you could also send an email to the maintainers.</p>
</div>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="theory.html" class="btn btn-neutral float-left" title="Theory" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="configuration_file.html" class="btn btn-neutral float-right" title="Configuration file" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>© Copyright 2024-2026, NORCE Research AS.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>