**cut_surface#

Description#

This command performs a robust surface intersection operation. It requires a 3D volume mesh that better be refined (using Distene remeshing tools) closely to a given meshed surface.

Resulting output is made of a conform surface mesh (elset Nsurface) decomposed in various elsets: parts of original elsets boundaries (Nskin) and their newly cut parts (Nskinc), created cut surface (Nlip). Some output nset are also produced: Nlip containing created cut surface nodes, Nskin skin nodes, Nfront front nodes (for surface containing a front liset i.e. for 3D crack insertion), Nseg_pb containing original volume mesh edges nodes for edges cut an even times by the cut surface (smaller original volume elements are required in this area, as cut surface curve radius must be too small there).

This fast and robust algorithm is based on the given volume elements intersection, thus a remeshing process is required before FE computations (for better surface meshing, and volume filling), on the output Nsurface.

Syntax#

**cut_surface \(~\,\) [ *elset elset-name-list ] \(~\,\) [ *elset_to_cut elset ] \(~\,\) [ *nset_to_cut nset ] \(~\,\) [ *nset_not_to_cut nset ] \(~\,\) [ *surface elset-name ] \(~\,\) [ *tolerance tol ] \(~\,\) [ *front liset-name-list ] \(~\,\) [ *front_ini nset ] \(~\,\) [ *filter tol ] \(~\,\) [ *allow_quad ] \(~\,\) [ *inside ]

*elset

list of elsets that should be cut by surface. If more than one is given, boundaries between the elsets will be kept during the process (to be able to keep various elsets in the output).

*surface

is the given surface elset mesh to intersect with.

*elset_to_cut

only this elset may be cut (default is to cut ALL_ELEMENT).

*nset_to_cut

only edges contained in this nset may be cut.

*nset_not_to_cut

edges contained in this nset are not allowed to be cut.

*tolerance

if an edge intersection node is closer from an edge node than this distance value assume the edge node is on the cut surface. In most cases (in fact, in all currently tested cases), the zero default value of this parameter has proved to be robust.

*front

list of lisets representing the extremity of the cut surface that must be accurately inserted (i.e. for 3D crack insertion).

*front_ini

initial crack front, for newly cracked surface insertion (this nset represents the previous crack front), the newly surface will contain this previous front.

*filter

tolerance distance used to fuse pairs of same created surface elements (i.e. front 3D crack advance, to keep only one side of previously built lip). Default value is zero (no surface will be fused), if required a usual value is 1.e-5 times the mesh characteristic length.

*allow_quad

quad elements can be created during the algorithm. Default is not allowed as non-planar elements can be created an make a surface remeshing process fail.

*inside

crack surface advance may not pass through the boundary of the mesh (e.g. when 2 cracks are coalescing).

Example#

This example provides the intersection between a cube and an ellipse followed by remeshing operation of the intersection area.

../../_images/cut_with_ellipse.png
****mesher
***mesh cut_with_ellipse.geof
 **open cube.geof
 **union
  *add ellipse.geof
  *tolerance 0.
 **cut_surface
  *elset elset
  *surface crack
  *front   crack_front
  *tolerance 0.
  *filter 1.000000e-06
 **complement_elset
  *elset Nlip
  *complement to_remove
 **delete_elset
  to_remove
 **mesh_gems
  *yams_only
  *min_size 0.1
  *max_size 0.2
****return