PolyFEM
Loading...
Searching...
No Matches
polyfem::OptState Class Reference

main class that contains the polyfem adjoint solver and all its state More...

#include <OptState.hpp>

Collaboration diagram for polyfem::OptState:
[legend]

Public Member Functions

 ~OptState ()
 
 OptState ()
 Constructor.
 
void init (const json &args, const bool strict_validation)
 initialize the polyfem solver with a json settings
 
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_states (const int max_threads=-1)
 create the opt states
 
void init_variables ()
 init variables
 
void create_problem ()
 
void initial_guess (Eigen::VectorXd &x)
 
double eval (Eigen::VectorXd &x) const
 
void solve (Eigen::VectorXd &x)
 

Public Attributes

json args
 main input arguments containing all defaults
 
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 State 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
 
std::vector< std::shared_ptr< State > > states
 State used in the opt.
 
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::AdjointNLProblemnl_problem
 

Detailed Description

main class that contains the polyfem adjoint solver and all its state

Definition at line 27 of file OptState.hpp.

Constructor & Destructor Documentation

◆ ~OptState()

polyfem::OptState::~OptState ( )

Definition at line 50 of file OptState.cpp.

◆ OptState()

polyfem::OptState::OptState ( )

Constructor.

Definition at line 54 of file OptState.cpp.

References polyfem::utils::GeogramUtils::initialize(), and polyfem::utils::GeogramUtils::instance().

Here is the call graph for this function:

Member Function Documentation

◆ check_unsupported()

void polyfem::OptState::check_unsupported ( ) const
private

Check and throw if any forward simulation State is not supported.

Definition at line 159 of file OptState.cpp.

References polyfem::State::args, polyfem::State::geom_bases(), polyfem::State::is_contact_enabled(), polyfem::State::is_problem_linear(), polyfem::log_and_throw_adjoint_error(), polyfem::State::problem, and states.

Referenced by create_states().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ create_problem()

void polyfem::OptState::create_problem ( )

Definition at line 232 of file OptState.cpp.

References args, polyfem::from_json::build_form(), diff_caches, nl_problem, states, and variable_to_simulations.

Here is the call graph for this function:

◆ create_states()

void polyfem::OptState::create_states ( const int  max_threads = -1)

create the opt states

Definition at line 141 of file OptState.cpp.

References polyfem::adjoint_logger(), args, polyfem::from_json::build_states(), check_unsupported(), diff_caches, polyfem::utils::GeogramUtils::instance(), root_path(), polyfem::utils::GeogramUtils::set_logger(), and states.

Here is the call graph for this function:

◆ eval()

double polyfem::OptState::eval ( Eigen::VectorXd &  x) const

Definition at line 255 of file OptState.cpp.

References nl_problem, and x.

◆ init()

void polyfem::OptState::init ( const json args,
const bool  strict_validation 
)

initialize the polyfem solver with a json settings

Parameters
[in]argsinput arguments
[in]strict_validationstrict validation of input

Definition at line 110 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(), and polyfem::utils::NThread::set_num_threads().

Here is the call graph for this function:

◆ init_logger() [1/3]

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

Parameters
[in]log_fileis to write it to a file (use log_file="") to output to stdout
[in]log_level0 all message, 6 no message. 2 is info, 1 is debug
[in]file_log_level0 all message, 6 no message. 2 is info, 1 is debug
[in]is_quitquiets the log

Definition at line 59 of file OptState.cpp.

References console_sink_, file_sink_, and init_logger().

Referenced by init(), init_logger(), and init_logger().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_logger() [2/3]

void polyfem::OptState::init_logger ( const std::vector< spdlog::sink_ptr > &  sinks,
const spdlog::level::level_enum  log_level 
)
private

initializing the logger meant for internal usage

Definition at line 92 of file OptState.cpp.

References polyfem::adjoint_logger(), polyfem::set_adjoint_logger(), and set_log_level().

Here is the call graph for this function:

◆ init_logger() [3/3]

