20#ifndef OPM_PRIVARSPACKING_HEADER_INCLUDED
21#define OPM_PRIVARSPACKING_HEADER_INCLUDED
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 std::size_t m5 =
static_cast<std::size_t
>(privar.primaryVarsMeaningSolvent());
41 void unPack(PV& privar,
const std::size_t meanings) {
42 const std::size_t filter = ((1 <<
fbits) - 1);
43 std::size_t m1 = (meanings >>
fbits*0) & filter;
44 std::size_t m2 = (meanings >>
fbits*1) & filter;
45 std::size_t m3 = (meanings >>
fbits*2) & filter;
46 std::size_t m4 = (meanings >>
fbits*3) & filter;
47 std::size_t m5 = (meanings >>
fbits*4) & filter;
48 privar.setPrimaryVarsMeaningWater(
typename PV::WaterMeaning(m1));
49 privar.setPrimaryVarsMeaningPressure(
typename PV::PressureMeaning(m2));
50 privar.setPrimaryVarsMeaningGas(
typename PV::GasMeaning(m3));
51 privar.setPrimaryVarsMeaningBrine(
typename PV::BrineMeaning(m4));
52 privar.setPrimaryVarsMeaningSolvent(
typename PV::SolventMeaning(m5));
constexpr int fbits
Definition: priVarsPacking.hpp:28
void unPack(PV &privar, const std::size_t meanings)
Definition: priVarsPacking.hpp:41
std::size_t pack(const PV &privar)
Definition: priVarsPacking.hpp:31
Definition: blackoilboundaryratevector.hh:37