示例#1
0
            /// <summary>
            /// Get the boundary of the model entities `dimTags'. Return in `outDimTags' the
            /// boundary of the individual entities (if `combined' is false) or the boundary
            /// of the combined geometrical shape formed by all input entities (if
            /// `combined' is true). Return tags multiplied by the sign of the boundary
            /// entity if `oriented' is true. Apply the boundary operator recursively down
            /// to dimension 0 (i.e. to points) if `recursive' is true.
            /// </summary>
            public static ValueTuple <int, int>[] GetBoundary(ValueTuple <int, int>[] dimTags, bool combined = true, bool oriented = true, bool recursive = false)
            {
                unsafe
                {
                    int *outDimTagsptr;
                    long outdimTags_n = 0;
                    var  dimarray     = dimTags.ToIntArray();
                    Gmsh_Warp.GmshModelGetBoundary(dimarray, dimarray.LongLength, &outDimTagsptr, ref outdimTags_n, Convert.ToInt32(combined), Convert.ToInt32(oriented), Convert.ToInt32(recursive), ref Gmsh._staticreff);

                    var array      = UnsafeHelp.ToIntArray(outDimTagsptr, outdimTags_n);
                    var outDimTags = array.ToIntPair();

                    Gmsh.CheckException(MethodBase.GetCurrentMethod().MethodHandle);
                    return(outDimTags);
                }
            }