SearchWithStepSizeAndStepDirection.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 2001, 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 ** Reliability module developed by:                                   **
00020 **   Terje Haukaas (haukaas@ce.berkeley.edu)                          **
00021 **   Armen Der Kiureghian (adk@ce.berkeley.edu)                       **
00022 **                                                                    **
00023 ** ****************************************************************** */
00024                                                                         
00025 // $Revision: 1.4 $
00026 // $Date: 2003/10/27 23:45:42 $
00027 // $Source: /usr/local/cvs/OpenSees/SRC/reliability/analysis/designPoint/SearchWithStepSizeAndStepDirection.h,v $
00028 
00029 
00030 //
00031 // Written by Terje Haukaas (haukaas@ce.berkeley.edu) 
00032 //
00033 
00034 #ifndef SearchWithStepSizeAndStepDirection_h
00035 #define SearchWithStepSizeAndStepDirection_h
00036 
00037 #include <FindDesignPointAlgorithm.h>
00038 #include <StepSizeRule.h>
00039 #include <SearchDirection.h>
00040 #include <ProbabilityTransformation.h>
00041 #include <GFunEvaluator.h>
00042 #include <GradGEvaluator.h>
00043 #include <HessianApproximation.h>
00044 #include <ReliabilityConvergenceCheck.h>
00045 #include <Matrix.h>
00046 #include <Vector.h>
00047 #include <ReliabilityDomain.h>
00048 
00049 #include <fstream>
00050 using std::ofstream;
00051 
00052 class SearchWithStepSizeAndStepDirection : public FindDesignPointAlgorithm
00053 {
00054 
00055 public:
00056 
00057         // Constructor and destructor
00058         SearchWithStepSizeAndStepDirection(
00059                                         int passedMaxNumberOfIterations, 
00060                                         GFunEvaluator *passedGFunEvaluator,
00061                                         GradGEvaluator *passedGradGEvaluator,
00062                                         StepSizeRule *passedStepSizeRule,
00063                                         SearchDirection *passedSearchDirection,
00064                                         ProbabilityTransformation *passedProbabilityTransformation,
00065                                         HessianApproximation *theHessianApproximation,
00066                                         ReliabilityConvergenceCheck *theReliabilityConvergenceCheck,
00067                                         int printFlag,
00068                                         char *fileNamePrint,
00069                                         Vector *startPoint);
00070         ~SearchWithStepSizeAndStepDirection();
00071         
00072         int findDesignPoint(ReliabilityDomain *theReliabilityDomain);
00073 
00074         Vector get_x();
00075         Vector get_u();
00076         Vector get_alpha();
00077         Vector get_gamma();
00078         int getNumberOfSteps();
00079         Vector getSecondLast_u();
00080         Vector getSecondLast_alpha();
00081         Vector getLastSearchDirection();
00082         double getFirstGFunValue();
00083         double getLastGFunValue();
00084         Vector getGradientInStandardNormalSpace();
00085         int    getNumberOfEvaluations();
00086 
00087 protected:
00088 
00089 private:        
00090 
00091         // The reliability domain and tools for the analysis
00092         ReliabilityDomain *theReliabilityDomain;
00093         GFunEvaluator *theGFunEvaluator;
00094         GradGEvaluator *theGradGEvaluator;
00095         StepSizeRule *theStepSizeRule;
00096         SearchDirection *theSearchDirection;
00097         ProbabilityTransformation *theProbabilityTransformation;
00098         HessianApproximation *theHessianApproximation;
00099         ReliabilityConvergenceCheck *theReliabilityConvergenceCheck;
00100 
00101         // Private member functions to do the job
00102         int doTheActualSearch(bool doRvProjection);
00103         int doRvProjection(Vector uOld, Vector uNew);
00104 
00105         // Data members set when the object is created
00106         int maxNumberOfIterations;
00107 
00108         // Data members where the results are to be stored
00109         Vector x;
00110         Vector u;
00111         Vector alpha;
00112         Vector gradientInStandardNormalSpace;
00113         Vector gamma;
00114         Vector uSecondLast;
00115         Vector alphaSecondLast;
00116         int i;
00117         Vector searchDirection;
00118         double Gfirst;
00119         double Glast;
00120 
00121         // Data members set through the call when a job is to be done
00122         Vector *startPoint;
00123         Vector *designPoint_uStar;
00124 
00125         int printFlag;
00126         char *fileNamePrint;
00127         int numberOfEvaluations;
00128 };
00129 
00130 #endif

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