From 8f31d3150eb7831b3d0fe06dfcd2efb6c4cde943 Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Tue, 23 Nov 2021 09:11:59 +0100 Subject: [PATCH] Initialize tracers based on optional values in TracerConfig --- ebos/eclgenerictracermodel.cc | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/ebos/eclgenerictracermodel.cc b/ebos/eclgenerictracermodel.cc index f0b2c7a14..61ae6fcc3 100644 --- a/ebos/eclgenerictracermodel.cc +++ b/ebos/eclgenerictracermodel.cc @@ -47,6 +47,7 @@ #include #endif +#include #include #include #include @@ -168,24 +169,28 @@ doInit(bool enabled, size_t numGridDof, //TBLK keyword - if (!tracer.free_concentration.empty()){ - int tblkDatasize = tracer.free_concentration.size(); + if (tracer.free_concentration.has_value()){ + const auto& free_concentration = tracer.free_concentration.value(); + int tblkDatasize = free_concentration.size(); if (tblkDatasize < cartMapper_.cartesianSize()){ throw std::runtime_error("Wrong size of TBLK for" + tracer.name); } for (size_t globalDofIdx = 0; globalDofIdx < numGridDof; ++globalDofIdx){ int cartDofIdx = cartMapper_.cartesianIndex(globalDofIdx); - tracerConcentration_[tracerIdx][globalDofIdx] = tracer.free_concentration[cartDofIdx]; + tracerConcentration_[tracerIdx][globalDofIdx] = free_concentration[cartDofIdx]; } } //TVDPF keyword - else { + else if (tracer.free_tvdp.has_value()) { + const auto& free_tvdp = tracer.free_tvdp.value(); for (size_t globalDofIdx = 0; globalDofIdx < numGridDof; ++globalDofIdx){ tracerConcentration_[tracerIdx][globalDofIdx] = - tracer.free_tvdp.evaluate("TRACER_CONCENTRATION", - centroids_(globalDofIdx)[2]); + free_tvdp.evaluate("TRACER_CONCENTRATION", + centroids_(globalDofIdx)[2]); } - } + } else + throw std::logic_error(fmt::format("Can not initialize tracer: {}", tracer.name)); + ++tracerIdx; }