134 virtual void evaluate(
const double t,
const std::vector<double>& coeff,
int carrier_freq_id,
double* Blt1,
double*Blt2) = 0;
146 virtual void derivative(
const double t,
const std::vector<double>& coeff,
double* coeff_diff,
const double valbar1,
const double valbar2,
int carrier_freq_id)= 0;
195 void evaluate(
const double t,
const std::vector<double>& coeff,
int carrier_freq_id,
double* Blt1_ptr,
double* Blt2_ptr);
197 void derivative(
const double t,
const std::vector<double>& coeff,
double* coeff_diff,
const double valbar1,
const double valbar2,
int carrier_freq_id);
249 void evaluate(
const double t,
const std::vector<double>& coeff,
int carrier_freq_id,
double* Blt1_ptr,
double* Blt2_ptr);
251 void derivative(
const double t,
const std::vector<double>& coeff,
double* coeff_diff,
const double valbar1,
const double valbar2,
int carrier_freq_id);
300 virtual void computeVariation_diff(
double* grad, std::vector<double>¶ms,
double var_bar,
int carrierfreqID);
302 void evaluate(
const double t,
const std::vector<double>& coeff,
int carrier_freq_id,
double* Blt1_ptr,
double* Blt2_ptr);
304 void derivative(
const double t,
const std::vector<double>& coeff,
double* coeff_diff,
const double valbar1,
const double valbar2,
int carrier_freq_id);
Discretization of the Controls using piece-wise constant (0-th order) Bsplines.
Definition controlbasis.hpp:260
virtual void computeVariation_diff(double *grad, std::vector< double > ¶ms, double var_bar, int carrierfreqID)
Computes derivative of control parameter variation.
Definition controlbasis.cpp:248
int getNSplines()
Retrieves the number of splines (default implementation returns 0).
Definition controlbasis.hpp:270
void derivative(const double t, const std::vector< double > &coeff, double *coeff_diff, const double valbar1, const double valbar2, int carrier_freq_id)
Evaluates the derivative of the control basis at a given time.
Definition controlbasis.cpp:213
double computeVariation(std::vector< double > ¶ms, int carrierfreqID)
Computes total variation of the control parameters.
Definition controlbasis.cpp:225
double dtknot
Spacing of time knot vector.
Definition controlbasis.hpp:263
~BSpline0()
Definition controlbasis.cpp:195
void evaluate(const double t, const std::vector< double > &coeff, int carrier_freq_id, double *Blt1_ptr, double *Blt2_ptr)
Evaluates the control basis at a given time using the provided coefficients.
Definition controlbasis.cpp:198
void enforceBoundary(double *x, int carrier_id)
Sets the first and last parameter to zero for this carrier wave, so that the controls start and end a...
Definition controlbasis.cpp:282
int nsplines
Number of splines.
Definition controlbasis.hpp:262
double width
Support of each basis function (m*dtknot).
Definition controlbasis.hpp:264
Control parameterization where only the pulse amplitude is parameterized by Bsplines,...
Definition controlbasis.hpp:208
void derivative(const double t, const std::vector< double > &coeff, double *coeff_diff, const double valbar1, const double valbar2, int carrier_freq_id)
Evaluates the derivative of the control basis at a given time.
Definition controlbasis.cpp:145
double basisfunction(int id, double t)
Evaluate one basis function B_i(tau_i(t)).
Definition controlbasis.cpp:169
double * tcenter
Vector of basis function center positions.
Definition controlbasis.hpp:212
int nsplines
Number of splines.
Definition controlbasis.hpp:210
double scaling
Scaling for the phase.
Definition controlbasis.hpp:214
double width
Support of each basis function (m * dtknot).
Definition controlbasis.hpp:213
~BSpline2ndAmplitude()
Definition controlbasis.cpp:115
void enforceBoundary(double *x, int carrier_id)
Sets the first and last two spline coefficients in x to zero, so that the controls start and end at z...
Definition controlbasis.cpp:119
void evaluate(const double t, const std::vector< double > &coeff, int carrier_freq_id, double *Blt1_ptr, double *Blt2_ptr)
Evaluates the control basis at a given time using the provided coefficients.
Definition controlbasis.cpp:128
int getNSplines()
Retrieves the number of splines (default implementation returns 0).
Definition controlbasis.hpp:239
double dtknot
Spacing of the time knot vector.
Definition controlbasis.hpp:211
Control parameterization using quadratic (2nd order) Bspline basis functions.
Definition controlbasis.hpp:155
double basisfunction(int id, double t)
Evaluate one basis function B_i(tau_i(t)).
Definition controlbasis.cpp:81
double width
Support of each basis function (m*dtknot).
Definition controlbasis.hpp:160
int getNSplines()
Retrieves the number of splines (default implementation returns 0).
Definition controlbasis.hpp:184
void enforceBoundary(double *x, int carrier_id)
Sets the first and last two spline coefficients in x to zero for this carrier wave,...
Definition controlbasis.cpp:38
double dtknot
Spacing of time knot vector.
Definition controlbasis.hpp:158
void derivative(const double t, const std::vector< double > &coeff, double *coeff_diff, const double valbar1, const double valbar2, int carrier_freq_id)
Evaluates the derivative of the control basis at a given time.
Definition controlbasis.cpp:68
~BSpline2nd()
Definition controlbasis.cpp:34
void evaluate(const double t, const std::vector< double > &coeff, int carrier_freq_id, double *Blt1_ptr, double *Blt2_ptr)
Evaluates the control basis at a given time using the provided coefficients.
Definition controlbasis.cpp:48
double * tcenter
Vector of basis function center positions.
Definition controlbasis.hpp:159
int nsplines
Number of splines.
Definition controlbasis.hpp:157
Abstract base class for control parameterizations.
Definition controlbasis.hpp:25
int getSkip()
Retrieves the offset for the starting location in the global control vector.
Definition controlbasis.hpp:89
virtual void enforceBoundary(double *, int)
Enforces boundary conditions for controls (default implementation does nothing).
Definition controlbasis.hpp:123
virtual void derivative(const double t, const std::vector< double > &coeff, double *coeff_diff, const double valbar1, const double valbar2, int carrier_freq_id)=0
Evaluates the derivative of the control basis at a given time.
double tstart
Start time of the interval where the control basis is applied.
Definition controlbasis.hpp:28
virtual void computeVariation_diff(double *, std::vector< double > &, double, int)
Computes the gradient of the variation (default implementation does nothing).
Definition controlbasis.hpp:112
virtual int getNSplines()
Retrieves the number of splines (default implementation returns 0).
Definition controlbasis.hpp:96
virtual double computeVariation(std::vector< double > &, int)
Computes the variation of control parameters (default implementation returns 0.0).
Definition controlbasis.hpp:105
ControlBasis()
Definition controlbasis.cpp:4
virtual ~ControlBasis()
Definition controlbasis.cpp:17
ControlType getType()
Retrieves the type of control parameterization.
Definition controlbasis.hpp:75
int getNparams()
Retrieves the number of parameters defining the controls.
Definition controlbasis.hpp:54
int nparams
Number of parameters that define the control pulse.
Definition controlbasis.hpp:27
int skip
Offset to the starting location for this basis inside the global control vector.
Definition controlbasis.hpp:30
ControlType controltype
Type of control parameterization.
Definition controlbasis.hpp:31
double getTstart()
Retrieves the start time of the interval.
Definition controlbasis.hpp:61
void setSkip(int skip_)
Sets the offset for the starting location in the global control vector.
Definition controlbasis.hpp:82
bool enforceZeroBoundary
Flag to enforce zero boundary conditions for control pulses.
Definition controlbasis.hpp:32
virtual void evaluate(const double t, const std::vector< double > &coeff, int carrier_freq_id, double *Blt1, double *Blt2)=0
Evaluates the control basis at a given time using the provided coefficients.
double tstop
Stop time of the interval where the control basis is applied.
Definition controlbasis.hpp:29
double getTstop()
Retrieves the stop time of the interval.
Definition controlbasis.hpp:68
Core type definitions and enumerations for Quandary quantum optimal control.
ControlType
Types of control parameterizations.
Definition defs.hpp:149