2013-08-02 07:07:33 -05:00
###########################################################################
# #
# Note: The bulk of the build system is located in the cmake/ directory. #
# This file only contains the specializations for this particular #
# project. Most likely you are interested in editing one of these #
# files instead: #
# #
# dune.module Name and version number #
# CMakeLists_files.cmake Path of source files #
# cmake/Modules/${project}-prereqs.cmake Dependencies #
# #
###########################################################################
2013-05-15 03:40:00 -05:00
2017-09-15 04:17:40 -05:00
# Mandatory call to project
2019-12-03 07:10:21 -06:00
2017-12-19 05:44:24 -06:00
project ( opm-simulators C CXX )
2017-09-15 04:17:40 -05:00
2013-05-15 03:40:00 -05:00
cmake_minimum_required ( VERSION 2.8 )
2019-12-03 07:10:21 -06:00
2015-05-27 04:51:28 -05:00
option ( SIBLING_SEARCH "Search for other modules in sibling directories?" ON )
2015-10-19 08:21:08 -05:00
set ( USE_OPENMP_DEFAULT OFF ) # Use of OpenMP is considered experimental
2019-03-06 04:54:21 -06:00
option ( BUILD_FLOW "Build the production oriented flow simulator?" ON )
2020-02-07 07:36:22 -06:00
option ( BUILD_FLOW_BLACKOIL_ONLY "Build the production oriented flow simulator only supporting the blackoil model?" OFF )
2019-10-11 01:46:17 -05:00
option ( BUILD_FLOW_VARIANTS "Build the variants for flow by default?" OFF )
2019-03-07 05:45:15 -06:00
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 )
2019-03-11 10:50:47 -05:00
option ( BUILD_EBOS_DEBUG_EXTENSIONS "Build the ebos variants which are purely for debugging by default?" OFF )
2015-03-18 08:26:29 -05:00
2020-01-13 08:46:50 -06:00
option ( ENABLE_3DPROPS_TESTING "Build and use the new experimental 3D properties" OFF )
if ( ENABLE_3DPROPS_TESTING )
add_definitions ( -DENABLE_3DPROPS_TESTING )
endif ( )
2017-09-25 05:24:15 -05:00
if ( SIBLING_SEARCH AND NOT opm-common_DIR )
# guess the sibling dir
get_filename_component ( _leaf_dir_name ${ PROJECT_BINARY_DIR } NAME )
get_filename_component ( _parent_full_dir ${ PROJECT_BINARY_DIR } DIRECTORY )
get_filename_component ( _parent_dir_name ${ _parent_full_dir } NAME )
#Try if <module-name>/<build-dir> is used
get_filename_component ( _modules_dir ${ _parent_full_dir } DIRECTORY )
if ( IS_DIRECTORY ${ _modules_dir } /opm-common/ ${ _leaf_dir_name } )
set ( opm-common_DIR ${ _modules_dir } /opm-common/ ${ _leaf_dir_name } )
2017-09-15 04:34:22 -05:00
else ( )
2017-09-25 05:24:15 -05:00
string ( REPLACE ${ PROJECT_NAME } opm-common _opm_common_leaf ${ _leaf_dir_name } )
if ( NOT _leaf_dir_name STREQUAL _opm_common_leaf
A N D I S _ D I R E C T O R Y $ { _ p a r e n t _ f u l l _ d i r } / $ { _ o p m _ c o m m o n _ l e a f } )
# We are using build directories named <prefix><module-name><postfix>
set ( opm-common_DIR ${ _parent_full_dir } / ${ _opm_common_leaf } )
elseif ( IS_DIRECTORY ${ _parent_full_dir } /opm-common )
# All modules are in a common build dir
2018-02-05 04:38:07 -06:00
set ( opm-common_DIR "${_parent_full_dir}/opm-common" )
2017-09-15 04:34:22 -05:00
endif ( )
2017-09-25 05:24:15 -05:00
endif ( )
2017-09-26 09:16:41 -05:00
endif ( )
if ( opm-common_DIR AND NOT IS_DIRECTORY ${ opm-common_DIR } )
message ( WARNING "Value ${opm-common_DIR} passed to variable"
" o p m - c o m m o n _ D I R i s n o t a d i r e c t o r y " )
2017-09-25 05:24:15 -05:00
endif ( )
2015-03-18 08:26:29 -05:00
2017-09-25 05:24:15 -05:00
find_package ( opm-common REQUIRED )
2015-03-18 08:26:29 -05:00
2017-09-25 05:24:15 -05:00
include ( OpmInit )
2020-04-02 13:31:54 -05:00
OpmSetPolicies ( )
2015-10-21 10:35:44 -05:00
2013-08-02 07:07:33 -05:00
# not the same location as most of the other projects? this hook overrides
macro ( dir_hook )
endmacro ( dir_hook )
2013-05-15 03:40:00 -05:00
2013-08-02 07:07:33 -05:00
# project information is in dune.module. Read this file and set variables.
# we cannot generate dune.module since it is read by dunecontrol before
# the build starts, so it makes sense to keep the data there then.
include ( OpmInit )
2013-05-15 03:40:00 -05:00
2018-03-12 09:37:21 -05:00
# Look for the opm-tests repository; if found the variable
# HAVE_OPM_TESTS will be set to true.
include ( Findopm-tests )
2015-10-21 10:35:44 -05:00
2013-08-02 07:07:33 -05:00
# list of prerequisites for this particular project; this is in a
# separate file (in cmake/Modules sub-directory) because it is shared
# with the find module
2015-05-15 08:43:03 -05:00
include ( "${project}-prereqs" )
2013-05-15 03:40:00 -05:00
2020-04-02 13:30:20 -05:00
# Make sure we are using the same compiler underneath
# NVCC as for the rest. In the case that NVCC does not support
# that compiler it will error out. Unfortunately this will only
2020-04-29 06:28:23 -05:00
# work for CMake >= 3.8. We found no way to make FindCUDA.cmake error
2020-04-02 13:30:20 -05:00
# out. It seems to ignore CMAKE_NVCC_FLAGS and CMAKE. Additionally
# our way of specifying cuda source files never worked for CMake
# version < 3.8. Hence we deactivate cuda for these versions.
# We use "CMAKE_VERSION VERSION_GREATER 3.7.9" instead of
# CMAKE_VERSION VERSION_GREATER_EQUAL 3.8, because of backwards
# compatibility to cmake 3.6 and lower.
if ( NOT CMAKE_DISABLE_FIND_PACKAGE_CUDA AND
C M A K E _ V E R S I O N V E R S I O N _ G R E A T E R 3 . 7 . 9 )
2020-04-27 15:01:46 -05:00
if ( CMAKE_BUILD_TYPE )
set ( _flags_suffix "_${CMAKE_BUILD_TYPE}" )
endif ( )
2020-04-29 06:27:04 -05:00
if ( NOT DEFINED ENV{CUDAHOSTCXX} AND NOT DEFINED CMAKE_CUDA_HOST_COMPILER AND
2020-04-27 15:01:46 -05:00
( N O T C M A K E _ C U D A _ F L A G S $ { _ f l a g s _ s u f f i x } O R N O T C M A K E _ C U D A _ F L A G S $ { _ f l a g s _ s u f f i x } M A T C H E S " . * - c c b i n . * " ) )
2020-04-29 06:27:04 -05:00
message ( STATUS "Setting CUDA host compiler CMAKE_CUDA_HOST_COMPILER to ${CMAKE_CXX_COMPILER} to "
2020-04-27 07:54:08 -05:00
" p r e v e n t i n c o m p a t i b i l i t i e s . N o t e t h a t t h i s m i g h t r e p o r t t h a t t h e r e "
" i s n o t C U D A c o m p i l e r i f y o u r s y s t e m ' s C U D A c o m p i l e r d o e s n o t s u p p o r t "
" $ { C M A K E _ C X X _ C O M P I L E R } . " )
2020-04-29 06:28:23 -05:00
# check_language does not seem to care about ${CMAKE_CUDA_FLAGS} or $(CUDA_NVCC_FLAGS}.
# Hence we set CMAKE_CUDA_HOST_COMPILER to our C++ compiler.
# In check_language(CUDA) we will get an error if we in addition put
# "-ccbin ${CMAKE_CXX_COMPILER}" into CMAKE_CUDA_FLAGS. It results
2020-04-27 14:52:41 -05:00
# in "${NVCC} -ccbin=${CMAKE_CXX_COMPILER} -ccbin ${CMAKE_CXX_COMPILER}"
2020-04-29 06:28:23 -05:00
# which causes nvcc to abort
2020-04-29 06:27:04 -05:00
set ( CMAKE_CUDA_HOST_COMPILER ${ CMAKE_CXX_COMPILER } )
2020-04-29 06:58:48 -05:00
set ( ENV{CUDAHOSTCXX} ${ CMAKE_CUDA_HOST_COMPILER } ) # The only thing honored by check_language(CUDA)!
2020-04-02 13:30:20 -05:00
endif ( )
include ( CheckLanguage )
check_language ( CUDA )
if ( CMAKE_CUDA_COMPILER )
2020-04-29 06:28:23 -05:00
# OPTIONAL is ignored. Hence the magic above to check whether enabling CUDA works
2020-04-02 13:30:20 -05:00
enable_language ( CUDA OPTIONAL )
2020-04-27 07:54:08 -05:00
# While the documentation says that it is deprecated, FindCUDA seems the
# only easy way to determine the cublas and cusparse libraries.
# Hence we call it unconditionally
# The WellContributions kernel uses __shfl_down_sync, which was introduced in CUDA 9.0
find_package ( CUDA )
2020-04-02 13:30:20 -05:00
endif ( )
2020-04-15 07:21:36 -05:00
if ( CUDA_FOUND AND CUDA_VERSION VERSION_LESS "9.0" )
2020-04-02 13:30:20 -05:00
set ( CUDA_FOUND OFF )
message ( WARNING "Deactivating CUDA as we require version 9.0 or newer."
" F o u n d o n l y C U D A v e r s i o n $ { C U D A _ V E R S I O N } . " )
endif ( )
endif ( )
if ( CUDA_FOUND )
set ( HAVE_CUDA 1 )
include_directories ( ${ CUDA_INCLUDE_DIRS } )
endif ( )
2020-06-22 11:26:49 -05:00
find_package ( OpenCL )
if ( OpenCL_FOUND )
2020-06-25 11:44:49 -05:00
# the current OpenCL implementation relies on cl.hpp, not cl2.hpp
# make sure it is available, otherwise disable OpenCL
find_file ( CL_HPP CL/cl.hpp HINTS ${ OpenCL_INCLUDE_DIRS } )
if ( CL_HPP )
set ( HAVE_OPENCL 1 )
include_directories ( ${ OpenCL_INCLUDE_DIRS } )
else ( )
message ( WARNING " OpenCL was found, but this version of opm-simulators relies on CL/cl.hpp, which implements OpenCL 1.0, 1.1 and 1.2.\n Deactivating OpenCL" )
set ( OpenCL_FOUND OFF )
endif ( )
2020-06-22 11:26:49 -05:00
endif ( )
2013-08-02 07:07:33 -05:00
# read the list of components from this file (in the project directory);
# it should set various lists with the names of the files to include
include ( CMakeLists_files.cmake )
2013-05-15 03:40:00 -05:00
2013-08-02 07:07:33 -05:00
macro ( config_hook )
2019-06-13 07:59:31 -05:00
opm_need_version_of ( "dune-common" )
opm_need_version_of ( "dune-istl" )
2019-10-22 05:49:06 -05:00
if ( dune-fem_FOUND )
opm_need_version_of ( "dune-fem" )
endif ( )
2019-08-23 01:34:32 -05:00
opm_need_version_of ( "opm-models" )
2013-08-02 07:07:33 -05:00
endmacro ( config_hook )
2013-05-15 03:40:00 -05:00
2013-08-02 07:07:33 -05:00
macro ( prereqs_hook )
endmacro ( prereqs_hook )
2013-05-15 03:40:00 -05:00
2013-08-02 07:07:33 -05:00
macro ( sources_hook )
endmacro ( sources_hook )
2013-05-15 03:40:00 -05:00
2013-08-02 07:07:33 -05:00
macro ( fortran_hook )
endmacro ( fortran_hook )
2013-05-15 03:40:00 -05:00
2014-06-16 07:40:52 -05:00
macro ( files_hook )
endmacro ( files_hook )
2013-08-02 07:07:33 -05:00
macro ( tests_hook )
endmacro ( tests_hook )
2013-05-15 03:40:00 -05:00
2013-08-02 07:07:33 -05:00
# all setup common to the OPM library modules is done here
include ( OpmLibMain )
2013-05-15 03:40:00 -05:00
2018-03-12 09:37:21 -05:00
if ( HAVE_OPM_TESTS )
2016-11-21 11:02:21 -06:00
include ( ${ CMAKE_CURRENT_SOURCE_DIR } /compareECLFiles.cmake )
2017-03-03 08:08:12 -06:00
endif ( )
2018-09-19 04:45:40 -05:00
2018-11-13 03:28:05 -06:00
opm_set_test_driver ( ${ CMAKE_CURRENT_SOURCE_DIR } /tests/run-parallel-unitTest.sh "" )
opm_add_test ( test_gatherconvergencereport
D E P E N D S " o p m s i m u l a t o r s "
L I B R A R I E S o p m s i m u l a t o r s $ { B o o s t _ U N I T _ T E S T _ F R A M E W O R K _ L I B R A R Y }
S O U R C E S
t e s t s / t e s t _ g a t h e r c o n v e r g e n c e r e p o r t . c p p
C O N D I T I O N
2020-02-19 05:28:55 -06:00
M P I _ F O U N D A N D B o o s t _ U N I T _ T E S T _ F R A M E W O R K _ F O U N D
2018-11-13 03:28:05 -06:00
D R I V E R _ A R G S
2020-04-21 01:50:51 -05:00
5 $ { P R O J E C T _ B I N A R Y _ D I R }
2018-11-13 03:28:05 -06:00
)
2019-01-11 06:53:18 -06:00
opm_add_test ( test_gatherdeferredlogger
D E P E N D S " o p m s i m u l a t o r s "
L I B R A R I E S o p m s i m u l a t o r s $ { B o o s t _ U N I T _ T E S T _ F R A M E W O R K _ L I B R A R Y }
S O U R C E S
t e s t s / t e s t _ g a t h e r d e f e r r e d l o g g e r . c p p
C O N D I T I O N
2020-02-19 05:28:55 -06:00
M P I _ F O U N D A N D B o o s t _ U N I T _ T E S T _ F R A M E W O R K _ F O U N D
2019-01-11 06:53:18 -06:00
D R I V E R _ A R G S
2020-04-21 01:50:51 -05:00
5 $ { P R O J E C T _ B I N A R Y _ D I R }
2019-01-11 06:53:18 -06:00
)
2019-03-06 04:54:21 -06:00
include ( OpmBashCompletion )
2019-01-11 06:53:18 -06:00
2019-03-07 05:45:15 -06:00
if ( NOT BUILD_FLOW )
set ( FLOW_DEFAULT_ENABLE_IF "FALSE" )
else ( )
set ( FLOW_DEFAULT_ENABLE_IF "TRUE" )
endif ( )
2020-06-08 03:06:39 -05:00
add_library ( moduleVersion OBJECT opm/simulators/utils/moduleVersion.cpp )
2020-06-09 08:08:30 -05:00
# Strictly we only depend on the update-version target,
# but this is not exposed in a super-build.
add_dependencies ( moduleVersion opmsimulators )
2019-02-27 15:34:10 -06:00
# the production oriented general-purpose ECL simulator
2018-09-20 03:58:27 -05:00
opm_add_test ( flow
O N L Y _ C O M P I L E
A L W A Y S _ E N A B L E
2019-03-07 05:45:15 -06:00
D E F A U L T _ E N A B L E _ I F $ { F L O W _ D E F A U L T _ E N A B L E _ I F }
2020-06-08 03:06:39 -05:00
D E P E N D S o p m s i m u l a t o r s
L I B R A R I E S o p m s i m u l a t o r s
2018-09-20 03:58:27 -05:00
S O U R C E S
2019-03-07 05:45:15 -06:00
f l o w / f l o w . c p p
f l o w / f l o w _ e b o s _ b l a c k o i l . c p p
f l o w / f l o w _ e b o s _ g a s o i l . c p p
f l o w / f l o w _ e b o s _ o i l w a t e r . c p p
f l o w / f l o w _ e b o s _ p o l y m e r . c p p
2019-04-26 03:38:37 -05:00
f l o w / f l o w _ e b o s _ f o a m . c p p
2019-12-03 10:48:17 -06:00
f l o w / f l o w _ e b o s _ b r i n e . c p p
2019-03-07 05:45:15 -06:00
f l o w / f l o w _ e b o s _ s o l v e n t . c p p
f l o w / f l o w _ e b o s _ e n e r g y . c p p
f l o w / f l o w _ e b o s _ o i l w a t e r _ p o l y m e r . c p p
2020-06-08 03:06:39 -05:00
f l o w / f l o w _ e b o s _ o i l w a t e r _ p o l y m e r _ i n j e c t i v i t y . c p p
$ < T A R G E T _ O B J E C T S : m o d u l e V e r s i o n > )
2019-03-07 05:45:15 -06:00
2020-02-07 07:36:22 -06:00
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
O N L Y _ C O M P I L E
A L W A Y S _ E N A B L E
D E F A U L T _ E N A B L E _ I F $ { F L O W _ B L A C K O I L _ O N L Y _ D E F A U L T _ E N A B L E _ I F }
2020-06-08 03:06:39 -05:00
D E P E N D S o p m s i m u l a t o r s
L I B R A R I E S o p m s i m u l a t o r s
2020-02-07 07:36:22 -06:00
S O U R C E S
f l o w / f l o w . c p p
2020-06-08 03:06:39 -05:00
f l o w / f l o w _ e b o s _ b l a c k o i l . c p p
$ < T A R G E T _ O B J E C T S : m o d u l e V e r s i o n > )
2020-02-07 07:36:22 -06:00
target_compile_definitions ( flow_blackoil PRIVATE "FLOW_BLACKOIL_ONLY" )
2019-10-11 01:46:17 -05:00
if ( NOT BUILD_FLOW_VARIANTS )
set ( FLOW_VARIANTS_DEFAULT_ENABLE_IF "FALSE" )
else ( )
set ( FLOW_VARIANTS_DEFAULT_ENABLE_IF "TRUE" )
endif ( )
# Variant versions of Flow.
2019-03-21 16:15:22 -05:00
opm_add_test ( flow_blackoil_dunecpr
O N L Y _ C O M P I L E
2019-10-11 01:46:17 -05:00
D E F A U L T _ E N A B L E _ I F $ { F L O W _ V A R I A N T S _ D E F A U L T _ E N A B L E _ I F }
2020-06-08 03:06:39 -05:00
S O U R C E S
f l o w / f l o w _ b l a c k o i l _ d u n e c p r . c p p
$ < T A R G E T _ O B J E C T S : m o d u l e V e r s i o n >
2019-03-21 16:15:22 -05:00
E X E _ N A M E f l o w _ b l a c k o i l _ d u n e c p r
2020-06-08 03:06:39 -05:00
D E P E N D S o p m s i m u l a t o r s
L I B R A R I E S o p m s i m u l a t o r s )
2019-03-21 16:15:22 -05:00
2019-10-10 09:14:44 -05:00
opm_add_test ( flow_onephase
O N L Y _ C O M P I L E
2019-10-11 01:46:17 -05:00
D E F A U L T _ E N A B L E _ I F $ { F L O W _ V A R I A N T S _ D E F A U L T _ E N A B L E _ I F }
2020-06-08 03:06:39 -05:00
S O U R C E S
f l o w / f l o w _ o n e p h a s e . c p p
$ < T A R G E T _ O B J E C T S : m o d u l e V e r s i o n >
2019-10-10 09:14:44 -05:00
E X E _ N A M E f l o w _ o n e p h a s e
2020-06-08 03:06:39 -05:00
D E P E N D S o p m s i m u l a t o r s
L I B R A R I E S o p m s i m u l a t o r s )
2019-10-10 09:14:44 -05:00
opm_add_test ( flow_onephase_energy
O N L Y _ C O M P I L E
2019-10-11 01:46:17 -05:00
D E F A U L T _ E N A B L E _ I F $ { F L O W _ V A R I A N T S _ D E F A U L T _ E N A B L E _ I F }
2020-06-08 03:06:39 -05:00
S O U R C E S
f l o w / f l o w _ o n e p h a s e _ e n e r g y . c p p
$ < T A R G E T _ O B J E C T S : m o d u l e V e r s i o n >
2019-10-10 09:14:44 -05:00
E X E _ N A M E f l o w _ o n e p h a s e _ e n e r g y
2020-06-08 03:06:39 -05:00
D E P E N D S o p m s i m u l a t o r s
L I B R A R I E S o p m s i m u l a t o r s )
2019-10-10 09:14:44 -05:00
2019-03-07 05:45:15 -06:00
if ( BUILD_FLOW )
install ( TARGETS flow DESTINATION bin )
opm_add_bash_completion ( flow )
add_test ( NAME flow__version
C O M M A N D f l o w - - v e r s i o n )
set_tests_properties ( flow__version PROPERTIES
P A S S _ R E G U L A R _ E X P R E S S I O N " $ { $ { p r o j e c t } _ L A B E L } " )
2019-03-06 04:54:21 -06:00
endif ( )
2018-12-09 14:15:59 -06:00
2019-03-07 05:45:15 -06:00
if ( NOT BUILD_EBOS )
set ( EBOS_DEFAULT_ENABLE_IF "FALSE" )
else ( )
set ( EBOS_DEFAULT_ENABLE_IF "TRUE" )
endif ( )
2019-06-13 07:59:31 -05:00
2019-02-27 15:34:10 -06:00
# the research oriented general-purpose ECL simulator ("ebos" == &ecl
# &black-&oil &simulator)
2019-08-09 04:04:45 -05:00
set ( MEBOS_TARGETS "" )
2019-12-03 10:48:17 -06:00
foreach ( OBJ blackoil solvent polymer foam brine gasoil oilwater oilwaterpolymer thermal )
2019-06-13 07:59:31 -05:00
add_library ( ebos_lib ${ OBJ } OBJECT EXCLUDE_FROM_ALL ebos/ebos_ ${ OBJ } .cc )
2019-08-09 04:04:45 -05:00
list ( APPEND MEBOS_TARGETS $< TARGET_OBJECTS:ebos_lib${OBJ} > )
2019-06-13 07:59:31 -05:00
endforeach ( )
2019-02-27 15:34:10 -06:00
opm_add_test ( ebos
2019-03-04 08:38:07 -06:00
O N L Y _ C O M P I L E
2019-03-07 05:45:15 -06:00
D E F A U L T _ E N A B L E _ I F $ { E B O S _ D E F A U L T _ E N A B L E _ I F }
2019-03-04 08:38:07 -06:00
A L W A Y S _ E N A B L E
2019-06-13 07:59:31 -05:00
E X E _ N A M E e b o s
L I B R A R I E S o p m s i m u l a t o r s
S O U R C E S e b o s / e b o s _ m a i n . c c $ < T A R G E T _ O B J E C T S : e b o s _ l i b b l a c k o i l > )
2018-12-09 14:15:59 -06:00
2019-03-07 05:45:15 -06:00
if ( BUILD_EBOS )
install ( TARGETS ebos DESTINATION bin )
opm_add_bash_completion ( ebos )
endif ( )
if ( NOT BUILD_EBOS_EXTENSIONS )
set ( EBOS_EXTENSIONS_DEFAULT_ENABLE_IF "FALSE" )
else ( )
set ( EBOS_EXTENSIONS_DEFAULT_ENABLE_IF "TRUE" )
endif ( )
2019-12-03 10:48:17 -06:00
foreach ( OBJ solvent polymer foam brine gasoil oilwater oilwaterpolymer thermal )
2019-06-13 07:59:31 -05:00
opm_add_test ( ebos_ ${ OBJ }
O N L Y _ C O M P I L E
D E F A U L T _ E N A B L E _ I F $ { E B O S _ E X T E N S I O N S _ D E F A U L T _ E N A B L E _ I F }
S O U R C E S e b o s / e b o s _ $ { O B J } _ m a i n . c c $ < T A R G E T _ O B J E C T S : e b o s _ l i b $ { O B J } >
E X E _ N A M E e b o s _ $ { O B J }
L I B R A R I E S o p m s i m u l a t o r s )
endforeach ( )
add `mebos`, a multiplexed ebos variant
`mebos` works similarly as `flow`, but in contrast to `flow`, `mebos`
only creates the deck in the common code path whilst the
'EclipseState' and the other higher-level parser objects are always
created internally by the vanguard. this approach avoids code
duplication and the worst effects of parser API creep.
to avoid having to compile non-trivial compile units multiple times,
the actual code of the variants is moved into `ebos_$VARIANT.{hh,cc}`
files and the respective compile units are each put into a small
static library whilst the main function of said libraries are invoked
by either the multiplexed or the respective specialized simulator's
`main()`. This is also somewhat similar of how `flow` works, with the
difference that `mebos` uses the blackoil variant to determine the
parameters it needs to know for parsing the deck instead of
introducing a "fake" type tag for this. The rationale is to reduce
compile time compared to the "fake type tag" approach and -- to a
lesser extend -- avoid unnecessary copy-and-pasting of code. In
particular, this means that for the vast majority of cases, only one
place needs changed in the code for all `ebos` variants if, for
example, the parser API requires further objects in the future.
2019-06-11 03:22:11 -05:00
opm_add_test ( mebos
O N L Y _ C O M P I L E
D E F A U L T _ E N A B L E _ I F $ { E B O S _ E X T E N S I O N S _ D E F A U L T _ E N A B L E _ I F }
2019-06-13 07:59:31 -05:00
S O U R C E S e b o s / m e b o s _ m a i n . c c
2019-08-09 04:04:45 -05:00
$ { M E B O S _ T A R G E T S }
2019-06-13 07:59:31 -05:00
E X E _ N A M E m e b o s
L I B R A R I E S o p m s i m u l a t o r s )
2019-03-05 04:41:02 -06:00
2019-03-11 10:50:47 -05:00
if ( NOT BUILD_EBOS_DEBUG_EXTENSIONS )
set ( EBOS_DEBUG_EXTENSIONS_DEFAULT_ENABLE_IF "FALSE" )
else ( )
set ( EBOS_DEBUG_EXTENSIONS_DEFAULT_ENABLE_IF "TRUE" )
endif ( )
opm_add_test ( ebos_altidx
O N L Y _ C O M P I L E
D E F A U L T _ E N A B L E _ I F $ { E B O S _ D E B U G _ E X T E N S I O N S _ D E F A U L T _ E N A B L E _ I F }
S O U R C E S e b o s / e b o s _ a l t i d x . c c
E X E _ N A M E e b o s _ a l t i d x
2019-06-13 07:59:31 -05:00
D E P E N D S o p m s i m u l a t o r s
L I B R A R I E S o p m s i m u l a t o r s )
2019-03-11 10:50:47 -05:00
2019-06-03 04:11:41 -05:00
opm_add_test ( ebos_plain
O N L Y _ C O M P I L E
D E F A U L T _ E N A B L E _ I F $ { E B O S _ D E B U G _ E X T E N S I O N S _ D E F A U L T _ E N A B L E _ I F }
S O U R C E S e b o s / e b o s _ p l a i n . c c
E X E _ N A M E e b o s _ p l a i n
2019-06-13 07:59:31 -05:00
D E P E N D S o p m s i m u l a t o r s
L I B R A R I E S o p m s i m u l a t o r s )
2019-03-07 05:45:15 -06:00
if ( BUILD_EBOS_EXTENSIONS )
2020-01-09 03:18:46 -06:00
foreach ( TGT ebos_solvent ebos_polymer ebos_foam ebos_brine ebos_gasoil ebos_oilwater ebos_oilwaterpolymer ebos_thermal mebos )
2019-06-13 07:59:31 -05:00
install ( TARGETS ${ TGT } DESTINATION bin )
opm_add_bash_completion ( ${ TGT } )
endforeach ( )
2019-03-06 04:54:21 -06:00
endif ( )
2019-10-31 10:41:13 -05:00
if ( OPM_ENABLE_PYTHON )
add_subdirectory ( python )
endif ( )
2020-01-09 02:32:24 -06:00
2020-04-03 03:15:49 -05:00
add_custom_target ( extra_test ${ CMAKE_CTEST_COMMAND } -C ExtraTests )
2020-01-09 02:32:24 -06:00
# must link libraries after target 'flow' has been defined
if ( CUDA_FOUND )
2020-02-25 09:54:53 -06:00
target_link_libraries ( opmsimulators PUBLIC ${ CUDA_cusparse_LIBRARY } )
target_link_libraries ( opmsimulators PUBLIC ${ CUDA_cublas_LIBRARY } )
2020-01-09 02:32:24 -06:00
endif ( )
2020-06-22 11:26:49 -05:00
if ( OpenCL_FOUND )
target_link_libraries ( opmsimulators ${ OpenCL_LIBRARIES } )
endif ( )