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.3 $
00022 // $Date: 2001/06/14 05:26:47 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/convergenceTest/CTestNormUnbalance.h,v $
00024
00025
00026 // File: ~/convergenceTest/CTestNormUnbalance.h
00027 //
00028 // Written: fmk
00029 // Date: 09/98
00030 // Revised:
00031 //
00032 // Purpose: This file contains the class definition for CTestNormUnbalance.
00033 // A CTestNormUnbalance object tests for convergence using the norm of the
00034 // right hand side vector of the LinearSOE object passed in the constructor
00035 // and a tolerance, set in the constructor
00036
00037 #ifndef CTestNormUnbalance_h
00038 #define CTestNormUnbalance_h
00039
00040 #include <ConvergenceTest.h>
00041 #include <bool.h>
00042 #include <EquiSolnAlgo.h>
00043 #include <LinearSOE.h>
00044
00045
00056 class CTestNormUnbalance: public ConvergenceTest
00057 {
00058 public:
00060 CTestNormUnbalance();
00064 CTestNormUnbalance(double tol, int maxNumIter, int printFlag);
00065
00073 ~CTestNormUnbalance();
00074
00075
00077 ConvergenceTest *getCopy( int interations ) ;
00078
00079
00081 void setTolerance(double newTol);
00083 int setEquiSolnAlgo(EquiSolnAlgo &theAlgo);
00084
00086 int test(void);
00088 int start(void);
00089
00091 int getNumTests(void);
00093 int getMaxNumTests(void);
00095 double getRatioNumToMax(void);
00097 const Vector &getNorms(void);
00098
00100 int sendSelf(int commitTag, Channel &theChannel);
00102 int recvSelf(int commitTag, Channel &theChannel,
00103 FEM_ObjectBroker &theBroker);
00104
00105 protected:
00106
00107 private:
00109 LinearSOE *theSOE;
00111 double tol;
00112
00113 int maxNumIter;
00114 int currentIter;
00115 int printFlag;
00116
00117 Vector norms; // vector to hold the norms
00118 };
00119
00120 #endif