Skip to content

Commit 5f9dacd

Browse files
Adding more smart pointers (#294)
1 parent 321d18f commit 5f9dacd

File tree

106 files changed

+2220
-4570
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

106 files changed

+2220
-4570
lines changed

examples/dmd/de_dg_advection_greedy.cpp

Lines changed: 93 additions & 126 deletions
Large diffs are not rendered by default.

examples/dmd/de_parametric_heat_conduction_greedy.cpp

Lines changed: 33 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -378,15 +378,15 @@ double simulation()
378378

379379
fom_timer.Stop();
380380

381-
CAROM::DMD* dmd_u = NULL;
381+
std::unique_ptr<CAROM::DMD> dmd_u;
382382

383383
// 14. If in offline mode, create DMD object and take initial sample.
384384
if (offline)
385385
{
386386
dmd_training_timer.Start();
387387

388388
u_gf.SetFromTrueDofs(u);
389-
dmd_u = new CAROM::DMD(u.Size(), dt);
389+
dmd_u.reset(new CAROM::DMD(u.Size(), dt));
390390
dmd_u->takeSample(u.GetData(), t);
391391

392392
if (myid == 0)
@@ -414,7 +414,7 @@ double simulation()
414414
std::fstream fin("parameters.txt", std::ios_base::in);
415415
double curr_param;
416416
std::vector<std::string> dmd_paths;
417-
std::vector<CAROM::Vector*> param_vectors;
417+
std::vector<CAROM::Vector> param_vectors;
418418

419419
while (fin >> curr_param)
420420
{
@@ -429,36 +429,34 @@ double simulation()
429429
dmd_paths.push_back(to_string(curr_radius) + "_" +
430430
to_string(curr_alpha) + "_" + to_string(curr_cx) + "_" +
431431
to_string(curr_cy));
432-
CAROM::Vector* param_vector = new CAROM::Vector(4, false);
433-
param_vector->item(0) = curr_radius;
434-
param_vector->item(1) = curr_alpha;
435-
param_vector->item(2) = curr_cx;
436-
param_vector->item(3) = curr_cy;
432+
CAROM::Vector param_vector(4, false);
433+
param_vector(0) = curr_radius;
434+
param_vector(1) = curr_alpha;
435+
param_vector(2) = curr_cx;
436+
param_vector(3) = curr_cy;
437437
param_vectors.push_back(param_vector);
438438
}
439439
fin.close();
440440

441441
if (dmd_paths.size() > 1)
442442
{
443-
CAROM::Vector* desired_param = new CAROM::Vector(4, false);
444-
desired_param->item(0) = radius;
445-
desired_param->item(1) = alpha;
446-
desired_param->item(2) = cx;
447-
desired_param->item(3) = cy;
443+
CAROM::Vector desired_param(4, false);
444+
desired_param(0) = radius;
445+
desired_param(1) = alpha;
446+
desired_param(2) = cx;
447+
desired_param(3) = cy;
448448

449449
dmd_training_timer.Start();
450450

451451
CAROM::getParametricDMD(dmd_u, param_vectors, dmd_paths, desired_param,
452452
"G", "LS", closest_rbf_val);
453-
454-
delete desired_param;
455453
}
456454
else
457455
{
458-
dmd_u = new CAROM::DMD(dmd_paths[0]);
456+
dmd_u.reset(new CAROM::DMD(dmd_paths[0]));
459457
}
460458

461-
dmd_u->projectInitialCondition(init);
459+
dmd_u->projectInitialCondition(*init);
462460

463461
dmd_training_timer.Stop();
464462

@@ -467,15 +465,13 @@ double simulation()
467465
// compare the final FOM solution to the DMD predicted solution.
468466
t = t_final - 10.0 * dt;
469467

470-
CAROM::Vector* carom_tf_u_minus_some = dmd_u->predict(t);
468+
std::shared_ptr<CAROM::Vector> carom_tf_u_minus_some = dmd_u->predict(t);
471469

472470
Vector tf_u_minus_some(carom_tf_u_minus_some->getData(),
473471
carom_tf_u_minus_some->dim());
474472

475473
u = tf_u_minus_some;
476474
u_gf.SetFromTrueDofs(u);
477-
478-
delete carom_tf_u_minus_some;
479475
}
480476

481477
ts.push_back(t);
@@ -583,7 +579,7 @@ double simulation()
583579
std::fstream fin("parameters.txt", std::ios_base::in);
584580
double curr_param;
585581
std::vector<std::string> dmd_paths;
586-
std::vector<CAROM::Vector*> param_vectors;
582+
std::vector<CAROM::Vector> param_vectors;
587583

588584
while (fin >> curr_param)
589585
{
@@ -598,30 +594,29 @@ double simulation()
598594
dmd_paths.push_back(to_string(curr_radius) + "_" +
599595
to_string(curr_alpha) + "_" + to_string(curr_cx) + "_" +
600596
to_string(curr_cy));
601-
CAROM::Vector* param_vector = new CAROM::Vector(4, false);
602-
param_vector->item(0) = curr_radius;
603-
param_vector->item(1) = curr_alpha;
604-
param_vector->item(2) = curr_cx;
605-
param_vector->item(3) = curr_cy;
597+
CAROM::Vector param_vector(4, false);
598+
param_vector(0) = curr_radius;
599+
param_vector(1) = curr_alpha;
600+
param_vector(2) = curr_cx;
601+
param_vector(3) = curr_cy;
606602
param_vectors.push_back(param_vector);
607603
}
608604
fin.close();
609605

610-
CAROM::Vector* desired_param = new CAROM::Vector(4, false);
611-
desired_param->item(0) = radius;
612-
desired_param->item(1) = alpha;
613-
desired_param->item(2) = cx;
614-
desired_param->item(3) = cy;
606+
CAROM::Vector desired_param(4, false);
607+
desired_param(0) = radius;
608+
desired_param(1) = alpha;
609+
desired_param(2) = cx;
610+
desired_param(3) = cy;
615611

616612
dmd_training_timer.Start();
617613

618614
CAROM::getParametricDMD(dmd_u, param_vectors, dmd_paths, desired_param,
619615
"G", "LS", closest_rbf_val);
620616

621-
dmd_u->projectInitialCondition(init);
617+
dmd_u->projectInitialCondition(*init);
622618

623619
dmd_training_timer.Stop();
624-
delete desired_param;
625620
}
626621

