20#ifndef OPM_PRIVARSPACKING_HEADER_INCLUDED
21#define OPM_PRIVARSPACKING_HEADER_INCLUDED
28 constexpr int fbits = 4;
31 std::size_t pack(
const PV& privar) {
32 std::size_t m1 =
static_cast<std::size_t
>(privar.primaryVarsMeaningWater());
33 std::size_t m2 =
static_cast<std::size_t
>(privar.primaryVarsMeaningPressure());
34 std::size_t m3 =
static_cast<std::size_t
>(privar.primaryVarsMeaningGas());
35 std::size_t m4 =
static_cast<std::size_t
>(privar.primaryVarsMeaningBrine());
36 return m1 + (m2 << fbits*1) + (m3 << fbits*2) + (m4 << fbits*3);
40 void unPack(PV& privar,
const std::size_t meanings) {
41 const std::size_t filter = ((1 << fbits) - 1);
42 std::size_t m1 = (meanings >> fbits*0) & filter;
43 std::size_t m2 = (meanings >> fbits*1) & filter;
44 std::size_t m3 = (meanings >> fbits*2) & filter;
45 std::size_t m4 = (meanings >> fbits*3) & filter;
46 privar.setPrimaryVarsMeaningWater(
typename PV::WaterMeaning(m1));
47 privar.setPrimaryVarsMeaningPressure(
typename PV::PressureMeaning(m2));
48 privar.setPrimaryVarsMeaningGas(
typename PV::GasMeaning(m3));
49 privar.setPrimaryVarsMeaningBrine(
typename PV::BrineMeaning(m4));
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition BlackoilPhases.hpp:27