Skip to content

Commit

Permalink
Merge branch 'next-major-release' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
magnesj committed Oct 23, 2023
2 parents 816f9a5 + 2e6dcf9 commit 1e506a3
Show file tree
Hide file tree
Showing 70 changed files with 2,979 additions and 8,111 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ node_modules
npm-debug.log

.vscode/
.hugo_build.lock
24 changes: 24 additions & 0 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# .readthedocs.yaml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

# Required
version: 2

# Set the version of Python and other tools you might need
build:
os: ubuntu-22.04
tools:
python: "3.11"
apt_packages:
- graphviz

# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: docs/source/conf.py

# We recommend specifying your dependencies to enable reproducible builds:
# https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: docs/requirements.txt
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,11 @@ https://beta.resinsight.org redirects to https://opm.github.io/ResInsight-UserDo

## Tips and tricks
- If you want to publish a page, but avoid having an entry in the menu, add `hidden = true` to the header of the MD file. See about.md for an example.

- Use the following syntax to define a text region with fixed font size
```txt
row a row b rov c
1 2 2
2 2 5
34 23 2
```
2 changes: 1 addition & 1 deletion content/3d-main-window/SeismicSections.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
+++
title = "Seismic Sections"
published = true
weight = 82
weight = 83
+++

![]({{< relref "" >}}images/3d-main-window/SeismicHeaderImage.png)
Expand Down
15 changes: 15 additions & 0 deletions content/3d-main-window/SeismicView.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
+++
title = "Seismic View"
published = true
weight = 82
+++

![]({{< relref "" >}}images/3d-main-window/SeismicView.png)

## Seismic View
Import of data is described in [Seismic Data]({{< relref "seismicdata" >}}). A seismic view can be created based on a seismic cube. This view can display seismic data, wells and annotation object. To visualize both grid data and seismic data in the same view, see [Seismic Sections]({{< relref "seismicsections" >}}).

## Seismic View features
When seismic data is present, a new **Seismic View** can be created from the right-click menu of a seismic data source or the seismic views folder item. Seismic sections can be created for display of seismic data on intersections. See [Seismic Sections]({{< relref "seismicsections" >}}) for more details.

Surfaces and surface intersection lines can optionally be visualized on the seismic intersections.
2 changes: 2 additions & 0 deletions content/Wells-and-Completions/Completions.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ An example of the ICD parameters can be seen below:
An example of the AICD parameters:
![]({{< relref "" >}}images/3d-main-window/ValveTemplate_AICD.png)

**AICD** valves can be imported from **Completor** or **Eclipse** text files from the right-click menu of **Valves**.

New templates can also be added by selecting the **New Valve Template** option from the right-click menu of the **Valve Templates** entry in the **Completion Templates** Project Tree item.

![]({{< relref "" >}}images/3d-main-window/NewValveTemplate.png)
Expand Down
2 changes: 2 additions & 0 deletions content/getting-started/download-and-install/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ ResInsight is under continuous development targeting two major releases per year
For an overview of some of its new and exciting features, see the following:


- [ ResInsight 2023.10 ]({{< ref "releasenotes_2023_10.md" >}})

- [ ResInsight 2023.06 ]({{< ref "releasenotes_2023_06.md" >}})

- [ ResInsight 2023.03 ]({{< ref "releasenotes_2023_03.md" >}})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Install Qt

### Clone and update sub modules

git clone git://github.com/OPM/ResInsight.git ResInsight
git clone https://github.com/OPM/ResInsight
cd ResInsight
git submodule update --init

Expand All @@ -48,17 +48,32 @@ vcpkg is located in the folder ThirdParty/vcpkg
ThirdParty/vcpkg/vcpkg install grpc boost-filesystem boost-spirit eigen3

### (Windows) Build and install required dependencies using vcpkg
Open a command prompt for Visual Studio x64
Open a command prompt using "Run as Administrator" for Visual Studio x64

