Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static PHANTU TinhKe(PHANTU P1) {
- P1.Ke1 = new Matrix(4,4);
- for (int i = 0; i < 4; i++)
- {
- for (int j = 0; j < 4; j++)
- {
- P1.Ke1.Matran1[i, j] = 0;
- }
- }
- P1.Ke1.Matran1[0, 0] = P1.MC.VL1.E1 * P1.MC.F1 / P1.L;
- P1.Ke1.Matran1[0, 2] = -P1.Ke1.Matran1[0, 0];
- P1.Ke1.Matran1[2, 0] = -P1.Ke1.Matran1[0, 0];
- P1.Ke1.Matran1[2, 2] = P1.Ke1.Matran1[0, 0];
- P1.T1 = new Matrix(4, 4);
- Matrix Te = new Matrix(2, 2);
- Te.Matran1[0, 0] = P1.cosalpha;
- Te.Matran1[0, 1] = P1.sinalpha;
- Te.Matran1[1, 0] = -P1.sinalpha;
- Te.Matran1[1, 1] = P1.cosalpha;
- for (int i = 0; i < 4; i++)
- {
- for (int j = 0; j < 4; j ++)
- {
- P1.T1.Matran1[i, j] = 0;
- }
- }
- for (int i = 0; i < 2; i++)
- {
- for (int j = 0; j < 2; j++)
- {
- P1.T1.Matran1[i, j] = Te.Matran1[i, j];
- P1.T1.Matran1[2 + i, 2 + j] = Te.Matran1[i, j];
- }
- }
- return P1;
- }
- public static PHANTU TinhFe(PHANTU P1) {//Tính Fe
- double P = P1.MC1.VL1.Gama * P1.MC1.B * P1.MC1.H * P1.L1;//P - trong luong ban than
- P1.Ue = new Matrix(4, 1);
- P1.Fe = new Matrix(4, 1);
- P1.Fe.Matran1[0, 0] = 0;
- P1.Fe.Matran1[1, 0] = P / 2;
- P1.Fe.Matran1[2, 0] = 0;
- P1.Fe.Matran1[3, 0] = - P / 2;
- for (int i = 0; i < P1.PT1.Px.Length; i++)
- {
- P1.Fe.Matran1[0, 0] += (P1.L - P1.PT1.Px[i].XI1) * P1.PT1.Px[i].PI1 / P1.L;
- P1.Fe.Matran1[2,0] += P1.PT1.Px[i].XI1 *P1.PT1.Px[i].PI1 / P1.L;
- }
- for (int i = 0; i < P1.PT1.Py.Length; i++)
- {
- P1.Fe.Matran1[1, 0] += (P1.L - P1.PT1.Py[i].XI1) * P1.PT1.Py[i].PI1 / P1.L;
- P1.Fe.Matran1[3, 0] += P1.PT1.Py[i].XI1 * P1.PT1.Py[i].PI1 / P1.L;
- }
- for (int i = 0; i < P1.PT1.Qx.Length; i++)
- {
- double VA = P1.PT1.Qx[i].Q1 * P1.PT1.Qx[i].B * (P1.L - P1.PT1.Qx[i].A - P1.PT1.Qx[i].B / 2) + (P1.PT1.Qx[i].Q2 - P1.PT1.Qx[i].Q1) * (P1.L - P1.PT1.Qx[i].A - 2 * P1.PT1.Qx[i].B / 3) * P1.PT1.Qx[i].B / (2 * P1.L);
- double VB = (P1.PT1.Qx[i].Q1 + P1.PT1.Qx[i].Q2) * P1.PT1.Qx[i].B / 2 - VA;
- P1.Fe.Matran1[0, 0] += VA;
- P1.Fe.Matran1[2, 0] += VB;
- }
- for (int i = 0; i < P1.PT1.Qy.Length; i++)
- {
- double VA = P1.PT1.Qy[i].Q1 * P1.PT1.Qy[i].B * (P1.L - P1.PT1.Qy[i].A - P1.PT1.Qy[i].B / 2) + (P1.PT1.Qy[i].Q2 - P1.PT1.Qy[i].Q1) * (P1.L - P1.PT1.Qy[i].A - 2 * P1.PT1.Qy[i].B / 3) * P1.PT1.Qy[i].B / (2 * P1.L);
- double VB = (P1.PT1.Qy[i].Q1 + P1.PT1.Qy[i].Q2) * P1.PT1.Qy[i].B / 2 - VA;
- P1.Fe.Matran1[1, 0] += VA;
- P1.Fe.Matran1[3, 0] += VB;
- }
- return P1;
- }
- public static Matrix AddKe2K(PHANTU P1, Matrix K)
- {//Đưa Ke vào K
- int n = K.Row;
- Matrix Ke = Matrix.Copy(P1.Ke1);
- Ke = Matrix.M_Mul(P1.T1, P1.Ke1);
- Matrix TT = Matrix.Trans(P1.T1);
- Ke = Matrix.M_Mul(Ke, TT);
- int a = 0;
- for (int i = 0; i < n; i++)
- if (i == 2 * P1.I.Ten1 || i == 2 * P1.I.Ten1 + 1 || i == P1.K.Ten1 * 2 || i == P1.k.Ten1 * 2 + 1)
- {
- int b = 0;
- for (int j = 0; j < n; j++)
- {
- if (j == 2 * P1.I.Ten1 || j == 2 * P1.I.Ten1 + 1 || j == P1.K.Ten1 * 2 || j == P1.k.Ten1 * 2 + 1)
- {
- K.Matran1[i, j] += Ke.Matran1[a, b];
- b++;
- }
- }
- a++;
- }
- return K;
- }
- public static Matrix AddFe2F(PHANTU P1, Matrix F) {//Đưa Fe vào F
- int i = P1.i.Ten1;
- int k = P1.k.Ten1;
- Matrix Fe = Matrix.Copy(P1.Fe);
- Fe = Matrix.M_Mul( P1.T1,Fe);
- F.Matran1[2 * i , 0] += Fe.Matran1[0, 0];
- F.Matran1[2 * i +1, 0] += Fe.Matran1[1, 0];
- F.Matran1[2 * k , 0] += Fe.Matran1[2, 0];
- F.Matran1[2 * k +1, 0] += Fe.Matran1[3, 0];
- return F;
- }
- public static PHANTU TakeUeFromU(PHANTU P1, Matrix U) {
- //Lay Ue ra tu U
- int i = P1.i.Ten1;
- int k = P1.k.Ten1;
- Matrix Ue = Matrix.Copy(P1.Ue);
- Ue.Matran1[0, 0] = U.Matran1[2 * i , 0];
- Ue.Matran1[1, 0] = U.Matran1[2 * i + 1 , 0];
- Ue.Matran1[2, 0] = U.Matran1[2 * k , 0];
- Ue.Matran1[3, 0] = U.Matran1[2 * k + 1 , 0];
- Matrix TT = Matrix.Trans(P1.T1);
- Ue = Matrix.M_Mul(TT, Ue);
- P1.Ue = Ue;
- return P1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement