StandardLinearOscillatorDisplacementFilter.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.3 $
00026 // $Date: 2003/10/27 23:04:40 $
00027 // $Source: /usr/local/cvs/OpenSees/SRC/reliability/domain/filter/StandardLinearOscillatorDisplacementFilter.cpp,v $
00028 
00029 
00030 //
00031 // Written by Terje Haukaas (haukaas@ce.berkeley.edu)
00032 //
00033 
00034 #include <StandardLinearOscillatorDisplacementFilter.h>
00035 #include <Filter.h>
00036 #include <classTags.h>
00037 
00038 
00039 StandardLinearOscillatorDisplacementFilter::StandardLinearOscillatorDisplacementFilter(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 StandardLinearOscillatorDisplacementFilter::~StandardLinearOscillatorDisplacementFilter()
00048 {
00049 }
00050 
00051 double
00052 StandardLinearOscillatorDisplacementFilter::getAmplitude(double time)
00053 {
00054         if (time<0.0) {
00055                 return 0.0;
00056         }
00057         else {
00058                 double wd = wn * sqrt(1.0-pow(xi,2.0));
00059                 return ( sin(wd*time) * exp(-xi*wn*time)  );
00060         }
00061 }
00062 
00063 double
00064 StandardLinearOscillatorDisplacementFilter::getMaxAmplitude()
00065 {
00066         double wd = wn * sqrt(1.0-pow(xi,2.0));
00067 
00068         double result = wd/(xi*wn*sqrt((xi*xi*wn*wn+wd*wd)/(xi*xi*wn*wn)))
00069                 *exp(-xi*wn*(atan(wd/(xi*wn))/wd));
00070 
00071         return result;
00072 }
00073 
00074 double
00075 StandardLinearOscillatorDisplacementFilter::getTimeOfMaxAmplitude()
00076 {
00077         double wd = wn * sqrt(1.0-pow(xi,2.0));
00078 
00079         return (atan(wd/(xi*wn))/wd);
00080 }
00081 
00082 void
00083 StandardLinearOscillatorDisplacementFilter::Print(OPS_Stream &s, int flag)  
00084 {
00085 }

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