Quandary
Loading...
Searching...
No Matches
optimtarget.hpp
Go to the documentation of this file.
1#include "defs.hpp"
2#include "gate.hpp"
3#include "mastereq.hpp"
4#pragma once
5
21 protected:
22
23 PetscInt dim;
24 PetscInt dim_rho;
25 PetscInt dim_ess;
27
31 double purity_rho0;
32 PetscInt purestateID;
39 PetscInt localsize_u;
40 PetscInt ilow;
41 PetscInt iupp;
42
43 Vec aux;
44 bool quietmode;
45
46 public:
48
56 OptimTarget(const Config& config, MasterEq* mastereq, bool quietmode_);
57
59
60 Vec getInitialState() { return initialstate; };
62
76 int prepareInitialAndTargetState(const int iinit, const int ninit, const std::vector<size_t>& nlevels, const std::vector<size_t>& nessential);
77
90 void evalJ(const Vec state, double* J_re_ptr, double* J_im_ptr);
91
102 void evalJ_diff(const Vec state, Vec statebar, const double J_re_bar, const double J_im_bar);
103
113 double finalizeJ(const double obj_cost_re, const double obj_cost_im);
114
123 void finalizeJ_diff(const double obj_cost_re, const double obj_cost_im, double* obj_cost_re_bar, double* obj_cost_im_bar);
124
133 double FrobeniusDistance(const Vec state);
134
142 void FrobeniusDistance_diff(const Vec state, Vec statebar, const double Jbar);
143
154 void HilbertSchmidtOverlap(const Vec state, const bool scalebypurity, double* HS_re_ptr, double* Hs_im_ptr );
155
164 void HilbertSchmidtOverlap_diff(Vec statebar, bool scalebypurity, const double HS_re_bar, const double HS_im_bar);
165};
166
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