Page MenuHomec4science

equilibrium_curve.cpp
No OneTemporary

File Metadata

Created
Thu, Jul 4, 02:18

equilibrium_curve.cpp

#include "equilibrium_curve.hpp"
#include "adimensional_system_solver.hpp"
#include "utils/log.hpp"
#define INITIALIZE true
#define DONT_INITIALIZE false
namespace specmicp {
void EquilibriumCurve::solve_first_problem()
{
AdimensionalSystemSolver solver(m_data, m_constraints, m_solver_options);
m_current_perf = solver.solve(m_solution_vector, INITIALIZE);
if (m_current_perf.return_code <= micpsolver::MiCPSolverReturnCode::NotConvergedYet)
{
error_handling("Failed to solve first problem, return code : "
+ std::to_string((int) m_current_perf.return_code)
+ ".");
}
m_current_solution = solver.get_raw_solution(m_solution_vector);
}
void EquilibriumCurve::solve_problem()
{
AdimensionalSystemSolver solver(m_data, m_constraints, m_current_solution, m_solver_options);
m_current_perf = solver.solve(m_solution_vector, DONT_INITIALIZE);
if (m_current_perf.return_code <= micpsolver::MiCPSolverReturnCode::NotConvergedYet)
{
error_handling("Failed to solve problem, return code : "
+ std::to_string((int) m_current_perf.return_code)
+ ".");
}
m_current_solution = solver.get_raw_solution(m_solution_vector);
}
void EquilibriumCurve::error_handling(std::string msg) const
{
ERROR << msg;
throw std::runtime_error(msg);
}
void EquilibriumCurve::set_problem()
{
update_problem();
}
void EquilibriumCurve::post_processing()
{
output();
}
void EquilibriumCurve::run_step()
{
set_problem();
solve_problem();
post_processing();
}
} // end namespace specmicp
#undef INITIALIZE
#undef DONT_INITIALIZE

Event Timeline