627622
if (offline || de || calc_err_indicator)
@@ -683,7 +678,8 @@ double simulation()
683678
*true_solution_u, *true_solution_u));
684679
}
685680
}
686-
CAROM::Vector* result_u = dmd_u->predict(t_final);
681+
682+
std::shared_ptr<CAROM::Vector> result_u = dmd_u->predict(t_final);
687683

688684
Vector dmd_solution_u(result_u->getData(), result_u->dim());
689685
Vector diff_u(true_solution_u->Size());
@@ -699,8 +695,6 @@ double simulation()
699695
<< rel_diff << std::endl;
700696
}
701697

702-
delete result_u;
703-
704698
if (!de && myid == 0)
705699
{
706700
printf("Elapsed time for training DMD: %e second\n",
@@ -730,12 +724,11 @@ double simulation()
730724
std::cout << "Predicting temperature using DMD at: " << ts[0] << std::endl;
731725
}
732726

733-
CAROM::Vector* result_u = dmd_u->predict(ts[0]);
727+
std::shared_ptr<CAROM::Vector> result_u = dmd_u->predict(ts[0]);
734728
Vector initial_dmd_solution_u(result_u->getData(), result_u->dim());
735729
u_gf.SetFromTrueDofs(initial_dmd_solution_u);
736730

737-
VisItDataCollection dmd_visit_dc("DMD_DE_Parametric_Heat_Conduction_Greedy_"
738-
+
731+
VisItDataCollection dmd_visit_dc("DMD_DE_Parametric_Heat_Conduction_Greedy_" +
739732
to_string(radius) + "_" + to_string(alpha) + "_" +
740733
to_string(cx) + "_" + to_string(cy), pmesh);
741734
dmd_visit_dc.RegisterField("temperature", &u_gf);
@@ -746,8 +739,6 @@ double simulation()
746739
dmd_visit_dc.Save();
747740
}
748741

749-
delete result_u;
750-
751742
if (visit)
752743
{
753744
for (int i = 1; i < ts.size(); i++)
@@ -766,8 +757,6 @@ double simulation()
766757
dmd_visit_dc.SetCycle(i);
767758
dmd_visit_dc.SetTime(ts[i]);
768759
dmd_visit_dc.Save();
769-
770-
delete result_u;
771760
}
772761
}
773762
}
@@ -792,8 +781,6 @@ double simulation()
792781
printf("Elapsed time for predicting DMD: %e second\n",
793782
dmd_prediction_timer.RealTime());
794783
}
795-
796-
delete result_u;
797784
}
798785

