Ejemplo n.º 1
0
        public void GetElementsByType(ElementTypes elementTypes, out long[] elementTags, out long[] nodeTags, int tag = -1, ulong task = 0, ulong numTasks = 1)
        {
            IntPtr elementTagsPtr = IntPtr.Zero;
            IntPtr nodeTagsPtr    = IntPtr.Zero;

            ulong elementTags_n = 0;
            ulong nodeTags_n    = 0;

            GMshNativeMethods.gmshModelMeshGetElementsByType((int)elementTypes, ref elementTagsPtr, ref elementTags_n, ref nodeTagsPtr, ref nodeTags_n, tag, task, numTasks, ref ierr);
            if (ierr != 0)
            {
                throw new GMshException(ierr);
            }

            elementTags = new long[elementTags_n];
            nodeTags    = new long[nodeTags_n];

            if (elementTags_n != 0)
            {
                Marshal.Copy(elementTagsPtr, elementTags, 0, elementTags_n.Toint());
            }
            if (nodeTags_n != 0)
            {
                Marshal.Copy(nodeTagsPtr, nodeTags, 0, nodeTags_n.Toint());
            }

            elementTagsPtr.GmshFree();
            nodeTagsPtr.GmshFree();
        }