Merge pull request #3649 from akva2/separate_flow_binaries

changed: build separate simulator binaries for flow
This commit is contained in:
Atgeirr Flø Rasmussen 2021-11-01 13:07:07 +01:00 committed by GitHub
commit 16eafcca04
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
43 changed files with 531 additions and 75 deletions

View File

@ -21,7 +21,6 @@ cmake_minimum_required (VERSION 3.10)
option(SIBLING_SEARCH "Search for other modules in sibling directories?" ON) option(SIBLING_SEARCH "Search for other modules in sibling directories?" ON)
set( USE_OPENMP_DEFAULT OFF ) # Use of OpenMP is considered experimental set( USE_OPENMP_DEFAULT OFF ) # Use of OpenMP is considered experimental
option(BUILD_FLOW "Build the production oriented flow simulator?" ON) option(BUILD_FLOW "Build the production oriented flow simulator?" ON)
option(BUILD_FLOW_BLACKOIL_ONLY "Build the production oriented flow simulator only supporting the blackoil model?" OFF)
option(BUILD_FLOW_VARIANTS "Build the variants for flow by default?" OFF) option(BUILD_FLOW_VARIANTS "Build the variants for flow by default?" OFF)
option(BUILD_EBOS "Build the research oriented ebos simulator?" ON) option(BUILD_EBOS "Build the research oriented ebos simulator?" ON)
option(BUILD_EBOS_EXTENSIONS "Build the variants for various extensions of ebos by default?" OFF) option(BUILD_EBOS_EXTENSIONS "Build the variants for various extensions of ebos by default?" OFF)
@ -349,22 +348,28 @@ add_dependencies(moduleVersion opmsimulators)
set(COMMON_MODELS brine energy extbo foam gasoil gaswater oilwater oilwater_polymer polymer solvent) set(COMMON_MODELS brine energy extbo foam gasoil gaswater oilwater oilwater_polymer polymer solvent)
set(FLOW_MODELS blackoil oilwater_brine oilwater_polymer_injectivity micp) set(FLOW_MODELS blackoil oilwater_brine oilwater_polymer_injectivity micp)
set(FLOW_VARIANT_MODELS brine_energy onephase onephase_energy)
set(FLOW_TGTS) set(FLOW_TGTS)
foreach(OBJ ${COMMON_MODELS} ${FLOW_MODELS}) foreach(OBJ ${COMMON_MODELS} ${FLOW_MODELS} ${FLOW_VARIANT_MODELS})
add_library(flow_lib${OBJ} OBJECT flow/flow_ebos_${OBJ}.cpp) add_library(flow_lib${OBJ} OBJECT flow/flow_ebos_${OBJ}.cpp)
list(APPEND FLOW_TGTS $<TARGET_OBJECTS:flow_lib${OBJ}>) list(APPEND FLOW_TGTS $<TARGET_OBJECTS:flow_lib${OBJ}>)
if(TARGET fmt::fmt) if(TARGET fmt::fmt)
target_link_libraries(flow_lib${OBJ} fmt::fmt) target_link_libraries(flow_lib${OBJ} fmt::fmt)
endif() endif()
opm_add_test(flow_${OBJ}
ONLY_COMPILE
SOURCES
flow/flow_${OBJ}.cpp
$<TARGET_OBJECTS:moduleVersion>
$<TARGET_OBJECTS:flow_lib${OBJ}>
EXE_NAME flow_${OBJ}
DEPENDS opmsimulators
LIBRARIES opmsimulators)
endforeach() endforeach()
set_property(TARGET flow_libblackoil PROPERTY POSITION_INDEPENDENT_CODE ON) set_property(TARGET flow_libblackoil PROPERTY POSITION_INDEPENDENT_CODE ON)
foreach(OBJ brine_energy onephase onephase_energy) foreach(OBJ ${FLOW_VARIANT_MODELS})
add_library(flow_lib${OBJ} OBJECT flow/flow_ebos_${OBJ}.cpp)
if(TARGET fmt::fmt)
target_link_libraries(flow_lib${OBJ} fmt::fmt)
endif()
set_property(TARGET flow_lib${OBJ} PROPERTY EXCLUDE_FROM_ALL ${FLOW_VARIANTS_DEFAULT_ENABLE_IF}) set_property(TARGET flow_lib${OBJ} PROPERTY EXCLUDE_FROM_ALL ${FLOW_VARIANTS_DEFAULT_ENABLE_IF})
endforeach() endforeach()
@ -387,26 +392,6 @@ opm_add_test(flow
$<TARGET_OBJECTS:moduleVersion> $<TARGET_OBJECTS:moduleVersion>
) )
if (NOT BUILD_FLOW_BLACKOIL_ONLY)
set(FLOW_BLACKOIL_ONLY_DEFAULT_ENABLE_IF "FALSE")
else()
set(FLOW_BLACKOIL_ONLY_DEFAULT_ENABLE_IF "TRUE")
endif()
# the production oriented general-purpose ECL simulator
opm_add_test(flow_blackoil
ONLY_COMPILE
ALWAYS_ENABLE
DEFAULT_ENABLE_IF ${FLOW_BLACKOIL_ONLY_DEFAULT_ENABLE_IF}
DEPENDS opmsimulators
LIBRARIES opmsimulators
SOURCES
flow/flow.cpp
$<TARGET_OBJECTS:flow_libblackoil>
$<TARGET_OBJECTS:moduleVersion>)
target_compile_definitions(flow_blackoil PRIVATE "FLOW_BLACKOIL_ONLY")
# the production oriented general-purpose ECL simulator # the production oriented general-purpose ECL simulator
opm_add_test(flow_poly opm_add_test(flow_poly
ONLY_COMPILE ONLY_COMPILE
@ -444,39 +429,6 @@ opm_add_test(flow_blackoil_dunecpr
DEPENDS opmsimulators DEPENDS opmsimulators
LIBRARIES opmsimulators) LIBRARIES opmsimulators)
opm_add_test(flow_brine_energy
ONLY_COMPILE
DEFAULT_ENABLE_IF ${FLOW_VARIANTS_DEFAULT_ENABLE_IF}
SOURCES
flow/flow_brine_energy.cpp
$<TARGET_OBJECTS:moduleVersion>
$<TARGET_OBJECTS:flow_libbrine_energy>
EXE_NAME flow_brine_energy
DEPENDS opmsimulators
LIBRARIES opmsimulators)
opm_add_test(flow_onephase
ONLY_COMPILE
DEFAULT_ENABLE_IF ${FLOW_VARIANTS_DEFAULT_ENABLE_IF}
SOURCES
flow/flow_onephase.cpp
$<TARGET_OBJECTS:moduleVersion>
$<TARGET_OBJECTS:flow_libonephase>
EXE_NAME flow_onephase
DEPENDS opmsimulators
LIBRARIES opmsimulators)
opm_add_test(flow_onephase_energy
ONLY_COMPILE
DEFAULT_ENABLE_IF ${FLOW_VARIANTS_DEFAULT_ENABLE_IF}
SOURCES
flow/flow_onephase_energy.cpp
$<TARGET_OBJECTS:moduleVersion>
$<TARGET_OBJECTS:flow_libonephase_energy>
EXE_NAME flow_onephase_energy
DEPENDS opmsimulators flow_libonephase_energy
LIBRARIES opmsimulators)
if (BUILD_FLOW) if (BUILD_FLOW)
install(TARGETS flow DESTINATION bin) install(TARGETS flow DESTINATION bin)
opm_add_bash_completion(flow) opm_add_bash_completion(flow)

24
flow/flow_blackoil.cpp Normal file
View File

@ -0,0 +1,24 @@
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <flow/flow_ebos_blackoil.hpp>
int main(int argc, char** argv)
{
return Opm::flowEbosBlackoilMainStandalone(argc, argv);
}

24
flow/flow_brine.cpp Normal file
View File

@ -0,0 +1,24 @@
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <flow/flow_ebos_brine.hpp>
int main(int argc, char** argv)
{
return Opm::flowEbosBrineMainStandalone(argc, argv);
}

View File

@ -20,7 +20,7 @@
#include <opm/material/common/ResetLocale.hpp> #include <opm/material/common/ResetLocale.hpp>
#include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp> #include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp>
#include <opm/simulators/flow/FlowMainEbos.hpp> #include <opm/simulators/flow/Main.hpp>
#if HAVE_DUNE_FEM #if HAVE_DUNE_FEM
#include <dune/fem/misc/mpimanager.hh> #include <dune/fem/misc/mpimanager.hh>
@ -75,4 +75,11 @@ int flowEbosBlackoilMain(int argc, char** argv, bool outputCout, bool outputFile
return mainfunc->execute(); return mainfunc->execute();
} }
int flowEbosBlackoilMainStandalone(int argc, char** argv)
{
using TypeTag = Properties::TTag::EclFlowProblem;
auto mainObject = Opm::Main(argc, argv);
return mainObject.runStatic<TypeTag>();
}
} }

