78 Oscillator(
const Config& config,
size_t id, std::mt19937 rand_engine,
int param_offset,
bool quietmode);
198 int evalControl(
const double t,
double* Re_ptr,
double* Im_ptr);
209 int evalControl_diff(
const double t,
double* grad_for_this_oscillator,
const double pbar,
const double qbar);
247 void population(
const Vec x, std::vector<double> &pop);
Configuration class containing all validated settings.
Definition config.hpp:57
Quantum oscillator (multi-level qubit) with control capabilities.
Definition oscillator.hpp:37
int mpisize_petsc
Size of PETSc's communicator.
Definition oscillator.hpp:56
double getDephaseTime()
Retrieves the T2 dephasing time.
Definition oscillator.hpp:122
double getSelfkerr()
Retrieves the self-Kerr coefficient.
Definition oscillator.hpp:101
PetscInt iupp
Last index (+1) of the local sub vector u,v.
Definition oscillator.hpp:59
virtual ~Oscillator()
Definition oscillator.cpp:170
double expectedEnergy(const Vec x)
Computes expected energy for this oscillator.
Definition oscillator.cpp:355
double evalControlVariation()
Evaluates control variation penalty term.
Definition oscillator.cpp:200
double getRotFreq()
Retrieves the rotating frame frequency.
Definition oscillator.hpp:157
int getNSegParams(int parameterizationID)
Retrieves the number of parameters for a specific parameterization.
Definition oscillator.cpp:191
double selfkerr
Self-Kerr frequency , multiplies .
Definition oscillator.hpp:42
int evalControl_Labframe(const double t, double *f_ptr)
Evaluates lab-frame control function.
Definition oscillator.cpp:319
PetscInt dim_postOsc
Dimension of coupled subsystems following this oscillator.
Definition oscillator.hpp:65
size_t getNLevels()
Retrieves the number of energy levels.
Definition oscillator.hpp:94
int mpirank_world
Rank of MPI_COMM_WORLD.
Definition oscillator.hpp:54
double ground_freq
Fundamental 0-1 transition frequency of this oscillator .
Definition oscillator.hpp:41
PetscInt dim_preOsc
Dimension of coupled subsystems preceding this oscillator.
Definition oscillator.hpp:64
std::vector< ControlBasis * > basisfunctions
Basis functions for control parameterization foreach time parameterization. Note: Currently only one ...
Definition oscillator.hpp:51
double decay_time
Characteristic time for T1 decay operations.
Definition oscillator.hpp:46
int getNSplines()
Retrieves the number of splines used in the control parameterization.
Definition oscillator.hpp:150
PetscInt localsize_u
Size of local sub vector u or v in state x=[u,v].
Definition oscillator.hpp:57
void evalControlVariationDiff(Vec G, double var_reg_bar, int skip_to_oscillator)
Computes derivative of control variation penalty.
Definition oscillator.cpp:215
size_t nlevels
Number of energy levels for this oscillator.
Definition oscillator.hpp:40
int evalControl_diff(const double t, double *grad_for_this_oscillator, const double pbar, const double qbar)
Computes derivatives of control functions p(t) and q(t) with respect to the parameters.
Definition oscillator.cpp:283
size_t getNCarrierfrequencies()
Retrieves the number of carrier frequencies.
Definition oscillator.hpp:136
void population(const Vec x, std::vector< double > &pop)
Computes population in each energy level of this oscillator.
Definition oscillator.cpp:443
double getDecayTime()
Retrieves the T1 decay time.
Definition oscillator.hpp:115
double dephase_time
Characteristic time for T2 dephasing operations.
Definition oscillator.hpp:47
bool control_zero_boundary_condition
Flag to enforce boundary conditions on controls.
Definition oscillator.hpp:61
Oscillator()
Definition oscillator.cpp:7
std::vector< double > params
Control parameters for this oscillator.
Definition oscillator.hpp:49
ControlType getControlType()
Retrieves the type of control parameterization.
Definition oscillator.hpp:143
double Tfinal
Final evolution time.
Definition oscillator.hpp:50
PetscInt ilow
First index of the local sub vector u,v.
Definition oscillator.hpp:58
int mpirank_petsc
Rank of PETSc's communicator.
Definition oscillator.hpp:55
int myid
Integer identifier for this oscillator.
Definition oscillator.hpp:39
void clearParams()
Clears all control parameters.
Definition oscillator.hpp:186
int evalControl(const double t, double *Re_ptr, double *Im_ptr)
Evaluates the rotating-frame control functions.
Definition oscillator.cpp:234
void setParams(const double *x)
Sets control parameters from a global storage.
Definition oscillator.cpp:177
DecoherenceType decoherence_type
Type of Lindblad decoherence operators to include.
Definition oscillator.hpp:45
std::vector< double > carrier_freq
Frequencies of the carrier waves.
Definition oscillator.hpp:52
double getDetuning()
Retrieves the detuning frequency.
Definition oscillator.hpp:108
double detuning_freq
Detuning frequency, detuning = ground_freq - rotational_freq, multiplies .
Definition oscillator.hpp:44
size_t getNParameterizations()
Retrieves the number of control parameterizations in this oscillator (currently always 1).
Definition oscillator.hpp:129
void expectedEnergy_diff(const Vec x, Vec x_bar, const double obj_bar)
Computes derivative of expected energy computation.
Definition oscillator.cpp:401
size_t getNParams()
Retrieves the number of control parameters.
Definition oscillator.hpp:87
void getParams(double *x)
Retrieves control parameters into a global storage.
Definition oscillator.cpp:185
Core type definitions and enumerations for Quandary quantum optimal control.
DecoherenceType
Available Lindblad operator types for open quantum systems, or NONE for closed quantum systems.
Definition defs.hpp:31
ControlType
Types of control parameterizations.
Definition defs.hpp:149
#define M_PI
Definition defs.hpp:16