private static string Initialize(IFrameSection frameSection, string characters)
        {
            var result = new StringBuilder();

            result.AppendLine($"{characters}Section");
            result.AppendLine($"{characters}ID: {frameSection.Number}");
            result.AppendLine($"{characters}Name: {frameSection.Name}");
            result.AppendLine($"{characters}Type: {frameSection.Type}");
            result.AppendLine($"{characters}Area: {frameSection.Area}");
            result.AppendLine($"{characters}Local moment of inertia Y: {frameSection.MomentOfInertiaY}");
            result.AppendLine($"{characters}Local moment of inertia Z: {frameSection.MomentOfInertiaZ}");
            result.AppendLine($"{characters}Torsional constant X: {frameSection.TorsionalConstantX}");
            result.AppendLine($"{characters}Mju: {frameSection.Mju}");
            result.AppendLine($"{characters}----");

            return(result.ToString());
        }
Beispiel #2
0
        public override string Execute(IList <string> parameters)
        {
            int sectionId;

            try
            {
                sectionId = int.Parse(parameters[0]);
            }
            catch
            {
                throw new ArgumentException("Failed to parse ShowFrameSection command parameters.");
            }

            IFrameSection frameSection = base.dbctx.FrameSections[sectionId];
            string        result       = SectionService.AsString(frameSection);

            return(result);
        }
Beispiel #3
0
        public override string Execute(IList <string> parameters)
        {
            int sectionId;
            int elementId;

            try
            {
                sectionId = int.Parse(parameters[0]);
                elementId = int.Parse(parameters[1]);
            }
            catch
            {
                throw new ArgumentException("Failed to parse AssignFrameSection command parameters.");
            }

            IFrameElement frameElement = base.dbctx.FrameElements[elementId];
            IFrameSection frameSection = base.dbctx.FrameSections[sectionId];

            frameElement.SectionProp = frameSection;
            return($"Section with ID {frameSection.Number} has been assigned to element with ID {frameElement.Number}.");
        }
 public static string AsString(IFrameSection frameSection)
 {
     return(Initialize(frameSection, string.Empty));
 }
 public static string AsString(IFrameSection frameSection, string characters)
 {
     return(Initialize(frameSection, characters));
 }
