Quandary
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | List of all members
Config Class Reference

Configuration class containing all validated settings. More...

#include <config.hpp>

Public Member Functions

 Config (const MPILogger &logger, const toml::table &table)
 
 Config (const MPILogger &logger, const ParsedConfigData &settings)
 
 ~Config ()=default
 
void printConfig (std::stringstream &log) const
 
const std::vector< size_t > & getNLevels () const
 
size_t getNLevels (size_t i_osc) const
 
size_t getNumOsc () const
 
const std::vector< size_t > & getNEssential () const
 
size_t getNEssential (size_t i_osc) const
 
size_t getNTime () const
 
double getDt () const
 
double getTotalTime () const
 
const std::vector< double > & getTransitionFrequency () const
 
const std::vector< double > & getSelfKerr () const
 
const std::vector< double > & getCrossKerrCoupling () const
 
const std::vector< double > & getDipoleCoupling () const
 
const std::vector< double > & getRotationFrequency () const
 
DecoherenceType getDecoherenceType () const
 
const std::vector< double > & getDecayTime () const
 
const std::vector< double > & getDephaseTime () const
 
size_t getNInitialConditions () const
 
const InitialConditionSettingsgetInitialCondition () const
 
const std::optional< std::string > & getHamiltonianFileHsys () const
 
const std::optional< std::string > & getHamiltonianFileHc () const
 
const ControlParameterizationSettingsgetControlParameterizations (size_t i_osc) const
 
bool getControlZeroBoundaryCondition () const
 
const ControlInitializationSettingsgetControlInitializations (size_t i_osc) const
 
double getControlAmplitudeBound (size_t i_osc) const
 
const std::vector< double > & getCarrierFrequencies (size_t i_osc) const
 
const OptimTargetSettingsgetOptimTarget () const
 
ObjectiveType getOptimObjective () const
 
const std::vector< double > & getOptimWeights () const
 
double getOptimTolGradAbs () const
 
double getOptimTolGradRel () const
 
double getOptimTolFinalCost () const
 
double getOptimTolInfidelity () const
 
size_t getOptimMaxiter () const
 
double getOptimTikhonovCoeff () const
 
bool getOptimTikhonovUseX0 () const
 
double getOptimPenaltyLeakage () const
 
double getOptimPenaltyWeightedCost () const
 
double getOptimPenaltyWeightedCostWidth () const
 
double getOptimPenaltyDpdm () const
 
double getOptimPenaltyEnergy () const
 
double getOptimPenaltyVariation () const
 
const std::string & getOutputDirectory () const
 
const std::vector< OutputType > & getOutputObservables () const
 
size_t getOutputTimestepStride () const
 
size_t getOutputOptimizationStride () const
 
RunType getRuntype () const
 
bool getUseMatFree () const
 
LinearSolverType getLinearSolverType () const
 
size_t getLinearSolverMaxiter () const
 
TimeStepperType getTimestepperType () const
 
int getRandSeed () const
 

Static Public Member Functions

static Config fromFile (const std::string &filename, const MPILogger &logger)
 
static Config fromToml (const std::string &toml_filename, const MPILogger &logger)
 
static Config fromTomlString (const std::string &toml_content, const MPILogger &logger)
 
static Config fromCfg (const std::string &cfg_filename, const MPILogger &logger)
 
static Config fromCfgString (const std::string &cfg_content, const MPILogger &logger)
 

Detailed Description

Configuration class containing all validated settings.

Contains validated, typed configuration parameters. All fields have been validated with defaults set. Handles parsing from TOML configuration files and deprecated CFG format, as well as printing log of used configuration. This class is immutable after construction.

Note
Adding a new toml configuration option:

1) Add new member variable to the Config class below

2) Add parsing logic in constructor Config::Config(toml::table) in src/config.cpp. Either access directly from toml table, or use chains of validators for type-safe extraction and validation. For example:

Parsing simple scalar fields (T foo):

Parsing vectors (std::vector<T> foo):

Available validation chain methods can found in include/config_validators.hpp, such as: .positive(), .greaterThan(val), .lessThan(val), .minLength(len), .hasLength(len), etc.

3) Add a getter method to the Config class below (T getFoo() const {return foo};)

4) Add printing logic in Config::printConfig() in src/config.cpp

Constructor & Destructor Documentation

◆ Config() [1/2]

Config::Config ( const MPILogger logger,
const toml::table &  table 
)

◆ Config() [2/2]

Config::Config ( const MPILogger logger,
const ParsedConfigData settings 
)

◆ ~Config()

Config::~Config ( )
default

Member Function Documentation

◆ fromCfg()

Config Config::fromCfg ( const std::string &  cfg_filename,
const MPILogger logger 
)
static

◆ fromCfgString()

Config Config::fromCfgString ( const std::string &  cfg_content,
const MPILogger logger 
)
static

◆ fromFile()

Config Config::fromFile ( const std::string &  filename,
const MPILogger logger 
)
static

◆ fromToml()

Config Config::fromToml ( const std::string &  toml_filename,
const MPILogger logger 
)
static

◆ fromTomlString()

Config Config::fromTomlString ( const std::string &  toml_content,
const MPILogger logger 
)
static

◆ getCarrierFrequencies()

const std::vector< double > & Config::getCarrierFrequencies ( size_t  i_osc) const
inline

