Writes the results from the run to file.
323 {
324 std::string resultsFilename("results.dat");
326
327 std::ofstream out(resultsFilename, std::ios::binary);
328 if (out) {
329 out << std::format("{} termination_reason\n", status);
330 out << std::format("{} termination_reason_text\n",
332 out << std::format(
"{} random_seed\n",
params.main_options.randomSeed);
333 out << std::format(
334 "{} potential_type\n",
335 magic_enum::enum_name<PotType>(
params.potential_options.potential));
336 out << std::format("{} total_force_calls\n",
338 out << std::format(
"{} force_calls_minimization\n",
fCallsMin);
339 out << std::format(
"{} force_calls_saddle\n",
fCallsSaddle);
340 out << std::format("{:.12e} potential_energy_saddle\n",
341 saddle->getPotentialEnergy());
342 out << std::format("{:.12e} potential_energy_reactant\n",
343 min1->getPotentialEnergy());
344 out << std::format("{:.12e} potential_energy_product\n",
345 min2->getPotentialEnergy());
346 out << std::format("{:.12e} barrier_reactant_to_product\n",
348 out << std::format("{:.12e} barrier_product_to_reactant\n",
350 if (
params.saddle_search_options.method ==
"min_mode") {
351 out << std::format("{:.12e} displacement_saddle_distance\n",
353 } else {
354 out << std::format("{:.12e} displacement_saddle_distance\n", 0.0);
355 }
356 if (
params.saddle_search_options.method ==
"dynamics") {
357 auto ds = dynamic_cast<DynamicsSaddleSearch &>(*saddleSearch);
358 out << std::format("{:.12e} simulation_time\n",
359 ds.time *
params.constants.timeUnit);
360 out << std::format("{:.12e} md_temperature\n",
361 params.saddle_search_options.dynamics.temperature);
362 }
364 out << std::format("{:.12e} prefactor_reactant_to_product\n",
366 out << std::format("{:.12e} prefactor_product_to_reactant\n",
368 }
369
370 std::string reactantFilename("reactant.con");
373 QUILL_LOG_ERROR(
log,
"Failed to write {}", reactantFilename);
374 }
375
376 std::string modeFilename("mode.dat");
379
380 std::string saddleFilename("saddle.con");
383 QUILL_LOG_ERROR(
log,
"Failed to write {}", saddleFilename);
384 }
385
386 std::string productFilename("product.con");
389 QUILL_LOG_ERROR(
log,
"Failed to write {}", productFilename);
390 }
391}
void saveMode(FILE *modeFile, std::shared_ptr< Matter > matter, AtomMatrix mode)
Write a mode; constrained axes are emitted as 0.