/// <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); } }