/// <inheritdoc /> public override Matrix GetGlobalStifnessMatrix() { //step 1 : get points in local system //step 2 : get local stiffness matrix //step 3 : expand local stiffness matrix //step 4 : get global stiffness matrix //step 1 var ls = GetLocalPoints(); var xs = new double[] { ls[0].X, ls[1].X, ls[2].X }; var ys = new double[] { ls[0].Y, ls[1].Y, ls[2].Y }; //step 2 var kl = DktElement.GetStiffnessMatrix(xs, ys, this._thickness, this.ElasticModulus, this.PoissonRatio); //step 3 var currentOrder = new FluentElementPermuteManager.ElementLocalDof[] { new FluentElementPermuteManager.ElementLocalDof(0, DoF.Dz), new FluentElementPermuteManager.ElementLocalDof(0, DoF.Rx), new FluentElementPermuteManager.ElementLocalDof(0, DoF.Ry), new FluentElementPermuteManager.ElementLocalDof(1, DoF.Dz), new FluentElementPermuteManager.ElementLocalDof(1, DoF.Rx), new FluentElementPermuteManager.ElementLocalDof(1, DoF.Ry), new FluentElementPermuteManager.ElementLocalDof(2, DoF.Dz), new FluentElementPermuteManager.ElementLocalDof(2, DoF.Rx), new FluentElementPermuteManager.ElementLocalDof(2, DoF.Ry), }; var kle = FluentElementPermuteManager.FullyExpand(kl, currentOrder, 3); var lambda = GetTransformationMatrix(); var t = Matrix.DiagonallyRepeat(lambda.Transpose(), 6); // eq. 5-16 page 78 (87 of file) //step 4 : get global stiffness matrix var buf = t.Transpose() * kle * t; //eq. 5-15 p77 return(buf); }
public Matrix GetLocalPlateBendingStiffnessMatrix() { //dkt //step 1 : get points in local system //step 2 : get local stiffness matrix //step 3 : expand local stiffness matrix //step 4 : get global stiffness matrix //step 1 var ls = GetLocalPoints(); var xs = new double[] { ls[0].X, ls[1].X, ls[2].X }; var ys = new double[] { ls[0].Y, ls[1].Y, ls[2].Y }; //step 2 var kl = DktElement.GetStiffnessMatrix(xs, ys, this._thickness, this.ElasticModulus, this.PoissonRatio); //step 3 var currentOrder = new ElementPermuteHelper.ElementLocalDof[] { new ElementPermuteHelper.ElementLocalDof(0, DoF.Dz), new ElementPermuteHelper.ElementLocalDof(0, DoF.Rx), new ElementPermuteHelper.ElementLocalDof(0, DoF.Ry), new ElementPermuteHelper.ElementLocalDof(1, DoF.Dz), new ElementPermuteHelper.ElementLocalDof(1, DoF.Rx), new ElementPermuteHelper.ElementLocalDof(1, DoF.Ry), new ElementPermuteHelper.ElementLocalDof(2, DoF.Dz), new ElementPermuteHelper.ElementLocalDof(2, DoF.Rx), new ElementPermuteHelper.ElementLocalDof(2, DoF.Ry), }; var kle = ElementPermuteHelper.FullyExpand(kl, currentOrder, 3); return(kle); }