10#include <toml++/toml.hpp>
62 std::vector<size_t> nlevels;
63 std::vector<size_t> nessential;
67 std::vector<double> transition_frequency;
68 std::vector<double> selfkerr;
69 std::vector<double> crosskerr_coupling;
70 std::vector<double> dipole_coupling;
71 std::vector<double> rotation_frequency;
73 std::vector<double> decay_time;
74 std::vector<double> dephase_time;
75 size_t n_initial_conditions;
77 std::optional<std::string> hamiltonian_file_Hsys;
78 std::optional<std::string> hamiltonian_file_Hc;
81 bool control_zero_boundary_condition;
82 std::vector<ControlParameterizationSettings> control_parameterizations;
83 std::vector<ControlInitializationSettings> control_initializations;
84 std::vector<double> control_amplitude_bounds;
85 std::vector<std::vector<double>> carrier_frequencies;
88 std::vector<double> optim_weights;
89 double optim_tol_grad_abs;
90 double optim_tol_grad_rel;
91 double optim_tol_final_cost;
92 double optim_tol_infidelity;
94 double optim_tikhonov_coeff;
95 bool optim_tikhonov_use_x0;
96 double optim_penalty_leakage;
97 double optim_penalty_weightedcost;
98 double optim_penalty_weightedcost_width;
99 double optim_penalty_dpdm;
100 double optim_penalty_energy;
101 double optim_penalty_variation;
104 std::string output_directory;
105 std::vector<OutputType> output_observables;
106 size_t output_timestep_stride;
107 size_t output_optimization_stride;
111 size_t linearsolver_maxiter;
126 const std::vector<size_t>&
getNLevels()
const {
return nlevels; }
127 size_t getNLevels(
size_t i_osc)
const {
return nlevels[i_osc]; }
136 const std::vector<double>&
getSelfKerr()
const {
return selfkerr; }
151 return control_initializations[i_osc];
185 void validate()
const;
189 void setRandSeed(
int rand_seed_);
Configuration class containing all validated settings.
Definition config.hpp:56
bool getUseMatFree() const
Definition config.hpp:177
const std::vector< double > & getOptimWeights() const
Definition config.hpp:157
double getOptimTolGradRel() const
Definition config.hpp:159
const std::vector< double > & getDecayTime() const
Definition config.hpp:141
const std::vector< size_t > & getNEssential() const
Definition config.hpp:129
size_t getNInitialConditions() const
Definition config.hpp:143
const OptimTargetSettings & getOptimTarget() const
Definition config.hpp:155
bool getControlZeroBoundaryCondition() const
Definition config.hpp:149
const std::vector< size_t > & getNLevels() const
Definition config.hpp:126
const std::string & getOutputDirectory() const
Definition config.hpp:172
double getOptimPenaltyLeakage() const
Definition config.hpp:165
double getOptimPenaltyEnergy() const
Definition config.hpp:169
size_t getNTime() const
Definition config.hpp:131
const std::vector< OutputType > & getOutputObservables() const
Definition config.hpp:173
size_t getLinearSolverMaxiter() const
Definition config.hpp:179
size_t getOptimMaxiter() const
Definition config.hpp:162
const ControlParameterizationSettings & getControlParameterizations(size_t i_osc) const
Definition config.hpp:148
const std::vector< double > & getTransitionFrequency() const
Definition config.hpp:135
const std::vector< double > & getDephaseTime() const
Definition config.hpp:142
static Config fromString(const std::string &toml_content, const MPILogger &logger)
Definition config.cpp:335
double getOptimTikhonovCoeff() const
Definition config.hpp:163
double getOptimTolFinalCost() const
Definition config.hpp:160
double getOptimTolInfidelity() const
Definition config.hpp:161
double getTotalTime() const
Definition config.hpp:133
double getOptimTolGradAbs() const
Definition config.hpp:158
const std::vector< double > & getDipoleCoupling() const
Definition config.hpp:138
double getOptimPenaltyWeightedCost() const
Definition config.hpp:166
double getOptimPenaltyVariation() const
Definition config.hpp:170
const InitialConditionSettings & getInitialCondition() const
Definition config.hpp:144
const std::optional< std::string > & getHamiltonianFileHc() const
Definition config.hpp:146
size_t getOutputOptimizationStride() const
Definition config.hpp:175
ObjectiveType getOptimObjective() const
Definition config.hpp:156
double getControlAmplitudeBound(size_t i_osc) const
Definition config.hpp:153
size_t getOutputTimestepStride() const
Definition config.hpp:174
TimeStepperType getTimestepperType() const
Definition config.hpp:180
LinearSolverType getLinearSolverType() const
Definition config.hpp:178
const std::vector< double > & getCarrierFrequencies(size_t i_osc) const
Definition config.hpp:154
size_t getNumOsc() const
Definition config.hpp:128
void printConfig(std::stringstream &log) const
Definition config.cpp:583
size_t getNEssential(size_t i_osc) const
Definition config.hpp:130
const ControlInitializationSettings & getControlInitializations(size_t i_osc) const
Definition config.hpp:150
const std::optional< std::string > & getHamiltonianFileHsys() const
Definition config.hpp:145
const std::vector< double > & getSelfKerr() const
Definition config.hpp:136
bool getOptimTikhonovUseX0() const
Definition config.hpp:164
DecoherenceType getDecoherenceType() const
Definition config.hpp:140
const std::vector< double > & getCrossKerrCoupling() const
Definition config.hpp:137
const std::vector< double > & getRotationFrequency() const
Definition config.hpp:139
int getRandSeed() const
Definition config.hpp:181
RunType getRuntype() const
Definition config.hpp:176
double getDt() const
Definition config.hpp:132
size_t getNLevels(size_t i_osc) const
Definition config.hpp:127
double getOptimPenaltyWeightedCostWidth() const
Definition config.hpp:167
static Config fromFile(const std::string &filename, const MPILogger &logger)
Definition config.cpp:330
double getOptimPenaltyDpdm() const
Definition config.hpp:168
MPI-aware logger that handles rank filtering and quiet mode.
Definition mpi_logger.hpp:12
Core type definitions and enumerations for Quandary quantum optimal control.
RunType
Types of execution modes.
Definition defs.hpp:128
DecoherenceType
Available Lindblad operator types for open quantum systems, or NONE for closed quantum systems.
Definition defs.hpp:31
ObjectiveType
Types of objective functions for quantum control optimization.
Definition defs.hpp:95
TimeStepperType
Types of time-stepping methods for evolving quantum states.
Definition defs.hpp:183
LinearSolverType
Available types for solving linear systems at each time step.
Definition defs.hpp:113
Settings for control initialization with defaults.
Definition config_defaults.hpp:112
Settings for control parameterizations with defaults.
Definition config_defaults.hpp:100
Settings for initial conditions. Required, no defaults.
Definition config_defaults.hpp:77
Settings for optimization targets with defaults.
Definition config_defaults.hpp:89