View File

@ -41,10 +41,16 @@ void flowEbosBlackoilSetDeck(double setupTime, std::shared_ptr<Deck> deck,
std::unique_ptr<WellTestState> wtestState, std::unique_ptr<WellTestState> wtestState,
std::shared_ptr<SummaryConfig> summaryConfig); std::shared_ptr<SummaryConfig> summaryConfig);
//! \brief Main function used in flow binary.
int flowEbosBlackoilMain(int argc, char** argv, bool outputCout, bool outputFiles); int flowEbosBlackoilMain(int argc, char** argv, bool outputCout, bool outputFiles);
//! \brief Initialization function used in flow binary and python simulator.
std::unique_ptr<FlowMainEbos<Properties::TTag::EclFlowProblem>> std::unique_ptr<FlowMainEbos<Properties::TTag::EclFlowProblem>>
flowEbosBlackoilMainInit(int argc, char** argv, bool outputCout, bool outputFiles); flowEbosBlackoilMainInit(int argc, char** argv, bool outputCout, bool outputFiles);
//! \brief Main function used in flow_blackoil binary.
int flowEbosBlackoilMainStandalone(int argc, char** argv);
} }
#endif // FLOW_EBOS_BLACKOIL_HPP #endif // FLOW_EBOS_BLACKOIL_HPP

