GpuFlowProblem.hpp File Reference

GPU-compatible, simplified version of Opm::FlowProblem. More...

#include <opm/common/utility/VectorWithDefaultAllocator.hpp>
#include <opm/common/utility/gpuDecorators.hpp>
#include <opm/common/ErrorMacros.hpp>
#include <opm/models/discretization/common/linearizationtype.hh>
#include <opm/material/fluidmatrixinteractions/GpuEclMaterialLawManager.hpp>
#include <opm/material/thermal/GpuEclThermalLawManager.hpp>
#include <cstddef>
#include <type_traits>
#include <utility>
#include <vector>
Include dependency graph for GpuFlowProblem.hpp:

Go to the source code of this file.

Classes

struct  Opm::NoThermalLawManager
 No-op thermal-law manager used as the default 4th template arg of GpuFlowProblem. More...
 
struct  Opm::NoThermalLawManager::SolidEnergyLawParams
 
struct  Opm::NoThermalLawManager::ThermalConductionLawParams
 
class  Opm::GpuFlowProblem< ScalarT, MaterialLawManagerT, Storage, ThermalLawManagerT >
 Minimal, GPU-compatible problem class. More...
 
struct  Opm::GpuFlowProblem< ScalarT, MaterialLawManagerT, Storage, ThermalLawManagerT >::ModelView
 Trivial nested model() helper that satisfies the problem.model().linearizer().getLinearizationType() chain that BlackOilIntensiveQuantities walks. More...
 
struct  Opm::GpuFlowProblem< ScalarT, MaterialLawManagerT, Storage, ThermalLawManagerT >::ModelView::LinearizerView
 

Namespaces

namespace  Opm
 
namespace  Opm::gpuistl
 A small, fixed‑dimension MiniVector class backed by std::array that can be used in both host and CUDA device code.
 

Functions

inline ::Opm::NoThermalLawManager Opm::gpuistl::copy_to_gpu (const ::Opm::NoThermalLawManager &)
 copy_to_gpu overload for the no-op thermal manager. More...
 
inline ::Opm::NoThermalLawManager Opm::gpuistl::make_view (::Opm::NoThermalLawManager &)
 make_view overload for the no-op thermal manager. More...
 
template<class ScalarT , class CpuMaterialLawManager , class CpuThermalLawManager >
auto Opm::gpuistl::copy_to_gpu (const ::Opm::GpuFlowProblem< ScalarT, CpuMaterialLawManager, ::Opm::VectorWithDefaultAllocator, CpuThermalLawManager > &cpu)
 Copy a CPU GpuFlowProblem to GPU-resident GpuBuffer storage. More...
 
template<class ScalarT , class GpuBufferMaterialLawManager , class GpuBufferThermalLawManager >
auto Opm::gpuistl::make_view (::Opm::GpuFlowProblem< ScalarT, GpuBufferMaterialLawManager, GpuBuffer, GpuBufferThermalLawManager > &buf)
 Make a non-owning GpuView based GpuFlowProblem from an owning GpuBuffer based GpuFlowProblem. More...
 

Detailed Description

GPU-compatible, simplified version of Opm::FlowProblem.

Only exposes the subset of the FlowProblem / FlowProblemBlackoil interface that BlackOilIntensiveQuantities needs in order to call ::update(). Anything that is not used by the intensive quantities (well model, aquifers, source terms, boundary conditions, ...) is intentionally absent.