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