• Stars
    star
    42
  • Rank 656,625 (Top 13 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 12 years ago
  • Updated almost 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Collection of utilities, solvers and other components.

Open Porous Media Core Library

THIS MODULE IS DEPRECATED. The code is now integrated in the other modules.

These are release notes for opm-core.

CONTENT

opm-core is the core library within OPM and contains the following

  • 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)
  • Flow diagnostics (time-of-flight and tracer solvers, diagnostic functions)
  • 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

Ensemble based Reservoir Tool Eclipse utilities module

IMPORTANT: if you install this (binary) version of ERT,

you will get the 2015.04 release version. That

is only compatible with the 2015.04 release version

of OPM! If you are building OPM from source you should

use the latest master branches of both ERT and OPM.

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

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 sudo yum-config-manager --add-repo
http://www.opm-project.org/packages/current/redhat/6/opm.repo sudo yum install libsuperlu3 ert.ecl-devel

optional

sudo yum install 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
  1. 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.

More Repositories

1

ResInsight

3D viewer and post processing of reservoir models
C++
174
star
2

opm-simulators

Simulator programs and utilities for automatic differentiation.
C++
97
star
3

LBPM

Pore scale modelling
C++
61
star
4

IFEM

IFEM - Isogeometric Toolbox for the solution of PDEs
C
42
star
5

opm-data

Clean version of opm-data without reference results
ECL
29
star
6

opm-common

Common components for OPM, in particular build system (cmake).
C++
28
star
7

eigen3

Snapshot of Eigen3 for convenience of building opm-autodiff
C++
24
star
8

opm-tests

Data sets intended for integration and regression testing reservoir simulations
ECL
24
star
9

opm-utilities

A collection of utilities of interest to the opm community
Python
16
star
10

opm-models

The models module for the Open Porous Media Simulation (OPM) framework
C++
15
star
11

opm-material

Provides thermodynamic relations, capillary pressure curves, etc.
C++
15
star
12

opm-grid

DUNE module supporting grids in a corner-point format
C++
15
star
13

opm-upscaling

Single-phase and steady-state upscaling methods
C++
13
star
14

opm-parser

C++
11
star
15

opm-data-legacy

Intended for all data sets and simulation results
C++
10
star
16

OpenDect

Core simulation tool based on CT-images
Python
10
star
17

IFEM-OpenFrac

Fracture Dynamics applications built using IFEM
C
8
star
18

IFEM-PoroElasticity

PoroElasticity solvers built on IFEM
C
8
star
19

pyopmspe11

A Python framework using OPM Flow for the SPE11 benchmark project
Python
7
star
20

IFEM-Elasticity

Elasticity applications built using IFEM
Mercury
6
star
21

opm-flowdiagnostics

Computational Kernels for Inexpensive Flow Diagnostics Calculations
C++
6
star
22

opm-porsol

DUNE module containing porous media PDE solvers
C++
6
star
23

opm-verteq

Open Porous Media Initiative Vertical Equilibrium module
C++
5
star
24

porescale

Fortran
5
star
25

IFEM-ThermoElasticity

Thermo-elastic solvers built on IFEM
C
4
star
26

IFEM-Poisson

Poisson application built using IFEM
C
4
star
27

ResInsight-UserDocumentation

Documentation for Resinsight
CSS
3
star
28

IFEM-AdvectionDiffusion

Advection-Diffusion application built using IFEM
C
3
star
29

IFEM-Darcy

Darcy application built using IFEM
C
3
star
30

opm-output

This repository is intended for output-writer functionality for the flow simulators in OPM
C++
3
star
31

qsummary

Light weight application for summary plotting
C++
2
star
32

opm-publications

Python
2
star
33

LBPM-dashboard

Front end to LBPM implementation based on Django
Python
2
star
34

opm-flowdiagnostics-applications

Stand-Alone Utilities for Developing and Testing Flow Diagnostics Computational Kernels
C++
2
star
35

homebrew-opm

MacOSX ports collection for OPM modules and prerequisites
Ruby
2
star
36

opm-polymer

C++
2
star
37

opm-meeting20

Community planning for OPM Meeting 2020
1
star
38

opm-gcloud

Google cloud integration for OPM
Python
1
star
39

FPGA

VHDL
1
star
40

openDECT_Light

A lighter version of OpenDECT
Python
1
star
41

opm-simulators-legacy

Legacy simulator code using Eigen and the AutoDiffBlock class.
C++
1
star
42

opm-reference-manual

Python
1
star