Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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;
}
Esempio n. 5
0
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;
}
Esempio n. 6
0
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;
}