Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Simplify region statistics output in HDF5 #3314

Open
wants to merge 132 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 105 commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
c71fb78
initial C++14 SFINAE implementation, to detect last accessed memory s…
wrtobin Apr 3, 2023
6d7b8b0
Merge branch 'develop' into feature/wrtobin/memspace-aware-packing
wrtobin Apr 6, 2023
7bd8094
modifying packing traits for naming clarity, encapsulating impl funct…
wrtobin Apr 6, 2023
29371d8
typo
wrtobin Apr 6, 2023
75c0d43
static_asserts to prevent internal misuse, and working on improving S…
wrtobin Apr 13, 2023
a4893ec
merge
wrtobin Apr 13, 2023
3f9f96e
resolve
wrtobin Apr 13, 2023
376bfb6
Merge branch 'develop' into feature/wrtobin/memspace-aware-packing
May 4, 2023
0b43ed5
after merge
May 4, 2023
4996988
uncrustify stage
May 5, 2023
2802ed3
an X hanging around
May 9, 2023
f9abced
modify traits
May 9, 2023
62a77ae
Merge branch 'develop' into feature/wrtobin/memspace-aware-packing
May 10, 2023
d561f91
update doc
May 10, 2023
39b02d5
Merge branch 'develop' into feature/wrtobin/memspace-aware-packing
wrtobin May 15, 2023
dd71040
Merge branch 'develop' into feature/wrtobin/memspace-aware-packing
wrtobin Jun 14, 2023
0c2de71
fix for isPackable device-packing check on raw type instead of declty…
wrtobin Jun 20, 2023
99365ab
checkTouch
wrtobin Jun 20, 2023
a744f03
wip
wrtobin Jun 22, 2023
6b5341b
Merge branch 'develop' into feature/wrtobin/memspace-aware-packing
Jul 12, 2023
39cba69
up hdf5 interface
Jul 12, 2023
3251a8f
fix unit test + remove ambigous constructor
Jul 12, 2023
33c370c
fix host pack arrayview
wrtobin Jul 19, 2023
e5dea8e
merge dev
wrtobin Jul 19, 2023
4e39f20
merge dev
wrtobin Jul 28, 2023
4931875
Merge branch 'develop' into feature/wrtobin/memspace-aware-packing
wrtobin Oct 16, 2023
adfb535
resolving merge-in
wrtobin Oct 16, 2023
0b75ec0
lvarray
wrtobin Oct 16, 2023
ca854fd
merging in develop
wrtobin Oct 17, 2023
99f66f6
resolving merge
wrtobin Nov 2, 2023
a8e17e0
unit test merge resolution
wrtobin Nov 2, 2023
fe0e484
Merge branch 'develop' into feature/wrtobin/memspace-aware-packing
Nov 15, 2023
7d4e6ba
fix
Nov 15, 2023
7689ad8
fix
Nov 15, 2023
af8708a
merge-in
wrtobin Dec 5, 2023
e511914
Merge branch 'develop' into feature/wrtobin/memspace-aware-packing
wrtobin Dec 5, 2023
80cf387
merge wip
wrtobin Jan 3, 2024
abae456
Merge branch 'develop' into feature/wrtobin/memspace-aware-packing
wrtobin Jan 3, 2024
3b97e49
merge-in from dev
wrtobin Apr 2, 2024
37fe3d1
mostly just cleanup
wrtobin Apr 2, 2024
2834c2b
cleanup and debugging
wrtobin Apr 2, 2024
4311984
merge-in from dev
wrtobin Apr 2, 2024
c61cc8f
formatting
wrtobin Apr 2, 2024
060cd1d
wip mpm fixes
wrtobin Apr 4, 2024
f81b0fc
Merge remote-tracking branch 'origin/develop' into feature/wrtobin/me…
arng40 Jun 27, 2024
bf7312d
merge fix
arng40 Jun 27, 2024
88935b9
generated files
arng40 Jun 27, 2024
f7a7210
Merge remote-tracking branch 'origin/develop' into feature/dudes/outp…
arng40 Aug 22, 2024
7e2fd6e
Region statistics transform to class
arng40 Aug 27, 2024
87914ce
exemple deck with new mecanism
arng40 Aug 27, 2024
6efd12b
class for component generation ( pack/timeHistoOuput)
arng40 Aug 27, 2024
9a560c0
code update
arng40 Aug 27, 2024
46a4d03
rst/test
arng40 Aug 27, 2024
786e359
embedded region for singlePhase
arng40 Aug 29, 2024
536a133
doc and cleanup
arng40 Aug 29, 2024
13a6c76
uncrustify
arng40 Aug 29, 2024
91f3440
constness
arng40 Aug 29, 2024
0c494b6
xsd
arng40 Aug 29, 2024
9410d7b
xsd....
arng40 Aug 29, 2024
bae55e9
Merge remote-tracking branch 'origin/develop' into feature/dudes/outp…
arng40 Aug 29, 2024
1956b2e
some simplifications & doc
arng40 Aug 30, 2024
1fe470f
remove unacessary lib
arng40 Aug 30, 2024
32fae3e
lv
arng40 Sep 25, 2024
e05ecfe
Merge remote-tracking branch 'origin/develop' into feature/dudes/outp…
arng40 Sep 25, 2024
9af6cd5
fix merge
arng40 Sep 25, 2024
856b118
singlephase test fail test correction
arng40 Sep 27, 2024
3e31824
fix signlephase test
arng40 Sep 27, 2024
243b35a
[draft] testController
arng40 Sep 27, 2024
f950edb
some refactor
arng40 Sep 27, 2024
8a4fd4c
attempt checkMultiPhaseFluxStatisticsMol test
arng40 Sep 27, 2024
dce6b5a
testFlowStatistics fixed
arng40 Sep 30, 2024
f863f4e
rename StatOutputController name
arng40 Sep 30, 2024
ff7df59
doxygen hpp correction
arng40 Sep 30, 2024
55faa37
doxygen
arng40 Sep 30, 2024
6cabaab
typo and unit test fix
wrtobin Sep 30, 2024
c621cf7
missing doxygen
arng40 Oct 1, 2024
c0c726c
Merge branch 'feature/dudes/output-regions' of https://github.com/GEO…
arng40 Oct 1, 2024
ba4a7fe
const + small modif
arng40 Oct 1, 2024
891fad6
uncrustify
arng40 Oct 1, 2024
3fe7e30
seems like a gcc-9 bug, trying a quick-fix
wrtobin Oct 1, 2024
961a6ef
lvarray update
wrtobin Oct 1, 2024
731a4cd
momentarily suppress possibly failing tests as a sanity check
wrtobin Oct 1, 2024
8645916
momentarily suppress possibly failing tests as a sanity check
wrtobin Oct 1, 2024
6965cd3
momentarily suppress possibly failing tests as a sanity check
wrtobin Oct 1, 2024
dd32dd4
momentarily suppress possibly failing tests as a sanity check
wrtobin Oct 1, 2024
e31ea01
lvarray, turn on one failing test
wrtobin Oct 1, 2024
cab13c0
maybe?
wrtobin Oct 1, 2024
4c00485
probably just a compiler bug
wrtobin Oct 1, 2024
33af708
what if we just turn those tests off on gcc-9.4.0 due to the double-f…
wrtobin Oct 1, 2024
ee7711d
lvarray
wrtobin Oct 1, 2024
5140549
turn tests back on
wrtobin Oct 1, 2024
866ed2d
Merge remote-tracking branch 'origin/develop' into feature/dudes/outp…
arng40 Oct 2, 2024
3ed16c5
attempting to fix doxygen issue
MelReyCG Oct 4, 2024
9cad9ec
[INCOMPLETE] setup unit test
arng40 Oct 21, 2024
4de2a91
test hdf generation
arng40 Oct 21, 2024
620af2d
Merge branch 'feature/dudes/output-regions' of https://github.com/GEO…
arng40 Oct 21, 2024
c8ef4f0
add file creation verification + timeHistory path verif
arng40 Oct 22, 2024
fcdb564
revert thermalLeakyWell
arng40 Oct 22, 2024
ae4f48a
Merge remote-tracking branch 'origin/develop' into feature/dudes/outp…
arng40 Oct 22, 2024
04fbba3
fix merge
arng40 Oct 22, 2024
f243ef5
add path in controller
arng40 Oct 31, 2024
ade7114
simpl on test
arng40 Nov 5, 2024
01dbd47
remove unneccesary "/" in test
arng40 Nov 5, 2024
b220585
revert xml
arng40 Nov 6, 2024
bedf53d
simplification, regionStats in cpp, revised test
arng40 Nov 7, 2024
f084c02
region stats class -> struct
arng40 Nov 8, 2024
f0c9998
remove statsVKS
arng40 Nov 8, 2024
b70666d
add context for stat output controller error
arng40 Nov 13, 2024
f7f0cac
Merge remote-tracking branch 'origin/develop' into feature/dudes/outp…
arng40 Nov 13, 2024
e4c89d2
wrapperHelper : can_memcpy -> is_device_packable_v
arng40 Nov 14, 2024
01f6fbf
remove unecessary assert + packCollection renaming
arng40 Nov 19, 2024
f6e7e5c
renaming + adding viewkeystruct
arng40 Nov 19, 2024
a1f5821
move testStatController to fluidFlowTest
arng40 Nov 19, 2024
ad8f7eb
revert setInputFlag
arng40 Nov 20, 2024
7f8a9e3
revised review (:
arng40 Nov 20, 2024
4e2e548
enabling trait that never could get verified
MelReyCG Dec 3, 2024
9302eae
missing logging capabilities
MelReyCG Dec 3, 2024
232ea0d
Merge branch 'feature/dudes/output-regions' of https://github.com/GEO…
MelReyCG Dec 3, 2024
1b9729c
Merge remote-tracking branch 'origin/develop' into feature/dudes/outp…
MelReyCG Dec 3, 2024
c4f29d0
fixing diverse merge issues
MelReyCG Dec 4, 2024
c632fb4
Merge remote-tracking branch 'origin/develop' into feature/dudes/outp…
MelReyCG Dec 4, 2024
00aa309
fixing merge issue
MelReyCG Dec 4, 2024
df36891
removed dead code
MelReyCG Dec 4, 2024
c99a7bf
Merge remote-tracking branch 'origin/develop' into feature/dudes/outp…
MelReyCG Dec 5, 2024
962ddc1
revert setInputFlag
arng40 Dec 10, 2024
a4b18eb
Merge branch 'feature/dudes/output-regions' of https://github.com/GEO…
arng40 Dec 10, 2024
022cbd1
viewkeyStruct move to fieldBase and variable renamed
arng40 Dec 10, 2024
8072e6f
Merge remote-tracking branch 'origin/develop' into feature/dudes/outp…
arng40 Dec 10, 2024
5d8c99c
change compoennt mass name
arng40 Jan 6, 2025
d6c7299
update submodule
arng40 Jan 13, 2025
c705a60
Merge remote-tracking branch 'origin/develop' into feature/dudes/outp…
arng40 Jan 13, 2025
1246065
update submodule
arng40 Jan 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions host-configs/LLNL/lassen-gcc-8-cuda-11.cmake
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
include(${CMAKE_CURRENT_LIST_DIR}/../../src/coreComponents/LvArray/host-configs/LLNL/lassen-gcc-8-cuda-11.cmake)

# C++
# This may be required to compile in DEBUG, depending on the total library/binary size
# set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -mcmodel=large" CACHE STRING "" FORCE )

# The "-march=native -mtune=native" which LvArray adds breaks the PVT package.
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_CUDA_FLAGS_RELEASE "-O3 -DNDEBUG -Xcompiler -DNDEBUG -Xcompiler -O3" CACHE STRING "" FORCE)
Expand All @@ -15,3 +18,5 @@ set(MPI_HOME /usr/tce/packages/spectrum-mpi/spectrum-mpi-rolling-release-gcc-8.3
set(MPI_Fortran_COMPILER ${MPI_HOME}/bin/mpifort CACHE PATH "")

include(${CMAKE_CURRENT_LIST_DIR}/lassen-base.cmake)


Original file line number Diff line number Diff line change
Expand Up @@ -363,4 +363,4 @@
computeRegionStatistics="1"/>
</Tasks>

</Problem>
</Problem>
16 changes: 9 additions & 7 deletions inputFiles/singlePhaseFlow/staircase_3d.xml
MelReyCG marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,9 @@
target="/Solvers/SinglePhaseFlow"/>

<PeriodicEvent
name="statistics"
timeFrequency="5000.0"
target="/Tasks/SinglePhaseFlowStatistics"/>
name="statisticsController"
timeFrequency="5000"
target="/Tasks/statController"/>

<PeriodicEvent
name="restarts"
Expand Down Expand Up @@ -165,10 +165,12 @@
</FieldSpecifications>

<Tasks>
<SinglePhaseStatistics
name="SinglePhaseFlowStatistics"
flowSolverName="SinglePhaseFlow"
logLevel="1"/>
<StatOutputController name="statController" >
<SinglePhaseStatistics
name="SinglePhaseFlowStatistics"
flowSolverName="SinglePhaseFlow"
logLevel="1"/>
</StatOutputController>
</Tasks>

<Outputs>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,4 +142,4 @@
scale="0.0"
setNames="{ xpos }"/>
</FieldSpecifications>
</Problem>
</Problem>
1 change: 0 additions & 1 deletion scripts/uberenv
Submodule uberenv deleted from d0cf52
42 changes: 5 additions & 37 deletions src/cmake/thirdparty/SetupGeosxThirdParty.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -184,28 +184,7 @@ if(DEFINED CONDUIT_DIR)

message( " ----> Conduit_VERSION = ${Conduit_VERSION}")


set(CONDUIT_TARGETS conduit conduit_relay conduit_blueprint)
foreach(targetName ${CONDUIT_TARGETS} )
get_target_property(includeDirs
${targetName}
INTERFACE_INCLUDE_DIRECTORIES)

set_property(TARGET ${targetName}
APPEND PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
${includeDirs})
endforeach()

# Conduit uses our HDF5 and we need to propagate the above fix.
# get_target_property(CONDUIT_RELAY_INTERFACE_INCLUDE_DIRECTORIES conduit_relay INTERFACE_INCLUDE_DIRECTORIES)
# list(REMOVE_ITEM CONDUIT_RELAY_INTERFACE_INCLUDE_DIRECTORIES /usr/include)
# set_target_properties(conduit_relay PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CONDUIT_RELAY_INTERFACE_INCLUDE_DIRECTORIES})

# get_target_property(CONDUIT_RELAY_INTERFACE_SYSTEM_INCLUDE_DIRECTORIES conduit_relay INTERFACE_SYSTEM_INCLUDE_DIRECTORIES)
# list(REMOVE_ITEM CONDUIT_RELAY_INTERFACE_SYSTEM_INCLUDE_DIRECTORIES /usr/include)
# set_target_properties(conduit_relay PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${CONDUIT_RELAY_INTERFACE_SYSTEM_INCLUDE_DIRECTORIES})

set(thirdPartyLibs ${thirdPartyLibs} conduit::conduit)
set(thirdPartyLibs ${thirdPartyLibs} conduit::conduit )
else()
mandatory_tpl_doesnt_exist("Conduit" CONDUIT_DIR)
endif()
Expand Down Expand Up @@ -407,23 +386,12 @@ if(DEFINED ADIAK_DIR)
# Header file provides incorrect version 0.3.0
message( " ----> adiak_VERSION = 0.2.2")

set(adiak_target "")
if(TARGET adiak::adiak)
set(adiak_target ${adiak_target} adiak::adiak)
endif()
if(TARGET adiak)
set(adiak_target ${adiak_target} adiak)
endif()

set_property(TARGET ${adiak_target}
APPEND PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
${adiak_INCLUDE_DIR} )
set_property(TARGET ${adiak_target}
APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES
${adiak_INCLUDE_DIR} )
if( NOT TARGET adiak )
add_library( adiak ALIAS adiak::adiak )
endif( )

set(ENABLE_ADIAK ON CACHE BOOL "")
set(thirdPartyLibs ${thirdPartyLibs} ${adiak_target})
set(thirdPartyLibs ${thirdPartyLibs} adiak )
else()
if(ENABLE_ADIAK)
message(WARNING "ENABLE_ADIAK is ON but ADIAK_DIR isn't defined.")
Expand Down
119 changes: 119 additions & 0 deletions src/coreComponents/codingUtilities/traits.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,39 @@ constexpr bool is_range_like = HasMemberFunction_begin< T > && HasMemberFunction
template< typename CLASS >
static constexpr bool HasMemberFunction_move = LvArray::bufferManipulation::HasMemberFunction_move< CLASS >;

/**
* @brief Defines a static constexpr bool HasMemberFunction_getPreviousSpace< @p CLASS >
* that is true iff the method @p CLASS ::getPreviousSpace() exists and the return value is convertable to a LvArray::MemorySpace.
* @tparam CLASS The type to test.
*/
HAS_MEMBER_FUNCTION( getPreviousSpace, LvArray::MemorySpace, );

/**
* @brief Defines a static constexpr bool HasMemberFunction_registerTouch< @p CLASS >
* that is true iff the method @p CLASS ::registerTouch( LvArray::MemorySpace ) exists.
* @tparam CLASS The type to test.
*/
HAS_MEMBER_FUNCTION_NO_RTYPE( registerTouch, LvArray::MemorySpace() );

/**
* @brief Defines a static constexpr bool HasMemberFunction_checkTouch< @p CLASS >
* that is true iff the method @p CLASS :checkTouch( ) exists and the return value is converatble to bool.
* @tparam CLASS The type to test.
*/
HAS_MEMBER_FUNCTION( checkTouch, bool, );


/**
* @brief Defines a static constexpr bool HasMemorySpaceFunctions< @p CLASS >
* that is true iff the class exposes the set a memory space movement functions defined above.
* @tparam CLASS The type to test.
*/
template< typename CLASS >
static constexpr bool HasMemorySpaceFunctions = HasMemberFunction_move< CLASS > &&
HasMemberFunction_registerTouch< CLASS > &&
HasMemberFunction_checkTouch< CLASS > &&
HasMemberFunction_getPreviousSpace< CLASS >;

/**
* @brief Defines a static constexpr bool HasMemberFunction_setName< @p CLASS >
* that is true iff the method @p CLASS ::setName( string ) exists.
Expand Down Expand Up @@ -126,6 +159,92 @@ IS_VALID_EXPRESSION_2( CanStreamInto, SRC, DST, std::declval< SRC & >() >> std::
*/
HAS_ALIAS( value_type );

namespace internal
{

/**
* @brief Trait to check if `operator+=` is defined between two types.
*
* This struct is a type trait that determines if the `operator+=` is defined between two types, T and U.
* It inherits from `std::false_type` by default, indicating that the operator is not defined.
* A specialized version inherits from `std::true_type` if the operator is indeed defined.
*
* @tparam T The left-hand side type for the `operator+=`.
* @tparam U The right-hand side type for the `operator+=`, defaults to the same as T.
* @tparam Void Helper type for SFINAE.
*/
template< typename T, typename U, typename = void >
struct has_plus_equal : std::false_type {};

/**
* @brief Specialization of has_plus_equal when `operator+=` is defined.
*
* This specialization of has_plus_equal uses SFINAE to detect if `T& operator+=(U)` exists.
* If the operator is found, this struct inherits from `std::true_type`.
*
* @tparam T The left-hand side type for the `operator+=`.
* @tparam U The right-hand side type for the `operator+=`.
*/
template< typename T, typename U >
struct has_plus_equal< T, U, std::void_t< decltype(std::declval< T & >() += std::declval< U >()) > > : std::true_type {};

} // namespace internal

/**
* @brief Helper variable template to simplify usage of has_plus_equal trait.
*
* This variable template provides a more convenient way to use the has_plus_equal trait.
* It evaluates to `true` if `T` supports `operator+=` with `U`, and `false` otherwise.
*
* @tparam T The left-hand side type for the `operator+=`.
* @tparam U The right-hand side type for the `operator+=`, defaults to the same as T.
*/
template< typename T, typename U=T >
constexpr bool has_plus_equal_v = internal::has_plus_equal< T, U >::value;

namespace internal
{

/**
* @brief Trait to check if `operator<` is defined between two types.
*
* This struct is a type trait that determines if the `operator<` is defined between two types, T and U.
* It inherits from `std::false_type` by default, indicating that the operator is not defined.
* A specialized version inherits from `std::true_type` if the operator is indeed defined.
*
* @tparam T The left-hand side type for the `operator<`.
* @tparam U The right-hand side type for the `operator<`, defaults to the same as T.
* @tparam Void Helper type for SFINAE.
*/
template< typename T, typename U, typename = void >
struct has_less_than : std::false_type {};

/**
* @brief Specialization of has_less_than when `operator<` is defined.
*
* This specialization of has_less_than uses SFINAE to detect if `T& operator<(U)` exists.
* If the operator is found, this struct inherits from `std::true_type`.
*
* @tparam T The left-hand side type for the `operator<`.
* @tparam U The right-hand side type for the `operator<`.
*/
template< typename T, typename U >
struct has_less_than<T, U, std::void_t<decltype(std::declval< T & >() < std::declval< U >())>> : std::true_type {};

} // namespace internal

/**
* @brief Helper variable template to simplify usage of has_less_than trait.
*
* This variable template provides a more convenient way to use the has_less_than trait.
* It evaluates to `true` if `T` supports `operator<` with `U`, and `false` otherwise.
*
* @tparam T The left-hand side type for the `operator<`.
* @tparam U The right-hand side type for the `operator<`, defaults to the same as T.
*/
template< typename T, typename U=T >
constexpr bool has_less_than_v = internal::has_less_than< T, U >::value;

namespace internal
{
template< class T,
Expand Down
10 changes: 1 addition & 9 deletions src/coreComponents/common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -88,15 +88,7 @@ if ( ENABLE_MKL )
endif()

if( ENABLE_CALIPER )
list( APPEND dependencyList caliper )
endif()

if( ENABLE_CALIPER )
list( APPEND dependencyList caliper )

if (TARGET adiak::adiak)
list( APPEND dependencyList adiak::adiak )
endif()
set( dependencyList ${dependencyList} caliper )

if (TARGET adiak)
list( APPEND dependencyList adiak )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,17 @@ struct MultiFluidVarSlice
derivs( inputDerivs )
{}

GEOS_HOST_DEVICE MultiFluidVarSlice( const MultiFluidVarSlice & );

internal::ArraySliceOrRef< T, DIM, USD > value; /// variable value
internal::ArraySliceOrRef< T, DIM + 1, USD_DC > derivs; /// derivative w.r.t. pressure, temperature, compositions

using ValueType = internal::ArraySliceOrRef< T, DIM, USD >;
};

template< typename T, int DIM, int USD, int USD_DC >
GEOS_HOST_DEVICE MultiFluidVarSlice< T, DIM, USD, USD_DC >::MultiFluidVarSlice( const MultiFluidVarSlice & ) = default;

/**
* @brief Struct holding views into fluid data, used to simplify parameter passing in kernel wrapper constructors.
* @tparam NDIM number of dimensions
Expand All @@ -77,7 +82,7 @@ struct MultiFluidVarSlice
template< typename T, int NDIM, int USD, int USD_DC >
struct MultiFluidVarView
{
MultiFluidVarView() = default;
GEOS_HOST_DEVICE MultiFluidVarView();

GEOS_HOST_DEVICE
MultiFluidVarView ( MultiFluidVarView const & src ):
Expand All @@ -95,6 +100,7 @@ struct MultiFluidVarView
ArrayView< T, NDIM, USD > value; ///< View into property values
ArrayView< T, NDIM + 1, USD_DC > derivs; ///< View into property derivatives w.r.t. pressure, temperature, compositions


using SliceType = MultiFluidVarSlice< T, NDIM - 2, USD - 2, USD_DC - 2 >;

using ValueType = ArrayView< T, NDIM, USD >;
Expand All @@ -106,6 +112,9 @@ struct MultiFluidVarView
}
};

template< typename T, int NDIM, int USD, int USD_DC >
GEOS_HOST_DEVICE MultiFluidVarView< T, NDIM, USD, USD_DC >::MultiFluidVarView() = default;

/**
* @brief Struct holding views into fluid data, used to simplify parameter passing in kernel wrapper constructors.
* @tparam NDIM number of dimensions
Expand Down
Loading