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
00034 #include <FedeasBond1Material.h>
00035
00036 FedeasBond1Material::FedeasBond1Material(int tag,
00037 double u1p, double q1p, double u2p, double u3p, double q3p,
00038 double u1n, double q1n, double u2n, double u3n, double q3n,
00039 double s0, double bb):
00040
00041 FedeasMaterial(tag, MAT_TAG_FedeasBond1, 6, 12)
00042 {
00043
00044 data[0] = u1p;
00045 data[1] = q1p;
00046 data[2] = u2p;
00047 data[3] = u3p;
00048 data[4] = q3p;
00049 data[5] = u1n;
00050 data[6] = q1n;
00051 data[7] = u2n;
00052 data[8] = u3n;
00053 data[9] = q3n;
00054 data[10] = s0;
00055 data[11] = bb;
00056
00057 tangent = q1p/u1p;
00058 tangentP = tangent;
00059 }
00060
00061 FedeasBond1Material::FedeasBond1Material(int tag, const Vector &d):
00062
00063 FedeasMaterial(tag, MAT_TAG_FedeasBond1, 6, 12)
00064 {
00065 if (d.Size() != numData) {
00066 opserr << "FedeasBond1Material::FedeasBond1Material -- not enough input arguments\n";
00067 exit(-1);
00068 }
00069
00070 for (int i = 0; i < numData; i++)
00071 data[i] = d(i);
00072
00073 tangent = data[1]/data[0];
00074 tangentP = tangent;
00075 }
00076
00077 FedeasBond1Material::FedeasBond1Material(void):
00078 FedeasMaterial(0, MAT_TAG_FedeasBond1, 6, 12)
00079 {
00080
00081 }
00082
00083 FedeasBond1Material::~FedeasBond1Material(void)
00084 {
00085
00086 }
00087
00088 UniaxialMaterial*
00089 FedeasBond1Material::getCopy(void)
00090 {
00091 Vector d(data, numData);
00092
00093 FedeasBond1Material *theCopy = new FedeasBond1Material(this->getTag(), d);
00094
00095
00096 for (int i = 0; i < 2*numHstv; i++)
00097 theCopy->hstv[i] = hstv[i];
00098
00099 theCopy->epsilonP = epsilonP;
00100 theCopy->sigmaP = sigmaP;
00101 theCopy->tangentP = tangentP;
00102
00103 theCopy->epsilon = epsilonP;
00104 theCopy->sigma = sigmaP;
00105 theCopy->tangent = tangentP;
00106
00107 return theCopy;
00108 }
00109
00110 double
00111 FedeasBond1Material::getInitialTangent(void)
00112 {
00113
00114 return data[1]/data[0];
00115 }