◆ getControlAmplitudeBound()

double Config::getControlAmplitudeBound ( size_t  i_osc) const
inline

◆ getControlInitializations()

const ControlInitializationSettings & Config::getControlInitializations ( size_t  i_osc) const
inline

◆ getControlParameterizations()

const ControlParameterizationSettings & Config::getControlParameterizations ( size_t  i_osc) const
inline

◆ getControlZeroBoundaryCondition()

bool Config::getControlZeroBoundaryCondition ( ) const
inline

◆ getCrossKerrCoupling()

const std::vector< double > & Config::getCrossKerrCoupling ( ) const
inline

◆ getDecayTime()

const std::vector< double > & Config::getDecayTime ( ) const
inline

◆ getDecoherenceType()

DecoherenceType Config::getDecoherenceType ( ) const
inline

◆ getDephaseTime()

const std::vector< double > & Config::getDephaseTime ( ) const
inline

◆ getDipoleCoupling()

const std::vector< double > & Config::getDipoleCoupling ( ) const
inline

◆ getDt()

double Config::getDt ( ) const
inline

◆ getHamiltonianFileHc()

const std::optional< std::string > & Config::getHamiltonianFileHc ( ) const
inline

◆ getHamiltonianFileHsys()

const std::optional< std::string > & Config::getHamiltonianFileHsys ( ) const
inline

◆ getInitialCondition()

const InitialConditionSettings & Config::getInitialCondition ( ) const
inline

◆ getLinearSolverMaxiter()

size_t Config::getLinearSolverMaxiter ( ) const
inline

◆ getLinearSolverType()

LinearSolverType Config::getLinearSolverType ( ) const
inline

◆ getNEssential() [1/2]

const std::vector< size_t > & Config::getNEssential ( ) const
inline

◆ getNEssential() [2/2]

size_t Config::getNEssential ( size_t  i_osc) const
inline

◆ getNInitialConditions()

size_t Config::getNInitialConditions ( ) const
inline

◆ getNLevels() [1/2]

const std::vector< size_t > & Config::getNLevels ( ) const
inline

◆ getNLevels() [2/2]

size_t Config::getNLevels ( size_t  i_osc) const
inline

◆ getNTime()

size_t Config::getNTime ( ) const
inline

◆ getNumOsc()

size_t Config::getNumOsc ( ) const
inline

◆ getOptimMaxiter()

size_t Config::getOptimMaxiter ( ) const
inline

◆ getOptimObjective()

ObjectiveType Config::getOptimObjective ( ) const
inline

◆ getOptimPenaltyDpdm()

double Config::getOptimPenaltyDpdm ( ) const
inline

◆ getOptimPenaltyEnergy()

double Config::getOptimPenaltyEnergy ( ) const
inline

◆ getOptimPenaltyLeakage()

double Config::getOptimPenaltyLeakage ( ) const
inline

◆ getOptimPenaltyVariation()

double Config::getOptimPenaltyVariation ( ) const
inline

◆ getOptimPenaltyWeightedCost()

double Config::getOptimPenaltyWeightedCost ( ) const
inline

◆ getOptimPenaltyWeightedCostWidth()

double Config::getOptimPenaltyWeightedCostWidth ( ) const
inline

◆ getOptimTarget()

const OptimTargetSettings & Config::getOptimTarget ( ) const
inline

◆ getOptimTikhonovCoeff()

double Config::getOptimTikhonovCoeff ( ) const
inline

◆ getOptimTikhonovUseX0()

bool Config::getOptimTikhonovUseX0 ( ) const
inline

◆ getOptimTolFinalCost()

double Config::getOptimTolFinalCost ( ) const
inline

◆ getOptimTolGradAbs()

double Config::getOptimTolGradAbs ( ) const
inline

◆ getOptimTolGradRel()

double Config::getOptimTolGradRel ( ) const
inline

◆ getOptimTolInfidelity()

double Config::getOptimTolInfidelity ( ) const
inline

◆ getOptimWeights()

const std::vector< double > & Config::getOptimWeights ( ) const
inline

◆ getOutputDirectory()

const std::string & Config::getOutputDirectory ( ) const
inline

◆ getOutputObservables()

const std::vector< OutputType > & Config::getOutputObservables ( ) const
inline

◆ getOutputOptimizationStride()

size_t Config::getOutputOptimizationStride ( ) const
inline

◆ getOutputTimestepStride()

size_t Config::getOutputTimestepStride ( ) const
inline

◆ getRandSeed()

int Config::getRandSeed ( ) const
inline

◆ getRotationFrequency()

const std::vector< double > & Config::getRotationFrequency ( ) const
inline

◆ getRuntype()

RunType Config::getRuntype ( ) const
inline

◆ getSelfKerr()

const std::vector< double > & Config::getSelfKerr ( ) const
inline

◆ getTimestepperType()

TimeStepperType Config::getTimestepperType ( ) const
inline

◆ getTotalTime()

double Config::getTotalTime ( ) const
inline

◆ getTransitionFrequency()

const std::vector< double > & Config::getTransitionFrequency ( ) const
inline

◆ getUseMatFree()

bool Config::getUseMatFree ( ) const
inline

◆ printConfig()

void Config::printConfig ( std::stringstream &  log) const

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