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
23 protected:
24
25 PetscInt dim;
26 PetscInt dim_rho;
27 PetscInt dim_ess;
29
33 double purity_rho0;
34 PetscInt purestateID;
40 PetscInt localsize_u;
41 PetscInt ilow;
42 PetscInt iupp;
43
44 Vec aux;
45 bool quietmode;
46
47 public:
49
59 OptimTarget(const Config& config, MasterEq* mastereq, double total_time, Vec rho_t0, bool quietmode_);
60
62
69
80 int prepareInitialState(const int iinit, const int ninit, const std::vector<size_t>& nlevels, const std::vector<size_t>& nessential, Vec rho0);
81
92 void prepareTargetState(const Vec rho);
93
106 void evalJ(const Vec state, double* J_re_ptr, double* J_im_ptr);
107
118 void evalJ_diff(const Vec state, Vec statebar, const double J_re_bar, const double J_im_bar);
119
129 double finalizeJ(const double obj_cost_re, const double obj_cost_im);
130
139 void finalizeJ_diff(const double obj_cost_re, const double obj_cost_im, double* obj_cost_re_bar, double* obj_cost_im_bar);
140
149 double FrobeniusDistance(const Vec state);
150
158 void FrobeniusDistance_diff(const Vec state, Vec statebar, const double Jbar);
159
170 void HilbertSchmidtOverlap(const Vec state, const bool scalebypurity, double* HS_re_ptr, double* Hs_im_ptr );
171
180 void HilbertSchmidtOverlap_diff(Vec statebar, bool scalebypurity, const double HS_re_bar, const double HS_im_bar);
181};
182
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