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