TimeEvolutionOperator¶
This is an introduction to the TimeEvolutionOperator class. We write a small overarching summary of the class where we define the algorithm/equation/structure reasoning for having this class or where it fits with the rest of the code.
digraph { "ConvolutionOperator" -> "TimeEvolutionOperator" }-
template<int D>
class TimeEvolutionOperator : public mrcpp::ConvolutionOperator<D>¶ Semigroup of the free-particle Schrodinger equation.
Represents the semigroup \( \exp \left( i t \partial_x^2 \right) . \) Matrix elements (actual operator tree) of the operator can be obtained by calling getComponent(0, 0).
- Todo:
: Extend to D dimensinal on a general interval [a, b] in the future.
Note
So far implementation is done for Legendre scaling functions in 1d.
Public Functions
-
TimeEvolutionOperator(const MultiResolutionAnalysis<D> &mra, double prec, double time, int finest_scale, bool imaginary, int max_Jpower = 30)¶
A uniform constructor for TimeEvolutionOperator class.
Constructs either real or imaginary part of the Schrodinger semigroup at a given time moment.
- Parameters:
mra – [in] MRA.
prec – [in] precision.
time – [in] the time moment (step).
finest_scale – [in] the operator tree is constructed uniformly down to this scale.
imaginary – [in] defines the real (faulse) or imaginary (true) part of the semigroup.
max_Jpower – [in] maximum amount of power integrals used.
-
TimeEvolutionOperator(const MultiResolutionAnalysis<D> &mra, double prec, double time, bool imaginary, int max_Jpower = 30)¶
An adaptive constructor for TimeEvolutionOperator class.
Adaptively constructs either real or imaginary part of the Schrodinger semigroup at a given time moment. It is recommended for use in case of high polynomial order in use of the scaling basis.
Note
For technical reasons the operator tree is constructed no deeper than to scale \( n = 18 \). This should be weakened in future.
- Parameters:
mra – [in] MRA.
prec – [in] precision.
time – [in] the time moment (step).
imaginary – [in] defines the real (faulse) or imaginary (true) part of the semigroup.
max_Jpower – [in] maximum amount of power integrals used.
Protected Functions
-
void initialize(double time, int finest_scale, bool imaginary, int max_Jpower)¶
Creates Re or Im of operator.
Uniform down to finest scale.
-
void initialize(double time, bool imaginary, int max_Jpower)¶
Creates Re or Im of operator.
Adaptive down to scale \( N = 18 \). This scale limit bounds the amount of JpowerIntegrals to be calculated.
Note
In future work we plan to optimize calculation of JpowerIntegrals so that we calculate only needed ones, while building the tree (in progress).
-
void initializeSemiUniformly(double time, bool imaginary, int max_Jpower)¶
Creates Re or Im of operator (in progress)
Tree construction starts uniformly and then continues adaptively down to scale \( N = 18 \). This scale limit bounds the amount of JpowerIntegrals to be calculated.
Note
This method is not ready for use and should not be used (in progress).