Type1LargestValueRV.cpp

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.7 $
00026 // $Date: 2004/08/27 17:51:50 $
00027 // $Source: /usr/local/cvs/OpenSees/SRC/reliability/domain/distributions/Type1LargestValueRV.cpp,v $
00028 
00029 
00030 //
00031 // Written by Terje Haukaas (haukaas@ce.berkeley.edu) 
00032 //
00033 
00034 #include <Type1LargestValueRV.h>
00035 #include <math.h>
00036 #include <string.h>
00037 #include <classTags.h>
00038 #include <OPS_Globals.h>
00039 
00040 Type1LargestValueRV::Type1LargestValueRV(int passedTag, 
00041                  double passedMean,
00042                  double passedStdv,
00043                  double passedStartValue)
00044 :RandomVariable(passedTag, RANDOM_VARIABLE_type1largestvalue)
00045 {
00046         tag = passedTag ;
00047         double pi = 3.14159265358979;
00048         double gamma = 0.5772156649;
00049         u = passedMean - (gamma*sqrt(6.0)*passedStdv)/pi;
00050         alpha = pi / ( sqrt(6.0) * passedStdv );
00051         startValue = passedStartValue;
00052 }
00053 Type1LargestValueRV::Type1LargestValueRV(int passedTag, 
00054                  double passedParameter1,
00055                  double passedParameter2,
00056                  double passedParameter3,
00057                  double passedParameter4,
00058                  double passedStartValue)
00059 :RandomVariable(passedTag, RANDOM_VARIABLE_type1largestvalue)
00060 {
00061         tag = passedTag ;
00062         u = passedParameter1;
00063         alpha = passedParameter2;
00064         startValue = passedStartValue;
00065 }
00066 Type1LargestValueRV::Type1LargestValueRV(int passedTag, 
00067                  double passedMean,
00068                  double passedStdv)
00069 :RandomVariable(passedTag, RANDOM_VARIABLE_type1largestvalue)
00070 {
00071         tag = passedTag ;
00072         double pi = 3.14159265358979;
00073         double gamma = 0.5772156649;
00074         u = passedMean - (gamma*sqrt(6.0)*passedStdv)/pi;
00075         alpha = pi / ( sqrt(6.0) * passedStdv );
00076         startValue = getMean();
00077 }
00078 Type1LargestValueRV::Type1LargestValueRV(int passedTag, 
00079                  double passedParameter1,
00080                  double passedParameter2,
00081                  double passedParameter3,
00082                  double passedParameter4)
00083 :RandomVariable(passedTag, RANDOM_VARIABLE_type1largestvalue)
00084 {
00085         tag = passedTag ;
00086         u = passedParameter1;
00087         alpha = passedParameter2;
00088         startValue = getMean();
00089 }
00090 
00091 
00092 Type1LargestValueRV::~Type1LargestValueRV()
00093 {
00094 }
00095 
00096 
00097 void
00098 Type1LargestValueRV::Print(OPS_Stream &s, int flag)
00099 {
00100 }
00101 
00102 
00103 double
00104 Type1LargestValueRV::getPDFvalue(double rvValue)
00105 {
00106         return alpha * exp(-alpha*(rvValue-u)-exp(-alpha*(rvValue-u)));
00107 }
00108 
00109 
00110 double
00111 Type1LargestValueRV::getCDFvalue(double rvValue)
00112 {
00113         return exp(-exp(-alpha*(rvValue-u)));
00114 }
00115 
00116 
00117 double
00118 Type1LargestValueRV::getInverseCDFvalue(double probValue)
00119 {
00120         return (alpha*u - log(-log(probValue))) / alpha;
00121 }
00122 
00123 
00124 const char *
00125 Type1LargestValueRV::getType()
00126 {
00127         return "TYPE1LARGESTVALUE";
00128 }
00129 
00130 
00131 double 
00132 Type1LargestValueRV::getMean()
00133 {
00134         double gamma = 0.5772156649;
00135         return u+gamma/alpha;
00136 }
00137 
00138 
00139 
00140 double 
00141 Type1LargestValueRV::getStdv()
00142 {
00143         double pi = 3.14159265358979;
00144         return pi/(sqrt(6.0)*alpha);
00145 }
00146 
00147 
00148 double 
00149 Type1LargestValueRV::getStartValue()
00150 {
00151         return startValue;
00152 }
00153 
00154 
00155 double Type1LargestValueRV::getParameter1()  {return u;}
00156 double Type1LargestValueRV::getParameter2()  {return alpha;}
00157 double Type1LargestValueRV::getParameter3()  {opserr<<"No such parameter in r.v. #"<<tag<<endln; return 0.0;}
00158 double Type1LargestValueRV::getParameter4()  {opserr<<"No such parameter in r.v. #"<<tag<<endln; return 0.0;}

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