ISAAR.MSolve.FEM.Tests/Elements/Tri6.cs
/// <summary>
/// To reproduce the reference solution, run the Abaqus job tri6_test0.inp and look at 
/// TRI6_TEST0_MASS_MATRICES.mtx.
/// </summary>
To reproduce the reference solution, run the Abaqus job tri6_test0.inp and look at
TRI6_TEST0_MASS_MATRICES.mtx.
To reproduce the reference solution run the Abaqus job tri6_test0 . inp and look at TRI6_TEST0_MASS_MATRICES . mtx .
[Fact]
        private static void TestConsistentMass0()
        {
            IQuadrature2D quadratureForMass = TriangleQuadratureSymmetricGaussian.Order4Points6;
            var materialsAtGaussPoints = new List<ElasticMaterial2D>();
            foreach (GaussPoint gaussPoint in quadratureForMass.IntegrationPoints)
            {
                materialsAtGaussPoints.Add(material0.Clone());
            }
            var tri6 = new ContinuumElement2D(thickness, nodeSet0, InterpolationTri6.UniqueInstance,
                TriangleQuadratureSymmetricGaussian.Order2Points3, quadratureForMass,
                ExtrapolationGaussTriangular3Points.UniqueInstance,
                materialsAtGaussPoints, dynamicMaterial);
            IMatrix M = tri6.BuildConsistentMassMatrix();
            Matrix expectedM = Matrix.CreateFromArray(new double[,]
            {
                { 11.83599396, 0, -1.829621484, 0, -1.968668415, 0, 0.702983761, 0, -6.922261694, 0, 0.623796095, 0,  },
                { 0, 11.83599396, 0, -1.829621484, 0, -1.968668415, 0, 0.702983761, 0, -6.922261694, 0, 0.623796095,  },
                { -1.829621484, 0, 9.926994738, 0, -1.638252825, 0, -0.618678599, 0, -0.46271906, 0, -7.392556104, 0, },
                { 0, -1.829621484, 0, 9.926994738, 0, -1.638252825, 0, -0.618678599, 0, -0.46271906, 0, -7.392556104, },
                { -1.968668415, 0, -1.638252825, 0, 10.74103411, 0, -7.234180772, 0, 9.35E-02, 0, -0.141678539, 0,    },
                { 0, -1.968668415, 0, -1.638252825, 0, 10.74103411, 0, -7.234180772, 0, 9.35E-02, 0, -0.141678539,    },
                { 0.702983761, 0, -0.618678599, 0, -7.234180772, 0, 57.86118359, 0, 28.31288493, 0, 29.25347375, 0,   },
                { 0, 0.702983761, 0, -0.618678599, 0, -7.234180772, 0, 57.86118359, 0, 28.31288493, 0, 29.25347375,   },
                { -6.922261694, 0, -0.46271906, 0, 9.35E-02, 0, 28.31288493, 0, 56.00999156, 0, 28.6296356, 0,        },
                { 0, -6.922261694, 0, -0.46271906, 0, 9.35E-02, 0, 28.31288493, 0, 56.00999156, 0, 28.6296356,        },
                { 0.623796095, 0, -7.392556104, 0, -0.141678539, 0, 29.25347375, 0, 28.6296356, 0, 58.49121809, 0,    },
                { 0, 0.623796095, 0, -7.392556104, 0, -0.141678539, 0, 29.25347375, 0, 28.6296356, 0, 58.49121809,    }
            }); 
            Assert.True(M.Equals(expectedM, 1e-3));
        }
[ Fact ] private static void TestConsistentMass0 ( ) { IQuadrature2D quadratureForMass = TriangleQuadratureSymmetricGaussian . Order4Points6 ; var materialsAtGaussPoints = new List < ElasticMaterial2D > ( ) ; foreach ( GaussPoint gaussPoint in quadratureForMass . IntegrationPoints ) { materialsAtGaussPoints . Add ( material0 . Clone ( ) ) ; } var tri6 = new ContinuumElement2D ( thickness , nodeSet0 , InterpolationTri6 . UniqueInstance , TriangleQuadratureSymmetricGaussian . Order2Points3 , quadratureForMass , ExtrapolationGaussTriangular3Points . UniqueInstance , materialsAtGaussPoints , dynamicMaterial ) ; IMatrix M = tri6 . BuildConsistentMassMatrix ( ) ; Matrix expectedM = Matrix . CreateFromArray ( new double [ , ] { { 11.83599396 , 0 , - 1.829621484 , 0 , - 1.968668415 , 0 , 0.702983761 , 0 , - 6.922261694 , 0 , 0.623796095 , 0 , } , { 0 , 11.83599396 , 0 , - 1.829621484 , 0 , - 1.968668415 , 0 , 0.702983761 , 0 , - 6.922261694 , 0 , 0.623796095 , } , { - 1.829621484 , 0 , 9.926994738 , 0 , - 1.638252825 , 0 , - 0.618678599 , 0 , - 0.46271906 , 0 , - 7.392556104 , 0 , } , { 0 , - 1.829621484 , 0 , 9.926994738 , 0 , - 1.638252825 , 0 , - 0.618678599 , 0 , - 0.46271906 , 0 , - 7.392556104 , } , { - 1.968668415 , 0 , - 1.638252825 , 0 , 10.74103411 , 0 , - 7.234180772 , 0 , 9.35E-02 , 0 , - 0.141678539 , 0 , } , { 0 , - 1.968668415 , 0 , - 1.638252825 , 0 , 10.74103411 , 0 , - 7.234180772 , 0 , 9.35E-02 , 0 , - 0.141678539 , } , { 0.702983761 , 0 , - 0.618678599 , 0 , - 7.234180772 , 0 , 57.86118359 , 0 , 28.31288493 , 0 , 29.25347375 , 0 , } , { 0 , 0.702983761 , 0 , - 0.618678599 , 0 , - 7.234180772 , 0 , 57.86118359 , 0 , 28.31288493 , 0 , 29.25347375 , } , { - 6.922261694 , 0 , - 0.46271906 , 0 , 9.35E-02 , 0 , 28.31288493 , 0 , 56.00999156 , 0 , 28.6296356 , 0 , } , { 0 , - 6.922261694 , 0 , - 0.46271906 , 0 , 9.35E-02 , 0 , 28.31288493 , 0 , 56.00999156 , 0 , 28.6296356 , } , { 0.623796095 , 0 , - 7.392556104 , 0 , - 0.141678539 , 0 , 29.25347375 , 0 , 28.6296356 , 0 , 58.49121809 , 0 , } , { 0 , 0.623796095 , 0 , - 7.392556104 , 0 , - 0.141678539 , 0 , 29.25347375 , 0 , 28.6296356 , 0 , 58.49121809 , } } ) ; Assert . True ( M . Equals ( expectedM , 1e-3 ) ) ; }
To reproduce the reference solution, run the Abaqus job tri6_test0.inp and look at
TRI6_TEST0_MASS_MATRICES.mtx.
To reproduce the reference solution run the Abaqus job tri6_test0 . inp and look at TRI6_TEST0_MASS_MATRICES . mtx .
// from Abaqus