View File

@ -21,7 +21,7 @@
#include <opm/material/common/ResetLocale.hpp> #include <opm/material/common/ResetLocale.hpp>
#include <opm/grid/CpGrid.hpp> #include <opm/grid/CpGrid.hpp>
#include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp> #include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp>
#include <opm/simulators/flow/FlowMainEbos.hpp> #include <opm/simulators/flow/Main.hpp>
#if HAVE_DUNE_FEM #if HAVE_DUNE_FEM
#include <dune/fem/misc/mpimanager.hh> #include <dune/fem/misc/mpimanager.hh>
@ -78,4 +78,11 @@ int flowEbosBrineMain(int argc, char** argv, bool outputCout, bool outputFiles)
return mainfunc.execute(); return mainfunc.execute();
} }
int flowEbosBrineMainStandalone(int argc, char** argv)
{
using TypeTag = Properties::TTag::EclFlowBrineProblem;
auto mainObject = Opm::Main(argc, argv);
return mainObject.runStatic<TypeTag>();
}
} }

View File

@ -30,7 +30,13 @@ void flowEbosBrineSetDeck(double setupTime, std::shared_ptr<Deck> deck,
std::shared_ptr<EclipseState> eclState, std::shared_ptr<EclipseState> eclState,
std::shared_ptr<Schedule> schedule, std::shared_ptr<Schedule> schedule,
std::shared_ptr<SummaryConfig> summaryConfig); std::shared_ptr<SummaryConfig> summaryConfig);
//! \brief Main function used in flow binary.
int flowEbosBrineMain(int argc, char** argv, bool outputCout, bool outputFiles); int flowEbosBrineMain(int argc, char** argv, bool outputCout, bool outputFiles);
//! \brief Main function used in flow_brine binary.
int flowEbosBrineMainStandalone(int argc, char** argv);
} }
#endif // FLOW_EBOS_BRINE_HPP #endif // FLOW_EBOS_BRINE_HPP

View File

@ -21,7 +21,7 @@
#include <opm/material/common/ResetLocale.hpp> #include <opm/material/common/ResetLocale.hpp>
#include <opm/grid/CpGrid.hpp> #include <opm/grid/CpGrid.hpp>
#include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp> #include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp>
#include <opm/simulators/flow/FlowMainEbos.hpp> #include <opm/simulators/flow/Main.hpp>
#if HAVE_DUNE_FEM #if HAVE_DUNE_FEM
#include <dune/fem/misc/mpimanager.hh> #include <dune/fem/misc/mpimanager.hh>
@ -77,4 +77,11 @@ int flowEbosEnergyMain(int argc, char** argv, bool outputCout, bool outputFiles)
return mainfunc.execute(); return mainfunc.execute();
} }
int flowEbosEnergyMainStandalone(int argc, char** argv)
{
using TypeTag = Properties::TTag::EclFlowEnergyProblem;
auto mainObject = Opm::Main(argc, argv);
return mainObject.runStatic<TypeTag>();
}
} }

View File

@ -30,8 +30,13 @@ void flowEbosEnergySetDeck(double setupTime, std::shared_ptr<Deck> deck,
std::shared_ptr<EclipseState> eclState, std::shared_ptr<EclipseState> eclState,
std::shared_ptr<Schedule> schedule, std::shared_ptr<Schedule> schedule,
std::shared_ptr<SummaryConfig> summaryConfig); std::shared_ptr<SummaryConfig> summaryConfig);
//! \brief Main function used in flow binary.
int flowEbosEnergyMain(int argc, char** argv, bool outputCout, bool outputFiles); int flowEbosEnergyMain(int argc, char** argv, bool outputCout, bool outputFiles);
//! \brief Main function used in flow_energy binary.
int flowEbosEnergyMainStandalone(int argc, char** argv);
} }
#endif // FLOW_EBOS_ENERGY_HPP #endif // FLOW_EBOS_ENERGY_HPP

View File

