full constructor
| 108 | |
| 109 | // full constructor |
| 110 | SSPbrick::SSPbrick(int tag, int Nd1, int Nd2, int Nd3, int Nd4, int Nd5, int Nd6, int Nd7, int Nd8, |
| 111 | NDMaterial &theMat, double b1, double b2, double b3) |
| 112 | :Element(tag,ELE_TAG_SSPbrick), |
| 113 | theMaterial(0), |
| 114 | mExternalNodes(SSPB_NUM_NODE), |
| 115 | mTangentStiffness(SSPB_NUM_DOF,SSPB_NUM_DOF), |
| 116 | mInternalForces(SSPB_NUM_DOF), |
| 117 | Q(SSPB_NUM_DOF), |
| 118 | mMass(SSPB_NUM_DOF,SSPB_NUM_DOF), |
| 119 | mNodeCrd(SSPB_NUM_DIM,SSPB_NUM_NODE), |
| 120 | mVol(0), |
| 121 | Bnot(6,SSPB_NUM_DOF), |
| 122 | Kstab(SSPB_NUM_DOF,SSPB_NUM_DOF), |
| 123 | xi(8), |
| 124 | et(8), |
| 125 | ze(8), |
| 126 | hut(8), |
| 127 | hus(8), |
| 128 | hst(8), |
| 129 | hstu(8) |
| 130 | { |
| 131 | mExternalNodes(0) = Nd1; |
| 132 | mExternalNodes(1) = Nd2; |
| 133 | mExternalNodes(2) = Nd3; |
| 134 | mExternalNodes(3) = Nd4; |
| 135 | mExternalNodes(4) = Nd5; |
| 136 | mExternalNodes(5) = Nd6; |
| 137 | mExternalNodes(6) = Nd7; |
| 138 | mExternalNodes(7) = Nd8; |
| 139 | |
| 140 | b[0] = b1; |
| 141 | b[1] = b2; |
| 142 | b[2] = b3; |
| 143 | |
| 144 | applyLoad = 0; |
| 145 | |
| 146 | appliedB[0] = 0.0; |
| 147 | appliedB[1] = 0.0; |
| 148 | appliedB[2] = 0.0; |
| 149 | |
| 150 | // get copy of the material object |
| 151 | NDMaterial *theMatCopy = theMat.getCopy("ThreeDimensional"); |
| 152 | if (theMatCopy != 0) { |
| 153 | theMaterial = (NDMaterial *)theMatCopy; |
| 154 | } else { |
| 155 | opserr << "SSPbrick::SSPbrick - failed to get copy of material model\n";; |
| 156 | } |
| 157 | |
| 158 | // check material |
| 159 | if (theMaterial == 0) { |
| 160 | opserr << "SSPbrick::SSPbrick - failed to allocate material model pointer\n"; |
| 161 | exit(-1); |
| 162 | } |
| 163 | |
| 164 | mInitialize = true; |
| 165 | } |
| 166 | |
| 167 | // null constructor |