Skip to main content

ogs5py: a python API for OpenGeoSys5

Project description

Welcome to ogs5py

DOI PyPI version Build Status Coverage Status Documentation Status Code style: black

ogs5py-LOGO

Purpose

ogs5py is A python-API for the OpenGeoSys 5 scientific modeling package.

Installation

You can install the latest version with the following command:

pip install ogs5py

Documentation for ogs5py

You can find the documentation under geostat-framework.readthedocs.io.

Further Information

Tutorials and Examples

In the following a simple transient pumping test is simulated on a radial symmetric mesh. The point output at the observation well is plotted afterwards. For more details on this example, see: Tutorial 1

from ogs5py import OGS, specialrange, generate_time
from matplotlib import pyplot as plt

# discretization and parameters
time = specialrange(0, 3600, 50, typ="cub")
rad = specialrange(0, 1000, 100, typ="cub")
obs = rad[21]
angles = 32
storage = 1e-3
transmissivity = 1e-4
rate = -1e-3
# model setup
model = OGS(task_root="pump_test", task_id="model")
# generate a radial mesh and geometry ("boundary" polyline)
model.msh.generate("radial", dim=2, rad=rad, angles=angles)
model.gli.generate("radial", dim=2, rad_out=rad[-1], angles=angles)
model.gli.add_points([0.0, 0.0, 0.0], "pwell")
model.gli.add_points([obs, 0.0, 0.0], "owell")
model.bc.add_block(  # boundary condition
    PCS_TYPE="GROUNDWATER_FLOW",
    PRIMARY_VARIABLE="HEAD",
    GEO_TYPE=["POLYLINE", "boundary"],
    DIS_TYPE=["CONSTANT", 0.0],
)
model.st.add_block(  # source term
    PCS_TYPE="GROUNDWATER_FLOW",
    PRIMARY_VARIABLE="HEAD",
    GEO_TYPE=["POINT", "pwell"],
    DIS_TYPE=["CONSTANT_NEUMANN", rate],
)
model.ic.add_block(  # initial condition
    PCS_TYPE="GROUNDWATER_FLOW",
    PRIMARY_VARIABLE="HEAD",
    GEO_TYPE="DOMAIN",
    DIS_TYPE=["CONSTANT", 0.0],
)
model.mmp.add_block(  # medium properties
    GEOMETRY_DIMENSION=2,
    STORAGE=[1, storage],
    PERMEABILITY_TENSOR=["ISOTROPIC", transmissivity],
)
model.num.add_block(  # numerical solver
    PCS_TYPE="GROUNDWATER_FLOW",
    LINEAR_SOLVER=[2, 5, 1e-14, 1000, 1.0, 100, 4],
)
model.out.add_block(  # point observation
    PCS_TYPE="GROUNDWATER_FLOW",
    NOD_VALUES="HEAD",
    GEO_TYPE=["POINT", "owell"],
    DAT_TYPE="TECPLOT",
)
model.pcs.add_block(  # set the process type
    PCS_TYPE="GROUNDWATER_FLOW", NUM_TYPE="NEW"
)
model.tim.add_block(  # set the timesteps
    PCS_TYPE="GROUNDWATER_FLOW",
    **generate_time(time)
)
model.write_input()
model.run_model()

Drawdown

OGS5 executable

To obtain an OGS5 executable, ogs5py brings a download routine:

from ogs5py import download_ogs
download_ogs()

Then a executable is stored in the ogs5py config path and will be called when a model is run.

You can pass a version statement to the download_ogs routine, to obtain a specific version (5.7, 5.7.1 (win only) and 5.8). Also "latest" and "stable" are possible. For OGS 5.7 there are executables for Windows/Linux and MacOS. For "5.8", "latest" and "stable" there are no MacOS pre-builds. Have a look at the documentation for all options.

If you have compiled your own OGS5 version, you can add your executable to the ogs5py config path with:

from ogs5py import add_exe
add_exe("path/to/your/ogs/exe")

Otherwise you need to specify the path to the executable within the run command:

model.run_model(ogs_exe="path/to/ogs")

Requirements:

Contact

You can contact us via info@geostat-framework.org.

License

MIT © 2018-2019 (inspired by Falk Hesse and Miao Jing)

This project is based on OGSPY.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for ogs5py, version 1.0.5
Filename, size File type Python version Upload date Hashes
Filename, size ogs5py-1.0.5-py2.py3-none-any.whl (133.0 kB) File type Wheel Python version py2.py3 Upload date Hashes View hashes
Filename, size ogs5py-1.0.5.tar.gz (732.4 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page