/*!

\page double_nodes_page Duplicate Nodes or/and Elements

\n This operation allows duplicating mesh nodes or/and elements, which can be useful to emulate a crack in the model.

Duplication consists in creation of mesh elements "equal" to existing ones.

<em>To duplicate nodes or/and elements:</em>
<ol>
<li>From the \b Modification menu choose \b Transformation -> <b> Duplicate
 Nodes or/and Elements </b> item or click <em>"Duplicate Nodes or/and
 Elements"</em> button in the toolbar.
<br>
\image html duplicate_nodes.png "Duplicate Nodes or/and Elements button"
</li>
<li>Check in the dialog box one of four radio buttons corresponding to
  the type of duplication operation you would like to perform.</li>
<li>Fill the other fields available in the dialog box (depending on
  the chosen operation mode).</li>
<li>Click the \b Apply or <b>Apply and Close</b> button to perform the
  operation of duplication.</li> 
</ol>

\n "Duplicate Nodes or/and Elements" dialog has four working modes:
<ul>
<li>\ref mode_without_elem_anchor "Duplicate nodes only"</li>
<li>\ref mode_with_elem_anchor "Duplicate nodes and border elements"</li>
<li>\ref mode_elem_only_anchor "Duplicate elements only"</li>
<li>\ref mode_group_boundary_anchor "Duplicate nodes on group boundaries"</li>
</ul>

<br>
\anchor mode_without_elem_anchor

<h2>Duplicate nodes only</h2>

\image html duplicate01.png

Parameters to be defined in this mode:
<ul>
<li><b>Group of nodes to duplicate</b> (<em>mandatory</em>): these
  nodes will be duplicated.</li>
<li><b>Group of elements to replace nodes with new ones</b>
  (<em>optional</em>): the new nodes will replace the duplicated nodes within these elements.</li> 
<li><b>Construct group with newly created nodes</b> option
  (<em>checked by default</em>): if checked - the group with newly
  created nodes will be built.</li> 
</ul>
A schema below illustrates how the crack is emulated using the node duplication.
\image html crack_emulation_double_nodes.png "Crack emulation"
This schema shows a virtual crack in a 2D mesh created using this duplication
mode:
- Black balls are <b>duplicated nodes</b>.
- Red balls are <b>new nodes</b>.
- <b>Elements to replace nodes with new ones</b> are marked with green.

Note that in the reality <b>duplicated nodes</b> coincide with <b>new nodes</b>.

<br>
\anchor mode_with_elem_anchor


<h2>Duplicate nodes and border elements</h2>

\image html duplicate02.png

Parameters to be defined in this mode:
<ul>
<li><b>Group of elements to duplicate</b> (<em>mandatory</em>): these
  elements will be duplicated.</li> 
<li><b>Group of nodes not to duplicate</b> (<em>optional</em>):
  group of nodes at crack bottom which will not be duplicated.</li>
<li><b>Group of elements to replace nodes with new ones</b>
  (<em>mandatory</em>): the new nodes will replace the nodes to
  duplicate within these elements.</li> 
<li><b>Construct group with newly created elements</b> option
 (<em>checked by default</em>): if checked - the group of newly created
 elements will be built.</li>
<li><b>Construct group with newly created nodes</b> option
  (<em>checked by default</em>): if checked - the group of newly
  created nodes will be built.</li>
</ul>

A schema below explains the crack emulation using the node duplication
with border elements.
\image html crack_emulation_double_nodes_with_elems.png "Crack emulation"
This schema shows a virtual crack in a 2D mesh created using this duplication
mode. In this schema:
- Black segments are <b>duplicated elements</b> (edges in 2D case).
- Black balls (except for the lowest one) are duplicated nodes of <b>duplicated elements</b>.
- The lowest black ball is the <b>non-duplicated node</b>.
- Red balls are <b>newly created nodes</b>.
- Red segments are <b>created elements</b> (edges).
- <b>Elements to replace nodes with new ones</b> are marked with green.

Note that in the reality <b>nodes to duplicate</b> coincide with <b>new nodes</b>.
<br>
In a 3D case, where <b>elements to duplicate</b> are faces, the edges
located at the "crack" (if any) are cloned automatically.

<br>
\anchor mode_elem_only_anchor
<h2>Duplicate elements only</h2>

This mode duplicates the given elements, i.e. creates new elements with the same nodes as the given elements.
<br>

\image html duplicate03.png

Parameters to be defined in this mode:
<ul>
  <li><b>Group of elements to duplicate</b> (<em>mandatory</em>): these
    elements will be duplicated.</li>
  <li><b>Construct group with newly created elements</b> option
    (<em>checked by default</em>): if checked - the group of newly created
    elements will be built. The name of the created group starts from
    "DoubleElements".</li>
</ul>

<br>
\anchor mode_group_boundary_anchor
<h2>Duplicate nodes on group boundaries</h2>

This mode duplicates nodes located on boundaries between given groups of volumes.

<br>

\image html duplicate04.png

Parameters to be defined in this mode:
<ul>
  <li><b>Groups (faces or volumes) </b> (<em>mandatory</em>): list of mesh
    groups. These groups should be disjoint, i.e. should not have shared
    elements.</li>
  <li> If <b>Create joint elements</b> option is activated, flat
    elements are created on the duplicated nodes: a triangular facet
    shared by two volumes of two groups generates a flat prism, a
    quadrangular facet generates a flat hexahedron. 
    Correspondingly 2D joint elements (null area faces) are generated
    where edges are shared by two faces.
    <br>
    The created flat volumes (or faces) are stored in groups. These groups are named
    according to the position of the group in the list of groups: group
    "j_n_p" is a group of flat elements that are built between the group \#n
    and the group \#p in the group list. All flat elements are gathered
    into the group named "joints3D" (correspondingly "joints2D"). The flat elements of multiple
    junctions between the simple junction are stored in a group named
    "jointsMultiples".</li>
  <li> If <b>On all boundaries</b> option is activated, the volumes (or faces),
    which are not included into <b>Groups</b> input, are considered
    as another group and thus the nodes on the boundary
    between <b>Groups</b> and the remaining mesh are also
    duplicated.</li>
</ul>

<br><b>See Also</b> a sample TUI Script of a
 \ref tui_duplicate_nodes "Duplicate nodes or/and elements" operation.

*/