@ -21,7 +21,7 @@
#include <opm/material/common/ResetLocale.hpp> #include <opm/material/common/ResetLocale.hpp>
#include <opm/grid/CpGrid.hpp> #include <opm/grid/CpGrid.hpp>
#include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp> #include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp>
#include <opm/simulators/flow/FlowMainEbos.hpp> #include <opm/simulators/flow/Main.hpp>
#if HAVE_DUNE_FEM #if HAVE_DUNE_FEM
#include <dune/fem/misc/mpimanager.hh> #include <dune/fem/misc/mpimanager.hh>
@ -77,4 +77,11 @@ int flowEbosExtboMain(int argc, char** argv, bool outputCout, bool outputFiles)
return mainfunc.execute(); return mainfunc.execute();
} }
int flowEbosExtboMainStandalone(int argc, char** argv)
{
using TypeTag = Properties::TTag::EclFlowExtboProblem;
auto mainObject = Opm::Main(argc, argv);
return mainObject.runStatic<TypeTag>();
}
} }

View File

@ -30,8 +30,13 @@ void flowEbosExtboSetDeck(double setupTime, std::shared_ptr<Deck> deck,
std::shared_ptr<EclipseState> eclState, std::shared_ptr<EclipseState> eclState,
std::shared_ptr<Schedule> schedule, std::shared_ptr<Schedule> schedule,
std::shared_ptr<SummaryConfig> summaryConfig); std::shared_ptr<SummaryConfig> summaryConfig);
//! \brief Main function used in flow binary.
int flowEbosExtboMain(int argc, char** argv, bool outputCout, bool outputFiles); int flowEbosExtboMain(int argc, char** argv, bool outputCout, bool outputFiles);
//! \brief Main function used in flow_extbo binary.
int flowEbosExtboMainStandalone(int argc, char** argv);
} }
#endif // FLOW_EBOS_EXTBO_HPP #endif // FLOW_EBOS_EXTBO_HPP

View File

@ -21,7 +21,7 @@
#include <opm/material/common/ResetLocale.hpp> #include <opm/material/common/ResetLocale.hpp>
#include <opm/grid/CpGrid.hpp> #include <opm/grid/CpGrid.hpp>
#include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp> #include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp>
#include <opm/simulators/flow/FlowMainEbos.hpp> #include <opm/simulators/flow/Main.hpp>
#if HAVE_DUNE_FEM #if HAVE_DUNE_FEM
#include <dune/fem/misc/mpimanager.hh> #include <dune/fem/misc/mpimanager.hh>
@ -78,4 +78,11 @@ int flowEbosFoamMain(int argc, char** argv, bool outputCout, bool outputFiles)
return mainfunc.execute(); return mainfunc.execute();
} }
int flowEbosFoamMainStandalone(int argc, char** argv)
{
using TypeTag = Properties::TTag::EclFlowFoamProblem;
auto mainObject = Opm::Main(argc, argv);
return mainObject.runStatic<TypeTag>();
}
} }

View File

@ -30,8 +30,13 @@ void flowEbosFoamSetDeck(double setupTime, std::shared_ptr<Deck> deck,
std::shared_ptr<EclipseState> eclState, std::shared_ptr<EclipseState> eclState,
std::shared_ptr<Schedule> schedule, std::shared_ptr<Schedule> schedule,
std::shared_ptr<SummaryConfig> summaryConfig); std::shared_ptr<SummaryConfig> summaryConfig);
//! \brief Main function used in flow binary.
int flowEbosFoamMain(int argc, char** argv, bool outputCout, bool outputFiles); int flowEbosFoamMain(int argc, char** argv, bool outputCout, bool outputFiles);
//! \brief Main function used in flow_foam binary.
int flowEbosFoamMainStandalone(int argc, char** argv);
} }
#endif // FLOW_EBOS_FOAM_HPP #endif // FLOW_EBOS_FOAM_HPP

View File

@ -23,7 +23,7 @@
#include <opm/grid/CpGrid.hpp> #include <opm/grid/CpGrid.hpp>
#include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp> #include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp>
#include <opm/simulators/flow/FlowMainEbos.hpp> #include <opm/simulators/flow/Main.hpp>
#if HAVE_DUNE_FEM #if HAVE_DUNE_FEM
#include <dune/fem/misc/mpimanager.hh> #include <dune/fem/misc/mpimanager.hh>
@ -98,4 +98,11 @@ int flowEbosGasOilMain(int argc, char** argv, bool outputCout, bool outputFiles)
return mainfunc.execute(); return mainfunc.execute();
} }
int flowEbosGasOilMainStandalone(int argc, char** argv)
{
using TypeTag = Properties::TTag::EclFlowGasOilProblem;
auto mainObject = Opm::Main(argc, argv);
return mainObject.runStatic<TypeTag>();
}
} }

View File

