00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef QCEVOLVE_H
00028 #define QCEVOLVE_H
00029
00030 #include "qccomplexfield.h"
00031 #include "qclinearalgebra.h"
00032 #include "qcparameter.h"
00033
00039 class QCEvolve
00040 {
00041 public:
00042
00048 QCEvolve(void);
00052 ~QCEvolve(void);
00054
00055
00061 void evolveForwards(bool forwards);
00065 bool isForward();
00092 void usingTDGP(QCComplexField<2> ¤tField, parameterType xOffset, parameterType yOffset, parameterType &h_x, parameterType &h_y, QCParameter &tdgpParameters);
00102 void usingTDGPLz(QCComplexField<2> ¤tField, parameterType xOffset, parameterType yOffset, parameterType &h_x, parameterType &h_y, QCParameter &tdgpParameters);
00108 void usingTDGP2Component(QCComplexField<2> &component1, QCComplexField<2> &component2, parameterType xOffset, parameterType yOffset, parameterType &h_x, parameterType &h_y, QCParameter &tdgpParameters);
00113 void usingTDGP3D(QCComplexField<3> ¤tField, parameterType xOffset, parameterType yOffset, parameterType zOffset, parameterType &h_x, parameterType &h_y, parameterType &h_z, QCParameter &tdgpParameters);
00115
00116
00122 void setBoundaryGradZero(QCComplexField<2> &field, Array<complexType,2> &old);
00126 void setBoundaryFree(QCComplexField<2> &field);
00130 void setBoundaryVanish(QCComplexField<2> &field);
00134 void setBoundaryVanish(QCComplexField<3> &field);
00138 void setTimeStep(parameterType &value)
00139 {
00140 h_t = value;
00141 }
00145 parameterType getTimeStep()
00146 {
00147 return h_t;
00148 }
00150
00151 private:
00152 QCLinearAlgebra LA;
00153 parameterType h_t;
00154 };
00155 #endif