40 throw std::invalid_argument(
"QuantumTextureFrame2D: potential grid does not match wavefunction grid");
44 frame.width = field.
width();
45 frame.height = field.
height();
47 const std::size_t sampleCount = field.
size();
48 frame.probability.resize(sampleCount);
49 frame.phase.resize(sampleCount);
50 frame.potential.resize(sampleCount, 0.0f);
55 : potentialField.
data();
57 for (std::size_t i = 0; i < sampleCount; ++i) {
58 const float real = psi[i].real();
59 const float imag = psi[i].imag();
60 const float p = real * real + imag * imag;
61 const float ph = std::atan2(imag, real);
64 frame.probability[i] = p;
66 frame.potential[i] = v;
68 frame.maxProbability = std::max(frame.maxProbability, p);
69 frame.maxAbsPotential = std::max(frame.maxAbsPotential, std::abs(v));
Declares the quantumtextureframe2d visualization component used by QPE.
Data structure used by the Quantum Texture Frame2D component.
std::vector< float > phase
static QuantumTextureFrame2D build(const ComplexField2D &field, const PotentialField2D &potential)
Performs build.
bool empty() const noexcept
Performs empty.
std::vector< float > probability
std::vector< float > potential