NatafProbabilityTransformation.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.2 $
00026 // $Date: 2003/10/27 23:45:45 $
00027 // $Source: /usr/local/cvs/OpenSees/SRC/reliability/analysis/transformation/NatafProbabilityTransformation.h,v $
00028 
00029 
00030 //
00031 // Written by Terje Haukaas (haukaas@ce.berkeley.edu)
00032 //
00033 
00034 #ifndef NatafProbabilityTransformation_h
00035 #define NatafProbabilityTransformation_h
00036 
00037 #include <Vector.h>
00038 #include <Matrix.h>
00039 #include <ReliabilityDomain.h>
00040 #include <MatrixOperations.h>
00041 
00042 class NatafProbabilityTransformation : public ProbabilityTransformation
00043 {
00044 
00045 public:
00046         NatafProbabilityTransformation(ReliabilityDomain *passedReliabilityDomain,
00047                                                   int printFlag);
00048         ~NatafProbabilityTransformation();
00049 
00050         int set_x(Vector x);
00051         int set_u(Vector u);
00052 
00053         int transform_x_to_u();
00054         int transform_u_to_x();
00055         int transform_u_to_x_andComputeJacobian();
00056 
00057         Vector get_x();
00058         Vector get_u();
00059         Matrix getJacobian_x_u();
00060         Matrix getJacobian_u_x();
00061 
00062         Vector meanSensitivityOf_x_to_u(Vector &x, int gradNumber);
00063         Vector stdvSensitivityOf_x_to_u(Vector &x, int gradNumber);
00064 
00065 protected:
00066 
00067 private:
00068 
00069         // Private data members
00070         Vector *x;
00071         Vector *u;
00072         Matrix *jacobian_x_u;
00073         Matrix *jacobian_u_x;
00074         ReliabilityDomain *theReliabilityDomain;
00075         MatrixOperations *theMatrixOperations;
00076         int nrv;
00077         Matrix *correlationMatrix;
00078         Matrix *lowerCholesky;
00079         Matrix *inverseLowerCholesky;
00080         int printFlag;
00081 
00082         // Private member functions
00083         void setCorrelationMatrix(int pertMeanOfThisRV, int pertStdvOfThisRV, double h);
00084         Matrix getJacobian_z_x(Vector x, Vector z);
00085         Vector z_to_x(Vector z);
00086         Vector x_to_z(Vector x);
00087 
00088         // Auxiliary member functions for manual evaluation of 
00089         // the integral equation to find Nataf correlation
00090         double phi2(double z_i, 
00091                                 double z_j, 
00092                                 double rho);
00093         double integrand(int rv_i,
00094                                      double z_i, 
00095                                      double mean_i,
00096                                      double stdv_i, 
00097                                      int rv_j,
00098                                      double z_j,
00099                                      double mean_j, 
00100                                      double stdv_j,
00101                                      double rho);
00102         double doubleIntegral(int rv_i,
00103                                                   double mean_i,
00104                                                   double stdv_i, 
00105                                                   int rv_j,
00106                                                   double mean_j, 
00107                                                   double stdv_j,
00108                                                   double rho);
00109         double residualFunction(double rho_original, 
00110                                                     double rho,
00111                                                     double rv_i, 
00112                                                     double mean_i, 
00113                                                     double stdv_i, 
00114                                                     double rv_j, 
00115                                                     double mean_j, 
00116                                                     double stdv_j);
00117         double solveForCorrelation(int rv_i, int rv_j, double rho_original);
00118 };
00119 
00120 #endif

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