/// <inheritdoc/> public FluentElementPermuteManager.ElementLocalDof[] GetDofOrder(Element targetElement) { var n = targetElement.Nodes.Length; var buf = new FluentElementPermuteManager.ElementLocalDof[n]; for (int i = 0; i < n; i++) { buf[i] = new FluentElementPermuteManager.ElementLocalDof(i, DoF.Rx); } return(buf); }
/// <inheritdoc/> public FluentElementPermuteManager.ElementLocalDof[] GetDofOrder(Element targetElement) { var buf = new FluentElementPermuteManager.ElementLocalDof[] { new FluentElementPermuteManager.ElementLocalDof(0, DoF.Dx), new FluentElementPermuteManager.ElementLocalDof(0, DoF.Dy), new FluentElementPermuteManager.ElementLocalDof(1, DoF.Dx), new FluentElementPermuteManager.ElementLocalDof(1, DoF.Dy), new FluentElementPermuteManager.ElementLocalDof(2, DoF.Dx), new FluentElementPermuteManager.ElementLocalDof(2, DoF.Dy), }; return(buf); }
public override Matrix GetGlobalStifnessMatrix() { if (nodes[0].Location.Equals(nodes[1].Location)) { var kl = new Matrix(6, 6); kl[0, 0] = kl[1, 1] = kl[2, 2] = kl[3, 3] = kl[4, 4] = kl[5, 5] = _k; kl[1, 0] = kl[0, 1] = kl[2, 3] = kl[3, 2] = kl[4, 5] = kl[5, 4] = -_k; var currentOrder = new FluentElementPermuteManager.ElementLocalDof[] { new FluentElementPermuteManager.ElementLocalDof(0, DoF.Dx), new FluentElementPermuteManager.ElementLocalDof(1, DoF.Dx), new FluentElementPermuteManager.ElementLocalDof(0, DoF.Dy), new FluentElementPermuteManager.ElementLocalDof(1, DoF.Dy), new FluentElementPermuteManager.ElementLocalDof(0, DoF.Dz), new FluentElementPermuteManager.ElementLocalDof(1, DoF.Dz), }; var kle = FluentElementPermuteManager.FullyExpand(kl, currentOrder, 2); return(kle); } else { var kl = new Matrix(12, 12);//.FromRowColCoreArray(12, 12, baseArr); kl[0, 0] = kl[6, 6] = _k; kl[6, 0] = kl[0, 6] = -_k; var t = CalcUtil.Get2NodeElementTransformationMatrix(EndNode.Location - StartNode.Location); return(t.Transpose() * kl * t); } throw new NotImplementedException(); }
/// <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 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); return(kle); }