ThirdParty/vcpkg/bootstrap-vcpkg.bat
ThirdParty/vcpkg/vcpkg install grpc boost-filesystem boost-spirit eigen3 --triplet x64-windows

[Developer notes](https://ceetronsolutions.github.io/resinsight-system-doc/editor/vcpkg)

### Python dependencies
Install Python version 3.8 or newer

python3 -m pip install -r GrpcInterface/Python/requirements.txt

### Installation of custom Qt

Go to a folder to install custom Qt
In this folder, execute

python3 -m pip install aqtinstall
aqt install-qt linux desktop 5.15.2 -m qtcharts


### Build ResInsight
mkdir cmakebuild
cd cmakebuild
cmake \
-DCMAKE_PREFIX_PATH=/your_qt_path/5.15.2/gcc_64/lib/cmake \
-DRESINSIGHT_ENABLE_GRPC=true \
-DVCPKG_TARGET_TRIPLET=x64-linux \
-DCMAKE_TOOLCHAIN_FILE=../ThirdParty/vcpkg/scripts/buildsystems/vcpkg.cmake \
Expand Down
52 changes: 52 additions & 0 deletions content/getting-started/whats-new/releasenotes_2023_10.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
+++
title = "What's New in 2023.10"
published = true
weight = 10
hidden = true
+++



## Seismic View
![]({{< relref "" >}}images/3d-main-window/SeismicView.png)

When working with seismic data, it is no longer required to have a grid model open. Import a seismic cube and surfaces, add some well paths and interact with seismic data.

[Seismic View]({{< relref "seismicview" >}})

[Seismic Data]({{< relref "seismicdata" >}})

[Seismic Sections]({{< relref "seismicsections" >}})


## Summary Cross Plot Curves
![]({{< relref "" >}}images/plot-window/SummaryCrossPlot.png)

[Summary Cross Plot]({{< relref "summarycrossplots" >}}) curves are now easily available as part of a summary plot. Cross plot of ensemble curves is now supported, and [Regression Curves]({{< relref "regressionanalysis" >}}) can be created on both single cross plot curves and ensemble statistics curves.

## Regression Analysis for Grid Cross Plots
![]({{< relref "" >}}images/plot-window/GridCrossPlot_RegressionCurve.png)

[Grid Cross Plots]({{< relref "gridcrossplots" >}}) have now support for display of regression curves.

## Performance improvements
- Huge performance improvements for summary cases with many objects (wells, groups, regions, ...)
- Using the [Polygon Cell Filter]({{< relref "filters" >}}#cell-filters) is now performing much better

## Stacking of Curves
- Fixed a crash when stacking was enabled
- Make sure all curves are visible when stacking is changed
- Improve performance when selecting multiple curves and toggle stacking state of all curves in one operation

## Other improvements

- [Valve Import]({{< relref "completions" >}}#perforation-interval-valves) is now supported from Completor and Eclipse schedule files.
- Add text export using **Show Plot Data** for [Analysis Plots]({{< relref "analysisplots" >}}) and [Correlation Plots]({{< relref "correlationplots" >}}).
- Text labels can be visualized on surface intersection lines
- Ensemble RFT plots are improved to handle horizontal wells by using 3D grid model data
- Avoid setting curve color to full white when highlighting a curve
- Make sure summary data type **Network** is available in summary data source
- Duplicate a well path to a user-defined well path that can be manipulated - [Well Path Duplication]({{< relref "createnewwellpaths" >}}#well-path-duplication)


See [**Release Notes on GitHub**](https://github.com/OPM/ResInsight/releases/) for further details and information.
3 changes: 2 additions & 1 deletion content/import/EnsembleFileDialog.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ The dialog consists of the following fields:
- **?** Matches one character exception the directory separator
- **[abc]** Matches one of the specified characters. Ex. a, b or c
- **\*[!D]** Exclude files ending with the character 'D' (file extension is not considered)
- **File Extensions**: List of file extensions, ie ".EGRID .GRID"
- **File Type**: The available file types will depend on the type of data to import. When importing summary data, there will be several items, and one with **SMSPEC**.
- **File Extensions**: List of file extensions, ie ".EGRID .GRID". The extension text is independent to the file type defined above, e.g. _CSV_ data can be imported from a file with extension "TXT"
- Use 'realization-*' in filter : Replace the text "realization-12" with "realization-\*"
- Ensemble grouping : Group ensemble by Main folder or Sub Folder (Used by FMU workflow)
- **Effective Filter**: The effective filter displays the resulting full path search pattern. It is updated on the fly as the user edits the pattern fields. A text string of "..." indicates a complete recursive directory search.
Expand Down
2 changes: 1 addition & 1 deletion content/import/SeismicData.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ A seismic file is imported by right-clicking the **Seismic** item in **Project T

![]({{< relref "" >}}images/import/SeismicImport.png)

Display of data is described in [Seismic Sections]({{< relref "seismicsections" >}})
To look at seismic data, create a [Seismic View]({{< relref "seismicview" >}}). Combined display of both grid model geometry and seismid data is described in [Seismic Sections]({{< relref "seismicsections" >}}).

## Difference Cube
The difference between two seismic cubes can be created using the following workflow:
Expand Down
1 change: 1 addition & 0 deletions content/misc/Preferences.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ When changing the preferences, any default color, font or Z-scale Factor that ha
- *No Plots*: do not automatically create summary plots
- *Use Data Vector Names*: Create summary plots automatically based on given vector names, e.g. `FOPT WOPT*`
- *Use Plot Templates*: Create summary plots automatically based on default templates.
- **Cross Plot Addresses**: List of vector pairs defining cross plot curves separated by semicolon. If a well or group is selected, the corresponding well or group address is displayed and used.
- **Default Curve Style for History Vectors**: allows specifying *symbols* and/or *lines* as preference.
- **Append History Vectors**: automatically include the corresponding history vector when appending a simulated summary vector.
- **Curve Color By Phase**: distinguish each phase by separate color.
Expand Down
3 changes: 3 additions & 0 deletions content/plot-window/GridCrossPlots.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ Having created a Grid Cross Plot, the appearance of the Legends, the Info box an

The plot also have some available settings for the two plot axes (X and Y), where the title position and font size can be altered plus the axis range may be controlled and the axis may be set as logarithmic and inverted so the smallest value is first (default for DEPTH on the Y-axis).

## Regression Curves
![]({{< relref "" >}}images/plot-window/GridCrossPlot_RegressionCurve.png)
A regression curve can be displayed for each data group. The display of regression curves is controlled from the **Regression Curves** folder.

## Grid Cross Plot Data Sets
Further Grid Cross Plot data sets can be added to a Plot by right clicking on the plot in the Project Tree and selecting **New Data Set**.
Expand Down
3 changes: 2 additions & 1 deletion content/plot-window/RegressionAnalysis.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ weight = 80

## Create Regression Analysis

Regression analysis curves can be created from the right-click menu for a curve in the **Plot Project Tree**.
Regression analysis curves can be created from the right-click menu for a curve in the **Plot Project Tree**. In addition to single curves, regression anaysis is also supported on ensemble statistics curves and [Cross Plot]({{< relref "summarycrossplots" >}}) curves.



![]({{< relref "" >}}images/plot-window/RegressionAnalysis_create.png)
Expand Down
28 changes: 19 additions & 9 deletions content/plot-window/SummaryCrossPlots.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,33 @@ weight = 40

![]({{< relref "" >}}images/plot-window/SummaryCrossPlot.png)

A Summary Cross Plot is a window displaying a graph in the main area of the **Plot Main Window**. It is very similar to an ordinary [Summary Plot]({{< relref "summaryplots" >}}), but there are some differences:
A **Summary Cross Plot** is a window displaying a graph in the main area of the **Plot Main Window**. It is very similar to an ordinary [Summary Plot]({{< relref "summaryplots" >}}), but the x-axis displays summary vector values instead of time. [Regression analysis]({{< relref "regressionanalysis" >}}) is supported on single cross plot curves and ensemble statistics curves.

- Summary Cross Plot displays one vector against another vector, not one vector against time.
- Not possible to paste Excel/CSV data to a summary cross plot.
- Summary cross plots have no [Plot Editor]({{< relref "summaryploteditor" >}}).
## Summary Cross Plot Curves
New cross plot curves are created by using the right-click command {{< image-in-text src="images/plot-window/SummaryCurve16x16.png" >}} **New Summary Cross Plot Curve** on a summary plot.

The only way to create a new Summary Cross Plot, is to select the right-click command {{< image-in-text src="images/plot-window/SummaryPlot16x16.png" >}} **New Summary Cross Plot** on the **Plot Main Window -> Project Tree -> Summary Cross Plots** item.
Cross plot curves can also be created from the right-click menu in the **Summary Data Sources**.
![]({{< relref "" >}}images/plot-window/SummaryCrossPlot_createFromSubMenu.png)

## Summary Cross Plot Curves
New Summary Cross Plot curves are created by using the right-click command {{< image-in-text src="images/plot-window/SummaryCurve16x16.png" >}} **New Summary Cross Plot Curve** on a summary cross plot. To be able to display a Summary Cross Plot curve, ResInsight needs two data vectors, which are selected using the **Summary Cross Plot Curve** property editor.
The combination of cross plot curves are defined in [Plotting Preferences]({{< relref "preferences" >}}#plotting). Select the cross plot curve object to modify the properties for the curve. Make sure that the **Axis Type** is set to **Summary Vector**.

![]({{< relref "" >}}images/plot-window/SummaryCrossPlotCurvePropertyEditor.png)

In this property editor, the editor group called **Summary Vector**, has been replaced by two vector selection groups **Summary Vector Y** and **Summary Vector X**, compared to an ordinary summary plot. Like the other property editor groups, the vector selection groups works the same way as in the ordinary summary plot. However, there is one exception. The **Summary Vector X** group is missing the **Axis** field. This is because the X values have one axis only, below the plot, as opposed to the Y values, which have the left and right axis. See the [detailed description]({{< relref "summaryplots" >}}#summary-curves).
In this property editor, there is an additional group called **Summary Vector X Axis**. Like the other property editor groups, the vector selection groups works the same way as in the ordinary summary plot.

See the [detailed description]({{< relref "summaryplots" >}}#summary-curves).

## Summary Cross Plot Ensemble

When computing statistics curves for the ensemble, the x-axis is divided into bins. For each bin, all values are collected. A minimum realization count is used descide if there are enough realizations to compute statistics. The number of bins and realization count threshold can be set in the **Property Editor** for the ensemble.

When creating cross plots based on ensembles, the appearance of curves can be adjusted in the property editor. Note that the appearance of statistics curves also can be customized in the **Statistics** group. [Regression analysis]({{< relref "regressionanalysis" >}}) is supported on ensemble statistics curves.

![]({{< relref "" >}}images/plot-window/SummaryCrossPlot_ensemble.png)


### Cross Plotting
Cross plotting creates a new vector from two input vectors. Each vector entry in the resulting vector consists of one vector item value from each of the two input vectors, having equal time steps. However, in most cases the two input vectors do not share the same time steps. To be able to create a resulting cross plot vector in such cases, linear interpolation between adjacent input vector items is being used.
A cross plot is established based on two input summary vectors. Each entry in the cross plot consists of one vector item value from each of the two input vectors having equal time steps. However, in most cases the two input vectors do not share the same time steps. To be able to create a cross plot in such cases, linear interpolation between adjacent input vector items is being used.

When a current time step **T** in input vector **A** is not found in input vector **B**, ResInsight interpolates between the time steps before and after **T** in vector **B**. In this way, ResInsight calculates an interpolated value for time step **T** from vector **B**. The same happens when a time step in vector **B** is not found in vector **A**.

Expand Down
9 changes: 6 additions & 3 deletions docs/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
docutils<0.18
grpcio
grpcio-tools
protobuf<=3.20
protobuf
typing-extensions
sphinx == 6.2.1
docutils
m2r2
sphinx-automodapi
mistune==0.8.4
mistune
sphinx-rtd-theme
13 changes: 7 additions & 6 deletions docs/rips/PythonExamples/case_grid_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@

resinsight = rips.Instance.find()

test_model_path = "e:/gitroot-second/ResInsight/TestModels"

case_paths = []
case_paths.append(
"C:/Users/lindk/source/repos/ResInsight/TestModels/Case_with_10_timesteps/Real0/BRUGGE_0000.EGRID"
)
case_paths.append(
"C:/Users/lindk/source/repos/ResInsight/TestModels/Case_with_10_timesteps/Real10/BRUGGE_0010.EGRID"
)
case_paths.append(test_model_path + "/Case_with_10_timesteps/Real0/BRUGGE_0000.EGRID")
case_paths.append(test_model_path + "/Case_with_10_timesteps/Real10/BRUGGE_0010.EGRID")
case_paths.append(test_model_path + "/Case_with_10_timesteps/Real30/BRUGGE_0030.EGRID")
case_paths.append(test_model_path + "/Case_with_10_timesteps/Real40/BRUGGE_0040.EGRID")

for case_path in case_paths:
assert os.path.exists(
case_path
Expand Down
66 changes: 66 additions & 0 deletions docs/rips/PythonExamples/case_grid_group_generated_results.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import os
import rips

resinsight = rips.Instance.find()

# ResInsight includes some test models. Adjust this path to fit your system
test_model_path = "e:/gitroot-second/ResInsight/TestModels"

case_paths = []
case_paths.append(test_model_path + "/Case_with_10_timesteps/Real0/BRUGGE_0000.EGRID")
case_paths.append(test_model_path + "/Case_with_10_timesteps/Real10/BRUGGE_0010.EGRID")
case_paths.append(test_model_path + "/Case_with_10_timesteps/Real30/BRUGGE_0030.EGRID")
case_paths.append(test_model_path + "/Case_with_10_timesteps/Real40/BRUGGE_0040.EGRID")

for case_path in case_paths:
assert os.path.exists(
case_path
), "You need to set valid case paths for this script to work"

case_group = resinsight.project.create_grid_case_group(case_paths=case_paths)

cases = case_group.descendants(rips.EclipseCase)
print("Got " + str(len(cases)) + " cases: ")

for case in cases:
time_step_info = case.time_steps()
porv_results = case.active_cell_property("STATIC_NATIVE", "PORV", 0)

for time_step_index in range(0, len(time_step_info)):
pressure_results = case.active_cell_property(
"DYNAMIC_NATIVE", "PRESSURE", time_step_index
)

results = []
for pressure, porv in zip(pressure_results, porv_results):
results.append(pressure * porv)

# set the computed values in the case
case.set_active_cell_property(
results, "GENERATED", "PRESSURE_PORV", time_step_index
)

print(
"Case id: " + str(case.id),
" Case name: " + case.name,
" : Calculation complete",
)


print("Transferred all results back to ResInsight")

# one of "GENERATED", "DYNAMIC_NATIVE", "STATIC_NATIVE", "IMPORTED"
# https://api.resinsight.org/en/main/rips.html#result-definition
property_type = "GENERATED"

property_name = "PRESSURE_PORV"

statistics_case = case_group.create_statistics_case()
statistics_case.set_source_properties(property_type, [property_name])
statistics_case.compute_statistics()

view = statistics_case.create_view()
statistics_property_name = property_name + "_MEAN"
view.apply_cell_result(
result_type=property_type, result_variable=statistics_property_name
)

0 comments on commit 1e506a3

Please sign in to comment.