Beispiel #6
0
        public static Matrix <double> GenerateLocalMatrix(IFrameElement element)
        {
            Guard.WhenArgument(element, "element").IsNull().Throw();

            IMaterial     materialProp = element.MaterialProp;
            IFrameSection sectionProp  = element.SectionProp;

            Guard.WhenArgument(materialProp, "materialProp").IsNull().Throw();
            Guard.WhenArgument(sectionProp, "sectionProp").IsNull().Throw();

            double eModule  = materialProp.EModule;
            double gModule  = materialProp.GModule;
            double area     = sectionProp.Area;
            double momentY  = sectionProp.MomentOfInertiaY;
            double momentZ  = sectionProp.MomentOfInertiaZ;
            double torsionX = sectionProp.TorsionalConstantX;
            double mju      = sectionProp.Mju;

            double elementLength = element.ElementLength;

            double Alfa       = element.Alfa;
            double cosineAlfa = Math.Cos(Alfa);
            double sineAlfa   = Math.Sin(Alfa);

            double index11, index17, index22, index26, index28, index212, index33, index35, index39, index311,
                   index44, index410, index55, index59, index511, index66, index68, index612, index77, index88,
                   index812, index99, index911, index1010, index1111, index1212;

            //Check for invalid releases
            if ((element.ShearYReleaseNode1 == true && element.ShearYReleaseNode2 == true) ||
                (element.ShearZReleaseNode1 == true && element.ShearZReleaseNode2 == true))
            {
                throw new ArgumentException("Invalid releases - you can not have shear releases at both ends in the same plane, the element is not stable.");
            }

            if ((element.MomentAroundZReleaseNode1 == true && element.MomentAroundZReleaseNode2 == true && (element.ShearYReleaseNode1 == true || element.ShearYReleaseNode2 == true)) ||
                (element.MomentAroundYReleaseNode1 == true && element.MomentAroundYReleaseNode2 == true && (element.ShearZReleaseNode1 == true || element.ShearZReleaseNode2 == true)))
            {
                throw new ArgumentException("Invalid releases - you can not have moment releases at both ends and a shear release at either end (in the same plane), the element is not stable.");
            }

            if (element.NormalReleaseNode1 == true && element.NormalReleaseNode2 == true)
            {
                throw new ArgumentException("Invalid releases - you can not have normal force releases at both ends, the element is not stable.");
            }

            if (element.TorsionReleaseNode1 == true && element.TorsionReleaseNode2 == true)
            {
                throw new ArgumentException("Invalid releases - you can not have torsion releases at both ends, the element is not stable.");
            }

            //Releases XY plane
            if (element.MomentAroundZReleaseNode1 == false && element.MomentAroundZReleaseNode2 == false &&
                element.ShearYReleaseNode1 == false && element.ShearYReleaseNode2 == false)
            {
                index22  = (12.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 12.0 * eModule * momentZ);
                index26  = (6.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength + mju * 12.0 * eModule * momentZ);
                index28  = (12.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 12.0 * eModule * momentZ);
                index212 = (6.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength + mju * 12.0 * eModule * momentZ);

                index66 = ((4.0 * elementLength * eModule * momentZ * gModule * area) / (elementLength * elementLength * gModule * area + mju * 12.0 * eModule * momentZ))
                          + ((12.0 * mju * eModule * eModule * momentZ * momentZ) / (elementLength * elementLength * elementLength * gModule * area + 12.0 * elementLength * mju * eModule * momentZ));
                index68  = (6.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength + mju * 12.0 * eModule * momentZ);
                index612 = ((2.0 * elementLength * eModule * momentZ * gModule * area) / (elementLength * elementLength * gModule * area + 12.0 * mju * eModule * momentZ))
                           - ((12.0 * mju * eModule * eModule * momentZ * momentZ) / (elementLength * elementLength * elementLength * gModule * area + 12.0 * elementLength * mju * eModule * momentZ));

                index88  = (12.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 12.0 * eModule * momentZ);
                index812 = (6.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength + mju * 12.0 * eModule * momentZ);

                index1212 = ((4.0 * elementLength * eModule * momentZ * gModule * area) / (elementLength * elementLength * gModule * area + mju * 12.0 * eModule * momentZ))
                            + ((12.0 * mju * eModule * eModule * momentZ * momentZ) / (elementLength * elementLength * elementLength * gModule * area + 12.0 * elementLength * mju * eModule * momentZ));
            }

            else if (element.MomentAroundZReleaseNode1 == true && element.MomentAroundZReleaseNode2 == true &&
                     element.ShearYReleaseNode1 == false && element.ShearYReleaseNode2 == false)
            {
                index22  = double.Epsilon;
                index26  = 0.0;
                index28  = 0.0;
                index212 = 0.0;

                index66  = double.Epsilon;
                index68  = 0.0;
                index612 = 0.0;

                index88  = double.Epsilon;
                index812 = 0.0;

                index1212 = double.Epsilon;
            }

            else if (element.MomentAroundZReleaseNode1 == true && element.MomentAroundZReleaseNode2 == false &&
                     element.ShearYReleaseNode1 == false && element.ShearYReleaseNode2 == false)
            {
                index22  = (3.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 3.0 * eModule * momentZ);
                index26  = 0.0;
                index28  = (3.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 3.0 * eModule * momentZ);
                index212 = (3.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength + mju * 3.0 * eModule * momentZ);

                index66  = double.Epsilon;
                index68  = 0.0;
                index612 = 0.0;

                index88  = (3.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 3.0 * eModule * momentZ);
                index812 = (3.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength + mju * 3.0 * eModule * momentZ);

                index1212 = (3.0 * eModule * momentZ * gModule * area * elementLength) / (gModule * area * elementLength * elementLength + mju * 3.0 * eModule * momentZ);
            }

            else if (element.MomentAroundZReleaseNode1 == false && element.MomentAroundZReleaseNode2 == true &&
                     element.ShearYReleaseNode1 == false && element.ShearYReleaseNode2 == false)
            {
                index22  = (3.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 3.0 * eModule * momentZ);
                index26  = (3.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength + mju * 3.0 * eModule * momentZ);
                index28  = (3.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 3.0 * eModule * momentZ);
                index212 = 0.0;

                index66  = (3.0 * eModule * momentZ * gModule * area * elementLength) / (gModule * area * elementLength * elementLength + mju * 3.0 * eModule * momentZ);
                index68  = (3.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength + mju * 3.0 * eModule * momentZ);
                index612 = 0.0;

                index88  = (3.0 * eModule * momentZ * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 3.0 * eModule * momentZ);
                index812 = 0.0;

                index1212 = double.Epsilon;
            }

            else if (element.MomentAroundZReleaseNode1 == true && element.MomentAroundZReleaseNode2 == false &&
                     element.ShearYReleaseNode1 == true && element.ShearYReleaseNode2 == false)
            {
                index22  = double.Epsilon;
                index26  = 0.0;
                index28  = 0.0;
                index212 = 0.0;

                index66  = double.Epsilon;
                index68  = 0.0;
                index612 = 0.0;

                index88  = double.Epsilon;
                index812 = 0.0;

                index1212 = double.Epsilon;
            }

            else if (element.MomentAroundZReleaseNode1 == false && element.MomentAroundZReleaseNode2 == true &&
                     element.ShearYReleaseNode1 == false && element.ShearYReleaseNode2 == true)
            {
                index22  = double.Epsilon;
                index26  = 0.0;
                index28  = 0.0;
                index212 = 0.0;

                index66  = double.Epsilon;
                index68  = 0.0;
                index612 = 0.0;

                index88  = double.Epsilon;
                index812 = 0.0;

                index1212 = double.Epsilon;
            }

            else if (element.MomentAroundZReleaseNode1 == true && element.MomentAroundZReleaseNode2 == false &&
                     element.ShearYReleaseNode1 == false && element.ShearYReleaseNode2 == true)
            {
                index22  = double.Epsilon;
                index26  = 0.0;
                index28  = 0.0;
                index212 = 0.0;

                index66  = double.Epsilon;
                index68  = 0.0;
                index612 = 0.0;

                index88  = double.Epsilon;
                index812 = 0.0;

                index1212 = double.Epsilon;
            }

            else if (element.MomentAroundZReleaseNode1 == false && element.MomentAroundZReleaseNode2 == true &&
                     element.ShearYReleaseNode1 == true && element.ShearYReleaseNode2 == false)
            {
                index22  = double.Epsilon;
                index26  = 0.0;
                index28  = 0.0;
                index212 = 0.0;

                index66  = double.Epsilon;
                index68  = 0.0;
                index612 = 0.0;

                index88  = double.Epsilon;
                index812 = 0.0;

                index1212 = double.Epsilon;
            }

            else if (element.MomentAroundZReleaseNode1 == false && element.MomentAroundZReleaseNode2 == false &&
                     element.ShearYReleaseNode1 == true && element.ShearYReleaseNode2 == false)
            {
                index22  = double.Epsilon;
                index26  = 0.0;
                index28  = 0.0;
                index212 = 0.0;

                index66  = (eModule * momentZ) / elementLength;
                index68  = 0.0;
                index612 = (-1) * (eModule * momentZ) / elementLength;

                index88  = double.Epsilon;
                index812 = 0.0;

                index1212 = (eModule * momentZ) / elementLength;
            }

            else if (element.MomentAroundZReleaseNode1 == false && element.MomentAroundZReleaseNode2 == false &&
                     element.ShearYReleaseNode1 == false && element.ShearYReleaseNode2 == true)
            {
                index22  = double.Epsilon;
                index26  = 0.0;
                index28  = 0.0;
                index212 = 0.0;

                index66  = (eModule * momentZ) / elementLength;
                index68  = 0.0;
                index612 = (-1) * (eModule * momentZ) / elementLength;

                index88  = double.Epsilon;
                index812 = 0.0;

                index1212 = (eModule * momentZ) / elementLength;
            }

            else
            {
                index22  = double.NaN;
                index26  = double.NaN;
                index28  = double.NaN;
                index212 = double.NaN;

                index66  = double.NaN;
                index68  = double.NaN;
                index612 = double.NaN;

                index88  = double.NaN;
                index812 = double.NaN;

                index1212 = double.NaN;
            }

            //Releases XZ plane
            if (element.MomentAroundYReleaseNode1 == false && element.MomentAroundYReleaseNode2 == false &&
                element.ShearZReleaseNode1 == false && element.ShearZReleaseNode2 == false)
            {
                index33  = (12.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 12.0 * eModule * momentY);
                index35  = (6.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength + mju * 12.0 * eModule * momentY);
                index39  = (12.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 12.0 * eModule * momentY);
                index311 = (6.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength + mju * 12.0 * eModule * momentY);

                index55 = ((4.0 * elementLength * eModule * momentY * gModule * area) / (elementLength * elementLength * gModule * area + mju * 12.0 * eModule * momentY))
                          + ((12.0 * mju * eModule * eModule * momentY * momentY) / (elementLength * elementLength * elementLength * gModule * area + 12.0 * elementLength * mju * eModule * momentY));
                index59  = (6.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength + mju * 12.0 * eModule * momentY);
                index511 = ((2.0 * elementLength * eModule * momentY * gModule * area) / (elementLength * elementLength * gModule * area + 12.0 * mju * eModule * momentY))
                           - ((12.0 * mju * eModule * eModule * momentY * momentY) / (elementLength * elementLength * elementLength * gModule * area + 12.0 * elementLength * mju * eModule * momentY));

                index99  = (12.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 12.0 * eModule * momentY);
                index911 = (6.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength + mju * 12.0 * eModule * momentY);

                index1111 = ((4.0 * elementLength * eModule * momentY * gModule * area) / (elementLength * elementLength * gModule * area + mju * 12.0 * eModule * momentY))
                            + ((12.0 * mju * eModule * eModule * momentY * momentY) / (elementLength * elementLength * elementLength * gModule * area + 12.0 * elementLength * mju * eModule * momentY));
            }

            else if (element.MomentAroundYReleaseNode1 == true && element.MomentAroundYReleaseNode2 == true &&
                     element.ShearZReleaseNode1 == false && element.ShearZReleaseNode2 == false)
            {
                index33  = double.Epsilon;
                index35  = 0.0;
                index39  = 0.0;
                index311 = 0.0;

                index55  = double.Epsilon;
                index59  = 0.0;
                index511 = 0.0;

                index99  = double.Epsilon;
                index911 = 0.0;

                index1111 = double.Epsilon;
            }

            else if (element.MomentAroundYReleaseNode1 == true && element.MomentAroundYReleaseNode2 == false &&
                     element.ShearZReleaseNode1 == false && element.ShearZReleaseNode2 == false)
            {
                index33  = (3.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 3.0 * eModule * momentY);
                index35  = 0.0;
                index39  = (3.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 3.0 * eModule * momentY);
                index311 = (3.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength + mju * 3.0 * eModule * momentY);

                index55  = double.Epsilon;
                index59  = 0.0;
                index511 = 0.0;

                index99  = (3.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 3.0 * eModule * momentY);
                index911 = (3.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength + mju * 3.0 * eModule * momentY);

                index1111 = (3.0 * eModule * momentY * gModule * area * elementLength) / (gModule * area * elementLength * elementLength + mju * 3.0 * eModule * momentY);
            }

            else if (element.MomentAroundYReleaseNode1 == false && element.MomentAroundYReleaseNode2 == true &&
                     element.ShearZReleaseNode1 == false && element.ShearZReleaseNode2 == false)
            {
                index33  = (3.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 3.0 * eModule * momentY);
                index35  = (3.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength + mju * 3.0 * eModule * momentY);
                index39  = (3.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 3.0 * eModule * momentY);
                index311 = 0.0;

                index55  = (3.0 * eModule * momentY * gModule * area * elementLength) / (gModule * area * elementLength * elementLength + mju * 3.0 * eModule * momentY);
                index59  = (3.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength + mju * 3.0 * eModule * momentY);
                index511 = 0.0;

                index99  = (3.0 * eModule * momentY * gModule * area) / (gModule * area * elementLength * elementLength * elementLength + mju * elementLength * 3.0 * eModule * momentY);
                index911 = 0.0;

                index1111 = double.Epsilon;
            }

            else if (element.MomentAroundYReleaseNode1 == true && element.MomentAroundYReleaseNode2 == false &&
                     element.ShearZReleaseNode1 == true && element.ShearZReleaseNode2 == false)
            {
                index33  = double.Epsilon;
                index35  = 0.0;
                index39  = 0.0;
                index311 = 0.0;

                index55  = double.Epsilon;
                index59  = 0.0;
                index511 = 0.0;

                index99  = double.Epsilon;
                index911 = 0.0;

                index1111 = double.Epsilon;
            }

            else if (element.MomentAroundYReleaseNode1 == false && element.MomentAroundYReleaseNode2 == true &&
                     element.ShearZReleaseNode1 == false && element.ShearZReleaseNode2 == true)
            {
                index33  = double.Epsilon;
                index35  = 0.0;
                index39  = 0.0;
                index311 = 0.0;

                index55  = double.Epsilon;
                index59  = 0.0;
                index511 = 0.0;

                index99  = double.Epsilon;
                index911 = 0.0;

                index1111 = double.Epsilon;
            }

            else if (element.MomentAroundYReleaseNode1 == true && element.MomentAroundYReleaseNode2 == false &&
                     element.ShearZReleaseNode1 == false && element.ShearZReleaseNode2 == true)
            {
                index33  = double.Epsilon;
                index35  = 0.0;
                index39  = 0.0;
                index311 = 0.0;

                index55  = double.Epsilon;
                index59  = 0.0;
                index511 = 0.0;

                index99  = double.Epsilon;
                index911 = 0.0;

                index1111 = double.Epsilon;
            }

            else if (element.MomentAroundYReleaseNode1 == false && element.MomentAroundYReleaseNode2 == true &&
                     element.ShearZReleaseNode1 == true && element.ShearZReleaseNode2 == false)
            {
                index33  = double.Epsilon;
                index35  = 0.0;
                index39  = 0.0;
                index311 = 0.0;

                index55  = double.Epsilon;
                index59  = 0.0;
                index511 = 0.0;

                index99  = double.Epsilon;
                index911 = 0.0;

                index1111 = double.Epsilon;
            }

            else if (element.MomentAroundYReleaseNode1 == false && element.MomentAroundYReleaseNode2 == false &&
                     element.ShearZReleaseNode1 == true && element.ShearZReleaseNode2 == false)
            {
                index33  = double.Epsilon;
                index35  = 0.0;
                index39  = 0.0;
                index311 = 0.0;

                index55  = (eModule * momentY) / elementLength;
                index59  = 0.0;
                index511 = (-1) * (eModule * momentY) / elementLength;

                index99  = double.Epsilon;
                index911 = 0.0;

                index1111 = (eModule * momentY) / elementLength;
            }

            else if (element.MomentAroundYReleaseNode1 == false && element.MomentAroundYReleaseNode2 == false &&
                     element.ShearZReleaseNode1 == false && element.ShearZReleaseNode2 == true)
            {
                index33  = double.Epsilon;
                index35  = 0.0;
                index39  = 0.0;
                index311 = 0.0;

                index55  = (eModule * momentY) / elementLength;
                index59  = 0.0;
                index511 = (-1) * (eModule * momentY) / elementLength;

                index99  = double.Epsilon;
                index911 = 0.0;

                index1111 = (eModule * momentY) / elementLength;
            }

            else
            {
                index33  = double.NaN;
                index35  = double.NaN;
                index39  = double.NaN;
                index311 = double.NaN;

                index55  = double.NaN;
                index59  = double.NaN;
                index511 = double.NaN;

                index99  = double.NaN;
                index911 = double.NaN;

                index1111 = double.NaN;
            }

            //Normal Releases
            if (element.NormalReleaseNode1 == false && element.NormalReleaseNode2 == false)
            {
                index11 = (eModule * area) / elementLength;
                index17 = (eModule * area) / elementLength;

                index77 = (eModule * area) / elementLength;
            }

            else if ((element.NormalReleaseNode1 == true && element.NormalReleaseNode2 == false) ||
                     (element.NormalReleaseNode1 == false && element.NormalReleaseNode2 == true))
            {
                index11 = double.Epsilon;
                index17 = 0.0;

                index77 = double.Epsilon;
            }

            else
            {
                index11 = double.NaN;
                index17 = double.NaN;

                index77 = double.NaN;
            }

            //Torsional Releases
            if (element.TorsionReleaseNode1 == false && element.TorsionReleaseNode2 == false)
            {
                index44  = (gModule * torsionX) / elementLength;
                index410 = (gModule * torsionX) / elementLength;

                index1010 = (gModule * torsionX) / elementLength;
            }

            else if ((element.TorsionReleaseNode1 == true && element.TorsionReleaseNode2 == false) ||
                     (element.TorsionReleaseNode1 == false && element.TorsionReleaseNode2 == true))
            {
                index44  = double.Epsilon;
                index410 = 0.0;

                index1010 = double.Epsilon;
            }

            else
            {
                index44  = double.NaN;
                index410 = double.NaN;

                index1010 = double.NaN;
            }

            Matrix <double> localMatrix = SparseMatrix.OfArray(new double[, ]
            {
                //First row
                { index11, 0.0, 0.0, 0.0, 0.0, 0.0, (-1) * index17, 0.0, 0.0, 0.0, 0.0, 0.0 },
                //Second row
                { 0.0, index22, 0.0, 0.0, 0.0, index26, 0.0, (-1) * index28, 0.0, 0.0, 0.0, index212 },
                //Third row
                { 0.0, 0.0, index33, 0.0, (-1) * index35, 0.0, 0.0, 0.0, (-1) * index39, 0.0, (-1) * index311, 0.0 },
                //Fourth row
                { 0.0, 0.0, 0.0, index44, 0.0, 0.0, 0.0, 0.0, 0.0, (-1) * index410, 0.0, 0.0 },
                //Fifth row
                { 0.0, 0.0, (-1) * index35, 0.0, index55, 0.0, 0.0, 0.0, index59, 0.0, index511, 0.0 },
                //Sixth row
                { 0.0, index26, 0.0, 0.0, 0.0, index66, 0.0, (-1) * index68, 0.0, 0.0, 0.0, index612 },
                //Seventh row
                { (-1) * index17, 0.0, 0.0, 0.0, 0.0, 0.0, index77, 0.0, 0.0, 0.0, 0.0, 0.0 },
                //Eighth row
                { 0.0, (-1) * index28, 0.0, 0.0, 0.0, (-1) * index68, 0.0, index88, 0.0, 0.0, 0.0, (-1) * index812 },
                //Ninth row
                { 0.0, 0.0, (-1) * index39, 0.0, index59, 0.0, 0.0, 0.0, index99, 0.0, index911, 0.0 },
                //Tenth row
                { 0.0, 0.0, 0.0, (-1) * index410, 0.0, 0.0, 0.0, 0.0, 0.0, index1010, 0.0, 0.0 },
                //Eleventh row
                { 0.0, 0.0, (-1) * index311, 0.0, index511, 0.0, 0.0, 0.0, index911, 0.0, index1111, 0.0 },
                //Twelfth row
                { 0.0, index212, 0.0, 0.0, 0.0, index612, 0.0, (-1) * index812, 0.0, 0.0, 0.0, index1212 }
            });

            return(localMatrix);
        }