FedeasSteel1Material.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 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.5 $
00022 // $Date: 2004/07/15 21:36:46 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/fedeas/FedeasSteel1Material.cpp,v $
00024                                                                       
00025 // Written: MHS
00026 // Created: Jan 2001
00027 //
00028 // Description: This file contains the class definition for 
00029 // FedeasSteel1Material. FedeasSteel1Material wraps the FEDEAS
00030 // 1d material subroutine Steel_1.
00031 
00032 #include <stdlib.h>
00033 #include <FedeasSteel1Material.h>
00034 
00035 FedeasSteel1Material::FedeasSteel1Material(int tag,
00036                                          double fy, double E0, double b,
00037                                          double a1, double a2, double a3, double a4):
00038 // 7 history variables and 7 material parameters
00039 FedeasMaterial(tag, MAT_TAG_FedeasSteel1, 7, 7)
00040 {
00041         data[0]  = fy;
00042         data[1]  = E0;
00043         data[2]  = b;
00044         data[3]  = a1;
00045         data[4]  = a2;
00046         data[5]  = a3;
00047         data[6]  = a4;
00048 
00049         tangent = E0;
00050         tangentP = E0;
00051 }
00052 
00053 FedeasSteel1Material::FedeasSteel1Material(int tag,
00054                                          double fy, double E0, double b):
00055 // 7 history variables and 7 material parameters
00056 FedeasMaterial(tag, MAT_TAG_FedeasSteel1, 7, 7)
00057 {
00058         data[0]  = fy;
00059         data[1]  = E0;
00060         data[2]  = b;
00061 
00062         // Default values for no isotropic hardening
00063         data[3]  = 0.0;
00064         data[4]  = 1.0;
00065         data[5]  = 0.0;
00066         data[6]  = 1.0;
00067 
00068         tangent = E0;
00069         tangentP = E0;
00070 }
00071 
00072 FedeasSteel1Material::FedeasSteel1Material(int tag, const Vector &d):
00073 // 7 history variables and 7 material parameters
00074 FedeasMaterial(tag, MAT_TAG_FedeasSteel1, 7, 7)
00075 {
00076   if (d.Size() != numData) {
00077     opserr << "FedeasSteel1Material::FedeasSteel1Material -- not enough input arguments\n";
00078     exit(-1);
00079   }
00080 
00081   for (int i = 0; i < numData; i++)
00082     data[i] = d(i);
00083 }
00084 
00085 FedeasSteel1Material::FedeasSteel1Material(void):
00086 FedeasMaterial(0, MAT_TAG_FedeasSteel1, 7, 7)
00087 {
00088         // Does nothing
00089 }
00090 
00091 FedeasSteel1Material::~FedeasSteel1Material(void)
00092 {
00093         // Does nothing
00094 }
00095 
00096 UniaxialMaterial*
00097 FedeasSteel1Material::getCopy(void)
00098 {
00099   Vector d(data, numData);
00100 
00101   FedeasSteel1Material *theCopy = new FedeasSteel1Material(this->getTag(), d);
00102   
00103   // Copy history variables
00104   for (int i = 0; i < 2*numHstv; i++)
00105     theCopy->hstv[i] = hstv[i];
00106   
00107   theCopy->epsilonP = epsilonP;
00108   theCopy->sigmaP   = sigmaP;
00109   theCopy->tangentP = tangentP;
00110 
00111   theCopy->epsilon = epsilonP;
00112   theCopy->sigma = sigmaP;
00113   theCopy->tangent = tangentP;    
00114   return theCopy;
00115 }
00116 
00117 double
00118 FedeasSteel1Material::getInitialTangent(void)
00119 {
00120         //return E;
00121         return data[1];
00122 }

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