public void Aggregate() { globalH = new double[(int)Constatns.nHnW, (int)Constatns.nHnW]; globalHBC = new double[(int)Constatns.nHnW, (int)Constatns.nHnW]; globalC = new double[(int)Constatns.nHnW, (int)Constatns.nHnW]; globalP = new double[(int)Constatns.nHnW]; Jakobian jakobian = new Jakobian(); foreach (var element in elements) { jakobian.CalulateJakobian(element); element.CalcluateH(jakobian); for (int j = 0; j < 4; j++) { for (int k = 0; k < 4; k++) { globalH[element.nodes[j].id - 1, element.nodes[k].id - 1] += element.H[j, k]; } } element.CalulateC(jakobian); for (int j = 0; j < 4; j++) { for (int k = 0; k < 4; k++) { globalC[element.nodes[j].id - 1, element.nodes[k].id - 1] += element.C[j, k]; } } element.CalculateHBC(); for (int j = 0; j < 4; j++) { for (int k = 0; k < 4; k++) { globalHBC[element.nodes[j].id - 1, element.nodes[k].id - 1] += element.HBC[j, k]; } } element.CalculateP(); for (int j = 0; j < 4; j++) { globalP[element.nodes[j].id - 1] += element.P[j]; } } }
public void CalulateC(Jakobian jakobian) { double[,,] fourMatrixs = new double[4, 4, 4]; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { fourMatrixs[i, j, 0] = jakobian.N[0, j] * jakobian.N[0, i] * jakobian.detJacobian[0] * Constatns.c * Constatns.ro; fourMatrixs[i, j, 1] = jakobian.N[1, j] * jakobian.N[1, i] * jakobian.detJacobian[1] * Constatns.c * Constatns.ro; fourMatrixs[i, j, 2] = jakobian.N[2, j] * jakobian.N[2, i] * jakobian.detJacobian[2] * Constatns.c * Constatns.ro; fourMatrixs[i, j, 3] = jakobian.N[3, j] * jakobian.N[3, i] * jakobian.detJacobian[3] * Constatns.c * Constatns.ro; for (int k = 0; k < 4; k++) { C[i, j] += fourMatrixs[i, j, k]; } } } }
public void CalcluateH(Jakobian jakobian) { for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { dNdx[j, i] = jakobian.invertedJacobian[j, 0] * jakobian.dNdksi[i, j] + jakobian.invertedJacobian[j, 1] * jakobian.dNdeta[i, j]; dNdy[j, i] = jakobian.invertedJacobian[j, 2] * jakobian.dNdksi[i, j] + jakobian.invertedJacobian[j, 3] * jakobian.dNdeta[i, j]; } } for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { for (int z = 0; z < 4; z++) { dNdxT[i, z, j] = dNdx[i, j] * dNdx[i, z]; dNdyT[i, z, j] = dNdy[i, j] * dNdy[i, z]; dNdxTdetJ[i, z, j] = dNdxT[i, z, j] * jakobian.detJacobian[i]; dNdyTdetJ[i, z, j] = dNdyT[i, z, j] * jakobian.detJacobian[i]; sum[i, z, j] = (dNdxTdetJ[i, z, j] + dNdyTdetJ[i, z, j]) * K; } } } for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { H[j, i] = sum[0, j, i] + sum[1, j, i] + sum[2, j, i] + sum[3, j, i]; } } }