|
PolyFEM
|
Main class containing the PolyFEM adjoint solver and its optimization data. More...
#include <OptState.hpp>
Public Member Functions | |
| ~OptState () | |
| OptState () | |
| Constructor. | |
| void | init (const json &args, const bool strict_validation) |
| initialize the polyfem solver with a json settings | |
| int | run (json args, const bool strict_validation) |
| Run optimization, including remeshing restarts when the selected trigger requests them. | |
| void | init_logger (const std::string &log_file, const spdlog::level::level_enum log_level, const spdlog::level::level_enum file_log_level, const bool is_quiet) |
| initializing the logger | |
| void | init_logger (std::ostream &os, const spdlog::level::level_enum log_level) |
| initializing the logger writes to an output stream | |
| void | set_log_level (const spdlog::level::level_enum log_level) |
| change log level | |
| void | create_varforms (const int max_threads=-1) |
| Create the optimization variational formulations. | |
| void | init_variables () |
| init variables | |
| void | create_problem () |
| void | initial_guess (Eigen::VectorXd &x) |
| double | eval (Eigen::VectorXd &x) const |
| polysolve::nonlinear::Status | solve (Eigen::VectorXd &x) |
Public Attributes | |
| json | args |
| main input arguments containing all defaults | |
| std::vector< std::shared_ptr< varform::DifferentiableVarForm > > | varforms |
| Variational formulations used by the optimization. | |
| std::vector< json > | state_args |
| std::vector< std::shared_ptr< DiffCache > > | diff_caches |
| std::vector< int > | variable_sizes |
| variables | |
| int | ndof |
| solver::VariableToSimulationGroup | variable_to_simulations |
| std::unique_ptr< solver::AdjointNLProblem > | nl_problem |
| std::string | output_dir |
| Directory for output files. | |
Private Member Functions | |
| std::string | root_path () const |
| void | check_unsupported () const |
| Check and throw if any forward simulation varform::DifferentiableVarForm is not supported. | |
| void | init_logger (const std::vector< spdlog::sink_ptr > &sinks, const spdlog::level::level_enum log_level) |
| initializing the logger meant for internal usage | |
Private Attributes | |
| spdlog::sink_ptr | console_sink_ = nullptr |
| logger sink to stdout | |
| spdlog::sink_ptr | file_sink_ = nullptr |
| bool | remeshing_requested_ = false |
| bool | strict_validation_ = true |
Main class containing the PolyFEM adjoint solver and its optimization data.
Definition at line 28 of file OptState.hpp.
| polyfem::OptState::~OptState | ( | ) |
Definition at line 269 of file OptState.cpp.
| polyfem::OptState::OptState | ( | ) |
Constructor.
Definition at line 273 of file OptState.cpp.
References polyfem::utils::GeogramUtils::initialize(), and polyfem::utils::GeogramUtils::instance().
|
private |
Check and throw if any forward simulation varform::DifferentiableVarForm is not supported.
Definition at line 479 of file OptState.cpp.
References polyfem::varform::FESpace::geometry_basis_list(), polyfem::varform::DifferentiableVarForm::get_args(), polyfem::varform::DifferentiableVarForm::get_problem(), polyfem::varform::DifferentiableVarForm::is_contact_enabled(), polyfem::varform::DifferentiableVarForm::is_problem_linear(), polyfem::assembler::Problem::is_time_dependent(), polyfem::log_and_throw_adjoint_error(), polyfem::varform::DifferentiableVarForm::name(), polyfem::varform::DifferentiableVarForm::primary_space(), polyfem::varform::DifferentiableVarForm::solve_data(), and varforms.
Referenced by create_varforms().
| void polyfem::OptState::create_problem | ( | ) |
Definition at line 602 of file OptState.cpp.
References polyfem::adjoint_logger(), args, polyfem::from_json::build_form(), diff_caches, nl_problem, remeshing_requested_, varforms, and variable_to_simulations.
Referenced by run().
| void polyfem::OptState::create_varforms | ( | const int | max_threads = -1 | ) |
Create the optimization variational formulations.
Definition at line 451 of file OptState.cpp.
References polyfem::adjoint_logger(), args, polyfem::from_json::build_differentiable_varform(), check_unsupported(), diff_caches, polyfem::utils::GeogramUtils::instance(), root_path(), polyfem::utils::GeogramUtils::set_logger(), state_args, and varforms.
Referenced by run().
| double polyfem::OptState::eval | ( | Eigen::VectorXd & | x | ) | const |
Definition at line 657 of file OptState.cpp.
References nl_problem, and x.
Referenced by run().
| void polyfem::OptState::init | ( | const json & | args, |
| const bool | strict_validation | ||
| ) |
initialize the polyfem solver with a json settings
| [in] | args | input arguments |
| [in] | strict_validation | strict validation of input |
Definition at line 419 of file OptState.cpp.
References polyfem::adjoint_logger(), polyfem::solver::AdjointOptUtils::apply_opt_json_spec(), args, polyfem::utils::NThread::get(), init_logger(), output_dir, polyfem::utils::resolve_path(), root_path(), polyfem::utils::NThread::set_num_threads(), and strict_validation_.
Referenced by run().
| void polyfem::OptState::init_logger | ( | const std::string & | log_file, |
| const spdlog::level::level_enum | log_level, | ||
| const spdlog::level::level_enum | file_log_level, | ||
| const bool | is_quiet | ||
| ) |
initializing the logger
| [in] | log_file | is to write it to a file (use log_file="") to output to stdout |
| [in] | log_level | 0 all message, 6 no message. 2 is info, 1 is debug |
| [in] | file_log_level | 0 all message, 6 no message. 2 is info, 1 is debug |
| [in] | is_quit | quiets the log |
Definition at line 368 of file OptState.cpp.
References console_sink_, file_sink_, and init_logger().
Referenced by init(), init_logger(), and init_logger().
|
private |
initializing the logger meant for internal usage
Definition at line 401 of file OptState.cpp.
References polyfem::adjoint_logger(), polyfem::set_adjoint_logger(), and set_log_level().
| void polyfem::OptState::init_logger | ( | std::ostream & | os, |
| const spdlog::level::level_enum | log_level | ||
| ) |
initializing the logger writes to an output stream
| [in] | os | output stream |
| [in] | log_level | 0 all message, 6 no message. 2 is info, 1 is debug |
Definition at line 394 of file OptState.cpp.
References init_logger().
| void polyfem::OptState::init_variables | ( | ) |
init variables
Definition at line 542 of file OptState.cpp.
References args, polyfem::from_json::build_variable_to_simulation_group(), polyfem::solver::AdjointOptUtils::compute_variable_size(), polyfem::solver::VariableToSimulationGroup::data, diff_caches, polyfem::utils::json_as_array(), polyfem::log_and_throw_adjoint_error(), ndof, varforms, variable_sizes, and variable_to_simulations.
Referenced by run().
| void polyfem::OptState::initial_guess | ( | Eigen::VectorXd & | x | ) |
Definition at line 650 of file OptState.cpp.
References args, polyfem::solver::AdjointOptUtils::inverse_evaluation(), ndof, polyfem::solver::VariableToSimulationGroup::update(), variable_sizes, variable_to_simulations, and x.
Referenced by run().
|
inlineprivate |
Definition at line 102 of file OptState.hpp.
References args, and polyfem::utils::is_param_valid().
Referenced by create_varforms(), and init().
| int polyfem::OptState::run | ( | json | args, |
| const bool | strict_validation | ||
| ) |
Run optimization, including remeshing restarts when the selected trigger requests them.
Definition at line 278 of file OptState.cpp.
References polyfem::solver::AdjointOptUtils::apply_opt_json_spec(), args, create_problem(), create_varforms(), eval(), init(), init_variables(), initial_guess(), polyfem::logger(), remeshing_requested_, polyfem::utils::resolve_path(), solve(), state_args, and x.
| void polyfem::OptState::set_log_level | ( | const spdlog::level::level_enum | log_level | ) |
change log level
| [in] | log_level | 0 all message, 6 no message. 2 is info, 1 is debug |
Definition at line 412 of file OptState.cpp.
References polyfem::adjoint_logger(), and console_sink_.
Referenced by init_logger().
| polysolve::nonlinear::Status polyfem::OptState::solve | ( | Eigen::VectorXd & | x | ) |
Definition at line 663 of file OptState.cpp.
References args, polyfem::solver::AdjointOptUtils::make_nl_solver(), nl_problem, strict_validation_, and x.
Referenced by run().
| json polyfem::OptState::args |
main input arguments containing all defaults
Definition at line 48 of file OptState.hpp.
Referenced by create_problem(), create_varforms(), init(), init_variables(), initial_guess(), root_path(), run(), and solve().
|
private |
logger sink to stdout
Definition at line 116 of file OptState.hpp.
Referenced by init_logger(), and set_log_level().
| std::vector<std::shared_ptr<DiffCache> > polyfem::OptState::diff_caches |
Definition at line 91 of file OptState.hpp.
Referenced by create_problem(), create_varforms(), and init_variables().
|
private |
Definition at line 117 of file OptState.hpp.
Referenced by init_logger().
| int polyfem::OptState::ndof |
Definition at line 95 of file OptState.hpp.
Referenced by init_variables(), and initial_guess().
| std::unique_ptr<solver::AdjointNLProblem> polyfem::OptState::nl_problem |
Definition at line 99 of file OptState.hpp.
Referenced by create_problem(), eval(), and solve().
| std::string polyfem::OptState::output_dir |
|
private |
Definition at line 119 of file OptState.hpp.
Referenced by create_problem(), and run().
| std::vector<json> polyfem::OptState::state_args |
Definition at line 90 of file OptState.hpp.
Referenced by create_varforms(), and run().
|
private |
Definition at line 120 of file OptState.hpp.
| std::vector<std::shared_ptr<varform::DifferentiableVarForm> > polyfem::OptState::varforms |
Variational formulations used by the optimization.
Definition at line 89 of file OptState.hpp.
Referenced by check_unsupported(), create_problem(), create_varforms(), and init_variables().
| std::vector<int> polyfem::OptState::variable_sizes |
variables
Definition at line 94 of file OptState.hpp.
Referenced by init_variables(), and initial_guess().
| solver::VariableToSimulationGroup polyfem::OptState::variable_to_simulations |
Definition at line 97 of file OptState.hpp.
Referenced by create_problem(), init_variables(), and initial_guess().