Quandary
Loading...
Searching...
No Matches
config_defaults.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstddef>
4#include <string>
5
6#include "defs.hpp"
7
15namespace ConfigDefaults {
16
17// General options
18const double ROTATION_FREQUENCY = 0.0;
19const double SELFKERR = 0.0;
20const double CROSSKERR_COUPLING = 0.0;
21const double DIPOLE_COUPLING = 0.0;
23const double DECAY_TIME = 0.0;
24const double DEPHASE_TIME = 0.0;
25
26// Optimization options
29const size_t CONTROL_SPLINE_COUNT = 10;
31const double CONTROL_INIT_AMPLITUDE = 0.0;
32const double CONTROL_INIT_PHASE = 0.0;
33
34const double CONTROL_AMPLITUDE_BOUND = 1e12;
35const double CARRIER_FREQ = 0.0;
36
39const double GATE_ROT_FREQ = 0.0;
41const double OPTIM_WEIGHT = 1.0;
42
43const double OPTIM_TIKHONOV_COEFF = 1e-4;
44const bool OPTIM_TIKHONOV_USE_X0 = false;
45const double OPTIM_TOL_GRAD_ABS = 1e-4;
46const double OPTIM_TOL_GRAD_REL = 1e-4;
47const double OPTIM_TOL_FINAL_COST = 1e-8;
48const double OPTIM_TOL_INFIDELITY = 1e-5;
49const size_t OPTIM_MAXITER = 200;
50
51const double OPTIM_PENALTY_LEAKAGE = 0.0;
52const double OPTIM_PENALTY_WEIGHTEDCOST = 0.0;
54const double OPTIM_PENALTY_DPDM = 0.0;
55const double OPTIM_PENALTY_ENERGY = 0.0;
56const double OPTIM_PENALTY_VARIATION = 0.01;
57
58inline const std::string OUTPUT_DIRECTORY = "./data_out";
59
60const size_t OUTPUT_TIMESTEP_STRIDE = 1;
61const size_t OUTPUT_OPTIMIZATION_STRIDE = 10;
62
64const bool USEMATFREE = true;
66const size_t LINEARSOLVER_MAXITER = 10;
68const int RAND_SEED = 1;
69
70} // namespace ConfigDefaults
71
72/* Structs to group certain configuration settings */
73
79
80 // Optional settings - populate based on type
81 std::optional<std::string> filename;
82 std::optional<std::vector<size_t>> levels;
83 std::optional<std::vector<size_t>> subsystem;
84};
85
91 std::optional<GateType> gate_type = std::nullopt;
92 std::optional<std::vector<double>> gate_rot_freq = std::nullopt;
93 std::optional<std::vector<size_t>> levels = std::nullopt;
94 std::optional<std::string> filename = std::nullopt;
95};
96
103 std::optional<double> tstart = std::nullopt;
104 std::optional<double> tstop = std::nullopt;
105 std::optional<double> scaling = std::nullopt;
106
107};
108
115 std::optional<double> phase = std::nullopt;
116 std::optional<std::string> filename = std::nullopt;
117};
Core type definitions and enumerations for Quandary quantum optimal control.
TargetType
Types of optimization targets for quantum control.
Definition defs.hpp:78
@ NONE
No target specified (no optimization)
RunType
Types of execution modes.
Definition defs.hpp:128
@ SIMULATION
Runs one simulation to compute the objective function (forward)
DecoherenceType
Available Lindblad operator types for open quantum systems, or NONE for closed quantum systems.
Definition defs.hpp:31
@ NONE
No Lindblad operators (closed system)
ObjectiveType
Types of objective functions for quantum control optimization.
Definition defs.hpp:95
@ JTRACE
Weighted Hilbert-Schmidt overlap: , where = purity of .
ControlType
Types of control parameterizations.
Definition defs.hpp:149
@ BSPLINE
Control pulses are parameterized with 2nd order BSpline basis functions with carrier waves.
InitialConditionType
Available types of initial conditions that are propagated through the quantum dynamics.
Definition defs.hpp:51
GateType
Types of quantum gates used in quantum control.
Definition defs.hpp:200
@ NONE
No gate.
ControlInitializationType
Types of control initializations.
Definition defs.hpp:166
TimeStepperType
Types of time-stepping methods for evolving quantum states.
Definition defs.hpp:183
@ IMR
Implicit Midpoint Rule (2nd order)
LinearSolverType
Available types for solving linear systems at each time step.
Definition defs.hpp:113
@ GMRES
Uses Petsc's GMRES solver (default)
Centralized configuration defaults for Quandary.
Definition config_defaults.hpp:15
const ControlType CONTROL_TYPE
Default control parameterization type.
Definition config_defaults.hpp:28
const size_t OUTPUT_OPTIMIZATION_STRIDE
Default optimization monitoring frequency.
Definition config_defaults.hpp:61
const double DIPOLE_COUPLING
Default dipole-dipole coupling frequency (GHz)
Definition config_defaults.hpp:21
const double OPTIM_PENALTY_ENERGY
Default energy penalty coefficient.
Definition config_defaults.hpp:55
const double DECAY_TIME
Default decay time.
Definition config_defaults.hpp:23
const size_t OUTPUT_TIMESTEP_STRIDE
Default output frequency.
Definition config_defaults.hpp:60
const size_t LINEARSOLVER_MAXITER
Default linear solver max iterations.
Definition config_defaults.hpp:66
const double OPTIM_PENALTY_WEIGHTEDCOST
Default weighted cost penalty coefficient.
Definition config_defaults.hpp:52
const TimeStepperType TIMESTEPPER_TYPE
Default time stepper type.
Definition config_defaults.hpp:67
const double CARRIER_FREQ
Default carrier frequency.
Definition config_defaults.hpp:35
const size_t OPTIM_MAXITER
Default maximum optimization iterations.
Definition config_defaults.hpp:49
const double CROSSKERR_COUPLING
Default cross-kerr frequency (GHz)
Definition config_defaults.hpp:20
const double OPTIM_TOL_FINAL_COST
Default final time cost tolerance.
Definition config_defaults.hpp:47
const bool CONTROL_ZERO_BOUNDARY_CONDITION
Default control pulse boundary conditions enforcement.
Definition config_defaults.hpp:27
const double OPTIM_PENALTY_WEIGHTEDCOST_WIDTH
Default weighted cost penalty width.
Definition config_defaults.hpp:53
const ControlInitializationType CONTROL_INIT_TYPE
Default control initialization amplitude.
Definition config_defaults.hpp:30
const DecoherenceType DECOHERENCE_TYPE
Default decoherence type enum.
Definition config_defaults.hpp:22
const LinearSolverType LINEARSOLVER_TYPE
Default linear solver type.
Definition config_defaults.hpp:65
const std::string OUTPUT_DIRECTORY
Default output directory.
Definition config_defaults.hpp:58
const double OPTIM_TOL_GRAD_ABS
Default absolute gradient tolerance.
Definition config_defaults.hpp:45
const double OPTIM_TOL_GRAD_REL
Default relative gradient tolerance.
Definition config_defaults.hpp:46
const bool OPTIM_TIKHONOV_USE_X0
Default Tikhonov regularization type.
Definition config_defaults.hpp:44
const double DEPHASE_TIME
Default dephase time.
Definition config_defaults.hpp:24
const double GATE_ROT_FREQ
Default gate rotational frequency.
Definition config_defaults.hpp:39
const double CONTROL_INIT_PHASE
Default control initialization phase.
Definition config_defaults.hpp:32
const double CONTROL_AMPLITUDE_BOUND
Default amplitude bound for control pulses.
Definition config_defaults.hpp:34
const double OPTIM_PENALTY_VARIATION
Default amplitude variation penalty coefficient.
Definition config_defaults.hpp:56
const double SELFKERR
Default self-kerr frequency (GHz)
Definition config_defaults.hpp:19
const bool USEMATFREE
Default matrix-free solver setting.
Definition config_defaults.hpp:64
const GateType GATE_TYPE
Default gate type.
Definition config_defaults.hpp:38
const double CONTROL_INIT_AMPLITUDE
Default control initialization amplitude.
Definition config_defaults.hpp:31
const double OPTIM_WEIGHT
Default optimization weight per initial condition.
Definition config_defaults.hpp:41
const RunType RUNTYPE
Default run type.
Definition config_defaults.hpp:63
const double OPTIM_PENALTY_LEAKAGE
Default first integral penalty coefficient.
Definition config_defaults.hpp:51
const TargetType OPTIM_TARGET
Default optimization target: NONE.
Definition config_defaults.hpp:37
const double ROTATION_FREQUENCY
Default rotational wave approximation frequency (GHz)
Definition config_defaults.hpp:18
const int RAND_SEED
Default random seed.
Definition config_defaults.hpp:68
const ObjectiveType OPTIM_OBJECTIVE
Default objective function.
Definition config_defaults.hpp:40
const size_t CONTROL_SPLINE_COUNT
Default number of B-spline basis functions.
Definition config_defaults.hpp:29
const double OPTIM_TOL_INFIDELITY
Default infidelity tolerance.
Definition config_defaults.hpp:48
const double OPTIM_TIKHONOV_COEFF
Default Tikhonov regularization coefficient.
Definition config_defaults.hpp:43
const double OPTIM_PENALTY_DPDM
Default second derivative penalty coefficient.
Definition config_defaults.hpp:54
Settings for control initialization with defaults.
Definition config_defaults.hpp:112
std::optional< double > phase
Initial control pulse phase.
Definition config_defaults.hpp:115
ControlInitializationType type
Initialization type.
Definition config_defaults.hpp:113
std::optional< std::string > filename
Filename for FILE type.
Definition config_defaults.hpp:116
std::optional< double > amplitude
Initial control pulse amplitude.
Definition config_defaults.hpp:114
Settings for control parameterizations with defaults.
Definition config_defaults.hpp:100
std::optional< size_t > nspline
Number of basis functions in this parameterization.
Definition config_defaults.hpp:102
std::optional< double > scaling
Amplitude scaling factor, only for BSPLINEAMP.
Definition config_defaults.hpp:105
std::optional< double > tstart
Start time of the control parameterization.
Definition config_defaults.hpp:103
std::optional< double > tstop
Stop time of the control parameterization.
Definition config_defaults.hpp:104
ControlType type
Type of control parameterization.
Definition config_defaults.hpp:101
Settings for initial conditions. Required, no defaults.
Definition config_defaults.hpp:77
InitialConditionType type
Type of initial condition.
Definition config_defaults.hpp:78
std::optional< std::vector< size_t > > subsystem
For ENSEMBLE, DIAGONAL, BASIS: Oscillator IDs.
Definition config_defaults.hpp:83
std::optional< std::vector< size_t > > levels
For PRODUCT_STATE: Quantum level for each oscillator.
Definition config_defaults.hpp:82
std::optional< std::string > filename
For FROMFILE: File to read initial condition from.
Definition config_defaults.hpp:81
Settings for optimization targets with defaults.
Definition config_defaults.hpp:89
TargetType type
Type of optimization target.
Definition config_defaults.hpp:90
std::optional< std::vector< size_t > > levels
For STATE: Level occupations for each oscillator.
Definition config_defaults.hpp:93
std::optional< std::string > filename
For GATE or STATE: File path to target gate or state.
Definition config_defaults.hpp:94
std::optional< std::vector< double > > gate_rot_freq
For GATE: Gate rotation frequencies for each oscillator.
Definition config_defaults.hpp:92
std::optional< GateType > gate_type
For GATE: Type of the gate.
Definition config_defaults.hpp:91