ItpackLinSolver.h

Go to the documentation of this file.
00001 /* ****************************************************************** **
00002 **    OpenSees - Open System for Earthquake Engineering Simulation    **
00003 **          Pacific Earthquake Engineering Research Center            **
00004 **                                                                    **
00005 **                                                                    **
00006 ** (C) Copyright 1999, The Regents of the University of California    **
00007 ** All Rights Reserved.                                               **
00008 **                                                                    **
00009 ** Commercial use of this program without express permission of the   **
00010 ** University of California, Berkeley, is strictly prohibited.  See   **
00011 ** file 'COPYRIGHT'  in main directory for information on usage and   **
00012 ** redistribution,  and for a DISCLAIMER OF ALL WARRANTIES.           **
00013 **                                                                    **
00014 ** Developed by:                                                      **
00015 **   Frank McKenna (fmckenna@ce.berkeley.edu)                         **
00016 **   Gregory L. Fenves (fenves@ce.berkeley.edu)                       **
00017 **   Filip C. Filippou (filippou@ce.berkeley.edu)                     **
00018 **                                                                    **
00019 ** ****************************************************************** */
00020 
00021 // $Revision: 1.2 $
00022 // $Date: 2002/06/08 16:17:26 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/system_of_eqn/linearSOE/itpack/ItpackLinSolver.h,v $
00024 
00025 #ifndef ItpackLinSolver_h
00026 #define ItpackLinSolver_h
00027 
00028 // Written: MHS
00029 // Created: Sept 2001
00030 //
00031 // Description: This file contains the class definition for ItpackLinSolver.
00032 // ItpackLinSolver is a concrete subclass of LinearSOE. It stores full
00033 // unsymmetric linear system of equations using 1d arrays in Fortan style
00034 
00035 #include <LinearSOESolver.h>
00036 
00037 // Adaptive methods
00038 #define ItpackJCG         1
00039 #define ItpackJSI         2
00040 #define ItpackSOR         3
00041 #define ItpackSSORCG      4
00042 #define ItpackSSORSI      5
00043 #define ItpackRSCG        6
00044 #define ItpackRSSI        7
00045 
00046 // Textbook methods
00047 #define ItpackJ           8
00048 #define ItpackGS          9
00049 #define ItpackSORFixed   10
00050 #define ItpackSSORFixed  11
00051 #define ItpackRS         12
00052 
00053 class ItpackLinSOE;
00054 
00055 class ItpackLinSolver : public LinearSOESolver
00056 {
00057  public:
00058   ItpackLinSolver(int method, int maxIter = 100, double omega = 1.0);
00059   ItpackLinSolver();
00060   virtual ~ItpackLinSolver();
00061   
00062   int solve(void);
00063   int setSize(void);
00064   int setLinearSOE(ItpackLinSOE &theSOE);
00065   
00066   int sendSelf(int commitTag, Channel &theChannel);
00067   int recvSelf(int commitTag, Channel &theChannel, 
00068                FEM_ObjectBroker &theBroker);
00069   
00070  private:
00071   // Sparse Ax=b represntation
00072   ItpackLinSOE *theSOE;
00073   
00074   int *IA;
00075   int *JA;
00076   
00077   // Size of system, i.e., the number of equations
00078   int n;
00079   
00080   // Parameter arrays sent to ITPACK subroutines
00081   int iparm[12];
00082   double rparm[12];
00083   
00084   // Workspace arrays sent to ITPACK subroutines
00085   int *iwksp;
00086   double *wksp;
00087   
00088   // Length of wksp array
00089   int nwksp;
00090   
00091   // Maximum number of iterations
00092   int maxIter;
00093 
00094   // Integer indicating which method to use
00095   int method;
00096 
00097   // Parameter for SOR and SSOR fixed omega methods
00098   double omega;
00099 };
00100 
00101 #endif

Generated on Mon Oct 23 15:05:28 2006 for OpenSees by doxygen 1.5.0