@ -30,8 +30,13 @@ void flowEbosGasOilSetDeck(double setupTime, std::shared_ptr<Deck> deck,
std::shared_ptr<EclipseState> eclState, std::shared_ptr<EclipseState> eclState,
std::shared_ptr<Schedule> schedule, std::shared_ptr<Schedule> schedule,
std::shared_ptr<SummaryConfig> summaryConfig); std::shared_ptr<SummaryConfig> summaryConfig);
//! \brief Main function used in flow binary.
int flowEbosGasOilMain(int argc, char** argv, bool outputCout, bool outputFiles); int flowEbosGasOilMain(int argc, char** argv, bool outputCout, bool outputFiles);
//! \brief Main function used in flow_gasoil binary.
int flowEbosGasOilMainStandalone(int argc, char** argv);
} }
#endif // FLOW_EBOS_GASOIL_HPP #endif // FLOW_EBOS_GASOIL_HPP

View File

@ -26,7 +26,7 @@
#include <opm/grid/CpGrid.hpp> #include <opm/grid/CpGrid.hpp>
#include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp> #include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp>
#include <opm/simulators/flow/FlowMainEbos.hpp> #include <opm/simulators/flow/Main.hpp>
#if HAVE_DUNE_FEM #if HAVE_DUNE_FEM
#include <dune/fem/misc/mpimanager.hh> #include <dune/fem/misc/mpimanager.hh>
@ -101,4 +101,11 @@ int flowEbosGasWaterMain(int argc, char** argv, bool outputCout, bool outputFile
return mainfunc.execute(); return mainfunc.execute();
} }
int flowEbosGasWaterMainStandalone(int argc, char** argv)
{
using TypeTag = Properties::TTag::EclFlowGasWaterProblem;
auto mainObject = Opm::Main(argc, argv);
return mainObject.runStatic<TypeTag>();
}
} }

View File

@ -30,8 +30,13 @@ void flowEbosGasWaterSetDeck(double setupTime, std::shared_ptr<Deck> deck,
std::shared_ptr<EclipseState> eclState, std::shared_ptr<EclipseState> eclState,
std::shared_ptr<Schedule> schedule, std::shared_ptr<Schedule> schedule,
std::shared_ptr<SummaryConfig> summaryConfig); std::shared_ptr<SummaryConfig> summaryConfig);
//! \brief Main function used in flow binary.
int flowEbosGasWaterMain(int argc, char** argv, bool outputCout, bool outputFiles); int flowEbosGasWaterMain(int argc, char** argv, bool outputCout, bool outputFiles);
//! \brief Main function used in flow_gaswater binary.
int flowEbosGasWaterMainStandalone(int argc, char** argv);
} }
#endif // FLOW_EBOS_GASWATER_HPP #endif // FLOW_EBOS_GASWATER_HPP

View File

@ -23,7 +23,7 @@
#include <opm/grid/CpGrid.hpp> #include <opm/grid/CpGrid.hpp>
#include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp> #include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp>
#include <opm/simulators/flow/FlowMainEbos.hpp> #include <opm/simulators/flow/Main.hpp>
#if HAVE_DUNE_FEM #if HAVE_DUNE_FEM
#include <dune/fem/misc/mpimanager.hh> #include <dune/fem/misc/mpimanager.hh>
@ -100,4 +100,11 @@ int flowEbosMICPMain(int argc, char** argv, bool outputCout, bool outputFiles)
return mainfunc.execute(); return mainfunc.execute();
} }
int flowEbosMICPMainStandalone(int argc, char** argv)
{
using TypeTag = Properties::TTag::EclFlowMICPProblem;
auto mainObject = Opm::Main(argc, argv);
return mainObject.runStatic<TypeTag>();
}
} }

View File

@ -30,8 +30,13 @@ void flowEbosMICPSetDeck(double setupTime, std::shared_ptr<Deck> deck,
std::shared_ptr<EclipseState> eclState, std::shared_ptr<EclipseState> eclState,
std::shared_ptr<Schedule> schedule, std::shared_ptr<Schedule> schedule,
std::shared_ptr<SummaryConfig> summaryConfig); std::shared_ptr<SummaryConfig> summaryConfig);
//! \brief Main function used in flow binary.
int flowEbosMICPMain(int argc, char** argv, bool outputCout, bool outputFiles); int flowEbosMICPMain(int argc, char** argv, bool outputCout, bool outputFiles);
//! \brief Main function used in flow_micp binary.
int flowEbosMICPMainStandalone(int argc, char** argv);
} }
#endif // FLOW_EBOS_MICP_HPP #endif // FLOW_EBOS_MICP_HPP

View File

