GEOS
RelativePermeabilityUpdateKernel.hpp
Go to the documentation of this file.
1 /*
2  * ------------------------------------------------------------------------------------------------------------
3  * SPDX-License-Identifier: LGPL-2.1-only
4  *
5  * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
6  * Copyright (c) 2018-2024 Total, S.A
7  * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
8  * Copyright (c) 2023-2024 Chevron
9  * Copyright (c) 2019- GEOS/GEOSX Contributors
10  * All rights reserved
11  *
12  * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
13  * ------------------------------------------------------------------------------------------------------------
14  */
15 
20 #ifndef GEOS_PHYSICSSOLVERS_FLUIDFLOW_COMPOSITIONAL_RELATIVEPERMEABILITYUPDATEKERNEL_HPP
21 #define GEOS_PHYSICSSOLVERS_FLUIDFLOW_COMPOSITIONAL_RELATIVEPERMEABILITYUPDATEKERNEL_HPP
22 
23 #include "common/DataTypes.hpp"
24 #include "common/GEOS_RAJA_Interface.hpp"
25 
26 namespace geos
27 {
28 
29 namespace isothermalCompositionalMultiphaseBaseKernels
30 {
31 
32 /******************************** RelativePermeabilityUpdateKernel ********************************/
33 
35 {
36  template< typename POLICY, typename RELPERM_WRAPPER >
37  static void
38  launch( localIndex const size,
39  RELPERM_WRAPPER const & relPermWrapper,
41  {
42  forAll< POLICY >( size, [=] GEOS_HOST_DEVICE ( localIndex const k )
43  {
44  for( localIndex q = 0; q < relPermWrapper.numGauss(); ++q )
45  {
46  relPermWrapper.update( k, q, phaseVolFrac[k] );
47  }
48  } );
49  }
50 
51  template< typename POLICY, typename RELPERM_WRAPPER >
52  static void
53  launch( SortedArrayView< localIndex const > const & targetSet,
54  RELPERM_WRAPPER const & relPermWrapper,
56  {
57  forAll< POLICY >( targetSet.size(), [=] GEOS_HOST_DEVICE ( localIndex const a )
58  {
59  localIndex const k = targetSet[a];
60  for( localIndex q = 0; q < relPermWrapper.numGauss(); ++q )
61  {
62  relPermWrapper.update( k, q, phaseVolFrac[k] );
63  }
64  } );
65  }
66 };
67 
68 } // namespace isothermalCompositionalMultiphaseBaseKernels
69 
70 } // namespace geos
71 
72 
73 #endif //GEOS_PHYSICSSOLVERS_FLUIDFLOW_COMPOSITIONAL_RELATIVEPERMEABILITYUPDATEKERNEL_HPP
#define GEOS_HOST_DEVICE
Marks a host-device function.
Definition: GeosxMacros.hpp:49
GEOS_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).
Definition: DataTypes.hpp:85
LvArray::SortedArrayView< T, localIndex, LvArray::ChaiBuffer > SortedArrayView
A sorted array view of local indices.
Definition: DataTypes.hpp:271
ArrayView< T, 2, USD > arrayView2d
Alias for 2D array view.
Definition: DataTypes.hpp:196