799786
// 19. Calculate the relative error as commanded by the greedy algorithm.
@@ -818,10 +805,6 @@ double simulation()
818805
// 21. Free the used memory.
819806
delete ode_solver;
820807
delete pmesh;
821-
if (dmd_u != NULL)
822-
{
823-
delete dmd_u;
824-
}
825808

826809
return rel_diff;
827810
}
@@ -834,7 +817,7 @@ class RelativeDifferenceCostFunction : public CAROM::IOptimizable
834817
{
835818

836819
}
837-
double EvaluateCost(std::vector<double> inputs) const override
820+
double EvaluateCost(std::vector<double> & inputs) const override
838821
{
839822
radius = inputs[0];
840823
alpha = inputs[1];

examples/dmd/dg_advection.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,7 @@ int main(int argc, char *argv[])
716716
std::cout << "Predicting solution using DMD" << std::endl;
717717
}
718718

719-
CAROM::Vector* result_u = dmd_U.predict(ts[0]);
719+
std::shared_ptr<CAROM::Vector> result_u = dmd_U.predict(ts[0]);
720720
Vector initial_dmd_solution_u(result_u->getData(), result_u->dim());
721721
u->SetFromTrueDofs(initial_dmd_solution_u);
722722

@@ -733,8 +733,6 @@ int main(int argc, char *argv[])
733733
dmd_dc->Save();
734734
}
735735

736-
delete result_u;
737-
738736
if (visit)
739737
{
740738
for (int i = 1; i < ts.size(); i++)
@@ -748,7 +746,6 @@ int main(int argc, char *argv[])
748746
dmd_dc->SetCycle(i);
749747
dmd_dc->SetTime(ts[i]);
750748
dmd_dc->Save();
751-
delete result_u;
752749
}
753750
}
754751
}
@@ -788,7 +785,6 @@ int main(int argc, char *argv[])
788785
delete pmesh;
789786
delete ode_solver;
790787
delete pd;
791-
delete result_u;
792788
#ifdef MFEM_USE_ADIOS2
793789
if (adios2)
794790
{

examples/dmd/dg_euler.cpp

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -582,10 +582,10 @@ int main(int argc, char *argv[])
582582
std::cout << "Predicting density, momentum, and energy using DMD" << std::endl;
583583
}
584584

585-
CAROM::Vector* result_dens = dmd_dens->predict(ts[0]);
586-
CAROM::Vector* result_x_mom = dmd_x_mom->predict(ts[0]);
587-
CAROM::Vector* result_y_mom = dmd_y_mom->predict(ts[0]);
588-
CAROM::Vector* result_e = dmd_e->predict(ts[0]);
585+
std::shared_ptr<CAROM::Vector> result_dens = dmd_dens->predict(ts[0]);
586+
std::shared_ptr<CAROM::Vector> result_x_mom = dmd_x_mom->predict(ts[0]);
587+
std::shared_ptr<CAROM::Vector> result_y_mom = dmd_y_mom->predict(ts[0]);
588+
std::shared_ptr<CAROM::Vector> result_e = dmd_e->predict(ts[0]);
589589
Vector initial_dmd_solution_dens(result_dens->getData(), result_dens->dim());
590590
Vector initial_dmd_solution_x_mom(result_x_mom->getData(), result_x_mom->dim());
591591
Vector initial_dmd_solution_y_mom(result_y_mom->getData(), result_y_mom->dim());
@@ -604,10 +604,6 @@ int main(int argc, char *argv[])
604604
dmd_visit_dc.Save();
605605
}
606606

