Exemple #1
0
 public void CalculateLocalMatricesAndVector()
 {
     for (int i = 0; i < numberOfElements; ++i)
     {
         Jacobian jacobian = new Jacobian();
         jacobian.calculateJacobian(elements[i]);
         MatrixH tempMatrixH = new MatrixH();
         elements[i].LocalMatrixH = tempMatrixH.calculateMatrixH(jacobian, conductivity);
         MatrixC    tempMatrixC    = new MatrixC(specificHeat, density, jacobian.getDetJArray());
         MatrixH_BC tempMatrixH_BC = new MatrixH_BC(alpha, elements[i]);
         VectorP    tempVectorP    = new VectorP(alpha, ambientTemperature, elements[i]);
         elements[i].LocalMatrixC = tempMatrixC.CalculateMatrixC();
         elements[i].LocalMatrixH = elements[i].LocalMatrixH.Add(tempMatrixH_BC.CalculateMatrixH_BC());
         elements[i].LocalVectorP = tempVectorP.CalculateVectorP();
         //elements[i].PrintLocalMatrices();
     }
 }
Exemple #2
0
        public Matrix <double> calculateMatrixH(Jacobian jacobian, double k)
        {
            for (int i = 0; i < 4; ++i)
            {
                dNdx[0, i] = jacobian.getInversedJacobian(0, 0) * jacobian.getDNdKsi(i, 0) + jacobian.getInversedJacobian(1, 0) * jacobian.getDNdEta(i, 0);
                dNdx[1, i] = jacobian.getInversedJacobian(0, 1) * jacobian.getDNdKsi(i, 1) + jacobian.getInversedJacobian(1, 1) * jacobian.getDNdEta(i, 1);
                dNdx[2, i] = jacobian.getInversedJacobian(0, 2) * jacobian.getDNdKsi(i, 2) + jacobian.getInversedJacobian(1, 2) * jacobian.getDNdEta(i, 2);
                dNdx[3, i] = jacobian.getInversedJacobian(0, 3) * jacobian.getDNdKsi(i, 3) + jacobian.getInversedJacobian(1, 3) * jacobian.getDNdEta(i, 3);

                dNdy[0, i] = jacobian.getInversedJacobian(2, 0) * jacobian.getDNdKsi(i, 0) + jacobian.getInversedJacobian(3, 0) * jacobian.getDNdEta(i, 0);
                dNdy[1, i] = jacobian.getInversedJacobian(2, 1) * jacobian.getDNdKsi(i, 1) + jacobian.getInversedJacobian(3, 1) * jacobian.getDNdEta(i, 1);
                dNdy[2, i] = jacobian.getInversedJacobian(2, 2) * jacobian.getDNdKsi(i, 2) + jacobian.getInversedJacobian(3, 2) * jacobian.getDNdEta(i, 2);
                dNdy[3, i] = jacobian.getInversedJacobian(2, 3) * jacobian.getDNdKsi(i, 3) + jacobian.getInversedJacobian(3, 3) * jacobian.getDNdEta(i, 3);
            }


            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    for (int z = 0; z < 4; ++z)
                    {
                        dNdxT[i, j, z] = dNdx[i, j] * dNdx[i, z];
                        dNdyT[i, j, z] = dNdy[i, j] * dNdy[i, z];

                        dNdxTdetJ[i, j, z] = dNdxT[i, j, z] * jacobian.getDetJ(i);
                        dNdyTdetJ[i, j, z] = dNdyT[i, j, z] * jacobian.getDetJ(i);

                        sum[i, j, z] = (dNdxTdetJ[i, j, z] + dNdyTdetJ[i, j, z]) * k;
                    }
                }
            }

            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    H[i, j] = sum[0, i, j] + sum[1, i, j] + sum[2, i, j] + sum[3, i, j];
                }
            }

            return(Matrix <double> .Build.DenseOfArray(H));
        }