SABER
|
Subroutines/functions list. More...
Data Types | |
interface | addnod |
interface | area |
interface | bdyadd |
interface | bnodes |
interface | covsph |
interface | det |
interface | insert |
interface | intadd |
interface | jrand |
interface | left |
interface | lstptr |
interface | swap |
interface | swptst |
interface | trfind |
interface | trmesh |
Functions/Subroutines | |
subroutine | stripack_addnod (mpl, nst, k, x, y, z, list, lptr, lend, lnew) |
Add a node to a triangulation. More... | |
subroutine | stripack_area (v1, v2, v3, area) |
Compute the area of a spherical triangle. More... | |
subroutine | stripack_bdyadd (kk, i1, i2, list, lptr, lend, lnew) |
Add a boundary node to a triangulation. More... | |
subroutine | stripack_bnodes (n, list, lptr, lend, nodes, nb) |
Return the boundary nodes of a triangulation. More... | |
subroutine | stripack_covsph (kk, n0, list, lptr, lend, lnew) |
Connect an exterior node to boundary nodes, covering the sphere. More... | |
subroutine | stripack_det (x1, y1, z1, x2, y2, z2, x0, y0, z0, output) |
Compute 3D determinant. More... | |
subroutine | stripack_insert (k, lp, list, lptr, lnew) |
Insert K as a neighbor of N1. More... | |
subroutine | stripack_intadd (kk, i1, i2, i3, list, lptr, lend, lnew) |
Add an interior node to a triangulation. More... | |
subroutine | stripack_jrand (n, ix, iy, iz, output) |
Return a random integer between 1 and N. More... | |
subroutine | stripack_left (x1, y1, z1, x2, y2, z2, x0, y0, z0, output) |
Determine whether a node is to the left of a plane through the origin. More... | |
subroutine | stripack_lstptr (lpl, nb, list, lptr, output) |
Return the index of NB in the adjacency list. More... | |
subroutine | stripack_swap (in1, in2, io1, io2, list, lptr, lend, lp21) |
Replace the diagonal arc of a quadrilateral with the other diagonal. More... | |
subroutine | stripack_swptst (n1, n2, n3, n4, x, y, z, output) |
Decide whether to replace a diagonal arc by the other. More... | |
subroutine | stripack_trfind (nst, p, n, x, y, z, list, lptr, lend, b1, b2, b3, i1, i2, i3) |
Locate a point relative to a triangulation. More... | |
subroutine | stripack_trmesh (mpl, n, x, y, z, list, lptr, lend, lnew, near, next, dist) |
Create a Delaunay triangulation on the unit sphere. More... | |
Subroutines/functions list.
Instrumentation functions STRIPACK routines
|
private |
Add a node to a triangulation.
[in,out] | mpl | MPI data |
[in] | nst | Index of a node at which TRFIND, begins its search.Search time depends on the proximity of this node to K. If NST<1, the search is begun at node K-1. |
[in] | k | Nodal index (index for X, Y, Z, and LEND) of the new node to be added. 4<=K. |
[in] | x | X-coordinates of the nodes |
[in] | y | Y-coordinates of the nodes |
[in] | z | Z-coordinates of the nodes |
[in,out] | list | On input, the data structure associated with the triangulation of nodes 1 to K-1. On output, the data has been updated to include node K. The array lengths are assumed to be large enough to add node K. Refer to TRMESH. |
[in,out] | lptr | cf. list |
[in,out] | lend | cf. list |
[in,out] | lnew | cf. list |
Definition at line 99 of file tools_stripack.F90.
|
private |
Compute the area of a spherical triangle.
[in] | v1 | First point cartesian coordinates |
[in] | v2 | Second point cartesian coordinates |
[in] | v3 | Third point cartesian coordinates |
[out] | area | Area on the unit sphere |
Definition at line 207 of file tools_stripack.F90.
|
private |
Add a boundary node to a triangulation.
[in] | kk | Index of a node to be connected to the sequence of all visible boundary nodes. 1<=KK and KK must not be equal to I1 or I2. |
[in] | i1 | First (rightmost as viewed from KK) boundary node in the triangulation that is visible from node KK (the line segment KK-I1 intersects no arcs. |
[in] | i2 | Last (leftmost) boundary node that is visible from node KK. I1 and I2 may be determined by TRFIND. |
[in,out] | list | Triangulation data structure created by TRMESH. Nodes I1 and I2 must be included in the triangulation. On output, the data structure is updated with the addition of node KK. Node KK is connected to I1, I2, and all boundary nodes in between. |
[in,out] | lptr | cf. list |
[in,out] | lend | cf. list |
[in,out] | lnew | cf. list |
Definition at line 288 of file tools_stripack.F90.
|
private |
Return the boundary nodes of a triangulation.
[in] | n | Number of nodes in the triangulation. 3 <= N. |
[in] | list | The data structure defining the triangulation, created by TRMESH. |
[in] | lptr | cf. list |
[in] | lend | cf. list |
[out] | nodes | Ordered sequence of NB boundary node indexes in the range 1 to N. |
[out] | nb | Number of boundary nodes. |
Definition at line 364 of file tools_stripack.F90.
|
private |
Connect an exterior node to boundary nodes, covering the sphere.
[in] | kk | Index of the node to be connected to the set of all boundary nodes. 4<=KK. |
[in] | n0 | Index of a boundary node (in the range 1 to KK-1). N0 may be determined by TRFIND. |
[in,out] | list | Triangulation data structure created by TRMESH. Node N0 must be included in the triangulation. On output, updated with the addition of node KK as the last entry. The updated triangulation contains no boundary nodes. |
[in,out] | lptr | cf. list |
[in,out] | lend | cf. list |
[in,out] | lnew | cf. list |
Definition at line 439 of file tools_stripack.F90.
|
private |
Compute 3D determinant.
[in] | x1 | X-coordinate, term 1 |
[in] | y1 | Y-coordinate, term 1 |
[in] | z1 | Z-coordinate, term 1 |
[in] | x2 | X-coordinate, term 2 |
[in] | y2 | Y-coordinate, term 2 |
[in] | z2 | Z-coordinate, term 2 |
[in] | x0 | X-coordinate, term 0 |
[in] | y0 | Y-coordinate, term 0 |
[in] | z0 | Z-coordinate, term 0 |
[out] | output | Determinant |
Definition at line 496 of file tools_stripack.F90.
|
private |
Insert K as a neighbor of N1.
[in] | k | Index of the node to be inserted. |
[in] | lp | LIST pointer of N2 as a neighbor of N1. |
[in,out] | list | Triangulation data structure created by TRMESH. On output, updated with the addition of node K. |
[in,out] | lptr | cf. list |
[in,out] | lnew | cf. list |
Definition at line 541 of file tools_stripack.F90.
|
private |
Add an interior node to a triangulation.
[in] | kk | Index of the node to be inserted. 1<=KK and KK must not be equal to I1, I2, or I3. |
[in] | i1 | First index of the counterclockwise-ordered sequence of vertices of a triangle which contains node KK. |
[in] | i2 | Second index. |
[in] | i3 | Third index. |
[in,out] | list | Triangulation data structure created by TRMESH. Triangle (I1,I2,I3) must be included in the triangulation. On output, updated with the addition of node KK. KK will be connected to nodes I1, I2, and I3. |
[in,out] | lptr | cf. list |
[in,out] | lend | cf. list |
[in,out] | lnew | cf. list |
Definition at line 576 of file tools_stripack.F90.
|
private |
Return a random integer between 1 and N.
[in] | n | Maximum value to be returned. |
[in,out] | ix | First seed initialized to values in the range 1 to 30,000 before the first call to JRAND, and not altered between subsequent calls (unless a sequence of random numbers is to be repeated by reinitializing the seeds). |
[in,out] | iy | Second seed. |
[in,out] | iz | Third seed. |
[out] | output | A random integer in the range 1 to N. |
Definition at line 632 of file tools_stripack.F90.
|
private |
Determine whether a node is to the left of a plane through the origin.
[in] | x1 | X-coordinate, term 1 |
[in] | y1 | Y-coordinate, term 1 |
[in] | z1 | Z-coordinate, term 1 |
[in] | x2 | X-coordinate, term 2 |
[in] | y2 | Y-coordinate, term 2 |
[in] | z2 | Z-coordinate, term 2 |
[in] | x0 | X-coordinate, term 0 |
[in] | y0 | Y-coordinate, term 0 |
[in] | z0 | Z-coordinate, term 0 |
[out] | output | TRUE if and only if N0 is in the closed left hemisphere. |
Definition at line 677 of file tools_stripack.F90.
|
private |
Return the index of NB in the adjacency list.
[in] | lpl | Equal to LEND(N0). |
[in] | nb | Index of the node whose pointer is to be returned. NB must be connected to N0. |
[in] | list | Triangulation data structure created by TRMESH. Triangle (I1,I2,I3) must be included in the triangulation. On output, updated with the addition of node KK. KK will be connected to nodes I1, I2, and I3. |
[in] | lptr | cf. list |
[out] | output | Pointer such that LIST(output) = NB or LIST(output) = -NB, unless NB is not a neighbor of N0, in which case output = LPL. |
Definition at line 715 of file tools_stripack.F90.
|
private |
Replace the diagonal arc of a quadrilateral with the other diagonal.
[in] | in1 | First nodal index of the vertices of the quadrilateral. IO1-IO2 is replaced by IN1-IN2. (IO1,IO2,IN1) and (IO2,IO1,IN2) must be triangles on input. |
[in] | in2 | Second nodal index. |
[in] | io1 | Third nodal index. |
[in] | io2 | Fourth nodal index. |
[in,out] | list | Triangulation data structure created by TRMESH. On output, updated with the swap; triangles (IO1,IO2,IN1) an (IO2,IO1,IN2) are replaced by (IN1,IN2,IO2) and (IN2,IN1,IO1) unless LP21 = 0. |
[in,out] | lptr | cf. list |
[in,out] | lend | cf. list |
[out] | lp21 | Index of IN1 as a neighbor of IN2 after the swap is performed unless IN1 and IN2 are adjacent on input, in which case LP21 = 0. |
Definition at line 755 of file tools_stripack.F90.
|
private |
Decide whether to replace a diagonal arc by the other.
[in] | n1 | First index of the four nodes defining the quadrilateral with N1 adjacent to N2, and (N1,N2,N3) in counterclockwise order. The arc connecting N1 to N2 should be replaced by an arc connecting N3 to N4 if SWPTST = TRUE. Refer to subroutine SWAP. |
[in] | n2 | Second index. |
[in] | n3 | Third index. |
[in] | n4 | Fourth index. |
[in] | x | X-coordinate of the nodes. |
[in] | y | Y-coordinate of the nodes. |
[in] | z | Z-coordinate of the nodes. |
[out] | output | TRUE if and only if the arc connecting N1 and N2 should be swapped for an arc connecting N3 and N4. |
Definition at line 826 of file tools_stripack.F90.
|
private |
Locate a point relative to a triangulation.
[in] | nst | Index of a node at which TRFIND begins its search. Search time depends on the proximity of this node to P. |
p | X, Y, and Z coordinates (in that order) of the point P to be located. | |
[in] | n | Number of nodes in the triangulation 3<=N. |
[in] | x | X-coordinate of the triangulation nodes (unit vector). |
[in] | y | Y-coordinate of the triangulation nodes (unit vector). |
[in] | z | Z-coordinate of the triangulation nodes (unit vector). |
[in] | list | Triangulation data structure created by TRMESH. |
[in] | lptr | cf. list |
[in] | lend | cf. list |
[out] | b1 | First unnormalized barycentric coordinate of the central projection of P onto the underlying planar triangle if P is in the convex hull of the nodes. These parameters are not altered if I1 = 0. |
[out] | b2 | Second unnormalized barycentric coordinate. |
[out] | b3 | Third unnormalized barycentric coordinate. |
[out] | i1 | First counterclockwise-ordered vertex index of a triangle containing P if P is contained in a triangle. If P is not in the convex hull of the nodes, I1 and I2 are the rightmost and leftmost (boundary) nodes that are visible from P, and I3 = 0. (If all boundary nodes are visible from P, then I1 and I2 coincide.) I1 = I2 = I3 = 0 if P and all of the nodes are coplanar (lie on a common great circle). |
[out] | i2 | Second counterclockwise-ordered vertex index. |
[out] | i3 | Third counterclockwise-ordered vertex index. |
Definition at line 875 of file tools_stripack.F90.
|
private |
Create a Delaunay triangulation on the unit sphere.
[in,out] | mpl | MPI data |
[in] | n | Number of nodes in the triangulation. 3<=N. |
[in] | x | X-coordinate of distinct nodes. (X(K),Y(K), Z(K)) is referred to as node K, and K is referred to as a nodal index. It is required that X(K)**2+Y(K)**2+Z(K)**2 = 1 for all K. The first three nodes must not be colinear (lie on a common great circle). |
[in] | y | Y-coordinate of distinct nodes. |
[in] | z | Z-coordinate of distinct nodes. |
[out] | list | Nodal indexes which, along with LPTR, LEND, and LNEW, define the triangulation as a set of N adjacency lists; counterclockwise-ordered sequences of neighboring nodes such that the first and last neighbors of a boundary node are boundary nodes (the first neighbor of an interior node is arbitrary). In order to distinguish between interior and boundary nodes, the last neighbor of each boundary node is represented by the negative of its index. |
[out] | lptr | Set of pointers (LIST indexes) in one-to-one correspondence with the elements of LIST. LIST(LPTR(I)) indexes the node which follows LIST(I) in cyclical counterclockwise order (the first neighbor follows the last neighbor). |
[out] | lend | Pointers to adjacency lists. LEND(K) points to the last neighbor of node K. LIST(LEND(K))<0 if and only if K is a boundary node. |
[out] | lnew | Pointer to the first empty location in LIST and LPTR (list length plus one). |
[in,out] | near | Workspace used to efficiently determine the nearest triangulation node to each unprocessed node for use by ADDNOD. |
[in,out] | next | Workspace used to efficiently determine the nearest triangulation node to each unprocessed node for use by ADDNOD. |
[in,out] | dist | Workspace used to efficiently determine the nearest triangulation node to each unprocessed node for use by ADDNOD. |
Definition at line 1157 of file tools_stripack.F90.