@ -23,7 +23,7 @@
#include <opm/grid/CpGrid.hpp> #include <opm/grid/CpGrid.hpp>
#include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp> #include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp>
#include <opm/simulators/flow/FlowMainEbos.hpp> #include <opm/simulators/flow/Main.hpp>
#if HAVE_DUNE_FEM #if HAVE_DUNE_FEM
#include <dune/fem/misc/mpimanager.hh> #include <dune/fem/misc/mpimanager.hh>
@ -97,4 +97,11 @@ int flowEbosOilWaterMain(int argc, char** argv, bool outputCout, bool outputFile
return mainfunc.execute(); return mainfunc.execute();
} }
int flowEbosOilWaterMainStandalone(int argc, char** argv)
{
using TypeTag = Properties::TTag::EclFlowOilWaterProblem;
auto mainObject = Opm::Main(argc, argv);
return mainObject.runStatic<TypeTag>();
}
} }

View File

@ -30,8 +30,13 @@ void flowEbosOilWaterSetDeck(double setupTime, std::shared_ptr<Deck> deck,
std::shared_ptr<EclipseState> eclState, std::shared_ptr<EclipseState> eclState,
std::shared_ptr<Schedule> schedule, std::shared_ptr<Schedule> schedule,
std::shared_ptr<SummaryConfig> summaryConfig); std::shared_ptr<SummaryConfig> summaryConfig);
//! \brief Main functon used in main flow binary.
int flowEbosOilWaterMain(int argc, char** argv, bool outputCout, bool outputFiles); int flowEbosOilWaterMain(int argc, char** argv, bool outputCout, bool outputFiles);
//! \brief Main function used in flow_oilwater binary.
int flowEbosOilWaterMainStandalone(int argc, char** argv);
} }
#endif // FLOW_EBOS_OILWATER_HPP #endif // FLOW_EBOS_OILWATER_HPP

View File

@ -23,7 +23,7 @@
#include <opm/grid/CpGrid.hpp> #include <opm/grid/CpGrid.hpp>
#include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp> #include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp>
#include <opm/simulators/flow/FlowMainEbos.hpp> #include <opm/simulators/flow/Main.hpp>
#if HAVE_DUNE_FEM #if HAVE_DUNE_FEM
#include <dune/fem/misc/mpimanager.hh> #include <dune/fem/misc/mpimanager.hh>
@ -100,4 +100,11 @@ int flowEbosOilWaterBrineMain(int argc, char** argv, bool outputCout, bool outpu
return mainfunc.execute(); return mainfunc.execute();
} }
int flowEbosOilWaterBrineMainStandalone(int argc, char** argv)
{
using TypeTag = Properties::TTag::EclFlowOilWaterBrineProblem;
auto mainObject = Opm::Main(argc, argv);
return mainObject.runStatic<TypeTag>();
}
} }

View File

@ -30,8 +30,13 @@ void flowEbosOilWaterBrineSetDeck(double setupTime, std::shared_ptr<Deck> deck,
std::shared_ptr<EclipseState> eclState, std::shared_ptr<EclipseState> eclState,
std::shared_ptr<Schedule> schedule, std::shared_ptr<Schedule> schedule,
std::shared_ptr<SummaryConfig> summaryConfig); std::shared_ptr<SummaryConfig> summaryConfig);
//! \brief Main function used in flow binary.
int flowEbosOilWaterBrineMain(int argc, char** argv, bool outputCout, bool outputFiles); int flowEbosOilWaterBrineMain(int argc, char** argv, bool outputCout, bool outputFiles);
//! \brief Main function used in flow_oilwater_brine binary.
int flowEbosOilWaterBrineMainStandalone(int argc, char** argv);
} }
#endif // FLOW_EBOS_OILWATER_BRINE_HPP #endif // FLOW_EBOS_OILWATER_BRINE_HPP

View File

@ -23,7 +23,7 @@
#include <opm/grid/CpGrid.hpp> #include <opm/grid/CpGrid.hpp>
#include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp> #include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp>
#include <opm/simulators/flow/FlowMainEbos.hpp> #include <opm/simulators/flow/Main.hpp>
#if HAVE_DUNE_FEM #if HAVE_DUNE_FEM
#include <dune/fem/misc/mpimanager.hh> #include <dune/fem/misc/mpimanager.hh>
@ -100,4 +100,11 @@ int flowEbosOilWaterPolymerMain(int argc, char** argv, bool outputCout, bool out
return mainfunc.execute(); return mainfunc.execute();
} }
int flowEbosOilWaterPolymerMainStandalone(int argc, char** argv)
{
using TypeTag = Properties::TTag::EclFlowOilWaterPolymerProblem;
auto mainObject = Opm::Main(argc, argv);
return mainObject.runStatic<TypeTag>();
}
} }

View File

