Description Usage Arguments Value See Also Examples

This function refines a Constrained Delaunay triangulation into a Conforming Delaunay triangulation. This is a wrapper of the Triangle library (http://www.cs.cmu.edu/~quake/triangle.html). It can be used to
refine a mesh previously created with create.mesh.2D. The algorithm can add Steiner points (points through which the `segments`

are splitted)
in order to meet the imposed refinement conditions.

1 | ```
refine.mesh.2D(mesh, minimum_angle, maximum_area, delaunay, verbosity)
``` |

`mesh` |
A mesh.2D object representing the triangular mesh, created by create.mesh.2D. |

`minimum_angle` |
A scalar specifying a minimun value for the triangles angles. |

`maximum_area` |
A scalar specifying a maximum value for the triangles areas. |

`delaunay` |
A boolean parameter indicating whether or not the output mesh should satisfy the Delaunay condition. |

`verbosity` |
This can be '0', '1' or '2'. It indicates the level of verbosity in the triangulation process. |

A mesh.2D object representing the refined triangular mesh, with the following output:

`nodes`

A #nodes-by-2 matrix containing the x and y coordinates of the mesh nodes.`nodesmarkers`

A vector of length #nodes, with entries either '1' or '0'. An entry '1' indicates that the corresponding node is a boundary node; an entry '0' indicates that the corresponding node is not a boundary node.`nodesattributes`

nodesattributes A matrix with #nodes rows containing nodes' attributes. These are passed unchanged to the output. If a node is added during the triangulation process or mesh refinement, its attributes are computed by linear interpolation using the attributes of neighboring nodes. This functionality is for instance used to compute the value of a Dirichlet boundary condition at boundary nodes added during the triangulation process.`triangles`

A #triangles-by-3 (when`order`

= 1) or #triangles-by-6 (when`order`

= 2) matrix.`edges`

A #edges-by-2 matrix. Each row contains the row's indices of the nodes where the edge starts from and ends to.`edgesmarkers`

A vector of lenght #edges with entries either '1' or '0'. An entry '1' indicates that the corresponding element in`edge`

is a boundary edge; an entry '0' indicates that the corresponding edge is not a boundary edge.`neighbors`

A #triangles-by-3 matrix. Each row contains the indices of the three neighbouring triangles. An entry '-1' indicates that one edge of the triangle is a boundary edge.`holes`

A #holes-by-2 matrix containing the x and y coordinates of a point internal to each hole of the mesh. These points are used to carve holes in the triangulation, when the domain has holes.`order`

Either '1' or '2'. It specifies wether each mesh triangle should be represented by 3 nodes (the triangle' vertices) or by 6 nodes (the triangle's vertices and midpoints). These are respectively used for linear (order = 1) and quadratic (order = 2) Finite Elements.

`create.mesh.2D`

, `create.FEM.basis`

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ```
library(fdaPDE)
## Upload the quasicircle2D data
data(quasicircle2D)
boundary_nodes = quasicircle2D$boundary_nodes
boundary_segments = quasicircle2D$boundary_segments
locations = quasicircle2D$locations
data = quasicircle2D$data
## Create mesh from boundary:
mesh = create.mesh.2D(nodes = boundary_nodes, segments = boundary_segments)
plot(mesh)
## Refine the mesh with the maximum area criterion:
finemesh = refine.mesh.2D(mesh = mesh, maximum_area = 0.1)
plot(finemesh)
## Refine the mesh with the minimum angle criterion:
finemesh2 = refine.mesh.2D(mesh = mesh, minimum_angle = 30)
plot(finemesh2)
``` |

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.