diff --git a/actionx/ACTIONX_GLIFTOPT.DATA b/actionx/ACTIONX_GLIFTOPT.DATA new file mode 100644 index 000000000..00082a41a --- /dev/null +++ b/actionx/ACTIONX_GLIFTOPT.DATA @@ -0,0 +1,404 @@ +-- This reservoir simulation deck is made available under the Open Database +-- License: http://opendatacommons.org/licenses/odbl/1.0/. Any rights in +-- individual contents of the database are licensed under the Database Contents +-- License: http://opendatacommons.org/licenses/dbcl/1.0/ + +-- Copyright (C) 2015-2024 Equinor ASA + +-- This model is based on the ../model5/4GLIFT_MODEL5.DATA model and has been modified +-- to test the GLIFTOPT keyword with the ACTIONX keyword. +-- The passage contianing GLIFTOPT in ../model5/4GLIFT_MODEL5.DATA has been moved to ACT-01 in this +-- file and will be triggered on 1st of February 2020 instead of at the very beginning. + +------------------------------------------------------------------------------------------------ +RUNSPEC +------------------------------------------------------------------------------------------------ + + +DIMENS + 20 30 10 / + + +OIL +WATER +GAS +DISGAS +--VAPOIL + +METRIC + +START + 01 'JAN' 2020 / + +-- +GRIDOPTS + 'YES' 0 / + +EQLDIMS + 1 1* 25 / + + +NETWORK + 3 2 / + + +REGDIMS +-- max. ntfip nmfipr max. nrfreg max. ntfreg + 3 2 1* 2 / + +-- +TABDIMS +--ntsfun ntpvt max.nssfun max.nppvt max.ntfip max.nrpvt + 1 1 150 60 2 60 / + +-- +WELLDIMS +--max.well max.con/well max.grup max.w/grup + 10 15 9 10 / + +--FLOW THP WCT GCT ALQ VFP +VFPPDIMS + 22 13 10 13 13 50 / + + + +UNIFIN +UNIFOUT + +--------------------------------------------------------------------------- +MESSAGES +-- --------print limits---------- +-- mess comm warn prob err bug + 80000 10000 5000000 5000 300 1 +----------stop limits------------ +-- mess comm warn prob err bug + 80000 10000 5000000 80000 10 1 / + + +------------------------------------------------------------------------------------------------ +GRID +------------------------------------------------------------------------------------------------ + +-- +NEWTRAN + +-- +GRIDFILE + 0 1/ + +-- +GRIDUNIT +METRES / + +-- +INIT + + +INCLUDE + '../model5/include/test1_20x30x10.grdecl' / + + +PORO + 6000*0.28 / + +PERMX + 6000*10000.0 / + +PERMZ + 6000*1000.0 / + + +COPY + PERMX PERMY / +/ + + +RPTGRID + 'ALLNNC' / + +EQUALS + 'MULTY' 0.01 1 20 14 14 1 10 / +/ + + +------------------------------------------------------------------------------------------------ +EDIT +------------------------------------------------------------------------------------------------ + + +------------------------------------------------------------------------------------------------ +PROPS +------------------------------------------------------------------------------------------------ + +NOECHO + +INCLUDE + '../model5/include/pvt_live_oil_dgas.ecl' / + + +INCLUDE + '../model5/include/rock.inc' / + +INCLUDE + '../model5/include/relperm.inc' / + + +------------------------------------------------------------------------------------------------ +REGIONS +------------------------------------------------------------------------------------------------ + +EQLNUM + 6000*1 / + +FIPNUM + 6000*1 / + +SATNUM + 6000*1 / + +FIPABC +2000*1 2000*2 2000*3 / + + +------------------------------------------------------------------------------------------------ +SOLUTION +------------------------------------------------------------------------------------------------ + + +RPTRST + 'BASIC = 2' 'PBPD' / + +EQUIL +-- Datum P woc Pc goc Pc Rsvd Rvvd + 2000.00 195.0 2070 0.0 500.00 0.0 1 0 0 / + +PBVD + 2000.00 75.00 + 2150.00 75.00 / + + + +------------------------------------------------------------------------------------------------ +SUMMARY +------------------------------------------------------------------------------------------------ + + +INCLUDE + '../model5/include/summary.inc' / + + + + + + +------------------------------------------------------------------------------------------------ +SCHEDULE +------------------------------------------------------------------------------------------------ +-- +-- FIELD +-- | +-- PLAT-A +-- ---------------+--------------------- +-- | | +-- M5S M5N +-- ---------+---------- -----+------- +-- | | | | +-- B1 G1 C1 F1 +-- ----+------ ---+--- ---+--- ---+--- +-- | | | | | | | | | +-- B-1H B-2H B-3H G-3H G-4H C-1H C-2H F-1H F-2H +-- + +TUNING + 0.5 1.0 / +/ +/ + + +GRUPTREE + 'PROD' 'FIELD' / + + 'M5S' 'PLAT-A' / + 'M5N' 'PLAT-A' / + + 'C1' 'M5N' / + 'F1' 'M5N' / + 'B1' 'M5S' / + 'G1' 'M5S' / + / + +RPTRST + 'BASIC=2' / + + +INCLUDE + '../model5/include/well_vfp.ecl' / + +INCLUDE + '../model5/include/flowl_b_vfp.ecl' / + +INCLUDE + '../model5/include/flowl_c_vfp.ecl' / + + +WELSPECS +--WELL GROUP IHEEL JHEEL DREF PHASE DRAD INFEQ SIINS XFLOW PRTAB DENS + 'B-1H' 'B1' 11 3 1* OIL 1* 1* SHUT 1* 1* 1* / + 'B-2H' 'B1' 4 7 1* OIL 1* 1* SHUT 1* 1* 1* / + 'B-3H' 'B1' 11 12 1* OIL 1* 1* SHUT 1* 1* 1* / + 'C-1H' 'C1' 13 20 1* OIL 1* 1* SHUT 1* 1* 1* / + 'C-2H' 'C1' 12 27 1* OIL 1* 1* SHUT 1* 1* 1* / +/ + +WELSPECS + 'F-1H' 'F1' 19 4 1* WATER 1* 1* SHUT 1* 1* 1* / + 'F-2H' 'F1' 19 12 1* WATER 1* 1* SHUT 1* 1* 1* / + 'G-3H' 'G1' 19 21 1* WATER 1* 1* SHUT 1* 1* 1* / + 'G-4H' 'G1' 19 25 1* WATER 1* 1* SHUT 1* 1* 1* / +/ + +COMPDAT +--WELL I J K1 K2 OP/SH SATN TRAN WBDIA KH SKIN DFACT DIR PEQVR + 'B-1H' 11 3 1 5 OPEN 1* 1* 0.216 1* 0 1* Z 1* / + 'B-2H' 4 7 1 6 OPEN 1* 1* 0.216 1* 0 1* Z 1* / + 'B-3H' 11 12 1 4 OPEN 1* 1* 0.216 1* 0 1* Z 1* / + 'C-1H' 13 20 1 4 OPEN 1* 1* 0.216 1* 0 1* Z 1* / + 'C-2H' 12 27 1 5 OPEN 1* 1* 0.216 1* 0 1* Z 1* / +/ + +COMPDAT + 'F-1H' 19 4 6 10 OPEN 1* 1* 0.216 1* 0 1* Z 1* / + 'F-2H' 19 12 6 10 OPEN 1* 1* 0.216 1* 0 1* Z 1* / + 'G-3H' 19 21 6 10 OPEN 1* 1* 0.216 1* 0 1* Z 1* / + 'G-4H' 19 25 6 10 OPEN 1* 1* 0.216 1* 0 1* Z 1* / +/ + +WCONPROD +-- Well_name Status Ctrl Orate Wrate Grate Lrate RFV FBHP WHP VFP Glift + 'B-1H' OPEN ORAT 4000.0 1* 1* 6000.0 1* 100.0 30 1 1* / + 'B-2H' SHUT ORAT 4000.0 1* 1* 6000.0 1* 100.0 30 1 1* / + 'B-3H' OPEN ORAT 4000.0 1* 1* 6000.0 1* 100.0 30 1 1* / + 'C-1H' OPEN ORAT 4000.0 1* 1* 6000.0 1* 100.0 30 1 1* / + 'C-2H' SHUT ORAT 4000.0 1* 1* 6000.0 1* 100.0 30 1 1* / +/ + +GCONINJE + 'FIELD' 'WATER' 'VREP' 3* 1.020 'NO' 5* / +/ + +GCONPROD + 'PLAT-A' ORAT 10000 / +/ + +WCONINJE +-- Well_name Type Status Ctrl SRate1 Rrate BHP THP VFP + 'F-1H' WATER OPEN GRUP 4000 1* 225.0 1* 1* / + 'F-2H' WATER OPEN GRUP 4000 1* 225.0 1* 1* / + 'G-3H' WATER OPEN GRUP 4000 1* 225.0 1* 1* / + 'G-4H' WATER OPEN GRUP 4000 1* 225.0 1* 1* / +/ + + + +BRANPROP +-- Downtree Uptree #VFP ALQ + B1 PLAT-A 5 1* / + C1 PLAT-A 4 1* / +/ + +NODEPROP +-- Node_name Press autoChoke? addGasLift? Group_name + PLAT-A 21.0 NO NO 1* / + B1 1* NO YES 1* / + C1 1* NO YES 1* / +/ + +-- Turns on gas lift optimization +LIFTOPT + 12500 5E-3 0.0 YES / + +DATES + 2 JAN 2020 / +/ + +ACTIONX + ACT-01 / + DAY >= 1 AND / + MNTH = FEB AND / + YEAR = 2020 / +/ + +GLIFTOPT + 'PLAT-A' 200000 / -- +/ +GCONPROD + 'PLAT-A' ORAT 10000 / +/ + +ENDACTIO + +DATES + 1 FEB 2020 / + / + +DATES +1 MAR 2020 / +/ + +-- wells available for gas lift +-- minimum gas lift rate, enough to keep well flowing +WLIFTOPT + 'B-1H' YES 150000 1.01 -1.0 / + 'B-2H' YES 150000 1.01 -1.0 / + 'B-3H' YES 150000 1.01 -1.0 / + 'C-1H' YES 150000 1.01 -1.0 / + 'C-2H' YES 150000 1.01 -1.0 / +/ + +DATES + 1 FEB 2021 / +/ + + +WELOPEN + 'B-2H' OPEN / +/ + +DATES + 1 MAR 2021 / +/ + +WELOPEN + 'C-2H' OPEN / +/ + +DATES + 1 APR 2021 / +/ + +WELOPEN + 'B-3H' OPEN / +/ + +DATES + 1 MAY 2021 / + 1 JUN 2021 / + 1 JUL 2021 / + 1 AUG 2021 / + 1 SEP 2021 / + 1 OCT 2021 / + 1 NOV 2021 / + 1 DEC 2021 / +/ + + +DATES + 1 JAN 2022 / + 1 FEB 2022 / + 1 MAR 2022 / + 1 APR 2022 / + 1 MAY 2022 / +/ + + +END diff --git a/pyaction/PYACTION_GLIFTOPT_INSERT_KW.DATA b/pyaction/PYACTION_GLIFTOPT_INSERT_KW.DATA new file mode 100644 index 000000000..4815f98ee --- /dev/null +++ b/pyaction/PYACTION_GLIFTOPT_INSERT_KW.DATA @@ -0,0 +1,392 @@ +-- This reservoir simulation deck is made available under the Open Database +-- License: http://opendatacommons.org/licenses/odbl/1.0/. Any rights in +-- individual contents of the database are licensed under the Database Contents +-- License: http://opendatacommons.org/licenses/dbcl/1.0/ + +-- Copyright (C) 2015-2024 Equinor ASA + +-- This model is built from the ACTIONX_GLIFTOPT.DATA file that is based on the ../model5/4GLIFT_MODEL5.DATA +-- model and has been modified to test the GLIFTOPT keyword with the PYACTION keyword. +-- This model performs the same modifications as done with ACTIONX keywords in model ACTIONX_GLIFTOPT.DATA, but using +-- PYACTION instead of ACTIONX. + +------------------------------------------------------------------------------------------------ +RUNSPEC +------------------------------------------------------------------------------------------------ + + +DIMENS + 20 30 10 / + + +OIL +WATER +GAS +DISGAS +--VAPOIL + +METRIC + +START + 01 'JAN' 2020 / + +-- +GRIDOPTS + 'YES' 0 / + +EQLDIMS + 1 1* 25 / + + +NETWORK + 3 2 / + + +REGDIMS +-- max. ntfip nmfipr max. nrfreg max. ntfreg + 3 2 1* 2 / + +-- +TABDIMS +--ntsfun ntpvt max.nssfun max.nppvt max.ntfip max.nrpvt + 1 1 150 60 2 60 / + +-- +WELLDIMS +--max.well max.con/well max.grup max.w/grup + 10 15 9 10 / + +--FLOW THP WCT GCT ALQ VFP +VFPPDIMS + 22 13 10 13 13 50 / + + + +UNIFIN +UNIFOUT + +--------------------------------------------------------------------------- +MESSAGES +-- --------print limits---------- +-- mess comm warn prob err bug + 80000 10000 5000000 5000 300 1 +----------stop limits------------ +-- mess comm warn prob err bug + 80000 10000 5000000 80000 10 1 / + + +------------------------------------------------------------------------------------------------ +GRID +------------------------------------------------------------------------------------------------ + +-- +NEWTRAN + +-- +GRIDFILE + 0 1/ + +-- +GRIDUNIT +METRES / + +-- +INIT + + +INCLUDE + '../model5/include/test1_20x30x10.grdecl' / + + +PORO + 6000*0.28 / + +PERMX + 6000*10000.0 / + +PERMZ + 6000*1000.0 / + + +COPY + PERMX PERMY / +/ + + +RPTGRID + 'ALLNNC' / + +EQUALS + 'MULTY' 0.01 1 20 14 14 1 10 / +/ + + +------------------------------------------------------------------------------------------------ +EDIT +------------------------------------------------------------------------------------------------ + + +------------------------------------------------------------------------------------------------ +PROPS +------------------------------------------------------------------------------------------------ + +NOECHO + +INCLUDE + '../model5/include/pvt_live_oil_dgas.ecl' / + + +INCLUDE + '../model5/include/rock.inc' / + +INCLUDE + '../model5/include/relperm.inc' / + + +------------------------------------------------------------------------------------------------ +REGIONS +------------------------------------------------------------------------------------------------ + +EQLNUM + 6000*1 / + +FIPNUM + 6000*1 / + +SATNUM + 6000*1 / + +FIPABC +2000*1 2000*2 2000*3 / + + +------------------------------------------------------------------------------------------------ +SOLUTION +------------------------------------------------------------------------------------------------ + + +RPTRST + 'BASIC = 2' 'PBPD' / + +EQUIL +-- Datum P woc Pc goc Pc Rsvd Rvvd + 2000.00 195.0 2070 0.0 500.00 0.0 1 0 0 / + +PBVD + 2000.00 75.00 + 2150.00 75.00 / + + + +------------------------------------------------------------------------------------------------ +SUMMARY +------------------------------------------------------------------------------------------------ + + +INCLUDE + '../model5/include/summary.inc' / + + + + + + +------------------------------------------------------------------------------------------------ +SCHEDULE +------------------------------------------------------------------------------------------------ + +PYACTION +PYACTION_GLIFTOPT UNLIMITED / +'pyaction_gliftopt_insert_kw.py' / +-- +-- FIELD +-- | +-- PLAT-A +-- ---------------+--------------------- +-- | | +-- M5S M5N +-- ---------+---------- -----+------- +-- | | | | +-- B1 G1 C1 F1 +-- ----+------ ---+--- ---+--- ---+--- +-- | | | | | | | | | +-- B-1H B-2H B-3H G-3H G-4H C-1H C-2H F-1H F-2H +-- + +TUNING + 0.5 1.0 / +/ +/ + + +GRUPTREE + 'PROD' 'FIELD' / + + 'M5S' 'PLAT-A' / + 'M5N' 'PLAT-A' / + + 'C1' 'M5N' / + 'F1' 'M5N' / + 'B1' 'M5S' / + 'G1' 'M5S' / + / + +RPTRST + 'BASIC=2' / + + +INCLUDE + '../model5/include/well_vfp.ecl' / + +INCLUDE + '../model5/include/flowl_b_vfp.ecl' / + +INCLUDE + '../model5/include/flowl_c_vfp.ecl' / + + +WELSPECS +--WELL GROUP IHEEL JHEEL DREF PHASE DRAD INFEQ SIINS XFLOW PRTAB DENS + 'B-1H' 'B1' 11 3 1* OIL 1* 1* SHUT 1* 1* 1* / + 'B-2H' 'B1' 4 7 1* OIL 1* 1* SHUT 1* 1* 1* / + 'B-3H' 'B1' 11 12 1* OIL 1* 1* SHUT 1* 1* 1* / + 'C-1H' 'C1' 13 20 1* OIL 1* 1* SHUT 1* 1* 1* / + 'C-2H' 'C1' 12 27 1* OIL 1* 1* SHUT 1* 1* 1* / +/ + +WELSPECS + 'F-1H' 'F1' 19 4 1* WATER 1* 1* SHUT 1* 1* 1* / + 'F-2H' 'F1' 19 12 1* WATER 1* 1* SHUT 1* 1* 1* / + 'G-3H' 'G1' 19 21 1* WATER 1* 1* SHUT 1* 1* 1* / + 'G-4H' 'G1' 19 25 1* WATER 1* 1* SHUT 1* 1* 1* / +/ + +COMPDAT +--WELL I J K1 K2 OP/SH SATN TRAN WBDIA KH SKIN DFACT DIR PEQVR + 'B-1H' 11 3 1 5 OPEN 1* 1* 0.216 1* 0 1* Z 1* / + 'B-2H' 4 7 1 6 OPEN 1* 1* 0.216 1* 0 1* Z 1* / + 'B-3H' 11 12 1 4 OPEN 1* 1* 0.216 1* 0 1* Z 1* / + 'C-1H' 13 20 1 4 OPEN 1* 1* 0.216 1* 0 1* Z 1* / + 'C-2H' 12 27 1 5 OPEN 1* 1* 0.216 1* 0 1* Z 1* / +/ + +COMPDAT + 'F-1H' 19 4 6 10 OPEN 1* 1* 0.216 1* 0 1* Z 1* / + 'F-2H' 19 12 6 10 OPEN 1* 1* 0.216 1* 0 1* Z 1* / + 'G-3H' 19 21 6 10 OPEN 1* 1* 0.216 1* 0 1* Z 1* / + 'G-4H' 19 25 6 10 OPEN 1* 1* 0.216 1* 0 1* Z 1* / +/ + +WCONPROD +-- Well_name Status Ctrl Orate Wrate Grate Lrate RFV FBHP WHP VFP Glift + 'B-1H' OPEN ORAT 4000.0 1* 1* 6000.0 1* 100.0 30 1 1* / + 'B-2H' SHUT ORAT 4000.0 1* 1* 6000.0 1* 100.0 30 1 1* / + 'B-3H' OPEN ORAT 4000.0 1* 1* 6000.0 1* 100.0 30 1 1* / + 'C-1H' OPEN ORAT 4000.0 1* 1* 6000.0 1* 100.0 30 1 1* / + 'C-2H' SHUT ORAT 4000.0 1* 1* 6000.0 1* 100.0 30 1 1* / +/ + +GCONINJE + 'FIELD' 'WATER' 'VREP' 3* 1.020 'NO' 5* / +/ + +GCONPROD + 'PLAT-A' ORAT 10000 / +/ + +WCONINJE +-- Well_name Type Status Ctrl SRate1 Rrate BHP THP VFP + 'F-1H' WATER OPEN GRUP 4000 1* 225.0 1* 1* / + 'F-2H' WATER OPEN GRUP 4000 1* 225.0 1* 1* / + 'G-3H' WATER OPEN GRUP 4000 1* 225.0 1* 1* / + 'G-4H' WATER OPEN GRUP 4000 1* 225.0 1* 1* / +/ + + + +BRANPROP +-- Downtree Uptree #VFP ALQ + B1 PLAT-A 5 1* / + C1 PLAT-A 4 1* / +/ + +NODEPROP +-- Node_name Press autoChoke? addGasLift? Group_name + PLAT-A 21.0 NO NO 1* / + B1 1* NO YES 1* / + C1 1* NO YES 1* / +/ + +-- Turns on gas lift optimization +LIFTOPT + 12500 5E-3 0.0 YES / + +DATES + 2 JAN 2020 / +/ + +DATES + 1 FEB 2020 / + / + +DATES +1 MAR 2020 / +/ + +-- wells available for gas lift +-- minimum gas lift rate, enough to keep well flowing +WLIFTOPT + 'B-1H' YES 150000 1.01 -1.0 / + 'B-2H' YES 150000 1.01 -1.0 / + 'B-3H' YES 150000 1.01 -1.0 / + 'C-1H' YES 150000 1.01 -1.0 / + 'C-2H' YES 150000 1.01 -1.0 / +/ + +DATES + 1 FEB 2021 / +/ + + +WELOPEN + 'B-2H' OPEN / +/ + +DATES + 1 MAR 2021 / +/ + +WELOPEN + 'C-2H' OPEN / +/ + +DATES + 1 APR 2021 / +/ + +WELOPEN + 'B-3H' OPEN / +/ + +DATES + 1 MAY 2021 / + 1 JUN 2021 / + 1 JUL 2021 / + 1 AUG 2021 / + 1 SEP 2021 / + 1 OCT 2021 / + 1 NOV 2021 / + 1 DEC 2021 / +/ + + +DATES + 1 JAN 2022 / + 1 FEB 2022 / + 1 MAR 2022 / + 1 APR 2022 / + 1 MAY 2022 / +/ + + +END diff --git a/pyaction/pyaction_gliftopt_insert_kw.py b/pyaction/pyaction_gliftopt_insert_kw.py new file mode 100644 index 000000000..58d830102 --- /dev/null +++ b/pyaction/pyaction_gliftopt_insert_kw.py @@ -0,0 +1,30 @@ +# This Python reservoir simulation file is made available under the Open Database +# License: http://opendatacommons.org/licenses/odbl/1.0/. Any rights in +# individual contents of the database are licensed under the Database Contents +# License: http://opendatacommons.org/licenses/dbcl/1.0/ +# +# Copyright (C) 2015-2024 Equinor ASA + +import datetime +import opm_embedded + +summary_state = opm_embedded.current_summary_state +schedule = opm_embedded.current_schedule + +if (not 'setup_done' in locals()): + executed = False + setup_done = True + +current_time = schedule.start + datetime.timedelta(seconds=summary_state.elapsed()) + +if (current_time.day >= 2 and current_time.month == 1 and current_time.year == 2020 and not executed): + opm_embedded.OpmLog.info("PYACTION version of ACT-01 triggered at {}\n".format(current_time)) + kw = """ + GLIFTOPT + 'PLAT-A' 200000 / -- + / + GCONPROD + 'PLAT-A' ORAT 10000 / + /""" + schedule.insert_keywords(kw) + executed = True