KooFilter.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.1 $
00026 // $Date: 2003/10/27 23:04:40 $
00027 // $Source: /usr/local/cvs/OpenSees/SRC/reliability/domain/filter/KooFilter.cpp,v $
00028 
00029 
00030 //
00031 // Written by Terje Haukaas (haukaas@ce.berkeley.edu)
00032 //
00033 
00034 #include <KooFilter.h>
00035 #include <Filter.h>
00036 #include <classTags.h>
00037 
00038 
00039 KooFilter::KooFilter(int tag, double period, double dampingRatio)
00040 :Filter(tag,FILTER_standardLinearOscillator)
00041 {
00042         double pi = 3.14159265358979;
00043         wn = 2*pi/period;
00044         xi = dampingRatio;
00045 }
00046 
00047 KooFilter::~KooFilter()
00048 {
00049 }
00050 
00051 double
00052 KooFilter::getAmplitude(double time)
00053 {
00054         if (time<0.0) {
00055 
00056                 return 0.0;
00057 
00058         }
00059         else {
00060 
00061                 double mysqrt = sqrt(1.0-pow(xi,2.0));
00062 
00063                 double wd = wn * mysqrt;
00064 
00065                 double term1 = wn/mysqrt * sin(wd*time);
00066 
00067                 double term2 = 2.0*xi*wn*cos(wd*time);
00068 
00069                 double theWholeThing = -(term1+term2)*exp(-xi*wn*time);
00070 
00071                 return theWholeThing;
00072         }
00073 }
00074 
00075 double
00076 KooFilter::getMaxAmplitude()
00077 {
00078         double wd = wn * sqrt(1.0-pow(xi,2.0));
00079 
00080         double result = wd/(xi*wn*sqrt((xi*xi*wn*wn+wd*wd)/(xi*xi*wn*wn)))
00081                 *exp(-xi*wn*(atan(wd/(xi*wn))/wd));
00082 
00083         return result;
00084 }
00085 
00086 double
00087 KooFilter::getTimeOfMaxAmplitude()
00088 {
00089 
00090         double wd = wn * sqrt(1.0-pow(xi,2.0));
00091 
00092         return (atan(wd/(xi*wn))/wd);
00093 }
00094 
00095 void
00096 KooFilter::Print(OPS_Stream &s, int flag)  
00097 {
00098 }

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