76 int prepareInitialAndTargetState(
const int iinit,
const int ninit,
const std::vector<size_t>& nlevels,
const std::vector<size_t>& nessential);
90 void evalJ(
const Vec state,
double* J_re_ptr,
double* J_im_ptr);
102 void evalJ_diff(
const Vec state, Vec statebar,
const double J_re_bar,
const double J_im_bar);
113 double finalizeJ(
const double obj_cost_re,
const double obj_cost_im);
123 void finalizeJ_diff(
const double obj_cost_re,
const double obj_cost_im,
double* obj_cost_re_bar,
double* obj_cost_im_bar);
154 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:56
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:96
Optimization target specification for quantum control.
Definition optimtarget.hpp:20
Vec aux
Auxiliary vector for gate optimization objective computation.
Definition optimtarget.hpp:43
PetscInt localsize_u
Size of local sub vector u or v in state x=[u,v].
Definition optimtarget.hpp:39
ObjectiveType objective_type
Type of objective function measure (Frobenius, trace, product-state measure)
Definition optimtarget.hpp:29
ObjectiveType getObjectiveType()
Definition optimtarget.hpp:61
PetscInt dim_ess
Dimension of essential level system = N_e.
Definition optimtarget.hpp:25
double finalizeJ(const double obj_cost_re, const double obj_cost_im)
Finalizes the objective function computation.
Definition optimtarget.cpp:762
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:330
double FrobeniusDistance(const Vec state)
Computes Frobenius distance between target and current state.
Definition optimtarget.cpp:245
PetscInt iupp
Last index (+1) of the local sub vector u,v.
Definition optimtarget.hpp:41
TargetType target_type
Type of optimization target (product state preparation or gate optimization)
Definition optimtarget.hpp:28
bool quietmode
Flag for quiet mode operation.
Definition optimtarget.hpp:44
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:783
PetscInt purestateID
For product state preparation: integer m for preparing the target state .
Definition optimtarget.hpp:32
Vec initialstate
Storing the initial state vector.
Definition optimtarget.hpp:34
Gate * targetgate
Pointer to target gate (if gate optimization)
Definition optimtarget.hpp:30
int noscillators
Number of oscillators in the system.
Definition optimtarget.hpp:26
double purity_rho0
Purity of initial state Tr(rho(0)^2)
Definition optimtarget.hpp:31
Vec getInitialState()
Definition optimtarget.hpp:60
Vec targetstate
Storage for the target state vector (NULL for product states, for gates, density matrix from file)
Definition optimtarget.hpp:33
void FrobeniusDistance_diff(const Vec state, Vec statebar, const double Jbar)
Derivative of Frobenius distance computation.
Definition optimtarget.cpp:256
void evalJ(const Vec state, double *J_re_ptr, double *J_im_ptr)
Evaluates the final-time objective function measure .
Definition optimtarget.cpp:602
InitialConditionSettings initcond
Initial conditions.
Definition optimtarget.hpp:35
PetscInt dim
State dimension of full vectorized system: N^2 if Lindblad, N if Schroedinger.
Definition optimtarget.hpp:23
PetscInt ilow
First index of the local sub vector u,v.
Definition optimtarget.hpp:40
~OptimTarget()
Definition optimtarget.cpp:238
PetscInt dim_rho
Dimension of Hilbert space = N.
Definition optimtarget.hpp:24
OptimTarget()
Definition optimtarget.cpp:6
int mpirank_petsc
Rank of PETSc communicator.
Definition optimtarget.hpp:38
int mpisize_petsc
Size of PETSc communicator.
Definition optimtarget.hpp:37
int prepareInitialAndTargetState(const int iinit, const int ninit, const std::vector< size_t > &nlevels, const std::vector< size_t > &nessential)
Prepares the initial condition state and target state.
Definition optimtarget.cpp:370
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:697
DecoherenceType decoherence_type
Type of Lindblad decoherence operators, or NONE for Schroedinger solver.
Definition optimtarget.hpp:36
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:263
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