forked from OPM/opm-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
247 lines (166 loc) · 7.2 KB
/
README
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
Open Porous Media Core Library
==============================
These are release notes for opm-core.
CONTENT
-------
opm-core is the core library within OPM and contains the following
* Eclipse deck input and preprosessing
* Fluid properties (basic PVT models and rock properties)
* Grid handling (cornerpoint grids, unstructured grid interface)
* Linear Algebra (interface to different linear solvers)
* Pressure solvers (various discretization schemes, flow models)
* Simulators (some basic examples of simulators based on sequential splitting schemes)
* Transport solvers (various discretization schemes, flow models)
* Utilities (input and output processing, unit conversion)
* Wells (basic well handling)
LICENSE
-------
The library is distributed under the GNU General Public License,
version 3 or later (GPLv3+).
PLATFORMS
---------
The opm-core module is designed to run on Linux platforms. It is also
regularly run on Mac OS X. No efforts have been made to ensure that
the code will compile and run on windows platforms.
DEPENDENCIES FOR DEBIAN BASED DISTRIBUTIONS (Debian Squeeze/Ubuntu Precise)
---------------------------------------------------------------------------
# packages necessary for building
sudo apt-get install -y build-essential gfortran cmake cmake-data util-linux
# packages necessary for documentation
sudo apt-get install -y doxygen ghostscript texlive-latex-recommended pgf
# packages necessary for version control
sudo apt-get install -y git-core
# basic libraries necessary for both DUNE and OPM
sudo apt-get install -y libboost-all-dev libsuperlu3-dev libsuitesparse-dev
# for server edition of Ubuntu add-apt-repository depends on
sudo apt-get install python-software-properties
# add this repository for necessary backports (required for Ubuntu Precise)
sudo add-apt-repository -y ppa:opm/ppa
sudo apt-get update
# parts of DUNE needed
sudo apt-get install libdune-common-dev libdune-istl-dev libdune-grid-dev
# libraries necessary for OPM
sudo apt-get install -y libtinyxml-dev
# optional: Ensemble based Reservoir Tool Eclipse utilities module
sudo apt-get install ert.ecl
Note: You should compile the OPM modules using the same toolchain that
was used to build DUNE. Otherwise, you can get strange ABI errors.
DEPENDENCIES FOR SUSE BASED DISTRIBUTIONS
-----------------------------------------
# repository containing prerequisites
sudo zypper ar http://download.opensuse.org/repositories/science/openSUSE_12.3/science.repo
# math libraries
sudo zypper in blas-devel lapack-devel suitesparse-devel superlu-devel
# utility libraries
sudo zypper in boost-devel tinyxml-devel
# tools necessary for building
sudo zypper in gcc gcc-c++ gcc-fortran cmake git doxygen
# DUNE libraries
sudo zypper in dune-common-devel dune-istl-devel
# optional: Ensemble-based Reservoir Tools Eclipse utility module
git sudo zypper ar http://www.opm-project.org/packages/current/opensuse/12/opm.repo
sudo zypper in zlib-devel ert.ecl-devel
(to remove the repository, run `sudo zypper removerepo "Open Porous Media Initiative"`)
DEPENDENCIES FOR RHEL BASED DISTRIBUTIONS
-----------------------------------------
# packages necessary for building
sudo yum install make gcc-c++ gcc-gfortran cmake28 util-linux
# packages necessary for documentation
sudo yum install doxygen ghostscript texlive
# packages necessary for version control
sudo yum install git
# basic libraries necessary for both DUNE and OPM
sudo yum install boost-devel suitesparse-devel blas-devel lapack-devel
# libraries necessary for OPM
sudo yum install tinyxml-devel
# optional libraries
sudo yum-config-manager --add-repo \
http://www.opm-project.org/packages/current/redhat/6/opm.repo
sudo yum install libsuperlu3 ert.ecl-devel dune-istl-devel
DEPENDENCIES FOR MACOS X
------------------------
You can build opm-core with Apple Xcode 4.6 or later, Ruby 1.9 or later
and the Homebrew port system:
# activate necessary repositories
brew tap homebrew/science
brew tap opm/opm
# libraries necessary for OPM
caffeinate brew install suite-sparse superlu ert.ecl
caffeinate brew install --with-c++11 boost tinyxml dune-istl
DOWNLOADING
-----------
For a read-only download:
git clone git://github.com/OPM/opm-core.git
If you want to contribute, fork OPM/opm-core on github.
BUILDING
--------
There are two ways to build the opm-core library.
1. As a stand-alone library.
In this setup we recommend creating an entirely separate directory
outside the directory containing the source code and doing the build
from that separate directory (termed "the build directory"). This
configuration is sometimes referred to as an "out-of-source build".
As an example, consider the following layout in which "opm-core" refers
to the directory containing the package source code as downloaded from
GitHub
workspace
|
+-- build
|
+-- opm-core
| |
| +-- ...
| |
| +-- opm
| |
| +-- ...
We will configure a release-type (optimised) build using traditional
Unix Makefiles within the "build" directory. The following command
configures the build
cd path/to/build
cmake ../opm-core -DCMAKE_BUILD_TYPE=Release
If you want to debug the library you should specify the build type
"Debug" instead of "Release" in the command above. This will disable
optimizations and make it easier to step through the code.
Building the software then amounts to typing
make
in the top-level "build" directory; i.e., the directory from which we
invoked the "cmake" utility. On a multi-core computer system you may
want to build the software in parallel (make(1)'s "job-server" mode) in
order to reduce the total amount of time needed to complete the build.
To do so, replace the above "make" command with
make -j N
or, possibly,
nice -20 make -j N
in which "N" is an integer that should typically not exceed the number
of cores in the system.
Once the library has been built, it can be installed in a central,
system-wide location (often in "/usr/local") through the command
sudo make install
2. As a dune module.
- Put the opm-core directory in the same directory
as the other dune modules to be built (e.g. dune-commmon,
dune-grid). Note that for Ubuntu you can install Dune
from the ppa as outlined above.
- Run dunecontrol as normal. For more information on
the dune build system, see
http://www.dune-project.org/doc/installation-notes.html
DOCUMENTATION
-------------
Efforts have been made to document the code with Doxygen.
In order to build the documentation, enter the command
make doc
in the topmost directory.
REPORTING ISSUES
----------------
Issues can be reported in the Git issue tracker online at:
http://github.com/OPM/opm-core/issues
To help diagnose build errors, please provide a link to a build log together
with the issue description.
You can capture such a log from the build using the `script' utility, e.g.:
LOGFILE=$(date +%Y%m%d-%H%M-)build.log ;
cmake -E cmake_echo_color --cyan --bold "Log file: $LOGFILE" ;
script -q $LOGFILE -c 'cmake ../opm-core -DCMAKE_BUILD_TYPE=Debug' &&
script -q $LOGFILE -a -c 'ionice nice make -j 4 -l 3' ||
cat CMakeCache.txt CMakeFiles/CMake*.log >> $LOGFILE
The resulting file can be uploaded to for instance gist.github.com.