Beispiel #1
0
        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];
                }
            }
        }
Beispiel #2
0
        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];
                    }
                }
            }
        }
Beispiel #3
0
        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];
                }
            }
        }