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 QCSTEADYSTATE_H
00028 #define QCSTEADYSTATE_H
00029
00030 #include "qccomplexfield.h"
00031 #include "qclinearalgebra.h"
00032 #include "qcparameter.h"
00033
00037 enum solutionType{None = 0, TDGPFixedPt, TDGPCartesian};
00038
00043 class QCSteadyState
00044 {
00045 public:
00046
00052 QCSteadyState(void);
00056 ~QCSteadyState(void);
00058
00059
00065 void setBoundaryFree(QCComplexField<2> &field);
00069 void setBoundaryVanish(QCComplexField<2> &field);
00071
00072
00078 void setConstant(QCComplexField<2>& field);
00090 void usingTDGPFixedPoint(QCComplexField<2>& field, parameterType &deltaR, QCParameter &tdgpParameters);
00095 void usingTDGPFixedPoint(QCComplexField<3>& field, parameterType &deltaR, QCParameter &tdgpParameters);
00101 void usingTDGPVortexFixedPoint(QCComplexField<2> &field, parameterType &deltaR, QCParameter &tdgpParameters);
00106 void usingTDGPVortexFixedPoint(QCComplexField<3> &field, parameterType xOffset, parameterType yOffset, parameterType zOffset, parameterType &deltaX, parameterType &deltaY, parameterType &deltaZ, parameterType &deltaR, QCParameter &tdgpParameters);
00111 void usingTDGPGaussSeidel(QCComplexField<2>& currentField, parameterType xOffset, parameterType yOffset, parameterType &h_x, parameterType &h_y, QCParameter &tdgpParameters);
00116 void usingTDGPFastSI(QCComplexField<2> &field, parameterType &h_r, QCParameter &tdgpParameters);
00121 void usingTDGPFastSI(QCComplexField<2>& currentField, parameterType xOffset, parameterType yOffset, parameterType &h_x, parameterType &h_y, QCParameter &tdgpParameters);
00125 void transferSolutionTo(QCComplexField<2> &field, parameterType xOffset, parameterType yOffset, parameterType &deltaX, parameterType &deltaY, parameterType &deltaR);
00129 void transferSolutionTo(QCComplexField<3> &field, parameterType xOffset, parameterType yOffset, parameterType zOffset, parameterType &deltaX, parameterType &deltaY, parameterType &deltaZ, parameterType &deltaR);
00131
00132
00138 void setTolerance(parameterType &value)
00139 { tolerance = value; }
00143 parameterType getTolerance()
00144 { return tolerance; }
00146
00147
00153 bool output1DSolution(const char* fileName, parameterType &deltaR);
00155
00156 private:
00157 Array<parameterType,1> F;
00158 solutionType completedSolution;
00159 parameterType tolerance;
00160 };
00161 #endif