diff --git a/Makefile.am b/Makefile.am index 76709d19..feeb53c1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -31,230 +31,231 @@ $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS) # # Please try to keep the list sorted. -libopmcore_la_SOURCES = \ -opm/core/eclipse/EclipseGridInspector.cpp \ -opm/core/eclipse/EclipseGridParser.cpp \ -opm/core/fluid/blackoil/BlackoilPvtProperties.cpp \ -opm/core/fluid/blackoil/SinglePvtDead.cpp \ -opm/core/fluid/blackoil/SinglePvtLiveGas.cpp \ -opm/core/fluid/blackoil/SinglePvtLiveOil.cpp \ -opm/core/fluid/blackoil/SinglePvtInterface.cpp \ -opm/core/fluid/BlackoilPropertiesBasic.cpp \ -opm/core/fluid/BlackoilPropertiesFromDeck.cpp \ -opm/core/fluid/IncompPropertiesBasic.cpp \ -opm/core/fluid/IncompPropertiesFromDeck.cpp \ -opm/core/fluid/PvtPropertiesBasic.cpp \ -opm/core/fluid/PvtPropertiesIncompFromDeck.cpp \ -opm/core/fluid/RockBasic.cpp \ -opm/core/fluid/RockCompressibility.cpp \ -opm/core/fluid/RockFromDeck.cpp \ -opm/core/fluid/SaturationPropsBasic.cpp \ -opm/core/fluid/SaturationPropsFromDeck.cpp \ -opm/core/grid.c \ -opm/core/newwells.c \ -opm/core/GridManager.cpp \ -opm/core/grid/cart_grid.c \ -opm/core/grid/cornerpoint_grid.c \ -opm/core/grid/cpgpreprocess/geometry.c \ -opm/core/grid/cpgpreprocess/preprocess.c \ -opm/core/grid/cpgpreprocess/readvector.cpp \ -opm/core/grid/cpgpreprocess/sparsetable.c \ -opm/core/grid/cpgpreprocess/facetopology.c \ -opm/core/grid/cpgpreprocess/uniquepoints.c \ -opm/core/utility/MonotCubicInterpolator.cpp \ -opm/core/utility/parameters/Parameter.cpp \ -opm/core/utility/parameters/ParameterGroup.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/miscUtilities.cpp \ -opm/core/utility/miscUtilitiesBlackoil.cpp \ -opm/core/utility/StopWatch.cpp \ -opm/core/utility/writeVtkData.cpp \ -opm/core/wells/WellsManager.cpp \ -opm/core/wells/WellsGroup.cpp \ -opm/core/wells/WellCollection.cpp \ -opm/core/wells/InjectionSpecification.cpp \ -opm/core/wells/ProductionSpecification.cpp \ -opm/core/linalg/sparse_sys.c \ -opm/core/linalg/LinearSolverInterface.cpp \ -opm/core/linalg/LinearSolverFactory.cpp \ -opm/core/pressure/cfsh.c \ -opm/core/pressure/flow_bc.c \ -opm/core/pressure/FlowBCManager.cpp \ -opm/core/pressure/well.c \ -opm/core/pressure/fsh_common_impl.c \ -opm/core/pressure/fsh.c \ -opm/core/pressure/IncompTpfa.cpp \ -opm/core/pressure/CompressibleTpfa.cpp \ -opm/core/pressure/tpfa/ifs_tpfa.c \ -opm/core/pressure/tpfa/compr_source.c \ -opm/core/pressure/tpfa/cfs_tpfa.c \ -opm/core/pressure/tpfa/compr_bc.c \ -opm/core/pressure/tpfa/compr_quant.c \ -opm/core/pressure/tpfa/compr_quant_general.c \ -opm/core/pressure/tpfa/cfs_tpfa_residual.c \ -opm/core/pressure/tpfa/trans_tpfa.c \ -opm/core/pressure/msmfem/coarse_conn.c \ -opm/core/pressure/msmfem/partition.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 \ +libopmcore_la_SOURCES = \ +opm/core/GridManager.cpp \ +opm/core/eclipse/EclipseGridInspector.cpp \ +opm/core/eclipse/EclipseGridParser.cpp \ +opm/core/fluid/BlackoilPropertiesBasic.cpp \ +opm/core/fluid/BlackoilPropertiesFromDeck.cpp \ +opm/core/fluid/IncompPropertiesBasic.cpp \ +opm/core/fluid/IncompPropertiesFromDeck.cpp \ +opm/core/fluid/PvtPropertiesBasic.cpp \ +opm/core/fluid/PvtPropertiesIncompFromDeck.cpp \ +opm/core/fluid/RockBasic.cpp \ +opm/core/fluid/RockCompressibility.cpp \ +opm/core/fluid/RockFromDeck.cpp \ +opm/core/fluid/SaturationPropsBasic.cpp \ +opm/core/fluid/SaturationPropsFromDeck.cpp \ +opm/core/fluid/blackoil/BlackoilPvtProperties.cpp \ +opm/core/fluid/blackoil/SinglePvtDead.cpp \ +opm/core/fluid/blackoil/SinglePvtInterface.cpp \ +opm/core/fluid/blackoil/SinglePvtLiveGas.cpp \ +opm/core/fluid/blackoil/SinglePvtLiveOil.cpp \ +opm/core/grid.c \ +opm/core/grid/cart_grid.c \ +opm/core/grid/cornerpoint_grid.c \ +opm/core/grid/cpgpreprocess/facetopology.c \ +opm/core/grid/cpgpreprocess/geometry.c \ +opm/core/grid/cpgpreprocess/preprocess.c \ +opm/core/grid/cpgpreprocess/readvector.cpp \ +opm/core/grid/cpgpreprocess/sparsetable.c \ +opm/core/grid/cpgpreprocess/uniquepoints.c \ +opm/core/linalg/LinearSolverFactory.cpp \ +opm/core/linalg/LinearSolverInterface.cpp \ +opm/core/linalg/sparse_sys.c \ +opm/core/newwells.c \ +opm/core/pressure/CompressibleTpfa.cpp \ +opm/core/pressure/FlowBCManager.cpp \ +opm/core/pressure/IncompTpfa.cpp \ +opm/core/pressure/cfsh.c \ +opm/core/pressure/flow_bc.c \ +opm/core/pressure/fsh.c \ +opm/core/pressure/fsh_common_impl.c \ +opm/core/pressure/ifsh.c \ +opm/core/pressure/mimetic/hybsys.c \ +opm/core/pressure/mimetic/hybsys_global.c \ +opm/core/pressure/mimetic/mimetic.c \ +opm/core/pressure/msmfem/coarse_conn.c \ +opm/core/pressure/msmfem/coarse_sys.c \ +opm/core/pressure/msmfem/dfs.c \ +opm/core/pressure/msmfem/hash_set.c \ +opm/core/pressure/msmfem/ifsh_ms.c \ +opm/core/pressure/msmfem/partition.c \ +opm/core/pressure/tpfa/cfs_tpfa.c \ +opm/core/pressure/tpfa/cfs_tpfa_residual.c \ +opm/core/pressure/tpfa/compr_bc.c \ +opm/core/pressure/tpfa/compr_quant.c \ +opm/core/pressure/tpfa/compr_quant_general.c \ +opm/core/pressure/tpfa/compr_source.c \ +opm/core/pressure/tpfa/ifs_tpfa.c \ +opm/core/pressure/tpfa/trans_tpfa.c \ +opm/core/pressure/well.c \ +opm/core/simulator/SimulatorReport.cpp \ +opm/core/simulator/SimulatorTimer.cpp \ +opm/core/simulator/SimulatorTwophase.cpp \ +opm/core/transport/reorder/TransportModelCompressibleTwophase.cpp \ +opm/core/transport/reorder/TransportModelInterface.cpp \ +opm/core/transport/reorder/TransportModelTwophase.cpp \ +opm/core/transport/reorder/nlsolvers.c \ +opm/core/transport/reorder/reordersequence.cpp \ +opm/core/transport/reorder/tarjan.c \ +opm/core/transport/spu_explicit.c \ opm/core/transport/spu_implicit.c \ opm/core/transport/transport_source.c \ -opm/core/transport/reorder/TransportModelInterface.cpp \ -opm/core/transport/reorder/TransportModelCompressibleTwophase.cpp \ -opm/core/transport/reorder/TransportModelTwophase.cpp \ -opm/core/transport/reorder/reordersequence.cpp \ -opm/core/transport/reorder/nlsolvers.c \ -opm/core/transport/reorder/tarjan.c \ -opm/core/vag_format/vag.cpp +opm/core/utility/MonotCubicInterpolator.cpp \ +opm/core/utility/StopWatch.cpp \ +opm/core/utility/miscUtilities.cpp \ +opm/core/utility/miscUtilitiesBlackoil.cpp \ +opm/core/utility/parameters/Parameter.cpp \ +opm/core/utility/parameters/ParameterGroup.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 = \ -opm/core/eclipse/CornerpointChopper.hpp \ -opm/core/eclipse/EclipseGridInspector.hpp \ -opm/core/eclipse/EclipseGridParser.hpp \ -opm/core/eclipse/EclipseGridParserHelpers.hpp \ -opm/core/eclipse/EclipseUnits.hpp \ -opm/core/eclipse/SpecialEclipseFields.hpp \ -opm/core/fluid/BlackoilPropertiesInterface.hpp \ -opm/core/fluid/BlackoilPropertiesBasic.hpp \ -opm/core/fluid/BlackoilPropertiesFromDeck.hpp \ -opm/core/fluid/IncompPropertiesInterface.hpp \ -opm/core/fluid/IncompPropertiesBasic.hpp \ -opm/core/fluid/IncompPropertiesFromDeck.hpp \ -opm/core/fluid/PvtPropertiesBasic.hpp \ -opm/core/fluid/PvtPropertiesIncompFromDeck.hpp \ -opm/core/fluid/RockBasic.hpp \ -opm/core/fluid/RockCompressibility.hpp \ -opm/core/fluid/RockFromDeck.hpp \ -opm/core/fluid/SaturationPropsBasic.hpp \ -opm/core/fluid/SaturationPropsFromDeck.hpp \ -opm/core/fluid/SimpleFluid2p.hpp \ -opm/core/fluid/blackoil/phaseUsageFromDeck.hpp \ -opm/core/fluid/blackoil/BlackoilPhases.hpp \ -opm/core/fluid/blackoil/BlackoilPvtProperties.hpp \ -opm/core/fluid/blackoil/SinglePvtDead.hpp \ -opm/core/fluid/blackoil/SinglePvtLiveGas.hpp \ -opm/core/fluid/blackoil/SinglePvtLiveOil.hpp \ -opm/core/fluid/blackoil/SinglePvtInterface.hpp \ -opm/core/fluid/blackoil/SinglePvtConstCompr.hpp \ -opm/core/grid/cart_grid.h \ -opm/core/grid/cornerpoint_grid.h \ -opm/core/grid/cpgpreprocess/readvector.hpp \ -opm/core/grid/cpgpreprocess/uniquepoints.h \ -opm/core/grid/cpgpreprocess/preprocess.h \ -opm/core/grid/cpgpreprocess/sparsetable.h \ -opm/core/grid/cpgpreprocess/geometry.h \ -opm/core/grid/cpgpreprocess/facetopology.h \ -opm/core/grid/cpgpreprocess/grdecl.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/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/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/writeVtkData.hpp \ -opm/core/linalg/sparse_sys.h \ -opm/core/linalg/blas_lapack.h \ -opm/core/linalg/LinearSolverInterface.hpp \ -opm/core/linalg/LinearSolverFactory.hpp \ -opm/core/grid.h \ -opm/core/well.h \ -opm/core/newwells.h \ -opm/core/wells/WellsManager.hpp \ -opm/core/wells/WellsGroup.hpp \ -opm/core/wells/WellCollection.hpp \ -opm/core/wells/InjectionSpecification.hpp \ -opm/core/wells/ProductionSpecification.hpp \ -opm/core/GridAdapter.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 \ +nobase_include_HEADERS = \ +opm/core/GridAdapter.hpp \ +opm/core/GridManager.hpp \ +opm/core/eclipse/CornerpointChopper.hpp \ +opm/core/eclipse/EclipseGridInspector.hpp \ +opm/core/eclipse/EclipseGridParser.hpp \ +opm/core/eclipse/EclipseGridParserHelpers.hpp \ +opm/core/eclipse/EclipseUnits.hpp \ +opm/core/eclipse/SpecialEclipseFields.hpp \ +opm/core/fluid/BlackoilPropertiesBasic.hpp \ +opm/core/fluid/BlackoilPropertiesFromDeck.hpp \ +opm/core/fluid/BlackoilPropertiesInterface.hpp \ +opm/core/fluid/IncompPropertiesBasic.hpp \ +opm/core/fluid/IncompPropertiesFromDeck.hpp \ +opm/core/fluid/IncompPropertiesInterface.hpp \ +opm/core/fluid/PvtPropertiesBasic.hpp \ +opm/core/fluid/PvtPropertiesIncompFromDeck.hpp \ +opm/core/fluid/RockBasic.hpp \ +opm/core/fluid/RockCompressibility.hpp \ +opm/core/fluid/RockFromDeck.hpp \ +opm/core/fluid/SaturationPropsBasic.hpp \ +opm/core/fluid/SaturationPropsFromDeck.hpp \ +opm/core/fluid/SimpleFluid2p.hpp \ +opm/core/fluid/blackoil/BlackoilPhases.hpp \ +opm/core/fluid/blackoil/BlackoilPvtProperties.hpp \ +opm/core/fluid/blackoil/SinglePvtConstCompr.hpp \ +opm/core/fluid/blackoil/SinglePvtDead.hpp \ +opm/core/fluid/blackoil/SinglePvtInterface.hpp \ +opm/core/fluid/blackoil/SinglePvtLiveGas.hpp \ +opm/core/fluid/blackoil/SinglePvtLiveOil.hpp \ +opm/core/fluid/blackoil/phaseUsageFromDeck.hpp \ +opm/core/grid.h \ +opm/core/grid/cart_grid.h \ +opm/core/grid/cornerpoint_grid.h \ +opm/core/grid/cpgpreprocess/facetopology.h \ +opm/core/grid/cpgpreprocess/geometry.h \ +opm/core/grid/cpgpreprocess/grdecl.h \ +opm/core/grid/cpgpreprocess/preprocess.h \ +opm/core/grid/cpgpreprocess/readvector.hpp \ +opm/core/grid/cpgpreprocess/sparsetable.h \ +opm/core/grid/cpgpreprocess/uniquepoints.h \ +opm/core/linalg/LinearSolverFactory.hpp \ +opm/core/linalg/LinearSolverInterface.hpp \ +opm/core/linalg/blas_lapack.h \ +opm/core/linalg/sparse_sys.h \ +opm/core/newwells.h \ +opm/core/pressure/CompressibleTpfa.hpp \ +opm/core/pressure/FlowBCManager.hpp \ +opm/core/pressure/HybridPressureSolver.hpp \ +opm/core/pressure/IncompTpfa.hpp \ +opm/core/pressure/TPFACompressiblePressureSolver.hpp \ +opm/core/pressure/TPFAPressureSolver.hpp \ +opm/core/pressure/flow_bc.h \ +opm/core/pressure/fsh.h \ +opm/core/pressure/fsh_common_impl.h \ +opm/core/pressure/mimetic/hybsys.h \ +opm/core/pressure/mimetic/hybsys_global.h \ +opm/core/pressure/mimetic/mimetic.h \ +opm/core/pressure/msmfem/coarse_conn.h \ +opm/core/pressure/msmfem/coarse_sys.h \ +opm/core/pressure/msmfem/dfs.h \ +opm/core/pressure/msmfem/hash_set.h \ +opm/core/pressure/msmfem/ifsh_ms.h \ +opm/core/pressure/msmfem/partition.h \ +opm/core/pressure/tpfa/cfs_tpfa.h \ +opm/core/pressure/tpfa/cfs_tpfa_residual.h \ +opm/core/pressure/tpfa/compr_bc.h \ +opm/core/pressure/tpfa/compr_quant.h \ +opm/core/pressure/tpfa/compr_quant_general.h \ +opm/core/pressure/tpfa/compr_source.h \ +opm/core/pressure/tpfa/ifs_tpfa.h \ +opm/core/pressure/tpfa/trans_tpfa.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/CSRMatrixBlockAssembler.hpp \ +opm/core/transport/CSRMatrixUmfpackSolver.hpp \ opm/core/transport/GravityColumnSolver.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/TransportModelInterface.hpp \ opm/core/transport/reorder/TransportModelTwophase.hpp \ -opm/core/transport/reorder/nlsolvers.h \ -opm/core/transport/reorder/reordersequence.h \ -opm/core/transport/reorder/tarjan.h \ -opm/core/vag_format/vag.hpp +opm/core/transport/reorder/nlsolvers.h \ +opm/core/transport/reorder/reordersequence.h \ +opm/core/transport/reorder/tarjan.h \ +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. diff --git a/opm/core/eclipse/EclipseGridParser.cpp b/opm/core/eclipse/EclipseGridParser.cpp index 5873e021..fd5f5ef5 100644 --- a/opm/core/eclipse/EclipseGridParser.cpp +++ b/opm/core/eclipse/EclipseGridParser.cpp @@ -284,7 +284,8 @@ EclipseGridParser::EclipseGridParser() : current_reading_mode_(Regular), start_date_(boost::date_time::not_a_date_time), 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), start_date_(boost::date_time::not_a_date_time), current_time_days_(0.0), - current_epoch_(0) + current_epoch_(0), + special_field_by_epoch_(1) { // Store directory of filename boost::filesystem::path p(filename); @@ -319,6 +321,8 @@ void EclipseGridParser::read(istream& is, bool convert_to_SI) floating_field_map_.clear(); special_field_by_epoch_.clear(); special_field_by_epoch_.push_back(SpecialMap()); + current_time_days_ = 0.0; + current_epoch_ = 0; readImpl(is); diff --git a/opm/core/newwells.c b/opm/core/newwells.c index e177f89f..68037201 100644 --- a/opm/core/newwells.c +++ b/opm/core/newwells.c @@ -186,7 +186,7 @@ wells_allocate(int nwells, struct Wells *W) int ok, np; void *type, *depth_ref, *comp_frac; void *well_connpos; - void *ctrls; + void *ctrls, *name; 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); comp_frac = realloc(W->comp_frac, np * nwells * sizeof *W->comp_frac); ctrls = realloc(W->ctrls , 1 * nwells * sizeof *W->ctrls); + name = realloc(W->name , 1 * nwells * sizeof *W->name); well_connpos = realloc(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 (well_connpos != NULL) { W->well_connpos = well_connpos; 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++) { W->type [w] = PRODUCER; W->depth_ref[w] = -1.0; + W->name [w] = NULL; for (p = 0; p < W->number_of_phases; ++p) { 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. * ====================================================================== */ @@ -353,6 +375,7 @@ create_wells(int nphases, int nwells, int nperf) W->WI = NULL; W->ctrls = NULL; + W->name = NULL; W->data = create_well_mgmt(); @@ -391,8 +414,13 @@ destroy_wells(struct Wells *W) well_controls_destroy(W->ctrls[w]); } + for (w = 0; w < m->well_cpty; w++) { + free(W->name[w]); + } + destroy_well_mgmt(m); + free(W->name); free(W->ctrls); free(W->WI); free(W->well_cells); @@ -431,6 +459,7 @@ add_well(enum WellType type , const double *comp_frac, /* Injection fraction or NULL */ const int *cells , const double *WI , /* Well index per perf (or NULL) */ + const char *name , /* Well name (or NULL) */ struct Wells *W ) /* ---------------------------------------------------------------------- */ { @@ -470,6 +499,12 @@ add_well(enum WellType type , W->type [nw] = type ; 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; if (comp_frac != NULL) { memcpy(W->comp_frac + np*nw, comp_frac, np * sizeof *W->comp_frac); diff --git a/opm/core/newwells.h b/opm/core/newwells.h index 710df7c7..f16675b6 100644 --- a/opm/core/newwells.h +++ b/opm/core/newwells.h @@ -100,6 +100,7 @@ struct Wells double *WI; /** Well productivity index, same size and structure as well_cells. */ 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. */ }; @@ -168,6 +169,7 @@ create_wells(int nphases, int nwells, int nperf); * \param[in] cells Grid cells in which well is perforated. Should * ideally be track ordered. * \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 * be added. * @@ -180,6 +182,7 @@ add_well(enum WellType type , const double *comp_frac, const int *cells , const double *WI , + const char *name , struct Wells *W ); diff --git a/opm/core/simulator/SimulatorReport.cpp b/opm/core/simulator/SimulatorReport.cpp index 3d8e0c04..1fa26459 100644 --- a/opm/core/simulator/SimulatorReport.cpp +++ b/opm/core/simulator/SimulatorReport.cpp @@ -40,7 +40,7 @@ namespace Opm { os << "Total time taken: " << total_time << "\n Pressure time: " << pressure_time - << "\n Transport time: " << total_time << std::endl; + << "\n Transport time: " << transport_time << std::endl; } diff --git a/opm/core/wells/WellsGroup.cpp b/opm/core/wells/WellsGroup.cpp index 3da16f77..afa17f12 100644 --- a/opm/core/wells/WellsGroup.cpp +++ b/opm/core/wells/WellsGroup.cpp @@ -737,7 +737,9 @@ namespace Opm void WellNode::shutWell() { 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 { const double target = 0.0; @@ -755,7 +757,7 @@ namespace Opm wells_->ctrls[self_index_]->target[group_control_index_] = target; 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; } } diff --git a/opm/core/wells/WellsManager.cpp b/opm/core/wells/WellsManager.cpp index 985df5f8..0215b053 100644 --- a/opm/core/wells/WellsManager.cpp +++ b/opm/core/wells/WellsManager.cpp @@ -28,7 +28,13 @@ #include #include +#include +#include #include +#include +#include +#include +#include // Helper structs and functions for the implementation. @@ -56,25 +62,41 @@ namespace { enum Mode { ORAT, WRAT, GRAT, LRAT, CRAT, RESV, - BHP, THP, GRUP }; + BHP , THP , GRUP }; + + namespace Details { + std::map + init_mode_map() { + std::map 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) { - const int num_prod_control_modes = 9; - static std::string prod_control_modes[num_prod_control_modes] = - {std::string("ORAT"), std::string("WRAT"), std::string("GRAT"), - std::string("LRAT"), std::string("CRAT"), std::string("RESV"), - std::string("BHP"), std::string("THP"), std::string("GRUP") }; - int m = -1; - for (int i=0; i + mode_map = Details::init_mode_map(); + + std::map::iterator + p = mode_map.find(control); + + if (p != mode_map.end()) { + return p->second; } - if (m >= 0) { - return static_cast(m); - } else { - THROW("Unknown well control mode = " << control << " in input file"); + else { + THROW("Unknown well control mode = " + << control << " in input file"); } } } // namespace ProductionControl @@ -84,24 +106,36 @@ namespace { enum Mode { RATE, RESV, BHP, THP, GRUP }; + + namespace Details { + std::map + init_mode_map() { + std::map 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) { - const int num_inje_control_modes = 5; - static std::string inje_control_modes[num_inje_control_modes] = - {std::string("RATE"), std::string("RESV"), std::string("BHP"), - std::string("THP"), std::string("GRUP") }; - int m = -1; - for (int i=0; i + mode_map = Details::init_mode_map(); - if (m >= 0) { - return static_cast(m); - } else { - THROW("Unknown well control mode = " << control << " in input file"); + std::map::iterator + p = mode_map.find(control); + + if (p != mode_map.end()) { + return p->second; + } + else { + THROW("Unknown well control mode = " + << control << " in input file"); } } } // namespace InjectionControl @@ -408,10 +442,10 @@ namespace Opm } else { THROW("Unseen well name: " << lines[i].well_ << " first seen in WCONPROD"); } - + } } - + // Add wells. for (int w = 0; w < num_wells; ++w) { const int w_num_perf = wellperf_data[w].size(); @@ -425,7 +459,7 @@ namespace Opm // We initialize all wells with a null component fraction, // 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, - 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) { 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]); } 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) { 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 well component fraction. @@ -610,10 +648,14 @@ namespace Opm THROW("Failure occured appending controls for well " << well_names[wix]); } 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) { 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_); } } @@ -673,6 +715,34 @@ namespace Opm */ #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::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. if (deck.hasField("GRUPTREE")) { diff --git a/tutorials/tutorial4.cpp b/tutorials/tutorial4.cpp index 177871b7..d90ce978 100644 --- a/tutorials/tutorial4.cpp +++ b/tutorials/tutorial4.cpp @@ -263,7 +263,10 @@ int main () for (int i = 0; i < num_wells; ++i) { const int well_cells = i*nx; 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 @@ -354,6 +357,8 @@ int main () dm["pressure"] = &state.pressure(); Opm::writeVtkData(grid, dm, vtkfile); } + + destroy_wells(wells); } /// \endcode