fem.gmsh.assign_ownership
fem.gmsh.assign_ownership(fields, topology, *, bar)Tag every node with the patches that own it, by residual alone.
Per Gmsh surface entity, |f_p| is evaluated on its nodes for every patch; the patches whose worst node clears bar are the candidates, and the one with the smallest typical residual owns the surface. The maximum, not the median, is what separates a mesh from a spoiled one: an entity straddling a blend’s edge has most of its nodes hugging the neighbouring plane and a few peeling away, and judged by the median it would pass as that plane — the projection would then drag the peeling nodes onto the plane’s unbounded extension. Curve and point nodes inherit their bounding surfaces’ patches and keep those that vanish at the node itself, up to the entity’s codimension.
Parameters
| Name | Type | Description | Default |
|---|---|---|---|
| fields | FieldTable | The patch table (:func:patch_table). |
required |
| topology | dict[str, Any] | A :func:gmsh_topology result (positions possibly snapped). |
required |
| bar | float | \|f_patch\| above which a surface is not that patch’s. |
required |
Returns
| Name | Type | Description |
|---|---|---|
| dict[str, Any] | owner_patches (n, 3), owner_arity (n,), blend_mask (n,) and the counts under stats. |