607-
delete result_dens;
608-
delete result_x_mom;
609-
delete result_y_mom;
610-
delete result_e;
611607
if (visit)
612608
{
613609
for (int i = 1; i < ts.size(); i++)
@@ -630,11 +626,6 @@ int main(int argc, char *argv[])
630626
dmd_visit_dc.SetCycle(i);
631627
dmd_visit_dc.SetTime(ts[i]);
632628
dmd_visit_dc.Save();
633-
634-
delete result_dens;
635-
delete result_x_mom;
636-
delete result_y_mom;
637-
delete result_e;
638629
}
639630
}
640631
}
@@ -701,10 +692,6 @@ int main(int argc, char *argv[])
701692

702693
// Free the used memory.
703694
delete ode_solver;
704-
delete result_dens;
705-
delete result_x_mom;
706-
delete result_y_mom;
707-
delete result_e;
708695
delete dmd_dens;
709696
delete dmd_x_mom;
710697
delete dmd_y_mom;

examples/dmd/heat_conduction.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,7 @@ int main(int argc, char *argv[])
504504
std::cout << "Predicting temperature using DMD" << std::endl;
505505
}
506506

507-
CAROM::Vector* result_u = dmd_u->predict(ts[0]);
507+
std::shared_ptr<CAROM::Vector> result_u = dmd_u->predict(ts[0]);
508508
Vector initial_dmd_solution_u(result_u->getData(), result_u->dim());
509509
u_gf.SetFromTrueDofs(initial_dmd_solution_u);
510510

@@ -517,8 +517,6 @@ int main(int argc, char *argv[])
517517
dmd_visit_dc.Save();
518518
}
519519

520-
delete result_u;
521-
522520
if (visit)
523521
{
524522
for (int i = 1; i < ts.size(); i++)
@@ -532,8 +530,6 @@ int main(int argc, char *argv[])
532530
dmd_visit_dc.SetCycle(i);
533531
dmd_visit_dc.SetTime(ts[i]);
534532
dmd_visit_dc.Save();
535-
536-
delete result_u;
537533
}
538534
}
539535
}
@@ -566,7 +562,6 @@ int main(int argc, char *argv[])
566562
// 16. Free the used memory.
567563
delete ode_solver;
568564
delete pmesh;
569-
delete result_u;
570565

571566
MPI_Finalize();
572567

examples/dmd/heat_conduction_dmdc.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ int main(int argc, char *argv[])
540540
std::cout << "Predicting temperature using DMDc" << std::endl;
541541
}
542542

543-
CAROM::Vector* result_u = dmd_u->predict(ts[0]);
543+
std::unique_ptr<CAROM::Vector> result_u = dmd_u->predict(ts[0]);
544544
Vector initial_dmd_solution_u(result_u->getData(), result_u->dim());
545545
u_gf.SetFromTrueDofs(initial_dmd_solution_u);
546546

@@ -553,8 +553,6 @@ int main(int argc, char *argv[])
553553
dmd_visit_dc.Save();
554554
}
555555

556-
delete result_u;
557-
558556
if (visit)
559557
{
560558
for (int i = 1; i < ts.size(); i++)
@@ -568,8 +566,6 @@ int main(int argc, char *argv[])
568566
dmd_visit_dc.SetCycle(i);
569567
dmd_visit_dc.SetTime(ts[i]);
570568
dmd_visit_dc.Save();
571-
572-
delete result_u;
573569
}
574570
}
575571
}
@@ -602,7 +598,6 @@ int main(int argc, char *argv[])
602598
// 16. Free the used memory.
603599
delete ode_solver;
604600
delete pmesh;
605-
delete result_u;
606601

607602
MPI_Finalize();
608603

0 commit comments

Comments
 (0)