include/qcsteadystate.h

00001 /***************************************************************************
00002  *   Quantum Construct (qC++)                                                                  *
00003  *   The Quantum Physics Computational Library                                         *
00004  *   Copyright (C) 2005 by Shekhar S. Chandra                                      *
00005  *   Shekhar.Chandra@sci.monash,edu.au                                     *
00006  *                                                                         *
00007  *   This program is free software; you can redistribute it and/or modify  *
00008  *   it under the terms of the GNU General Public License as published by  *
00009  *   the Free Software Foundation; either version 2 of the License, or     *
00010  *   (at your option) any later version.                                   *
00011  *                                                                         *
00012  *   This program is distributed in the hope that it will be useful,       *
00013  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00014  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00015  *   GNU General Public License for more details.                          *
00016  *                                                                         *
00017  *   You should have received a copy of the GNU General Public License     *
00018  *   along with this program; if not, write to the                         *
00019  *   Free Software Foundation, Inc.,                                       *
00020  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
00021  ***************************************************************************/
00022 /*
00023         Ver Info - QCSteadyState.h
00024         1.0.0 - Original Implementation
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

Generated on Sat May 13 13:22:48 2006 for Quantum Construct (qC++) by  doxygen 1.4.6-NO