Bilinear.h

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 1999, 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 ** ****************************************************************** */
00020                                                                         
00021 // $Revision: 1.3 $
00022 // $Date: 2006/09/05 22:47:26 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/snap/Bilinear.h,v $
00024 //
00025 //
00026 // Bilinear.h: implementation of the Bilinear class from Fortran version.
00027 // Originally from SNAP PROGRAM by Luis Ibarra and Prof H.K. Krawinkler
00028 //
00029 // Written: A. Altoontash & Prof. G. Deierlein 12/01
00030 // Revised: 03/02
00031 //
00032 // Purpose: This file contains the implementation for the Bilinear class.
00033 //
00035 
00036 // Bilinear.h: interface for the Bilinear class.
00037 //
00039 
00040 #ifndef BILINEAR_H
00041 #define BILINEAR_H
00042 
00043 #include <UniaxialMaterial.h>
00044 #include <Vector.h>
00045 #include <stdio.h>
00046 #include <DamageModel.h>
00047 #include <MaterialResponse.h>
00048 
00049 class Bilinear : public UniaxialMaterial  
00050 {
00051         public:
00052         Bilinear();
00053         Bilinear(int tag, Vector inputParam ,DamageModel *strength,DamageModel *stiffness,DamageModel *capping);
00054         virtual ~Bilinear();
00055         
00056         const char *getClassType(void) const {return "Bilinear";};
00057   
00058         int setTrialStrain(double d, double strainRate = 0.0);
00059         double getStrain(void);
00060   
00061         double getStress(void);
00062         double getTangent(void);
00063         double getInitialTangent(void);
00064         int commitState(void);
00065         int revertToLastCommit(void);    
00066         int revertToStart(void);  
00067 
00068         //virtual
00069         UniaxialMaterial *getCopy(void);
00070   
00071         int sendSelf(int commitTag, Channel &theChannel);  
00072         int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00073   
00074         Response* setResponse(const char **argv, int argc, Information &matInfo);
00075         int getResponse(int responseID, Information &matInfo);
00076 
00077         void Print(OPS_Stream &s, int flag =0);
00078         int setParameter(const char **argv, int argc, Parameter &param);
00079         int    updateParameter          (int parameterID, Information &info);
00080         int    activateParameter        (int parameterID);
00081 
00082 /*
00083         // Reliability and sensitivity stuff
00084     double getInitialTangent        (void);
00085 
00086         double getStressSensitivity     (int gradNumber, bool conditional);
00087         double getStrainSensitivity     (int gradNumber);
00088         double getTangentSensitivity    (int gradNumber);
00089         double getDampTangentSensitivity(int gradNumber);
00090         double getRhoSensitivity        (int gradNumber);
00091         int    commitSensitivity        (double strainGradient, int gradNumber, int numGrads);
00092   */
00093 
00094  protected:
00095         void envelPosCap( double ekelstk, double fy, double ekhard, double dcap,
00096                                                    double ekcap, double fRes, double *fuPos, double d, double *f, double *ek );
00097         void envelNegCap( double ekelstk, double fy, double ekhard, double dcap,
00098                                                    double ekcap, double fRes, double *fuNeg, double d, double *f, double *ek );
00099         void recordInfo(int cond =0);
00100  
00101  private:
00102          // Input parameters
00103         double elstk, fyieldPos ,fyieldNeg, alfa;                       // Main properties
00104         double alfaCap, capDispPos, capDispNeg, Resfac;         // Cap properties
00105         int flagCapenv;
00106         DamageModel *StrDamage;
00107         DamageModel *StfDamage;
00108         DamageModel *CapDamage;
00109         
00110         // Hystory data
00111         double hsTrial[17], hsCommit[17], hsLastCommit[17];
00112         
00113         FILE *OutputFile;               // For debugging
00114 
00115         // Sensitivity related variables
00116     int parameterID;
00117         Matrix *SHVs;
00118 };
00119 
00120 #endif

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