00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
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
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
00056 FedeasMaterial(tag, MAT_TAG_FedeasSteel1, 7, 7)
00057 {
00058 data[0] = fy;
00059 data[1] = E0;
00060 data[2] = b;
00061
00062
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
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
00089 }
00090
00091 FedeasSteel1Material::~FedeasSteel1Material(void)
00092 {
00093
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
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
00121 return data[1];
00122 }