TrapezoidalModulatingFunction.cppGo 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.2 $ 00026 // $Date: 2003/10/27 23:04:40 $ 00027 // $Source: /usr/local/cvs/OpenSees/SRC/reliability/domain/modulatingFunction/TrapezoidalModulatingFunction.cpp,v $ 00028 00029 00030 // 00031 // Written by Terje Haukaas (haukaas@ce.berkeley.edu) 00032 // 00033 00034 #include <TrapezoidalModulatingFunction.h> 00035 #include <ModulatingFunction.h> 00036 #include <classTags.h> 00037 00038 00039 TrapezoidalModulatingFunction::TrapezoidalModulatingFunction(int tag, 00040 Filter *theFilt, 00041 double pt1, 00042 double pt2, 00043 double pt3, 00044 double pt4, 00045 double pamplitude) 00046 :ModulatingFunction(tag,MODULATING_FUNCTION_trapezoidal) 00047 { 00048 t1 = pt1; 00049 t2 = pt2; 00050 t3 = pt3; 00051 t4 = pt4; 00052 amplitude = pamplitude; 00053 00054 if (t1>t2 || t2>t3 || t3>t4) { 00055 opserr << "WARNING: Inconsistent input to Trapezoidal Modulating Function" << endln; 00056 } 00057 00058 theFilter = theFilt; 00059 } 00060 00061 TrapezoidalModulatingFunction::~TrapezoidalModulatingFunction() 00062 { 00063 } 00064 00065 double 00066 TrapezoidalModulatingFunction::getAmplitude(double time) 00067 { 00068 if (time < t1) { 00069 return 0.0; 00070 } 00071 else if (time < t2) { 00072 double a=amplitude/(t2-t1); 00073 return (a*(time-t1)); 00074 } 00075 else if (time < t3) { 00076 return amplitude; 00077 } 00078 else if (time < t4) { 00079 double a=-amplitude/(t4-t3); 00080 return (amplitude+a*(time-t3)); 00081 } 00082 else { 00083 return 0.0; 00084 } 00085 } 00086 00087 Filter * 00088 TrapezoidalModulatingFunction::getFilter() 00089 { 00090 return theFilter; 00091 } 00092 00093 double 00094 TrapezoidalModulatingFunction::getMaxAmplitude() 00095 { 00096 return amplitude; 00097 } 00098 00099 void 00100 TrapezoidalModulatingFunction::Print(OPS_Stream &s, int flag) 00101 { 00102 } 00103 |