ItpackLinSolver.hGo 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 |