Merge from upstream
This commit is contained in:
commit
f31bbf5b48
435
Makefile.am
435
Makefile.am
@ -31,230 +31,231 @@ $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS)
|
|||||||
#
|
#
|
||||||
# Please try to keep the list sorted.
|
# Please try to keep the list sorted.
|
||||||
|
|
||||||
libopmcore_la_SOURCES = \
|
libopmcore_la_SOURCES = \
|
||||||
opm/core/eclipse/EclipseGridInspector.cpp \
|
opm/core/GridManager.cpp \
|
||||||
opm/core/eclipse/EclipseGridParser.cpp \
|
opm/core/eclipse/EclipseGridInspector.cpp \
|
||||||
opm/core/fluid/blackoil/BlackoilPvtProperties.cpp \
|
opm/core/eclipse/EclipseGridParser.cpp \
|
||||||
opm/core/fluid/blackoil/SinglePvtDead.cpp \
|
opm/core/fluid/BlackoilPropertiesBasic.cpp \
|
||||||
opm/core/fluid/blackoil/SinglePvtLiveGas.cpp \
|
opm/core/fluid/BlackoilPropertiesFromDeck.cpp \
|
||||||
opm/core/fluid/blackoil/SinglePvtLiveOil.cpp \
|
opm/core/fluid/IncompPropertiesBasic.cpp \
|
||||||
opm/core/fluid/blackoil/SinglePvtInterface.cpp \
|
opm/core/fluid/IncompPropertiesFromDeck.cpp \
|
||||||
opm/core/fluid/BlackoilPropertiesBasic.cpp \
|
opm/core/fluid/PvtPropertiesBasic.cpp \
|
||||||
opm/core/fluid/BlackoilPropertiesFromDeck.cpp \
|
opm/core/fluid/PvtPropertiesIncompFromDeck.cpp \
|
||||||
opm/core/fluid/IncompPropertiesBasic.cpp \
|
opm/core/fluid/RockBasic.cpp \
|
||||||
opm/core/fluid/IncompPropertiesFromDeck.cpp \
|
opm/core/fluid/RockCompressibility.cpp \
|
||||||
opm/core/fluid/PvtPropertiesBasic.cpp \
|
opm/core/fluid/RockFromDeck.cpp \
|
||||||
opm/core/fluid/PvtPropertiesIncompFromDeck.cpp \
|
opm/core/fluid/SaturationPropsBasic.cpp \
|
||||||
opm/core/fluid/RockBasic.cpp \
|
opm/core/fluid/SaturationPropsFromDeck.cpp \
|
||||||
opm/core/fluid/RockCompressibility.cpp \
|
opm/core/fluid/blackoil/BlackoilPvtProperties.cpp \
|
||||||
opm/core/fluid/RockFromDeck.cpp \
|
opm/core/fluid/blackoil/SinglePvtDead.cpp \
|
||||||
opm/core/fluid/SaturationPropsBasic.cpp \
|
opm/core/fluid/blackoil/SinglePvtInterface.cpp \
|
||||||
opm/core/fluid/SaturationPropsFromDeck.cpp \
|
opm/core/fluid/blackoil/SinglePvtLiveGas.cpp \
|
||||||
opm/core/grid.c \
|
opm/core/fluid/blackoil/SinglePvtLiveOil.cpp \
|
||||||
opm/core/newwells.c \
|
opm/core/grid.c \
|
||||||
opm/core/GridManager.cpp \
|
opm/core/grid/cart_grid.c \
|
||||||
opm/core/grid/cart_grid.c \
|
opm/core/grid/cornerpoint_grid.c \
|
||||||
opm/core/grid/cornerpoint_grid.c \
|
opm/core/grid/cpgpreprocess/facetopology.c \
|
||||||
opm/core/grid/cpgpreprocess/geometry.c \
|
opm/core/grid/cpgpreprocess/geometry.c \
|
||||||
opm/core/grid/cpgpreprocess/preprocess.c \
|
opm/core/grid/cpgpreprocess/preprocess.c \
|
||||||
opm/core/grid/cpgpreprocess/readvector.cpp \
|
opm/core/grid/cpgpreprocess/readvector.cpp \
|
||||||
opm/core/grid/cpgpreprocess/sparsetable.c \
|
opm/core/grid/cpgpreprocess/sparsetable.c \
|
||||||
opm/core/grid/cpgpreprocess/facetopology.c \
|
opm/core/grid/cpgpreprocess/uniquepoints.c \
|
||||||
opm/core/grid/cpgpreprocess/uniquepoints.c \
|
opm/core/linalg/LinearSolverFactory.cpp \
|
||||||
opm/core/utility/MonotCubicInterpolator.cpp \
|
opm/core/linalg/LinearSolverInterface.cpp \
|
||||||
opm/core/utility/parameters/Parameter.cpp \
|
opm/core/linalg/sparse_sys.c \
|
||||||
opm/core/utility/parameters/ParameterGroup.cpp \
|
opm/core/newwells.c \
|
||||||
opm/core/utility/parameters/ParameterTools.cpp \
|
opm/core/pressure/CompressibleTpfa.cpp \
|
||||||
opm/core/utility/parameters/ParameterXML.cpp \
|
opm/core/pressure/FlowBCManager.cpp \
|
||||||
opm/core/utility/parameters/tinyxml/tinystr.cpp \
|
opm/core/pressure/IncompTpfa.cpp \
|
||||||
opm/core/utility/parameters/tinyxml/tinyxml.cpp \
|
opm/core/pressure/cfsh.c \
|
||||||
opm/core/utility/parameters/tinyxml/tinyxmlerror.cpp \
|
opm/core/pressure/flow_bc.c \
|
||||||
opm/core/utility/parameters/tinyxml/tinyxmlparser.cpp \
|
opm/core/pressure/fsh.c \
|
||||||
opm/core/utility/miscUtilities.cpp \
|
opm/core/pressure/fsh_common_impl.c \
|
||||||
opm/core/utility/miscUtilitiesBlackoil.cpp \
|
opm/core/pressure/ifsh.c \
|
||||||
opm/core/utility/StopWatch.cpp \
|
opm/core/pressure/mimetic/hybsys.c \
|
||||||
opm/core/utility/writeVtkData.cpp \
|
opm/core/pressure/mimetic/hybsys_global.c \
|
||||||
opm/core/wells/WellsManager.cpp \
|
opm/core/pressure/mimetic/mimetic.c \
|
||||||
opm/core/wells/WellsGroup.cpp \
|
opm/core/pressure/msmfem/coarse_conn.c \
|
||||||
opm/core/wells/WellCollection.cpp \
|
opm/core/pressure/msmfem/coarse_sys.c \
|
||||||
opm/core/wells/InjectionSpecification.cpp \
|
opm/core/pressure/msmfem/dfs.c \
|
||||||
opm/core/wells/ProductionSpecification.cpp \
|
opm/core/pressure/msmfem/hash_set.c \
|
||||||
opm/core/linalg/sparse_sys.c \
|
opm/core/pressure/msmfem/ifsh_ms.c \
|
||||||
opm/core/linalg/LinearSolverInterface.cpp \
|
opm/core/pressure/msmfem/partition.c \
|
||||||
opm/core/linalg/LinearSolverFactory.cpp \
|
opm/core/pressure/tpfa/cfs_tpfa.c \
|
||||||
opm/core/pressure/cfsh.c \
|
opm/core/pressure/tpfa/cfs_tpfa_residual.c \
|
||||||
opm/core/pressure/flow_bc.c \
|
opm/core/pressure/tpfa/compr_bc.c \
|
||||||
opm/core/pressure/FlowBCManager.cpp \
|
opm/core/pressure/tpfa/compr_quant.c \
|
||||||
opm/core/pressure/well.c \
|
opm/core/pressure/tpfa/compr_quant_general.c \
|
||||||
opm/core/pressure/fsh_common_impl.c \
|
opm/core/pressure/tpfa/compr_source.c \
|
||||||
opm/core/pressure/fsh.c \
|
opm/core/pressure/tpfa/ifs_tpfa.c \
|
||||||
opm/core/pressure/IncompTpfa.cpp \
|
opm/core/pressure/tpfa/trans_tpfa.c \
|
||||||
opm/core/pressure/CompressibleTpfa.cpp \
|
opm/core/pressure/well.c \
|
||||||
opm/core/pressure/tpfa/ifs_tpfa.c \
|
opm/core/simulator/SimulatorReport.cpp \
|
||||||
opm/core/pressure/tpfa/compr_source.c \
|
opm/core/simulator/SimulatorTimer.cpp \
|
||||||
opm/core/pressure/tpfa/cfs_tpfa.c \
|
opm/core/simulator/SimulatorTwophase.cpp \
|
||||||
opm/core/pressure/tpfa/compr_bc.c \
|
opm/core/transport/reorder/TransportModelCompressibleTwophase.cpp \
|
||||||
opm/core/pressure/tpfa/compr_quant.c \
|
opm/core/transport/reorder/TransportModelInterface.cpp \
|
||||||
opm/core/pressure/tpfa/compr_quant_general.c \
|
opm/core/transport/reorder/TransportModelTwophase.cpp \
|
||||||
opm/core/pressure/tpfa/cfs_tpfa_residual.c \
|
opm/core/transport/reorder/nlsolvers.c \
|
||||||
opm/core/pressure/tpfa/trans_tpfa.c \
|
opm/core/transport/reorder/reordersequence.cpp \
|
||||||
opm/core/pressure/msmfem/coarse_conn.c \
|
opm/core/transport/reorder/tarjan.c \
|
||||||
opm/core/pressure/msmfem/partition.c \
|
opm/core/transport/spu_explicit.c \
|
||||||
opm/core/pressure/msmfem/hash_set.c \
|
|
||||||
opm/core/pressure/msmfem/ifsh_ms.c \
|
|
||||||
opm/core/pressure/msmfem/dfs.c \
|
|
||||||
opm/core/pressure/msmfem/coarse_sys.c \
|
|
||||||
opm/core/pressure/ifsh.c \
|
|
||||||
opm/core/pressure/mimetic/mimetic.c \
|
|
||||||
opm/core/pressure/mimetic/hybsys_global.c \
|
|
||||||
opm/core/pressure/mimetic/hybsys.c \
|
|
||||||
opm/core/simulator/SimulatorReport.cpp \
|
|
||||||
opm/core/simulator/SimulatorTimer.cpp \
|
|
||||||
opm/core/simulator/SimulatorTwophase.cpp \
|
|
||||||
opm/core/transport/spu_explicit.c \
|
|
||||||
opm/core/transport/spu_implicit.c \
|
opm/core/transport/spu_implicit.c \
|
||||||
opm/core/transport/transport_source.c \
|
opm/core/transport/transport_source.c \
|
||||||
opm/core/transport/reorder/TransportModelInterface.cpp \
|
opm/core/utility/MonotCubicInterpolator.cpp \
|
||||||
opm/core/transport/reorder/TransportModelCompressibleTwophase.cpp \
|
opm/core/utility/StopWatch.cpp \
|
||||||
opm/core/transport/reorder/TransportModelTwophase.cpp \
|
opm/core/utility/miscUtilities.cpp \
|
||||||
opm/core/transport/reorder/reordersequence.cpp \
|
opm/core/utility/miscUtilitiesBlackoil.cpp \
|
||||||
opm/core/transport/reorder/nlsolvers.c \
|
opm/core/utility/parameters/Parameter.cpp \
|
||||||
opm/core/transport/reorder/tarjan.c \
|
opm/core/utility/parameters/ParameterGroup.cpp \
|
||||||
opm/core/vag_format/vag.cpp
|
opm/core/utility/parameters/ParameterTools.cpp \
|
||||||
|
opm/core/utility/parameters/ParameterXML.cpp \
|
||||||
|
opm/core/utility/parameters/tinyxml/tinystr.cpp \
|
||||||
|
opm/core/utility/parameters/tinyxml/tinyxml.cpp \
|
||||||
|
opm/core/utility/parameters/tinyxml/tinyxmlerror.cpp \
|
||||||
|
opm/core/utility/parameters/tinyxml/tinyxmlparser.cpp \
|
||||||
|
opm/core/utility/writeVtkData.cpp \
|
||||||
|
opm/core/vag_format/vag.cpp \
|
||||||
|
opm/core/wells/InjectionSpecification.cpp \
|
||||||
|
opm/core/wells/ProductionSpecification.cpp \
|
||||||
|
opm/core/wells/WellCollection.cpp \
|
||||||
|
opm/core/wells/WellsGroup.cpp \
|
||||||
|
opm/core/wells/WellsManager.cpp
|
||||||
|
|
||||||
nobase_include_HEADERS = \
|
nobase_include_HEADERS = \
|
||||||
opm/core/eclipse/CornerpointChopper.hpp \
|
opm/core/GridAdapter.hpp \
|
||||||
opm/core/eclipse/EclipseGridInspector.hpp \
|
opm/core/GridManager.hpp \
|
||||||
opm/core/eclipse/EclipseGridParser.hpp \
|
opm/core/eclipse/CornerpointChopper.hpp \
|
||||||
opm/core/eclipse/EclipseGridParserHelpers.hpp \
|
opm/core/eclipse/EclipseGridInspector.hpp \
|
||||||
opm/core/eclipse/EclipseUnits.hpp \
|
opm/core/eclipse/EclipseGridParser.hpp \
|
||||||
opm/core/eclipse/SpecialEclipseFields.hpp \
|
opm/core/eclipse/EclipseGridParserHelpers.hpp \
|
||||||
opm/core/fluid/BlackoilPropertiesInterface.hpp \
|
opm/core/eclipse/EclipseUnits.hpp \
|
||||||
opm/core/fluid/BlackoilPropertiesBasic.hpp \
|
opm/core/eclipse/SpecialEclipseFields.hpp \
|
||||||
opm/core/fluid/BlackoilPropertiesFromDeck.hpp \
|
opm/core/fluid/BlackoilPropertiesBasic.hpp \
|
||||||
opm/core/fluid/IncompPropertiesInterface.hpp \
|
opm/core/fluid/BlackoilPropertiesFromDeck.hpp \
|
||||||
opm/core/fluid/IncompPropertiesBasic.hpp \
|
opm/core/fluid/BlackoilPropertiesInterface.hpp \
|
||||||
opm/core/fluid/IncompPropertiesFromDeck.hpp \
|
opm/core/fluid/IncompPropertiesBasic.hpp \
|
||||||
opm/core/fluid/PvtPropertiesBasic.hpp \
|
opm/core/fluid/IncompPropertiesFromDeck.hpp \
|
||||||
opm/core/fluid/PvtPropertiesIncompFromDeck.hpp \
|
opm/core/fluid/IncompPropertiesInterface.hpp \
|
||||||
opm/core/fluid/RockBasic.hpp \
|
opm/core/fluid/PvtPropertiesBasic.hpp \
|
||||||
opm/core/fluid/RockCompressibility.hpp \
|
opm/core/fluid/PvtPropertiesIncompFromDeck.hpp \
|
||||||
opm/core/fluid/RockFromDeck.hpp \
|
opm/core/fluid/RockBasic.hpp \
|
||||||
opm/core/fluid/SaturationPropsBasic.hpp \
|
opm/core/fluid/RockCompressibility.hpp \
|
||||||
opm/core/fluid/SaturationPropsFromDeck.hpp \
|
opm/core/fluid/RockFromDeck.hpp \
|
||||||
opm/core/fluid/SimpleFluid2p.hpp \
|
opm/core/fluid/SaturationPropsBasic.hpp \
|
||||||
opm/core/fluid/blackoil/phaseUsageFromDeck.hpp \
|
opm/core/fluid/SaturationPropsFromDeck.hpp \
|
||||||
opm/core/fluid/blackoil/BlackoilPhases.hpp \
|
opm/core/fluid/SimpleFluid2p.hpp \
|
||||||
opm/core/fluid/blackoil/BlackoilPvtProperties.hpp \
|
opm/core/fluid/blackoil/BlackoilPhases.hpp \
|
||||||
opm/core/fluid/blackoil/SinglePvtDead.hpp \
|
opm/core/fluid/blackoil/BlackoilPvtProperties.hpp \
|
||||||
opm/core/fluid/blackoil/SinglePvtLiveGas.hpp \
|
opm/core/fluid/blackoil/SinglePvtConstCompr.hpp \
|
||||||
opm/core/fluid/blackoil/SinglePvtLiveOil.hpp \
|
opm/core/fluid/blackoil/SinglePvtDead.hpp \
|
||||||
opm/core/fluid/blackoil/SinglePvtInterface.hpp \
|
opm/core/fluid/blackoil/SinglePvtInterface.hpp \
|
||||||
opm/core/fluid/blackoil/SinglePvtConstCompr.hpp \
|
opm/core/fluid/blackoil/SinglePvtLiveGas.hpp \
|
||||||
opm/core/grid/cart_grid.h \
|
opm/core/fluid/blackoil/SinglePvtLiveOil.hpp \
|
||||||
opm/core/grid/cornerpoint_grid.h \
|
opm/core/fluid/blackoil/phaseUsageFromDeck.hpp \
|
||||||
opm/core/grid/cpgpreprocess/readvector.hpp \
|
opm/core/grid.h \
|
||||||
opm/core/grid/cpgpreprocess/uniquepoints.h \
|
opm/core/grid/cart_grid.h \
|
||||||
opm/core/grid/cpgpreprocess/preprocess.h \
|
opm/core/grid/cornerpoint_grid.h \
|
||||||
opm/core/grid/cpgpreprocess/sparsetable.h \
|
opm/core/grid/cpgpreprocess/facetopology.h \
|
||||||
opm/core/grid/cpgpreprocess/geometry.h \
|
opm/core/grid/cpgpreprocess/geometry.h \
|
||||||
opm/core/grid/cpgpreprocess/facetopology.h \
|
opm/core/grid/cpgpreprocess/grdecl.h \
|
||||||
opm/core/grid/cpgpreprocess/grdecl.h \
|
opm/core/grid/cpgpreprocess/preprocess.h \
|
||||||
opm/core/utility/Average.hpp \
|
opm/core/grid/cpgpreprocess/readvector.hpp \
|
||||||
opm/core/utility/ColumnExtract.hpp \
|
opm/core/grid/cpgpreprocess/sparsetable.h \
|
||||||
opm/core/utility/ErrorMacros.hpp \
|
opm/core/grid/cpgpreprocess/uniquepoints.h \
|
||||||
opm/core/utility/Factory.hpp \
|
opm/core/linalg/LinearSolverFactory.hpp \
|
||||||
opm/core/utility/MonotCubicInterpolator.hpp \
|
opm/core/linalg/LinearSolverInterface.hpp \
|
||||||
opm/core/utility/parameters/Parameter.hpp \
|
opm/core/linalg/blas_lapack.h \
|
||||||
opm/core/utility/parameters/ParameterGroup.hpp \
|
opm/core/linalg/sparse_sys.h \
|
||||||
opm/core/utility/parameters/ParameterGroup_impl.hpp \
|
opm/core/newwells.h \
|
||||||
opm/core/utility/parameters/ParameterMapItem.hpp \
|
opm/core/pressure/CompressibleTpfa.hpp \
|
||||||
opm/core/utility/parameters/ParameterRequirement.hpp \
|
opm/core/pressure/FlowBCManager.hpp \
|
||||||
opm/core/utility/parameters/ParameterStrings.hpp \
|
opm/core/pressure/HybridPressureSolver.hpp \
|
||||||
opm/core/utility/parameters/ParameterTools.hpp \
|
opm/core/pressure/IncompTpfa.hpp \
|
||||||
opm/core/utility/parameters/ParameterXML.hpp \
|
opm/core/pressure/TPFACompressiblePressureSolver.hpp \
|
||||||
opm/core/utility/parameters/tinyxml/tinystr.h \
|
opm/core/pressure/TPFAPressureSolver.hpp \
|
||||||
opm/core/utility/parameters/tinyxml/tinyxml.h \
|
opm/core/pressure/flow_bc.h \
|
||||||
opm/core/utility/RootFinders.hpp \
|
opm/core/pressure/fsh.h \
|
||||||
opm/core/utility/SparseTable.hpp \
|
opm/core/pressure/fsh_common_impl.h \
|
||||||
opm/core/utility/SparseVector.hpp \
|
opm/core/pressure/mimetic/hybsys.h \
|
||||||
opm/core/utility/StopWatch.hpp \
|
opm/core/pressure/mimetic/hybsys_global.h \
|
||||||
opm/core/utility/UniformTableLinear.hpp \
|
opm/core/pressure/mimetic/mimetic.h \
|
||||||
opm/core/utility/Units.hpp \
|
opm/core/pressure/msmfem/coarse_conn.h \
|
||||||
opm/core/utility/buildUniformMonotoneTable.hpp \
|
opm/core/pressure/msmfem/coarse_sys.h \
|
||||||
opm/core/utility/initState.hpp \
|
opm/core/pressure/msmfem/dfs.h \
|
||||||
opm/core/utility/initState_impl.hpp \
|
opm/core/pressure/msmfem/hash_set.h \
|
||||||
opm/core/utility/linInt.hpp \
|
opm/core/pressure/msmfem/ifsh_ms.h \
|
||||||
opm/core/utility/linearInterpolation.hpp \
|
opm/core/pressure/msmfem/partition.h \
|
||||||
opm/core/utility/miscUtilities.hpp \
|
opm/core/pressure/tpfa/cfs_tpfa.h \
|
||||||
opm/core/utility/miscUtilitiesBlackoil.hpp \
|
opm/core/pressure/tpfa/cfs_tpfa_residual.h \
|
||||||
opm/core/utility/writeVtkData.hpp \
|
opm/core/pressure/tpfa/compr_bc.h \
|
||||||
opm/core/linalg/sparse_sys.h \
|
opm/core/pressure/tpfa/compr_quant.h \
|
||||||
opm/core/linalg/blas_lapack.h \
|
opm/core/pressure/tpfa/compr_quant_general.h \
|
||||||
opm/core/linalg/LinearSolverInterface.hpp \
|
opm/core/pressure/tpfa/compr_source.h \
|
||||||
opm/core/linalg/LinearSolverFactory.hpp \
|
opm/core/pressure/tpfa/ifs_tpfa.h \
|
||||||
opm/core/grid.h \
|
opm/core/pressure/tpfa/trans_tpfa.h \
|
||||||
opm/core/well.h \
|
opm/core/simulator/BlackoilState.hpp \
|
||||||
opm/core/newwells.h \
|
opm/core/simulator/SimulatorReport.hpp \
|
||||||
opm/core/wells/WellsManager.hpp \
|
opm/core/simulator/SimulatorTimer.hpp \
|
||||||
opm/core/wells/WellsGroup.hpp \
|
opm/core/simulator/SimulatorTwophase.hpp \
|
||||||
opm/core/wells/WellCollection.hpp \
|
opm/core/simulator/TwophaseState.hpp \
|
||||||
opm/core/wells/InjectionSpecification.hpp \
|
opm/core/simulator/WellState.hpp \
|
||||||
opm/core/wells/ProductionSpecification.hpp \
|
opm/core/transport/CSRMatrixBlockAssembler.hpp \
|
||||||
opm/core/GridAdapter.hpp \
|
opm/core/transport/CSRMatrixUmfpackSolver.hpp \
|
||||||
opm/core/GridManager.hpp \
|
|
||||||
opm/core/pressure/fsh.h \
|
|
||||||
opm/core/pressure/HybridPressureSolver.hpp \
|
|
||||||
opm/core/pressure/IncompTpfa.hpp \
|
|
||||||
opm/core/pressure/CompressibleTpfa.hpp \
|
|
||||||
opm/core/pressure/TPFAPressureSolver.hpp \
|
|
||||||
opm/core/pressure/tpfa/compr_quant.h \
|
|
||||||
opm/core/pressure/tpfa/compr_source.h \
|
|
||||||
opm/core/pressure/tpfa/compr_bc.h \
|
|
||||||
opm/core/pressure/tpfa/cfs_tpfa.h \
|
|
||||||
opm/core/pressure/tpfa/compr_quant_general.h \
|
|
||||||
opm/core/pressure/tpfa/trans_tpfa.h \
|
|
||||||
opm/core/pressure/tpfa/cfs_tpfa_residual.h \
|
|
||||||
opm/core/pressure/tpfa/ifs_tpfa.h \
|
|
||||||
opm/core/pressure/TPFACompressiblePressureSolver.hpp \
|
|
||||||
opm/core/pressure/msmfem/coarse_sys.h \
|
|
||||||
opm/core/pressure/msmfem/hash_set.h \
|
|
||||||
opm/core/pressure/msmfem/ifsh_ms.h \
|
|
||||||
opm/core/pressure/msmfem/dfs.h \
|
|
||||||
opm/core/pressure/msmfem/partition.h \
|
|
||||||
opm/core/pressure/msmfem/coarse_conn.h \
|
|
||||||
opm/core/pressure/flow_bc.h \
|
|
||||||
opm/core/pressure/FlowBCManager.hpp \
|
|
||||||
opm/core/pressure/fsh_common_impl.h \
|
|
||||||
opm/core/pressure/mimetic/hybsys_global.h \
|
|
||||||
opm/core/pressure/mimetic/hybsys.h \
|
|
||||||
opm/core/pressure/mimetic/mimetic.h \
|
|
||||||
opm/core/simulator/BlackoilState.hpp \
|
|
||||||
opm/core/simulator/SimulatorReport.hpp \
|
|
||||||
opm/core/simulator/SimulatorTimer.hpp \
|
|
||||||
opm/core/simulator/SimulatorTwophase.hpp \
|
|
||||||
opm/core/simulator/TwophaseState.hpp \
|
|
||||||
opm/core/simulator/WellState.hpp \
|
|
||||||
opm/core/transport/ImplicitTransport.hpp \
|
|
||||||
opm/core/transport/CSRMatrixUmfpackSolver.hpp \
|
|
||||||
opm/core/transport/CSRMatrixBlockAssembler.hpp \
|
|
||||||
opm/core/transport/SimpleFluid2pWrapper.hpp \
|
|
||||||
opm/core/transport/SinglePointUpwindTwoPhase.hpp \
|
|
||||||
opm/core/transport/NormSupport.hpp \
|
|
||||||
opm/core/transport/spu_explicit.h \
|
|
||||||
opm/core/transport/JacobianSystem.hpp \
|
|
||||||
opm/core/transport/spu_implicit.h \
|
|
||||||
opm/core/transport/ImplicitAssembly.hpp \
|
|
||||||
opm/core/transport/transport_source.h \
|
|
||||||
opm/core/transport/GravityColumnSolver.hpp \
|
opm/core/transport/GravityColumnSolver.hpp \
|
||||||
opm/core/transport/GravityColumnSolver_impl.hpp \
|
opm/core/transport/GravityColumnSolver_impl.hpp \
|
||||||
opm/core/transport/reorder/TransportModelInterface.hpp \
|
opm/core/transport/ImplicitAssembly.hpp \
|
||||||
|
opm/core/transport/ImplicitTransport.hpp \
|
||||||
|
opm/core/transport/JacobianSystem.hpp \
|
||||||
|
opm/core/transport/NormSupport.hpp \
|
||||||
|
opm/core/transport/SimpleFluid2pWrapper.hpp \
|
||||||
|
opm/core/transport/SinglePointUpwindTwoPhase.hpp \
|
||||||
opm/core/transport/reorder/TransportModelCompressibleTwophase.hpp \
|
opm/core/transport/reorder/TransportModelCompressibleTwophase.hpp \
|
||||||
|
opm/core/transport/reorder/TransportModelInterface.hpp \
|
||||||
opm/core/transport/reorder/TransportModelTwophase.hpp \
|
opm/core/transport/reorder/TransportModelTwophase.hpp \
|
||||||
opm/core/transport/reorder/nlsolvers.h \
|
opm/core/transport/reorder/nlsolvers.h \
|
||||||
opm/core/transport/reorder/reordersequence.h \
|
opm/core/transport/reorder/reordersequence.h \
|
||||||
opm/core/transport/reorder/tarjan.h \
|
opm/core/transport/reorder/tarjan.h \
|
||||||
opm/core/vag_format/vag.hpp
|
opm/core/transport/spu_explicit.h \
|
||||||
|
opm/core/transport/spu_implicit.h \
|
||||||
|
opm/core/transport/transport_source.h \
|
||||||
|
opm/core/utility/Average.hpp \
|
||||||
|
opm/core/utility/ColumnExtract.hpp \
|
||||||
|
opm/core/utility/ErrorMacros.hpp \
|
||||||
|
opm/core/utility/Factory.hpp \
|
||||||
|
opm/core/utility/MonotCubicInterpolator.hpp \
|
||||||
|
opm/core/utility/RootFinders.hpp \
|
||||||
|
opm/core/utility/SparseTable.hpp \
|
||||||
|
opm/core/utility/SparseVector.hpp \
|
||||||
|
opm/core/utility/StopWatch.hpp \
|
||||||
|
opm/core/utility/UniformTableLinear.hpp \
|
||||||
|
opm/core/utility/Units.hpp \
|
||||||
|
opm/core/utility/buildUniformMonotoneTable.hpp \
|
||||||
|
opm/core/utility/initState.hpp \
|
||||||
|
opm/core/utility/initState_impl.hpp \
|
||||||
|
opm/core/utility/linInt.hpp \
|
||||||
|
opm/core/utility/linearInterpolation.hpp \
|
||||||
|
opm/core/utility/miscUtilities.hpp \
|
||||||
|
opm/core/utility/miscUtilitiesBlackoil.hpp \
|
||||||
|
opm/core/utility/parameters/Parameter.hpp \
|
||||||
|
opm/core/utility/parameters/ParameterGroup.hpp \
|
||||||
|
opm/core/utility/parameters/ParameterGroup_impl.hpp \
|
||||||
|
opm/core/utility/parameters/ParameterMapItem.hpp \
|
||||||
|
opm/core/utility/parameters/ParameterRequirement.hpp \
|
||||||
|
opm/core/utility/parameters/ParameterStrings.hpp \
|
||||||
|
opm/core/utility/parameters/ParameterTools.hpp \
|
||||||
|
opm/core/utility/parameters/ParameterXML.hpp \
|
||||||
|
opm/core/utility/parameters/tinyxml/tinystr.h \
|
||||||
|
opm/core/utility/parameters/tinyxml/tinyxml.h \
|
||||||
|
opm/core/utility/writeVtkData.hpp \
|
||||||
|
opm/core/vag_format/vag.hpp \
|
||||||
|
opm/core/well.h \
|
||||||
|
opm/core/wells/InjectionSpecification.hpp \
|
||||||
|
opm/core/wells/ProductionSpecification.hpp \
|
||||||
|
opm/core/wells/WellCollection.hpp \
|
||||||
|
opm/core/wells/WellsGroup.hpp \
|
||||||
|
opm/core/wells/WellsManager.hpp
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
# Optional library constituents.
|
# Optional library constituents.
|
||||||
|
|
||||||
|
@ -284,7 +284,8 @@ EclipseGridParser::EclipseGridParser()
|
|||||||
: current_reading_mode_(Regular),
|
: current_reading_mode_(Regular),
|
||||||
start_date_(boost::date_time::not_a_date_time),
|
start_date_(boost::date_time::not_a_date_time),
|
||||||
current_time_days_(0.0),
|
current_time_days_(0.0),
|
||||||
current_epoch_(0)
|
current_epoch_(0),
|
||||||
|
special_field_by_epoch_(1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -296,7 +297,8 @@ EclipseGridParser::EclipseGridParser(const string& filename, bool convert_to_SI)
|
|||||||
: current_reading_mode_(Regular),
|
: current_reading_mode_(Regular),
|
||||||
start_date_(boost::date_time::not_a_date_time),
|
start_date_(boost::date_time::not_a_date_time),
|
||||||
current_time_days_(0.0),
|
current_time_days_(0.0),
|
||||||
current_epoch_(0)
|
current_epoch_(0),
|
||||||
|
special_field_by_epoch_(1)
|
||||||
{
|
{
|
||||||
// Store directory of filename
|
// Store directory of filename
|
||||||
boost::filesystem::path p(filename);
|
boost::filesystem::path p(filename);
|
||||||
@ -319,6 +321,8 @@ void EclipseGridParser::read(istream& is, bool convert_to_SI)
|
|||||||
floating_field_map_.clear();
|
floating_field_map_.clear();
|
||||||
special_field_by_epoch_.clear();
|
special_field_by_epoch_.clear();
|
||||||
special_field_by_epoch_.push_back(SpecialMap());
|
special_field_by_epoch_.push_back(SpecialMap());
|
||||||
|
current_time_days_ = 0.0;
|
||||||
|
current_epoch_ = 0;
|
||||||
|
|
||||||
readImpl(is);
|
readImpl(is);
|
||||||
|
|
||||||
|
@ -186,7 +186,7 @@ wells_allocate(int nwells, struct Wells *W)
|
|||||||
int ok, np;
|
int ok, np;
|
||||||
void *type, *depth_ref, *comp_frac;
|
void *type, *depth_ref, *comp_frac;
|
||||||
void *well_connpos;
|
void *well_connpos;
|
||||||
void *ctrls;
|
void *ctrls, *name;
|
||||||
|
|
||||||
np = W->number_of_phases;
|
np = W->number_of_phases;
|
||||||
|
|
||||||
@ -194,6 +194,7 @@ wells_allocate(int nwells, struct Wells *W)
|
|||||||
depth_ref = realloc(W->depth_ref, 1 * nwells * sizeof *W->depth_ref);
|
depth_ref = realloc(W->depth_ref, 1 * nwells * sizeof *W->depth_ref);
|
||||||
comp_frac = realloc(W->comp_frac, np * nwells * sizeof *W->comp_frac);
|
comp_frac = realloc(W->comp_frac, np * nwells * sizeof *W->comp_frac);
|
||||||
ctrls = realloc(W->ctrls , 1 * nwells * sizeof *W->ctrls);
|
ctrls = realloc(W->ctrls , 1 * nwells * sizeof *W->ctrls);
|
||||||
|
name = realloc(W->name , 1 * nwells * sizeof *W->name);
|
||||||
|
|
||||||
well_connpos = realloc(W->well_connpos,
|
well_connpos = realloc(W->well_connpos,
|
||||||
(nwells + 1) * sizeof *W->well_connpos);
|
(nwells + 1) * sizeof *W->well_connpos);
|
||||||
@ -204,8 +205,9 @@ wells_allocate(int nwells, struct Wells *W)
|
|||||||
if (comp_frac != NULL) { W->comp_frac = comp_frac ; ok++; }
|
if (comp_frac != NULL) { W->comp_frac = comp_frac ; ok++; }
|
||||||
if (well_connpos != NULL) { W->well_connpos = well_connpos; ok++; }
|
if (well_connpos != NULL) { W->well_connpos = well_connpos; ok++; }
|
||||||
if (ctrls != NULL) { W->ctrls = ctrls ; ok++; }
|
if (ctrls != NULL) { W->ctrls = ctrls ; ok++; }
|
||||||
|
if (name != NULL) { W->name = name ; ok++; }
|
||||||
|
|
||||||
return ok == 5;
|
return ok == 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -242,6 +244,7 @@ initialise_new_wells(int nwells, struct Wells *W)
|
|||||||
for (w = m->well_cpty; w < nwells; w++) {
|
for (w = m->well_cpty; w < nwells; w++) {
|
||||||
W->type [w] = PRODUCER;
|
W->type [w] = PRODUCER;
|
||||||
W->depth_ref[w] = -1.0;
|
W->depth_ref[w] = -1.0;
|
||||||
|
W->name [w] = NULL;
|
||||||
|
|
||||||
for (p = 0; p < W->number_of_phases; ++p) {
|
for (p = 0; p < W->number_of_phases; ++p) {
|
||||||
W->comp_frac[W->number_of_phases*w + p] = 0.0;
|
W->comp_frac[W->number_of_phases*w + p] = 0.0;
|
||||||
@ -325,6 +328,25 @@ wells_reserve(int nwells, int nperf, struct Wells *W)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
static char *
|
||||||
|
dup_string(const char *s)
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
{
|
||||||
|
char *t;
|
||||||
|
|
||||||
|
assert (s != NULL);
|
||||||
|
|
||||||
|
t = malloc((strlen(s) + 1) * sizeof *t);
|
||||||
|
|
||||||
|
if (t != NULL) {
|
||||||
|
strcpy(t, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ======================================================================
|
/* ======================================================================
|
||||||
* Public entry points below separator.
|
* Public entry points below separator.
|
||||||
* ====================================================================== */
|
* ====================================================================== */
|
||||||
@ -353,6 +375,7 @@ create_wells(int nphases, int nwells, int nperf)
|
|||||||
W->WI = NULL;
|
W->WI = NULL;
|
||||||
|
|
||||||
W->ctrls = NULL;
|
W->ctrls = NULL;
|
||||||
|
W->name = NULL;
|
||||||
|
|
||||||
W->data = create_well_mgmt();
|
W->data = create_well_mgmt();
|
||||||
|
|
||||||
@ -391,8 +414,13 @@ destroy_wells(struct Wells *W)
|
|||||||
well_controls_destroy(W->ctrls[w]);
|
well_controls_destroy(W->ctrls[w]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (w = 0; w < m->well_cpty; w++) {
|
||||||
|
free(W->name[w]);
|
||||||
|
}
|
||||||
|
|
||||||
destroy_well_mgmt(m);
|
destroy_well_mgmt(m);
|
||||||
|
|
||||||
|
free(W->name);
|
||||||
free(W->ctrls);
|
free(W->ctrls);
|
||||||
free(W->WI);
|
free(W->WI);
|
||||||
free(W->well_cells);
|
free(W->well_cells);
|
||||||
@ -431,6 +459,7 @@ add_well(enum WellType type ,
|
|||||||
const double *comp_frac, /* Injection fraction or NULL */
|
const double *comp_frac, /* Injection fraction or NULL */
|
||||||
const int *cells ,
|
const int *cells ,
|
||||||
const double *WI , /* Well index per perf (or NULL) */
|
const double *WI , /* Well index per perf (or NULL) */
|
||||||
|
const char *name , /* Well name (or NULL) */
|
||||||
struct Wells *W )
|
struct Wells *W )
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
{
|
{
|
||||||
@ -470,6 +499,12 @@ add_well(enum WellType type ,
|
|||||||
W->type [nw] = type ;
|
W->type [nw] = type ;
|
||||||
W->depth_ref[nw] = depth_ref;
|
W->depth_ref[nw] = depth_ref;
|
||||||
|
|
||||||
|
if (name != NULL) {
|
||||||
|
/* May return NULL, but that's fine for the current
|
||||||
|
* purpose. */
|
||||||
|
W->name [nw] = dup_string(name);
|
||||||
|
}
|
||||||
|
|
||||||
np = W->number_of_phases;
|
np = W->number_of_phases;
|
||||||
if (comp_frac != NULL) {
|
if (comp_frac != NULL) {
|
||||||
memcpy(W->comp_frac + np*nw, comp_frac, np * sizeof *W->comp_frac);
|
memcpy(W->comp_frac + np*nw, comp_frac, np * sizeof *W->comp_frac);
|
||||||
|
@ -100,6 +100,7 @@ struct Wells
|
|||||||
double *WI; /** Well productivity index, same size and structure as well_cells. */
|
double *WI; /** Well productivity index, same size and structure as well_cells. */
|
||||||
struct WellControls **ctrls; /** Well controls, one set of controls for each well. */
|
struct WellControls **ctrls; /** Well controls, one set of controls for each well. */
|
||||||
|
|
||||||
|
char **name; /** Well names. One string for each well. */
|
||||||
|
|
||||||
void *data; /** Internal management structure. */
|
void *data; /** Internal management structure. */
|
||||||
};
|
};
|
||||||
@ -168,6 +169,7 @@ create_wells(int nphases, int nwells, int nperf);
|
|||||||
* \param[in] cells Grid cells in which well is perforated. Should
|
* \param[in] cells Grid cells in which well is perforated. Should
|
||||||
* ideally be track ordered.
|
* ideally be track ordered.
|
||||||
* \param[in] WI Well production index per perforation, or NULL.
|
* \param[in] WI Well production index per perforation, or NULL.
|
||||||
|
* \param[in] name Name of new well. NULL if no name.
|
||||||
* \param[in,out] W Existing set of wells to which new well will
|
* \param[in,out] W Existing set of wells to which new well will
|
||||||
* be added.
|
* be added.
|
||||||
*
|
*
|
||||||
@ -180,6 +182,7 @@ add_well(enum WellType type ,
|
|||||||
const double *comp_frac,
|
const double *comp_frac,
|
||||||
const int *cells ,
|
const int *cells ,
|
||||||
const double *WI ,
|
const double *WI ,
|
||||||
|
const char *name ,
|
||||||
struct Wells *W );
|
struct Wells *W );
|
||||||
|
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ namespace Opm
|
|||||||
{
|
{
|
||||||
os << "Total time taken: " << total_time
|
os << "Total time taken: " << total_time
|
||||||
<< "\n Pressure time: " << pressure_time
|
<< "\n Pressure time: " << pressure_time
|
||||||
<< "\n Transport time: " << total_time << std::endl;
|
<< "\n Transport time: " << transport_time << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -737,7 +737,9 @@ namespace Opm
|
|||||||
void WellNode::shutWell()
|
void WellNode::shutWell()
|
||||||
{
|
{
|
||||||
if (shut_well_) {
|
if (shut_well_) {
|
||||||
set_current_control(self_index_, -1, wells_);
|
// We set the tilde of the current control
|
||||||
|
// set_current_control(self_index_, -1, wells_);
|
||||||
|
wells_->ctrls[self_index_]->current = ~ wells_->ctrls[self_index_]->current;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const double target = 0.0;
|
const double target = 0.0;
|
||||||
@ -755,7 +757,7 @@ namespace Opm
|
|||||||
wells_->ctrls[self_index_]->target[group_control_index_] = target;
|
wells_->ctrls[self_index_]->target[group_control_index_] = target;
|
||||||
std::copy(distr, distr + np, wells_->ctrls[self_index_]->distr + np * group_control_index_);
|
std::copy(distr, distr + np, wells_->ctrls[self_index_]->distr + np * group_control_index_);
|
||||||
}
|
}
|
||||||
set_current_control(self_index_, -1, wells_);
|
wells_->ctrls[self_index_]->current = ~ wells_->ctrls[self_index_]->current;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,13 @@
|
|||||||
#include <opm/core/fluid/blackoil/phaseUsageFromDeck.hpp>
|
#include <opm/core/fluid/blackoil/phaseUsageFromDeck.hpp>
|
||||||
|
|
||||||
#include <tr1/array>
|
#include <tr1/array>
|
||||||
|
#include <algorithm>
|
||||||
|
#include <cassert>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <map>
|
||||||
|
#include <string>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
|
||||||
// Helper structs and functions for the implementation.
|
// Helper structs and functions for the implementation.
|
||||||
@ -56,25 +62,41 @@ namespace
|
|||||||
{
|
{
|
||||||
enum Mode { ORAT, WRAT, GRAT,
|
enum Mode { ORAT, WRAT, GRAT,
|
||||||
LRAT, CRAT, RESV,
|
LRAT, CRAT, RESV,
|
||||||
BHP, THP, GRUP };
|
BHP , THP , GRUP };
|
||||||
|
|
||||||
|
namespace Details {
|
||||||
|
std::map<std::string, Mode>
|
||||||
|
init_mode_map() {
|
||||||
|
std::map<std::string, Mode> m;
|
||||||
|
|
||||||
|
m.insert(std::make_pair("ORAT", ORAT));
|
||||||
|
m.insert(std::make_pair("WRAT", WRAT));
|
||||||
|
m.insert(std::make_pair("GRAT", GRAT));
|
||||||
|
m.insert(std::make_pair("LRAT", LRAT));
|
||||||
|
m.insert(std::make_pair("CRAT", CRAT));
|
||||||
|
m.insert(std::make_pair("RESV", RESV));
|
||||||
|
m.insert(std::make_pair("BHP" , BHP ));
|
||||||
|
m.insert(std::make_pair("THP" , THP ));
|
||||||
|
m.insert(std::make_pair("GRUP", GRUP));
|
||||||
|
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
} // namespace Details
|
||||||
|
|
||||||
Mode mode(const std::string& control)
|
Mode mode(const std::string& control)
|
||||||
{
|
{
|
||||||
const int num_prod_control_modes = 9;
|
static std::map<std::string, Mode>
|
||||||
static std::string prod_control_modes[num_prod_control_modes] =
|
mode_map = Details::init_mode_map();
|
||||||
{std::string("ORAT"), std::string("WRAT"), std::string("GRAT"),
|
|
||||||
std::string("LRAT"), std::string("CRAT"), std::string("RESV"),
|
std::map<std::string, Mode>::iterator
|
||||||
std::string("BHP"), std::string("THP"), std::string("GRUP") };
|
p = mode_map.find(control);
|
||||||
int m = -1;
|
|
||||||
for (int i=0; i<num_prod_control_modes; ++i) {
|
if (p != mode_map.end()) {
|
||||||
if (control == prod_control_modes[i]) {
|
return p->second;
|
||||||
m = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (m >= 0) {
|
else {
|
||||||
return static_cast<Mode>(m);
|
THROW("Unknown well control mode = "
|
||||||
} else {
|
<< control << " in input file");
|
||||||
THROW("Unknown well control mode = " << control << " in input file");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // namespace ProductionControl
|
} // namespace ProductionControl
|
||||||
@ -84,24 +106,36 @@ namespace
|
|||||||
{
|
{
|
||||||
enum Mode { RATE, RESV, BHP,
|
enum Mode { RATE, RESV, BHP,
|
||||||
THP, GRUP };
|
THP, GRUP };
|
||||||
|
|
||||||
|
namespace Details {
|
||||||
|
std::map<std::string, Mode>
|
||||||
|
init_mode_map() {
|
||||||
|
std::map<std::string, Mode> m;
|
||||||
|
|
||||||
|
m.insert(std::make_pair("RATE", RATE));
|
||||||
|
m.insert(std::make_pair("RESV", RESV));
|
||||||
|
m.insert(std::make_pair("BHP" , BHP ));
|
||||||
|
m.insert(std::make_pair("THP" , THP ));
|
||||||
|
m.insert(std::make_pair("GRUP", GRUP));
|
||||||
|
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
} // namespace Details
|
||||||
|
|
||||||
Mode mode(const std::string& control)
|
Mode mode(const std::string& control)
|
||||||
{
|
{
|
||||||
const int num_inje_control_modes = 5;
|
static std::map<std::string, Mode>
|
||||||
static std::string inje_control_modes[num_inje_control_modes] =
|
mode_map = Details::init_mode_map();
|
||||||
{std::string("RATE"), std::string("RESV"), std::string("BHP"),
|
|
||||||
std::string("THP"), std::string("GRUP") };
|
|
||||||
int m = -1;
|
|
||||||
for (int i=0; i<num_inje_control_modes; ++i) {
|
|
||||||
if (control == inje_control_modes[i]) {
|
|
||||||
m = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m >= 0) {
|
std::map<std::string, Mode>::iterator
|
||||||
return static_cast<Mode>(m);
|
p = mode_map.find(control);
|
||||||
} else {
|
|
||||||
THROW("Unknown well control mode = " << control << " in input file");
|
if (p != mode_map.end()) {
|
||||||
|
return p->second;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
THROW("Unknown well control mode = "
|
||||||
|
<< control << " in input file");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // namespace InjectionControl
|
} // namespace InjectionControl
|
||||||
@ -408,10 +442,10 @@ namespace Opm
|
|||||||
} else {
|
} else {
|
||||||
THROW("Unseen well name: " << lines[i].well_ << " first seen in WCONPROD");
|
THROW("Unseen well name: " << lines[i].well_ << " first seen in WCONPROD");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add wells.
|
// Add wells.
|
||||||
for (int w = 0; w < num_wells; ++w) {
|
for (int w = 0; w < num_wells; ++w) {
|
||||||
const int w_num_perf = wellperf_data[w].size();
|
const int w_num_perf = wellperf_data[w].size();
|
||||||
@ -425,7 +459,7 @@ namespace Opm
|
|||||||
// We initialize all wells with a null component fraction,
|
// We initialize all wells with a null component fraction,
|
||||||
// and must (for injection wells) overwrite it later.
|
// and must (for injection wells) overwrite it later.
|
||||||
int ok = add_well(well_data[w].type, well_data[w].reference_bhp_depth, w_num_perf,
|
int ok = add_well(well_data[w].type, well_data[w].reference_bhp_depth, w_num_perf,
|
||||||
comp_frac, &perf_cells[0], &perf_prodind[0], w_);
|
comp_frac, &perf_cells[0], &perf_prodind[0], well_names[w].c_str(), w_);
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
THROW("Failed adding well " << well_names[w] << " to Wells data structure.");
|
THROW("Failed adding well " << well_names[w] << " to Wells data structure.");
|
||||||
}
|
}
|
||||||
@ -486,10 +520,14 @@ namespace Opm
|
|||||||
THROW("Failure occured appending controls for well " << well_names[wix]);
|
THROW("Failure occured appending controls for well " << well_names[wix]);
|
||||||
}
|
}
|
||||||
InjectionControl::Mode mode = InjectionControl::mode(wci_line.control_mode_);
|
InjectionControl::Mode mode = InjectionControl::mode(wci_line.control_mode_);
|
||||||
const int cpos = control_pos[mode];
|
int cpos = control_pos[mode];
|
||||||
if (cpos == -1 && mode != InjectionControl::GRUP) {
|
if (cpos == -1 && mode != InjectionControl::GRUP) {
|
||||||
THROW("Control for " << wci_line.control_mode_ << " not specified in well " << well_names[wix]);
|
THROW("Control for " << wci_line.control_mode_ << " not specified in well " << well_names[wix]);
|
||||||
}
|
}
|
||||||
|
// We need to check if the well is shut or not
|
||||||
|
if (wci_line.open_shut_flag_ == "SHUT") {
|
||||||
|
cpos = ~cpos;
|
||||||
|
}
|
||||||
set_current_control(wix, cpos, w_);
|
set_current_control(wix, cpos, w_);
|
||||||
|
|
||||||
// Set well component fraction.
|
// Set well component fraction.
|
||||||
@ -610,10 +648,14 @@ namespace Opm
|
|||||||
THROW("Failure occured appending controls for well " << well_names[wix]);
|
THROW("Failure occured appending controls for well " << well_names[wix]);
|
||||||
}
|
}
|
||||||
ProductionControl::Mode mode = ProductionControl::mode(wcp_line.control_mode_);
|
ProductionControl::Mode mode = ProductionControl::mode(wcp_line.control_mode_);
|
||||||
const int cpos = control_pos[mode];
|
int cpos = control_pos[mode];
|
||||||
if (cpos == -1 && mode != ProductionControl::GRUP) {
|
if (cpos == -1 && mode != ProductionControl::GRUP) {
|
||||||
THROW("Control mode type " << mode << " not present in well " << well_names[wix]);
|
THROW("Control mode type " << mode << " not present in well " << well_names[wix]);
|
||||||
}
|
}
|
||||||
|
// If it's shut, we complement the cpos
|
||||||
|
if (wcp_line.open_shut_flag_ == "SHUT") {
|
||||||
|
cpos = ~cpos; // So we can easily retrieve the cpos later
|
||||||
|
}
|
||||||
set_current_control(wix, cpos, w_);
|
set_current_control(wix, cpos, w_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -673,6 +715,34 @@ namespace Opm
|
|||||||
*/
|
*/
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (deck.hasField("WELOPEN")) {
|
||||||
|
const WELOPEN& welopen = deck.getWELOPEN();
|
||||||
|
|
||||||
|
for (size_t i = 0; i < welopen.welopen.size(); ++i) {
|
||||||
|
WelopenLine line = welopen.welopen[i];
|
||||||
|
std::string wellname = line.well_;
|
||||||
|
std::map<std::string, int>::const_iterator it = well_names_to_index.find(wellname);
|
||||||
|
if (it == well_names_to_index.end()) {
|
||||||
|
THROW("Trying to open/shut well with name: \"" << wellname<<"\" but it's not registered under WELSPECS.");
|
||||||
|
}
|
||||||
|
int index = it->second;
|
||||||
|
if (line.openshutflag_ == "SHUT") {
|
||||||
|
// We currently don't care if the well is open or not.
|
||||||
|
/// \TODO Should this perhaps be allowed? I.e. should it be if(well_shut) { shutwell(); } else { /* do nothing*/ }?
|
||||||
|
//ASSERT(w_->ctrls[index]->current < 0);
|
||||||
|
} else if (line.openshutflag_ == "OPEN") {
|
||||||
|
//ASSERT(w_->ctrls[index]->current >= 0);
|
||||||
|
} else {
|
||||||
|
THROW("Unknown Open/close keyword: \"" << line.openshutflag_<< "\". Allowed values: OPEN, SHUT.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// We revert back to it's original control.
|
||||||
|
// Note that this is OK as ~~ = id.
|
||||||
|
w_->ctrls[index]->current = ~w_->ctrls[index]->current;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Build the well_collection_ well group hierarchy.
|
// Build the well_collection_ well group hierarchy.
|
||||||
if (deck.hasField("GRUPTREE")) {
|
if (deck.hasField("GRUPTREE")) {
|
||||||
|
@ -263,7 +263,10 @@ int main ()
|
|||||||
for (int i = 0; i < num_wells; ++i) {
|
for (int i = 0; i < num_wells; ++i) {
|
||||||
const int well_cells = i*nx;
|
const int well_cells = i*nx;
|
||||||
const double well_index = 1;
|
const double well_index = 1;
|
||||||
add_well(PRODUCER, 0, 1, NULL, &well_cells, &well_index, wells);
|
std::stringstream well_name;
|
||||||
|
well_name << "well" << i;
|
||||||
|
add_well(PRODUCER, 0, 1, NULL, &well_cells, &well_index,
|
||||||
|
well_name.str().c_str(), wells);
|
||||||
}
|
}
|
||||||
/// \endcode
|
/// \endcode
|
||||||
|
|
||||||
@ -354,6 +357,8 @@ int main ()
|
|||||||
dm["pressure"] = &state.pressure();
|
dm["pressure"] = &state.pressure();
|
||||||
Opm::writeVtkData(grid, dm, vtkfile);
|
Opm::writeVtkData(grid, dm, vtkfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
destroy_wells(wells);
|
||||||
}
|
}
|
||||||
/// \endcode
|
/// \endcode
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user