80 int prepareInitialState(
const int iinit,
const int ninit,
const std::vector<size_t>& nlevels,
const std::vector<size_t>& nessential, Vec rho0);
106 void evalJ(
const Vec state,
double* J_re_ptr,
double* J_im_ptr);
118 void evalJ_diff(
const Vec state, Vec statebar,
const double J_re_bar,
const double J_im_bar);
129 double finalizeJ(
const double obj_cost_re,
const double obj_cost_im);
139 void finalizeJ_diff(
const double obj_cost_re,
const double obj_cost_im,
double* obj_cost_re_bar,
double* obj_cost_im_bar);
170 void HilbertSchmidtOverlap(
const Vec state,
const bool scalebypurity,
double* HS_re_ptr,
double* Hs_im_ptr );
Configuration class containing all validated settings.
Definition config.hpp:57
Base class for quantum gate operations.
Definition gate.hpp:18
Implementation of the real-valued right-hand-side (RHS) system matrix of the quantum dynamical equati...
Definition mastereq.hpp:92
Optimization target specification for quantum control.
Definition optimtarget.hpp:22
Vec aux
Auxiliary vector for gate optimization objective computation.
Definition optimtarget.hpp:44
PetscInt localsize_u
Size of local sub vector u or v in state x=[u,v].
Definition optimtarget.hpp:40
ObjectiveType objective_type
Type of objective function measure (Frobenius, trace, product-state measure)
Definition optimtarget.hpp:31
ObjectiveType getObjectiveType()
Retrieves the objective function type.
Definition optimtarget.hpp:68
PetscInt dim_ess
Dimension of essential level system = N_e.
Definition optimtarget.hpp:27
double finalizeJ(const double obj_cost_re, const double obj_cost_im)
Finalizes the objective function computation.
Definition optimtarget.cpp:779
void HilbertSchmidtOverlap_diff(Vec statebar, bool scalebypurity, const double HS_re_bar, const double HS_im_bar)
Derivative of Hilbert-Schmidt overlap computation.
Definition optimtarget.cpp:329
double FrobeniusDistance(const Vec state)
Computes Frobenius distance between target and current state.
Definition optimtarget.cpp:244
PetscInt iupp
Last index (+1) of the local sub vector u,v.
Definition optimtarget.hpp:42
TargetType target_type
Type of optimization target (product state preparation or gate optimization)
Definition optimtarget.hpp:30
bool quietmode
Flag for quiet mode operation.
Definition optimtarget.hpp:45
void finalizeJ_diff(const double obj_cost_re, const double obj_cost_im, double *obj_cost_re_bar, double *obj_cost_im_bar)
Derivative of objective function finalization.
Definition optimtarget.cpp:800
void prepareTargetState(const Vec rho)
Prepares the target state for gate optimization.
Definition optimtarget.cpp:604
PetscInt purestateID
For product state preparation: integer m for preparing the target state .
Definition optimtarget.hpp:34
Gate * targetgate
Pointer to target gate (if gate optimization)
Definition optimtarget.hpp:32
int noscillators
Number of oscillators in the system.
Definition optimtarget.hpp:28
double purity_rho0
Purity of initial state Tr(rho(0)^2)
Definition optimtarget.hpp:33
Vec targetstate
Storage for the target state vector (NULL for product states, for gates, density matrix from file)
Definition optimtarget.hpp:35
void FrobeniusDistance_diff(const Vec state, Vec statebar, const double Jbar)
Derivative of Frobenius distance computation.
Definition optimtarget.cpp:255
void evalJ(const Vec state, double *J_re_ptr, double *J_im_ptr)
Evaluates the final-time objective function measure .
Definition optimtarget.cpp:619
InitialConditionSettings initcond
Initial conditions.
Definition optimtarget.hpp:36
PetscInt dim
State dimension of full vectorized system: N^2 if Lindblad, N if Schroedinger.
Definition optimtarget.hpp:25
PetscInt ilow
First index of the local sub vector u,v.
Definition optimtarget.hpp:41
~OptimTarget()
Definition optimtarget.cpp:238
PetscInt dim_rho
Dimension of Hilbert space = N.
Definition optimtarget.hpp:26
OptimTarget()
Definition optimtarget.cpp:6
int mpirank_petsc
Rank of PETSc communicator.
Definition optimtarget.hpp:39
int prepareInitialState(const int iinit, const int ninit, const std::vector< size_t > &nlevels, const std::vector< size_t > &nessential, Vec rho0)
Prepares the initial condition state.
Definition optimtarget.cpp:369
int mpisize_petsc
Size of PETSc communicator.
Definition optimtarget.hpp:38
void evalJ_diff(const Vec state, Vec statebar, const double J_re_bar, const double J_im_bar)
Computes derivative of the final-time objective function measure.
Definition optimtarget.cpp:714
DecoherenceType decoherence_type
Type of Lindblad decoherence operators, or NONE for Schroedinger solver.
Definition optimtarget.hpp:37
void HilbertSchmidtOverlap(const Vec state, const bool scalebypurity, double *HS_re_ptr, double *Hs_im_ptr)
Computes Hilbert-Schmidt overlap between state and target.
Definition optimtarget.cpp:262
Core type definitions and enumerations for Quandary quantum optimal control.
TargetType
Types of optimization targets for quantum control.
Definition defs.hpp:78
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
Settings for initial conditions. Required, no defaults.
Definition config_defaults.hpp:77