34 std::fabs(field.
norm2() - 1.0) > 2.0e-5) {
35 error =
"Kapitza-Dirac initial beam failed normalization";
48 error =
"Kapitza-Dirac default config is invalid";
51 const double expectedG = 2.0 * 3.14159265358979323846 / 4.096;
54 error =
"Kapitza-Dirac reciprocal momentum or pulse area is inconsistent";
63 error =
"Kapitza-Dirac standing-wave pulse did not turn on";
69 error =
"Kapitza-Dirac standing-wave pulse did not turn off";
76 if (sample.momentumProbability.size() != field.
width() ||
77 sample.orderProbability.size() != 9u ||
78 !(sample.norm > 0.999 && sample.norm < 1.001)) {
79 error =
"Kapitza-Dirac momentum analysis is inconsistent";
82 const std::size_t zero = 4u;
83 if (!(sample.orderProbability[zero] > 0.98f)) {
84 error =
"Kapitza-Dirac unpulsed beam is not concentrated in zero order";
90 error =
"Kapitza-Dirac history configuration failed";
93 history.
append(momentum, 0.0,
false);
94 if (history.
empty() || history.
samples().back().orderProbability.size() != 9u) {
95 error =
"Kapitza-Dirac history append failed";
Owning Cartesian grid of complex scalar samples.
double norm2() const noexcept
Returns the discrete integral of |psi|^2 including dx*dy.
float dx() const noexcept
Returns the X grid spacing.
std::size_t height() const noexcept
Returns the number of samples along Y.
float dy() const noexcept
Returns the Y grid spacing.
std::size_t width() const noexcept
Returns the number of samples along X.
static MomentumSpace2DResult compute(const ComplexField2D &field, double hbar=1.0)
Performs compute.
Implements the Potential Field2D component.
Value maximum() const noexcept
Performs maximum.
Implements the Potential Scene2D component.
static bool initialize(ComplexField2D &field, const QuantumKapitzaDiracInitialState2DConfig &config, double hbar, std::string *reason=nullptr)
Initializes ialize.
static QuantumKapitzaDiracSample2D measure(const MomentumSpace2DResult &momentum, const QuantumKapitzaDirac2DConfig &config, double time, bool pulseActive)
Performs measure.
static QuantumKapitzaDiracPotentialState2D rasterize(const PotentialScene2D &baseScene, const QuantumKapitzaDirac2DConfig &config, double time, PotentialField2D &target)
Performs rasterize.
static double pulseArea(const QuantumKapitzaDirac2DConfig &config, double hbar) noexcept
Performs pulse area.
static double reciprocalMomentum(const QuantumKapitzaDirac2DConfig &config, double hbar) noexcept
Performs reciprocal momentum.
static bool validateConfig(const QuantumKapitzaDirac2DConfig &config, double hbar, std::string *reason=nullptr)
Validates config.
Implements the Quantum Kapitza Dirac History2D component.
bool empty() const noexcept
Returns whether the object contains no data.
const std::vector< QuantumKapitzaDiracSample2D > & samples() const noexcept
Samples s.
bool configure(const QuantumKapitzaDirac2DConfig &config, double hbar)
Returns configure.
void append(const MomentumSpace2DResult &momentum, double time, bool pulseActive)
Carries out append.
Declares the complex scalar field container representing two-dimensional wave functions.
Declares the momentumspace2d physics/numerical component used by QPE experiments.
bool runQuantumKapitzaDirac2DTests(std::string &error)
Runs quantum kapitza dirac2 d tests.
Declares the potentialfield2d physics/numerical component used by QPE experiments.
Declares the potentialscene2d physics/numerical component used by QPE experiments.
Declares the quantumkapitzadirac2d physics/numerical component used by QPE experiments.
Declares regression and invariant tests for quantumkapitzadirac2d tests.
Data record containing Momentum Space2D Result.
Configuration values for Quantum Kapitza Dirac2D Config.
Configuration values for Quantum Kapitza Dirac Initial State2D Config.
Data structure used by the Quantum Kapitza Dirac Potential State2D component.
Data structure used by the Quantum Kapitza Dirac Sample2D component.