void polyfem::OptState::init_logger ( std::ostream &  os,
const spdlog::level::level_enum  log_level 
)

initializing the logger writes to an output stream

Parameters
[in]osoutput stream
[in]log_level0 all message, 6 no message. 2 is info, 1 is debug

Definition at line 85 of file OptState.cpp.

References init_logger().

Here is the call graph for this function:

◆ init_variables()

void polyfem::OptState::init_variables ( )

init variables

Definition at line 216 of file OptState.cpp.

References args, polyfem::from_json::build_variable_to_simulation_group(), polyfem::solver::AdjointOptUtils::compute_variable_size(), diff_caches, ndof, states, variable_sizes, and variable_to_simulations.

Here is the call graph for this function:

◆ initial_guess()

void polyfem::OptState::initial_guess ( Eigen::VectorXd &  x)

Definition at line 248 of file OptState.cpp.

References args, polyfem::solver::AdjointOptUtils::inverse_evaluation(), ndof, polyfem::solver::VariableToSimulationGroup::update(), variable_sizes, variable_to_simulations, and x.

Here is the call graph for this function:

◆ root_path()

std::string polyfem::OptState::root_path ( ) const
inlineprivate

Definition at line 81 of file OptState.hpp.

References args, and polyfem::utils::is_param_valid().

Referenced by create_states(), and init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_log_level()

void polyfem::OptState::set_log_level ( const spdlog::level::level_enum  log_level)

change log level

Parameters
[in]log_level0 all message, 6 no message. 2 is info, 1 is debug

Definition at line 103 of file OptState.cpp.

References polyfem::adjoint_logger(), and console_sink_.

Referenced by init_logger().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ solve()

void polyfem::OptState::solve ( Eigen::VectorXd &  x)

Definition at line 261 of file OptState.cpp.

References args, polyfem::solver::AdjointOptUtils::make_nl_solver(), nl_problem, and x.

Here is the call graph for this function:

Member Data Documentation

◆ args

json polyfem::OptState::args

main input arguments containing all defaults

Definition at line 44 of file OptState.hpp.

Referenced by create_problem(), create_states(), init(), init_variables(), initial_guess(), root_path(), and solve().

◆ console_sink_

spdlog::sink_ptr polyfem::OptState::console_sink_ = nullptr
private

logger sink to stdout

Definition at line 95 of file OptState.hpp.

Referenced by init_logger(), and set_log_level().

◆ diff_caches

std::vector<std::shared_ptr<DiffCache> > polyfem::OptState::diff_caches
private

Definition at line 104 of file OptState.hpp.

Referenced by create_problem(), create_states(), and init_variables().

◆ file_sink_

spdlog::sink_ptr polyfem::OptState::file_sink_ = nullptr
private

Definition at line 96 of file OptState.hpp.

Referenced by init_logger().

◆ ndof

int polyfem::OptState::ndof
private

Definition at line 108 of file OptState.hpp.

Referenced by init_variables(), and initial_guess().

◆ nl_problem

std::unique_ptr<solver::AdjointNLProblem> polyfem::OptState::nl_problem
private

Definition at line 112 of file OptState.hpp.

Referenced by create_problem(), eval(), and solve().

◆ output_dir

std::string polyfem::OptState::output_dir

Directory for output files.

Definition at line 116 of file OptState.hpp.

Referenced by init().

◆ states

std::vector<std::shared_ptr<State> > polyfem::OptState::states
private

State used in the opt.

Definition at line 103 of file OptState.hpp.

Referenced by check_unsupported(), create_problem(), create_states(), and init_variables().

◆ variable_sizes

std::vector<int> polyfem::OptState::variable_sizes
private

variables

Definition at line 107 of file OptState.hpp.

Referenced by init_variables(), and initial_guess().

◆ variable_to_simulations

solver::VariableToSimulationGroup polyfem::OptState::variable_to_simulations
private

Definition at line 110 of file OptState.hpp.

Referenced by create_problem(), init_variables(), and initial_guess().


The documentation for this class was generated from the following files: