diff --git a/benchmarks/mf6_freyberg/readme.txt b/benchmarks/mf6_freyberg/readme.txt new file mode 100644 index 000000000..5eac3096c --- /dev/null +++ b/benchmarks/mf6_freyberg/readme.txt @@ -0,0 +1,5 @@ +23 dec 2020 + +The template directory contains all the modflow6 and pest++ v5 files needed to implement the workflow demonstrated in "Approaches to Highly Parameterized Inversion: PEST++ Version 5, a Software Suite for Parameter Estimation, Uncertainty Analysis, Management Optimization and Sensitivity Analysis" report by White and others (2020). The control files are named for the tools that were applied (e.g. "freyberg6_run_ies.pst", "freyberg6_run_opt.pst", etc). To implement the "basic" and "advanced" runs for pestpp-glm and pestpp-ies, users need to change the optional pest++ arguments added to the respective control files to be consistent with the options listed in the report. + +Please report any issues via GitHub issues. \ No newline at end of file diff --git a/documentation/pestpp5.0.8.docx b/documentation/pestpp_users_guide_v5.0.9.docx similarity index 66% rename from documentation/pestpp5.0.8.docx rename to documentation/pestpp_users_guide_v5.0.9.docx index 4a07a016e..79bc5a104 100644 Binary files a/documentation/pestpp5.0.8.docx and b/documentation/pestpp_users_guide_v5.0.9.docx differ diff --git a/src/libs/common/config_os.h b/src/libs/common/config_os.h index 1de43d268..0cad5a3ca 100644 --- a/src/libs/common/config_os.h +++ b/src/libs/common/config_os.h @@ -2,7 +2,7 @@ #define CONFIG_OS_H_ -#define PESTPP_VERSION "5.0.8"; +#define PESTPP_VERSION "5.0.9"; #if defined(_WIN32) || defined(_WIN64) #define OS_WIN diff --git a/src/libs/pestpp_common/Ensemble.cpp b/src/libs/pestpp_common/Ensemble.cpp index c0cccccf7..dfc99dc01 100644 --- a/src/libs/pestpp_common/Ensemble.cpp +++ b/src/libs/pestpp_common/Ensemble.cpp @@ -222,7 +222,10 @@ void Ensemble::draw(int num_reals, Covariance cov, Transformable &tran, const ve group_keys.push_back(gi.first); DrawThread worker(plog, cov, &draws, group_keys, grouper); int num_threads = pest_scenario_ptr->get_pestpp_options().get_ies_num_threads(); - if ((num_threads <= 0) || (group_keys.size() == 1)) + //if ((num_threads <= 0) || (group_keys.size() == 1)) + //jwhite 23 dec 2020 - something is up with the multithreaded draw (and its a really mem pig) + //so turning it off + if (true) { worker.work(0, num_reals, level, idx_map, std_map); } diff --git a/src/libs/run_managers/yamr/PantherAgent.cpp b/src/libs/run_managers/yamr/PantherAgent.cpp index e6050dbcc..131f10d3f 100644 --- a/src/libs/run_managers/yamr/PantherAgent.cpp +++ b/src/libs/run_managers/yamr/PantherAgent.cpp @@ -126,6 +126,16 @@ void PANTHERAgent::process_ctl_file(const string &ctl_filename) throw PestError("PANTHER agent unable to open pest control file: " + ctl_filename); } pest_scenario.process_ctl_file(fin,ctl_filename,frec); + if ((pest_scenario.get_ctl_parameters().size() > 250000) || (pest_scenario.get_ctl_observations().size() > 250000)) + { + set pargs = pest_scenario.get_pestpp_options().get_passed_args(); + if (pargs.find("CHECK_TPLINS") == pargs.end()) + { + pest_scenario.get_pestpp_options_ptr()->set_check_tplins(false); + cout << "large problem detected, resetting 'check_tplins' to false" << endl; + } + } + report("checking model interface files", true); pest_scenario.check_io(frec); poll_interval_seconds = pest_scenario.get_pestpp_options().get_worker_poll_interval(); @@ -134,9 +144,6 @@ void PANTHERAgent::process_ctl_file(const string &ctl_filename) pest_scenario.get_model_exec_info().insfile_vec, pest_scenario.get_model_exec_info().outfile_vec, pest_scenario.get_model_exec_info().comline_vec); - mi.check_io_access(); - if (pest_scenario.get_pestpp_options().get_check_tplins()) - mi.check_tplins(pest_scenario.get_ctl_ordered_par_names(), pest_scenario.get_ctl_ordered_obs_names()); mi.set_additional_ins_delimiters(pest_scenario.get_pestpp_options().get_additional_ins_delimiters()); mi.set_fill_tpl_zeros(pest_scenario.get_pestpp_options().get_fill_tpl_zeros()); mi.set_num_threads(pest_scenario.get_pestpp_options().get_num_tpl_ins_threads()); diff --git a/src/libs/run_managers/yamr/RunManagerPanther.cpp b/src/libs/run_managers/yamr/RunManagerPanther.cpp index d5dc5320c..102261ea1 100644 --- a/src/libs/run_managers/yamr/RunManagerPanther.cpp +++ b/src/libs/run_managers/yamr/RunManagerPanther.cpp @@ -442,7 +442,7 @@ RunManagerAbstract::RUN_UNTIL_COND RunManagerPanther::run_until(RUN_UNTIL_COND c // Pause idle pinging thread pause_idle(); - + stringstream ss; model_runs_done = 0; model_runs_failed = 0; model_runs_timed_out = 0; @@ -454,7 +454,7 @@ RunManagerAbstract::RUN_UNTIL_COND RunManagerPanther::run_until(RUN_UNTIL_COND c cout << " starting at " << pest_utils::get_time_string() << endl; if (agent_info_set.size() == 0) // first entry is the listener, slave apears after this { - cout << endl << " waiting for agents to appear..." << endl << endl; + cout << endl << " waiting for agents to appear..." << endl << endl; //f_rmr << endl << " waiting for agents to appear..." << endl << endl; report("waiting for agents to appear", false); } @@ -462,6 +462,11 @@ RunManagerAbstract::RUN_UNTIL_COND RunManagerPanther::run_until(RUN_UNTIL_COND c { for (auto &si : agent_info_set) si.reset_runtime(); + ss.str(""); + ss << endl << " " << agent_info_set.size() << " agents ready"; + report(ss.str(), false); + cout << ss.str() << endl << endl; + } cout << endl; f_rmr << endl;