const Matrix & PileToe3D::getTangentStiff(void) { //double mPi = 4.0*atan(1); const double mPi = 3.1415926535897; double mArea = mPi* mRadius*mRadius; double mII = mPi*mRadius*mRadius*mRadius*mRadius/4.0; // initialize Kt mTangentStiffness.Zero(); /* mTangentStiffness(0,0) = mSubgradeCoeff*mArea; mTangentStiffness(1,1) = mSubgradeCoeff*mArea; mTangentStiffness(2,2) = mSubgradeCoeff*mArea; mTangentStiffness(3,3) = mSubgradeCoeff*mII; mTangentStiffness(4,4) = mSubgradeCoeff*mII; mTangentStiffness(5,5) = mSubgradeCoeff*mII; mTangentStiffness(0,0) = mSubgradeCoeff*mArea; mTangentStiffness(4,4) = mSubgradeCoeff*mII; mTangentStiffness(5,5) = mSubgradeCoeff*mII; */ mTangentStiffness(2,2) = mSubgradeCoeff*mArea; mTangentStiffness(3,3) = mSubgradeCoeff*mII; mTangentStiffness(4,4) = mSubgradeCoeff*mII; return mTangentStiffness; }
const Matrix & SSPquadUP::getTangentStiff(void) // this function computes the tangent stiffness matrix for the element { // solid phase stiffness matrix GetSolidStiffness(); // assemble full element stiffness matrix [ K 0 ] // comprised of K submatrix [ 0 0 ] mTangentStiffness.Zero(); for (int i = 0; i < 4; i++) { int I = 2*i; int Ip1 = 2*i+1; int II = 3*i; int IIp1 = 3*i+1; for (int j = 0; j < 4; j++) { int J = 2*j; int Jp1 = 2*j+1; int JJ = 3*j; int JJp1 = 3*j+1; // contribution of solid phase stiffness matrix mTangentStiffness(II,JJ) = mSolidK(I,J); mTangentStiffness(IIp1,JJ) = mSolidK(Ip1,J); mTangentStiffness(IIp1,JJp1) = mSolidK(Ip1,Jp1); mTangentStiffness(II,JJp1) = mSolidK(I,Jp1); } } return mTangentStiffness; }
const Matrix & BeamEndContact3D::getTangentStiff(void) // this function computes the tangent stiffness matrix for the element { mTangentStiffness.Zero(); if (inContact) { for (int i = 0; i <= 2; i++) { mTangentStiffness(i,9) = mNormal(i); mTangentStiffness(i+6,9) = -mNormal(i); mTangentStiffness(9,i) = mNormal(i); mTangentStiffness(9,i+6) = -mNormal(i); } mTangentStiffness(10,10) = 1.0; mTangentStiffness(11,11) = 1.0; } else { mTangentStiffness(9,9) = 1.0; mTangentStiffness(10,10) = 1.0; mTangentStiffness(11,11) = 1.0; } return mTangentStiffness; }
const Matrix & BeamContact2D::getTangentStiff(void) // this function computes the tangent stiffness matrix for the element { mTangentStiffness.Zero(); if (inContact) { Matrix Cmat = theMaterial->getTangent(); double Css = Cmat(1,1); double Csn = Cmat(1,2); for (int i = 0; i < BC2D_NUM_DOF-2; i++) { for (int j = 0; j < BC2D_NUM_DOF-2; j++) { mTangentStiffness(i,j) = mBs(i)*mBs(j)*Css; } } for (int i = 0; i < BC2D_NUM_DOF-2; i++) { mTangentStiffness(8,i) = -mBn(i); mTangentStiffness(i,8) = -mBn(i) + Csn*mBs(i); } mTangentStiffness(9,9) = 1.0; } else { mTangentStiffness(8,8) = 1.0; mTangentStiffness(9,9) = 1.0; } return mTangentStiffness; }
const Matrix & BeamEndContact3Dp::getTangentStiff(void) // this function computes the tangent stiffness matrix for the element { mTangentStiffness.Zero(); double tangentTerm; if (inContact) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { tangentTerm = mPenalty*mNormal(i)*mNormal(j); mTangentStiffness(i,j) = tangentTerm; mTangentStiffness(i,6+j) = -tangentTerm; mTangentStiffness(6+i,j) = -tangentTerm; mTangentStiffness(6+i,6+j) = tangentTerm; } } } return mTangentStiffness; }
const Matrix & BeamContact2Dp::getTangentStiff(void) // this function computes the tangent stiffness matrix for the element { mTangentStiffness.Zero(); if (inContact) { Matrix Cmat = theMaterial->getTangent(); double Css = Cmat(1,1); double Csn = Cmat(1,2); for (int i = 0; i < BC2D_NUM_DOF; i++) { for (int j = 0; j < BC2D_NUM_DOF; j++) { mTangentStiffness(i,j) = mBs(i)*mBs(j)*Css - mPenalty*(Csn*mBs(i)*mBn(j) - mBn(i)*mBn(j)); } } } return mTangentStiffness; }