18 #if defined(_HAVE_DAKOTA_) && _DAKOTA_MAJOR_ >= 6
21 char* dakota_input_file=NULL;
22 char* dakota_output_file = NULL;
23 char* dakota_error_file = NULL;
26 Dakota::mpi_debug_hold();
32 dakota_input_file=xNew<char>((strlen(argv[2])+strlen(argv[3])+strlen(
".qmu.in")+2));
33 sprintf(dakota_input_file,
"%s/%s%s",argv[2],argv[3],
".qmu.in");
35 dakota_output_file=xNew<char>((strlen(argv[2])+strlen(argv[3])+strlen(
".qmu.out")+2));
36 sprintf(dakota_output_file,
"%s/%s%s",argv[2],argv[3],
".qmu.out");
38 dakota_error_file=xNew<char>((strlen(argv[2])+strlen(argv[3])+strlen(
".qmu.err")+2));
39 sprintf(dakota_error_file,
"%s/%s%s",argv[2],argv[3],
".qmu.err");
42 Dakota::ProgramOptions opts;
43 opts.input_file(dakota_input_file);
44 opts.output_file(dakota_output_file);
45 opts.error_file(dakota_error_file);
48 Dakota::LibraryEnvironment env(opts);
51 Dakota::ModelList filt_models = env.filtered_model_list(
"single",
"direct",
"matlab");
52 if (filt_models.empty()) {
53 Cerr <<
"Error: no parallel interface plugin performed. Check compatibility "
54 <<
"between parallel\n configuration and selected analysis_driver."
56 Dakota::abort_handler(-1);
59 Dakota::ProblemDescDB& problem_db = env.problem_description_db();
60 Dakota::ModelLIter ml_iter;
61 size_t model_index = problem_db.get_db_model_node();
62 for (ml_iter = filt_models.begin(); ml_iter != filt_models.end(); ++ml_iter) {
64 problem_db.set_db_model_nodes(ml_iter->model_id());
66 Dakota::Interface& model_interface = ml_iter->derived_interface();
74 const MPI_Comm& analysis_comm = ml_iter->analysis_comm();
77 model_interface.assign_rep(
new
78 SIM::IssmParallelDirectApplicInterface(problem_db, analysis_comm, argc, argv),
false);
80 problem_db.set_db_model_nodes(model_index);
85 xDelete<char>(dakota_input_file);
86 xDelete<char>(dakota_output_file);
87 xDelete<char>(dakota_error_file);
92 Cout <<
"ISSM Dakota executable was compiled without support of Dakota! Will just return now!" <<
"\n";