From 1f36eaa27ead1f85b62378bfaf4fa5ea408bcdd5 Mon Sep 17 00:00:00 2001 From: Kai Bao Date: Tue, 23 Jun 2015 14:33:02 +0200 Subject: [PATCH] constructing vector directly instead of using std::copy. --- .../BlackoilPolymerModel_impl.hpp | 26 +++++-------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/opm/polymer/fullyimplicit/BlackoilPolymerModel_impl.hpp b/opm/polymer/fullyimplicit/BlackoilPolymerModel_impl.hpp index 6bf961605..1c385e5a2 100644 --- a/opm/polymer/fullyimplicit/BlackoilPolymerModel_impl.hpp +++ b/opm/polymer/fullyimplicit/BlackoilPolymerModel_impl.hpp @@ -756,8 +756,6 @@ namespace Opm { std::vector& water_vel, std::vector& visc_mult) { - std::vector b_faces; - const int phase = fluid_.phaseUsage().phase_pos[Water]; // water position const int canonicalPhaseIdx = canph_[phase]; @@ -800,8 +798,7 @@ namespace Opm { rq_[ phase ].mflux = upwind.select(b * mob) * (transi * dh); const auto& b_faces_adb = upwind.select(b); - b_faces.resize(b_faces_adb.size()); - std::copy(b_faces_adb.value().data(), b_faces_adb.value().data() + b_faces_adb.size(), b_faces.begin()); + std::vector b_faces(b_faces_adb.value().data(), b_faces_adb.value().data() + b_faces_adb.size()); const auto& internal_faces = ops_.internal_faces; @@ -815,9 +812,7 @@ namespace Opm { const ADB phi = Opm::AutoDiffBlock::constant(Eigen::Map(& fluid_.porosity()[0], AutoDiffGrid::numCells(grid_), 1)); const ADB phiavg_adb = ops_.caver * phi; - std::vector phiavg; - phiavg.resize(phiavg_adb.size()); - std::copy(phiavg_adb.value().data(), phiavg_adb.value().data() + phiavg_adb.size(), phiavg.begin()); + std::vector phiavg(phiavg_adb.value().data(), phiavg_adb.value().data() + phiavg_adb.size()); water_vel.resize(nface); std::copy(rq_[0].mflux.value().data(), rq_[0].mflux.value().data() + nface, water_vel.begin()); @@ -833,10 +828,7 @@ namespace Opm { const Opm::PhaseUsage pu = fluid_.phaseUsage(); const ADB& sw = state.saturation[pu.phase_pos[ Water ]]; const ADB& sw_upwind_adb = upwind.select(sw); - - std::vector sw_upwind; - sw_upwind.resize(sw_upwind_adb.size()); - std::copy(sw_upwind_adb.value().data(), sw_upwind_adb.value().data() + sw_upwind_adb.size(), sw_upwind.begin()); + std::vector sw_upwind(sw_upwind_adb.value().data(), sw_upwind_adb.value().data() + sw_upwind_adb.size()); // get the absolute permeability for the faces std::vector perm; @@ -848,9 +840,7 @@ namespace Opm { // get the upwind krw_eff const ADB& krw_adb = upwind.select(krw_eff); - std::vector krw_upwind; - krw_upwind.resize(krw_adb.size()); - std::copy(krw_adb.value().data(), krw_adb.value().data() + krw_adb.size(), krw_upwind.begin()); + std::vector krw_upwind(krw_adb.value().data(), krw_adb.value().data() + krw_adb.size()); const double& shrate_const = polymer_props_ad_.shrate(); @@ -921,13 +911,9 @@ namespace Opm { const ADB phi = Opm::AutoDiffBlock::constant(Eigen::Map(& fluid_.porosity()[0], AutoDiffGrid::numCells(grid_), 1)); const ADB phi_wells_adb = subset(phi, well_cells); - std::vector phi_wells; - phi_wells.resize(phi_wells_adb.size()); - std::copy(phi_wells_adb.value().data(), phi_wells_adb.value().data() + phi_wells_adb.size(), phi_wells.begin()); + std::vector phi_wells(phi_wells_adb.value().data(), phi_wells_adb.value().data() + phi_wells_adb.size()); - std::vector b_wells; - b_wells.resize(b_perfcells.size()); - std::copy(b_perfcells.value().data(), b_perfcells.value().data() + b_perfcells.size(), b_wells.begin()); + std::vector b_wells(b_perfcells.value().data(), b_perfcells.value().data() + b_perfcells.size()); for (size_t i = 0; i < water_vel_wells.size(); ++i) { water_vel_wells[i] = b_wells[i] * water_vel_wells[i] / (phi_wells[i] * 2. * M_PI * wells_rep_radius_[i] * wells_perf_length_[i]);