mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Removed smart pointers; + delete for copy constr
This commit is contained in:
parent
89cefd8d95
commit
fbbb21d482
@ -30,18 +30,6 @@ namespace bda
|
||||
using Opm::OpmLog;
|
||||
using Dune::Timer;
|
||||
|
||||
WellContributionsOCLContainer::WellContributionsOCLContainer(){
|
||||
multisegments.reset(new mswVecT());
|
||||
}
|
||||
|
||||
WellContributionsOCLContainer::~WellContributionsOCLContainer(){
|
||||
if(num_ms_wells > 0){
|
||||
for (auto ms : *multisegments) {
|
||||
delete ms;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WellContributionsOCLContainer::init(Opm::WellContributions &wellContribs, int N_, int Nb_){
|
||||
N = N_;
|
||||
Nb = Nb_;
|
||||
@ -91,8 +79,8 @@ namespace bda
|
||||
}
|
||||
|
||||
if(!wellContribs.multisegments.empty()){
|
||||
multisegments = std::move(std::make_unique<mswVecT>(wellContribs.multisegments));
|
||||
num_ms_wells = multisegments->size();
|
||||
multisegments = std::move(wellContribs.multisegments);
|
||||
num_ms_wells = multisegments.size();
|
||||
x_msw.reserve(N);
|
||||
y_msw.reserve(N);
|
||||
}
|
||||
@ -116,7 +104,7 @@ namespace bda
|
||||
}
|
||||
|
||||
if(!wellContribs.multisegments.empty()){
|
||||
multisegments = std::move(std::make_unique<mswVecT>(wellContribs.multisegments));
|
||||
multisegments = std::move(wellContribs.multisegments);
|
||||
}
|
||||
}
|
||||
|
||||
@ -158,12 +146,11 @@ namespace bda
|
||||
event.waitForEvents(events);
|
||||
|
||||
// actually apply MultisegmentWells
|
||||
for(auto well: *multisegments){
|
||||
well->setReordering(toOrder.data(), reorder);
|
||||
for(Opm::MultisegmentWellContribution *well: multisegments){
|
||||
well->setReordering(toOrder.data(), true);
|
||||
well->apply(x_msw.data(), y_msw.data());
|
||||
}
|
||||
|
||||
|
||||
// copy vector y from CPU to GPU
|
||||
queue->enqueueWriteBuffer(y, CL_FALSE, 0, sizeof(double) * N, y_msw.data(), nullptr, &event);
|
||||
event.wait();
|
||||
@ -178,4 +165,12 @@ namespace bda
|
||||
applyMSWells(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
WellContributionsOCLContainer::~WellContributionsOCLContainer(){
|
||||
if(num_ms_wells > 0){
|
||||
for (auto ms : multisegments) {
|
||||
delete ms;
|
||||
}
|
||||
}
|
||||
}
|
||||
} // end namespace bda
|
||||
|
@ -29,18 +29,15 @@ namespace bda
|
||||
class WellContributionsOCLContainer
|
||||
{
|
||||
private:
|
||||
typedef std::vector<Opm::MultisegmentWellContribution*> mswVecT;
|
||||
|
||||
int N, Nb;
|
||||
unsigned int dim, dim_wells;
|
||||
unsigned int num_blocks = 0;
|
||||
unsigned int num_std_wells = 0;
|
||||
unsigned int num_ms_wells = 0; // number of MultisegmentWells in this object, must equal multisegments.size()
|
||||
|
||||
bool reorder = true;
|
||||
std::vector<int> toOrder;
|
||||
std::vector<double> x_msw, y_msw;
|
||||
std::unique_ptr<mswVecT> multisegments;
|
||||
std::vector<Opm::MultisegmentWellContribution*> multisegments;
|
||||
|
||||
typedef struct {
|
||||
cl::Buffer Cnnzs, Dnnzs, Bnnzs;
|
||||
@ -61,8 +58,9 @@ namespace bda
|
||||
void applyMSWells(cl::Buffer& x, cl::Buffer& y);
|
||||
|
||||
public:
|
||||
WellContributionsOCLContainer();
|
||||
WellContributionsOCLContainer() {};
|
||||
~WellContributionsOCLContainer();
|
||||
WellContributionsOCLContainer(const WellContributionsOCLContainer&) = delete;
|
||||
|
||||
void apply(cl::Buffer& x, cl::Buffer& y);
|
||||
void init(Opm::WellContributions &wellContribs, int N, int Nb);
|
||||
|
Loading…
Reference in New Issue
Block a user