Skip to content

Commit d0d3946

Browse files
author
Michael Morphew
committed
remove debug messages, copy lambda selection code to svda solver
1 parent da9ac58 commit d0d3946

File tree

2 files changed

+40
-10
lines changed

2 files changed

+40
-10
lines changed

src/libs/pestpp_common/SVDASolver.cpp

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ ModelRun SVDASolver::iteration_upgrd(RunManagerAbstract &run_manager, Terminatio
470470
}
471471
}
472472

473-
vector<double> lambda_vec = base_lambda_vec;
473+
vector<double> lambda_vec = pest_scenario.get_pestpp_options().get_base_lambda_vec();
474474
std::sort(lambda_vec.begin(), lambda_vec.end());
475475
auto iter = std::unique(lambda_vec.begin(), lambda_vec.end());
476476
lambda_vec.resize(std::distance(lambda_vec.begin(), iter));
@@ -699,6 +699,45 @@ ModelRun SVDASolver::iteration_upgrd(RunManagerAbstract &run_manager, Terminatio
699699
{
700700
throw runtime_error("all upgrade runs failed");
701701
}
702+
703+
// Check if best_lambda is at the edge of lambda_vec
704+
705+
// regrab lambda_vec
706+
vector<double> lambda_vec = pest_scenario.get_pestpp_options().get_base_lambda_vec();
707+
std::sort(lambda_vec.begin(), lambda_vec.end());
708+
auto iter = std::unique(lambda_vec.begin(), lambda_vec.end());
709+
lambda_vec.resize(std::distance(lambda_vec.begin(), iter));
710+
711+
auto last_lambda = lambda_vec.back();
712+
auto first_lambda = lambda_vec.front();
713+
file_manager.rec_ofstream() << "Checking to see if best lambda is at the edge" << std::endl;
714+
double lambda_spacing_factor = 10.0; // doing powers of 10 for now
715+
bool extended = false;
716+
717+
if (best_lambda == last_lambda)
718+
{
719+
// Add a new larger lambda
720+
double new_lambda = last_lambda * lambda_spacing_factor;
721+
if (std::find(lambda_vec.begin(), lambda_vec.end(), new_lambda) == lambda_vec.end())
722+
{
723+
lambda_vec.push_back(new_lambda);
724+
extended = true;
725+
file_manager.rec_ofstream() << "*** Extending lambda_vec: added larger lambda " << new_lambda << std::endl;
726+
}
727+
}
728+
else if (best_lambda == first_lambda)
729+
{
730+
// Add a new smaller lambda
731+
double new_lambda = first_lambda / lambda_spacing_factor;
732+
if (std::find(lambda_vec.begin(), lambda_vec.end(), new_lambda) == lambda_vec.end())
733+
{
734+
lambda_vec.push_back(new_lambda);
735+
extended = true;
736+
file_manager.rec_ofstream() << "*** Extending lambda_vec: added smaller lambda " << new_lambda << std::endl;
737+
}
738+
}
739+
std::sort(lambda_vec.begin(), lambda_vec.end());
740+
pest_scenario.get_pestpp_options_ptr()->set_base_lambda_vec(lambda_vec);
702741
return best_upgrade_run;
703742
}
704743

src/libs/pestpp_common/SVDSolver.cpp

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,11 +1081,6 @@ ModelRun SVDSolver::iteration_upgrd(RunManagerAbstract &run_manager, Termination
10811081
auto iter = std::unique(lambda_vec.begin(), lambda_vec.end());
10821082
lambda_vec.resize(std::distance(lambda_vec.begin(), iter));
10831083

1084-
file_manager.rec_ofstream() << "DEBUG: lambda list at start of new iteration = ";
1085-
for (auto val : pest_scenario.get_pestpp_options().get_base_lambda_vec())
1086-
file_manager.rec_ofstream() << val << " ";
1087-
file_manager.rec_ofstream() << std::endl;
1088-
10891084
int i_update_vec = 0;
10901085
stringstream message;
10911086
stringstream prf_message;
@@ -1387,10 +1382,6 @@ ModelRun SVDSolver::iteration_upgrd(RunManagerAbstract &run_manager, Termination
13871382
std::sort(lambda_vec.begin(), lambda_vec.end());
13881383
pest_scenario.get_pestpp_options_ptr()->set_base_lambda_vec(lambda_vec);
13891384

1390-
file_manager.rec_ofstream() << "DEBUG: lambda list after extend = ";
1391-
for (auto val : pest_scenario.get_pestpp_options().get_base_lambda_vec())
1392-
file_manager.rec_ofstream() << val << " ";
1393-
file_manager.rec_ofstream() << std::endl;
13941385
return best_upgrade_run;
13951386
}
13961387

0 commit comments

Comments
 (0)