QCEvolve Class Reference

Class designed to encapsulate the Time Evolution Operator. The method used for the operator is the Fast Semi-Implicit scheme featuring the method of approximate factorization. The class also features mathematical functions involved in numerical work. More...

#include <qcevolve.h>

List of all members.

Public Member Functions

Constructors
 QCEvolve (void)
 Standard Constructor.
 ~QCEvolve (void)
 Standard Destructor.
Evolving Methods
void evolveForwards (bool forwards)
 Sets whether the evolution is done forwards or backwards in time.
bool isForward ()
 Returns whether the evolution is being done forwards or backwards in time.
void usingTDGP (QCComplexField< 2 > &currentField, parameterType xOffset, parameterType yOffset, parameterType &h_x, parameterType &h_y, QCParameter &tdgpParameters)
 Evolves the Field according to the Time-Dependent Gross-Pitaevskii (TDGP) Equation (this is the 2D version).
void usingTDGPLz (QCComplexField< 2 > &currentField, parameterType xOffset, parameterType yOffset, parameterType &h_x, parameterType &h_y, QCParameter &tdgpParameters)
 Same as "usingTDGP" but involves the Angular Momentum of a rotating trap.
void usingTDGP2Component (QCComplexField< 2 > &component1, QCComplexField< 2 > &component2, parameterType xOffset, parameterType yOffset, parameterType &h_x, parameterType &h_y, QCParameter &tdgpParameters)
 Applies the evolution of to "usingTDGP" a 2-component BEC.
void usingTDGP3D (QCComplexField< 3 > &currentField, parameterType xOffset, parameterType yOffset, parameterType zOffset, parameterType &h_x, parameterType &h_y, parameterType &h_z, QCParameter &tdgpParameters)
 Same as "usingTDGP" but implemented in 3-Dimensions.
Evolver Characteristic Operations
void setBoundaryGradZero (QCComplexField< 2 > &field, Array< complexType, 2 > &old)
 Sets the boundary value so the gradient at the boundary is zero.
void setBoundaryFree (QCComplexField< 2 > &field)
 Sets the boundary value so the boundary is free valued.
void setBoundaryVanish (QCComplexField< 2 > &field)
 Sets the boundary value so the wavefunction vanishes.
void setBoundaryVanish (QCComplexField< 3 > &field)
 Sets the boundary value so the wavefunction vanishes in 3-D.
void setTimeStep (parameterType &value)
 Sets the time step at which the evolving is done.
parameterType getTimeStep ()
 Returns the time step at which the evolving is done.


Detailed Description

Class designed to encapsulate the Time Evolution Operator. The method used for the operator is the Fast Semi-Implicit scheme featuring the method of approximate factorization. The class also features mathematical functions involved in numerical work.

Definition at line 39 of file qcevolve.h.


Member Function Documentation

void QCEvolve::usingTDGP QCComplexField< 2 > &  currentField,
parameterType  xOffset,
parameterType  yOffset,
parameterType &  h_x,
parameterType &  h_y,
QCParameter tdgpParameters
 

Evolves the Field according to the Time-Dependent Gross-Pitaevskii (TDGP) Equation (this is the 2D version).

The Gross-Pitaevskii Equation in the following form is used

\[ \left[1 - \frac{i\hbar\Delta t}{4m}\frac{\delta^2_{x}}{\Delta x^2} - \frac{i\hbar\Delta t}{4m}\frac{\delta^2_{y}}{\Delta y^2}\right]\Psi^{n+1} = \left[1 + \frac{i\hbar\Delta t}{4m}\frac{\delta^2_{x}}{\Delta x^2} + \frac{i\hbar\Delta t}{4m}\frac{\delta^2_{y}}{\Delta y^2}\right]\Psi^{n} + \frac{\Delta t}{2}\left[f^{n+1} + f^n\right] \]

where

\[ f^{n+1} = \frac{\Delta t}{2i\hbar}m\omega^2(x^2 + y^2)\Psi^{n+1}_{k,\ell} + \frac{\Delta t}{2i\hbar}g|\Psi^{n+1}_{k,\ell}|^2\Psi^{n+1}_{k,\ell} \]

This is approximately factorized to give the first fractional timestep as

\[ A_{x}\Psi^{n+1/2} = B_x B_y\Psi^{n} + \frac{\Delta t}{2}\left[f^{n+1} + f^n\right] \]