@ -30,8 +30,13 @@ void flowEbosOilWaterPolymerSetDeck(double setupTime, std::shared_ptr<Deck> deck
std::shared_ptr<EclipseState> eclState, std::shared_ptr<EclipseState> eclState,
std::shared_ptr<Schedule> schedule, std::shared_ptr<Schedule> schedule,
std::shared_ptr<SummaryConfig> summaryConfig); std::shared_ptr<SummaryConfig> summaryConfig);
//! \brief Main functon used in main flow binary.
int flowEbosOilWaterPolymerMain(int argc, char** argv, bool outputCout, bool outputFiles); int flowEbosOilWaterPolymerMain(int argc, char** argv, bool outputCout, bool outputFiles);
//! \brief Main function used in flow_oilwater_polymer binary.
int flowEbosOilWaterPolymerMainStandalone(int argc, char** argv);
} }
#endif // FLOW_EBOS_OILWATER_POLYMER_HPP #endif // FLOW_EBOS_OILWATER_POLYMER_HPP

View File

@ -23,7 +23,7 @@
#include <opm/grid/CpGrid.hpp> #include <opm/grid/CpGrid.hpp>
#include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp> #include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp>
#include <opm/simulators/flow/FlowMainEbos.hpp> #include <opm/simulators/flow/Main.hpp>
#if HAVE_DUNE_FEM #if HAVE_DUNE_FEM
#include <dune/fem/misc/mpimanager.hh> #include <dune/fem/misc/mpimanager.hh>
@ -99,4 +99,11 @@ int flowEbosOilWaterPolymerInjectivityMain(int argc, char** argv, bool outputCou
return mainfunc.execute(); return mainfunc.execute();
} }
int flowEbosOilWaterPolymerInjectivityMainStandalone(int argc, char** argv)
{
using TypeTag = Properties::TTag::EclFlowOilWaterPolymerInjectivityProblem;
auto mainObject = Opm::Main(argc, argv);
return mainObject.runStatic<TypeTag>();
}
} }

View File

@ -19,9 +19,12 @@
namespace Opm { namespace Opm {
// void flowEbosOilWaterPolymerInjectivitySetDeck(Deck& deck, EclipseState& eclState); //! \brief Main function used in flow binary.
int flowEbosOilWaterPolymerInjectivityMain(int argc, char** argv, bool outputCout, bool outputFiles); int flowEbosOilWaterPolymerInjectivityMain(int argc, char** argv, bool outputCout, bool outputFiles);
//! \brief Main function used in flow_oilwater_polymer_injectivity binary.
int flowEbosOilWaterPolymerInjectivityMainStandalone(int argc, char** argv);
} }
#endif // FLOW_EBOS_OILWATER_POLYMER_INJECTIVITY_HPP #endif // FLOW_EBOS_OILWATER_POLYMER_INJECTIVITY_HPP

View File

@ -21,7 +21,7 @@
#include <opm/material/common/ResetLocale.hpp> #include <opm/material/common/ResetLocale.hpp>
#include <opm/grid/CpGrid.hpp> #include <opm/grid/CpGrid.hpp>
#include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp> #include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp>
#include <opm/simulators/flow/FlowMainEbos.hpp> #include <opm/simulators/flow/Main.hpp>
#if HAVE_DUNE_FEM #if HAVE_DUNE_FEM
#include <dune/fem/misc/mpimanager.hh> #include <dune/fem/misc/mpimanager.hh>
@ -77,4 +77,11 @@ int flowEbosPolymerMain(int argc, char** argv, bool outputCout, bool outputFiles
return mainfunc.execute(); return mainfunc.execute();
} }
int flowEbosPolymerMainStandalone(int argc, char** argv)
{
using TypeTag = Properties::TTag::EclFlowPolymerProblem;
auto mainObject = Opm::Main(argc, argv);
return mainObject.runStatic<TypeTag>();
}
} }

View File

@ -30,8 +30,13 @@ void flowEbosPolymerSetDeck(double setupTime, std::shared_ptr<Deck> deck,
std::shared_ptr<EclipseState> eclState, std::shared_ptr<EclipseState> eclState,
std::shared_ptr<Schedule> schedule, std::shared_ptr<Schedule> schedule,
std::shared_ptr<SummaryConfig> summaryConfig); std::shared_ptr<SummaryConfig> summaryConfig);
//! \brief Main function used in flow binary.
int flowEbosPolymerMain(int argc, char** argv, bool outputCout, bool outputFiles); int flowEbosPolymerMain(int argc, char** argv, bool outputCout, bool outputFiles);
//! \brief Main function used in flow_polymer binary.
int flowEbosPolymerMainStandalone(int argc, char** argv);
} }
#endif // FLOW_EBOS_POLYMER_HPP #endif // FLOW_EBOS_POLYMER_HPP

View File

