ElasticBeam3d::ElasticBeam3d(int tag, double a, double e, double g, double jx, double iy, double iz, int Nd1, int Nd2, CrdTransf &coordTransf, double r, int cm, int sectTag) :Element(tag,ELE_TAG_ElasticBeam3d), A(a), E(e), G(g), Jx(jx), Iy(iy), Iz(iz), rho(r), cMass(cm), sectionTag(sectTag), Q(12), q(6), connectedExternalNodes(2), theCoordTransf(0) { connectedExternalNodes(0) = Nd1; connectedExternalNodes(1) = Nd2; theCoordTransf = coordTransf.getCopy3d(); if (!theCoordTransf) { opserr << "ElasticBeam3d::ElasticBeam3d -- failed to get copy of coordinate transformation\n"; exit(-1); } q0[0] = 0.0; q0[1] = 0.0; q0[2] = 0.0; q0[3] = 0.0; q0[4] = 0.0; p0[0] = 0.0; p0[1] = 0.0; p0[2] = 0.0; p0[3] = 0.0; p0[4] = 0.0; // set node pointers to NULL for (int i=0; i<2; i++) theNodes[i] = 0; }
// constructors: PileToe3D::PileToe3D(int tag, int Nd1, int BNd1, int BNd2, double rad, double k, CrdTransf &coordTransf) :Element(tag,ELE_TAG_PileToe3D), crdTransf(0), externalNodes(PT3D_NUM_NODE), externalBNodes(2), mTangentStiffness(PT3D_NUM_DOF, PT3D_NUM_DOF), mInternalForces(PT3D_NUM_DOF) { externalNodes(0) = Nd1; externalBNodes(0) = BNd1; externalBNodes(1) = BNd2; mRadius = rad; mSubgradeCoeff = k; mCC = mRadius; // Initial value of mCC --> Total area // get copy of the transformation & material object crdTransf = coordTransf.getCopy3d(); // check it: if (!crdTransf) { opserr << "Error: PileToe3D:PileToe3D: could not create copy of coordinate transformation object" << endln; exit(-1); } // element tag for debugging MyTag = tag; // set initialization to true for setDomain function mInitialize = true; }
ElasticBeam3d::ElasticBeam3d(int tag, int Nd1, int Nd2, SectionForceDeformation *section, CrdTransf &coordTransf, double r, int cm) :Element(tag,ELE_TAG_ElasticBeam3d), Q(12), q(6), connectedExternalNodes(2), theCoordTransf(0) { if (section != 0) { sectionTag = section->getTag(); E = 1.0; G = 1.0; Jx = 0.0; rho = r; cMass = cm; const Matrix §Tangent = section->getInitialTangent(); const ID §Code = section->getType(); for (int i=0; i<sectCode.Size(); i++) { int code = sectCode(i); switch(code) { case SECTION_RESPONSE_P: A = sectTangent(i,i); break; case SECTION_RESPONSE_MZ: Iz = sectTangent(i,i); break; case SECTION_RESPONSE_MY: Iy = sectTangent(i,i); break; case SECTION_RESPONSE_T: Jx = sectTangent(i,i); break; default: break; } } } if (Jx == 0.0) { opserr << "ElasticBeam3d::ElasticBeam3d -- no torsion in section -- setting GJ = 1.0e10\n"; Jx = 1.0e10; } connectedExternalNodes(0) = Nd1; connectedExternalNodes(1) = Nd2; theCoordTransf = coordTransf.getCopy3d(); if (!theCoordTransf) { opserr << "ElasticBeam3d::ElasticBeam3d -- failed to get copy of coordinate transformation\n"; exit(-1); } q0[0] = 0.0; q0[1] = 0.0; q0[2] = 0.0; q0[3] = 0.0; q0[4] = 0.0; p0[0] = 0.0; p0[1] = 0.0; p0[2] = 0.0; p0[3] = 0.0; p0[4] = 0.0; // set node pointers to NULL for (int i=0; i<2; i++) theNodes[i] = 0; }
DispBeamColumn3d::DispBeamColumn3d(int tag, int nd1, int nd2, int numSec, SectionForceDeformation **s, BeamIntegration &bi, CrdTransf &coordTransf, double r, int cm) :Element (tag, ELE_TAG_DispBeamColumn3d), numSections(numSec), theSections(0), crdTransf(0), beamInt(0), connectedExternalNodes(2), Q(12), q(6), rho(r), cMass(cm), parameterID(0) { // Allocate arrays of pointers to SectionForceDeformations theSections = new SectionForceDeformation *[numSections]; if (theSections == 0) { opserr << "DispBeamColumn3d::DispBeamColumn3d - failed to allocate section model pointer\n"; exit(-1); } for (int i = 0; i < numSections; i++) { // Get copies of the material model for each integration point theSections[i] = s[i]->getCopy(); // Check allocation if (theSections[i] == 0) { opserr << "DispBeamColumn3d::DispBeamColumn3d -- failed to get a copy of section model\n"; exit(-1); } } beamInt = bi.getCopy(); if (beamInt == 0) { opserr << "DispBeamColumn3d::DispBeamColumn3d - failed to copy beam integration\n"; exit(-1); } crdTransf = coordTransf.getCopy3d(); if (crdTransf == 0) { opserr << "DispBeamColumn3d::DispBeamColumn3d - failed to copy coordinate transformation\n"; exit(-1); } // Set connected external node IDs connectedExternalNodes(0) = nd1; connectedExternalNodes(1) = nd2; theNodes[0] = 0; theNodes[1] = 0; q0[0] = 0.0; q0[1] = 0.0; q0[2] = 0.0; q0[3] = 0.0; q0[4] = 0.0; p0[0] = 0.0; p0[1] = 0.0; p0[2] = 0.0; p0[3] = 0.0; p0[4] = 0.0; }