diff --git a/docs/_sources/examples.rst.txt b/docs/_sources/examples.rst.txt index 79ab39e..33473a6 100644 --- a/docs/_sources/examples.rst.txt +++ b/docs/_sources/examples.rst.txt @@ -68,6 +68,14 @@ To plot cell values over time, this can be achieved by: .. figure:: figs/spe11b_pressure-0pressure.png :scale: 20% +.. tip:: + + All previous commands can be executed as (`docs_hello_world.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_hello_world.sh + ========= Colormaps ========= @@ -85,6 +93,14 @@ Different colormap formats can be used when making a subfigure, for example: .. figure:: figs/spe11b_disperc_i,1,k_t5.png :scale: 20% +.. tip:: + + All previous commands can be executed as (`docs_colormaps.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_colormaps.sh + ============ Generic deck ============ @@ -114,6 +130,14 @@ To plot information for the grid, and also the location of the wells from the to Here, we use the remove flag to delete the colorbar axis in the maps for the grid and to delete the generated title in the wells plot (the first entry in remove would delete the left axis, e.g., the y label and y ticks in this example, while the second entry if set to 1 would remove the x axis). +.. tip:: + + All previous commands can be executed as (`docs_generic_deck.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_generic_deck.sh + =============================== Rotation, translation, and zoom =============================== @@ -159,6 +183,14 @@ To show all wells in the model and to only show the ones with at least one perfo For plotting the faults and wells, they must be specified in the input deck (no via include files). +.. tip:: + + All previous commands can be executed as (`docs_rotation_translation_zoom.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_rotation_translation_zoom.sh + ========================== Projections and subfigures ========================== @@ -171,6 +203,14 @@ Here is an example of making a single figure plotting subfigures and using diffe .. image:: ./figs/norne_atw2013_poro_i,j,1:22_t64.png +.. tip:: + + All previous commands can be executed as (`docs_projections_subfigures.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_projections_subfigures.sh + ========== Histograms ========== @@ -184,6 +224,14 @@ respectively, showing also the mean and std which can be used for sampling (see .. image:: ./figs/norne_atw2013_permx.png +.. tip:: + + All previous commands can be executed as (`docs_histograms.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_histograms.sh + ================= Caprock integrity ================= @@ -200,11 +248,19 @@ For example, if we would like to estimate these values for norne for future CCS: .. code-block:: bash - plopm -i 'NORNE_ATW2013' -s ',,1:22 ,,1:22' -v limipres,overpres -rotate 65 -translate '[6456335.5,-3476500]' -x '[0,5600]' -y '[0,8800]' -d 15,10 -c Spectral,spring, -subfigs 1,2 -delax 1 + plopm -i 'NORNE_ATW2013' -s ',,1:22 ,,1:22' -v limipres,overpres -rotate 65 -translate '[6456335.5,-3476500]' -x '[0,5600]' -y '[0,8800]' -d 15,10 -c Spectral,spring -subfigs 1,2 -delax 1 plopm -i 'NORNE_ATW2013' -m csv -v objepres -s ',,1:22' .. image:: ./figs/norne_atw2013_overpres_i,j,1:22_t64.png +.. tip:: + + All previous commands can be executed as (`docs_caprock_integrity.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_caprock_integrity.sh + ====================== Reading from csv files ====================== @@ -279,6 +335,14 @@ To make a GIF from csvs, then write "PLOPM" in the csv file name (e.g., '-i opm1 .. tip:: In general, the ability of plotting from csv files using the flag **-csv** is a game changer, expanding the applicability of **plopm** beyond the format of OPM Flow output files. +.. tip:: + + All previous commands can be executed as (`docs_reading_csvs.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_reading_csvs.sh + ============== Convert to VTK ============== @@ -300,6 +364,14 @@ from the restart files from the initial (0) to the number 5 restart, using a OPM However, there are quantities that are not written (e.g., fipnum, flores), in addition to quantities not supported such as component mass (e.g., co2, h2o). This is when **plopm** can be helpful. +.. tip:: + + All previous commands can be executed as (`docs_convert_to_vtk.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_convert_to_vtk.sh + =================================== Different input files and ensembles =================================== @@ -350,7 +422,15 @@ Below are two of the generated figures after executing the script (additional fi As seen in this example, **plopm** supports the plotting of saturation functions using the '-v' flag, namely 'krw', 'krg', 'krow', 'krog', 'pcow', 'pcog', and 'pcwg'. By default, the saturation function is plotted for SATNUM=1. For a different table, this can be achieved by adding the number at the end of the variable, e.g., 'pcog5'. - In addition, if the model includes hysteresis, then to plot both drainage and imbibition curves this can be achieved by adding 'h' at the end of the variable, e.g., 'krg3h'. + In addition, if the model includes hysteresis, then to plot both drainage and imbibition curves this can be achieved by adding 'h' at the end of the variable, e.g., 'krg3h'. + +.. tip:: + + All previous commands can be executed as (`docs_different_files_and_ensembles.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_different_files_and_ensembles.sh ======= Filters @@ -366,7 +446,15 @@ Using the flag **-filter** allows to remove cells given conditions separated by .. note:: It is possible to set dynamic variables to filter as well such as sgas and pressure. However, this requires to output the dynamic pore volume, i.e., RPORV. - This can be achieved by adding to the deck RPORV to the RPTRST in the SOLUTION and SCHEDULE section (and running the simulations). + This can be achieved by adding to the deck RPORV to the RPTRST in the SOLUTION and SCHEDULE section (and running the simulations). + +.. tip:: + + All previous commands can be executed as (`docs_filters.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_filters.sh ============ GIF and mask @@ -399,6 +487,14 @@ To generate a single GIF of the gas saturation without masking and showing the g Here we have changed the units for time from days to years using the **-tunits** flag. To remove the dynamic times in the GIF, set **-tunits empty**. +.. tip:: + + All previous commands can be executed as (`docs_gif_mask.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_gif_mask.sh + ================== Graphical abstract ================== @@ -438,3 +534,11 @@ case requires a big computer (run with 1024 CPUs), then the steps below are appl The above commands will generate the SPE11C.pvd, SPE11C-000.vtu, and SPE11C_0005.vtu files, which then can be open using `paraview `_, and using the interactive GUI one can then obtain the most-rigthed figure in the abstract (e.g., using the facie numbers stored as satnum to add the background). + +.. tip:: + + All previous commands can be executed as (`docs_graphical_abstract.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_graphical_abstract.sh diff --git a/docs/_sources/introduction.rst.txt b/docs/_sources/introduction.rst.txt index e419567..2334095 100644 --- a/docs/_sources/introduction.rst.txt +++ b/docs/_sources/introduction.rst.txt @@ -20,87 +20,371 @@ convert OPM Flow output files to vtk, which allows to use other visualization/po .. _overview: -Overview --------- -The current implementation supports the following executable with the argument options: +Command-line options +-------------------- +The current implementation supports the following executable with argument options, e.g., : .. code-block:: bash - plopm -i name(s)_of_input_file(s) - -where - --i The base name (or full path) of the input files; if more than one is given, separate them by ' ' (e.g, 'SPE11B /home/user/SPE11B_TUNED') ('SPE11B' by default). --o The base name (or full path) of the output folder ('.' by default, i.e., the folder where plopm is executed). --v Specify the name of the variable to plot, e.g., 'pressure', in addition to special extensive quantities for the mass such as 'grid', 'wells', 'faults', 'pcfact', 'limipres', 'overpres', 'objepres', 'krw', 'krg', 'krow', 'krog', 'pcow', 'pcog', 'pcwg', 'gasm', 'dism', 'liqm', 'vapm', 'co2m', 'h2om', 'xco2l', 'xh2ov', 'xco2v', 'xh2ol', 'fwcdm', and 'fgipm', as well as operations, e.g, 'pressure - 0pressure' to plot the pressure increase ('poro,permx,permz,porv,fipnum,satnum' by default). --m Generate 'png', 'gif', 'csv', or 'vtk' files ('png' by default). --s The slide in the 3D model to plot the 2D maps, e.g, '10,,' to plot the xz plane on all cells with i=10, or ',,5:10' to plot the pv average weighted quantity. If two values are given, e.g., ':,5,7', then the variable is plotted along the colon entry given the indice at the specified restart step, unless the flag '-how ' is set, then this generates a plot of the projected variable over time. If the three values are given, e.g., '2,4,9', then the variable is plotted over time at that location (',1,' by default, i.e., the xz surface at j=1). --p Path to flow, e.g., '/home/build/bin/flow'. This is used to generate the grid for the vtk files ('flow' by default). --z Scale the axis in the 2D maps ('1' by default). --f The font size ('12' by default). --x Set the lower and upper bounds along x, e.g., '[-100,200]' ('' by default). --y Set the lower and upper bounds along y, e.g., '[-10,300]' ('' by default). --c Specify the colormap, e.g., 'jet', or color(s) for the summary, e.g., 'b,r' ('' by default, i.e., set by plopm). --e Specify the linestyles, e.g., 'solid,dotted' ('' by default, i.e., set by plopm). --b Specify the upper and lower bounds for the color map, e.g., '[-0.1,11]' ('' by default, i.e., set by plopm). --d Specify the dimensions in inches generated png, e.g., '8,16' ('7,5' by default). --t Specify the figure title, e.g., 'Final saturation map' ('' by default, i.e., set by plopm). --r Restart number to plot the dynamic variable, where 0 corresponds to the initial one ('-1' by default, i.e., the last restart file). For GIFs, the default correspond to all restart steps. To make a GIF using selected restart steps, provide these separated by commas, e.g., '0,3,10,20'. To write a serie of PNGs, this can be achieve by setting '-r a:b:[step]', e.g., '-r 1:3' for rsts 1 to 3, and '-r 5:505:250' for rsts 5, 255, and 505. --a Scale the mass variable, e.g., 1e-9 for the color bar for the CO2 mass to be in Mt ('1' by default). --csv If the input file is a csv, then define the number of column for the x, y, and variable for spatial maps, or the t and variable for time series ('' by default, column numbering starting from 1, not 0). --tunits For the x axis in the summary use seconds 's', minutes 'm', hours 'h', days 'd', weeks 'w', years 'y', or dates 'dates' ('s' by default). --ylabel Text for the y axis ('' by default, i.e., set by plopm). --xlabel Text for the x axis ('' by default, i.e., set by plopm). --ylnum Number of y axis labels ('5' by default). --xlnum Number of x axis labels ('5' by default). --cnum Number of color labels ('' by default, i.e., set by plopm). --xlog Use log scale for the x axis ('0' by default). --ylog Use log scale for the y axis ('0' by default). --clabel Text for the colorbar ('' by default, i.e., set by plopm). --labels Legend in the summary plot, separated by two spaces if more than one ('' by default, i.e., set by plopm). --axgrid Set axis.grid to True for the summary plots ('1' by default). --dpi Dots per inch for the figure ('500' by default). --xformat Format for the x numbers, e.g., .2e for exponential notation ('' by default, i.e., set by plopm). --yformat Format for the y numbers, e.g., .1f for one decimal ('' by default, i.e., set by plopm). --cformat Specify the format for the numbers in the colormap, e.g., .2f for two decimals ('' by default, i.e., set by plopm). --cticks Set the colorbar tick labelling, e.g., '[G, F, E, D, C, ESF]' ('' by default). --xunits For the x axis in the spatial maps meters 'm', kilometers 'km', centimeters 'cm', or milimeters 'mm' ('m' by default). --yunits For the y axis in the spatial maps meters 'm', kilometers 'km', centimeters 'cm', or milimeters 'mm' ('m' by default). --remove Set the entries to 1 to remove in the spatial maps the left axis, bottom axis, colorbar, and title ('0,0,0,0' by default). --facecolor Color outside the spatial map ('w' by default, i.e., white). --save Name of the output files ('' by default, i.e., set by plopm). --log Log scale for the color map ('0' by default). --clogthks Set the thicks for the color maps with log scale, e.g., '[1,2,3]' ('' by default). --rotate Grades to rotate the grid in the 2D maps ('0' by default). --translate Translate the grid in the 2D maps x,y directions ('[0,0]' by default). --global Min and max in the colorbars from the current 2D slide values (0) or whole 3D model '1' ('0' by default). --ensemble Set to '1' to plot the mean and error bands for the ensemble, '2' to plot the min, mean, and max values, and '3' to plot '1' and '2' ('0' by default). --bandprop Set to color and alpha values for the matplotlib.pyplot.fill_between function when the flag -ensamble is used with values '1' or '3' , e.g., -bandprop 'r,0.1,g,0.2' ('' by default, i.e., set as the same color as the mean and alpha==0.2). --how Select how to project the given variable (-v) in a slide range (-s). By default the variables are pore volume weighted averaged along the range except for mass quantities, porv, trans, and cell dims (e.g., dz) which are summed; cell indices (e.g., index_i) which show the discrete value; harmonic average and arithmetic average for permeabilities depending on the slide range direction using the cell dim along the slide (e.g., -s ,,1:2 -v permz [harmonic averaged]); for wells/faults, 'min' show the cells when at least one cell contains them or 'max' when all cells are part of the given slide/slides range. The supported options are 'min', 'max', 'sum', 'mean', 'pvmean', 'harmonic', 'arithmetic', 'first', and 'last' ('' by default, i.e., the defaults as described above). --ncolor Color for the inactive cells in the 2D maps ('w' by default, i.e., white). --lw Line width separated by commas if more than one ('1' by default). --subfigs Generate separated or a single Figure (e.g., '2,2' for four subfigures) ('' by default, i.e., separate figures). --loc Location of the legend by passing the value to matplotlib.pyplot.legend: best, upper right, upper left, lower left, lower right, right, center left, center right, lower center, upper center, center, or set to 'empty' to remove it ('best' by default). --delax Delete aligned axis labels in subfigures ('0' by default). --printv Print the avaiable variables to plot ('0' by default). --vtkformat Format for each variable in the vtks: 'Float64', 'Float32', 'Float16', 'Int64', 'UInt64', 'Int32', 'UInt32', 'Int16', 'UInt16', 'Int8', 'UInt8' ('Float64' by default) --vtknames Label each variable in the written vtk ('' by default, i.e., the names given in the -v argument). --mask Static variable to use as 2D map background ('' by default). --diff The base name (or full path) of the input file to substract ('' by default). --suptitle Title for the subfigures ('' by default, i.e., set by plopm, if 0, then it is removed; otherwise, write the text). --cbsfax Set the global axis position and size for the colorbar ('0.40,0.01,0.2,0.02' by default). --grid Set the edgecolors and lw in the matplotlib.pyplot.pcolormesh method, e.g., 'black,1e-3' ('' by default, i.e., no grid). --vmin Set a minimum threshold to remove values in the variable ('' by default). --vmax Set a maximum threshold to remove values in the variable ('' by default). --distance Compute the 'min' or 'max' distance of the variable to a 'sensor' using -s, or to the lateral boundaries ('border'), e.g., '-s 1,2,3 -v 'sgas > 1e-2' -distance max,sensor' computes the maximum distance to the location using a min threshold of 1e-2 to indicate if a cell has gas or not ('' by default). --histogram Plot the histogram of the given variable with the given number of bins and distribution, e.g., '20,norm' for 20 bins and normal distribution ('' by default, i.e., no histogram; norm and lognorm supported for now, if no specified then only the histogram is plotted). --stress Value for the stress coeff in the computation of the pressure limit for the variables related to the caprock integrity: limipres, overpres, and objepres ('0.134' by default). --maskthr Set the threshold for the variable to mask " "('1e-3' by default). --filter Consider only the cells fullfilling the conditions, which are separated by '&', and use ',' for different input files e.g., 'fluxnum == 2 & sgas >= 0.2, satnum != 5'. ('' by default; note that RPORV needs to be set in RPTRST to be able to use dynamic filter variables such as sgas). --interval Time for the frames in the GIF in milli second ('1000' by default). --loop Set to 1 for infinity loop in the GIF ('0' by default). --step Set to 1 to use ax.step instead of ax.plot ('0' by default). - + plopm -i name(s)_of_input_file(s) -v name(s)_of_variables(s) + .. tip:: - Type in the terminal **plopm -h** to show these argument options. + Type in the terminal **plopm -h** to show a short description of the argument options. + +Value and list syntax ++++++++++++++++++++++ + +Commas normally separate entries within one specification, while spaces +separate repeated specifications for different inputs, variables, or plots. +Enclose the complete argument in quotes when it contains spaces. + +For example: + +.. code-block:: console + + -v "pressure,sgas" + -s "1,1,1 41,1,29 83,1,58" + -y "[0,10000] [0,23000]" + -histogram "50,norm 20,lognorm 100" + -log "1,1,0" + +The separators have the following general meanings: + +* **Commas** separate components within one specification, such as + ``2,4,9``, ``0,2,5``, or ``[100,-50]``. +* **Single spaces** separate repeated specifications, such as + ``1,1,1 41,1,29 83,1,58`` or ``[0,10000] [0,23000]``. +* **Two spaces** separate free-text labels or titles when each value may + itself contain spaces, such as ``Reference case Modified case``. +* **Semicolons** separate CSV column specifications for different inputs. An + empty specification skips the corresponding input, such as ``;1,2,5``. +* **Ampersands (&)** join filter conditions for the same input. +* **Commas in -filter** separate filter specifications for different + inputs. +* **Empty entries** may act as placeholders where an option applies only to + selected inputs. + +For example: + +.. code-block:: console + + -labels "Reference case Modified case" + -filter "fluxnum == 2 & sgas >= 0.2, satnum != 5" + -i "table model" -v ",BWPR:256,1,5" -csv "1,3;" + +Options ++++++++ + +``-i``, ``--input`` + Base name or full path of the input. Separate multiple inputs with spaces, + e.g., ``SPE11B /home/user/SPE11B_TUNED`` (``SPE11B`` by default). + +``-o``, ``--output`` + Base name or full path of the output folder (``.`` by default, i.e., the + folder where plopm is executed). + +``-v``, ``--variable`` + Variable specification(s) to plot. Separate variables with commas, e.g., + ``pressure,sgas``. Expressions are also supported, e.g., + ``pressure - 0pressure``. An empty entry may be used as a placeholder when + the corresponding input is configured through ``-csv``, e.g., + ``-v ",BWPR:256,1,5" -csv "1,3;"``. + + Special variables include ``grid``, ``wells``, ``faults``, ``pcfact``, + ``limipres``, ``overpres``, ``objepres``, ``krw``, ``krg``, ``krow``, + ``krog``, ``pcow``, ``pcog``, ``pcwg``, ``gasm``, ``dism``, ``liqm``, + ``vapm``, ``co2m``, ``h2om``, ``xco2l``, ``xh2ov``, ``xco2v``, + ``xh2ol``, ``fwcdm``, and ``fgipm`` + (``poro,permx,permz,porv,fipnum,satnum`` by default). + +``-m``, ``--mode`` + Output format: ``png``, ``gif``, ``csv``, or ``vtk`` (``png`` by + default). + +``-s``, ``--slide`` + Slide or location in ``i,j,k`` form. An empty entry selects a plane, e.g., + ``10,,``; a range projects over cells, e.g., ``,,5:10``; ``:`` selects a + line, e.g., ``:,5,7``; and three indices select a cell over time, e.g., + ``2,4,9``. Separate multiple selections with spaces, e.g., + ``1,1,1 41,1,29 83,1,58`` (``,1,`` by default). + +``-r``, ``--restart`` + Restart step(s), where ``0`` is the initial state and ``-1`` is the last. + Separate selected steps with commas, e.g., ``0,2`` or ``0,3,10,20``, or + use ``start:end[:step]``, e.g., ``1:3``, ``0:4:2``, or ``5:505:250``. + The default is ``-1``; GIF output uses all available steps by default. + +``-c``, ``--colors`` + Colormap, e.g., ``jet``, or summary-plot colors separated by commas, e.g., + ``b,r`` (empty by default, i.e., set by plopm). + +``-b``, ``--bounds`` + Color-scale limits in the requested display order, e.g., ``[-0.1,11]`` or + ``[11,-0.1]``. Separate limits for multiple plots with spaces (empty by + default). + +``-d``, ``--dimensions`` + Figure width and height in inches, separated by a comma, e.g., ``8,16`` + (``7,5`` by default). + +``-f``, ``--size`` + Font size (``12`` by default). + +``-t``, ``--title`` + Figure title. Separate titles for multiple plots with two spaces + (``0`` by default). + +``-suptitle`` + Title for a group of subfigures. Use ``0`` to remove it (empty by default, + i.e., set by plopm). + +``-clabel`` + Colorbar label. Separate labels for multiple plots with two spaces (empty + by default, i.e., set by plopm). + +``-xlabel`` + X-axis label. Separate labels for multiple plots with two spaces (empty by + default, i.e., set by plopm). + +``-ylabel`` + Y-axis label. Separate labels for multiple plots with two spaces (empty by + default, i.e., set by plopm). + +``-facecolor`` + Color outside the spatial map (``w`` by default, i.e., white). + +``-dpi`` + Figure resolution in dots per inch (``500`` by default). + +``-x``, ``--xlim`` + X-axis limits in the requested display order, e.g., ``[-100,200]`` or + ``[200,-100]``. Separate limits for multiple plots with spaces, e.g., + ``[-100,200] [500,0]`` (empty by default). + +``-y``, ``--ylim`` + Y-axis limits in the requested display order, e.g., ``[0,70]`` or + ``[70,0]``. Separate limits for multiple plots with spaces, e.g., + ``[0,10000] [0,23000]`` (empty by default). + +``-z``, ``--scale`` + Scale the axes equally in 2D maps: ``0`` or ``1`` (``1`` by default). + +``-xlog`` + Enable the logarithmic x-axis using ``0`` or ``1``. Comma-separated + settings are accepted when different plots require different values + (``0`` by default). + +``-ylog`` + Enable the logarithmic y-axis using ``0`` or ``1``. Comma-separated + settings are accepted when different plots require different values + (``0`` by default). + +``-log`` + Enable logarithmic color scaling using ``0`` or ``1``. Separate settings + for multiple variables with commas, e.g., ``1,1,0`` (``0`` by default). + +``-clogthks`` + Tick values for logarithmic color scales, enclosed by brackets and + separated by commas, e.g., ``[1,10,100]``. At least one corresponding + ``-log`` setting must be ``1`` (empty by default). + +``-a``, ``--adjust`` + Scaling factor applied to variable values, e.g., ``1e-9`` to display CO2 + mass in Mt. Separate factors for multiple variables or plots with commas, + e.g., ``1e-5,1`` (``1`` by default). + +``-xformat`` + X-axis number format, e.g., ``.2e`` (empty by default, i.e., set by + plopm). + +``-yformat`` + Y-axis number format, e.g., ``.1f`` (empty by default, i.e., set by + plopm). + +``-cformat`` + Colorbar number format, e.g., ``.2f`` (empty by default, i.e., set by + plopm). + +``-xlnum`` + Number of x-axis ticks (``5`` by default). + +``-ylnum`` + Number of y-axis ticks (``5`` by default). + +``-cnum`` + Number of colorbar ticks. Separate values for multiple plots with commas, + e.g., ``3,6,2`` (empty by default, i.e., set by plopm). + +``-cticks`` + Colorbar tick labels enclosed by brackets and separated by commas, e.g., + ``[G,F,E,D,C,ESF]`` (empty by default). + +``-xunits`` + Spatial-map x-axis units: ``mm``, ``cm``, ``m``, or ``km`` (``m`` by + default). + +``-yunits`` + Spatial-map y-axis units: ``mm``, ``cm``, ``m``, or ``km`` (``m`` by + default). + +``-subfigs`` + Subplot rows and columns separated by a comma, e.g., ``2,2`` for four + subplots (empty by default, i.e., separate figures). + +``-loc`` + Legend location passed to ``matplotlib.pyplot.legend``: ``best``, + ``upper right``, ``upper left``, ``lower left``, ``lower right``, ``right``, + ``center left``, ``center right``, ``lower center``, ``upper center``, or + ``center``. Use ``empty`` to remove the legend (``best`` by default). + +``-labels`` + Summary-plot legend labels, separated by two spaces, e.g., + ``Reference case Modified case`` (empty by default, i.e., set by plopm). + +``-lw`` + Line widths separated by commas, e.g., ``1,2,1.5`` (empty by default, + i.e., set by plopm). + +``-e``, ``--linestyle`` + Line styles separated by commas, e.g., ``solid,dotted`` (empty by default, + i.e., set by plopm). + +``-axgrid`` + Display the summary-plot axis grid: ``0`` or ``1`` (``1`` by default). + +``-remove`` + Remove the left axis, bottom axis, colorbar, and title using four + comma-separated values of ``0`` or ``1`` (``0,0,0,0`` by default). + +``-how`` + Aggregation or selection method for 2D slices and projections. Supported + values are ``min``, ``max``, ``sum``, ``mean``, ``pvmean``, ``harmonic``, + ``arithmetic``, ``first``, and ``last``. Separate methods for multiple + variables or plots with commas, e.g., ``first,arithmetic,max``. + + By default, continuous variables are pore-volume weighted, extensive + quantities are summed, indices retain discrete values, and permeabilities + use directional harmonic or arithmetic averaging. For wells and faults, + ``min`` shows cells containing at least one occurrence, while ``max`` + requires all projected cells to contain one (empty by default, i.e., + selected automatically). + +``-global`` + Use the current slice range (``0``) or the whole 3D-model range (``1``) + for color scaling (``0`` by default). + +``-filter`` + Cell-selection conditions. Join conditions for one input with ``&`` and + separate filters for different inputs with commas, e.g., + ``fluxnum == 2 & sgas >= 0.2, satnum != 5`` (empty by default). Dynamic + variables such as ``sgas`` require ``RPORV`` in ``RPTRST``. + +``-vmin`` + Minimum threshold used to remove variable values (empty by default). + +``-vmax`` + Maximum threshold used to remove variable values (empty by default). + +``-mask`` + Static variable used as the 2D-map background (empty by default). + +``-maskthr`` + Threshold for the variable supplied through ``-mask`` (``1e-3`` by + default). + +``-ensemble`` + Ensemble plotting mode: ``1`` for mean and error bands, ``2`` for minimum, + mean, and maximum, or ``3`` for both. Use ``0`` to disable ensemble + plotting (``0`` by default). + +``-bandprop`` + Fill colors and alpha values as comma-separated pairs, e.g., + ``r,0.1,g,0.2``. Used with ``-ensemble 1`` or ``-ensemble 3`` (empty by + default, i.e., the mean color with alpha 0.2). + +``-histogram`` + Histogram bins and optional distribution, e.g., ``20``, ``20,norm``, or + ``20,lognorm``. Separate specifications for multiple plots with spaces, + e.g., ``50,norm 20,lognorm 100`` (empty by default, i.e., no histogram). + +``-distance`` + Compute the minimum or maximum distance to a sensor or lateral border: + ``min,sensor``, ``max,sensor``, ``min,border``, or ``max,border``. For a + sensor, provide its ``i,j,k`` location with ``-s``, e.g., + ``-s 1,2,3 -v "sgas > 1e-2" -distance max,sensor`` (empty by default). + +``-stress`` + Stress coefficient used to compute pressure limits for ``limipres``, + ``overpres``, and ``objepres`` (``0.134`` by default). + +``-rotate`` + Grid rotation angle in degrees for 2D maps (``0`` by default). + +``-translate`` + Grid translation in the x and y directions, e.g., ``[100,-50]`` + (``[0,0]`` by default). + +``-csv`` + CSV column indices, starting at 1. Use ``t,value`` for a time series or + ``x,y,value`` for a spatial map. Separate specifications for different + inputs with semicolons; an empty specification skips the corresponding + input, e.g., ``;1,2,5`` or ``1,3;`` (empty by default). + +``-tunits`` + Summary x-axis time units: ``s``, ``m``, ``h``, ``d``, ``w``, ``y``, + ``dates``, ``empty``, or ``tstep`` (``d`` by default). + +``-save`` + Output file name (empty by default, i.e., set by plopm). + +``-p``, ``--path`` + Path or command for the Flow executable, e.g., ``/home/build/bin/flow``. + Used only to generate the grid for VTK output (``flow`` by default). + +``-vtkformat`` + VTK format for each variable: ``Float64``, ``Float32``, ``Float16``, + ``Int64``, ``UInt64``, ``Int32``, ``UInt32``, ``Int16``, ``UInt16``, + ``Int8``, or ``UInt8``. Separate formats for multiple variables with + commas (``Float64`` by default). This option applies only to VTK output. + +``-vtknames`` + Custom VTK variable names separated by commas (empty by default, i.e., use + the names supplied through ``-v``). This option applies only to VTK output. + +``-diff`` + Base name or full path of the input model to subtract (empty by default). + +``-ncolor`` + Color for inactive cells in 2D maps (``w`` by default, i.e., white). + +``-grid`` + ``pcolormesh`` edge color and line width separated by a comma, e.g., + ``black,1e-3`` (empty by default, i.e., no grid). + +``-cbsfax`` + Global colorbar position and size as ``left,bottom,width,height``, e.g., + ``0.40,0.01,0.2,0.02``. Use ``empty`` to remove it + (``0.40,0.01,0.2,0.02`` by default). + +``-delax`` + Remove duplicated axis labels in subplots: ``0`` or ``1`` (``0`` by + default). + +``-printv`` + Print the available variables: ``0`` or ``1`` (``0`` by default). + +``-dual`` + Enable dual-grid processing using ``0`` or ``1`` (``0`` by default). + +``-interval`` + GIF frame interval in milliseconds (``1000`` by default). This option + applies only to GIF output. + +``-loop`` + Loop GIFs indefinitely using ``0`` or ``1`` (``0`` by default). This + option applies only to GIF output. + +``-step`` + Use ``ax.step`` instead of ``ax.plot``: ``0`` or ``1`` (``0`` by + default). diff --git a/docs/examples.html b/docs/examples.html index c866b15..51faa91 100644 --- a/docs/examples.html +++ b/docs/examples.html @@ -126,7 +126,7 @@

Hello world _images/spe11b_satnum_%2A%2C1%2C%2A_t5.png -

See the Overview or run plopm -h for the definition of the argument options, as well as using -printv 1 flag to output the available +

See the Command-line options or run plopm -h for the definition of the argument options, as well as using -printv 1 flag to output the available summary, init, and restart available variables given an input deck.

For example, for the gas saturation at the report step number 4 with three colorbar labels using a given colormap (-c) and defined colorbar ticks (-cticks):

plopm -i SPE11B -v sgas -r 4 -cnum 3 -c cubehelix -cticks '[0, middle, 0.9]'
@@ -151,6 +151,13 @@ 

Hello world_images/spe11b_pressure-0pressure.png +
+

Tip

+

All previous commands can be executed as (docs_hello_world.sh):

+
. ./tests/scripts/docs_hello_world.sh
+
+
+

Colormaps

@@ -165,6 +172,13 @@

Colormaps_images/spe11b_disperc_i%2C1%2Ck_t5.png +
+

Tip

+

All previous commands can be executed as (docs_colormaps.sh):

+
. ./tests/scripts/docs_colormaps.sh
+
+
+

Generic deck

@@ -185,6 +199,13 @@

Generic deck

Here, we use the remove flag to delete the colorbar axis in the maps for the grid and to delete the generated title in the wells plot (the first entry in remove would delete the left axis, e.g., the y label and y ticks in this example, while the second entry if set to 1 would remove the x axis).

+
+

Tip

+

All previous commands can be executed as (docs_generic_deck.sh):

+
. ./tests/scripts/docs_generic_deck.sh
+
+
+

Rotation, translation, and zoom

@@ -216,6 +237,13 @@

Rotation, translation, and zoomNote

For plotting the faults and wells, they must be specified in the input deck (no via include files).

+
+

Tip

+

All previous commands can be executed as (docs_rotation_translation_zoom.sh):

+
. ./tests/scripts/docs_rotation_translation_zoom.sh
+
+
+

Projections and subfigures

@@ -224,6 +252,13 @@

Projections and subfigures +
+

Tip

+

All previous commands can be executed as (docs_projections_subfigures.sh):

+
. ./tests/scripts/docs_projections_subfigures.sh
+
+
+

Histograms

@@ -233,6 +268,13 @@

Histograms +
+

Tip

+

All previous commands can be executed as (docs_histograms.sh):

+
. ./tests/scripts/docs_histograms.sh
+
+
+

Caprock integrity

@@ -245,11 +287,18 @@

Caprock integrity

Reading from csv files

@@ -305,6 +354,13 @@

Reading from csv filesTip

In general, the ability of plotting from csv files using the flag -csv is a game changer, expanding the applicability of plopm beyond the format of OPM Flow output files.

+
+

Tip

+

All previous commands can be executed as (docs_reading_csvs.sh):

+
. ./tests/scripts/docs_reading_csvs.sh
+
+
+

Convert to VTK

@@ -326,6 +382,13 @@

Convert to VTK +

Tip

+

All previous commands can be executed as (docs_convert_to_vtk.sh):

+
. ./tests/scripts/docs_convert_to_vtk.sh
+
+
+

Different input files and ensembles

@@ -371,6 +434,13 @@

Different input files and ensembles +

Tip

+

All previous commands can be executed as (docs_different_files_and_ensembles.sh):

+
. ./tests/scripts/docs_different_files_and_ensembles.sh
+
+
+

Filters

@@ -384,6 +454,13 @@

Filters

It is possible to set dynamic variables to filter as well such as sgas and pressure. However, this requires to output the dynamic pore volume, i.e., RPORV. This can be achieved by adding to the deck RPORV to the RPTRST in the SOLUTION and SCHEDULE section (and running the simulations).

+
+

Tip

+

All previous commands can be executed as (docs_filters.sh):

+
. ./tests/scripts/docs_filters.sh
+
+
+

GIF and mask

@@ -407,6 +484,13 @@

GIF and mask

Here we have changed the units for time from days to years using the -tunits flag. To remove the dynamic times in the GIF, set -tunits empty.

+
+

Tip

+

All previous commands can be executed as (docs_gif_mask.sh):

+
. ./tests/scripts/docs_gif_mask.sh
+
+
+

Graphical abstract

@@ -439,6 +523,13 @@

Graphical abstractparaview, and using the interactive GUI one can then obtain the most-rigthed figure in the abstract (e.g., using the facie numbers stored as satnum to add the background).

+
+

Tip

+

All previous commands can be executed as (docs_graphical_abstract.sh):

+
. ./tests/scripts/docs_graphical_abstract.sh
+
+
+

diff --git a/docs/genindex.html b/docs/genindex.html index 0b9f8b7..094c33a 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -138,6 +138,8 @@

C

  • cf (plopm.config.config.ConfigPlopm attribute)
  • cformat (plopm.config.config.ConfigPlopm attribute) +
  • +
  • check_cmdargs() (in module plopm.core.plopm)
  • check_integer_conversion() (in module plopm.utils.write_vtk)
  • diff --git a/docs/index.html b/docs/index.html index 8f08ebc..b409e2f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -83,7 +83,11 @@

    Welcome to plopm’s documentation!Introduction
  • Installation
      diff --git a/docs/introduction.html b/docs/introduction.html index c219dce..8ba3a64 100644 --- a/docs/introduction.html +++ b/docs/introduction.html @@ -47,7 +47,11 @@
      • Introduction
      • Installation
      • @@ -97,229 +101,297 @@

        Concept as well as the difference between given dynamic variables (e.g., pressure) for two different simulations cases. In addition, plopm can convert OPM Flow output files to vtk, which allows to use other visualization/postprocessing tools (e.g., paraview).

        -
        -

        Overview

        -

        The current implementation supports the following executable with the argument options:

        -
        plopm -i name(s)_of_input_file(s)
        +
        +

        Command-line options

        +

        The current implementation supports the following executable with argument options, e.g., :

        +
        plopm -i name(s)_of_input_file(s) -v name(s)_of_variables(s)
        +
        +
        +
        +

        Tip

        +

        Type in the terminal plopm -h to show a short description of the argument options.

        +
        +
        +

        Value and list syntax

        +

        Commas normally separate entries within one specification, while spaces +separate repeated specifications for different inputs, variables, or plots. +Enclose the complete argument in quotes when it contains spaces.

        +

        For example:

        +
        -v "pressure,sgas"
        +-s "1,1,1 41,1,29 83,1,58"
        +-y "[0,10000] [0,23000]"
        +-histogram "50,norm 20,lognorm 100"
        +-log "1,1,0"
        +
        +
        +

        The separators have the following general meanings:

        +
          +
        • Commas separate components within one specification, such as +2,4,9, 0,2,5, or [100,-50].

        • +
        • Single spaces separate repeated specifications, such as +1,1,1 41,1,29 83,1,58 or [0,10000] [0,23000].

        • +
        • Two spaces separate free-text labels or titles when each value may +itself contain spaces, such as Reference case  Modified case.

        • +
        • Semicolons separate CSV column specifications for different inputs. An +empty specification skips the corresponding input, such as ;1,2,5.

        • +
        • Ampersands (&) join filter conditions for the same input.

        • +
        • Commas in -filter separate filter specifications for different +inputs.

        • +
        • Empty entries may act as placeholders where an option applies only to +selected inputs.

        • +
        +

        For example:

        +
        -labels "Reference case  Modified case"
        +-filter "fluxnum == 2 & sgas >= 0.2, satnum != 5"
        +-i "table model" -v ",BWPR:256,1,5" -csv "1,3;"
         
        -

        where

        -
        -
        -i
        -

        The base name (or full path) of the input files; if more than one is given, separate them by ‘ ‘ (e.g, ‘SPE11B /home/user/SPE11B_TUNED’) (‘SPE11B’ by default).

        +
        +
        +

        Options

        +
        +
        -i, --input

        Base name or full path of the input. Separate multiple inputs with spaces, +e.g., SPE11B /home/user/SPE11B_TUNED (SPE11B by default).

        +
        +
        -o, --output

        Base name or full path of the output folder (. by default, i.e., the +folder where plopm is executed).

        -
        -o
        -

        The base name (or full path) of the output folder (‘.’ by default, i.e., the folder where plopm is executed).

        +
        -v, --variable

        Variable specification(s) to plot. Separate variables with commas, e.g., +pressure,sgas. Expressions are also supported, e.g., +pressure - 0pressure. An empty entry may be used as a placeholder when +the corresponding input is configured through -csv, e.g., +-v ",BWPR:256,1,5" -csv "1,3;".

        +

        Special variables include grid, wells, faults, pcfact, +limipres, overpres, objepres, krw, krg, krow, +krog, pcow, pcog, pcwg, gasm, dism, liqm, +vapm, co2m, h2om, xco2l, xh2ov, xco2v, +xh2ol, fwcdm, and fgipm +(poro,permx,permz,porv,fipnum,satnum by default).

        -
        -v
        -

        Specify the name of the variable to plot, e.g., ‘pressure’, in addition to special extensive quantities for the mass such as ‘grid’, ‘wells’, ‘faults’, ‘pcfact’, ‘limipres’, ‘overpres’, ‘objepres’, ‘krw’, ‘krg’, ‘krow’, ‘krog’, ‘pcow’, ‘pcog’, ‘pcwg’, ‘gasm’, ‘dism’, ‘liqm’, ‘vapm’, ‘co2m’, ‘h2om’, ‘xco2l’, ‘xh2ov’, ‘xco2v’, ‘xh2ol’, ‘fwcdm’, and ‘fgipm’, as well as operations, e.g, ‘pressure - 0pressure’ to plot the pressure increase (‘poro,permx,permz,porv,fipnum,satnum’ by default).

        +
        -m, --mode

        Output format: png, gif, csv, or vtk (png by +default).

        -
        -m
        -

        Generate ‘png’, ‘gif’, ‘csv’, or ‘vtk’ files (‘png’ by default).

        +
        -s, --slide

        Slide or location in i,j,k form. An empty entry selects a plane, e.g., +10,,; a range projects over cells, e.g., ,,5:10; : selects a +line, e.g., :,5,7; and three indices select a cell over time, e.g., +2,4,9. Separate multiple selections with spaces, e.g., +1,1,1 41,1,29 83,1,58 (,1, by default).

        -
        -s
        -

        The slide in the 3D model to plot the 2D maps, e.g, ‘10,,’ to plot the xz plane on all cells with i=10, or ‘,,5:10’ to plot the pv average weighted quantity. If two values are given, e.g., ‘:,5,7’, then the variable is plotted along the colon entry given the indice at the specified restart step, unless the flag ‘-how ‘ is set, then this generates a plot of the projected variable over time. If the three values are given, e.g., ‘2,4,9’, then the variable is plotted over time at that location (‘,1,’ by default, i.e., the xz surface at j=1).

        +
        -r, --restart

        Restart step(s), where 0 is the initial state and -1 is the last. +Separate selected steps with commas, e.g., 0,2 or 0,3,10,20, or +use start:end[:step], e.g., 1:3, 0:4:2, or 5:505:250. +The default is -1; GIF output uses all available steps by default.

        -
        -p
        -

        Path to flow, e.g., ‘/home/build/bin/flow’. This is used to generate the grid for the vtk files (‘flow’ by default).

        +
        -c, --colors

        Colormap, e.g., jet, or summary-plot colors separated by commas, e.g., +b,r (empty by default, i.e., set by plopm).

        -
        -z
        -

        Scale the axis in the 2D maps (‘1’ by default).

        +
        -b, --bounds

        Color-scale limits in the requested display order, e.g., [-0.1,11] or +[11,-0.1]. Separate limits for multiple plots with spaces (empty by +default).

        -
        -f
        -

        The font size (‘12’ by default).

        +
        -d, --dimensions

        Figure width and height in inches, separated by a comma, e.g., 8,16 +(7,5 by default).

        -
        -x
        -

        Set the lower and upper bounds along x, e.g., ‘[-100,200]’ (’’ by default).

        +
        -f, --size

        Font size (12 by default).

        -
        -y
        -

        Set the lower and upper bounds along y, e.g., ‘[-10,300]’ (’’ by default).

        +
        -t, --title

        Figure title. Separate titles for multiple plots with two spaces +(0 by default).

        -
        -c
        -

        Specify the colormap, e.g., ‘jet’, or color(s) for the summary, e.g., ‘b,r’ (’’ by default, i.e., set by plopm).

        +
        -suptitle

        Title for a group of subfigures. Use 0 to remove it (empty by default, +i.e., set by plopm).

        -
        -e
        -

        Specify the linestyles, e.g., ‘solid,dotted’ (’’ by default, i.e., set by plopm).

        +
        -clabel

        Colorbar label. Separate labels for multiple plots with two spaces (empty +by default, i.e., set by plopm).

        -
        -b
        -

        Specify the upper and lower bounds for the color map, e.g., ‘[-0.1,11]’ (’’ by default, i.e., set by plopm).

        +
        -xlabel

        X-axis label. Separate labels for multiple plots with two spaces (empty by +default, i.e., set by plopm).

        -
        -d
        -

        Specify the dimensions in inches generated png, e.g., ‘8,16’ (‘7,5’ by default).

        +
        -ylabel

        Y-axis label. Separate labels for multiple plots with two spaces (empty by +default, i.e., set by plopm).

        -
        -t
        -

        Specify the figure title, e.g., ‘Final saturation map’ (’’ by default, i.e., set by plopm).

        +
        -facecolor

        Color outside the spatial map (w by default, i.e., white).

        -
        -r
        -

        Restart number to plot the dynamic variable, where 0 corresponds to the initial one (‘-1’ by default, i.e., the last restart file). For GIFs, the default correspond to all restart steps. To make a GIF using selected restart steps, provide these separated by commas, e.g., ‘0,3,10,20’. To write a serie of PNGs, this can be achieve by setting ‘-r a:b:[step]’, e.g., ‘-r 1:3’ for rsts 1 to 3, and ‘-r 5:505:250’ for rsts 5, 255, and 505.

        +
        -dpi

        Figure resolution in dots per inch (500 by default).

        -
        -a
        -

        Scale the mass variable, e.g., 1e-9 for the color bar for the CO2 mass to be in Mt (‘1’ by default).

        +
        -x, --xlim

        X-axis limits in the requested display order, e.g., [-100,200] or +[200,-100]. Separate limits for multiple plots with spaces, e.g., +[-100,200] [500,0] (empty by default).

        -
        -csv
        -

        If the input file is a csv, then define the number of column for the x, y, and variable for spatial maps, or the t and variable for time series (’’ by default, column numbering starting from 1, not 0).

        +
        -y, --ylim

        Y-axis limits in the requested display order, e.g., [0,70] or +[70,0]. Separate limits for multiple plots with spaces, e.g., +[0,10000] [0,23000] (empty by default).

        -
        -tunits
        -

        For the x axis in the summary use seconds ‘s’, minutes ‘m’, hours ‘h’, days ‘d’, weeks ‘w’, years ‘y’, or dates ‘dates’ (‘s’ by default).

        +
        -z, --scale

        Scale the axes equally in 2D maps: 0 or 1 (1 by default).

        -
        -ylabel
        -

        Text for the y axis (’’ by default, i.e., set by plopm).

        +
        -xlog

        Enable the logarithmic x-axis using 0 or 1. Comma-separated +settings are accepted when different plots require different values +(0 by default).

        -
        -xlabel
        -

        Text for the x axis (’’ by default, i.e., set by plopm).

        +
        -ylog

        Enable the logarithmic y-axis using 0 or 1. Comma-separated +settings are accepted when different plots require different values +(0 by default).

        -
        -ylnum
        -

        Number of y axis labels (‘5’ by default).

        +
        -log

        Enable logarithmic color scaling using 0 or 1. Separate settings +for multiple variables with commas, e.g., 1,1,0 (0 by default).

        -
        -xlnum
        -

        Number of x axis labels (‘5’ by default).

        +
        -clogthks

        Tick values for logarithmic color scales, enclosed by brackets and +separated by commas, e.g., [1,10,100]. At least one corresponding +-log setting must be 1 (empty by default).

        -
        -cnum
        -

        Number of color labels (’’ by default, i.e., set by plopm).

        +
        -a, --adjust

        Scaling factor applied to variable values, e.g., 1e-9 to display CO2 +mass in Mt. Separate factors for multiple variables or plots with commas, +e.g., 1e-5,1 (1 by default).

        -
        -xlog
        -

        Use log scale for the x axis (‘0’ by default).

        +
        -xformat

        X-axis number format, e.g., .2e (empty by default, i.e., set by +plopm).

        -
        -ylog
        -

        Use log scale for the y axis (‘0’ by default).

        +
        -yformat

        Y-axis number format, e.g., .1f (empty by default, i.e., set by +plopm).

        -
        -clabel
        -

        Text for the colorbar (’’ by default, i.e., set by plopm).

        +
        -cformat

        Colorbar number format, e.g., .2f (empty by default, i.e., set by +plopm).

        -
        -labels
        -

        Legend in the summary plot, separated by two spaces if more than one (’’ by default, i.e., set by plopm).

        +
        -xlnum

        Number of x-axis ticks (5 by default).

        -
        -axgrid
        -

        Set axis.grid to True for the summary plots (‘1’ by default).

        +
        -ylnum

        Number of y-axis ticks (5 by default).

        -
        -dpi
        -

        Dots per inch for the figure (‘500’ by default).

        +
        -cnum

        Number of colorbar ticks. Separate values for multiple plots with commas, +e.g., 3,6,2 (empty by default, i.e., set by plopm).

        -
        -xformat
        -

        Format for the x numbers, e.g., .2e for exponential notation (’’ by default, i.e., set by plopm).

        +
        -cticks

        Colorbar tick labels enclosed by brackets and separated by commas, e.g., +[G,F,E,D,C,ESF] (empty by default).

        -
        -yformat
        -

        Format for the y numbers, e.g., .1f for one decimal (’’ by default, i.e., set by plopm).

        +
        -xunits

        Spatial-map x-axis units: mm, cm, m, or km (m by +default).

        -
        -cformat
        -

        Specify the format for the numbers in the colormap, e.g., .2f for two decimals (’’ by default, i.e., set by plopm).

        +
        -yunits

        Spatial-map y-axis units: mm, cm, m, or km (m by +default).

        -
        -cticks
        -

        Set the colorbar tick labelling, e.g., ‘[G, F, E, D, C, ESF]’ (’’ by default).

        +
        -subfigs

        Subplot rows and columns separated by a comma, e.g., 2,2 for four +subplots (empty by default, i.e., separate figures).

        -
        -xunits
        -

        For the x axis in the spatial maps meters ‘m’, kilometers ‘km’, centimeters ‘cm’, or milimeters ‘mm’ (‘m’ by default).

        +
        -loc

        Legend location passed to matplotlib.pyplot.legend: best, +upper right, upper left, lower left, lower right, right, +center left, center right, lower center, upper center, or +center. Use empty to remove the legend (best by default).

        -
        -yunits
        -

        For the y axis in the spatial maps meters ‘m’, kilometers ‘km’, centimeters ‘cm’, or milimeters ‘mm’ (‘m’ by default).

        +
        -labels

        Summary-plot legend labels, separated by two spaces, e.g., +Reference case  Modified case (empty by default, i.e., set by plopm).

        -
        -remove
        -

        Set the entries to 1 to remove in the spatial maps the left axis, bottom axis, colorbar, and title (‘0,0,0,0’ by default).

        +
        -lw

        Line widths separated by commas, e.g., 1,2,1.5 (empty by default, +i.e., set by plopm).

        -
        -facecolor
        -

        Color outside the spatial map (‘w’ by default, i.e., white).

        +
        -e, --linestyle

        Line styles separated by commas, e.g., solid,dotted (empty by default, +i.e., set by plopm).

        -
        -save
        -

        Name of the output files (’’ by default, i.e., set by plopm).

        +
        -axgrid

        Display the summary-plot axis grid: 0 or 1 (1 by default).

        -
        -log
        -

        Log scale for the color map (‘0’ by default).

        +
        -remove

        Remove the left axis, bottom axis, colorbar, and title using four +comma-separated values of 0 or 1 (0,0,0,0 by default).

        -
        -clogthks
        -

        Set the thicks for the color maps with log scale, e.g., ‘[1,2,3]’ (’’ by default).

        +
        -how

        Aggregation or selection method for 2D slices and projections. Supported +values are min, max, sum, mean, pvmean, harmonic, +arithmetic, first, and last. Separate methods for multiple +variables or plots with commas, e.g., first,arithmetic,max.

        +

        By default, continuous variables are pore-volume weighted, extensive +quantities are summed, indices retain discrete values, and permeabilities +use directional harmonic or arithmetic averaging. For wells and faults, +min shows cells containing at least one occurrence, while max +requires all projected cells to contain one (empty by default, i.e., +selected automatically).

        -
        -rotate
        -

        Grades to rotate the grid in the 2D maps (‘0’ by default).

        +
        -global

        Use the current slice range (0) or the whole 3D-model range (1) +for color scaling (0 by default).

        -
        -translate
        -

        Translate the grid in the 2D maps x,y directions (‘[0,0]’ by default).

        +
        -filter

        Cell-selection conditions. Join conditions for one input with & and +separate filters for different inputs with commas, e.g., +fluxnum == 2 & sgas >= 0.2, satnum != 5 (empty by default). Dynamic +variables such as sgas require RPORV in RPTRST.

        -
        -global
        -

        Min and max in the colorbars from the current 2D slide values (0) or whole 3D model ‘1’ (‘0’ by default).

        +
        -vmin

        Minimum threshold used to remove variable values (empty by default).

        -
        -ensemble
        -

        Set to ‘1’ to plot the mean and error bands for the ensemble, ‘2’ to plot the min, mean, and max values, and ‘3’ to plot ‘1’ and ‘2’ (‘0’ by default).

        +
        -vmax

        Maximum threshold used to remove variable values (empty by default).

        -
        -bandprop
        -

        Set to color and alpha values for the matplotlib.pyplot.fill_between function when the flag -ensamble is used with values ‘1’ or ‘3’ , e.g., -bandprop ‘r,0.1,g,0.2’ (’’ by default, i.e., set as the same color as the mean and alpha==0.2).

        +
        -mask

        Static variable used as the 2D-map background (empty by default).

        -
        -how
        -

        Select how to project the given variable (-v) in a slide range (-s). By default the variables are pore volume weighted averaged along the range except for mass quantities, porv, trans, and cell dims (e.g., dz) which are summed; cell indices (e.g., index_i) which show the discrete value; harmonic average and arithmetic average for permeabilities depending on the slide range direction using the cell dim along the slide (e.g., -s ,,1:2 -v permz [harmonic averaged]); for wells/faults, ‘min’ show the cells when at least one cell contains them or ‘max’ when all cells are part of the given slide/slides range. The supported options are ‘min’, ‘max’, ‘sum’, ‘mean’, ‘pvmean’, ‘harmonic’, ‘arithmetic’, ‘first’, and ‘last’ (’’ by default, i.e., the defaults as described above).

        +
        -maskthr

        Threshold for the variable supplied through -mask (1e-3 by +default).

        -
        -ncolor
        -

        Color for the inactive cells in the 2D maps (‘w’ by default, i.e., white).

        +
        -ensemble

        Ensemble plotting mode: 1 for mean and error bands, 2 for minimum, +mean, and maximum, or 3 for both. Use 0 to disable ensemble +plotting (0 by default).

        -
        -lw
        -

        Line width separated by commas if more than one (‘1’ by default).

        +
        -bandprop

        Fill colors and alpha values as comma-separated pairs, e.g., +r,0.1,g,0.2. Used with -ensemble 1 or -ensemble 3 (empty by +default, i.e., the mean color with alpha 0.2).

        -
        -subfigs
        -

        Generate separated or a single Figure (e.g., ‘2,2’ for four subfigures) (’’ by default, i.e., separate figures).

        +
        -histogram

        Histogram bins and optional distribution, e.g., 20, 20,norm, or +20,lognorm. Separate specifications for multiple plots with spaces, +e.g., 50,norm 20,lognorm 100 (empty by default, i.e., no histogram).

        -
        -loc
        -

        Location of the legend by passing the value to matplotlib.pyplot.legend: best, upper right, upper left, lower left, lower right, right, center left, center right, lower center, upper center, center, or set to ‘empty’ to remove it (‘best’ by default).

        +
        -distance

        Compute the minimum or maximum distance to a sensor or lateral border: +min,sensor, max,sensor, min,border, or max,border. For a +sensor, provide its i,j,k location with -s, e.g., +-s 1,2,3 -v "sgas > 1e-2" -distance max,sensor (empty by default).

        -
        -delax
        -

        Delete aligned axis labels in subfigures (‘0’ by default).

        +
        -stress

        Stress coefficient used to compute pressure limits for limipres, +overpres, and objepres (0.134 by default).

        -
        -printv
        -

        Print the avaiable variables to plot (‘0’ by default).

        +
        -rotate

        Grid rotation angle in degrees for 2D maps (0 by default).

        -
        -vtkformat
        -

        Format for each variable in the vtks: ‘Float64’, ‘Float32’, ‘Float16’, ‘Int64’, ‘UInt64’, ‘Int32’, ‘UInt32’, ‘Int16’, ‘UInt16’, ‘Int8’, ‘UInt8’ (‘Float64’ by default)

        +
        -translate

        Grid translation in the x and y directions, e.g., [100,-50] +([0,0] by default).

        -
        -vtknames
        -

        Label each variable in the written vtk (’’ by default, i.e., the names given in the -v argument).

        +
        -csv

        CSV column indices, starting at 1. Use t,value for a time series or +x,y,value for a spatial map. Separate specifications for different +inputs with semicolons; an empty specification skips the corresponding +input, e.g., ;1,2,5 or 1,3; (empty by default).

        -
        -mask
        -

        Static variable to use as 2D map background (’’ by default).

        +
        -tunits

        Summary x-axis time units: s, m, h, d, w, y, +dates, empty, or tstep (d by default).

        -
        -diff
        -

        The base name (or full path) of the input file to substract (’’ by default).

        +
        -save

        Output file name (empty by default, i.e., set by plopm).

        -
        -suptitle
        -

        Title for the subfigures (’’ by default, i.e., set by plopm, if 0, then it is removed; otherwise, write the text).

        +
        -p, --path

        Path or command for the Flow executable, e.g., /home/build/bin/flow. +Used only to generate the grid for VTK output (flow by default).

        -
        -cbsfax
        -

        Set the global axis position and size for the colorbar (‘0.40,0.01,0.2,0.02’ by default).

        +
        -vtkformat

        VTK format for each variable: Float64, Float32, Float16, +Int64, UInt64, Int32, UInt32, Int16, UInt16, +Int8, or UInt8. Separate formats for multiple variables with +commas (Float64 by default). This option applies only to VTK output.

        -
        -grid
        -

        Set the edgecolors and lw in the matplotlib.pyplot.pcolormesh method, e.g., ‘black,1e-3’ (’’ by default, i.e., no grid).

        +
        -vtknames

        Custom VTK variable names separated by commas (empty by default, i.e., use +the names supplied through -v). This option applies only to VTK output.

        -
        -vmin
        -

        Set a minimum threshold to remove values in the variable (’’ by default).

        +
        -diff

        Base name or full path of the input model to subtract (empty by default).

        -
        -vmax
        -

        Set a maximum threshold to remove values in the variable (’’ by default).

        +
        -ncolor

        Color for inactive cells in 2D maps (w by default, i.e., white).

        -
        -distance
        -

        Compute the ‘min’ or ‘max’ distance of the variable to a ‘sensor’ using -s, or to the lateral boundaries (‘border’), e.g., ‘-s 1,2,3 -v ‘sgas > 1e-2’ -distance max,sensor’ computes the maximum distance to the location using a min threshold of 1e-2 to indicate if a cell has gas or not (’’ by default).

        +
        -grid

        pcolormesh edge color and line width separated by a comma, e.g., +black,1e-3 (empty by default, i.e., no grid).

        -
        -histogram
        -

        Plot the histogram of the given variable with the given number of bins and distribution, e.g., ‘20,norm’ for 20 bins and normal distribution (’’ by default, i.e., no histogram; norm and lognorm supported for now, if no specified then only the histogram is plotted).

        +
        -cbsfax

        Global colorbar position and size as left,bottom,width,height, e.g., +0.40,0.01,0.2,0.02. Use empty to remove it +(0.40,0.01,0.2,0.02 by default).

        -
        -stress
        -

        Value for the stress coeff in the computation of the pressure limit for the variables related to the caprock integrity: limipres, overpres, and objepres (‘0.134’ by default).

        +
        -delax

        Remove duplicated axis labels in subplots: 0 or 1 (0 by +default).

        -
        -maskthr
        -

        Set the threshold for the variable to mask “ “(‘1e-3’ by default).

        +
        -printv

        Print the available variables: 0 or 1 (0 by default).

        -
        -filter
        -

        Consider only the cells fullfilling the conditions, which are separated by ‘&’, and use ‘,’ for different input files e.g., ‘fluxnum == 2 & sgas >= 0.2, satnum != 5’. (’’ by default; note that RPORV needs to be set in RPTRST to be able to use dynamic filter variables such as sgas).

        +
        -dual

        Enable dual-grid processing using 0 or 1 (0 by default).

        -
        -interval
        -

        Time for the frames in the GIF in milli second (‘1000’ by default).

        +
        -interval

        GIF frame interval in milliseconds (1000 by default). This option +applies only to GIF output.

        -
        -loop
        -

        Set to 1 for infinity loop in the GIF (‘0’ by default).

        +
        -loop

        Loop GIFs indefinitely using 0 or 1 (0 by default). This +option applies only to GIF output.

        -
        -step
        -

        Set to 1 to use ax.step instead of ax.plot (‘0’ by default).

        +
        -step

        Use ax.step instead of ax.plot: 0 or 1 (0 by +default).

        -
        -

        Tip

        -

        Type in the terminal plopm -h to show these argument options.

        -
        +
        diff --git a/docs/objects.inv b/docs/objects.inv index a420425..7d3898a 100644 Binary files a/docs/objects.inv and b/docs/objects.inv differ diff --git a/docs/plopm.core.html b/docs/plopm.core.html index a69c398..e681096 100644 --- a/docs/plopm.core.html +++ b/docs/plopm.core.html @@ -87,6 +87,7 @@

        Submodules
        • plopm.core.plopm module diff --git a/docs/plopm.core.plopm.html b/docs/plopm.core.plopm.html index 2d35f58..18a4048 100644 --- a/docs/plopm.core.plopm.html +++ b/docs/plopm.core.plopm.html @@ -84,6 +84,20 @@

          plopm.core.plopm module

          Postprocessing visualization tool for OPM Flow geological models

          +
          +
          +plopm.core.plopm.check_cmdargs(cmdargs: dict[str, str]) None
          +

          Validate command-line arguments and incompatible operations.

          +
          +
          Parameters:
          +

          cmdargs – Parsed arguments returned by load_parser().

          +
          +
          Raises:
          +

          SystemExit – If an argument is invalid or an incompatible combination is requested.

          +
          +
          +
          +
          plopm.core.plopm.load_parser(argv: list[str] | None) dict
          diff --git a/docs/plopm.html b/docs/plopm.html index 0dc327c..20a720b 100644 --- a/docs/plopm.html +++ b/docs/plopm.html @@ -100,6 +100,7 @@

          Subpackagesplopm.core package
          • Submodules
            • plopm.core.plopm module diff --git a/docs/searchindex.js b/docs/searchindex.js index be81c2b..6e03fd7 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles":{"About plopm":[[0,null]],"Binary packages":[[5,"binary-packages"]],"Brew formula for macOS":[[5,"brew-formula-for-macos"]],"Caprock integrity":[[3,"caprock-integrity"]],"Colormaps":[[3,"colormaps"]],"Concept":[[6,"concept"]],"Contribute to the software":[[2,"contribute-to-the-software"]],"Contributing":[[2,null]],"Convert to VTK":[[3,"convert-to-vtk"]],"Different input files and ensembles":[[3,"different-input-files-and-ensembles"]],"Examples":[[3,null]],"Filters":[[3,"filters"]],"GIF and mask":[[3,"gif-and-mask"]],"Generic deck":[[3,"generic-deck"]],"Graphical abstract":[[3,"graphical-abstract"]],"Ground Rules":[[2,"ground-rules"]],"Hello world":[[3,"hello-world"]],"Histograms":[[3,"histograms"]],"Indices and tables":[[4,"indices-and-tables"]],"Installation":[[5,null]],"Introduction":[[6,null]],"Module contents":[[8,"module-plopm"],[9,"module-plopm.config"],[11,"module-plopm.core"],[13,"module-plopm.utils"]],"OPM Flow":[[5,"opm-flow"]],"Overview":[[6,"overview"]],"Projections and subfigures":[[3,"projections-and-subfigures"]],"Python package":[[5,"python-package"]],"Reading from csv files":[[3,"reading-from-csv-files"]],"Related":[[20,null]],"Reporting issues or problems":[[2,"reporting-issues-or-problems"]],"Rotation, translation, and zoom":[[3,"rotation-translation-and-zoom"]],"Seek support":[[2,"seek-support"]],"Source build in Linux/Windows":[[5,"source-build-in-linux-windows"]],"Source build in macOS":[[5,"source-build-in-macos"]],"Submodules":[[9,"submodules"],[11,"submodules"],[13,"submodules"]],"Subpackages":[[8,"subpackages"]],"Welcome to plopm\u2019s documentation!":[[4,null]],"ad-micp":[[20,"ad-micp"]],"expreccs":[[20,"expreccs"]],"plopm":[[1,"plopm"],[7,null]],"plopm Python API":[[1,null]],"plopm package":[[8,null]],"plopm.config package":[[9,null]],"plopm.config.config module":[[10,null]],"plopm.core package":[[11,null]],"plopm.core.plopm module":[[12,null]],"plopm.utils package":[[13,null]],"plopm.utils.initialization module":[[14,null]],"plopm.utils.mapping module":[[15,null]],"plopm.utils.readers module":[[16,null]],"plopm.utils.write_oned module":[[17,null]],"plopm.utils.write_twod module":[[18,null]],"plopm.utils.write_vtk module":[[19,null]],"pofff":[[20,"pofff"]],"pycopm":[[20,"pycopm"]],"pymm":[[20,"pymm"]],"pyopmnearwell":[[20,"pyopmnearwell"]],"pyopmspe11":[[20,"pyopmspe11"]]},"docnames":["about","api","contributing","examples","index","installation","introduction","modules","plopm","plopm.config","plopm.config.config","plopm.core","plopm.core.plopm","plopm.utils","plopm.utils.initialization","plopm.utils.mapping","plopm.utils.readers","plopm.utils.write_oned","plopm.utils.write_twod","plopm.utils.write_vtk","related"],"envversion":{"sphinx":66,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["about.rst","api.rst","contributing.rst","examples.rst","index.rst","installation.rst","introduction.rst","modules.rst","plopm.rst","plopm.config.rst","plopm.config.config.rst","plopm.core.rst","plopm.core.plopm.rst","plopm.utils.rst","plopm.utils.initialization.rst","plopm.utils.mapping.rst","plopm.utils.readers.rst","plopm.utils.write_oned.rst","plopm.utils.write_twod.rst","plopm.utils.write_vtk.rst","related.rst"],"indexentries":{"actind (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.actind",false]],"adjust (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.adjust",false]],"axgrid (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.axgrid",false]],"bandprop (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.bandprop",false]],"bounds (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.bounds",false]],"caprock (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.caprock",false]],"cbsfax (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.cbsfax",false]],"cf (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.cf",false]],"cformat (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.cformat",false]],"check_integer_conversion() (in module plopm.utils.write_vtk)":[[19,"plopm.utils.write_vtk.check_integer_conversion",false]],"clabel (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.clabel",false]],"clogthks (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.clogthks",false]],"cmaps (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.cmaps",false]],"cmdisc (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.cmdisc",false]],"cnum (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.cnum",false]],"colors (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.colors",false]],"colors_default (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.colors_default",false]],"colors_raw (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.colors_raw",false]],"compute_distance() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.compute_distance",false]],"configplopm (class in plopm.config.config)":[[10,"plopm.config.config.ConfigPlopm",false]],"csv (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.csv",false]],"csvs (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.csvs",false]],"csvsummary (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.csvsummary",false]],"cticks (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.cticks",false]],"delax (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.delax",false]],"diff (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.diff",false]],"dimensions (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.dimensions",false]],"discrete (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.discrete",false]],"distance (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.distance",false]],"do_read_variables() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.do_read_variables",false]],"dpi (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.dpi",false]],"dual (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.dual",false]],"dx (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.dx",false]],"dy (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.dy",false]],"dz (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.dz",false]],"egrid (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.egrid",false]],"ensemble (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.ensemble",false]],"faults (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.faults",false]],"fc (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.fc",false]],"fill_map_array() (in module plopm.utils.write_twod)":[[18,"plopm.utils.write_twod.fill_map_array",false]],"filter (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.filter",false]],"find_min_max() (in module plopm.utils.write_twod)":[[18,"plopm.utils.write_twod.find_min_max",false]],"format_data_array() (in module plopm.utils.write_vtk)":[[19,"plopm.utils.write_vtk.format_data_array",false]],"get_csvs() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.get_csvs",false]],"get_faults() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.get_faults",false]],"get_flags() (in module plopm.utils.write_vtk)":[[19,"plopm.utils.write_vtk.get_flags",false]],"get_histogram() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.get_histogram",false]],"get_indices() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.get_indices",false]],"get_mask() (in module plopm.utils.write_twod)":[[18,"plopm.utils.write_twod.get_mask",false]],"get_quantity() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.get_quantity",false]],"get_readers() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.get_readers",false]],"get_unit() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.get_unit",false]],"get_wells() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.get_wells",false]],"get_xycoords() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.get_xycoords",false]],"get_xzcoords() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.get_xzcoords",false]],"get_yzcoords() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.get_yzcoords",false]],"gif (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.gif",false]],"global_ (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.global_",false]],"grid (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.grid",false]],"handle_axis() (in module plopm.utils.write_twod)":[[18,"plopm.utils.write_twod.handle_axis",false]],"handle_blocks() (in module plopm.utils.initialization)":[[14,"plopm.utils.initialization.handle_blocks",false]],"handle_caprock() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.handle_caprock",false]],"handle_ensemble() (in module plopm.utils.write_oned)":[[17,"plopm.utils.write_oned.handle_ensemble",false]],"handle_filter() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.handle_filter",false]],"handle_mass() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.handle_mass",false]],"handle_saturation() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.handle_saturation",false]],"handle_slide_x() (in module plopm.utils.mapping)":[[15,"plopm.utils.mapping.handle_slide_x",false]],"handle_slide_y() (in module plopm.utils.mapping)":[[15,"plopm.utils.mapping.handle_slide_y",false]],"handle_slide_z() (in module plopm.utils.mapping)":[[15,"plopm.utils.mapping.handle_slide_z",false]],"handle_well_or_grid_or_fault() (in module plopm.utils.write_twod)":[[18,"plopm.utils.write_twod.handle_well_or_grid_or_fault",false]],"histogram (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.histogram",false]],"how (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.how",false]],"ini_cfg() (in module plopm.utils.initialization)":[[14,"plopm.utils.initialization.ini_cfg",false]],"ini_properties() (in module plopm.utils.initialization)":[[14,"plopm.utils.initialization.ini_properties",false]],"ini_summary() (in module plopm.utils.initialization)":[[14,"plopm.utils.initialization.ini_summary",false]],"init (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.init",false]],"initialize_mass() (in module plopm.utils.initialization)":[[14,"plopm.utils.initialization.initialize_mass",false]],"initialize_spatial() (in module plopm.utils.initialization)":[[14,"plopm.utils.initialization.initialize_spatial",false]],"initialize_time() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.initialize_time",false]],"interval (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.interval",false]],"is_summary() (in module plopm.utils.initialization)":[[14,"plopm.utils.initialization.is_summary",false]],"labels (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.labels",false]],"layer (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.layer",false]],"linestyle (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.linestyle",false]],"linestyle_default (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.linestyle_default",false]],"load_parser() (in module plopm.core.plopm)":[[12,"plopm.core.plopm.load_parser",false]],"loc (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.loc",false]],"log (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.log",false]],"loop (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.loop",false]],"lw (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.lw",false]],"lw_values (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.lw_values",false]],"main() (in module plopm.core.plopm)":[[12,"plopm.core.plopm.main",false]],"make_dry_deck() (in module plopm.utils.write_vtk)":[[19,"plopm.utils.write_vtk.make_dry_deck",false]],"make_maps() (in module plopm.utils.write_twod)":[[18,"plopm.utils.write_twod.make_maps",false]],"make_plots() (in module plopm.utils.write_oned)":[[17,"plopm.utils.write_oned.make_plots",false]],"make_vtks() (in module plopm.utils.write_vtk)":[[19,"plopm.utils.write_vtk.make_vtks",false]],"map_xycoords() (in module plopm.utils.mapping)":[[15,"plopm.utils.mapping.map_xycoords",false]],"map_xzcoords() (in module plopm.utils.mapping)":[[15,"plopm.utils.mapping.map_xzcoords",false]],"map_yzcoords() (in module plopm.utils.mapping)":[[15,"plopm.utils.mapping.map_yzcoords",false]],"mapit() (in module plopm.utils.write_twod)":[[18,"plopm.utils.write_twod.mapit",false]],"mapits() (in module plopm.utils.write_twod)":[[18,"plopm.utils.write_twod.mapits",false]],"mask (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.mask",false]],"maskthr (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.maskthr",false]],"mass (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.mass",false]],"module":[[8,"module-plopm",false],[9,"module-plopm.config",false],[10,"module-plopm.config.config",false],[11,"module-plopm.core",false],[12,"module-plopm.core.plopm",false],[13,"module-plopm.utils",false],[14,"module-plopm.utils.initialization",false],[15,"module-plopm.utils.mapping",false],[16,"module-plopm.utils.readers",false],[17,"module-plopm.utils.write_oned",false],[18,"module-plopm.utils.write_twod",false],[19,"module-plopm.utils.write_vtk",false]],"name (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.name",false]],"namens (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.namens",false]],"names (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.names",false]],"ncolor (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.ncolor",false]],"ntot (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.ntot",false]],"numc (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.numc",false]],"nx (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.nx",false]],"nxyz (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.nxyz",false]],"ny (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.ny",false]],"nz (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.nz",false]],"operate() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.operate",false]],"opmtovtk() (in module plopm.utils.write_vtk)":[[19,"plopm.utils.write_vtk.opmtovtk",false]],"output (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.output",false]],"plopm":[[8,"module-plopm",false]],"plopm.config":[[9,"module-plopm.config",false]],"plopm.config.config":[[10,"module-plopm.config.config",false]],"plopm.core":[[11,"module-plopm.core",false]],"plopm.core.plopm":[[12,"module-plopm.core.plopm",false]],"plopm.utils":[[13,"module-plopm.utils",false]],"plopm.utils.initialization":[[14,"module-plopm.utils.initialization",false]],"plopm.utils.mapping":[[15,"module-plopm.utils.mapping",false]],"plopm.utils.readers":[[16,"module-plopm.utils.readers",false]],"plopm.utils.write_oned":[[17,"module-plopm.utils.write_oned",false]],"plopm.utils.write_twod":[[18,"module-plopm.utils.write_twod",false]],"plopm.utils.write_vtk":[[19,"module-plopm.utils.write_vtk",false]],"png (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.png",false]],"porv (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.porv",false]],"prepare_maps() (in module plopm.utils.write_twod)":[[18,"plopm.utils.write_twod.prepare_maps",false]],"printv (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.printv",false]],"project() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.project",false]],"pv (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.pv",false]],"read_oned() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.read_oned",false]],"readdata (class in plopm.config.config)":[[10,"plopm.config.config.ReadData",false]],"resolve_variable() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.resolve_variable",false]],"restart (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.restart",false]],"restart (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.restart",false]],"rm (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.rm",false]],"rotate (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.rotate",false]],"rotate_grid() (in module plopm.utils.mapping)":[[15,"plopm.utils.mapping.rotate_grid",false]],"rst_range (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.rst_range",false]],"save (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.save",false]],"scale (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.scale",false]],"sensor (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.sensor",false]],"set_deck_name() (in module plopm.utils.write_twod)":[[18,"plopm.utils.write_twod.set_deck_name",false]],"size (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.size",false]],"slide (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.slide",false]],"smass (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.smass",false]],"step (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.step",false]],"stress (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.stress",false]],"subfigs (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.subfigs",false]],"summary (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.summary",false]],"suptitle (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.suptitle",false]],"time (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.time",false]],"title (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.title",false]],"tnrst (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.tnrst",false]],"translate (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.translate",false]],"tunits (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.tunits",false]],"type_of_mass() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.type_of_mass",false]],"units (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.units",false]],"unrst (plopm.config.config.readdata attribute)":[[10,"plopm.config.config.ReadData.unrst",false]],"vmax (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.vmax",false]],"vmin (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.vmin",false]],"vrs (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.vrs",false]],"vsum (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.vsum",false]],"vtk (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.vtk",false]],"vtkformat (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.vtkformat",false]],"vtknames (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.vtknames",false]],"warn_once() (in module plopm.utils.write_vtk)":[[19,"plopm.utils.write_vtk.warn_once",false]],"wells (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.wells",false]],"where_at() (in module plopm.utils.readers)":[[16,"plopm.utils.readers.where_at",false]],"whow (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.whow",false]],"writepvd() (in module plopm.utils.write_vtk)":[[19,"plopm.utils.write_vtk.writepvd",false]],"xformat (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.xformat",false]],"xlabel (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.xlabel",false]],"xlim (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.xlim",false]],"xlnum (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.xlnum",false]],"xlog (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.xlog",false]],"xmass (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.xmass",false]],"xskl (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.xskl",false]],"xunit (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.xunit",false]],"xunits (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.xunits",false]],"yformat (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.yformat",false]],"ylabel (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.ylabel",false]],"ylim (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.ylim",false]],"ylnum (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.ylnum",false]],"ylog (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.ylog",false]],"yskl (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.yskl",false]],"yunit (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.yunit",false]],"yunits (plopm.config.config.configplopm attribute)":[[10,"plopm.config.config.ConfigPlopm.yunits",false]]},"objects":{"":[[8,0,0,"-","plopm"]],"plopm":[[9,0,0,"-","config"],[11,0,0,"-","core"],[13,0,0,"-","utils"]],"plopm.config":[[10,0,0,"-","config"]],"plopm.config.config":[[10,1,1,"","ConfigPlopm"],[10,1,1,"","ReadData"]],"plopm.config.config.ConfigPlopm":[[10,2,1,"","adjust"],[10,2,1,"","axgrid"],[10,2,1,"","bandprop"],[10,2,1,"","bounds"],[10,2,1,"","caprock"],[10,2,1,"","cbsfax"],[10,2,1,"","cf"],[10,2,1,"","cformat"],[10,2,1,"","clabel"],[10,2,1,"","clogthks"],[10,2,1,"","cmaps"],[10,2,1,"","cmdisc"],[10,2,1,"","cnum"],[10,2,1,"","colors"],[10,2,1,"","colors_default"],[10,2,1,"","colors_raw"],[10,2,1,"","csv"],[10,2,1,"","csvs"],[10,2,1,"","csvsummary"],[10,2,1,"","cticks"],[10,2,1,"","delax"],[10,2,1,"","diff"],[10,2,1,"","dimensions"],[10,2,1,"","discrete"],[10,2,1,"","distance"],[10,2,1,"","dpi"],[10,2,1,"","dual"],[10,2,1,"","ensemble"],[10,2,1,"","faults"],[10,2,1,"","fc"],[10,2,1,"","filter"],[10,2,1,"","gif"],[10,2,1,"","global_"],[10,2,1,"","grid"],[10,2,1,"","histogram"],[10,2,1,"","how"],[10,2,1,"","interval"],[10,2,1,"","labels"],[10,2,1,"","layer"],[10,2,1,"","linestyle"],[10,2,1,"","linestyle_default"],[10,2,1,"","loc"],[10,2,1,"","log"],[10,2,1,"","loop"],[10,2,1,"","lw"],[10,2,1,"","lw_values"],[10,2,1,"","mask"],[10,2,1,"","maskthr"],[10,2,1,"","mass"],[10,2,1,"","name"],[10,2,1,"","namens"],[10,2,1,"","names"],[10,2,1,"","ncolor"],[10,2,1,"","numc"],[10,2,1,"","output"],[10,2,1,"","png"],[10,2,1,"","printv"],[10,2,1,"","restart"],[10,2,1,"","rm"],[10,2,1,"","rotate"],[10,2,1,"","rst_range"],[10,2,1,"","save"],[10,2,1,"","scale"],[10,2,1,"","sensor"],[10,2,1,"","size"],[10,2,1,"","slide"],[10,2,1,"","smass"],[10,2,1,"","step"],[10,2,1,"","stress"],[10,2,1,"","subfigs"],[10,2,1,"","summary"],[10,2,1,"","suptitle"],[10,2,1,"","time"],[10,2,1,"","title"],[10,2,1,"","translate"],[10,2,1,"","tunits"],[10,2,1,"","units"],[10,2,1,"","vmax"],[10,2,1,"","vmin"],[10,2,1,"","vrs"],[10,2,1,"","vsum"],[10,2,1,"","vtk"],[10,2,1,"","vtkformat"],[10,2,1,"","vtknames"],[10,2,1,"","wells"],[10,2,1,"","whow"],[10,2,1,"","xformat"],[10,2,1,"","xlabel"],[10,2,1,"","xlim"],[10,2,1,"","xlnum"],[10,2,1,"","xlog"],[10,2,1,"","xmass"],[10,2,1,"","xskl"],[10,2,1,"","xunit"],[10,2,1,"","xunits"],[10,2,1,"","yformat"],[10,2,1,"","ylabel"],[10,2,1,"","ylim"],[10,2,1,"","ylnum"],[10,2,1,"","ylog"],[10,2,1,"","yskl"],[10,2,1,"","yunit"],[10,2,1,"","yunits"]],"plopm.config.config.ReadData":[[10,2,1,"","actind"],[10,2,1,"","dx"],[10,2,1,"","dy"],[10,2,1,"","dz"],[10,2,1,"","egrid"],[10,2,1,"","init"],[10,2,1,"","ntot"],[10,2,1,"","nx"],[10,2,1,"","nxyz"],[10,2,1,"","ny"],[10,2,1,"","nz"],[10,2,1,"","porv"],[10,2,1,"","pv"],[10,2,1,"","restart"],[10,2,1,"","tnrst"],[10,2,1,"","unrst"]],"plopm.core":[[12,0,0,"-","plopm"]],"plopm.core.plopm":[[12,3,1,"","load_parser"],[12,3,1,"","main"]],"plopm.utils":[[14,0,0,"-","initialization"],[15,0,0,"-","mapping"],[16,0,0,"-","readers"],[17,0,0,"-","write_oned"],[18,0,0,"-","write_twod"],[19,0,0,"-","write_vtk"]],"plopm.utils.initialization":[[14,3,1,"","handle_blocks"],[14,3,1,"","ini_cfg"],[14,3,1,"","ini_properties"],[14,3,1,"","ini_summary"],[14,3,1,"","initialize_mass"],[14,3,1,"","initialize_spatial"],[14,3,1,"","is_summary"]],"plopm.utils.mapping":[[15,3,1,"","handle_slide_x"],[15,3,1,"","handle_slide_y"],[15,3,1,"","handle_slide_z"],[15,3,1,"","map_xycoords"],[15,3,1,"","map_xzcoords"],[15,3,1,"","map_yzcoords"],[15,3,1,"","rotate_grid"]],"plopm.utils.readers":[[16,3,1,"","compute_distance"],[16,3,1,"","do_read_variables"],[16,3,1,"","get_csvs"],[16,3,1,"","get_faults"],[16,3,1,"","get_histogram"],[16,3,1,"","get_indices"],[16,3,1,"","get_quantity"],[16,3,1,"","get_readers"],[16,3,1,"","get_unit"],[16,3,1,"","get_wells"],[16,3,1,"","get_xycoords"],[16,3,1,"","get_xzcoords"],[16,3,1,"","get_yzcoords"],[16,3,1,"","handle_caprock"],[16,3,1,"","handle_filter"],[16,3,1,"","handle_mass"],[16,3,1,"","handle_saturation"],[16,3,1,"","initialize_time"],[16,3,1,"","operate"],[16,3,1,"","project"],[16,3,1,"","read_oned"],[16,3,1,"","resolve_variable"],[16,3,1,"","type_of_mass"],[16,3,1,"","where_at"]],"plopm.utils.write_oned":[[17,3,1,"","handle_ensemble"],[17,3,1,"","make_plots"]],"plopm.utils.write_twod":[[18,3,1,"","fill_map_array"],[18,3,1,"","find_min_max"],[18,3,1,"","get_mask"],[18,3,1,"","handle_axis"],[18,3,1,"","handle_well_or_grid_or_fault"],[18,3,1,"","make_maps"],[18,3,1,"","mapit"],[18,3,1,"","mapits"],[18,3,1,"","prepare_maps"],[18,3,1,"","set_deck_name"]],"plopm.utils.write_vtk":[[19,3,1,"","check_integer_conversion"],[19,3,1,"","format_data_array"],[19,3,1,"","get_flags"],[19,3,1,"","make_dry_deck"],[19,3,1,"","make_vtks"],[19,3,1,"","opmtovtk"],[19,3,1,"","warn_once"],[19,3,1,"","writepvd"]]},"objnames":{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","function","Python function"]},"objtypes":{"0":"py:module","1":"py:class","2":"py:attribute","3":"py:function"},"terms":{"0f":3,"0pressur":[3,6],"1e":[3,6],"1e3":3,"1e6":3,"1f":[3,6],"2d":[6,15,16,18],"2e":6,"2f":[3,6],"3d":6,"51c":3,"5e":3,"7274b3":3,"8mish":3,"A":20,"About":4,"An":[2,20],"As":3,"Below":[3,20],"By":[3,6],"For":[0,3,5,6,14,18],"From":[3,16],"Here":3,"If":[3,5,6],"In":[2,3,6],"It":3,"No":3,"The":[1,2,3,5,6],"Then":[3,5],"This":[3,6],"To":[3,5,6],"We":2,"While":5,"You":[3,5],"_2":3,"_build":2,"_of_input_fil":6,"_scalarmapp":18,"_z":3,"a8d8e3":3,"abel":6,"abil":3,"abl":6,"abov":[3,6],"abstract":4,"accept":2,"accord":14,"acecolor":6,"achiav":3,"achiev":[3,6],"actind":[9,10],"action":[2,5],"activ":[3,5],"ad":4,"add":[3,5],"addit":[3,6],"adjust":[9,10],"ahiev":3,"align":6,"allow":[3,6],"along":[3,6],"alpha":6,"also":[2,3,5,6],"altern":2,"anaconda":5,"analys":2,"analysi":2,"andprop":6,"ani":[2,3,6,18],"anoth":5,"answer":2,"api":4,"appli":[3,16],"applic":3,"approach":[0,2,3,6],"apt":5,"argument":[3,6,12,14],"argv":12,"arithmet":[3,6],"artist":18,"ascii":19,"ask":6,"askthr":6,"associ":16,"assum":3,"auto":2,"avaiabl":6,"avail":[3,5],"ave":6,"averag":[3,6],"ax":6,"axe":[3,17],"axesdivid":18,"axgrid":[3,9,10],"axi":[3,6,14,16,18],"axiss":[17,18],"b":[3,6],"b6c406":3,"background":[3,6],"bak":3,"band":[6,17],"bandprop":[6,9,10],"bar":[3,6],"base":[3,6,10,20],"basetemp":2,"befor":2,"benchmark":[3,20],"best":6,"beyond":3,"big":3,"bin":[3,5,6],"binari":[2,4],"black":[2,3,6],"block":14,"bool":[10,14,16,18,19],"border":6,"bottom":6,"bound":[3,6,9,10],"boundari":6,"branch":5,"brew":4,"bsfax":6,"build":[2,3,4,6],"build_opm_mpi":5,"built":5,"bwpr":3,"c":[3,6],"calcit":20,"call":3,"can":[2,3,5,6],"caprock":[4,6,9,10,16,19],"caprock_list":16,"case":[3,6,16,19],"cb":18,"cbsfax":[3,9,10],"ccs":3,"cd":5,"cddb6e":3,"cell":[3,6],"center":[0,3,6],"centimet":6,"central":10,"cet_cwr":3,"cet_glasbey_bw":3,"cf":[9,10],"cfd":20,"cfg":[14,15,16,17,18],"cformat":[3,9,10],"challeng":0,"chang":[2,3],"changer":3,"changu":3,"check":[2,5,14,20],"check_integer_convers":[8,13,19],"checker":2,"checkout":5,"ci":[2,5],"clabel":[3,9,10],"class":10,"cli":12,"clogthk":[9,10],"clone":[3,5],"cm":[5,6],"cmake":5,"cmap":[9,10],"cmax":18,"cmdarg":14,"cmdisc":[9,10],"cmin":18,"cnum":[3,9,10],"co":3,"co2":[3,6,20],"co2_d":16,"co2_g":16,"co2m":[3,6],"code":[2,5,8,9],"coeff":6,"collabor":2,"colon":6,"color":[3,6,9,10],"colorbar":[3,6,18],"colorcet":3,"colormap":[4,6],"colors_default":[9,10],"colors_raw":[9,10],"column":[3,6],"com":[3,5,6],"combin":3,"comma":[3,6,14],"command":[3,5],"commit":2,"common":[3,5],"compar":3,"comparison":3,"compon":3,"comput":[3,6,16,17],"compute_dist":[8,13,16],"concept":4,"condit":[3,6],"config":[1,7,8],"configplopm":[8,9,10,14,15,16,17,18],"configur":[3,10,14],"connect":3,"consid":[3,6],"contain":[1,6],"content":[1,2,4,7],"contribut":[0,4,5],"convers":19,"convert":[4,5,6],"coordin":[3,16,18],"copi":[2,5],"core":[1,7,8],"corner":3,"correspond":[3,6],"cov":2,"cp":3,"cpus":3,"creat":[2,3,5,17,18,19],"csp":20,"cssr":[0,3,5,6],"csv":[4,6,9,10,16],"csvs":[3,9,10],"csvsummari":[9,10],"ctick":[3,9,10],"cubehelix":3,"curl":3,"current":[5,6],"current_directori":5,"curv":3,"cvs":16,"d":[3,6],"dash":3,"data":[3,16],"dataarray":19,"dataclass":[1,10,14],"date":[3,6],"day":[3,6],"dcmake_build_typ":5,"decim":6,"deck":[4,16,18,19],"deck_flow_data":3,"deckd":18,"dedic":5,"default":[3,6],"defcol":18,"defin":[3,6,14],"definit":3,"delax":[3,9,10],"delet":[3,6],"depend":[2,5,6],"describ":[2,3,6],"dev":[2,5],"develop":5,"dict":[12,14],"diff":[3,9,10],"diffa":18,"differ":[1,4,6],"dim":6,"dimens":[3,6,9,10],"dimension":17,"direct":[3,6],"discret":[6,9,10],"dism":6,"disperc":3,"dissa":3,"dissolv":3,"distanc":[6,9,10],"distribut":[3,6],"divid":18,"dname":19,"do_read_vari":[8,13,16],"doc":2,"docs_al":3,"document":[2,3,5,6],"done":5,"dot":[3,6],"download":[3,5],"dpi":[3,9,10],"drainag":3,"dri":[3,19],"dual":[9,10],"duse_mpi":5,"dvipng":5,"dwith_ndebug":5,"dx":[9,10],"dy":[9,10],"dynam":[3,6,20],"dz":[6,9,10],"e":[3,5,6],"eclfil":[10,16],"edg":5,"edgecolor":6,"egrid":[3,5,9,10],"either":5,"elax":6,"els":5,"em":20,"email":2,"emov":6,"empti":[3,6],"enabl":3,"end":3,"ensambl":6,"ensembl":[4,6,9,10],"enterpris":5,"entri":[3,6],"environ":5,"error":6,"erst":[10,16],"esf":6,"estim":3,"ex":3,"exampl":[2,4],"example0":3,"example3_form":3,"except":6,"execut":[1,2,3,5,6,12],"exist":5,"expand":3,"exponenti":6,"exprecc":4,"extend":[2,3],"extens":6,"extinf":18,"extra":5,"f":[3,6],"faci":3,"factori":10,"fals":[10,18],"familiar":[2,3],"fault":[3,6,9,10,16],"fc":[9,10],"fc035a":3,"featur":0,"fewer":3,"fffa86":3,"fgip":[3,6],"fgipm":6,"fgmip":3,"fi":5,"field":[3,6],"fig":18,"figur":[3,5,6,17,18],"file":[2,4,5,6,10,14,16,19],"fill_between":6,"fill_map_array":[8,13,18],"filter":[4,6,9,10,16,19],"filterss":19,"final":6,"find":18,"find_min_max":[8,13,18],"fipnum":[3,6],"first":[3,6],"fix":2,"flag":[3,6,14,19],"flexibl":6,"float":[3,10,14,16,17,18,19],"float16":[3,6],"float32":[3,6],"float64":[3,6,16],"flore":3,"flow":[2,3,4,6,12,16,19,20],"fluid":6,"fluidflow":20,"fluxnum":6,"folder":[1,2,3,5,6],"follow":[3,5,6],"font":[3,5,6],"fork":[0,2],"format":[2,3,5,6,19],"format_data_array":[8,13,19],"formula":4,"forth":3,"four":6,"fraction":3,"frame":6,"framework":[6,20],"front":3,"full":6,"fullfil":6,"function":[3,6,12,14,15,16,17,18],"fund":0,"futur":3,"fwcdm":6,"g":[3,5,6],"game":3,"gas":[3,6],"gasm":6,"general":3,"generat":[2,3,6,18,19],"generic":4,"geolog":[6,12,15,20],"get":[2,3,5,16,18],"get_csv":[8,13,16],"get_fault":[8,13,16],"get_flag":[8,13,19],"get_histogram":[8,13,16],"get_indic":[8,13,16],"get_mask":[8,13,18],"get_quant":[8,13,16],"get_read":[8,13,16],"get_unit":[8,13,16],"get_wel":[8,13,16],"get_xycoord":[8,13,16],"get_xzcoord":[8,13,16],"get_yzcoord":[8,13,16],"gif":[4,6,9,10,16,18,19],"gigatonn":0,"git":[3,5],"github":[2,3,5,6],"githubusercont":3,"give":3,"given":[3,6,14,16,19],"global":[3,6],"global_":[9,10],"grade":6,"graphic":4,"grid":[3,5,6,9,10,15,16,19],"ground":4,"gui":3,"h":[3,6],"h2o":3,"h2o_l":16,"h2o_v":16,"h2om":6,"handl":[1,14,16,18],"handle_axi":[8,13,18],"handle_block":[8,13,14],"handle_caprock":[8,13,16],"handle_ensembl":[8,13,17],"handle_filt":[8,13,16],"handle_mass":[8,13,16],"handle_satur":[8,13,16],"handle_slide_i":[8,13,15],"handle_slide_x":[8,13,15],"handle_slide_z":[8,13,15],"handle_well_or_grid_or_fault":[8,13,18],"harmon":6,"hat":5,"head":3,"hello":4,"help":[2,3,5],"hex":3,"higher":3,"histogram":[4,6,9,10,16],"histori":20,"home":6,"homebrew":5,"host":6,"hour":6,"howev":3,"hpc":0,"html":2,"https":[3,5,6],"hysteresi":3,"iff":6,"ignor":2,"ilter":6,"ilustr":3,"imag":[18,20],"imbibit":3,"implement":6,"import":2,"inact":6,"inch":6,"includ":[3,5],"increas":[3,6],"index":4,"index_i":6,"index_k":3,"indic":[6,16],"induc":20,"inferno":3,"infin":6,"inform":3,"ini_cfg":[8,13,14],"ini_properti":[8,13,14],"ini_summari":[8,13,14],"init":[3,5,9,10,16],"initi":[3,6,8,13],"initialize_mass":[8,13,14],"initialize_spati":[8,13,14],"initialize_tim":[8,13,16],"inj":3,"inject":3,"input":[4,6,14,16],"insid":[3,5],"inspect":6,"instal":[2,3,4],"instead":6,"instruct":5,"int":[10,15,16,18,19],"int16":6,"int32":6,"int64":6,"int8":6,"integ":19,"integr":[4,6,16],"intens":16,"interact":3,"interest":[3,5,20],"interim":5,"interval":[3,9,10],"introduct":4,"is_summari":[8,13,14],"isgif":16,"issu":[0,4],"istanc":6,"istogram":6,"iter":18,"j":[6,14,16],"j5":5,"jet":[3,6],"just":3,"k":[3,6,14,16,18,19],"key_low":16,"key_up":16,"kg":3,"kilogram":3,"kilomet":6,"kiloton":3,"kilotonn":3,"km":[3,6],"krg":[3,6],"krg3h":3,"krog":[3,6],"krow":[3,6],"krw":[3,6],"kt":3,"l":[3,5,6],"label":[3,6,9,10],"larg":3,"larger":3,"last":[3,6],"lateral":[3,6],"latex":5,"layer":[3,9,10],"lead":3,"leakag":20,"least":[3,6],"left":[3,6],"legend":[3,6],"let":3,"librari":5,"like":3,"limipr":[3,6],"limit":[3,6],"line":[2,3,5,6],"linestyl":[6,9,10],"linestyle_default":[9,10],"lint":5,"linux":4,"liqm":6,"liquid":3,"list":[10,12,15,16,18,19],"literatur":3,"lnum":6,"load":[16,19],"load_pars":[8,11,12],"lobal":6,"loc":[3,9,10],"local":[2,3],"locat":[1,3,6,15,16],"log":[3,6,9,10],"lognorm":[3,6],"logthk":6,"look":[2,3],"loop":[3,6,9,10],"lower":[3,6],"lw":[3,6,9,10],"lw_valu":[9,10],"lwelult":18,"m":[3,5,6],"machin":5,"maco":4,"macport":5,"mactex":5,"main":[1,2,3,8,11,12],"maintain":2,"make":[2,3,5,6],"make_dry_deck":[8,13,19],"make_map":[8,13,18],"make_plot":[8,13,17],"make_vtk":[8,13,19],"mamba":5,"manag":5,"mantain":2,"manual":3,"map":[3,6,8,13,14,18],"map_index":18,"map_xycoord":[8,13,15],"map_xzcoord":[8,13,15],"map_yzcoord":[8,13,15],"mapit":[8,13,18],"mask":[4,6,9,10,18],"maska":18,"maskthr":[9,10],"mass":[3,6,9,10,14,16,19],"mass_al":[16,19],"master":5,"match":20,"matplotlib":[3,6],"max":[3,6,18],"maximum":6,"mean":[3,6,17],"merg":2,"mesh":16,"messag":19,"meter":6,"method":[1,6,16,18,19],"micp":4,"microbi":20,"microsystem":20,"middl":[3,6],"might":[2,5,20],"milimet":6,"milli":6,"million":3,"min":[6,18],"miniforg":5,"minim":19,"minimum":6,"minut":6,"miss":2,"mkdir":5,"mm":6,"mode":3,"model":[3,6,12,15,20],"modifi":5,"modul":[1,4,7,20],"motiv":3,"mpi":[3,5],"mpirun":3,"mskl":14,"mt":6,"multipli":3,"must":3,"mx":[15,18],"mypi":2,"n":[2,6,15,16,18],"n_s":18,"name":[3,6,9,10,16,18,19],"namen":[9,10],"nan":3,"ncolor":[9,10],"ndarray":[10,15,16,17,18,19],"near":20,"need":[2,3,5,6,14],"negat":3,"new":[0,2,3],"nice":[2,6],"non":3,"none":[10,12,14,15,17,18,19],"norm":[3,6],"normal":6,"norn":3,"norne_atw2013":3,"norne_wel":3,"norne_wells_glob":3,"notat":6,"note":6,"now":[3,6],"np":3,"nrst":16,"nsembl":6,"nterval":6,"ntot":[9,10,16],"num":6,"number":[0,3,6],"numc":[9,10],"nwelult":[15,18],"nx":[9,10,16],"nxyz":[9,10],"ny":[9,10,16],"nz":[9,10,16],"o":[3,6],"object":[10,14],"objepr":[3,6],"obtain":[3,15],"oc":6,"og":6,"oil":16,"onc":[3,19],"one":[3,6,16,17],"onli":[3,6],"onlin":5,"oop":6,"open":[3,20],"oper":[6,8,13,16],"opm":[2,3,4,6,10,12,16,19,20],"opm1":3,"opm2":3,"opm3":3,"opm4":3,"opmtovtk":[8,13,19],"optim":3,"option":[3,5,6],"order":3,"org":5,"origin":3,"original_loc":18,"otat":6,"otherwis":6,"output":[3,5,6,9,10,16,19],"outsid":[3,6],"overpr":[3,6],"overview":[3,4],"ow":6,"p":[3,6],"p0":3,"packag":[1,2,4,7],"page":[2,4],"paper":6,"paraview":[3,6],"pars":16,"part":6,"pascal":3,"pass":6,"path":[3,6],"pcfact":6,"pcog":[3,6],"pcog5":3,"pcolormesh":[6,18],"pcow":[3,6],"pcwg":[3,6],"per":6,"perfor":3,"perform":19,"permeabl":[3,6],"permx":[3,6],"permz":[3,6],"phase":3,"pi":6,"pip":[2,3,5],"place":[3,6],"plane":[3,6],"platform":5,"pleas":[0,2],"plopm":[2,3,5,6],"plot":[1,3,6,14,17],"png":[3,6,9,10],"pngs":[6,17,18],"pofff":4,"point":3,"popul":19,"pore":[3,6],"poro":[3,6],"poros":[3,6],"porv":[6,9,10,16],"posit":6,"possibl":[2,3],"postprocess":[6,12],"precipit":20,"prefer":2,"prepare_map":[8,13,18],"prerequisit":5,"present":[3,6],"pressur":[3,6],"previous":[2,3,5],"print":[6,19],"printv":[3,9,10],"problem":4,"process":15,"project":[0,4,5,6,8,13,16,20],"properti":[3,6,14,15,19],"provid":[3,6],"prs":2,"pull":[0,2],"puor":3,"push":2,"pushd":2,"pv":[6,9,10],"pvd":[3,19],"pvmean":6,"pwd":5,"py":3,"py314":2,"pycopm":[4,5],"pylint":2,"pymm":4,"pyopmnearwel":[3,4],"pyopmspe11":[3,4],"pyplot":6,"pytest":2,"python":[2,3,4,20],"python3":5,"qskl":16,"quan":[15,16,18,19],"quan1":16,"quantiti":[3,6,14,16,18],"quick":6,"r":[2,3,5,6],"r1_cart_10m":3,"r4_cp_8m":3,"rais":[0,2],"random":3,"rang":[3,6],"ranslat":6,"rate":3,"ratio":3,"raw":3,"reach":3,"read":[4,10,15,16,18,19],"read_on":[8,13,16],"readdata":[8,9,10,15,16,18,19],"reader":[8,13],"recent":5,"recommend":5,"red":5,"reduc":3,"ref":3,"region":[3,20],"relat":[3,4,6,16],"releas":5,"reli":3,"remedi":20,"remov":[3,6,19],"replac":2,"repo":[2,5],"report":[3,4],"repositori":[2,5],"request":[0,2,16],"requier":15,"requir":[2,3,5,16],"requiri":14,"resdata":3,"reservoir":[6,20],"residu":3,"resolve_vari":[8,13,16],"resourc":0,"respect":3,"restar":3,"restart":[3,6,9,10,16,19],"result":[3,6],"retriev":18,"return":16,"review":2,"rgb":3,"rgmds":3,"rid":6,"right":[3,6],"rigth":3,"rintv":6,"rise":2,"riski":19,"rm":[3,9,10],"rock":3,"rotat":[4,6,9,10,15],"rotate_grid":[8,13,15],"routin":3,"rporv":[3,6],"rptrst":[3,6],"rst_rang":[9,10],"rsts":6,"ruff":2,"rule":4,"run":[2,3,5,19],"s":[3,5,6],"sampl":3,"satnum":[3,6],"satur":[3,6,16],"save":[3,9,10,19],"scale":[3,6,9,10],"schedul":3,"script":[1,2,3,5],"search":4,"second":[3,6],"section":3,"sed":3,"see":[2,3,5],"seek":4,"seen":3,"select":[3,6,15],"send":2,"sensor":[3,6,9,10],"separ":[3,6],"seri":6,"set":[3,6,14,19],"set_deck_nam":[8,13,18],"setuptool":5,"sgas":[3,6],"sh":[3,5],"show":[3,6],"shown":3,"simpli":[3,5],"simplifi":6,"simul":[0,3,5,6,15,16,20],"sinc":3,"singl":[2,3,6],"site":20,"six":2,"size":[3,6,9,10],"skip":[5,18],"skl":[16,19],"slide":[3,6,9,10,15],"slide_index":18,"sliden":18,"slidet":18,"smass":[9,10],"softwar":[0,4],"solid":[3,6],"solut":3,"soon":2,"sourc":[3,4,20],"space":[3,6],"spatial":[3,6,14,18],"spe10_model2":3,"spe11":20,"spe11_opm1":3,"spe11_opm2":3,"spe11_opm3":3,"spe11_opm4":3,"spe11b":[3,6],"spe11b_higher_r":3,"spe11b_larger_inj":3,"spe11b_spatial_map_250i":3,"spe11b_spatial_map_500i":3,"spe11b_spatial_map_plopmi":3,"spe11b_time_seri":3,"spe11b_tun":6,"spe11c":3,"spe11c_0005":3,"special":[3,6],"specif":5,"specifi":[3,6],"spectral":3,"split":14,"spring":3,"squash":2,"src":2,"start":6,"static":[2,6],"std":3,"step":[2,3,5,6,9,10],"storag":[0,20],"store":3,"str":[10,12,14,15,16,17,18,19],"stress":[3,6,9,10,16,19],"structur":10,"studi":20,"style":3,"sub1":18,"subfig":[3,9,10],"subfigur":[4,6],"submodul":[1,7,8],"subpackag":[1,4,7],"subplot":[3,6],"substract":6,"subsurfac":0,"subsystem":5,"succed":5,"succeed":[2,3],"sudo":5,"sum":6,"summari":[3,6,9,10,14,16],"summit":3,"super":5,"support":[3,4,5,6],"suptitl":[3,9,10],"surfac":6,"sustain":0,"sv":6,"t":[3,6,18],"tab20c_r":3,"tabl":3,"tag":5,"tailor":20,"tap":5,"target":2,"target_dtyp":19,"temp":3,"temperatur":3,"tep":6,"term":2,"termin":[3,5,6],"test":[2,3,5],"test_generic_deck":3,"test_output":2,"texliv":5,"text":6,"thick":6,"three":[3,6],"threshold":6,"tick":[3,6],"time":[3,6,9,10,16],"titl":[3,6,9,10,18],"tkformat":6,"tkname":6,"tnrst":[9,10,19],"toml":3,"tool":[2,3,5,6,12,20],"top":3,"total":3,"tran":6,"translat":[4,6,9,10],"tress":6,"tri":[2,3,5],"true":[3,6,10],"trust":5,"tug":5,"tunit":[3,9,10,16],"tupl":[10,14,15,16,17,18,19],"turbo":3,"turn":5,"tutori":2,"two":[1,3,6],"txt":[2,5],"type":[3,5,6,16,19],"type_of_mass":[8,13,16],"u":3,"ubfig":6,"ubuntu":[2,5],"uint16":[3,6],"uint32":6,"uint64":6,"uint8":6,"unit":[3,6,9,10,14,16,18],"unless":6,"unrst":[3,5,9,10,16],"upgrad":5,"upper":[3,6],"uptitl":6,"us":3,"use":[0,1,2,3,5,6,16,18,19,20],"use_csv":18,"user":[2,3,5,6],"util":[1,7,8],"v":[3,6],"v2026":5,"valu":[3,6,14,16,19],"vanimo":3,"vapm":6,"var":[15,16,18,19],"variabl":[3,6,14,16,17,19],"vec":16,"vect":18,"vector":[3,6,16],"venv":5,"version":[2,3,5,8,9],"via":[3,5],"view":3,"virtual":5,"visit":2,"visual":[3,6,12],"vmax":[9,10,16],"vmin":[9,10,16],"volum":[3,6],"vplopm":5,"vrs":[9,10,16,19],"vsum":[9,10],"vtk":[4,5,6,9,10,16,19],"vtkformat":[3,9,10,19],"vtkformat_list":19,"vtkname":[9,10,19],"vtks":[3,6,19],"vtu":3,"w":[3,6],"warn":19,"warn_onc":[8,13,19],"warning_key":19,"websit":3,"week":[3,6],"weight":6,"welcom":[0,2],"well":[2,3,6,9,10,16,20],"welult":[15,18],"wheel":5,"where_at":[8,13,16],"white":[3,6],"whole":6,"whow":[9,10],"width":[3,6],"will":[2,3],"window":4,"without":3,"work":[2,5],"world":4,"write":[3,5,6,17,18,19],"write_on":[8,13],"write_twod":[8,13],"write_vtk":[8,13],"writepvd":[8,13,19],"written":[3,6],"www":5,"x":[3,6,16],"x_g_h2o":16,"x_l_co2":16,"x_n":3,"xc":[15,18],"xco2l":[3,6],"xco2v":6,"xformat":[3,9,10],"xgrid":6,"xh2ol":6,"xh2ov":6,"xlabel":[9,10],"xlim":[9,10],"xlnum":[3,9,10],"xlog":[9,10],"xmass":[9,10],"xname":18,"xskl":[9,10],"xunit":[3,9,10],"xy":[3,6,15,16],"xz":[3,6,15,16],"y":[3,5,6],"yc":[15,18],"year":[3,6],"yformat":[3,9,10],"ylabel":[3,9,10],"ylim":[9,10],"ylnum":[9,10],"ylog":[9,10],"yml":[2,5],"yname":18,"yskl":[9,10],"yunit":[3,9,10],"yz":[15,16],"z":[3,6],"z_n":3,"zip":3,"zoom":4},"titles":["About plopm","plopm Python API","Contributing","Examples","Welcome to plopm\u2019s documentation!","Installation","Introduction","plopm","plopm package","plopm.config package","plopm.config.config module","plopm.core package","plopm.core.plopm module","plopm.utils package","plopm.utils.initialization module","plopm.utils.mapping module","plopm.utils.readers module","plopm.utils.write_oned module","plopm.utils.write_twod module","plopm.utils.write_vtk module","Related"],"titleterms":{"About":0,"abstract":3,"ad":20,"api":1,"binari":5,"brew":5,"build":5,"caprock":3,"colormap":3,"concept":6,"config":[9,10],"content":[8,9,11,13],"contribut":2,"convert":3,"core":[11,12],"csv":3,"deck":3,"differ":3,"document":4,"ensembl":3,"exampl":3,"exprecc":20,"file":3,"filter":3,"flow":5,"formula":5,"generic":3,"gif":3,"graphic":3,"ground":2,"hello":3,"histogram":3,"indic":4,"initi":14,"input":3,"instal":5,"integr":3,"introduct":6,"issu":2,"linux":5,"maco":5,"map":15,"mask":3,"micp":20,"modul":[8,9,10,11,12,13,14,15,16,17,18,19],"opm":5,"overview":6,"packag":[5,8,9,11,13],"plopm":[0,1,4,7,8,9,10,11,12,13,14,15,16,17,18,19],"pofff":20,"problem":2,"project":3,"pycopm":20,"pymm":20,"pyopmnearwel":20,"pyopmspe11":20,"python":[1,5],"read":3,"reader":16,"relat":20,"report":2,"rotat":3,"rule":2,"s":4,"seek":2,"softwar":2,"sourc":5,"subfigur":3,"submodul":[9,11,13],"subpackag":8,"support":2,"tabl":4,"translat":3,"util":[13,14,15,16,17,18,19],"vtk":3,"welcom":4,"window":5,"world":3,"write_on":17,"write_twod":18,"write_vtk":19,"zoom":3}}) \ No newline at end of file +Search.setIndex({"alltitles":{"About plopm":[[0,null]],"Binary packages":[[5,"binary-packages"]],"Brew formula for macOS":[[5,"brew-formula-for-macos"]],"Caprock integrity":[[3,"caprock-integrity"]],"Colormaps":[[3,"colormaps"]],"Command-line options":[[6,"command-line-options"]],"Concept":[[6,"concept"]],"Contribute to the software":[[2,"contribute-to-the-software"]],"Contributing":[[2,null]],"Convert to VTK":[[3,"convert-to-vtk"]],"Different input files and ensembles":[[3,"different-input-files-and-ensembles"]],"Examples":[[3,null]],"Filters":[[3,"filters"]],"GIF and mask":[[3,"gif-and-mask"]],"Generic deck":[[3,"generic-deck"]],"Graphical abstract":[[3,"graphical-abstract"]],"Ground Rules":[[2,"ground-rules"]],"Hello world":[[3,"hello-world"]],"Histograms":[[3,"histograms"]],"Indices and tables":[[4,"indices-and-tables"]],"Installation":[[5,null]],"Introduction":[[6,null]],"Module contents":[[8,"module-plopm"],[9,"module-plopm.config"],[11,"module-plopm.core"],[13,"module-plopm.utils"]],"OPM Flow":[[5,"opm-flow"]],"Options":[[6,"options"]],"Projections and subfigures":[[3,"projections-and-subfigures"]],"Python package":[[5,"python-package"]],"Reading from csv files":[[3,"reading-from-csv-files"]],"Related":[[20,null]],"Reporting issues or problems":[[2,"reporting-issues-or-problems"]],"Rotation, translation, and zoom":[[3,"rotation-translation-and-zoom"]],"Seek support":[[2,"seek-support"]],"Source build in Linux/Windows":[[5,"source-build-in-linux-windows"]],"Source build in macOS":[[5,"source-build-in-macos"]],"Submodules":[[9,"submodules"],[11,"submodules"],[13,"submodules"]],"Subpackages":[[8,"subpackages"]],"Value and list syntax":[[6,"value-and-list-syntax"]],"Welcome to plopm\u2019s documentation!":[[4,null]],"ad-micp":[[20,"ad-micp"]],"expreccs":[[20,"expreccs"]],"plopm":[[1,"plopm"],[7,null]],"plopm Python API":[[1,null]],"plopm package":[[8,null]],"plopm.config package":[[9,null]],"plopm.config.config module":[[10,null]],"plopm.core package":[[11,null]],"plopm.core.plopm module":[[12,null]],"plopm.utils package":[[13,null]],"plopm.utils.initialization module":[[14,null]],"plopm.utils.mapping module":[[15,null]],"plopm.utils.readers module":[[16,null]],"plopm.utils.write_oned module":[[17,null]],"plopm.utils.write_twod module":[[18,null]],"plopm.utils.write_vtk module":[[19,null]],"pofff":[[20,"pofff"]],"pycopm":[[20,"pycopm"]],"pymm":[[20,"pymm"]],"pyopmnearwell":[[20,"pyopmnearwell"]],"pyopmspe11":[[20,"pyopmspe11"]]},"docnames":["about","api","contributing","examples","index","installation","introduction","modules","plopm","plopm.config","plopm.config.config","plopm.core","plopm.core.plopm","plopm.utils","plopm.utils.initialization","plopm.utils.mapping","plopm.utils.readers","plopm.utils.write_oned","plopm.utils.write_twod","plopm.utils.write_vtk","related"],"envversion":{"sphinx":66,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["about.rst","api.rst","contributing.rst","examples.rst","index.rst","installation.rst","introduction.rst","modules.rst","plopm.rst","plopm.config.rst","plopm.config.config.rst","plopm.core.rst","plopm.core.plopm.rst","plopm.utils.rst","plopm.utils.initialization.rst","plopm.utils.mapping.rst","plopm.utils.readers.rst","plopm.utils.write_oned.rst","plopm.utils.write_twod.rst","plopm.utils.write_vtk.rst","related.rst"],"indexentries":{},"objects":{"":[[8,0,0,"-","plopm"]],"plopm":[[9,0,0,"-","config"],[11,0,0,"-","core"],[13,0,0,"-","utils"]],"plopm.config":[[10,0,0,"-","config"]],"plopm.config.config":[[10,1,1,"","ConfigPlopm"],[10,1,1,"","ReadData"]],"plopm.config.config.ConfigPlopm":[[10,2,1,"","adjust"],[10,2,1,"","axgrid"],[10,2,1,"","bandprop"],[10,2,1,"","bounds"],[10,2,1,"","caprock"],[10,2,1,"","cbsfax"],[10,2,1,"","cf"],[10,2,1,"","cformat"],[10,2,1,"","clabel"],[10,2,1,"","clogthks"],[10,2,1,"","cmaps"],[10,2,1,"","cmdisc"],[10,2,1,"","cnum"],[10,2,1,"","colors"],[10,2,1,"","colors_default"],[10,2,1,"","colors_raw"],[10,2,1,"","csv"],[10,2,1,"","csvs"],[10,2,1,"","csvsummary"],[10,2,1,"","cticks"],[10,2,1,"","delax"],[10,2,1,"","diff"],[10,2,1,"","dimensions"],[10,2,1,"","discrete"],[10,2,1,"","distance"],[10,2,1,"","dpi"],[10,2,1,"","dual"],[10,2,1,"","ensemble"],[10,2,1,"","faults"],[10,2,1,"","fc"],[10,2,1,"","filter"],[10,2,1,"","gif"],[10,2,1,"","global_"],[10,2,1,"","grid"],[10,2,1,"","histogram"],[10,2,1,"","how"],[10,2,1,"","interval"],[10,2,1,"","labels"],[10,2,1,"","layer"],[10,2,1,"","linestyle"],[10,2,1,"","linestyle_default"],[10,2,1,"","loc"],[10,2,1,"","log"],[10,2,1,"","loop"],[10,2,1,"","lw"],[10,2,1,"","lw_values"],[10,2,1,"","mask"],[10,2,1,"","maskthr"],[10,2,1,"","mass"],[10,2,1,"","name"],[10,2,1,"","namens"],[10,2,1,"","names"],[10,2,1,"","ncolor"],[10,2,1,"","numc"],[10,2,1,"","output"],[10,2,1,"","png"],[10,2,1,"","printv"],[10,2,1,"","restart"],[10,2,1,"","rm"],[10,2,1,"","rotate"],[10,2,1,"","rst_range"],[10,2,1,"","save"],[10,2,1,"","scale"],[10,2,1,"","sensor"],[10,2,1,"","size"],[10,2,1,"","slide"],[10,2,1,"","smass"],[10,2,1,"","step"],[10,2,1,"","stress"],[10,2,1,"","subfigs"],[10,2,1,"","summary"],[10,2,1,"","suptitle"],[10,2,1,"","time"],[10,2,1,"","title"],[10,2,1,"","translate"],[10,2,1,"","tunits"],[10,2,1,"","units"],[10,2,1,"","vmax"],[10,2,1,"","vmin"],[10,2,1,"","vrs"],[10,2,1,"","vsum"],[10,2,1,"","vtk"],[10,2,1,"","vtkformat"],[10,2,1,"","vtknames"],[10,2,1,"","wells"],[10,2,1,"","whow"],[10,2,1,"","xformat"],[10,2,1,"","xlabel"],[10,2,1,"","xlim"],[10,2,1,"","xlnum"],[10,2,1,"","xlog"],[10,2,1,"","xmass"],[10,2,1,"","xskl"],[10,2,1,"","xunit"],[10,2,1,"","xunits"],[10,2,1,"","yformat"],[10,2,1,"","ylabel"],[10,2,1,"","ylim"],[10,2,1,"","ylnum"],[10,2,1,"","ylog"],[10,2,1,"","yskl"],[10,2,1,"","yunit"],[10,2,1,"","yunits"]],"plopm.config.config.ReadData":[[10,2,1,"","actind"],[10,2,1,"","dx"],[10,2,1,"","dy"],[10,2,1,"","dz"],[10,2,1,"","egrid"],[10,2,1,"","init"],[10,2,1,"","ntot"],[10,2,1,"","nx"],[10,2,1,"","nxyz"],[10,2,1,"","ny"],[10,2,1,"","nz"],[10,2,1,"","porv"],[10,2,1,"","pv"],[10,2,1,"","restart"],[10,2,1,"","tnrst"],[10,2,1,"","unrst"]],"plopm.core":[[12,0,0,"-","plopm"]],"plopm.core.plopm":[[12,3,1,"","check_cmdargs"],[12,3,1,"","load_parser"],[12,3,1,"","main"]],"plopm.utils":[[14,0,0,"-","initialization"],[15,0,0,"-","mapping"],[16,0,0,"-","readers"],[17,0,0,"-","write_oned"],[18,0,0,"-","write_twod"],[19,0,0,"-","write_vtk"]],"plopm.utils.initialization":[[14,3,1,"","handle_blocks"],[14,3,1,"","ini_cfg"],[14,3,1,"","ini_properties"],[14,3,1,"","ini_summary"],[14,3,1,"","initialize_mass"],[14,3,1,"","initialize_spatial"],[14,3,1,"","is_summary"]],"plopm.utils.mapping":[[15,3,1,"","handle_slide_x"],[15,3,1,"","handle_slide_y"],[15,3,1,"","handle_slide_z"],[15,3,1,"","map_xycoords"],[15,3,1,"","map_xzcoords"],[15,3,1,"","map_yzcoords"],[15,3,1,"","rotate_grid"]],"plopm.utils.readers":[[16,3,1,"","compute_distance"],[16,3,1,"","do_read_variables"],[16,3,1,"","get_csvs"],[16,3,1,"","get_faults"],[16,3,1,"","get_histogram"],[16,3,1,"","get_indices"],[16,3,1,"","get_quantity"],[16,3,1,"","get_readers"],[16,3,1,"","get_unit"],[16,3,1,"","get_wells"],[16,3,1,"","get_xycoords"],[16,3,1,"","get_xzcoords"],[16,3,1,"","get_yzcoords"],[16,3,1,"","handle_caprock"],[16,3,1,"","handle_filter"],[16,3,1,"","handle_mass"],[16,3,1,"","handle_saturation"],[16,3,1,"","initialize_time"],[16,3,1,"","operate"],[16,3,1,"","project"],[16,3,1,"","read_oned"],[16,3,1,"","resolve_variable"],[16,3,1,"","type_of_mass"],[16,3,1,"","where_at"]],"plopm.utils.write_oned":[[17,3,1,"","handle_ensemble"],[17,3,1,"","make_plots"]],"plopm.utils.write_twod":[[18,3,1,"","fill_map_array"],[18,3,1,"","find_min_max"],[18,3,1,"","get_mask"],[18,3,1,"","handle_axis"],[18,3,1,"","handle_well_or_grid_or_fault"],[18,3,1,"","make_maps"],[18,3,1,"","mapit"],[18,3,1,"","mapits"],[18,3,1,"","prepare_maps"],[18,3,1,"","set_deck_name"]],"plopm.utils.write_vtk":[[19,3,1,"","check_integer_conversion"],[19,3,1,"","format_data_array"],[19,3,1,"","get_flags"],[19,3,1,"","make_dry_deck"],[19,3,1,"","make_vtks"],[19,3,1,"","opmtovtk"],[19,3,1,"","warn_once"],[19,3,1,"","writepvd"]]},"objnames":{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","function","Python function"]},"objtypes":{"0":"py:module","1":"py:class","2":"py:attribute","3":"py:function"},"terms":{"0f":3,"0pressur":[3,6],"1e":[3,6],"1e3":3,"1e6":3,"1f":[3,6],"2d":[6,15,16,18],"2e":6,"2f":[3,6],"3d":6,"51c":3,"5e":3,"7274b3":3,"8mish":3,"A":20,"About":4,"All":3,"An":[2,6,20],"As":3,"At":6,"Below":[3,20],"By":[3,6],"For":[0,3,5,6,14,18],"From":[3,16],"Here":3,"If":[3,5,12],"In":[2,3,6],"It":3,"No":3,"The":[1,2,3,5,6],"Then":[3,5],"This":[3,6],"To":[3,5],"We":2,"While":5,"You":[3,5],"_2":3,"_build":2,"_of_input_fil":6,"_of_vari":6,"_scalarmapp":18,"_z":3,"a8d8e3":3,"abil":3,"abov":3,"abstract":4,"accept":[2,6],"accord":14,"achiav":3,"achiev":3,"act":6,"actind":[9,10],"action":[2,5],"activ":[3,5],"ad":4,"add":[3,5],"addit":[3,6],"adjust":[6,9,10],"aggreg":6,"ahiev":3,"allow":[3,6],"along":3,"alpha":6,"also":[2,3,5,6],"altern":2,"ampersand":6,"anaconda":5,"analys":2,"analysi":2,"angl":6,"ani":[2,3,6,18],"anoth":5,"answer":2,"api":4,"appli":[3,6,16],"applic":3,"approach":[0,2,3,6],"apt":5,"argument":[3,6,12,14],"argv":12,"arithmet":[3,6],"artist":18,"ascii":19,"associ":16,"assum":3,"auto":2,"automat":6,"avail":[3,5,6],"averag":[3,6],"ax":6,"axe":[3,6,17],"axesdivid":18,"axgrid":[3,6,9,10],"axi":[3,6,14,16,18],"axiss":[17,18],"b":[3,6],"b6c406":3,"background":[3,6],"bak":3,"band":[6,17],"bandprop":[6,9,10],"bar":3,"base":[3,6,10,20],"basetemp":2,"befor":2,"benchmark":[3,20],"best":6,"beyond":3,"big":3,"bin":[3,5,6],"binari":[2,4],"black":[2,3,6],"block":14,"bool":[10,14,16,18,19],"border":6,"bottom":6,"bound":[3,6,9,10],"bracket":6,"branch":5,"brew":4,"build":[2,3,4,6],"build_opm_mpi":5,"built":5,"bwpr":[3,6],"c":[3,6],"calcit":20,"call":3,"can":[2,3,5,6],"caprock":[4,9,10,16,19],"caprock_list":16,"case":[3,6,16,19],"cb":18,"cbsfax":[3,6,9,10],"ccs":3,"cd":5,"cddb6e":3,"cell":[3,6],"center":[0,3,6],"central":10,"cet_cwr":3,"cet_glasbey_bw":3,"cf":[9,10],"cfd":20,"cfg":[14,15,16,17,18],"cformat":[3,6,9,10],"challeng":0,"chang":[2,3],"changer":3,"changu":3,"check":[2,5,14,20],"check_cmdarg":[8,11,12],"check_integer_convers":[8,13,19],"checker":2,"checkout":5,"ci":[2,5],"clabel":[3,6,9,10],"class":10,"cli":12,"clogthk":[6,9,10],"clone":[3,5],"cm":[5,6],"cmake":5,"cmap":[9,10],"cmax":18,"cmdarg":[12,14],"cmdisc":[9,10],"cmin":18,"cnum":[3,6,9,10],"co":3,"co2":[3,6,20],"co2_d":16,"co2_g":16,"co2m":[3,6],"code":[2,5,8,9],"coeffici":6,"collabor":2,"color":[3,6,9,10],"colorbar":[3,6,18],"colorcet":3,"colormap":[4,6],"colors_default":[9,10],"colors_raw":[9,10],"column":[3,6],"com":[3,5,6],"combin":[3,12],"comma":[3,6,14],"command":[3,4,5,12],"commit":2,"common":[3,5],"compar":3,"comparison":3,"complet":6,"compon":[3,6],"comput":[3,6,16,17],"compute_dist":[8,13,16],"concept":4,"condit":[3,6],"config":[1,7,8],"configplopm":[8,9,10,14,15,16,17,18],"configur":[3,6,10,14],"connect":3,"consid":3,"contain":[1,6],"content":[1,2,4,7],"continu":6,"contribut":[0,4,5],"convers":19,"convert":[4,5,6],"coordin":[3,16,18],"copi":[2,5],"core":[1,7,8],"corner":3,"correspond":[3,6],"cov":2,"cp":3,"cpus":3,"creat":[2,3,5,17,18,19],"csp":20,"cssr":[0,3,5,6],"csv":[4,6,9,10,16],"csvs":[3,9,10],"csvsummari":[9,10],"ctick":[3,6,9,10],"cubehelix":3,"curl":3,"current":[5,6],"current_directori":5,"curv":3,"custom":6,"cvs":16,"d":[3,6],"dash":3,"data":[3,16],"dataarray":19,"dataclass":[1,10,14],"date":[3,6],"day":3,"dcmake_build_typ":5,"deck":[4,16,18,19],"deck_flow_data":3,"deckd":18,"dedic":5,"default":[3,6],"defcol":18,"defin":[3,14],"definit":3,"degre":6,"delax":[3,6,9,10],"delet":3,"depend":[2,5],"describ":[2,3,6],"descript":6,"dev":[2,5],"develop":5,"dict":[12,14],"diff":[3,6,9,10],"diffa":18,"differ":[1,4,6],"dimens":[3,6,9,10],"dimension":17,"direct":[3,6],"disabl":6,"discret":[6,9,10],"dism":6,"disperc":3,"display":6,"dissa":3,"dissolv":3,"distanc":[6,9,10],"distribut":[3,6],"divid":18,"dname":19,"do_read_vari":[8,13,16],"doc":2,"docs_al":3,"docs_caprock_integr":3,"docs_colormap":3,"docs_convert_to_vtk":3,"docs_different_files_and_ensembl":3,"docs_filt":3,"docs_generic_deck":3,"docs_gif_mask":3,"docs_graphical_abstract":3,"docs_hello_world":3,"docs_histogram":3,"docs_projections_subfigur":3,"docs_reading_csv":3,"docs_rotation_translation_zoom":3,"document":[2,3,5,6],"done":5,"dot":[3,6],"download":[3,5],"dpi":[3,6,9,10],"drainag":3,"dri":[3,19],"dual":[6,9,10],"duplic":6,"duse_mpi":5,"dvipng":5,"dwith_ndebug":5,"dx":[9,10],"dy":[9,10],"dynam":[3,6,20],"dz":[9,10],"e":[3,5,6],"eclfil":[10,16],"edg":[5,6],"egrid":[3,5,9,10],"either":5,"els":5,"em":20,"email":2,"empti":[3,6],"enabl":[3,6],"enclos":6,"end":[3,6],"ensembl":[4,6,9,10],"enterpris":5,"entri":[3,6],"environ":5,"equal":6,"error":6,"erst":[10,16],"esf":6,"estim":3,"ex":3,"exampl":[2,4,6],"example0":3,"example3_form":3,"execut":[1,2,3,5,6,12],"exist":5,"expand":3,"exprecc":4,"express":6,"extend":[2,3],"extens":6,"extinf":18,"extra":5,"f":[3,6],"facecolor":6,"faci":3,"factor":6,"factori":10,"fals":[10,18],"familiar":[2,3],"fault":[3,6,9,10,16],"fc":[9,10],"fc035a":3,"featur":0,"fewer":3,"fffa86":3,"fgip":[3,6],"fgipm":6,"fgmip":3,"fi":5,"field":[3,6],"fig":18,"figur":[3,5,6,17,18],"file":[2,4,5,6,10,14,16,19],"fill":6,"fill_map_array":[8,13,18],"filter":[4,6,9,10,16,19],"filterss":19,"find":18,"find_min_max":[8,13,18],"fipnum":[3,6],"first":[3,6],"fix":2,"flag":[3,14,19],"flexibl":6,"float":[3,10,14,16,17,18,19],"float16":[3,6],"float32":[3,6],"float64":[3,6,16],"flore":3,"flow":[2,3,4,6,12,16,19,20],"fluid":6,"fluidflow":20,"fluxnum":6,"folder":[1,2,3,5,6],"follow":[3,5,6],"font":[3,5,6],"fork":[0,2],"form":6,"format":[2,3,5,6,19],"format_data_array":[8,13,19],"formula":4,"forth":3,"four":6,"fraction":3,"frame":6,"framework":[6,20],"free":6,"front":3,"full":6,"function":[3,12,14,15,16,17,18],"fund":0,"futur":3,"fwcdm":6,"g":[3,5,6],"game":3,"gas":[3,6],"gasm":6,"general":[3,6],"generat":[2,3,6,18,19],"generic":4,"geolog":[6,12,15,20],"get":[2,3,5,16,18],"get_csv":[8,13,16],"get_fault":[8,13,16],"get_flag":[8,13,19],"get_histogram":[8,13,16],"get_indic":[8,13,16],"get_mask":[8,13,18],"get_quant":[8,13,16],"get_read":[8,13,16],"get_unit":[8,13,16],"get_wel":[8,13,16],"get_xycoord":[8,13,16],"get_xzcoord":[8,13,16],"get_yzcoord":[8,13,16],"gif":[4,6,9,10,16,18,19],"gigatonn":0,"git":[3,5],"github":[2,3,5,6],"githubusercont":3,"give":3,"given":[3,6,14,16,19],"global":[3,6],"global_":[9,10],"graphic":4,"grid":[3,5,6,9,10,15,16,19],"ground":4,"group":6,"gui":3,"h":[3,6],"h2o":3,"h2o_l":16,"h2o_v":16,"h2om":6,"handl":[1,14,16,18],"handle_axi":[8,13,18],"handle_block":[8,13,14],"handle_caprock":[8,13,16],"handle_ensembl":[8,13,17],"handle_filt":[8,13,16],"handle_mass":[8,13,16],"handle_satur":[8,13,16],"handle_slide_i":[8,13,15],"handle_slide_x":[8,13,15],"handle_slide_z":[8,13,15],"handle_well_or_grid_or_fault":[8,13,18],"harmon":6,"hat":5,"head":3,"height":6,"hello":4,"help":[2,3,5],"hex":3,"higher":3,"histogram":[4,6,9,10,16],"histori":20,"home":6,"homebrew":5,"host":6,"howev":3,"hpc":0,"html":2,"https":[3,5,6],"hysteresi":3,"ignor":2,"ilustr":3,"imag":[18,20],"imbibit":3,"implement":6,"import":2,"inact":6,"inch":6,"includ":[3,5,6],"incompat":12,"increas":3,"indefinit":6,"index":4,"index_k":3,"indic":[6,16],"induc":20,"inferno":3,"inform":3,"ini_cfg":[8,13,14],"ini_properti":[8,13,14],"ini_summari":[8,13,14],"init":[3,5,9,10,16],"initi":[3,6,8,13],"initialize_mass":[8,13,14],"initialize_spati":[8,13,14],"initialize_tim":[8,13,16],"inj":3,"inject":3,"input":[4,6,14,16],"insid":[3,5],"inspect":6,"instal":[2,3,4],"instead":6,"instruct":5,"int":[10,15,16,18,19],"int16":6,"int32":6,"int64":6,"int8":6,"integ":19,"integr":[4,16],"intens":16,"interact":3,"interest":[3,5,20],"interim":5,"interval":[3,6,9,10],"introduct":4,"invalid":12,"is_summari":[8,13,14],"isgif":16,"issu":[0,4],"iter":18,"j":[6,14,16],"j5":5,"jet":[3,6],"join":6,"just":3,"k":[3,6,14,16,18,19],"key_low":16,"key_up":16,"kg":3,"kilogram":3,"kiloton":3,"kilotonn":3,"km":[3,6],"krg":[3,6],"krg3h":3,"krog":[3,6],"krow":[3,6],"krw":[3,6],"kt":3,"l":[3,5],"label":[3,6,9,10],"larg":3,"larger":3,"last":[3,6],"lateral":[3,6],"latex":5,"layer":[3,9,10],"lead":3,"leakag":20,"least":[3,6],"left":[3,6],"legend":[3,6],"let":3,"librari":5,"like":3,"limipr":[3,6],"limit":[3,6],"line":[2,3,4,5,12],"linestyl":[6,9,10],"linestyle_default":[9,10],"lint":5,"linux":4,"liqm":6,"liquid":3,"list":[4,10,12,15,16,18,19],"literatur":3,"load":[16,19],"load_pars":[8,11,12],"loc":[3,6,9,10],"local":[2,3],"locat":[1,3,6,15,16],"log":[3,6,9,10],"logarithm":6,"lognorm":[3,6],"look":[2,3],"loop":[3,6,9,10],"lower":[3,6],"lw":[3,6,9,10],"lw_valu":[9,10],"lwelult":18,"m":[3,5,6],"machin":5,"maco":4,"macport":5,"mactex":5,"main":[1,2,3,8,11,12],"maintain":2,"make":[2,3,5],"make_dry_deck":[8,13,19],"make_map":[8,13,18],"make_plot":[8,13,17],"make_vtk":[8,13,19],"mamba":5,"manag":5,"mantain":2,"manual":3,"map":[3,6,8,13,14,18],"map_index":18,"map_xycoord":[8,13,15],"map_xzcoord":[8,13,15],"map_yzcoord":[8,13,15],"mapit":[8,13,18],"mask":[4,6,9,10,18],"maska":18,"maskthr":[6,9,10],"mass":[3,6,9,10,14,16,19],"mass_al":[16,19],"master":5,"match":20,"matplotlib":[3,6],"max":[3,6,18],"maximum":6,"may":6,"mean":[3,6,17],"merg":2,"mesh":16,"messag":19,"method":[1,6,16,18,19],"micp":4,"microbi":20,"microsystem":20,"middl":[3,6],"might":[2,5,20],"million":3,"millisecond":6,"min":[6,18],"miniforg":5,"minim":19,"minimum":6,"miss":2,"mkdir":5,"mm":6,"mode":[3,6],"model":[3,6,12,15,20],"modifi":[5,6],"modul":[1,4,7,20],"motiv":3,"mpi":[3,5],"mpirun":3,"mskl":14,"mt":6,"multipl":6,"multipli":3,"must":[3,6],"mx":[15,18],"mypi":2,"n":[2,15,16,18],"n_s":18,"name":[3,6,9,10,16,18,19],"namen":[9,10],"nan":3,"ncolor":[6,9,10],"ndarray":[10,15,16,17,18,19],"near":20,"need":[2,3,5,14],"negat":3,"new":[0,2,3],"nice":[2,6],"non":3,"none":[10,12,14,15,17,18,19],"norm":[3,6],"normal":6,"norn":3,"norne_atw2013":3,"norne_wel":3,"norne_wells_glob":3,"now":3,"np":3,"nrst":16,"ntot":[9,10,16],"number":[0,3,6],"numc":[9,10],"nwelult":[15,18],"nx":[9,10,16],"nxyz":[9,10],"ny":[9,10,16],"nz":[9,10,16],"o":[3,6],"object":[10,14],"objepr":[3,6],"obtain":[3,15],"occurr":6,"oil":16,"onc":[3,19],"one":[3,6,16,17],"onli":[3,6],"onlin":5,"open":[3,20],"oper":[8,12,13,16],"opm":[2,3,4,6,10,12,16,19,20],"opm1":3,"opm2":3,"opm3":3,"opm4":3,"opmtovtk":[8,13,19],"optim":3,"option":[3,4,5],"order":[3,6],"org":5,"origin":3,"original_loc":18,"output":[3,5,6,9,10,16,19],"outsid":[3,6],"overpr":[3,6],"p":[3,6],"p0":3,"packag":[1,2,4,7],"page":[2,4],"pair":6,"paper":6,"paramet":12,"paraview":[3,6],"pars":[12,16],"part":6,"pascal":3,"pass":6,"path":[3,6],"pcfact":6,"pcog":[3,6],"pcog5":3,"pcolormesh":[6,18],"pcow":[3,6],"pcwg":[3,6],"per":6,"perfor":3,"perform":19,"permeabl":[3,6],"permx":[3,6],"permz":[3,6],"phase":3,"pip":[2,3,5],"place":[3,6],"placehold":6,"plane":[3,6],"platform":5,"pleas":[0,2],"plopm":[2,3,5,6],"plot":[1,3,6,14,17],"png":[3,6,9,10],"pngs":[17,18],"pofff":4,"point":3,"popul":19,"pore":[3,6],"poro":[3,6],"poros":[3,6],"porv":[6,9,10,16],"posit":6,"possibl":[2,3],"postprocess":[6,12],"precipit":20,"prefer":2,"prepare_map":[8,13,18],"prerequisit":5,"present":[3,6],"pressur":[3,6],"previous":[2,3,5],"print":[6,19],"printv":[3,6,9,10],"problem":4,"process":[6,15],"project":[0,4,5,6,8,13,16,20],"properti":[3,6,14,15,19],"provid":[3,6],"prs":2,"pull":[0,2],"puor":3,"push":2,"pushd":2,"pv":[9,10],"pvd":[3,19],"pvmean":6,"pwd":5,"py":3,"py314":2,"pycopm":[4,5],"pylint":2,"pymm":4,"pyopmnearwel":[3,4],"pyopmspe11":[3,4],"pyplot":6,"pytest":2,"python":[2,3,4,20],"python3":5,"qskl":16,"quan":[15,16,18,19],"quan1":16,"quantiti":[3,6,14,16,18],"quick":6,"quot":6,"r":[2,3,5,6],"r1_cart_10m":3,"r4_cp_8m":3,"rais":[0,2,12],"random":3,"rang":[3,6],"rate":3,"ratio":3,"raw":3,"reach":3,"read":[4,10,15,16,18,19],"read_on":[8,13,16],"readdata":[8,9,10,15,16,18,19],"reader":[8,13],"recent":5,"recommend":5,"red":5,"reduc":3,"ref":3,"refer":6,"region":[3,20],"relat":[3,4,16],"releas":5,"reli":3,"remedi":20,"remov":[3,6,19],"repeat":6,"replac":2,"repo":[2,5],"report":[3,4],"repositori":[2,5],"request":[0,2,6,12,16],"requier":15,"requir":[2,3,5,6,16],"requiri":14,"resdata":3,"reservoir":[6,20],"residu":3,"resolut":6,"resolve_vari":[8,13,16],"resourc":0,"respect":3,"restar":3,"restart":[3,6,9,10,16,19],"result":[3,6],"retain":6,"retriev":18,"return":[12,16],"review":2,"rgb":3,"rgmds":3,"right":[3,6],"rigth":3,"rise":2,"riski":19,"rm":[3,9,10],"rock":3,"rotat":[4,6,9,10,15],"rotate_grid":[8,13,15],"routin":3,"row":6,"rporv":[3,6],"rptrst":[3,6],"rst_rang":[9,10],"ruff":2,"rule":4,"run":[2,3,5,19],"s":[3,5,6],"sampl":3,"satnum":[3,6],"satur":[3,6,16],"save":[3,6,9,10,19],"scale":[3,6,9,10],"schedul":3,"script":[1,2,3,5],"search":4,"second":3,"section":3,"sed":3,"see":[2,3,5],"seek":4,"seen":3,"select":[3,6,15],"semicolon":6,"send":2,"sensor":[3,6,9,10],"separ":[3,6],"seri":6,"set":[3,6,14,19],"set_deck_nam":[8,13,18],"setuptool":5,"sgas":[3,6],"sh":[3,5],"short":6,"show":[3,6],"shown":3,"simpli":[3,5],"simplifi":6,"simul":[0,3,5,6,15,16,20],"sinc":3,"singl":[2,3,6],"site":20,"six":2,"size":[3,6,9,10],"skip":[5,6,18],"skl":[16,19],"slice":6,"slide":[3,6,9,10,15],"slide_index":18,"sliden":18,"slidet":18,"smass":[9,10],"softwar":[0,4],"solid":[3,6],"solut":3,"soon":2,"sourc":[3,4,20],"space":[3,6],"spatial":[3,6,14,18],"spe10_model2":3,"spe11":20,"spe11_opm1":3,"spe11_opm2":3,"spe11_opm3":3,"spe11_opm4":3,"spe11b":[3,6],"spe11b_higher_r":3,"spe11b_larger_inj":3,"spe11b_spatial_map_250i":3,"spe11b_spatial_map_500i":3,"spe11b_spatial_map_plopmi":3,"spe11b_time_seri":3,"spe11b_tun":6,"spe11c":3,"spe11c_0005":3,"special":[3,6],"specif":[5,6],"specifi":3,"spectral":3,"split":14,"spring":3,"squash":2,"src":2,"start":6,"state":6,"static":[2,6],"std":3,"step":[2,3,5,6,9,10],"storag":[0,20],"store":3,"str":[10,12,14,15,16,17,18,19],"stress":[3,6,9,10,16,19],"structur":10,"studi":20,"style":[3,6],"sub1":18,"subfig":[3,6,9,10],"subfigur":[4,6],"submodul":[1,7,8],"subpackag":[1,4,7],"subplot":[3,6],"subsurfac":0,"subsystem":5,"subtract":6,"succed":5,"succeed":[2,3],"sudo":5,"sum":6,"summari":[3,6,9,10,14,16],"summit":3,"super":5,"suppli":6,"support":[3,4,5,6],"suptitl":[3,6,9,10],"sustain":0,"syntax":4,"systemexit":12,"t":[3,6,18],"tab20c_r":3,"tabl":[3,6],"tag":5,"tailor":20,"tap":5,"target":2,"target_dtyp":19,"temp":3,"temperatur":3,"term":2,"termin":[3,5,6],"test":[2,3,5],"test_generic_deck":3,"test_output":2,"texliv":5,"text":6,"three":[3,6],"threshold":6,"tick":[3,6],"time":[3,6,9,10,16],"titl":[3,6,9,10,18],"tnrst":[9,10,19],"toml":3,"tool":[2,3,5,6,12,20],"top":3,"total":3,"translat":[4,6,9,10],"tri":[2,3,5],"true":[3,10],"trust":5,"tstep":6,"tug":5,"tunit":[3,6,9,10,16],"tupl":[10,14,15,16,17,18,19],"turbo":3,"turn":5,"tutori":2,"two":[1,3,6],"txt":[2,5],"type":[3,5,6,16,19],"type_of_mass":[8,13,16],"u":3,"ubuntu":[2,5],"uint16":[3,6],"uint32":6,"uint64":6,"uint8":6,"unit":[3,6,9,10,14,16,18],"unrst":[3,5,9,10,16],"upgrad":5,"upper":[3,6],"us":3,"use":[0,1,2,3,5,6,16,18,19,20],"use_csv":18,"user":[2,3,5,6],"util":[1,7,8],"v":[3,6],"v2026":5,"valid":12,"valu":[3,4,14,16,19],"vanimo":3,"vapm":6,"var":[15,16,18,19],"variabl":[3,6,14,16,17,19],"vec":16,"vect":18,"vector":[3,6,16],"venv":5,"version":[2,3,5,8,9],"via":[3,5],"view":3,"virtual":5,"visit":2,"visual":[3,6,12],"vmax":[6,9,10,16],"vmin":[6,9,10,16],"volum":[3,6],"vplopm":5,"vrs":[9,10,16,19],"vsum":[9,10],"vtk":[4,5,6,9,10,16,19],"vtkformat":[3,6,9,10,19],"vtkformat_list":19,"vtkname":[6,9,10,19],"vtks":[3,19],"vtu":3,"w":[3,6],"warn":19,"warn_onc":[8,13,19],"warning_key":19,"websit":3,"week":3,"weight":6,"welcom":[0,2],"well":[2,3,6,9,10,16,20],"welult":[15,18],"wheel":5,"where_at":[8,13,16],"white":[3,6],"whole":6,"whow":[9,10],"width":[3,6],"will":[2,3],"window":4,"within":6,"without":3,"work":[2,5],"world":4,"write":[3,5,17,18,19],"write_on":[8,13],"write_twod":[8,13],"write_vtk":[8,13],"writepvd":[8,13,19],"written":3,"www":5,"x":[3,6,16],"x_g_h2o":16,"x_l_co2":16,"x_n":3,"xc":[15,18],"xco2l":[3,6],"xco2v":6,"xformat":[3,6,9,10],"xh2ol":6,"xh2ov":6,"xlabel":[6,9,10],"xlim":[6,9,10],"xlnum":[3,6,9,10],"xlog":[6,9,10],"xmass":[9,10],"xname":18,"xskl":[9,10],"xunit":[3,6,9,10],"xy":[3,6,15,16],"xz":[3,15,16],"y":[3,5,6],"yc":[15,18],"year":3,"yformat":[3,6,9,10],"ylabel":[3,6,9,10],"ylim":[6,9,10],"ylnum":[6,9,10],"ylog":[6,9,10],"yml":[2,5],"yname":18,"yskl":[9,10],"yunit":[3,6,9,10],"yz":[15,16],"z":[3,6],"z_n":3,"zip":3,"zoom":4},"titles":["About plopm","plopm Python API","Contributing","Examples","Welcome to plopm\u2019s documentation!","Installation","Introduction","plopm","plopm package","plopm.config package","plopm.config.config module","plopm.core package","plopm.core.plopm module","plopm.utils package","plopm.utils.initialization module","plopm.utils.mapping module","plopm.utils.readers module","plopm.utils.write_oned module","plopm.utils.write_twod module","plopm.utils.write_vtk module","Related"],"titleterms":{"About":0,"abstract":3,"ad":20,"api":1,"binari":5,"brew":5,"build":5,"caprock":3,"colormap":3,"command":6,"concept":6,"config":[9,10],"content":[8,9,11,13],"contribut":2,"convert":3,"core":[11,12],"csv":3,"deck":3,"differ":3,"document":4,"ensembl":3,"exampl":3,"exprecc":20,"file":3,"filter":3,"flow":5,"formula":5,"generic":3,"gif":3,"graphic":3,"ground":2,"hello":3,"histogram":3,"indic":4,"initi":14,"input":3,"instal":5,"integr":3,"introduct":6,"issu":2,"line":6,"linux":5,"list":6,"maco":5,"map":15,"mask":3,"micp":20,"modul":[8,9,10,11,12,13,14,15,16,17,18,19],"opm":5,"option":6,"packag":[5,8,9,11,13],"plopm":[0,1,4,7,8,9,10,11,12,13,14,15,16,17,18,19],"pofff":20,"problem":2,"project":3,"pycopm":20,"pymm":20,"pyopmnearwel":20,"pyopmspe11":20,"python":[1,5],"read":3,"reader":16,"relat":20,"report":2,"rotat":3,"rule":2,"s":4,"seek":2,"softwar":2,"sourc":5,"subfigur":3,"submodul":[9,11,13],"subpackag":8,"support":2,"syntax":6,"tabl":4,"translat":3,"util":[13,14,15,16,17,18,19],"valu":6,"vtk":3,"welcom":4,"window":5,"world":3,"write_on":17,"write_twod":18,"write_vtk":19,"zoom":3}}) \ No newline at end of file diff --git a/docs/text/examples.rst b/docs/text/examples.rst index 79ab39e..33473a6 100644 --- a/docs/text/examples.rst +++ b/docs/text/examples.rst @@ -68,6 +68,14 @@ To plot cell values over time, this can be achieved by: .. figure:: figs/spe11b_pressure-0pressure.png :scale: 20% +.. tip:: + + All previous commands can be executed as (`docs_hello_world.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_hello_world.sh + ========= Colormaps ========= @@ -85,6 +93,14 @@ Different colormap formats can be used when making a subfigure, for example: .. figure:: figs/spe11b_disperc_i,1,k_t5.png :scale: 20% +.. tip:: + + All previous commands can be executed as (`docs_colormaps.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_colormaps.sh + ============ Generic deck ============ @@ -114,6 +130,14 @@ To plot information for the grid, and also the location of the wells from the to Here, we use the remove flag to delete the colorbar axis in the maps for the grid and to delete the generated title in the wells plot (the first entry in remove would delete the left axis, e.g., the y label and y ticks in this example, while the second entry if set to 1 would remove the x axis). +.. tip:: + + All previous commands can be executed as (`docs_generic_deck.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_generic_deck.sh + =============================== Rotation, translation, and zoom =============================== @@ -159,6 +183,14 @@ To show all wells in the model and to only show the ones with at least one perfo For plotting the faults and wells, they must be specified in the input deck (no via include files). +.. tip:: + + All previous commands can be executed as (`docs_rotation_translation_zoom.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_rotation_translation_zoom.sh + ========================== Projections and subfigures ========================== @@ -171,6 +203,14 @@ Here is an example of making a single figure plotting subfigures and using diffe .. image:: ./figs/norne_atw2013_poro_i,j,1:22_t64.png +.. tip:: + + All previous commands can be executed as (`docs_projections_subfigures.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_projections_subfigures.sh + ========== Histograms ========== @@ -184,6 +224,14 @@ respectively, showing also the mean and std which can be used for sampling (see .. image:: ./figs/norne_atw2013_permx.png +.. tip:: + + All previous commands can be executed as (`docs_histograms.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_histograms.sh + ================= Caprock integrity ================= @@ -200,11 +248,19 @@ For example, if we would like to estimate these values for norne for future CCS: .. code-block:: bash - plopm -i 'NORNE_ATW2013' -s ',,1:22 ,,1:22' -v limipres,overpres -rotate 65 -translate '[6456335.5,-3476500]' -x '[0,5600]' -y '[0,8800]' -d 15,10 -c Spectral,spring, -subfigs 1,2 -delax 1 + plopm -i 'NORNE_ATW2013' -s ',,1:22 ,,1:22' -v limipres,overpres -rotate 65 -translate '[6456335.5,-3476500]' -x '[0,5600]' -y '[0,8800]' -d 15,10 -c Spectral,spring -subfigs 1,2 -delax 1 plopm -i 'NORNE_ATW2013' -m csv -v objepres -s ',,1:22' .. image:: ./figs/norne_atw2013_overpres_i,j,1:22_t64.png +.. tip:: + + All previous commands can be executed as (`docs_caprock_integrity.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_caprock_integrity.sh + ====================== Reading from csv files ====================== @@ -279,6 +335,14 @@ To make a GIF from csvs, then write "PLOPM" in the csv file name (e.g., '-i opm1 .. tip:: In general, the ability of plotting from csv files using the flag **-csv** is a game changer, expanding the applicability of **plopm** beyond the format of OPM Flow output files. +.. tip:: + + All previous commands can be executed as (`docs_reading_csvs.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_reading_csvs.sh + ============== Convert to VTK ============== @@ -300,6 +364,14 @@ from the restart files from the initial (0) to the number 5 restart, using a OPM However, there are quantities that are not written (e.g., fipnum, flores), in addition to quantities not supported such as component mass (e.g., co2, h2o). This is when **plopm** can be helpful. +.. tip:: + + All previous commands can be executed as (`docs_convert_to_vtk.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_convert_to_vtk.sh + =================================== Different input files and ensembles =================================== @@ -350,7 +422,15 @@ Below are two of the generated figures after executing the script (additional fi As seen in this example, **plopm** supports the plotting of saturation functions using the '-v' flag, namely 'krw', 'krg', 'krow', 'krog', 'pcow', 'pcog', and 'pcwg'. By default, the saturation function is plotted for SATNUM=1. For a different table, this can be achieved by adding the number at the end of the variable, e.g., 'pcog5'. - In addition, if the model includes hysteresis, then to plot both drainage and imbibition curves this can be achieved by adding 'h' at the end of the variable, e.g., 'krg3h'. + In addition, if the model includes hysteresis, then to plot both drainage and imbibition curves this can be achieved by adding 'h' at the end of the variable, e.g., 'krg3h'. + +.. tip:: + + All previous commands can be executed as (`docs_different_files_and_ensembles.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_different_files_and_ensembles.sh ======= Filters @@ -366,7 +446,15 @@ Using the flag **-filter** allows to remove cells given conditions separated by .. note:: It is possible to set dynamic variables to filter as well such as sgas and pressure. However, this requires to output the dynamic pore volume, i.e., RPORV. - This can be achieved by adding to the deck RPORV to the RPTRST in the SOLUTION and SCHEDULE section (and running the simulations). + This can be achieved by adding to the deck RPORV to the RPTRST in the SOLUTION and SCHEDULE section (and running the simulations). + +.. tip:: + + All previous commands can be executed as (`docs_filters.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_filters.sh ============ GIF and mask @@ -399,6 +487,14 @@ To generate a single GIF of the gas saturation without masking and showing the g Here we have changed the units for time from days to years using the **-tunits** flag. To remove the dynamic times in the GIF, set **-tunits empty**. +.. tip:: + + All previous commands can be executed as (`docs_gif_mask.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_gif_mask.sh + ================== Graphical abstract ================== @@ -438,3 +534,11 @@ case requires a big computer (run with 1024 CPUs), then the steps below are appl The above commands will generate the SPE11C.pvd, SPE11C-000.vtu, and SPE11C_0005.vtu files, which then can be open using `paraview `_, and using the interactive GUI one can then obtain the most-rigthed figure in the abstract (e.g., using the facie numbers stored as satnum to add the background). + +.. tip:: + + All previous commands can be executed as (`docs_graphical_abstract.sh `_): + + .. code-block:: bash + + . ./tests/scripts/docs_graphical_abstract.sh diff --git a/docs/text/introduction.rst b/docs/text/introduction.rst index e419567..2334095 100644 --- a/docs/text/introduction.rst +++ b/docs/text/introduction.rst @@ -20,87 +20,371 @@ convert OPM Flow output files to vtk, which allows to use other visualization/po .. _overview: -Overview --------- -The current implementation supports the following executable with the argument options: +Command-line options +-------------------- +The current implementation supports the following executable with argument options, e.g., : .. code-block:: bash - plopm -i name(s)_of_input_file(s) - -where - --i The base name (or full path) of the input files; if more than one is given, separate them by ' ' (e.g, 'SPE11B /home/user/SPE11B_TUNED') ('SPE11B' by default). --o The base name (or full path) of the output folder ('.' by default, i.e., the folder where plopm is executed). --v Specify the name of the variable to plot, e.g., 'pressure', in addition to special extensive quantities for the mass such as 'grid', 'wells', 'faults', 'pcfact', 'limipres', 'overpres', 'objepres', 'krw', 'krg', 'krow', 'krog', 'pcow', 'pcog', 'pcwg', 'gasm', 'dism', 'liqm', 'vapm', 'co2m', 'h2om', 'xco2l', 'xh2ov', 'xco2v', 'xh2ol', 'fwcdm', and 'fgipm', as well as operations, e.g, 'pressure - 0pressure' to plot the pressure increase ('poro,permx,permz,porv,fipnum,satnum' by default). --m Generate 'png', 'gif', 'csv', or 'vtk' files ('png' by default). --s The slide in the 3D model to plot the 2D maps, e.g, '10,,' to plot the xz plane on all cells with i=10, or ',,5:10' to plot the pv average weighted quantity. If two values are given, e.g., ':,5,7', then the variable is plotted along the colon entry given the indice at the specified restart step, unless the flag '-how ' is set, then this generates a plot of the projected variable over time. If the three values are given, e.g., '2,4,9', then the variable is plotted over time at that location (',1,' by default, i.e., the xz surface at j=1). --p Path to flow, e.g., '/home/build/bin/flow'. This is used to generate the grid for the vtk files ('flow' by default). --z Scale the axis in the 2D maps ('1' by default). --f The font size ('12' by default). --x Set the lower and upper bounds along x, e.g., '[-100,200]' ('' by default). --y Set the lower and upper bounds along y, e.g., '[-10,300]' ('' by default). --c Specify the colormap, e.g., 'jet', or color(s) for the summary, e.g., 'b,r' ('' by default, i.e., set by plopm). --e Specify the linestyles, e.g., 'solid,dotted' ('' by default, i.e., set by plopm). --b Specify the upper and lower bounds for the color map, e.g., '[-0.1,11]' ('' by default, i.e., set by plopm). --d Specify the dimensions in inches generated png, e.g., '8,16' ('7,5' by default). --t Specify the figure title, e.g., 'Final saturation map' ('' by default, i.e., set by plopm). --r Restart number to plot the dynamic variable, where 0 corresponds to the initial one ('-1' by default, i.e., the last restart file). For GIFs, the default correspond to all restart steps. To make a GIF using selected restart steps, provide these separated by commas, e.g., '0,3,10,20'. To write a serie of PNGs, this can be achieve by setting '-r a:b:[step]', e.g., '-r 1:3' for rsts 1 to 3, and '-r 5:505:250' for rsts 5, 255, and 505. --a Scale the mass variable, e.g., 1e-9 for the color bar for the CO2 mass to be in Mt ('1' by default). --csv If the input file is a csv, then define the number of column for the x, y, and variable for spatial maps, or the t and variable for time series ('' by default, column numbering starting from 1, not 0). --tunits For the x axis in the summary use seconds 's', minutes 'm', hours 'h', days 'd', weeks 'w', years 'y', or dates 'dates' ('s' by default). --ylabel Text for the y axis ('' by default, i.e., set by plopm). --xlabel Text for the x axis ('' by default, i.e., set by plopm). --ylnum Number of y axis labels ('5' by default). --xlnum Number of x axis labels ('5' by default). --cnum Number of color labels ('' by default, i.e., set by plopm). --xlog Use log scale for the x axis ('0' by default). --ylog Use log scale for the y axis ('0' by default). --clabel Text for the colorbar ('' by default, i.e., set by plopm). --labels Legend in the summary plot, separated by two spaces if more than one ('' by default, i.e., set by plopm). --axgrid Set axis.grid to True for the summary plots ('1' by default). --dpi Dots per inch for the figure ('500' by default). --xformat Format for the x numbers, e.g., .2e for exponential notation ('' by default, i.e., set by plopm). --yformat Format for the y numbers, e.g., .1f for one decimal ('' by default, i.e., set by plopm). --cformat Specify the format for the numbers in the colormap, e.g., .2f for two decimals ('' by default, i.e., set by plopm). --cticks Set the colorbar tick labelling, e.g., '[G, F, E, D, C, ESF]' ('' by default). --xunits For the x axis in the spatial maps meters 'm', kilometers 'km', centimeters 'cm', or milimeters 'mm' ('m' by default). --yunits For the y axis in the spatial maps meters 'm', kilometers 'km', centimeters 'cm', or milimeters 'mm' ('m' by default). --remove Set the entries to 1 to remove in the spatial maps the left axis, bottom axis, colorbar, and title ('0,0,0,0' by default). --facecolor Color outside the spatial map ('w' by default, i.e., white). --save Name of the output files ('' by default, i.e., set by plopm). --log Log scale for the color map ('0' by default). --clogthks Set the thicks for the color maps with log scale, e.g., '[1,2,3]' ('' by default). --rotate Grades to rotate the grid in the 2D maps ('0' by default). --translate Translate the grid in the 2D maps x,y directions ('[0,0]' by default). --global Min and max in the colorbars from the current 2D slide values (0) or whole 3D model '1' ('0' by default). --ensemble Set to '1' to plot the mean and error bands for the ensemble, '2' to plot the min, mean, and max values, and '3' to plot '1' and '2' ('0' by default). --bandprop Set to color and alpha values for the matplotlib.pyplot.fill_between function when the flag -ensamble is used with values '1' or '3' , e.g., -bandprop 'r,0.1,g,0.2' ('' by default, i.e., set as the same color as the mean and alpha==0.2). --how Select how to project the given variable (-v) in a slide range (-s). By default the variables are pore volume weighted averaged along the range except for mass quantities, porv, trans, and cell dims (e.g., dz) which are summed; cell indices (e.g., index_i) which show the discrete value; harmonic average and arithmetic average for permeabilities depending on the slide range direction using the cell dim along the slide (e.g., -s ,,1:2 -v permz [harmonic averaged]); for wells/faults, 'min' show the cells when at least one cell contains them or 'max' when all cells are part of the given slide/slides range. The supported options are 'min', 'max', 'sum', 'mean', 'pvmean', 'harmonic', 'arithmetic', 'first', and 'last' ('' by default, i.e., the defaults as described above). --ncolor Color for the inactive cells in the 2D maps ('w' by default, i.e., white). --lw Line width separated by commas if more than one ('1' by default). --subfigs Generate separated or a single Figure (e.g., '2,2' for four subfigures) ('' by default, i.e., separate figures). --loc Location of the legend by passing the value to matplotlib.pyplot.legend: best, upper right, upper left, lower left, lower right, right, center left, center right, lower center, upper center, center, or set to 'empty' to remove it ('best' by default). --delax Delete aligned axis labels in subfigures ('0' by default). --printv Print the avaiable variables to plot ('0' by default). --vtkformat Format for each variable in the vtks: 'Float64', 'Float32', 'Float16', 'Int64', 'UInt64', 'Int32', 'UInt32', 'Int16', 'UInt16', 'Int8', 'UInt8' ('Float64' by default) --vtknames Label each variable in the written vtk ('' by default, i.e., the names given in the -v argument). --mask Static variable to use as 2D map background ('' by default). --diff The base name (or full path) of the input file to substract ('' by default). --suptitle Title for the subfigures ('' by default, i.e., set by plopm, if 0, then it is removed; otherwise, write the text). --cbsfax Set the global axis position and size for the colorbar ('0.40,0.01,0.2,0.02' by default). --grid Set the edgecolors and lw in the matplotlib.pyplot.pcolormesh method, e.g., 'black,1e-3' ('' by default, i.e., no grid). --vmin Set a minimum threshold to remove values in the variable ('' by default). --vmax Set a maximum threshold to remove values in the variable ('' by default). --distance Compute the 'min' or 'max' distance of the variable to a 'sensor' using -s, or to the lateral boundaries ('border'), e.g., '-s 1,2,3 -v 'sgas > 1e-2' -distance max,sensor' computes the maximum distance to the location using a min threshold of 1e-2 to indicate if a cell has gas or not ('' by default). --histogram Plot the histogram of the given variable with the given number of bins and distribution, e.g., '20,norm' for 20 bins and normal distribution ('' by default, i.e., no histogram; norm and lognorm supported for now, if no specified then only the histogram is plotted). --stress Value for the stress coeff in the computation of the pressure limit for the variables related to the caprock integrity: limipres, overpres, and objepres ('0.134' by default). --maskthr Set the threshold for the variable to mask " "('1e-3' by default). --filter Consider only the cells fullfilling the conditions, which are separated by '&', and use ',' for different input files e.g., 'fluxnum == 2 & sgas >= 0.2, satnum != 5'. ('' by default; note that RPORV needs to be set in RPTRST to be able to use dynamic filter variables such as sgas). --interval Time for the frames in the GIF in milli second ('1000' by default). --loop Set to 1 for infinity loop in the GIF ('0' by default). --step Set to 1 to use ax.step instead of ax.plot ('0' by default). - + plopm -i name(s)_of_input_file(s) -v name(s)_of_variables(s) + .. tip:: - Type in the terminal **plopm -h** to show these argument options. + Type in the terminal **plopm -h** to show a short description of the argument options. + +Value and list syntax ++++++++++++++++++++++ + +Commas normally separate entries within one specification, while spaces +separate repeated specifications for different inputs, variables, or plots. +Enclose the complete argument in quotes when it contains spaces. + +For example: + +.. code-block:: console + + -v "pressure,sgas" + -s "1,1,1 41,1,29 83,1,58" + -y "[0,10000] [0,23000]" + -histogram "50,norm 20,lognorm 100" + -log "1,1,0" + +The separators have the following general meanings: + +* **Commas** separate components within one specification, such as + ``2,4,9``, ``0,2,5``, or ``[100,-50]``. +* **Single spaces** separate repeated specifications, such as + ``1,1,1 41,1,29 83,1,58`` or ``[0,10000] [0,23000]``. +* **Two spaces** separate free-text labels or titles when each value may + itself contain spaces, such as ``Reference case Modified case``. +* **Semicolons** separate CSV column specifications for different inputs. An + empty specification skips the corresponding input, such as ``;1,2,5``. +* **Ampersands (&)** join filter conditions for the same input. +* **Commas in -filter** separate filter specifications for different + inputs. +* **Empty entries** may act as placeholders where an option applies only to + selected inputs. + +For example: + +.. code-block:: console + + -labels "Reference case Modified case" + -filter "fluxnum == 2 & sgas >= 0.2, satnum != 5" + -i "table model" -v ",BWPR:256,1,5" -csv "1,3;" + +Options ++++++++ + +``-i``, ``--input`` + Base name or full path of the input. Separate multiple inputs with spaces, + e.g., ``SPE11B /home/user/SPE11B_TUNED`` (``SPE11B`` by default). + +``-o``, ``--output`` + Base name or full path of the output folder (``.`` by default, i.e., the + folder where plopm is executed). + +``-v``, ``--variable`` + Variable specification(s) to plot. Separate variables with commas, e.g., + ``pressure,sgas``. Expressions are also supported, e.g., + ``pressure - 0pressure``. An empty entry may be used as a placeholder when + the corresponding input is configured through ``-csv``, e.g., + ``-v ",BWPR:256,1,5" -csv "1,3;"``. + + Special variables include ``grid``, ``wells``, ``faults``, ``pcfact``, + ``limipres``, ``overpres``, ``objepres``, ``krw``, ``krg``, ``krow``, + ``krog``, ``pcow``, ``pcog``, ``pcwg``, ``gasm``, ``dism``, ``liqm``, + ``vapm``, ``co2m``, ``h2om``, ``xco2l``, ``xh2ov``, ``xco2v``, + ``xh2ol``, ``fwcdm``, and ``fgipm`` + (``poro,permx,permz,porv,fipnum,satnum`` by default). + +``-m``, ``--mode`` + Output format: ``png``, ``gif``, ``csv``, or ``vtk`` (``png`` by + default). + +``-s``, ``--slide`` + Slide or location in ``i,j,k`` form. An empty entry selects a plane, e.g., + ``10,,``; a range projects over cells, e.g., ``,,5:10``; ``:`` selects a + line, e.g., ``:,5,7``; and three indices select a cell over time, e.g., + ``2,4,9``. Separate multiple selections with spaces, e.g., + ``1,1,1 41,1,29 83,1,58`` (``,1,`` by default). + +``-r``, ``--restart`` + Restart step(s), where ``0`` is the initial state and ``-1`` is the last. + Separate selected steps with commas, e.g., ``0,2`` or ``0,3,10,20``, or + use ``start:end[:step]``, e.g., ``1:3``, ``0:4:2``, or ``5:505:250``. + The default is ``-1``; GIF output uses all available steps by default. + +``-c``, ``--colors`` + Colormap, e.g., ``jet``, or summary-plot colors separated by commas, e.g., + ``b,r`` (empty by default, i.e., set by plopm). + +``-b``, ``--bounds`` + Color-scale limits in the requested display order, e.g., ``[-0.1,11]`` or + ``[11,-0.1]``. Separate limits for multiple plots with spaces (empty by + default). + +``-d``, ``--dimensions`` + Figure width and height in inches, separated by a comma, e.g., ``8,16`` + (``7,5`` by default). + +``-f``, ``--size`` + Font size (``12`` by default). + +``-t``, ``--title`` + Figure title. Separate titles for multiple plots with two spaces + (``0`` by default). + +``-suptitle`` + Title for a group of subfigures. Use ``0`` to remove it (empty by default, + i.e., set by plopm). + +``-clabel`` + Colorbar label. Separate labels for multiple plots with two spaces (empty + by default, i.e., set by plopm). + +``-xlabel`` + X-axis label. Separate labels for multiple plots with two spaces (empty by + default, i.e., set by plopm). + +``-ylabel`` + Y-axis label. Separate labels for multiple plots with two spaces (empty by + default, i.e., set by plopm). + +``-facecolor`` + Color outside the spatial map (``w`` by default, i.e., white). + +``-dpi`` + Figure resolution in dots per inch (``500`` by default). + +``-x``, ``--xlim`` + X-axis limits in the requested display order, e.g., ``[-100,200]`` or + ``[200,-100]``. Separate limits for multiple plots with spaces, e.g., + ``[-100,200] [500,0]`` (empty by default). + +``-y``, ``--ylim`` + Y-axis limits in the requested display order, e.g., ``[0,70]`` or + ``[70,0]``. Separate limits for multiple plots with spaces, e.g., + ``[0,10000] [0,23000]`` (empty by default). + +``-z``, ``--scale`` + Scale the axes equally in 2D maps: ``0`` or ``1`` (``1`` by default). + +``-xlog`` + Enable the logarithmic x-axis using ``0`` or ``1``. Comma-separated + settings are accepted when different plots require different values + (``0`` by default). + +``-ylog`` + Enable the logarithmic y-axis using ``0`` or ``1``. Comma-separated + settings are accepted when different plots require different values + (``0`` by default). + +``-log`` + Enable logarithmic color scaling using ``0`` or ``1``. Separate settings + for multiple variables with commas, e.g., ``1,1,0`` (``0`` by default). + +``-clogthks`` + Tick values for logarithmic color scales, enclosed by brackets and + separated by commas, e.g., ``[1,10,100]``. At least one corresponding + ``-log`` setting must be ``1`` (empty by default). + +``-a``, ``--adjust`` + Scaling factor applied to variable values, e.g., ``1e-9`` to display CO2 + mass in Mt. Separate factors for multiple variables or plots with commas, + e.g., ``1e-5,1`` (``1`` by default). + +``-xformat`` + X-axis number format, e.g., ``.2e`` (empty by default, i.e., set by + plopm). + +``-yformat`` + Y-axis number format, e.g., ``.1f`` (empty by default, i.e., set by + plopm). + +``-cformat`` + Colorbar number format, e.g., ``.2f`` (empty by default, i.e., set by + plopm). + +``-xlnum`` + Number of x-axis ticks (``5`` by default). + +``-ylnum`` + Number of y-axis ticks (``5`` by default). + +``-cnum`` + Number of colorbar ticks. Separate values for multiple plots with commas, + e.g., ``3,6,2`` (empty by default, i.e., set by plopm). + +``-cticks`` + Colorbar tick labels enclosed by brackets and separated by commas, e.g., + ``[G,F,E,D,C,ESF]`` (empty by default). + +``-xunits`` + Spatial-map x-axis units: ``mm``, ``cm``, ``m``, or ``km`` (``m`` by + default). + +``-yunits`` + Spatial-map y-axis units: ``mm``, ``cm``, ``m``, or ``km`` (``m`` by + default). + +``-subfigs`` + Subplot rows and columns separated by a comma, e.g., ``2,2`` for four + subplots (empty by default, i.e., separate figures). + +``-loc`` + Legend location passed to ``matplotlib.pyplot.legend``: ``best``, + ``upper right``, ``upper left``, ``lower left``, ``lower right``, ``right``, + ``center left``, ``center right``, ``lower center``, ``upper center``, or + ``center``. Use ``empty`` to remove the legend (``best`` by default). + +``-labels`` + Summary-plot legend labels, separated by two spaces, e.g., + ``Reference case Modified case`` (empty by default, i.e., set by plopm). + +``-lw`` + Line widths separated by commas, e.g., ``1,2,1.5`` (empty by default, + i.e., set by plopm). + +``-e``, ``--linestyle`` + Line styles separated by commas, e.g., ``solid,dotted`` (empty by default, + i.e., set by plopm). + +``-axgrid`` + Display the summary-plot axis grid: ``0`` or ``1`` (``1`` by default). + +``-remove`` + Remove the left axis, bottom axis, colorbar, and title using four + comma-separated values of ``0`` or ``1`` (``0,0,0,0`` by default). + +``-how`` + Aggregation or selection method for 2D slices and projections. Supported + values are ``min``, ``max``, ``sum``, ``mean``, ``pvmean``, ``harmonic``, + ``arithmetic``, ``first``, and ``last``. Separate methods for multiple + variables or plots with commas, e.g., ``first,arithmetic,max``. + + By default, continuous variables are pore-volume weighted, extensive + quantities are summed, indices retain discrete values, and permeabilities + use directional harmonic or arithmetic averaging. For wells and faults, + ``min`` shows cells containing at least one occurrence, while ``max`` + requires all projected cells to contain one (empty by default, i.e., + selected automatically). + +``-global`` + Use the current slice range (``0``) or the whole 3D-model range (``1``) + for color scaling (``0`` by default). + +``-filter`` + Cell-selection conditions. Join conditions for one input with ``&`` and + separate filters for different inputs with commas, e.g., + ``fluxnum == 2 & sgas >= 0.2, satnum != 5`` (empty by default). Dynamic + variables such as ``sgas`` require ``RPORV`` in ``RPTRST``. + +``-vmin`` + Minimum threshold used to remove variable values (empty by default). + +``-vmax`` + Maximum threshold used to remove variable values (empty by default). + +``-mask`` + Static variable used as the 2D-map background (empty by default). + +``-maskthr`` + Threshold for the variable supplied through ``-mask`` (``1e-3`` by + default). + +``-ensemble`` + Ensemble plotting mode: ``1`` for mean and error bands, ``2`` for minimum, + mean, and maximum, or ``3`` for both. Use ``0`` to disable ensemble + plotting (``0`` by default). + +``-bandprop`` + Fill colors and alpha values as comma-separated pairs, e.g., + ``r,0.1,g,0.2``. Used with ``-ensemble 1`` or ``-ensemble 3`` (empty by + default, i.e., the mean color with alpha 0.2). + +``-histogram`` + Histogram bins and optional distribution, e.g., ``20``, ``20,norm``, or + ``20,lognorm``. Separate specifications for multiple plots with spaces, + e.g., ``50,norm 20,lognorm 100`` (empty by default, i.e., no histogram). + +``-distance`` + Compute the minimum or maximum distance to a sensor or lateral border: + ``min,sensor``, ``max,sensor``, ``min,border``, or ``max,border``. For a + sensor, provide its ``i,j,k`` location with ``-s``, e.g., + ``-s 1,2,3 -v "sgas > 1e-2" -distance max,sensor`` (empty by default). + +``-stress`` + Stress coefficient used to compute pressure limits for ``limipres``, + ``overpres``, and ``objepres`` (``0.134`` by default). + +``-rotate`` + Grid rotation angle in degrees for 2D maps (``0`` by default). + +``-translate`` + Grid translation in the x and y directions, e.g., ``[100,-50]`` + (``[0,0]`` by default). + +``-csv`` + CSV column indices, starting at 1. Use ``t,value`` for a time series or + ``x,y,value`` for a spatial map. Separate specifications for different + inputs with semicolons; an empty specification skips the corresponding + input, e.g., ``;1,2,5`` or ``1,3;`` (empty by default). + +``-tunits`` + Summary x-axis time units: ``s``, ``m``, ``h``, ``d``, ``w``, ``y``, + ``dates``, ``empty``, or ``tstep`` (``d`` by default). + +``-save`` + Output file name (empty by default, i.e., set by plopm). + +``-p``, ``--path`` + Path or command for the Flow executable, e.g., ``/home/build/bin/flow``. + Used only to generate the grid for VTK output (``flow`` by default). + +``-vtkformat`` + VTK format for each variable: ``Float64``, ``Float32``, ``Float16``, + ``Int64``, ``UInt64``, ``Int32``, ``UInt32``, ``Int16``, ``UInt16``, + ``Int8``, or ``UInt8``. Separate formats for multiple variables with + commas (``Float64`` by default). This option applies only to VTK output. + +``-vtknames`` + Custom VTK variable names separated by commas (empty by default, i.e., use + the names supplied through ``-v``). This option applies only to VTK output. + +``-diff`` + Base name or full path of the input model to subtract (empty by default). + +``-ncolor`` + Color for inactive cells in 2D maps (``w`` by default, i.e., white). + +``-grid`` + ``pcolormesh`` edge color and line width separated by a comma, e.g., + ``black,1e-3`` (empty by default, i.e., no grid). + +``-cbsfax`` + Global colorbar position and size as ``left,bottom,width,height``, e.g., + ``0.40,0.01,0.2,0.02``. Use ``empty`` to remove it + (``0.40,0.01,0.2,0.02`` by default). + +``-delax`` + Remove duplicated axis labels in subplots: ``0`` or ``1`` (``0`` by + default). + +``-printv`` + Print the available variables: ``0`` or ``1`` (``0`` by default). + +``-dual`` + Enable dual-grid processing using ``0`` or ``1`` (``0`` by default). + +``-interval`` + GIF frame interval in milliseconds (``1000`` by default). This option + applies only to GIF output. + +``-loop`` + Loop GIFs indefinitely using ``0`` or ``1`` (``0`` by default). This + option applies only to GIF output. + +``-step`` + Use ``ax.step`` instead of ``ax.plot``: ``0`` or ``1`` (``0`` by + default). diff --git a/src/plopm/core/plopm.py b/src/plopm/core/plopm.py index 700a57e..38128cf 100644 --- a/src/plopm/core/plopm.py +++ b/src/plopm/core/plopm.py @@ -1,11 +1,14 @@ # SPDX-FileCopyrightText: 2024-2026 NORCE Research AS # SPDX-License-Identifier: GPL-3.0 -# pylint: disable=R1702,W0123,W1401,R0915 +# pylint: disable=C0302,R1702,W0123,W1401,R0912,R0914,R0915 """Postprocessing visualization tool for OPM Flow geological models""" import argparse +import re +import shlex import shutil +import subprocess from plopm.utils.initialization import ( ini_cfg, @@ -21,6 +24,7 @@ def main(argv=None) -> None: """Main function for the plopm executable""" cmdargs = load_parser(argv) + check_cmdargs(cmdargs) cfg = ini_cfg(cmdargs) print("\nExecuting plopm, please wait.") if cfg.vtk: @@ -374,7 +378,8 @@ def load_parser(argv: list[str] | None) -> dict: "--how", type=str.strip, default="", - help="Select aggregation method such as mean, pvmean, sum, harmonic, arithmetic", + help="Select aggregation method for the 2D and 1D proyections (min, max, sum, " + "mean, pvmean, harmonic, arithmetic, first, last)", ) parser.add_argument( "-global", @@ -541,7 +546,8 @@ def load_parser(argv: list[str] | None) -> dict: "--cbsfax", type=str.strip, default="0.40,0.01,0.2,0.02", - help="Set position of fig.add_axes([left, bottom, width, height])", + help="Set position of fig.add_axes([left, bottom, width, height])'; " + "set to 'empty' to remove it", ) parser.add_argument( "-delax", @@ -589,3 +595,504 @@ def load_parser(argv: list[str] | None) -> dict: help="Use ax.step instead of ax.plot", ) return vars(parser.parse_known_args(argv)[0]) + + +def check_cmdargs(cmdargs: dict[str, str]) -> None: + """Validate command-line arguments and incompatible operations. + + Parameters + ---------- + cmdargs + Parsed arguments returned by :func:`load_parser`. + + Raises + ------ + SystemExit + If an argument is invalid or an incompatible combination is requested. + """ + + def fail(message: str) -> None: + print(message) + raise SystemExit(1) + + def parse_number(option: str, value: str) -> float: + try: + number = float(value) + except ValueError: + fail(f"Invalid value '{option} {value}', expected a number.") + return number + + def parse_number_list( + option: str, + value: str, + expected_length: int | None = None, + ) -> list: + entries = value.split(",") + if expected_length is not None and len(entries) != expected_length: + fail( + f"Invalid value '{option} {value}', expected {expected_length} " + "numbers separated by commas." + ) + try: + numbers = [float(entry) for entry in entries] + except ValueError: + fail( + f"Invalid value '{option} {value}', expected numbers separated " + "by commas." + ) + return numbers + + mode = cmdargs["mode"] + vtk_mode = mode == "vtk" + gif_mode = mode == "gif" + number = r"[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?" + positive_integer = r"[1-9]\d*" + non_negative_integer = r"\d+" + + if not cmdargs["input"]: + fail("Invalid value for '-i', the input cannot be empty.") + if not cmdargs["output"]: + fail("Invalid value for '-o', the output folder cannot be empty.") + if not cmdargs["variable"]: + fail("Invalid value for '-v', the variable cannot be empty.") + + positive_number_options = [ + ("-f", "size"), + ("-dpi", "dpi"), + ("-xlnum", "xlnum"), + ("-ylnum", "ylnum"), + ("-maskthr", "maskthr"), + ("-interval", "interval"), + ] + for option, name in positive_number_options: + value = parse_number(option, cmdargs[name]) + if value <= 0: + fail( + f"Invalid value '{option} {cmdargs[name]}', expected a positive " + "number." + ) + + number_options = [ + ("-stress", "stress"), + ("-rotate", "rotate"), + ] + for option, name in number_options: + parse_number(option, cmdargs[name]) + parse_number_list("-a", cmdargs["adjust"]) + + optional_number_options = [ + ("-vmin", "vmin"), + ("-vmax", "vmax"), + ] + for option, name in optional_number_options: + if cmdargs[name]: + parse_number(option, cmdargs[name]) + + if ( + cmdargs["vmin"] + and cmdargs["vmax"] + and float(cmdargs["vmin"]) > float(cmdargs["vmax"]) + ): + fail( + f"Invalid values '-vmin {cmdargs['vmin']}' and " + f"'-vmax {cmdargs['vmax']}', the minimum threshold must not " + "be greater than the maximum threshold." + ) + + colorbar_tick_numbers = cmdargs["cnum"] + if colorbar_tick_numbers: + cnum_entries = colorbar_tick_numbers.split(",") + if any(not re.fullmatch(positive_integer, entry) for entry in cnum_entries): + fail( + f"Invalid value '-cnum {colorbar_tick_numbers}', expected " + "positive integers separated by commas." + ) + + boolean_options = [ + ("-xlog", "xlog"), + ("-ylog", "ylog"), + ("-log", "log"), + ("-dual", "dual"), + ("-loop", "loop"), + ] + for option, name in boolean_options: + values = cmdargs[name].split(",") + if any(value not in ["0", "1"] for value in values): + fail( + f"Invalid value '{option} {cmdargs[name]}', expected values " + "containing only 0 or 1, separated by commas." + ) + + dimensions = parse_number_list( + "-d", + cmdargs["dimensions"], + 2, + ) + if any(value <= 0 for value in dimensions): + fail( + f"Invalid value '-d {cmdargs['dimensions']}', figure dimensions " + "must be positive." + ) + + translation = cmdargs["translate"] + if not re.fullmatch( + rf"\[\s*{number}\s*,\s*{number}\s*\]", + translation, + ): + fail( + f"Invalid value '-translate {translation}', expected two numbers " + "enclosed by brackets, e.g., '-translate [10,-5]'." + ) + + interval_pattern = re.compile(rf"\[\s*({number})\s*,\s*({number})\s*\]") + for option, name in [ + ("-b", "bounds"), + ("-x", "xlim"), + ("-y", "ylim"), + ]: + valu = cmdargs[name] + if not valu: + continue + for interval_value in valu.split(): + if not interval_pattern.fullmatch(interval_value): + fail( + f"Invalid value '{option} {interval_value}', expected two " + "numeric bounds enclosed by brackets, e.g., '[0,10]'." + ) + + aggregation_methods = cmdargs["how"] + if aggregation_methods: + valid_aggregation_methods = [ + "min", + "max", + "sum", + "mean", + "pvmean", + "harmonic", + "arithmetic", + "first", + "last", + ] + method_entries = aggregation_methods.split(",") + if any(method not in valid_aggregation_methods for method in method_entries): + fail( + f"Invalid value '-how {aggregation_methods}', valid methods are " + f"{', '.join(valid_aggregation_methods)}." + ) + + slide = cmdargs["slide"] + slides = slide.split() + slide_entry_pattern = re.compile( + rf"(?:{positive_integer}|" rf"{positive_integer}:{positive_integer}|:)?" + ) + if not slides: + fail("Invalid value for '-s', the slide selection cannot be empty.") + + slide_entries = [] + for selection in slides: + entries = selection.split(",") + if len(entries) != 3 or any( + not slide_entry_pattern.fullmatch(entry) for entry in entries + ): + fail( + f"Invalid value '-s {selection}', expected three i,j,k entries " + "separated by commas, using positive indices, ':', or ranges." + ) + if all(not entry for entry in entries): + fail( + f"Invalid value '-s {selection}', at least one slide entry must " + "be provided." + ) + colon_entries = 0 + for entry in entries: + if ":" not in entry: + continue + colon_entries += 1 + if entry != ":": + start, end = (int(index) for index in entry.split(":")) + if start > end: + fail( + f"Invalid range '{entry}' in '-s {selection}', the end " + "must not be smaller than the start." + ) + if colon_entries > 1: + fail( + f"Invalid value '-s {selection}', only one slide direction can " + "contain ':' or an index range." + ) + slide_entries.append(entries) + + restart = cmdargs["restart"] + restart_pattern = re.compile( + rf"(?:-1|" + rf"{non_negative_integer}(?:,{non_negative_integer})*|" + rf"{non_negative_integer}:{non_negative_integer}" + rf"(?::{positive_integer})?)" + ) + if not restart_pattern.fullmatch(restart): + fail( + f"Invalid value '-r {restart}', expected '-1', non-negative " + "restart indices separated by commas, or 'start:end[:step]'." + ) + + if ":" in restart: + restart_range = [int(value) for value in restart.split(":")] + if restart_range[0] > restart_range[1]: + fail( + f"Invalid range '-r {restart}', the end must not be smaller " + "than the start." + ) + + list_options = [ + ("-c", "colors"), + ("-e", "linestyle"), + ] + for option, name in list_options: + valu = cmdargs[name] + if valu and any(not entry for entry in valu.split(",")): + fail(f"Invalid value '{option} {valu}', entries cannot be empty.") + + line_widths = cmdargs["lw"] + if line_widths: + width_values = parse_number_list("-lw", line_widths) + if any(width <= 0 for width in width_values): + fail(f"Invalid value '-lw {line_widths}', line widths must be " "positive.") + + remove = cmdargs["remove"] + remove_entries = remove.split(",") + if len(remove_entries) != 4 or any( + entry not in ["0", "1"] for entry in remove_entries + ): + fail( + f"Invalid value '-remove {remove}', expected four values " + "containing only 0 or 1." + ) + + subfigs = cmdargs["subfigs"] + if subfigs: + subfig_entries = subfigs.split(",") + if len(subfig_entries) != 2 or any( + not re.fullmatch(positive_integer, entry) for entry in subfig_entries + ): + fail( + f"Invalid value '-subfigs {subfigs}', expected two positive " + "integers separated by a comma, e.g., '-subfigs 2,2'." + ) + + colorbar_axis = cmdargs["cbsfax"] + if colorbar_axis != "empty": + colorbar_axis_values = parse_number_list( + "-cbsfax", + colorbar_axis, + 4, + ) + if colorbar_axis_values[0] < 0 or colorbar_axis_values[1] < 0: + fail( + f"Invalid value '-cbsfax {colorbar_axis}', the left and bottom " + "positions cannot be negative." + ) + if colorbar_axis_values[2] <= 0 or colorbar_axis_values[3] <= 0: + fail( + f"Invalid value '-cbsfax {colorbar_axis}', width and height " + "must be positive." + ) + + grid = cmdargs["grid"] + if grid: + grid_entries = grid.split(",") + if len(grid_entries) != 2 or not grid_entries[0] or not grid_entries[1]: + fail( + f"Invalid value '-grid {grid}', expected a color and line " + "width separated by a comma." + ) + if parse_number("-grid", grid_entries[1]) < 0: + fail(f"Invalid value '-grid {grid}', the line width cannot be " "negative.") + + csv_columns = cmdargs["csv"] + if csv_columns: + csv_specifications = csv_columns.split(";") + for specification in csv_specifications: + if not specification: + continue + column_entries = specification.split(",") + if len(column_entries) not in [2, 3] or any( + not re.fullmatch(positive_integer, entry) for entry in column_entries + ): + fail( + f"Invalid value '-csv {csv_columns}', each non-empty " + "specification must contain two column indices for a time " + "series or three column indices for a spatial map." + ) + if len(set(column_entries)) != len(column_entries): + fail( + f"Invalid value '-csv {csv_columns}', column indices within " + "each specification must be different." + ) + + histogram = cmdargs["histogram"] + if histogram: + histogram_specifications = histogram.split() + for specification in histogram_specifications: + histogram_entries = specification.split(",") + if len(histogram_entries) not in [1, 2]: + fail( + f"Invalid value '-histogram {specification}', expected " + "'bins', 'bins,norm', or 'bins,lognorm'." + ) + if not re.fullmatch( + positive_integer, + histogram_entries[0], + ): + fail( + f"Invalid value '-histogram {specification}', the number " + "of bins must be a positive integer." + ) + if len(histogram_entries) == 2 and histogram_entries[1] not in [ + "norm", + "lognorm", + ]: + fail( + f"Invalid value '-histogram {specification}', supported " + "distributions are 'norm' and 'lognorm'." + ) + + band_properties = cmdargs["bandprop"] + if band_properties: + band_entries = band_properties.split(",") + if len(band_entries) % 2 != 0 or any(not color for color in band_entries[::2]): + fail( + f"Invalid value '-bandprop {band_properties}', expected " + "color and alpha pairs." + ) + try: + alpha_values = [float(alpha) for alpha in band_entries[1::2]] + except ValueError: + alpha_values = [] + if not alpha_values or any(alpha < 0 or alpha > 1 for alpha in alpha_values): + fail( + f"Invalid value '-bandprop {band_properties}', alpha values " + "must be between 0 and 1." + ) + if cmdargs["ensemble"] not in ["1", "3"]: + fail( + "Invalid combination, '-bandprop' can only be used with " + "'-ensemble 1' or '-ensemble 3'." + ) + + log_values = cmdargs["log"].split(",") + if any(value not in ["0", "1"] for value in log_values): + fail( + f"Invalid value '-log {cmdargs['log']}', expected values containing " + "only 0 or 1, separated by commas." + ) + + if cmdargs["clogthks"] and "1" not in log_values: + fail( + "Invalid combination, '-clogthks' requires at least one logarithmic " + "color scale enabled with '-log'." + ) + + if cmdargs["maskthr"] != "1e-3" and not cmdargs["mask"]: + fail( + "Invalid combination, '-maskthr' can only be changed when '-mask' " + "is used." + ) + + if ( + cmdargs["distance"] + and "sensor" in cmdargs["distance"] + and any( + any(not re.fullmatch(positive_integer, entry) for entry in entries) + for entries in slide_entries + ) + ): + fail( + "Invalid combination, a sensor distance requires each location " + "provided with '-s' to contain three positive indices." + ) + + vtk_names = cmdargs["vtknames"] + if vtk_names: + vtk_name_entries = vtk_names.split(",") + if any(not name for name in vtk_name_entries): + fail( + f"Invalid value '-vtknames {vtk_names}', VTK variable names " + "cannot be empty." + ) + + valid_vtk_formats = [ + "Float64", + "Float32", + "Float16", + "Int64", + "UInt64", + "Int32", + "UInt32", + "Int16", + "UInt16", + "Int8", + "UInt8", + ] + vtk_formats = cmdargs["vtkformat"].split(",") + if any(vtk_format not in valid_vtk_formats for vtk_format in vtk_formats): + fail( + f"Invalid value '-vtkformat {cmdargs['vtkformat']}', valid " + f"formats are {', '.join(valid_vtk_formats)}." + ) + + vtk_options = { + "-p": ("path", "flow"), + "-vtkformat": ("vtkformat", "Float64"), + "-vtknames": ("vtknames", ""), + } + if not vtk_mode: + invalid_options = [ + option + for option, (name, default) in vtk_options.items() + if cmdargs[name] != default + ] + if invalid_options: + fail( + f"Invalid option for '-m {mode}', the following options can " + f"only be used with '-m vtk': {', '.join(invalid_options)}." + ) + else: + try: + flow_arguments = shlex.split(cmdargs["path"]) + except ValueError: + flow_arguments = [] + + if not flow_arguments: + fail(f"Invalid OPM Flow command '-p {cmdargs['path']}'.") + + try: + flow_result = subprocess.run( + [*flow_arguments, "-h"], + stdout=subprocess.DEVNULL, + stderr=subprocess.STDOUT, + check=False, + ) + except OSError: + flow_result = None + + if flow_result is None or flow_result.returncode != 0: + fail( + f"The OPM Flow executable '-p {cmdargs['path']}' is not " + "available or not working." + ) + + if not gif_mode: + gif_options = { + "-interval": ("interval", "1000"), + "-loop": ("loop", "0"), + } + invalid_options = [ + option + for option, (name, default) in gif_options.items() + if cmdargs[name] != default + ] + if invalid_options: + fail( + f"Invalid option for '-m {mode}', the following options can " + f"only be used with '-m gif': {', '.join(invalid_options)}." + ) diff --git a/tests/scripts/docs_all.sh b/tests/scripts/docs_all.sh index 4236a67..2c8ca45 100644 --- a/tests/scripts/docs_all.sh +++ b/tests/scripts/docs_all.sh @@ -28,3 +28,5 @@ wait . tests/scripts/docs_gif_mask.sh & . tests/scripts/docs_graphical_abstract.sh & wait + +. tests/scripts/docs_check_outputs.sh diff --git a/tests/scripts/docs_caprock_integrity.sh b/tests/scripts/docs_caprock_integrity.sh index a54a210..3e88436 100644 --- a/tests/scripts/docs_caprock_integrity.sh +++ b/tests/scripts/docs_caprock_integrity.sh @@ -3,5 +3,5 @@ OUT="test_outputs/docs_caprock_integrity" . tests/scripts/initialize_output_folders.sh $OUT . tests/scripts/get_opm_data.sh . tests/scripts/run_norne.sh -plopm -i $WHR -o $OUT -s ',,1:22 ,,1:22' -v limipres,overpres -rotate 65 -translate '[6456335.5,-3476500]' -x '[0,5600]' -y '[0,8800]' -d 15,10 -c Spectral,spring, -subfigs 1,2 -delax 1 +plopm -i $WHR -o $OUT -s ',,1:22 ,,1:22' -v limipres,overpres -rotate 65 -translate '[6456335.5,-3476500]' -x '[0,5600]' -y '[0,8800]' -d 15,10 -c Spectral,spring -subfigs 1,2 -delax 1 plopm -i $WHR -o $OUT -m csv -v objepres -s ',,1:22' diff --git a/tests/scripts/docs_check_outputs.sh b/tests/scripts/docs_check_outputs.sh new file mode 100644 index 0000000..ebe5505 --- /dev/null +++ b/tests/scripts/docs_check_outputs.sh @@ -0,0 +1,70 @@ +files=( + "test_outputs/docs_caprock_integrity/norne_atw2013_overpres_i,j,1:22_t241.png" + "test_outputs/docs_caprock_integrity/norne_atw2013_objepres_i,j,1:22_t241.csv" + "test_outputs/docs_colormaps/spe11b_disperc_i,1,k_t5.png" + "test_outputs/docs_projections_subfigures/norne_atw2013_poro_i,j,1:22_t241.png" + "test_outputs/docs_graphical_abstract/SPE11C-0000.vtu" + "test_outputs/docs_graphical_abstract/SPE11C-GRID.vtu" + "test_outputs/docs_graphical_abstract/SPE11C-0005.vtu" + "test_outputs/docs_graphical_abstract/norne_atw2013_permx_i,j,1_t241.png" + "test_outputs/docs_graphical_abstract/SPE11C.pvd" + "test_outputs/docs_graphical_abstract/spe11b_base_fgmip*1e-6.png" + "test_outputs/docs_different_files_and_ensembles/example3_formated.png" + "test_outputs/docs_different_files_and_ensembles/example0.png" + "test_outputs/docs_different_files_and_ensembles/comparison.png" + "test_outputs/docs_different_files_and_ensembles/spe11b_larger_inj_sgas_i,1,k_t3.png" + "test_outputs/docs_different_files_and_ensembles/formated.png" + "test_outputs/docs_histograms/norne_atw2013_permx.png" + "test_outputs/docs_reading_csvs/spe11b_time_series_bwpr-256,1,5.png" + "test_outputs/docs_reading_csvs/spe11b_spatial_map_500y_xco2l__t100.png" + "test_outputs/docs_reading_csvs/spe11b_spatial_map_250y_csv__t-1.png" + "test_outputs/docs_reading_csvs/spe11b_time_series_csv.png" + "test_outputs/docs_rotation_translation_zoom/norne_atw2013_permz_i,j,1_t241.png" + "test_outputs/docs_rotation_translation_zoom/norne_atw2013_poro_i,j,1_t241.png" + "test_outputs/docs_rotation_translation_zoom/norne_atw2013_permx_i,j,1_t241.png" + "test_outputs/docs_rotation_translation_zoom/norne_wells_global.png" + "test_outputs/docs_rotation_translation_zoom/norne_wells.png" + "test_outputs/docs_rotation_translation_zoom/norne_atw2013_faults_i,j,1:22_t241.png" + "test_outputs/docs_rotation_translation_zoom/norne_atw2013_satnum_i,j,1_t241.png" + "test_outputs/docs_rotation_translation_zoom/norne_atw2013_fipnum_i,j,1_t241.png" + "test_outputs/docs_rotation_translation_zoom/norne_atw2013_porv_i,j,1_t241.png" + "test_outputs/docs_rotation_translation_zoom/norne_atw2013_faults_i,j,1_t241.png" + "test_outputs/docs_convert_to_vtk/SPE11B-0000.vtu" + "test_outputs/docs_convert_to_vtk/SPE11B-GRID.vtu" + "test_outputs/docs_convert_to_vtk/SPE11B-0005.vtu" + "test_outputs/docs_convert_to_vtk/SPE11B.pvd" + "test_outputs/docs_gif_mask/xco2l.gif" + "test_outputs/docs_gif_mask/spe11b_base_sgas.gif" + "test_outputs/docs_hello_world/spe11b_satnum_i,1,k_t5.png" + "test_outputs/docs_hello_world/spe11b_permz_i,1,k_t5.png" + "test_outputs/docs_hello_world/spe11b_porv_i,1,k_t5.png" + "test_outputs/docs_hello_world/spe11b_poro_i,1,k_t5.png" + "test_outputs/docs_hello_world/spe11b_pressure-0pressure.png" + "test_outputs/docs_hello_world/spe11b_fgip.png" + "test_outputs/docs_hello_world/spe11b_permx_i,1,k_t5.png" + "test_outputs/docs_hello_world/spe11b_fipnum_i,1,k_t5.png" + "test_outputs/docs_hello_world/spe11b_sgas_i,1,k_t4.png" + "test_outputs/docs_filters/spe11b_fipnum_i,1,k_t5.png" + "test_outputs/docs_generic_deck/spe10_model2_grid_i,j,1_t0.png" + "test_outputs/docs_generic_deck/spe10_model2_wells_i,j,1_t0.png" + "test_outputs/docs_generic_deck/spe10_model2_permz_i,4,k_t0.png" +) + +missing_file="test_outputs/missing_docs_files.txt" +missing=0 + +rm -f "$missing_file" + +for f in "${files[@]}"; do + if [[ ! -f "$f" ]]; then + echo "$f" >> "$missing_file" + ((missing++)) + fi +done + +if (( missing == 0 )); then + echo "All figures and files exist." +else + echo "$missing figure(s) or file(s) missing." + echo "See $missing_file" +fi diff --git a/tests/test_copilot_suggestions.py b/tests/test_copilot_suggestions.py index c978aa8..03b71b7 100644 --- a/tests/test_copilot_suggestions.py +++ b/tests/test_copilot_suggestions.py @@ -1580,7 +1580,7 @@ def test_3dbox_grid_wells_faults_all_directions(tmp_path): for name, slide, how, save in zip( ["grid", "wells", "wells", "faults", "faults"], ["2,,", ",2,", ",,2", ",2,", ",,2"], - ["", "min", "max", "min", "max"], + ["max", "min", "max", "min", "max"], [ "box_grid_i", "box_wells_j_min", @@ -2266,8 +2266,7 @@ def test_line_styles_and_widths(tmp_path): def test_colorbar_and_logscale(tmp_path): - for log, clog, save in zip( - ["0", "1"], + for clog, save in zip( ["[1,2,5]", "[1,10,100]"], ["clog1", "clog2"], ): @@ -2278,7 +2277,7 @@ def test_colorbar_and_logscale(tmp_path): "-v", "pressure", "-log", - log, + "1", "-clogthks", clog, "-o", @@ -3067,9 +3066,8 @@ def test_point_and_line_extractions(tmp_path): def test_grid_and_wells_variables(tmp_path): - for name, how, save in zip( + for name, save in zip( ["grid", "wells"], - ["", "min"], ["grid_variable", "wells_variable"], ): main( @@ -3080,8 +3078,6 @@ def test_grid_and_wells_variables(tmp_path): name, "-s", ",1,", - "-how", - how, "-o", str(tmp_path), "-save",