@ -21,7 +21,7 @@
#include <opm/material/common/ResetLocale.hpp> #include <opm/material/common/ResetLocale.hpp>
#include <opm/grid/CpGrid.hpp> #include <opm/grid/CpGrid.hpp>
#include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp> #include <opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp>
#include <opm/simulators/flow/FlowMainEbos.hpp> #include <opm/simulators/flow/Main.hpp>
#if HAVE_DUNE_FEM #if HAVE_DUNE_FEM
#include <dune/fem/misc/mpimanager.hh> #include <dune/fem/misc/mpimanager.hh>
@ -78,4 +78,11 @@ int flowEbosSolventMain(int argc, char** argv, bool outputCout, bool outputFiles
return mainfunc.execute(); return mainfunc.execute();
} }
int flowEbosSolventMainStandalone(int argc, char** argv)
{
using TypeTag = Properties::TTag::EclFlowSolventProblem;
auto mainObject = Opm::Main(argc, argv);
return mainObject.runStatic<TypeTag>();
}
} }

View File

@ -30,8 +30,13 @@ void flowEbosSolventSetDeck(double setupTime, std::shared_ptr<Deck> deck,
std::shared_ptr<EclipseState> eclState, std::shared_ptr<EclipseState> eclState,
std::shared_ptr<Schedule> schedule, std::shared_ptr<Schedule> schedule,
std::shared_ptr<SummaryConfig> summaryConfig); std::shared_ptr<SummaryConfig> summaryConfig);
//! \brief Main function used in flow binary.
int flowEbosSolventMain(int argc, char** argv, bool outoutCout, bool outputFiles); int flowEbosSolventMain(int argc, char** argv, bool outoutCout, bool outputFiles);
//! \brief Main function used in flow_solvent binary.
int flowEbosSolventMainStandalone(int argc, char** argv);
} }
#endif // FLOW_EBOS_SOLVENT_HPP #endif // FLOW_EBOS_SOLVENT_HPP

24
flow/flow_energy.cpp Normal file
View File

@ -0,0 +1,24 @@
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <flow/flow_ebos_energy.hpp>
int main(int argc, char** argv)
{
return Opm::flowEbosEnergyMainStandalone(argc, argv);
}

24
flow/flow_extbo.cpp Normal file
View File

@ -0,0 +1,24 @@
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <flow/flow_ebos_extbo.hpp>
int main(int argc, char** argv)
{
return Opm::flowEbosExtboMainStandalone(argc, argv);
}

24
flow/flow_foam.cpp Normal file
View File

@ -0,0 +1,24 @@
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <flow/flow_ebos_foam.hpp>
int main(int argc, char** argv)
{
return Opm::flowEbosFoamMainStandalone(argc, argv);
}

24
flow/flow_gasoil.cpp Normal file
View File

@ -0,0 +1,24 @@
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <flow/flow_ebos_gasoil.hpp>
int main(int argc, char** argv)
{
return Opm::flowEbosGasOilMainStandalone(argc, argv);
}

24
flow/flow_gaswater.cpp Normal file
View File

@ -0,0 +1,24 @@
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <flow/flow_ebos_gaswater.hpp>
int main(int argc, char** argv)
{
return Opm::flowEbosGasWaterMainStandalone(argc, argv);
}

24
flow/flow_micp.cpp Normal file
View File

@ -0,0 +1,24 @@
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <flow/flow_ebos_micp.hpp>
int main(int argc, char** argv)
{
return Opm::flowEbosMICPMainStandalone(argc, argv);
}

24
flow/flow_oilwater.cpp Normal file
View File

@ -0,0 +1,24 @@
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <flow/flow_ebos_oilwater.hpp>
int main(int argc, char** argv)
{
return Opm::flowEbosOilWaterMainStandalone(argc, argv);
}

View File

@ -0,0 +1,24 @@
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <flow/flow_ebos_oilwater_brine.hpp>
int main(int argc, char** argv)
{
return Opm::flowEbosOilWaterBrineMainStandalone(argc, argv);
}

View File

@ -0,0 +1,24 @@
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <flow/flow_ebos_oilwater_polymer.hpp>
int main(int argc, char** argv)
{
return Opm::flowEbosOilWaterPolymerMainStandalone(argc, argv);
}

View File

@ -0,0 +1,24 @@
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <flow/flow_ebos_oilwater_polymer_injectivity.hpp>
int main(int argc, char** argv)
{
return Opm::flowEbosOilWaterPolymerInjectivityMainStandalone(argc, argv);
}

24
flow/flow_polymer.cpp Normal file
View File

@ -0,0 +1,24 @@
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <flow/flow_ebos_polymer.hpp>
int main(int argc, char** argv)
{
return Opm::flowEbosPolymerMainStandalone(argc, argv);
}

24
flow/flow_solvent.cpp Normal file
View File

@ -0,0 +1,24 @@
/*
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <flow/flow_ebos_solvent.hpp>
int main(int argc, char** argv)
{
return Opm::flowEbosSolventMainStandalone(argc, argv);
}