and the second fractional timestep is

\[ A_{y}\Psi^{n+1} = \Psi^{n+1/2} \]

where each of the $A \& B$ are tridiagonals to be solved It is assumed that Small Omega Squared is 1st Parameter, mu is the 2nd, g is 3rd Parameter and hbar the 4th Parameter, m the 5th, Big Omega the 6th and the Winding number of the vortex has the 7th in the QCParameter Class. All index referencing should be made C style.

Todo:
Generalise the evolving algorithms for multiple dimensions

Definition at line 54 of file qcevolve.cpp.

References QCField< complexType, rank >::accessArray(), QCParameter::getParameter(), QCField< complexType, rank >::noOfColumns(), QCField< complexType, rank >::noOfRows(), and QCField< complexType, rank >::retrieveElement().

Referenced by QCBEC< rank >::evolve().

void QCEvolve::usingTDGP2Component QCComplexField< 2 > &  component1,
QCComplexField< 2 > &  component2,
parameterType  xOffset,
parameterType  yOffset,
parameterType &  h_x,
parameterType &  h_y,
QCParameter tdgpParameters
 

Applies the evolution of to "usingTDGP" a 2-component BEC.

It is assumed that Small Omega Squared is 1st Parameter, mu is the 2nd, g is 3rd Parameter and hbar the 4th Parameter, m the 5th, Big Omega the 6th and the Winding number of the vortex has the 7th in the QCParameter Class. All index referencing should be made C style. In this case, the 3rd parameter g is ignored and it is assumed there are g11, g12, g22 and g21 parameters at 8th, 9th, 10th and 11th respectively.

Definition at line 211 of file qcevolve.cpp.

References QCField< complexType, rank >::accessArray(), QCParameter::getParameter(), QCField< complexType, rank >::noOfColumns(), QCField< complexType, rank >::noOfRows(), and QCField< complexType, rank >::retrieveElement().

Referenced by QC2ComponentBEC< rank >::evolve().

void QCEvolve::usingTDGP3D QCComplexField< 3 > &  field,
parameterType  x0,
parameterType  y0,
parameterType  z0,
parameterType &  h_x,
parameterType &  h_y,
parameterType &  h_z,
QCParameter tdgpParameters
 

Same as "usingTDGP" but implemented in 3-Dimensions.

It is assumed that Small Omega Squared is 1st Parameter, mu is the 2nd, g is 3rd Parameter and hbar the 4th Parameter, m the 5th, Big Omega the 6th and the Winding number of the vortex has the 7th in the QCParameter Class. All index referencing should be made C style.

Definition at line 319 of file qcevolve.cpp.

References QCField< complexType, rank >::accessArray(), QCParameter::getParameter(), QCField< complexType, rank >::height(), QCField< complexType, rank >::noOfColumns(), QCField< complexType, rank >::noOfRows(), and QCField< complexType, rank >::retrieveElement().

void QCEvolve::usingTDGPLz QCComplexField< 2 > &  currentField,
parameterType  xOffset,
parameterType  yOffset,
parameterType &  h_x,
parameterType &  h_y,
QCParameter tdgpParameters
 

Same as "usingTDGP" but involves the Angular Momentum of a rotating trap.

Same as "usingTDGP" but implements the equation with the

\[ \frac{\Omega}{2}\left[x\frac{\delta_{y}\Psi^{n+1}}{\Delta y} - y\frac{\delta_{x}\Psi^{n+1}}{\Delta x}\right] \]

angular momentum term in $ f^{n+1}$. It is assumed that Small Omega Squared is 1st Parameter, mu is the 2nd, g is 3rd Parameter and hbar the 4th Parameter, m the 5th, Big Omega the 6th and the Winding number of the vortex has the 7th in the QCParameter Class. All index referencing should be made C style.

Definition at line 136 of file qcevolve.cpp.

References QCField< complexType, rank >::accessArray(), QCParameter::getParameter(), QCField< complexType, rank >::noOfColumns(), QCField< complexType, rank >::noOfRows(), and QCField< complexType, rank >::retrieveElement().


The documentation for this class was generated from the following files:
Generated on Sat May 13 13:22:49 2006 for Quantum Construct (qC++) by  doxygen 1.4.6-NO